From 95ca04c57a4c704bee5294ed9442ea76ff7121a1 Mon Sep 17 00:00:00 2001 From: cutterbl Date: Thu, 12 Sep 2024 18:09:56 +0000 Subject: [PATCH] docs: update documentation site --- examples/iframe.html | 2 +- examples/main.5958f87f.iframe.bundle.js | 2 ++ examples/main.b034e480.iframe.bundle.js | 2 -- examples/project.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 examples/main.5958f87f.iframe.bundle.js delete mode 100644 examples/main.b034e480.iframe.bundle.js diff --git a/examples/iframe.html b/examples/iframe.html index 68dc8f65f..439666b59 100644 --- a/examples/iframe.html +++ b/examples/iframe.html @@ -361,4 +361,4 @@ - window['STORIES'] = [{"titlePrefix":"","directory":"./stories","files":"**/*.stories.mdx","importPathMatcher":"^\\.[\\\\/](?:stories(?:\\/(?!\\.)(?:(?:(?!(?:^|\\/)\\.).)*?)\\/|\\/|$)(?!\\.)(?=.)[^/]*?\\.stories\\.mdx)$"},{"titlePrefix":"","directory":"./stories","files":"**/*.stories.@(js|jsx|ts|tsx)","importPathMatcher":"^\\.[\\\\/](?:stories(?:\\/(?!\\.)(?:(?:(?!(?:^|\\/)\\.).)*?)\\/|\\/|$)(?!\\.)(?=.)[^/]*?\\.stories\\.(js|jsx|ts|tsx))$"}]; \ No newline at end of file + window['STORIES'] = [{"titlePrefix":"","directory":"./stories","files":"**/*.stories.mdx","importPathMatcher":"^\\.[\\\\/](?:stories(?:\\/(?!\\.)(?:(?:(?!(?:^|\\/)\\.).)*?)\\/|\\/|$)(?!\\.)(?=.)[^/]*?\\.stories\\.mdx)$"},{"titlePrefix":"","directory":"./stories","files":"**/*.stories.@(js|jsx|ts|tsx)","importPathMatcher":"^\\.[\\\\/](?:stories(?:\\/(?!\\.)(?:(?:(?!(?:^|\\/)\\.).)*?)\\/|\\/|$)(?!\\.)(?=.)[^/]*?\\.stories\\.(js|jsx|ts|tsx))$"}]; \ No newline at end of file diff --git a/examples/main.5958f87f.iframe.bundle.js b/examples/main.5958f87f.iframe.bundle.js new file mode 100644 index 000000000..db7a56150 --- /dev/null +++ b/examples/main.5958f87f.iframe.bundle.js @@ -0,0 +1,2 @@ +(self.webpackChunkreact_big_calendar=self.webpackChunkreact_big_calendar||[]).push([[792],{"./.storybook/preview.js-generated-config-entry.js":function(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__){"use strict";var preview_namespaceObject={};__webpack_require__.r(preview_namespaceObject),__webpack_require__.d(preview_namespaceObject,{__namedExportsOrder:function(){return __namedExportsOrder},parameters:function(){return parameters}});__webpack_require__("./node_modules/core-js/modules/es.object.keys.js"),__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/es.object.get-own-property-descriptor.js"),__webpack_require__("./node_modules/core-js/modules/web.dom-collections.for-each.js"),__webpack_require__("./node_modules/core-js/modules/es.object.get-own-property-descriptors.js");var ClientApi=__webpack_require__("./node_modules/@storybook/client-api/dist/esm/ClientApi.js"),parameters={actions:{argTypesRegex:"^on[A-Z].*"},controls:{matchers:{color:/(background|color)$/i,date:/Date$/}},storySort:{order:["About Big Calendar","About Our Examples","props","Examples","Guides","Addons",["Introduction","props"]]},viewMode:"docs"},__namedExportsOrder=["parameters"];function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter((function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable}))),keys.push.apply(keys,symbols)}return keys}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.keys(preview_namespaceObject).forEach((function(key){var value=preview_namespaceObject[key];switch(key){case"args":return(0,ClientApi.FQ)(value);case"argTypes":return(0,ClientApi.hA)(value);case"decorators":return value.forEach((function(decorator){return(0,ClientApi.dK)(decorator,!1)}));case"loaders":return value.forEach((function(loader){return(0,ClientApi.$K)(loader,!1)}));case"parameters":return(0,ClientApi.Gu)(function _objectSpread(target){for(var i=1;i "}},ComplexDayViewLayout.parameters),CustomTimeGutterHeader.parameters=Object.assign({storySource:{source:"(args) => "}},CustomTimeGutterHeader.parameters),CustomTimeGutterWrapper.parameters=Object.assign({storySource:{source:"(args) => "}},CustomTimeGutterWrapper.parameters),CustomDateCellWrapper.parameters=Object.assign({storySource:{source:"(args) => "}},CustomDateCellWrapper.parameters),CustomTimeSlotWrapper.parameters=Object.assign({storySource:{source:"(args) => "}},CustomTimeSlotWrapper.parameters),CustomEventWrapper.parameters=Object.assign({storySource:{source:"(args) => "}},CustomEventWrapper.parameters),CustomNoAgendaEventsLabel.parameters=Object.assign({storySource:{source:"(args) => "}},CustomNoAgendaEventsLabel.parameters),CustomDayColumnWrapper.parameters=Object.assign({storySource:{source:"(args) => "}},CustomDayColumnWrapper.parameters);var __namedExportsOrder=["ComplexDayViewLayout","CustomTimeGutterHeader","CustomTimeGutterWrapper","CustomDateCellWrapper","CustomTimeSlotWrapper","CustomEventWrapper","CustomNoAgendaEventsLabel","CustomDayColumnWrapper"]},"./stories/DragAndDrop.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{CustomStepsAndTimeslots:function(){return CustomStepsAndTimeslots},DraggableAndResizable:function(){return DraggableAndResizable},DraggableMultipleResources:function(){return DraggableMultipleResources},WithCustomDateCellWrapper:function(){return WithCustomDateCellWrapper},WithCustomEventWrapper:function(){return WithCustomEventWrapper},WithCustomTimeslotWrapper:function(){return WithCustomTimeslotWrapper},WithMultiDayTimes:function(){return WithMultiDayTimes},__namedExportsOrder:function(){return __namedExportsOrder}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/@storybook/addon-actions/dist/esm/index.js"),_helpers__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./stories/helpers/index.js"),_resources_customComponents__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./stories/resources/customComponents.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/react/jsx-runtime.js");__webpack_exports__.default={title:"Additional Examples/Drag and Drop",component:_helpers__WEBPACK_IMPORTED_MODULE_3__.Vv,decorators:[function(Story){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div",{className:"height600",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(Story,{})})}]};var Template=function Template(args){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div",{className:"height600",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_helpers__WEBPACK_IMPORTED_MODULE_3__.zm,Object.assign({},args))})};Template.displayName="Template";var DraggableAndResizable=Template.bind({});DraggableAndResizable.storyName="draggable and resizable",DraggableAndResizable.args={defaultDate:new Date,defaultView:_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.WEEK,events:_helpers__WEBPACK_IMPORTED_MODULE_3__.AZ,resizable:!0,onEventDrop:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event dropped"),onEventResize:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event resized")};var CustomStepsAndTimeslots=Template.bind({});CustomStepsAndTimeslots.storyName="draggable and resizable with non-default steps and timeslots",CustomStepsAndTimeslots.args={defaultDate:new Date,defaultView:_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.WEEK,events:_helpers__WEBPACK_IMPORTED_MODULE_3__.AZ,resizable:!0,onEventDrop:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event dropped"),onEventResize:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event resized"),steps:15,timeslots:4};var WithMultiDayTimes=Template.bind({});WithMultiDayTimes.storyName="draggable and resizable with showMultiDayTimes",WithMultiDayTimes.args={defaultDate:new Date,defaultView:_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.WEEK,events:_helpers__WEBPACK_IMPORTED_MODULE_3__.AZ,resizable:!0,showMultiDayTimes:!0,onEventDrop:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event dropped"),onEventResize:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event resized")};var WithCustomDateCellWrapper=Template.bind({});WithCustomDateCellWrapper.storyName="draggable and resizable with custom dateCellWrapper",WithCustomDateCellWrapper.args={defaultDate:new Date,defaultView:_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.WEEK,events:_helpers__WEBPACK_IMPORTED_MODULE_3__.AZ,resizable:!0,showMultiDayTimes:!0,onEventDrop:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event dropped"),onEventResize:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event resized"),components:{dateCellWrapper:_resources_customComponents__WEBPACK_IMPORTED_MODULE_4__.A.dateCellWrapper}};var WithCustomTimeslotWrapper=Template.bind({});WithCustomTimeslotWrapper.storyName="draggable and resizable with custom timeSlotWrapper",WithCustomTimeslotWrapper.args={defaultDate:new Date,defaultView:_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.WEEK,events:_helpers__WEBPACK_IMPORTED_MODULE_3__.AZ,resizable:!0,showMultiDayTimes:!0,onEventDrop:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event dropped"),onEventResize:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event resized"),components:{timeSlotWrapper:_resources_customComponents__WEBPACK_IMPORTED_MODULE_4__.A.timeSlotWrapper}};var WithCustomEventWrapper=Template.bind({});WithCustomEventWrapper.storyName="draggable and resizable with custom eventWrapper",WithCustomEventWrapper.args={defaultDate:new Date,defaultView:_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.WEEK,events:_helpers__WEBPACK_IMPORTED_MODULE_3__.AZ,resizable:!0,showMultiDayTimes:!0,onEventDrop:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event dropped"),onEventResize:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event resized"),components:{eventWrapper:_resources_customComponents__WEBPACK_IMPORTED_MODULE_4__.A.eventWrapper}};var DraggableMultipleResources=Template.bind({});DraggableMultipleResources.storyName="draggable and resizable with multiple resource lanes",DraggableMultipleResources.args={defaultDate:new Date,defaultView:_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.DAY,views:[_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.DAY,_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.WEEK,_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.AGENDA],events:_helpers__WEBPACK_IMPORTED_MODULE_3__.GI,resources:_helpers__WEBPACK_IMPORTED_MODULE_3__.ES,resourceAccessor:"resourceId",resourceIdAccessor:"id",resourceTitleAccessor:"name",resizable:!0,onEventDrop:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event dropped"),onEventResize:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event resized")},DraggableAndResizable.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},DraggableAndResizable.parameters),CustomStepsAndTimeslots.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},CustomStepsAndTimeslots.parameters),WithMultiDayTimes.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},WithMultiDayTimes.parameters),WithCustomDateCellWrapper.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},WithCustomDateCellWrapper.parameters),WithCustomTimeslotWrapper.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},WithCustomTimeslotWrapper.parameters),WithCustomEventWrapper.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},WithCustomEventWrapper.parameters),DraggableMultipleResources.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},DraggableMultipleResources.parameters);var __namedExportsOrder=["DraggableAndResizable","CustomStepsAndTimeslots","WithMultiDayTimes","WithCustomDateCellWrapper","WithCustomTimeslotWrapper","WithCustomEventWrapper","DraggableMultipleResources"]},"./stories/Durations.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DaylightSavingsEnds:function(){return DaylightSavingsEnds},DaylightSavingsEndsAfter2Am:function(){return DaylightSavingsEndsAfter2Am},DaylightSavingsStarts:function(){return DaylightSavingsStarts},DaylightSavingsStartsAfter2Am:function(){return DaylightSavingsStartsAfter2Am},__namedExportsOrder:function(){return __namedExportsOrder}});var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),react_big_calendar__WEBPACK_IMPORTED_MODULE_2__=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js"),__webpack_require__("./src/index.js")),_src_addons_dragAndDrop__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./src/addons/dragAndDrop/index.js"),moment__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/moment/moment.js"),moment__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_4__),globalize__WEBPACK_IMPORTED_MODULE_6__=(__webpack_require__("./node_modules/moment-timezone/builds/moment-timezone-with-data-1970-2030.js"),__webpack_require__("./node_modules/globalize/lib/globalize.js")),globalize__WEBPACK_IMPORTED_MODULE_6___default=__webpack_require__.n(globalize__WEBPACK_IMPORTED_MODULE_6__),luxon__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("./node_modules/luxon/src/luxon.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__("./node_modules/react/jsx-runtime.js"),_excluded=["localizer"],localizers={globalize:(0,react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.fk)(globalize__WEBPACK_IMPORTED_MODULE_6___default()),moment:(0,react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.ye)(moment__WEBPACK_IMPORTED_MODULE_4___default()),luxon:(0,react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.AW)(luxon__WEBPACK_IMPORTED_MODULE_7__.c9,{firstDayOfWeek:7})},DraggableCalendar=(0,_src_addons_dragAndDrop__WEBPACK_IMPORTED_MODULE_3__.A)(react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.Vv);__webpack_exports__.default={title:"Additional Examples/Event Durations",component:react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.Vv,decorators:[function(Story){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)("div",{className:"height600",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(Story,{})})}]};var Template=function Template(_ref){var _ref$localizer=_ref.localizer,loc=void 0===_ref$localizer?"moment":_ref$localizer,args=(0,_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_9__.A)(_ref,_excluded),localizer=localizers[loc];return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(DraggableCalendar,Object.assign({localizer:localizer},args))};Template.displayName="Template";var DaylightSavingsStarts=Template.bind({});DaylightSavingsStarts.argTypes={localizer:{options:["globalize","moment","luxon"],control:{type:"select"}}},DaylightSavingsStarts.args={defaultView:react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.Pp.DAY,localizer:"moment",min:moment__WEBPACK_IMPORTED_MODULE_4___default()("12:00am","h:mma").toDate(),max:moment__WEBPACK_IMPORTED_MODULE_4___default()("11:59pm","h:mma").toDate(),events:[{title:"on DST",start:new Date(2022,2,13,1),end:new Date(2022,2,13,2,30),allDay:!1},{title:"crosses DST",start:new Date(2022,2,13,1),end:new Date(2022,2,13,6,30),allDay:!1},{title:"After DST",start:new Date(2022,2,13,7),end:new Date(2022,2,13,9,30),allDay:!1}],defaultDate:new Date(2022,2,13)};var DaylightSavingsStartsAfter2Am=Template.bind({});DaylightSavingsStartsAfter2Am.argTypes={localizer:{options:["globalize","moment","luxon"],control:{type:"select"}}},DaylightSavingsStartsAfter2Am.args={defaultView:react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.Pp.DAY,localizer:"moment",min:moment__WEBPACK_IMPORTED_MODULE_4___default()("3:00am","h:mma").toDate(),max:moment__WEBPACK_IMPORTED_MODULE_4___default()("11:59pm","h:mma").toDate(),events:[{title:"on DST",start:new Date(2022,2,13,1),end:new Date(2022,2,13,2,30),allDay:!1},{title:"crosses DST",start:new Date(2022,2,13,1),end:new Date(2022,2,13,6,30),allDay:!1},{title:"After DST",start:new Date(2022,2,13,7),end:new Date(2022,2,13,9,30),allDay:!1}],defaultDate:new Date(2022,2,13)};var DaylightSavingsEnds=Template.bind({});DaylightSavingsEnds.argTypes={localizer:{options:["globalize","moment","luxon"],control:{type:"select"}}},DaylightSavingsEnds.args={defaultView:react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.Pp.DAY,localizer:"moment",min:moment__WEBPACK_IMPORTED_MODULE_4___default()("12:00am","h:mma").toDate(),max:moment__WEBPACK_IMPORTED_MODULE_4___default()("11:59pm","h:mma").toDate(),events:[{title:"on DST",start:new Date(2022,10,6,1),end:new Date(2022,10,6,3,30),allDay:!1},{title:"crosses DST",start:new Date(2022,10,6,1),end:new Date(2022,10,6,6,30),allDay:!1},{title:"After DST",start:new Date(2022,10,6,7),end:new Date(2022,10,6,7,45),allDay:!1}],defaultDate:new Date(2022,10,6)};var DaylightSavingsEndsAfter2Am=Template.bind({});DaylightSavingsEndsAfter2Am.argTypes={localizer:{options:["globalize","moment","luxon"],control:{type:"select"}}},DaylightSavingsEndsAfter2Am.args={defaultView:react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.Pp.DAY,localizer:"moment",min:moment__WEBPACK_IMPORTED_MODULE_4___default()("3:00am","h:mma").toDate(),max:moment__WEBPACK_IMPORTED_MODULE_4___default()("11:59pm","h:mma").toDate(),events:[{title:"After DST",start:new Date(2022,10,6,7),end:new Date(2022,10,6,9,30),allDay:!1}],defaultDate:new Date(2022,10,6)},DaylightSavingsStarts.parameters=Object.assign({storySource:{source:"({ localizer: loc = 'moment', ...args }) => {\n const localizer = localizers[loc]\n return \n}"}},DaylightSavingsStarts.parameters),DaylightSavingsStartsAfter2Am.parameters=Object.assign({storySource:{source:"({ localizer: loc = 'moment', ...args }) => {\n const localizer = localizers[loc]\n return \n}"}},DaylightSavingsStartsAfter2Am.parameters),DaylightSavingsEnds.parameters=Object.assign({storySource:{source:"({ localizer: loc = 'moment', ...args }) => {\n const localizer = localizers[loc]\n return \n}"}},DaylightSavingsEnds.parameters),DaylightSavingsEndsAfter2Am.parameters=Object.assign({storySource:{source:"({ localizer: loc = 'moment', ...args }) => {\n const localizer = localizers[loc]\n return \n}"}},DaylightSavingsEndsAfter2Am.parameters);var __namedExportsOrder=["DaylightSavingsStarts","DaylightSavingsStartsAfter2Am","DaylightSavingsEnds","DaylightSavingsEndsAfter2Am"]},"./stories/Layout.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DaySpan:function(){return DaySpan},EndOfWeekAllDay:function(){return EndOfWeekAllDay},EventAtEndOfWeek:function(){return EventAtEndOfWeek},EventAtStartOfWeek:function(){return EventAtStartOfWeek},EventLayout:function(){return EventLayout},EventsOnAConstrainedDayColumn:function(){return EventsOnAConstrainedDayColumn},FirstOfWeekAllDay:function(){return FirstOfWeekAllDay},NoDuration:function(){return NoDuration},OverlappingBackgroundEventsNoOverlap:function(){return OverlappingBackgroundEventsNoOverlap},OverlappingBackgroundEventsOverlap:function(){return OverlappingBackgroundEventsOverlap},ZeroDurationOddities:function(){return ZeroDurationOddities},ZeroDurationOverlap:function(){return ZeroDurationOverlap},__namedExportsOrder:function(){return __namedExportsOrder}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js"),__webpack_require__("./node_modules/@storybook/addon-actions/dist/esm/index.js");var moment__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/moment/moment.js"),moment__WEBPACK_IMPORTED_MODULE_3___default=__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_3__),_helpers__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./stories/helpers/index.js"),_helpers_createEvents__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./stories/helpers/createEvents.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/react/jsx-runtime.js");__webpack_exports__.default={title:"Additional Examples/Layout",component:_helpers__WEBPACK_IMPORTED_MODULE_4__.Vv,decorators:[function(Story){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div",{className:"height600",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(Story,{})})}]};var Template=function Template(args){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_helpers__WEBPACK_IMPORTED_MODULE_4__.Vv,Object.assign({},args))};Template.displayName="Template";var defaultDate=new Date,EventLayout=Template.bind({});EventLayout.args={defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.DAY,defaultDate:defaultDate,timeslots:4,events:(0,_helpers_createEvents__WEBPACK_IMPORTED_MODULE_6__.A)(1)};var FirstOfWeekAllDay=Template.bind({});FirstOfWeekAllDay.storyName="first of the week all-day event",FirstOfWeekAllDay.args={defaultDate:new Date(2016,11,4),events:[{allDay:!0,title:"All Day Event",start:new Date(2016,11,4),end:new Date(2016,11,4)}]};var EndOfWeekAllDay=Template.bind({});EndOfWeekAllDay.storyName="end of the week all-day event",EndOfWeekAllDay.args={defaultDate:new Date(2016,11,3),events:[{allDay:!0,title:"All Day Event",start:new Date(2016,11,3),end:new Date(2016,11,3)}]};var EventAtStartOfWeek=Template.bind({});EventAtStartOfWeek.args={defaultDate:new Date(2016,11,4),events:[{title:"has time",start:moment__WEBPACK_IMPORTED_MODULE_3___default()(new Date(2016,11,4)).add(1,"days").subtract(5,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_3___default()(new Date(2016,11,4)).add(1,"days").subtract(4,"hours").toDate()}]};var EventAtEndOfWeek=Template.bind({});EventAtEndOfWeek.args={defaultDate:new Date(2016,11,3),events:[{title:"has time",start:moment__WEBPACK_IMPORTED_MODULE_3___default()(new Date(2016,11,3)).add(1,"days").subtract(5,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_3___default()(new Date(2016,11,3)).add(1,"days").subtract(4,"hours").toDate()}]};var EventsOnAConstrainedDayColumn=Template.bind({});EventsOnAConstrainedDayColumn.args={defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.DAY,min:moment__WEBPACK_IMPORTED_MODULE_3___default()("8 am","h a").toDate(),max:moment__WEBPACK_IMPORTED_MODULE_3___default()("5 pm","h a").toDate(),events:_helpers__WEBPACK_IMPORTED_MODULE_4__.AZ};var NoDuration=Template.bind({});NoDuration.args={defaultDate:new Date(2016,11,4),events:[{title:"start of the week",start:new Date(2016,11,4),end:new Date(2016,11,4)},{title:"end of the week",start:new Date(2016,11,3),end:new Date(2016,11,3)},{title:"middle",start:new Date(2016,11,6),end:new Date(2016,11,6)}]};var DaySpan=Template.bind({});DaySpan.storyName="Single days should only span one slot, multi-days multiple",DaySpan.args={defaultDate:new Date(2015,3,1),events:[{title:"SingleDay 1",start:new Date(2015,3,10),end:new Date(2015,3,11)},{title:"SingleDay 2",start:new Date(2015,3,11),end:new Date(2015,3,12)},{title:"SingleDay 3",start:new Date(2015,3,12),end:new Date(2015,3,13)},{title:"SingleDay 4",start:new Date(2015,3,13),end:new Date(2015,3,14)},{title:"MultiDay 1",start:new Date(2015,3,24),end:new Date(2015,3,25,1,0,0,0)},{title:"MultiDay 2",start:new Date(2015,3,25),end:new Date(2015,3,26,1,0,0,0)}]};var ZeroDurationOddities=function ZeroDurationOddities(){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_helpers__WEBPACK_IMPORTED_MODULE_4__.zm,{defaultDate:new Date(2015,3,1),events:[{id:4,title:"0 day duration",start:new Date(2015,3,8,0,0,0),end:new Date(2015,3,8,0,0,0)},{id:4,title:"1 day duration",start:new Date(2015,3,9,0,0,0),end:new Date(2015,3,10,0,0,0)}]})};ZeroDurationOddities.displayName="ZeroDurationOddities";var ZeroDurationOverlap=function ZeroDurationOverlap(){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_helpers__WEBPACK_IMPORTED_MODULE_4__.zm,{defaultDate:defaultDate,events:[{title:"event a",start:defaultDate,end:defaultDate},{title:"event b",start:defaultDate,end:defaultDate}],dayLayoutAlgorithm:"no-overlap",scrollToTime:defaultDate,defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.WEEK})};ZeroDurationOverlap.displayName="ZeroDurationOverlap";var OverlappingBackgroundEventsOverlap=Template.bind({});OverlappingBackgroundEventsOverlap.storyName="Overlapping Background Events - 'overlap'",OverlappingBackgroundEventsOverlap.args={defaultDate:new Date(2016,11,3),dayLayoutAlgorithm:"overlap",defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.WEEK,scrollToTime:new Date(2016,11,1,7,0),backgroundEvents:[{title:"First Event",start:new Date(2016,10,28,10,30),end:new Date(2016,10,28,18,0)},{title:"Second Event",start:new Date(2016,10,28,12,0),end:new Date(2016,10,28,16,30)},{title:"Third Event",start:new Date(2016,10,29,8,0),end:new Date(2016,10,29,21,0)},{title:"Fourth Event",start:new Date(2016,10,29,9,30),end:new Date(2016,10,29,19,30)},{title:"Fifth Event",start:new Date(2016,10,29,11,0),end:new Date(2016,10,29,18,0)},{title:"Sixth Event",start:new Date(2016,11,1,9,0),end:new Date(2016,11,1,14,0)},{title:"Seventh Event",start:new Date(2016,11,1,11,0),end:new Date(2016,11,1,16,0)},{title:"Eighth Event",start:new Date(2016,11,1,13,0),end:new Date(2016,11,1,18,0)}]};var OverlappingBackgroundEventsNoOverlap=Template.bind({});OverlappingBackgroundEventsNoOverlap.storyName="Overlapping Background Events - 'no-overlap'",OverlappingBackgroundEventsNoOverlap.args={defaultDate:new Date(2016,11,3),dayLayoutAlgorithm:"no-overlap",defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.WEEK,scrollToTime:new Date(2016,11,1,7,0),backgroundEvents:[{title:"First Event",start:new Date(2016,10,28,10,30),end:new Date(2016,10,28,18,0)},{title:"Second Event",start:new Date(2016,10,28,12,0),end:new Date(2016,10,28,16,30)},{title:"Third Event",start:new Date(2016,10,29,8,0),end:new Date(2016,10,29,21,0)},{title:"Fourth Event",start:new Date(2016,10,29,9,30),end:new Date(2016,10,29,19,30)},{title:"Fifth Event",start:new Date(2016,10,29,11,0),end:new Date(2016,10,29,18,0)},{title:"Sixth Event",start:new Date(2016,11,1,9,0),end:new Date(2016,11,1,14,0)},{title:"Seventh Event",start:new Date(2016,11,1,11,0),end:new Date(2016,11,1,16,0)},{title:"Eighth Event",start:new Date(2016,11,1,13,0),end:new Date(2016,11,1,18,0)}]},EventLayout.parameters=Object.assign({storySource:{source:"(args) => "}},EventLayout.parameters),FirstOfWeekAllDay.parameters=Object.assign({storySource:{source:"(args) => "}},FirstOfWeekAllDay.parameters),EndOfWeekAllDay.parameters=Object.assign({storySource:{source:"(args) => "}},EndOfWeekAllDay.parameters),EventAtStartOfWeek.parameters=Object.assign({storySource:{source:"(args) => "}},EventAtStartOfWeek.parameters),EventAtEndOfWeek.parameters=Object.assign({storySource:{source:"(args) => "}},EventAtEndOfWeek.parameters),EventsOnAConstrainedDayColumn.parameters=Object.assign({storySource:{source:"(args) => "}},EventsOnAConstrainedDayColumn.parameters),NoDuration.parameters=Object.assign({storySource:{source:"(args) => "}},NoDuration.parameters),DaySpan.parameters=Object.assign({storySource:{source:"(args) => "}},DaySpan.parameters),ZeroDurationOddities.parameters=Object.assign({storySource:{source:"() => {\n return (\n \n )\n}"}},ZeroDurationOddities.parameters),ZeroDurationOverlap.parameters=Object.assign({storySource:{source:"() => {\n return (\n \n )\n}"}},ZeroDurationOverlap.parameters),OverlappingBackgroundEventsOverlap.parameters=Object.assign({storySource:{source:"(args) => "}},OverlappingBackgroundEventsOverlap.parameters),OverlappingBackgroundEventsNoOverlap.parameters=Object.assign({storySource:{source:"(args) => "}},OverlappingBackgroundEventsNoOverlap.parameters);var __namedExportsOrder=["EventLayout","FirstOfWeekAllDay","EndOfWeekAllDay","EventAtStartOfWeek","EventAtEndOfWeek","EventsOnAConstrainedDayColumn","NoDuration","DaySpan","ZeroDurationOddities","ZeroDurationOverlap","OverlappingBackgroundEventsOverlap","OverlappingBackgroundEventsNoOverlap"];ZeroDurationOddities.__docgenInfo={description:"",methods:[],displayName:"ZeroDurationOddities"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/Layout.stories.js"]={name:"ZeroDurationOddities",docgenInfo:ZeroDurationOddities.__docgenInfo,path:"stories/Layout.stories.js"}),ZeroDurationOverlap.__docgenInfo={description:"",methods:[],displayName:"ZeroDurationOverlap"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/Layout.stories.js"]={name:"ZeroDurationOverlap",docgenInfo:ZeroDurationOverlap.__docgenInfo,path:"stories/Layout.stories.js"})},"./stories/Timeslots.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Selectable3Slot:function(){return Selectable3Slot},SelectableStep10x6Slot:function(){return SelectableStep10x6Slot},SelectableStep15x4Slot:function(){return SelectableStep15x4Slot},SelectableStep5x6Slot:function(){return SelectableStep5x6Slot},__namedExportsOrder:function(){return __namedExportsOrder}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/@storybook/addon-actions/dist/esm/index.js"),_src__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./src/index.js"),_helpers__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./stories/helpers/index.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/react/jsx-runtime.js");__webpack_exports__.default={title:"Additional Examples/Timeslots",component:_src__WEBPACK_IMPORTED_MODULE_3__.Vv,decorators:[function(Story){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div",{className:"height600",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(Story,{})})}]};var Template=function Template(args){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_helpers__WEBPACK_IMPORTED_MODULE_4__.Vv,Object.assign({},args))};Template.displayName="Template";var SelectableStep15x4Slot=Template.bind({});SelectableStep15x4Slot.storyName="selectable, step 15, 4 timeslots",SelectableStep15x4Slot.args={defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.WEEK,defaultDate:new Date,selectable:!0,timeslots:4,step:15,events:_helpers__WEBPACK_IMPORTED_MODULE_4__.AZ,onSelectEvent:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event selected"),onSelectSlot:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("slot selected")};var SelectableStep10x6Slot=Template.bind({});SelectableStep10x6Slot.storyName="selectable, step 10, 6 timeslots",SelectableStep10x6Slot.args={defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.WEEK,defaultDate:new Date,selectable:!0,timeslots:6,step:10,events:_helpers__WEBPACK_IMPORTED_MODULE_4__.AZ,onSelectEvent:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event selected"),onSelectSlot:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("slot selected")};var SelectableStep5x6Slot=Template.bind({});SelectableStep5x6Slot.storyName="selectable, step 5, 6 timeslots",SelectableStep5x6Slot.args={defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.WEEK,defaultDate:new Date,selectable:!0,timeslots:6,step:5,events:_helpers__WEBPACK_IMPORTED_MODULE_4__.AZ,onSelectEvent:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event selected"),onSelectSlot:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("slot selected")};var Selectable3Slot=Template.bind({});Selectable3Slot.storyName="selectable, 3 timeslots",Selectable3Slot.args={defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.WEEK,defaultDate:new Date,selectable:!0,timeslots:3,events:_helpers__WEBPACK_IMPORTED_MODULE_4__.AZ,onSelectEvent:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event selected"),onSelectSlot:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("slot selected")},SelectableStep15x4Slot.parameters=Object.assign({storySource:{source:"(args) => "}},SelectableStep15x4Slot.parameters),SelectableStep10x6Slot.parameters=Object.assign({storySource:{source:"(args) => "}},SelectableStep10x6Slot.parameters),SelectableStep5x6Slot.parameters=Object.assign({storySource:{source:"(args) => "}},SelectableStep5x6Slot.parameters),Selectable3Slot.parameters=Object.assign({storySource:{source:"(args) => "}},Selectable3Slot.parameters);var __namedExportsOrder=["SelectableStep15x4Slot","SelectableStep10x6Slot","SelectableStep5x6Slot","Selectable3Slot"]},"./stories/addons/dragAndDrop/basic.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example1:function(){return Example1},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return basic_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),toConsumableArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),events=(__webpack_require__("./node_modules/core-js/modules/es.array.find.js"),__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./stories/resources/events.js")),DemoLink_component=__webpack_require__("./stories/DemoLink.component.js"),dragAndDrop=__webpack_require__("./src/addons/dragAndDrop/index.js"),jsx_runtime=(__webpack_require__("./src/addons/dragAndDrop/styles.scss"),__webpack_require__("./node_modules/react/jsx-runtime.js")),DragAndDropCalendar=(0,dragAndDrop.A)(src.Vv);function DragAndDrop(_ref){var localizer=_ref.localizer,_useState=(0,react.useState)(events.A),_useState2=(0,slicedToArray.A)(_useState,2),myEvents=_useState2[0],setMyEvents=_useState2[1],moveEvent=(0,react.useCallback)((function(_ref2){var event=_ref2.event,start=_ref2.start,end=_ref2.end,_ref2$isAllDay=_ref2.isAllDay,droppedOnAllDaySlot=void 0!==_ref2$isAllDay&&_ref2$isAllDay,allDay=event.allDay;!allDay&&droppedOnAllDaySlot&&(event.allDay=!0),allDay&&!droppedOnAllDaySlot&&(event.allDay=!1),setMyEvents((function(prev){var _prev$find,existing=null!==(_prev$find=prev.find((function(ev){return ev.id===event.id})))&&void 0!==_prev$find?_prev$find:{},filtered=prev.filter((function(ev){return ev.id!==event.id}));return[].concat((0,toConsumableArray.A)(filtered),[Object.assign({},existing,{start:start,end:end,allDay:event.allDay})])}))}),[setMyEvents]),resizeEvent=(0,react.useCallback)((function(_ref3){var event=_ref3.event,start=_ref3.start,end=_ref3.end;setMyEvents((function(prev){var _prev$find2,existing=null!==(_prev$find2=prev.find((function(ev){return ev.id===event.id})))&&void 0!==_prev$find2?_prev$find2:{},filtered=prev.filter((function(ev){return ev.id!==event.id}));return[].concat((0,toConsumableArray.A)(filtered),[Object.assign({},existing,{start:start,end:end})])}))}),[setMyEvents]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,12)}),[]);return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"dnd",children:(0,jsx_runtime.jsx)("strong",{children:'Drag and Drop an "event" from one slot to another to "move" the event, or drag an event\'s drag handles to "resize" the event.'})}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(DragAndDropCalendar,{defaultDate:defaultDate,defaultView:src.Pp.MONTH,events:myEvents,localizer:localizer,onEventDrop:moveEvent,onEventResize:resizeEvent,popup:!0,resizable:!0})})]})}DragAndDrop.displayName="DragAndDrop",DragAndDrop.__docgenInfo={description:"",methods:[],displayName:"DragAndDrop",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/dnd.js"]={name:"DragAndDrop",docgenInfo:DragAndDrop.__docgenInfo,path:"stories/demos/exampleCode/dnd.js"});var basic_stories={title:"Addons/Drag and Drop",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example1=function Example1(){return(0,jsx_runtime.jsx)(DragAndDrop,{localizer:localizer})};Example1.displayName="Example1",Example1.storyName="Basic Drag n Drop",Example1.parameters=Object.assign({storySource:{source:"function Example1() {\n return \n}"}},Example1.parameters);var __namedExportsOrder=["Example1"];Example1.__docgenInfo={description:"",methods:[],displayName:"Example1"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/basic.stories.js"]={name:"Example1",docgenInfo:Example1.__docgenInfo,path:"stories/addons/dragAndDrop/basic.stories.js"})},"./stories/addons/dragAndDrop/outside.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example3:function(){return Example3},__namedExportsOrder:function(){return __namedExportsOrder}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/moment/moment.js"),moment__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_2__),_src__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./src/index.js"),_demos_exampleCode_dndOutsideSource__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./stories/demos/exampleCode/dndOutsideSource.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/react/jsx-runtime.js");__webpack_exports__.default={title:"Addons/Drag and Drop",component:_src__WEBPACK_IMPORTED_MODULE_3__.Vv,parameters:{docs:{page:null}}};var localizer=(0,_src__WEBPACK_IMPORTED_MODULE_3__.ye)(moment__WEBPACK_IMPORTED_MODULE_2___default()),Example3=function Example3(){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_demos_exampleCode_dndOutsideSource__WEBPACK_IMPORTED_MODULE_4__.A,{localizer:localizer})};Example3.displayName="Example3",Example3.storyName="Drag and Drop (from outside calendar)",Example3.parameters=Object.assign({storySource:{source:"function Example3() {\n return \n}"}},Example3.parameters);var __namedExportsOrder=["Example3"];Example3.__docgenInfo={description:"",methods:[],displayName:"Example3"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/outside.stories.js"]={name:"Example3",docgenInfo:Example3.__docgenInfo,path:"stories/addons/dragAndDrop/outside.stories.js"})},"./stories/addons/dragAndDrop/props/dragFromOutsideItem.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DragFromOutsideItem:function(){return DragFromOutsideItem},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return dragFromOutsideItem_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),dndOutsideSource=__webpack_require__("./stories/demos/exampleCode/dndOutsideSource.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"dragfromoutsideitem"},"dragFromOutsideItem"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function () => boolean"))),(0,esm.yg)("p",null,"A callback to get a temporary ",(0,esm.yg)("inlineCode",{parentName:"p"},"event")," to display in a slot in the process of dragging from outside. This is not required for Drag and Drop to function, but provides a nice visual cue to the user when dragging in an item from outside of the Calendar."),(0,esm.yg)("p",null,"Tip: Toggle the checkbox, in the example, and drag an outside item in. Do this from both checkbox states to see the difference in effect."),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--drag-from-outside-item",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),dragFromOutsideItem_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),DragFromOutsideItem=function DragFromOutsideItem(){return(0,jsx_runtime.jsx)(dndOutsideSource.A,{localizer:localizer})};DragFromOutsideItem.displayName="DragFromOutsideItem",DragFromOutsideItem.storyName="dragFromOutsideItem",DragFromOutsideItem.parameters=Object.assign({storySource:{source:"function DragFromOutsideItem() {\n return \n}"}},DragFromOutsideItem.parameters);var __namedExportsOrder=["DragFromOutsideItem"];DragFromOutsideItem.__docgenInfo={description:"",methods:[],displayName:"DragFromOutsideItem"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/dragFromOutsideItem.stories.js"]={name:"DragFromOutsideItem",docgenInfo:DragFromOutsideItem.__docgenInfo,path:"stories/addons/dragAndDrop/props/dragFromOutsideItem.stories.js"})},"./stories/addons/dragAndDrop/props/draggableAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DraggableAccessor:function(){return DraggableAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return draggableAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),dndOutsideSource=__webpack_require__("./stories/demos/exampleCode/dndOutsideSource.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"draggableaccessor"},"draggableAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string|function (event) => boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"() => true"))),(0,esm.yg)("p",null,"When used, can determine whether an 'event' is draggable"),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--draggable-accessor",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),draggableAccessor_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),DraggableAccessor=function DraggableAccessor(){return(0,jsx_runtime.jsx)(dndOutsideSource.A,{localizer:localizer})};DraggableAccessor.displayName="DraggableAccessor",DraggableAccessor.storyName="draggableAccessor",DraggableAccessor.parameters=Object.assign({storySource:{source:"function DraggableAccessor() {\n return \n}"}},DraggableAccessor.parameters);var __namedExportsOrder=["DraggableAccessor"];DraggableAccessor.__docgenInfo={description:"",methods:[],displayName:"DraggableAccessor"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/draggableAccessor.stories.js"]={name:"DraggableAccessor",docgenInfo:DraggableAccessor.__docgenInfo,path:"stories/addons/dragAndDrop/props/draggableAccessor.stories.js"})},"./stories/addons/dragAndDrop/props/onDragOver.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnDragOver:function(){return OnDragOver},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onDragOver_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),dndOutsideSource=__webpack_require__("./stories/demos/exampleCode/dndOutsideSource.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"ondragover"},"onDragOver"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (dragEvent: SyntheticEvent) => any"))),(0,esm.yg)("p",null,"If an ",(0,esm.yg)("inlineCode",{parentName:"p"},"onDragOver")," callback ",(0,esm.yg)("em",{parentName:"p"},"is")," passed, then it can discriminate as to whether a draggable item is droppable on the calendar. To designate a draggable item as droppable, call ",(0,esm.yg)("inlineCode",{parentName:"p"},"event.preventDefault")," inside ",(0,esm.yg)("inlineCode",{parentName:"p"},"onDragOver"),". If ",(0,esm.yg)("inlineCode",{parentName:"p"},"event.preventDefault")," is not called in the ",(0,esm.yg)("inlineCode",{parentName:"p"},"onDragOver")," callback, then the draggable item will not be droppable on the calendar."),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--on-drag-over",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),onDragOver_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),OnDragOver=function OnDragOver(){return(0,jsx_runtime.jsx)(dndOutsideSource.A,{localizer:localizer})};OnDragOver.displayName="OnDragOver",OnDragOver.storyName="onDragOver",OnDragOver.parameters=Object.assign({storySource:{source:"function OnDragOver() {\n return \n}"}},OnDragOver.parameters);var __namedExportsOrder=["OnDragOver"];OnDragOver.__docgenInfo={description:"",methods:[],displayName:"OnDragOver"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/onDragOver.stories.js"]={name:"OnDragOver",docgenInfo:OnDragOver.__docgenInfo,path:"stories/addons/dragAndDrop/props/onDragOver.stories.js"})},"./stories/addons/dragAndDrop/props/onDragStart.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnDragStart:function(){return OnDragStart},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onDragStart_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),dndOutsideSource=__webpack_require__("./stories/demos/exampleCode/dndOutsideSource.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"ondragstart"},"onDragStart"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function ({ event, action, direction }) => any"))),(0,esm.yg)("p",null,"A callback fired when user begins to drag an event."),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--on-drag-start",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),onDragStart_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),OnDragStart=function OnDragStart(){return(0,jsx_runtime.jsx)(dndOutsideSource.A,{localizer:localizer})};OnDragStart.displayName="OnDragStart",OnDragStart.storyName="onDragStart",OnDragStart.parameters=Object.assign({storySource:{source:"function OnDragStart() {\n return \n}"}},OnDragStart.parameters);var __namedExportsOrder=["OnDragStart"];OnDragStart.__docgenInfo={description:"",methods:[],displayName:"OnDragStart"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/onDragStart.stories.js"]={name:"OnDragStart",docgenInfo:OnDragStart.__docgenInfo,path:"stories/addons/dragAndDrop/props/onDragStart.stories.js"})},"./stories/addons/dragAndDrop/props/onDropFromOutside.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnDropFromOutside:function(){return OnDropFromOutside},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onDropFromOutside_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),dndOutsideSource=__webpack_require__("./stories/demos/exampleCode/dndOutsideSource.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"ondropfromoutside"},"onDropFromOutside"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function ({ start, end, allDay }) => any"))),(0,esm.yg)("p",null,"A callback fired when user drops an item onto the Calendar from outside of the Calendar. Developers will typically use this method to add new items to the Calendar's ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events"),"."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Important:")," The callback does ",(0,esm.yg)("strong",{parentName:"p"},"not")," receive the element being dropped. It only receives the details of the slot an element was dropped on."),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--on-drop-from-outside",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),onDropFromOutside_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),OnDropFromOutside=function OnDropFromOutside(){return(0,jsx_runtime.jsx)(dndOutsideSource.A,{localizer:localizer})};OnDropFromOutside.displayName="OnDropFromOutside",OnDropFromOutside.storyName="onDropFromOutside",OnDropFromOutside.parameters=Object.assign({storySource:{source:"function OnDropFromOutside() {\n return \n}"}},OnDropFromOutside.parameters);var __namedExportsOrder=["OnDropFromOutside"];OnDropFromOutside.__docgenInfo={description:"",methods:[],displayName:"OnDropFromOutside"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/onDropFromOutside.stories.js"]={name:"OnDropFromOutside",docgenInfo:OnDropFromOutside.__docgenInfo,path:"stories/addons/dragAndDrop/props/onDropFromOutside.stories.js"})},"./stories/addons/dragAndDrop/props/onEventDrop.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnEventDrop:function(){return OnEventDrop},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onEventDrop_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),dndOutsideSource=__webpack_require__("./stories/demos/exampleCode/dndOutsideSource.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"oneventdrop"},"onEventDrop"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function ({ event, start, end, allDay }) => any"))),(0,esm.yg)("p",null,"A callback fired when user drops an item from one slot to another from within the Calendar. Developers will typically use this method to update an item's ",(0,esm.yg)("inlineCode",{parentName:"p"},"start")," and ",(0,esm.yg)("inlineCode",{parentName:"p"},"end")," in ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events"),"."),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--on-event-drop",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),onEventDrop_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),OnEventDrop=function OnEventDrop(){return(0,jsx_runtime.jsx)(dndOutsideSource.A,{localizer:localizer})};OnEventDrop.displayName="OnEventDrop",OnEventDrop.storyName="onEventDrop",OnEventDrop.parameters=Object.assign({storySource:{source:"function OnEventDrop() {\n return \n}"}},OnEventDrop.parameters);var __namedExportsOrder=["OnEventDrop"];OnEventDrop.__docgenInfo={description:"",methods:[],displayName:"OnEventDrop"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/onEventDrop.stories.js"]={name:"OnEventDrop",docgenInfo:OnEventDrop.__docgenInfo,path:"stories/addons/dragAndDrop/props/onEventDrop.stories.js"})},"./stories/addons/dragAndDrop/props/onEventResize.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnEventResize:function(){return OnEventResize},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onEventResize_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),resizable=__webpack_require__("./stories/demos/exampleCode/resizable.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"oneventresize"},"onEventResize"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function ({ event, start, end }) => any"))),(0,esm.yg)("p",null,"A callback fired when user resizes an event. Developers will typically use this method to update an item's ",(0,esm.yg)("inlineCode",{parentName:"p"},"start")," and ",(0,esm.yg)("inlineCode",{parentName:"p"},"end")," in ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events"),"."),(0,esm.yg)("p",null,"The ",(0,esm.yg)(addon_links_react.A,{kind:"addons-drag-and-drop-props",story:"resizable",mdxType:"LinkTo"},"resizable")," prop must be ",(0,esm.yg)("inlineCode",{parentName:"p"},"true")," (the default) to use the method."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Note:")," ",(0,esm.yg)("inlineCode",{parentName:"p"},"resizable")," events must also be draggable. You cannot resize an event with a ",(0,esm.yg)(addon_links_react.A,{kind:"addons-drag-and-drop-props",story:"draggable-accessor",mdxType:"LinkTo"},"draggableAccessor")," prop of ",(0,esm.yg)("inlineCode",{parentName:"p"},"false"),"."),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--on-event-resize",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),onEventResize_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),OnEventResize=function OnEventResize(){return(0,jsx_runtime.jsx)(resizable.A,{localizer:localizer})};OnEventResize.displayName="OnEventResize",OnEventResize.storyName="onEventResize",OnEventResize.parameters=Object.assign({storySource:{source:"function OnEventResize() {\n return \n}"}},OnEventResize.parameters);var __namedExportsOrder=["OnEventResize"];OnEventResize.__docgenInfo={description:"",methods:[],displayName:"OnEventResize"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/onEventResize.stories.js"]={name:"OnEventResize",docgenInfo:OnEventResize.__docgenInfo,path:"stories/addons/dragAndDrop/props/onEventResize.stories.js"})},"./stories/addons/dragAndDrop/props/resizable.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Resizable:function(){return Resizable},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return resizable_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),resizable=__webpack_require__("./stories/demos/exampleCode/resizable.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"resizable"},"resizable"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"true"))),(0,esm.yg)("p",null,"Determines if events may be resized on the Calendar. Used in conjunction with ",(0,esm.yg)(addon_links_react.A,{kind:"addons-drag-and-drop-props",story:"on-event-resize",mdxType:"LinkTo"},"onEventResize"),". When used with the ",(0,esm.yg)(addon_links_react.A,{kind:"addons-drag-and-drop-props",story:"resizable-accessor",mdxType:"LinkTo"},"resizableAccessor")," the developer has even greater control."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Note:")," ",(0,esm.yg)("inlineCode",{parentName:"p"},"resizable")," events must also be draggable. You cannot resize an event with a ",(0,esm.yg)(addon_links_react.A,{kind:"addons-drag-and-drop-props",story:"draggable-accessor",mdxType:"LinkTo"},"draggableAccessor")," prop of ",(0,esm.yg)("inlineCode",{parentName:"p"},"false"),"."),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--resizable",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),resizable_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),Resizable=function Resizable(){return(0,jsx_runtime.jsx)(resizable.A,{localizer:localizer})};Resizable.displayName="Resizable",Resizable.storyName="resizable",Resizable.parameters=Object.assign({storySource:{source:"function Resizable() {\n return \n}"}},Resizable.parameters);var __namedExportsOrder=["Resizable"];Resizable.__docgenInfo={description:"",methods:[],displayName:"Resizable"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/resizable.stories.js"]={name:"Resizable",docgenInfo:Resizable.__docgenInfo,path:"stories/addons/dragAndDrop/props/resizable.stories.js"})},"./stories/addons/dragAndDrop/props/resizableAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ResizableAccessor:function(){return ResizableAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return resizableAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),resizable=__webpack_require__("./stories/demos/exampleCode/resizable.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"resizableaccessor"},"resizableAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string|function (event) => boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"() => true"))),(0,esm.yg)("p",null,"Determines if an event is resizable."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Note:")," ",(0,esm.yg)("inlineCode",{parentName:"p"},"resizable")," events must also be draggable. You cannot resize an event with a ",(0,esm.yg)(addon_links_react.A,{kind:"addons-drag-and-drop-props",story:"draggable-accessor",mdxType:"LinkTo"},"draggableAccessor")," prop of ",(0,esm.yg)("inlineCode",{parentName:"p"},"false"),"."),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--resizable",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),resizableAccessor_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),ResizableAccessor=function ResizableAccessor(){return(0,jsx_runtime.jsx)(resizable.A,{localizer:localizer})};ResizableAccessor.displayName="ResizableAccessor",ResizableAccessor.storyName="resizableAccessor",ResizableAccessor.parameters=Object.assign({storySource:{source:"function ResizableAccessor() {\n return \n}"}},ResizableAccessor.parameters);var __namedExportsOrder=["ResizableAccessor"];ResizableAccessor.__docgenInfo={description:"",methods:[],displayName:"ResizableAccessor"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/resizableAccessor.stories.js"]={name:"ResizableAccessor",docgenInfo:ResizableAccessor.__docgenInfo,path:"stories/addons/dragAndDrop/props/resizableAccessor.stories.js"})},"./stories/addons/dragAndDrop/resource.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example2:function(){return Example2},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return resource_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),toConsumableArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),DemoLink_component=(__webpack_require__("./node_modules/core-js/modules/es.set.js"),__webpack_require__("./node_modules/core-js/modules/es.object.to-string.js"),__webpack_require__("./node_modules/core-js/modules/es.string.iterator.js"),__webpack_require__("./node_modules/core-js/modules/es.array.iterator.js"),__webpack_require__("./node_modules/core-js/modules/web.dom-collections.iterator.js"),__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/es.array.find.js"),__webpack_require__("./stories/DemoLink.component.js")),dragAndDrop=__webpack_require__("./src/addons/dragAndDrop/index.js"),jsx_runtime=(__webpack_require__("./src/addons/dragAndDrop/styles.scss"),__webpack_require__("./node_modules/react/jsx-runtime.js")),DragAndDropCalendar=(0,dragAndDrop.A)(src.Vv),events=[{id:0,title:"Board meeting",start:new Date(2018,0,29,9,0,0),end:new Date(2018,0,29,13,0,0),resourceId:[1,2]},{id:1,title:"MS training",start:new Date(2018,0,29,14,0,0),end:new Date(2018,0,29,16,30,0),resourceId:2},{id:2,title:"Team lead meeting",start:new Date(2018,0,29,8,30,0),end:new Date(2018,0,29,12,30,0),resourceId:3},{id:10,title:"Board meeting",start:new Date(2018,0,30,23,0,0),end:new Date(2018,0,30,23,59,0),resourceId:1},{id:11,title:"Birthday Party",start:new Date(2018,0,30,7,0,0),end:new Date(2018,0,30,10,30,0),resourceId:4},{id:12,title:"Board meeting",start:new Date(2018,0,29,23,59,0),end:new Date(2018,0,30,13,0,0),resourceId:1},{id:13,title:"Board meeting",start:new Date(2018,0,29,23,50,0),end:new Date(2018,0,30,13,0,0),resourceId:2},{id:14,title:"Board meeting",start:new Date(2018,0,29,23,40,0),end:new Date(2018,0,30,13,0,0),resourceId:4}],resourceMap=[{resourceId:1,resourceTitle:"Board room"},{resourceId:2,resourceTitle:"Training room"},{resourceId:3,resourceTitle:"Meeting room 1"},{resourceId:4,resourceTitle:"Meeting room 2"}];function DnDResource(_ref){var localizer=_ref.localizer,_useState=(0,react.useState)(events),_useState2=(0,slicedToArray.A)(_useState,2),myEvents=_useState2[0],setMyEvents=_useState2[1],_useState3=(0,react.useState)(!0),_useState4=(0,slicedToArray.A)(_useState3,2),copyEvent=_useState4[0],setCopyEvent=_useState4[1],toggleCopyEvent=(0,react.useCallback)((function(){return setCopyEvent((function(val){return!val}))}),[]),moveEvent=(0,react.useCallback)((function(_ref2){var event=_ref2.event,start=_ref2.start,end=_ref2.end,resourceId=_ref2.resourceId,_ref2$isAllDay=_ref2.isAllDay,droppedOnAllDaySlot=void 0!==_ref2$isAllDay&&_ref2$isAllDay,allDay=event.allDay;if(!allDay&&droppedOnAllDaySlot&&(event.allDay=!0),Array.isArray(event.resourceId))if(copyEvent)resourceId=(0,toConsumableArray.A)(new Set([].concat((0,toConsumableArray.A)(event.resourceId),[resourceId])));else{var filtered=event.resourceId.filter((function(ev){return ev!==event.sourceResource}));resourceId=(0,toConsumableArray.A)(new Set([].concat((0,toConsumableArray.A)(filtered),[resourceId])))}else copyEvent&&(resourceId=(0,toConsumableArray.A)(new Set([event.resourceId,resourceId])));setMyEvents((function(prev){var _prev$find,existing=null!==(_prev$find=prev.find((function(ev){return ev.id===event.id})))&&void 0!==_prev$find?_prev$find:{},filtered=prev.filter((function(ev){return ev.id!==event.id}));return[].concat((0,toConsumableArray.A)(filtered),[Object.assign({},existing,{start:start,end:end,resourceId:resourceId,allDay:allDay})])}))}),[setMyEvents,copyEvent]),resizeEvent=(0,react.useCallback)((function(_ref3){var event=_ref3.event,start=_ref3.start,end=_ref3.end;setMyEvents((function(prev){var _prev$find2,existing=null!==(_prev$find2=prev.find((function(ev){return ev.id===event.id})))&&void 0!==_prev$find2?_prev$find2:{},filtered=prev.filter((function(ev){return ev.id!==event.id}));return[].concat((0,toConsumableArray.A)(filtered),[Object.assign({},existing,{start:start,end:end})])}))}),[setMyEvents]),_useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2018,0,29),scrollToTime:new Date(1972,0,1,8)}}),[]),defaultDate=_useMemo.defaultDate,scrollToTime=_useMemo.scrollToTime;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsxs)(DemoLink_component.A,{fileName:"dndresource",children:[(0,jsx_runtime.jsx)("strong",{children:'Drag and Drop an "event" from one resource slot to another.'}),(0,jsx_runtime.jsx)("div",{style:{margin:"10px 0 20px 0"},children:(0,jsx_runtime.jsxs)("label",{children:[(0,jsx_runtime.jsx)("input",{type:"checkbox",checked:copyEvent,onChange:toggleCopyEvent}),'Keep copy of dragged "source" event in its original resource slot.']})})]}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(DragAndDropCalendar,{defaultDate:defaultDate,defaultView:src.Pp.DAY,events:myEvents,localizer:localizer,onEventDrop:moveEvent,onEventResize:resizeEvent,resizable:!0,resourceIdAccessor:"resourceId",resources:resourceMap,resourceTitleAccessor:"resourceTitle",scrollToTime:scrollToTime,selectable:!0,showMultiDayTimes:!0,step:15})})]})}DnDResource.displayName="DnDResource",DnDResource.__docgenInfo={description:"",methods:[],displayName:"DnDResource",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/dndresource.js"]={name:"DnDResource",docgenInfo:DnDResource.__docgenInfo,path:"stories/demos/exampleCode/dndresource.js"});var resource_stories={title:"Addons/Drag and Drop",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example2=function Example2(){return(0,jsx_runtime.jsx)(DnDResource,{localizer:localizer})};Example2.displayName="Example2",Example2.storyName="Resource Drag and Drop",Example2.parameters=Object.assign({storySource:{source:"function Example2() {\n return \n}"}},Example2.parameters);var __namedExportsOrder=["Example2"];Example2.__docgenInfo={description:"",methods:[],displayName:"Example2"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/resource.stories.js"]={name:"Example2",docgenInfo:Example2.__docgenInfo,path:"stories/addons/dragAndDrop/resource.stories.js"})},"./stories/demos/backgroundEvents.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example10:function(){return Example10},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return backgroundEvents_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),DemoLink_component=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.keys.js"),__webpack_require__("./stories/DemoLink.component.js")),events=__webpack_require__("./stories/resources/events.js"),backgroundEvents=[{id:0,title:"Available for Clients",start:new Date(2015,3,13,6),end:new Date(2015,3,13,18)}],dates=__webpack_require__("./src/utils/dates.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),allViews=Object.keys(src.Pp).map((function(k){return src.Pp[k]}));function BackgroundEventsCalendar(_ref){var localizer=_ref.localizer,_useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),max:dates.WQ(dates.pJ(new Date(2015,17,1),"day"),-1,"hours")}}),[]),defaultDate=_useMemo.defaultDate,max=_useMemo.max;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"backgroundEvents"}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{backgroundEvents:backgroundEvents,dayLayoutAlgorithm:"no-overlap",defaultDate:defaultDate,defaultView:src.Pp.DAY,events:events.A,localizer:localizer,max:max,showMultiDayTimes:!0,step:60,views:allViews})})]})}BackgroundEventsCalendar.displayName="BackgroundEventsCalendar",BackgroundEventsCalendar.__docgenInfo={description:"",methods:[],displayName:"BackgroundEventsCalendar",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/backgroundEvents.js"]={name:"BackgroundEventsCalendar",docgenInfo:BackgroundEventsCalendar.__docgenInfo,path:"stories/demos/exampleCode/backgroundEvents.js"});var backgroundEvents_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example10=function Example10(){return(0,jsx_runtime.jsx)(BackgroundEventsCalendar,{localizer:localizer})};Example10.displayName="Example10",Example10.storyName="Background Events",Example10.parameters=Object.assign({storySource:{source:"function Example10() {\n return \n}"}},Example10.parameters);var __namedExportsOrder=["Example10"];Example10.__docgenInfo={description:"",methods:[],displayName:"Example10"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/backgroundEvents.stories.js"]={name:"Example10",docgenInfo:Example10.__docgenInfo,path:"stories/demos/backgroundEvents.stories.js"})},"./stories/demos/basic.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example1:function(){return Example1},__namedExportsOrder:function(){return __namedExportsOrder}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/moment/moment.js"),moment__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_2__),_src__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./src/index.js"),_exampleCode_basic__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./stories/demos/exampleCode/basic.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/react/jsx-runtime.js");__webpack_exports__.default={title:"Examples",component:_src__WEBPACK_IMPORTED_MODULE_3__.Vv,parameters:{docs:{page:null}}};var localizer=(0,_src__WEBPACK_IMPORTED_MODULE_3__.ye)(moment__WEBPACK_IMPORTED_MODULE_2___default()),Example1=function Example1(){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_exampleCode_basic__WEBPACK_IMPORTED_MODULE_4__.A,{localizer:localizer})};Example1.displayName="Example1",Example1.storyName="Basic Demo",Example1.parameters=Object.assign({storySource:{source:"function Example1() {\n return \n}"}},Example1.parameters);var __namedExportsOrder=["Example1"];Example1.__docgenInfo={description:"",methods:[],displayName:"Example1"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/basic.stories.js"]={name:"Example1",docgenInfo:Example1.__docgenInfo,path:"stories/demos/basic.stories.js"})},"./stories/demos/cultures.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example5:function(){return Example5},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return cultures_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),DemoLink_component=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./stories/DemoLink.component.js")),events=__webpack_require__("./stories/resources/events.js"),Layout=__webpack_require__("./node_modules/react-tackle-box/Layout.js"),Layout_default=__webpack_require__.n(Layout),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");__webpack_require__("./node_modules/globalize/lib/cultures/globalize.culture.en-GB.js"),__webpack_require__("./node_modules/globalize/lib/cultures/globalize.culture.es.js"),__webpack_require__("./node_modules/globalize/lib/cultures/globalize.culture.fr.js"),__webpack_require__("./node_modules/globalize/lib/cultures/globalize.culture.ar-AE.js");var cultures=["en","en-GB","es","fr","ar-AE"],lang={en:null,"en-GB":null,es:{week:"Semana",work_week:"Semana de trabajo",day:"Día",month:"Mes",previous:"Atrás",next:"Después",today:"Hoy",agenda:"El Diario",showMore:function showMore(total){return"+".concat(total," más")}},fr:{week:"La semaine",work_week:"Semaine de travail",day:"Jour",month:"Mois",previous:"Antérieur",next:"Prochain",today:"Aujourd'hui",agenda:"Ordre du jour",showMore:function showMore(total){return"+".concat(total," plus")}},"ar-AE":{week:"أسبوع",work_week:"أسبوع العمل",day:"يوم",month:"شهر",previous:"سابق",next:"التالي",today:"اليوم",agenda:"جدول أعمال",showMore:function showMore(total){return"+".concat(total," إضافي")}}};function CulturesDemo(_ref){var localizer=_ref.localizer,_useState=(0,react.useState)("fr"),_useState2=(0,slicedToArray.A)(_useState,2),culture=_useState2[0],setCulture=_useState2[1],_useState3=(0,react.useState)(!1),_useState4=(0,slicedToArray.A)(_useState3,2),rightToLeft=_useState4[0],setRightToLeft=_useState4[1],cultureOnClick=(0,react.useCallback)((function(_ref2){var value=_ref2.target.value;setCulture(value),setRightToLeft("ar-AE"===value)}),[setCulture]),_useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,1),messages:lang[culture]}}),[culture]),defaultDate=_useMemo.defaultDate,messages=_useMemo.messages;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"cultures",children:(0,jsx_runtime.jsxs)(Layout_default(),{direction:"column",align:"center",children:[(0,jsx_runtime.jsx)("label",{children:"Select a Culture"})," ",(0,jsx_runtime.jsx)("select",{className:"form-control",style:{width:200,display:"inline-block"},defaultValue:"fr",onChange:cultureOnClick,children:cultures.map((function(c,idx){return(0,jsx_runtime.jsx)("option",{value:c,children:c},idx)}))})]})}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{culture:culture,defaultDate:defaultDate,events:events.A,localizer:localizer,messages:messages,rtl:rightToLeft})})]})}CulturesDemo.displayName="CulturesDemo",CulturesDemo.__docgenInfo={description:"",methods:[],displayName:"CulturesDemo",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/cultures.js"]={name:"CulturesDemo",docgenInfo:CulturesDemo.__docgenInfo,path:"stories/demos/exampleCode/cultures.js"});var cultures_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example5=function Example5(){return(0,jsx_runtime.jsx)(CulturesDemo,{localizer:localizer})};Example5.displayName="Example5",Example5.storyName="Localization",Example5.parameters=Object.assign({storySource:{source:"function Example5() {\n return \n}"}},Example5.parameters);var __namedExportsOrder=["Example5"];Example5.__docgenInfo={description:"",methods:[],displayName:"Example5"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/cultures.stories.js"]={name:"Example5",docgenInfo:Example5.__docgenInfo,path:"stories/demos/cultures.stories.js"})},"./stories/demos/customView.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example9:function(){return Example9},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return customView_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),objectWithoutProperties=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),date_arithmetic=__webpack_require__("./node_modules/date-arithmetic/index.js"),TimeGrid=__webpack_require__("./src/TimeGrid.js"),events=__webpack_require__("./stories/resources/events.js"),DemoLink_component=__webpack_require__("./stories/DemoLink.component.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),_excluded=["date","localizer","max","min","scrollToTime"];function MyWeek(_ref){var date=_ref.date,localizer=_ref.localizer,_ref$max=_ref.max,max=void 0===_ref$max?localizer.endOf(new Date,"day"):_ref$max,_ref$min=_ref.min,min=void 0===_ref$min?localizer.startOf(new Date,"day"):_ref$min,_ref$scrollToTime=_ref.scrollToTime,scrollToTime=void 0===_ref$scrollToTime?localizer.startOf(new Date,"day"):_ref$scrollToTime,props=(0,objectWithoutProperties.A)(_ref,_excluded),currRange=(0,react.useMemo)((function(){return MyWeek.range(date,{localizer:localizer})}),[date,localizer]);return(0,jsx_runtime.jsx)(TimeGrid.A,Object.assign({date:date,eventOffset:15,localizer:localizer,max:max,min:min,range:currRange,scrollToTime:scrollToTime},props))}function CustomView(_ref4){var localizer=_ref4.localizer,_useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,1),views:{month:!0,week:MyWeek}}}),[]),defaultDate=_useMemo.defaultDate,views=_useMemo.views;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"customView",children:(0,jsx_runtime.jsx)("strong",{children:"The Calendar below implements a custom 3-day week view"})}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,localizer:localizer,views:views})})]})}MyWeek.displayName="MyWeek",MyWeek.range=function(date,_ref2){for(var localizer=_ref2.localizer,start=date,end=date_arithmetic.add(start,2,"day"),current=start,range=[];localizer.lte(current,end,"day");)range.push(current),current=localizer.add(current,1,"day");return range},MyWeek.navigate=function(date,action,_ref3){var localizer=_ref3.localizer;switch(action){case src.C5.PREVIOUS:return localizer.add(date,-3,"day");case src.C5.NEXT:return localizer.add(date,3,"day");default:return date}},MyWeek.title=function(date){return"My awesome week: ".concat(date.toLocaleDateString())},CustomView.displayName="CustomView",CustomView.__docgenInfo={description:"",methods:[],displayName:"CustomView",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/customView.js"]={name:"CustomView",docgenInfo:CustomView.__docgenInfo,path:"stories/demos/exampleCode/customView.js"});var customView_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example9=function Example9(){return(0,jsx_runtime.jsx)(CustomView,{localizer:localizer})};Example9.displayName="Example9",Example9.storyName="Custom Calendar Views",Example9.parameters=Object.assign({storySource:{source:"function Example9() {\n return \n}"}},Example9.parameters);var __namedExportsOrder=["Example9"];Example9.__docgenInfo={description:"",methods:[],displayName:"Example9"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/customView.stories.js"]={name:"Example9",docgenInfo:Example9.__docgenInfo,path:"stories/demos/customView.stories.js"})},"./stories/demos/dayjs.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DayjsLocalizer:function(){return DayjsLocalizer},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return dayjs_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),dayjs_min=__webpack_require__("./node_modules/dayjs/dayjs.min.js"),dayjs_min_default=__webpack_require__.n(dayjs_min),src=__webpack_require__("./src/index.js"),objectDestructuringEmpty=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js"),esm_extends=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/extends.js"),DemoLink_component=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.keys.js"),__webpack_require__("./stories/DemoLink.component.js")),events=__webpack_require__("./stories/resources/events.js"),timezone=__webpack_require__("./node_modules/dayjs/plugin/timezone.js"),timezone_default=__webpack_require__.n(timezone),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");dayjs_min_default().extend(timezone_default());var djLocalizer=(0,src.vH)(dayjs_min_default()),ColoredDateCellWrapper=function ColoredDateCellWrapper(_ref){var children=_ref.children;return react.cloneElement(react.Children.only(children),{style:{backgroundColor:"lightblue"}})};function Dayjs(_ref2){var props=(0,esm_extends.A)({},((0,objectDestructuringEmpty.A)(_ref2),_ref2)),_useMemo=(0,react.useMemo)((function(){return{components:{timeSlotWrapper:ColoredDateCellWrapper},defaultDate:new Date(2015,3,1),max:dayjs_min_default()().endOf("day").subtract(1,"hours").toDate(),views:Object.keys(src.Pp).map((function(k){return src.Pp[k]}))}}),[]),components=_useMemo.components,defaultDate=_useMemo.defaultDate,max=_useMemo.max,views=_useMemo.views;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"dayjs"}),(0,jsx_runtime.jsx)("div",Object.assign({className:"height600"},props,{children:(0,jsx_runtime.jsx)(src.Vv,{components:components,defaultDate:defaultDate,events:events.A,localizer:djLocalizer,max:max,showMultiDayTimes:!0,step:60,views:views})}))]})}Dayjs.displayName="Dayjs",Dayjs.__docgenInfo={description:"",methods:[],displayName:"Dayjs"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/dayjs.js"]={name:"Dayjs",docgenInfo:Dayjs.__docgenInfo,path:"stories/demos/exampleCode/dayjs.js"});var dayjs_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.vH)(dayjs_min_default()),DayjsLocalizer=function DayjsLocalizer(){return(0,jsx_runtime.jsx)(Dayjs,{localizer:localizer})};DayjsLocalizer.displayName="DayjsLocalizer",DayjsLocalizer.parameters=Object.assign({storySource:{source:"function DayjsLocalizer() {\n return \n}"}},DayjsLocalizer.parameters);var __namedExportsOrder=["DayjsLocalizer"];DayjsLocalizer.__docgenInfo={description:"",methods:[],displayName:"DayjsLocalizer"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/dayjs.stories.js"]={name:"DayjsLocalizer",docgenInfo:DayjsLocalizer.__docgenInfo,path:"stories/demos/dayjs.stories.js"})},"./stories/demos/luxon.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{LuxonLocalizer:function(){return LuxonLocalizer},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return luxon_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),luxon=__webpack_require__("./node_modules/luxon/src/luxon.js"),src=__webpack_require__("./src/index.js"),toConsumableArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),DemoLink_component=__webpack_require__("./stories/DemoLink.component.js"),events=__webpack_require__("./stories/resources/events.js"),TimezoneSelect=__webpack_require__("./stories/demos/TimezoneSelect.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),defaultTZ=luxon.c9.local().zoneName;function Luxon(){var _useState=(0,react.useState)(defaultTZ),_useState2=(0,slicedToArray.A)(_useState,2),timezone=_useState2[0],setTimezone=_useState2[1],_useMemo=(0,react.useMemo)((function(){return luxon.wB.defaultZone=timezone,{defaultDate:(str="2015-04-13",DateTimeObj=luxon.c9,DateTimeObj.fromISO(str).toJSDate()),getNow:function getNow(){return luxon.c9.local().toJSDate()},localizer:(0,src.AW)(luxon.c9),myEvents:(0,toConsumableArray.A)(events.A),scrollToTime:luxon.c9.local().toJSDate()};var str,DateTimeObj}),[timezone]),defaultDate=_useMemo.defaultDate,getNow=_useMemo.getNow,localizer=_useMemo.localizer,myEvents=_useMemo.myEvents,scrollToTime=_useMemo.scrollToTime;return(0,react.useEffect)((function(){return function(){luxon.wB.defaultZone=defaultTZ}}),[]),(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"luxon",children:(0,jsx_runtime.jsx)(TimezoneSelect.A,{defaultTZ:defaultTZ,setTimezone:setTimezone,timezone:timezone,title:"This calendar uses the 'luxonLocalizer'"})}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:myEvents,getNow:getNow,localizer:localizer,scrollToTime:scrollToTime})})]})}Luxon.displayName="Luxon",Luxon.__docgenInfo={description:"",methods:[],displayName:"Luxon"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/luxon.js"]={name:"Luxon",docgenInfo:Luxon.__docgenInfo,path:"stories/demos/exampleCode/luxon.js"});var luxon_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.AW)(luxon.c9),LuxonLocalizer=function LuxonLocalizer(){return(0,jsx_runtime.jsx)(Luxon,{localizer:localizer})};LuxonLocalizer.displayName="LuxonLocalizer",LuxonLocalizer.parameters=Object.assign({storySource:{source:"function LuxonLocalizer() {\n return \n}"}},LuxonLocalizer.parameters);var __namedExportsOrder=["LuxonLocalizer"];LuxonLocalizer.__docgenInfo={description:"",methods:[],displayName:"LuxonLocalizer"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/luxon.stories.js"]={name:"LuxonLocalizer",docgenInfo:LuxonLocalizer.__docgenInfo,path:"stories/demos/luxon.stories.js"})},"./stories/demos/noOverlap.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example3:function(){return Example3},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return noOverlap_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),toConsumableArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),DemoLink_component=(__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./stories/DemoLink.component.js")),events=__webpack_require__("./stories/resources/events.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");function CreateEventWithNoOverlap(_ref){var localizer=_ref.localizer,_ref$dayLayoutAlgorit=_ref.dayLayoutAlgorithm,dayLayoutAlgorithm=void 0===_ref$dayLayoutAlgorit?"no-overlap":_ref$dayLayoutAlgorit,_useState=(0,react.useState)(events.A),_useState2=(0,slicedToArray.A)(_useState,2),myEvents=_useState2[0],setEvents=_useState2[1],handleSelectSlot=(0,react.useCallback)((function(_ref2){var start=_ref2.start,end=_ref2.end,title=window.prompt("New Event Name");title&&setEvents((function(prev){return[].concat((0,toConsumableArray.A)(prev),[{start:start,end:end,title:title}])}))}),[setEvents]),handleSelectEvent=(0,react.useCallback)((function(event){return window.alert(event.title)}),[]),_useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,12),scrollToTime:new Date(1970,1,1,6)}}),[]),defaultDate=_useMemo.defaultDate,scrollToTime=_useMemo.scrollToTime;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"createEventWithNoOverlap",children:(0,jsx_runtime.jsxs)("strong",{children:["Click an event to see more info, or drag the mouse over the calendar to select a date/time range.",(0,jsx_runtime.jsx)("br",{}),"The events are being arranged by `no-overlap` algorithm."]})}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{dayLayoutAlgorithm:dayLayoutAlgorithm,defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:myEvents,localizer:localizer,onSelectEvent:handleSelectEvent,onSelectSlot:handleSelectSlot,selectable:!0,scrollToTime:scrollToTime})})]})}CreateEventWithNoOverlap.displayName="CreateEventWithNoOverlap",CreateEventWithNoOverlap.__docgenInfo={description:"",methods:[],displayName:"CreateEventWithNoOverlap",props:{dayLayoutAlgorithm:{defaultValue:{value:"'no-overlap'",computed:!1},description:"",type:{name:"string"},required:!1},localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/createEventWithNoOverlap.js"]={name:"CreateEventWithNoOverlap",docgenInfo:CreateEventWithNoOverlap.__docgenInfo,path:"stories/demos/exampleCode/createEventWithNoOverlap.js"});var noOverlap_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example3=function Example3(){return(0,jsx_runtime.jsx)(CreateEventWithNoOverlap,{localizer:localizer})};Example3.displayName="Example3",Example3.storyName="Create events with no-overlap algorithm",Example3.parameters=Object.assign({storySource:{source:"function Example3() {\n return \n}"}},Example3.parameters);var __namedExportsOrder=["Example3"];Example3.__docgenInfo={description:"",methods:[],displayName:"Example3"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/noOverlap.stories.js"]={name:"Example3",docgenInfo:Example3.__docgenInfo,path:"stories/demos/noOverlap.stories.js"})},"./stories/demos/popup.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example6:function(){return Example6},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return popup_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),DemoLink_component=__webpack_require__("./stories/DemoLink.component.js"),events=__webpack_require__("./stories/resources/events.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");function Popup(_ref){var localizer=_ref.localizer,defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"popup",children:(0,jsx_runtime.jsx)("strong",{children:'Click the "+{x} more" link on any calendar day that cannot fit all the days events to see an inline popup of all the events.'})}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:localizer,popup:!0})})]})}Popup.displayName="Popup",Popup.__docgenInfo={description:"",methods:[],displayName:"Popup",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/popup.js"]={name:"Popup",docgenInfo:Popup.__docgenInfo,path:"stories/demos/exampleCode/popup.js"});var popup_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example6=function Example6(){return(0,jsx_runtime.jsx)(Popup,{localizer:localizer})};Example6.displayName="Example6",Example6.storyName="Show more via a popup",Example6.parameters=Object.assign({storySource:{source:"function Example6() {\n return \n}"}},Example6.parameters);var __namedExportsOrder=["Example6"];Example6.__docgenInfo={description:"",methods:[],displayName:"Example6"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/popup.stories.js"]={name:"Example6",docgenInfo:Example6.__docgenInfo,path:"stories/demos/popup.stories.js"})},"./stories/demos/rendering.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example8:function(){return Example8},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return rendering_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),DemoLink_component=__webpack_require__("./stories/DemoLink.component.js"),events=__webpack_require__("./stories/resources/events.js"),rendering_module=__webpack_require__("./stories/demos/exampleCode/rendering.module.scss"),rendering_module_default=__webpack_require__.n(rendering_module),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");function Event(_ref){var event=_ref.event;return(0,jsx_runtime.jsxs)("span",{children:[(0,jsx_runtime.jsx)("strong",{children:event.title}),event.desc&&": "+event.desc]})}function EventAgenda(_ref2){var event=_ref2.event;return(0,jsx_runtime.jsxs)("span",{children:[(0,jsx_runtime.jsx)("em",{style:{color:"magenta"},children:event.title}),(0,jsx_runtime.jsx)("p",{children:event.desc})]})}Event.displayName="Event",EventAgenda.displayName="EventAgenda";var customDayPropGetter=function customDayPropGetter(date){return 7===date.getDate()||15===date.getDate()?{className:rendering_module_default().specialDay,style:{border:"solid 3px "+(7===date.getDate()?"#faa":"#afa")}}:{}},customSlotPropGetter=function customSlotPropGetter(date){return 7===date.getDate()||15===date.getDate()?{className:rendering_module_default().specialDay}:{}};function Rendering(_ref3){var localizer=_ref3.localizer,_useMemo=(0,react.useMemo)((function(){return{components:{agenda:{event:EventAgenda},event:Event},defaultDate:new Date(2015,3,7)}}),[]),components=_useMemo.components,defaultDate=_useMemo.defaultDate;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"rendering"}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{components:components,dayPropGetter:customDayPropGetter,defaultDate:defaultDate,defaultView:src.Pp.AGENDA,events:events.A,localizer:localizer,slotPropGetter:customSlotPropGetter})})]})}Rendering.displayName="Rendering",Rendering.__docgenInfo={description:"",methods:[],displayName:"Rendering",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/rendering.js"]={name:"Rendering",docgenInfo:Rendering.__docgenInfo,path:"stories/demos/exampleCode/rendering.js"});var rendering_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example8=function Example8(){return(0,jsx_runtime.jsx)(Rendering,{localizer:localizer})};Example8.displayName="Example8",Example8.storyName="Customized Component Rendering",Example8.parameters=Object.assign({storySource:{source:"function Example8() {\n return \n}"}},Example8.parameters);var __namedExportsOrder=["Example8"];Example8.__docgenInfo={description:"",methods:[],displayName:"Example8"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/rendering.stories.js"]={name:"Example8",docgenInfo:Example8.__docgenInfo,path:"stories/demos/rendering.stories.js"})},"./stories/demos/resource.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example11:function(){return Example11},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return resource_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),DemoLink_component=__webpack_require__("./stories/DemoLink.component.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),events=[{id:0,title:"Board meeting",start:new Date(2018,0,29,9,0,0),end:new Date(2018,0,29,13,0,0),resourceId:1},{id:1,title:"MS training",allDay:!0,start:new Date(2018,0,29,14,0,0),end:new Date(2018,0,29,16,30,0),resourceId:2},{id:2,title:"Team lead meeting",start:new Date(2018,0,29,8,30,0),end:new Date(2018,0,29,12,30,0),resourceId:[2,3]},{id:11,title:"Birthday Party",start:new Date(2018,0,30,7,0,0),end:new Date(2018,0,30,10,30,0),resourceId:4}],resourceMap=[{resourceId:1,resourceTitle:"Board room"},{resourceId:2,resourceTitle:"Training room"},{resourceId:3,resourceTitle:"Meeting room 1"},{resourceId:4,resourceTitle:"Meeting room 2"}];function Resource(_ref){var localizer=_ref.localizer,_useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2018,0,29),views:["day","work_week"]}}),[]),defaultDate=_useMemo.defaultDate,views=_useMemo.views;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"resource"}),(0,jsx_runtime.jsxs)("strong",{children:["The calendar below uses the ",(0,jsx_runtime.jsx)(addon_links_react.A,{kind:"props",story:"resource-id-accessor",children:"resourceIdAccessor"}),", ",(0,jsx_runtime.jsx)(addon_links_react.A,{kind:"props",story:"resource-title-accessor",children:"resourceTitleAccessor"})," and ",(0,jsx_runtime.jsx)(addon_links_react.A,{kind:"props",story:"resources",children:"resources"})," props to show events scheduled for different resources.",(0,jsx_runtime.jsx)("br",{}),"Events can be mapped to a single resource, or multiple resources."]}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.DAY,events:events,localizer:localizer,resourceIdAccessor:"resourceId",resources:resourceMap,resourceTitleAccessor:"resourceTitle",step:60,views:views})})]})}Resource.displayName="Resource",Resource.__docgenInfo={description:"",methods:[],displayName:"Resource",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/resource.js"]={name:"Resource",docgenInfo:Resource.__docgenInfo,path:"stories/demos/exampleCode/resource.js"});var resource_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example11=function Example11(){return(0,jsx_runtime.jsx)(Resource,{localizer:localizer})};Example11.displayName="Example11",Example11.storyName="Resource Scheduling",Example11.parameters=Object.assign({storySource:{source:"function Example11() {\n return \n}"}},Example11.parameters);var __namedExportsOrder=["Example11"];Example11.__docgenInfo={description:"",methods:[],displayName:"Example11"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/resource.stories.js"]={name:"Example11",docgenInfo:Example11.__docgenInfo,path:"stories/demos/resource.stories.js"})},"./stories/demos/selectable.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example2:function(){return Example2},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return selectable_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),toConsumableArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),DemoLink_component=(__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./stories/DemoLink.component.js")),events=__webpack_require__("./stories/resources/events.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");function Selectable(_ref){var localizer=_ref.localizer,_useState=(0,react.useState)(events.A),_useState2=(0,slicedToArray.A)(_useState,2),myEvents=_useState2[0],setEvents=_useState2[1],handleSelectSlot=(0,react.useCallback)((function(_ref2){var start=_ref2.start,end=_ref2.end,title=window.prompt("New Event name");title&&setEvents((function(prev){return[].concat((0,toConsumableArray.A)(prev),[{start:start,end:end,title:title}])}))}),[setEvents]),handleSelectEvent=(0,react.useCallback)((function(event){return window.alert(event.title)}),[]),_useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,12),scrollToTime:new Date(1970,1,1,6)}}),[]),defaultDate=_useMemo.defaultDate,scrollToTime=_useMemo.scrollToTime;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"selectable",children:(0,jsx_runtime.jsx)("strong",{children:"Click an event to see more info, or drag the mouse over the calendar to select a date/time range."})}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:myEvents,localizer:localizer,onSelectEvent:handleSelectEvent,onSelectSlot:handleSelectSlot,selectable:!0,scrollToTime:scrollToTime})})]})}Selectable.displayName="Selectable",Selectable.__docgenInfo={description:"",methods:[],displayName:"Selectable",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/selectable.js"]={name:"Selectable",docgenInfo:Selectable.__docgenInfo,path:"stories/demos/exampleCode/selectable.js"});var selectable_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example2=function Example2(){return(0,jsx_runtime.jsx)(Selectable,{localizer:localizer})};Example2.displayName="Example2",Example2.storyName="Create Events",Example2.parameters=Object.assign({storySource:{source:"function Example2() {\n return \n}"}},Example2.parameters);var __namedExportsOrder=["Example2"];Example2.__docgenInfo={description:"",methods:[],displayName:"Example2"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/selectable.stories.js"]={name:"Example2",docgenInfo:Example2.__docgenInfo,path:"stories/demos/selectable.stories.js"})},"./stories/demos/timeslots.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example7:function(){return Example7},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return timeslots_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),DemoLink_component=__webpack_require__("./stories/DemoLink.component.js"),events=__webpack_require__("./stories/resources/events.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");function Timeslots(_ref){var localizer=_ref.localizer,defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,12)}),[]);return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"timeslots"}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,localizer:localizer,step:15,timeslots:8})})]})}Timeslots.displayName="Timeslots",Timeslots.__docgenInfo={description:"",methods:[],displayName:"Timeslots",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/timeslots.js"]={name:"Timeslots",docgenInfo:Timeslots.__docgenInfo,path:"stories/demos/exampleCode/timeslots.js"});var timeslots_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example7=function Example7(){return(0,jsx_runtime.jsx)(Timeslots,{localizer:localizer})};Example7.displayName="Example7",Example7.storyName="Timeslots",Example7.parameters=Object.assign({storySource:{source:"function Example7() {\n return \n}"}},Example7.parameters);var __namedExportsOrder=["Example7"];Example7.__docgenInfo={description:"",methods:[],displayName:"Example7"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/timeslots.stories.js"]={name:"Example7",docgenInfo:Example7.__docgenInfo,path:"stories/demos/timeslots.stories.js"})},"./stories/demos/timezones.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example4:function(){return Example4},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return timezones_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),src=__webpack_require__("./src/index.js"),toConsumableArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),DemoLink_component=(__webpack_require__("./node_modules/moment-timezone/index.js"),__webpack_require__("./stories/DemoLink.component.js")),events=__webpack_require__("./stories/resources/events.js"),TimezoneSelect=__webpack_require__("./stories/demos/TimezoneSelect.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),defaultTZ=moment_default().tz.guess();function Timezones(){var _useState=(0,react.useState)(defaultTZ),_useState2=(0,slicedToArray.A)(_useState,2),timezone=_useState2[0],setTimezone=_useState2[1],_useMemo=(0,react.useMemo)((function(){return moment_default().tz.setDefault(timezone),{defaultDate:(str="2015-4-13",momentObj=moment_default(),momentObj(str,"YYYY-MM-DD").toDate()),getNow:function getNow(){return moment_default()().toDate()},localizer:(0,src.ye)(moment_default()),myEvents:(0,toConsumableArray.A)(events.A),scrollToTime:moment_default()().toDate()};var str,momentObj}),[timezone]),defaultDate=_useMemo.defaultDate,getNow=_useMemo.getNow,localizer=_useMemo.localizer,myEvents=_useMemo.myEvents,scrollToTime=_useMemo.scrollToTime;return(0,react.useEffect)((function(){return function(){moment_default().tz.setDefault()}}),[]),(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"timezones",children:(0,jsx_runtime.jsx)(TimezoneSelect.A,{defaultTZ:defaultTZ,setTimezone:setTimezone,timezone:timezone})}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:myEvents,getNow:getNow,localizer:localizer,scrollToTime:scrollToTime})})]})}Timezones.displayName="Timezones",Timezones.__docgenInfo={description:"",methods:[],displayName:"Timezones"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/timezones.js"]={name:"Timezones",docgenInfo:Timezones.__docgenInfo,path:"stories/demos/exampleCode/timezones.js"});var timezones_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},Example4=function Example4(){return(0,jsx_runtime.jsx)(Timezones,{})};Example4.displayName="Example4",Example4.storyName="Timezones",Example4.parameters=Object.assign({storySource:{source:"function Example4() {\n return \n}"}},Example4.parameters);var __namedExportsOrder=["Example4"];Example4.__docgenInfo={description:"",methods:[],displayName:"Example4"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/timezones.stories.js"]={name:"Example4",docgenInfo:Example4.__docgenInfo,path:"stories/demos/timezones.stories.js"})},"./stories/props/allDayAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{AllDayAccessor:function(){return AllDayAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return allDayAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var src=__webpack_require__("./src/index.js"),storyDefaults=__webpack_require__("./stories/props/storyDefaults.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"alldayaccessor"},"allDayAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: 'allDay'")),(0,esm.yg)("p",null,'Determines whether the event should be considered an "all day" event and ignore time. Must resolve to a ',(0,esm.yg)("inlineCode",{parentName:"p"},"boolean")," value."),(0,esm.yg)(dist_esm.gG,{id:"props--all-day-accessor",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),allDayAccessor_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var AllDayAccessor=Template.bind({});AllDayAccessor.storyName="allDayAccessor",AllDayAccessor.args=storyDefaults.o,AllDayAccessor.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},AllDayAccessor.parameters);var __namedExportsOrder=["AllDayAccessor"]},"./stories/props/allDayMaxRows.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{AllDayMaxRows:function(){return AllDayMaxRows},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return allDayMaxRows_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),allDayEvents=[{id:0,title:"All Day Event very long title",allDay:!0,start:new Date(2015,3,0),end:new Date(2015,3,1)},{id:1,title:"#2 All Day Event very long title",allDay:!0,start:new Date(2015,3,0),end:new Date(2015,3,2)},{id:2,title:"#3 All Day Event very long title",allDay:!0,start:new Date(2015,3,0),end:new Date(2015,3,1)},{id:3,title:"#4 All Day Event",allDay:!0,start:new Date(2015,3,0),end:new Date(2015,3,1)},{id:4,title:"#5 All Day Event",allDay:!0,start:new Date(2015,3,0),end:new Date(2015,3,1)},{id:5,title:"#6 All Day Event",allDay:!0,start:new Date(2015,3,7),end:new Date(2015,3,7)}],esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"alldaymaxrows"},"allDayMaxRows"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"number")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"Infinity"))),(0,esm.yg)("p",null,"Determines a maximum amount of rows of events to display in the all day section for Week and Day views, will display ",(0,esm.yg)("inlineCode",{parentName:"p"},"showMore")," button if events excede this number."),(0,esm.yg)(dist_esm.gG,{id:"props--all-day-max-rows",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),allDayMaxRows_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var AllDayMaxRows=Template.bind({});AllDayMaxRows.storyName="allDayMaxRows",AllDayMaxRows.args={defaultDate:new Date(2015,3,1),defaultView:src.Pp.WEEK,events:allDayEvents,localizer:mLocalizer,allDayMaxRows:2,popup:!0},AllDayMaxRows.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},AllDayMaxRows.parameters);var __namedExportsOrder=["AllDayMaxRows"]},"./stories/props/backgroundEvents.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{BackGroundEvents:function(){return BackGroundEvents},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return backgroundEvents_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),helpers=__webpack_require__("./stories/helpers/index.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"backgroundevents"},"backgroundEvents"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"arrayOf(BackgroundEvent)")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"[]"))),(0,esm.yg)("p",null,"An array of background event objects to display on the calendar. Background\nEvents behave similarly to Events but are not factored into Event overlap logic,\nallowing them to sit behind any Events that may occur during the same period.\nBackground Events objects can be any shape, as long as the Calendar knows how to\nretrieve the following details of the event:"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"start time"),(0,esm.yg)("li",{parentName:"ul"},"end time")),(0,esm.yg)("p",null,'Each of these properties can be customized or generated dynamically by\nsetting the various "accessor" props. Without any configuration the default\nevent should look like:'),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"BackgroundEvent {\n start: Date,\n end: Date,\n}\n")),(0,esm.yg)(dist_esm.gG,{id:"props--back-ground-events",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),backgroundEvents_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultView:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var BackGroundEvents=Template.bind({});BackGroundEvents.storyName="backgroundEvents",BackGroundEvents.args={backgroundEvents:helpers.Mf,defaultView:src.Pp.WEEK,events:helpers.AZ,localizer:mLocalizer},BackGroundEvents.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},BackGroundEvents.parameters);var __namedExportsOrder=["BackGroundEvents"]},"./stories/props/components.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Components:function(){return Components},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return components_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"components"},"components"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"object"))),(0,esm.yg)("p",null,"Customize how different sections of the calendar render by providing custom Components. In particular the Event component can be specified for the entire calendar, or you can provide an individual component for each view type."),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-jsx"},"const components = useMemo(() => ({\n event: MyEvent, // used by each view (Month, Day, Week)\n eventWrapper: MyEventWrapper,\n eventContainerWrapper: MyEventContainerWrapper,\n dateCellWrapper: MyDateCellWrapper,\n dayColumnWrapper: MyDayColumnWrapper,\n timeSlotWrapper: MyTimeSlotWrapper,\n timeGutterHeader: MyTimeGutterWrapper,\n resourceHeader: MyResourceHeader,\n toolbar: MyToolbar,\n agenda: {\n event: MyAgendaEvent, // with the agenda view use a different component to render events\n time: MyAgendaTime,\n date: MyAgendaDate,\n },\n day: {\n header: MyDayHeader,\n event: MyDayEvent,\n },\n week: {\n header: MyWeekHeader,\n event: MyWeekEvent,\n },\n month: {\n header: MyMonthHeader,\n dateHeader: MyMonthDateHeader,\n event: MyMonthEvent,\n }\n}), [])\n\n")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--components",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;__webpack_require__("./node_modules/core-js/modules/es.array.map.js");var clsx_m=__webpack_require__("./node_modules/clsx/dist/clsx.m.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");function ViewNamesGroup(_ref){var viewNames=_ref.views,view=_ref.view,messages=_ref.messages,onView=_ref.onView;return viewNames.map((function(name){return(0,jsx_runtime.jsx)("button",{type:"button",className:(0,clsx_m.A)({"rbc-active":view===name}),onClick:function onClick(){return onView(name)},children:messages[name]},name)}))}function CustomToolbar(_ref2){var label=_ref2.label,messages=_ref2.localizer.messages,onNavigate=_ref2.onNavigate,onView=_ref2.onView,view=_ref2.view,views=_ref2.views;return(0,jsx_runtime.jsxs)("div",{className:"rbc-toolbar",children:[(0,jsx_runtime.jsx)("span",{className:"rbc-btn-group",children:(0,jsx_runtime.jsx)(ViewNamesGroup,{view:view,views:views,messages:messages,onView:onView})}),(0,jsx_runtime.jsx)("span",{className:"rbc-toolbar-label",children:label}),(0,jsx_runtime.jsxs)("span",{className:(0,clsx_m.A)("rbc-btn-group","examples--custom-toolbar"),children:[(0,jsx_runtime.jsx)("button",{type:"button",onClick:function onClick(){return onNavigate(src.C5.PREVIOUS)},"aria-label":messages.previous,children:"<"}),(0,jsx_runtime.jsx)("button",{type:"button",onClick:function onClick(){return onNavigate(src.C5.TODAY)},"aria-label":messages.today,children:"•"}),(0,jsx_runtime.jsx)("button",{type:"button",onClick:function onClick(){return onNavigate(src.C5.NEXT)},"aria-label":messages.next,children:">"})]})]})}CustomToolbar.displayName="CustomToolbar",CustomToolbar.__docgenInfo={description:"",methods:[],displayName:"CustomToolbar",props:{date:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},label:{description:"",type:{name:"string"},required:!1},localizer:{description:"",type:{name:"object"},required:!1},messages:{description:"",type:{name:"object"},required:!1},onNavigate:{description:"",type:{name:"func"},required:!1},onView:{description:"",type:{name:"func"},required:!1},view:{description:"",type:{name:"string"},required:!1},views:{description:"",type:{name:"array"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/customComponents/CustomToolbar.component.js"]={name:"CustomToolbar",docgenInfo:CustomToolbar.__docgenInfo,path:"stories/props/customComponents/CustomToolbar.component.js"});__webpack_require__("./stories/resources/customToolbar.scss");var mLocalizer=(0,src.ye)(moment_default()),components_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},Components=function Components(){var _useMemo=(0,react.useMemo)((function(){return{components:{toolbar:CustomToolbar},defaultDate:new Date(2015,3,13)}}),[]),components=_useMemo.components,defaultDate=_useMemo.defaultDate;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,components:components})})};Components.displayName="Components",Components.storyName="components",Components.parameters=Object.assign({storySource:{source:'function Components() {\n const { components, defaultDate } = useMemo(\n () => ({\n components: {\n toolbar: CustomToolbar,\n },\n defaultDate: new Date(2015, 3, 13),\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}'}},Components.parameters);var __namedExportsOrder=["Components"];Components.__docgenInfo={description:"",methods:[],displayName:"Components"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/components.stories.js"]={name:"Components",docgenInfo:Components.__docgenInfo,path:"stories/props/components.stories.js"})},"./stories/props/culture.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Culture:function(){return Culture},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return culture_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"culture"},"culture"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"none (browser default)"))),(0,esm.yg)("p",null,"Specify a specific culture code for the Calendar. The ",(0,esm.yg)("inlineCode",{parentName:"p"},"culture")," is used by ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"formats",mdxType:"LinkTo"},"formats")," with your ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"localizer")," to 'format' date/time information on the Calendar. To localize messaging, use the ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"messages",mdxType:"LinkTo"},"messages")," prop."),(0,esm.yg)("p",null,"See the ",(0,esm.yg)(addon_links_react.A,{kind:"examples",story:"example-5",mdxType:"LinkTo"},"Localization Example")," for another example of combining ",(0,esm.yg)("inlineCode",{parentName:"p"},"rtl"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"localizer"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"culture")," and ",(0,esm.yg)("inlineCode",{parentName:"p"},"messages"),"."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Note: it's generally better to handle this globally via your i18n library.")),(0,esm.yg)(dist_esm.gG,{id:"props--culture",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),culture_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},defaultDate:{control:{type:null}},events:{control:{type:null}},culture:{options:["es","fr","en-us","en-gb"],control:{type:"select"}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Culture=Template.bind({});Culture.storyName="culture",Culture.args={defaultDate:new Date(2015,3,13),events:events.A,localizer:mLocalizer,culture:"es"},Culture.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Culture.parameters);var __namedExportsOrder=["Culture"]},"./stories/props/date.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{CalDate:function(){return CalDate},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return date_stories}});var slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"date"},"date"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"new Date()")),(0,esm.yg)("li",{parentName:"ul"},"controlled by: ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"on-navigate",mdxType:"LinkTo"},"onNavigate"))),(0,esm.yg)("p",null,"The current date value of the calendar. Determines the visible view range.\nIf ",(0,esm.yg)("inlineCode",{parentName:"p"},"date")," is omitted then the result of ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"get-now",mdxType:"LinkTo"},"getNow")," is used; otherwise the\ncurrent date is used."),(0,esm.yg)("p",null,"This is a controllable prop, when using ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"on-navigate",mdxType:"LinkTo"},"onNavigate")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--cal-date",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),date_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},CalDate=function CalDate(){var _useState=(0,react.useState)(new Date(2015,3,1)),_useState2=(0,slicedToArray.A)(_useState,2),date=_useState2[0],setDate=_useState2[1],onNavigate=(0,react.useCallback)((function(newDate){return setDate(newDate)}),[setDate]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{date:date,events:events.A,localizer:mLocalizer,onNavigate:onNavigate})})};CalDate.displayName="CalDate",CalDate.storyName="date",CalDate.parameters=Object.assign({storySource:{source:'function CalDate() {\n const [date, setDate] = useState(new Date(2015, 3, 1))\n\n const onNavigate = useCallback((newDate) => setDate(newDate), [setDate])\n\n return (\n
\n \n
\n )\n}'}},CalDate.parameters);var __namedExportsOrder=["CalDate"];CalDate.__docgenInfo={description:"",methods:[],displayName:"CalDate"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/date.stories.js"]={name:"CalDate",docgenInfo:CalDate.__docgenInfo,path:"stories/props/date.stories.js"})},"./stories/props/dayLayoutAlgorithm.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DayLayoutAlgorithm:function(){return DayLayoutAlgorithm},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return dayLayoutAlgorithm_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"daylayoutalgorithm"},"dayLayoutAlgorithm"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string | Function(events, minimumStartDifference, slotMetrics, accessors)")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"overlap"))),(0,esm.yg)("p",null,"A day event layout(arrangement) algorithm."),(0,esm.yg)("p",null,(0,esm.yg)("inlineCode",{parentName:"p"},"overlap")," allows events to be overlapped."),(0,esm.yg)("p",null,(0,esm.yg)("inlineCode",{parentName:"p"},"no-overlap")," resizes events to avoid overlap."),(0,esm.yg)("p",null,"or custom ",(0,esm.yg)("inlineCode",{parentName:"p"},"Function(events, minimumStartDifference, slotMetrics, accessors)")),(0,esm.yg)(dist_esm.gG,{id:"props--day-layout-algorithm",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),dayLayoutAlgorithm_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}},events:{control:{type:null}},dayLayoutAlgorithm:{options:["overlap","no-overlap"],control:{type:"select"}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var DayLayoutAlgorithm=Template.bind({});DayLayoutAlgorithm.storyName="dayLayoutAlgorithm",DayLayoutAlgorithm.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.WEEK,events:events.A,localizer:mLocalizer,dayLayoutAlgorithm:"no-overlap"},DayLayoutAlgorithm.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},DayLayoutAlgorithm.parameters);var __namedExportsOrder=["DayLayoutAlgorithm"]},"./stories/props/dayPropGetter.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DayPropGetter:function(){return DayPropGetter},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return dayPropGetter_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"daypropgetter"},"dayPropGetter"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, resourceId?: Any) => {className?: string, style?: Object}"))),(0,esm.yg)("p",null,"Optionally provide a function that returns an object of className or style props to be applied to the the day background."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Caution!")," Styles that change layout or position may break the calendar in unexpected ways."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--day-prop-getter",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;__webpack_require__("./stories/resources/propGetter.scss");var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),dayPropGetter_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},DayPropGetter=function DayPropGetter(){var dayPropGetter=(0,react.useCallback)((function(date){return Object.assign({},2===moment_default()(date).day()&&{className:"tuesday"},4===moment_default()(date).day()&&{style:{backgroundColor:"darkgreen",color:"white"}})}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,13)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,dayPropGetter:dayPropGetter,events:events.A,localizer:mLocalizer})})};DayPropGetter.displayName="DayPropGetter",DayPropGetter.storyName="dayPropGetter",DayPropGetter.parameters=Object.assign({storySource:{source:"function DayPropGetter() {\n const dayPropGetter = useCallback(\n (date) => ({\n ...(moment(date).day() === 2 && {\n className: 'tuesday',\n }),\n ...(moment(date).day() === 4 && {\n style: {\n backgroundColor: 'darkgreen',\n color: 'white',\n },\n }),\n }),\n []\n )\n\n const defaultDate = useMemo(() => new Date(2015, 3, 13), [])\n\n return (\n
\n \n
\n )\n}"}},DayPropGetter.parameters);var __namedExportsOrder=["DayPropGetter"];DayPropGetter.__docgenInfo={description:"",methods:[],displayName:"DayPropGetter"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/dayPropGetter.stories.js"]={name:"DayPropGetter",docgenInfo:DayPropGetter.__docgenInfo,path:"stories/props/dayPropGetter.stories.js"})},"./stories/props/defaultDate.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DefaultDate:function(){return DefaultDate},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return defaultDate_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"defaultdate"},"defaultDate"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"new Date()"))),(0,esm.yg)("p",null,"Sets the initial ",(0,esm.yg)("inlineCode",{parentName:"p"},"date")," value in your calendar when you don't want it to be 'today', when not using ",(0,esm.yg)("inlineCode",{parentName:"p"},"getNow"),", or controlling ",(0,esm.yg)("inlineCode",{parentName:"p"},"date"),"."),(0,esm.yg)(dist_esm.gG,{id:"props--default-date",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),defaultDate_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultView:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var DefaultDate=Template.bind({});DefaultDate.storyName="defaultDate",DefaultDate.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.DAY,events:events.A,localizer:mLocalizer},DefaultDate.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},DefaultDate.parameters);var __namedExportsOrder=["DefaultDate"]},"./stories/props/defaultView.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DefaultView:function(){return DefaultView},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return defaultView_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"defaultview"},"defaultView"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"Views.MONTH (month|week|work_week|day|agenda)"))),(0,esm.yg)("p",null,"The initial ",(0,esm.yg)("inlineCode",{parentName:"p"},"view")," set for your calendar when you don't want it to be the default ('month')."),(0,esm.yg)(dist_esm.gG,{id:"props--default-view",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),defaultView_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var DefaultView=Template.bind({});DefaultView.storyName="defaultView",DefaultView.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.DAY,events:events.A,localizer:mLocalizer},DefaultView.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},DefaultView.parameters);var __namedExportsOrder=["DefaultView"]},"./stories/props/drilldownView.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DrilldownView:function(){return DrilldownView},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return drilldownView_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"drilldownview"},"drilldownView"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"Views.DAY"))),(0,esm.yg)("p",null,"The string name of the destination ",(0,esm.yg)("inlineCode",{parentName:"p"},"view")," for drill-down actions, such as clicking a date header, or the truncated events links. If ",(0,esm.yg)("inlineCode",{parentName:"p"},"getDrilldownView")," is also specified it will be used instead."),(0,esm.yg)("p",null,"Set to ",(0,esm.yg)("inlineCode",{parentName:"p"},"null")," to disable drill-down actions."),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},'\n')),(0,esm.yg)(dist_esm.gG,{id:"props--drilldown-view",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),drilldownView_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},drilldownView:{control:{type:"select",options:["day","agenda"],defaultValue:src.Pp.DAY}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var DrilldownView=Template.bind({});DrilldownView.storyName="drilldownView",DrilldownView.args={defaultDate:new Date(2015,3,1),drilldownView:src.Pp.AGENDA,events:events.A,localizer:mLocalizer},DrilldownView.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},DrilldownView.parameters);var __namedExportsOrder=["DrilldownView"]},"./stories/props/elementProps.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ElementProps:function(){return ElementProps},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return elementProps_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"elementprops"},"elementProps"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"object"))),(0,esm.yg)("p",null,"Props passed to main calendar ",(0,esm.yg)("inlineCode",{parentName:"p"},"
"),"."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Note:")," Will not pass down ",(0,esm.yg)("inlineCode",{parentName:"p"},"className"),"."),(0,esm.yg)(dist_esm.gG,{id:"props--element-props",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;__webpack_require__("./stories/resources/propGetter.scss");var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),elementProps_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var ElementProps=Template.bind({});ElementProps.storyName="elementProps",ElementProps.args={defaultDate:new Date(2015,3,13),elementProps:{id:"my_scheduler"},events:events.A,localizer:mLocalizer},ElementProps.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},ElementProps.parameters);var __namedExportsOrder=["ElementProps"]},"./stories/props/endAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{EndAccessor:function(){return EndAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return endAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var src=__webpack_require__("./src/index.js"),storyDefaults=__webpack_require__("./stories/props/storyDefaults.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"endaccessor"},"endAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => Date")),(0,esm.yg)("li",{parentName:"ul"},"default: 'end'")),(0,esm.yg)("p",null,"The end date/time of the event. Must resolve to a JavaScript ",(0,esm.yg)("inlineCode",{parentName:"p"},"Date")," object."),(0,esm.yg)(dist_esm.gG,{id:"props--end-accessor",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),endAccessor_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var EndAccessor=Template.bind({});EndAccessor.storyName="endAccessor",EndAccessor.args=storyDefaults.o,EndAccessor.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},EndAccessor.parameters);var __namedExportsOrder=["EndAccessor"]},"./stories/props/eventPropGetter.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{EventPropGetter:function(){return EventPropGetter},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return eventPropGetter_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/core-js/modules/es.array.includes.js"),__webpack_require__("./node_modules/core-js/modules/es.string.includes.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"eventpropgetter"},"eventPropGetter"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (event: Object, start: Date, end: Date, isSelected: boolean) => {className?: string, style?: Object}"))),(0,esm.yg)("p",null,"Optionally provide a function that returns an object of className or style props to be applied to the the event node."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--event-prop-getter",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;__webpack_require__("./stories/resources/propGetter.scss");var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),eventPropGetter_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},EventPropGetter=function EventPropGetter(){var eventPropGetter=(0,react.useCallback)((function(event,start,end,isSelected){return Object.assign({},isSelected&&{style:{backgroundColor:"#000"}},moment_default()(start).hour()<12&&{className:"powderBlue"},event.title.includes("Meeting")&&{className:"darkGreen"})}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:new Date(2015,3,13),defaultView:src.Pp.WEEK,eventPropGetter:eventPropGetter,events:events.A,localizer:mLocalizer})})};EventPropGetter.displayName="EventPropGetter",EventPropGetter.storyName="eventPropGetter",EventPropGetter.parameters=Object.assign({storySource:{source:"function EventPropGetter() {\n const eventPropGetter = useCallback(\n (event, start, end, isSelected) => ({\n ...(isSelected && {\n style: {\n backgroundColor: '#000',\n },\n }),\n ...(moment(start).hour() < 12 && {\n className: 'powderBlue',\n }),\n ...(event.title.includes('Meeting') && {\n className: 'darkGreen',\n }),\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},EventPropGetter.parameters);var __namedExportsOrder=["EventPropGetter"];EventPropGetter.__docgenInfo={description:"",methods:[],displayName:"EventPropGetter"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/eventPropGetter.stories.js"]={name:"EventPropGetter",docgenInfo:EventPropGetter.__docgenInfo,path:"stories/props/eventPropGetter.stories.js"})},"./stories/props/events.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Events:function(){return Events},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return events_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"events"},"events"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"arrayOf(Event)")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"[]"))),(0,esm.yg)("p",null,"An array of event objects to display on the calendar. Events objects\ncan be any shape, as long as the Calendar knows how to retrieve the\nfollowing details of the event:"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"start time"),(0,esm.yg)("li",{parentName:"ul"},"end time"),(0,esm.yg)("li",{parentName:"ul"},"title"),(0,esm.yg)("li",{parentName:"ul"},'whether its an "all day" event or not'),(0,esm.yg)("li",{parentName:"ul"},"any resource the event may be related to")),(0,esm.yg)("p",null,'Each of these properties can be customized or generated dynamically by\nsetting the various "accessor" props. Without any configuration the default\nevent should look like:'),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"Event {\n title: string,\n start: Date,\n end: Date,\n allDay?: boolean\n resource?: any,\n}\n")),(0,esm.yg)(dist_esm.gG,{id:"props--events",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),events_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},defaultDate:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Events=Template.bind({});Events.storyName="events",Events.args={defaultDate:new Date(2015,3,13),events:events.A,localizer:mLocalizer},Events.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Events.parameters);var __namedExportsOrder=["Events"]},"./stories/props/formats.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Formats:function(){return Formats},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formats_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formats"},"formats"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"Object"))),(0,esm.yg)(addon_links_react.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"Localizer")," specific formats, tell the Calendar how to format and display dates and times.",(0,esm.yg)("p",null,"The ",(0,esm.yg)("inlineCode",{parentName:"p"},"format")," types are dependent on the configured localizer; both Moment and Globalize accept strings of tokens according to their own specification, such as: ",(0,esm.yg)("inlineCode",{parentName:"p"},"'DD mm yyyy'"),"."),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"const formats = useMemo(() => ({\n dateFormat: 'dd',\n\n dayFormat: (date, , localizer) =>\n localizer.format(date, 'DDD', culture),\n\n dayRangeHeaderFormat: ({ start, end }, culture, localizer) =>\n localizer.format(start, { date: 'short' }, culture) + ' — ' +\n localizer.format(end, { date: 'short' }, culture)\n}), [])\n\n\n")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formats_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},Formats=function Formats(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,1),formats:{dateFormat:"D",weekdayFormat:function weekdayFormat(date,culture,localizer){return localizer.format(date,"dddd",culture)},dayFormat:function dayFormat(date,culture,localizer){return localizer.format(date,"dddd Do",culture)},timeGutterFormat:function timeGutterFormat(date,culture,localizer){return localizer.format(date,"hh:mm a",culture)}}}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,formats:formats,localizer:mLocalizer})})};Formats.displayName="Formats",Formats.storyName="formats",Formats.parameters=Object.assign({storySource:{source:"function Formats() {\n const { defaultDate, formats } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 1),\n formats: {\n // the 'date' on each day cell of the 'month' view\n dateFormat: 'D',\n // the day of the week header in the 'month' view\n weekdayFormat: (date, culture, localizer) =>\n localizer.format(date, 'dddd', culture),\n // the day header in the 'week' and 'day' (Time Grid) views\n dayFormat: (date, culture, localizer) =>\n localizer.format(date, 'dddd Do', culture),\n // the time in the gutter in the Time Grid views\n timeGutterFormat: (date, culture, localizer) =>\n localizer.format(date, 'hh:mm a', culture),\n },\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},Formats.parameters);var __namedExportsOrder=["Formats"];Formats.__docgenInfo={description:"",methods:[],displayName:"Formats"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formats.stories.js"]={name:"Formats",docgenInfo:Formats.__docgenInfo,path:"stories/props/formats.stories.js"})},"./stories/props/formatsAgendaDateFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsAgendDateFormat:function(){return FormatsAgendDateFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsAgendaDateFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsagendadateformat"},"formats.agendaDateFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,"Dates displayed in the gutter of the Agenda ",(0,esm.yg)("inlineCode",{parentName:"p"},"view")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-agenda-date-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsAgendaDateFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsAgendDateFormat=function FormatsAgendDateFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{agendaDateFormat:function agendaDateFormat(date,culture,localizer){return localizer.format(date,"dddd MMMM Do",culture)}},views:[src.Pp.WEEK,src.Pp.DAY,src.Pp.AGENDA]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.AGENDA,events:events.A,formats:formats,localizer:mLocalizer,views:views})})};FormatsAgendDateFormat.displayName="FormatsAgendDateFormat",FormatsAgendDateFormat.storyName="formats.agendaDateFormat",FormatsAgendDateFormat.parameters=Object.assign({storySource:{source:"function FormatsAgendDateFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n agendaDateFormat: (date, culture, localizer) =>\n localizer.format(date, 'dddd MMMM Do', culture),\n },\n views: [Views.WEEK, Views.DAY, Views.AGENDA],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsAgendDateFormat.parameters);var __namedExportsOrder=["FormatsAgendDateFormat"];FormatsAgendDateFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsAgendDateFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsAgendaDateFormat.stories.js"]={name:"FormatsAgendDateFormat",docgenInfo:FormatsAgendDateFormat.__docgenInfo,path:"stories/props/formatsAgendaDateFormat.stories.js"})},"./stories/props/formatsAgendaHeaderFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsAgendHeaderFormat:function(){return FormatsAgendHeaderFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsAgendaHeaderFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsagendaheaderformat"},"formats.agendaHeaderFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'Toolbar header format for the Agenda view, e.g. "4/1/2015 — 5/1/2015"'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-agenda-header-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsAgendaHeaderFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsAgendHeaderFormat=function FormatsAgendHeaderFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{agendaHeaderFormat:function agendaHeaderFormat(_ref,culture,localizer){var start=_ref.start,end=_ref.end;return localizer.format(start,"dddd MMMM Do, YYYY",culture)+" - "+localizer.format(end,"dddd MMMM Do, YYYY",culture)}},views:[src.Pp.WEEK,src.Pp.DAY,src.Pp.AGENDA]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.AGENDA,events:events.A,formats:formats,localizer:mLocalizer,views:views})})};FormatsAgendHeaderFormat.displayName="FormatsAgendHeaderFormat",FormatsAgendHeaderFormat.storyName="formats.agendaHeaderFormat",FormatsAgendHeaderFormat.parameters=Object.assign({storySource:{source:"function FormatsAgendHeaderFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n agendaHeaderFormat: ({ start, end }, culture, localizer) =>\n localizer.format(start, 'dddd MMMM Do, YYYY', culture) +\n ' - ' +\n localizer.format(end, 'dddd MMMM Do, YYYY', culture),\n },\n views: [Views.WEEK, Views.DAY, Views.AGENDA],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsAgendHeaderFormat.parameters);var __namedExportsOrder=["FormatsAgendHeaderFormat"];FormatsAgendHeaderFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsAgendHeaderFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsAgendaHeaderFormat.stories.js"]={name:"FormatsAgendHeaderFormat",docgenInfo:FormatsAgendHeaderFormat.__docgenInfo,path:"stories/props/formatsAgendaHeaderFormat.stories.js"})},"./stories/props/formatsAgendaTimeFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsAgendTimeFormat:function(){return FormatsAgendTimeFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsAgendaTimeFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsagendatimeformat"},"formats.agendaTimeFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,"Time only (not range) displayed in the gutter of the Agenda ",(0,esm.yg)("inlineCode",{parentName:"p"},"view")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-agenda-time-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsAgendaTimeFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsAgendTimeFormat=function FormatsAgendTimeFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{agendaTimeFormat:function agendaTimeFormat(date,culture,localizer){return localizer.format(date,"hh:mm A",culture)}},views:[src.Pp.WEEK,src.Pp.DAY,src.Pp.AGENDA]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.AGENDA,events:events.A,formats:formats,localizer:mLocalizer,views:views})})};FormatsAgendTimeFormat.displayName="FormatsAgendTimeFormat",FormatsAgendTimeFormat.storyName="formats.agendaTimeFormat",FormatsAgendTimeFormat.parameters=Object.assign({storySource:{source:"function FormatsAgendTimeFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n agendaTimeFormat: (date, culture, localizer) =>\n localizer.format(date, 'hh:mm A', culture),\n },\n views: [Views.WEEK, Views.DAY, Views.AGENDA],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsAgendTimeFormat.parameters);var __namedExportsOrder=["FormatsAgendTimeFormat"];FormatsAgendTimeFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsAgendTimeFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsAgendaTimeFormat.stories.js"]={name:"FormatsAgendTimeFormat",docgenInfo:FormatsAgendTimeFormat.__docgenInfo,path:"stories/props/formatsAgendaTimeFormat.stories.js"})},"./stories/props/formatsAgendaTimeRangeFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsAgendaTimeRangeFormat:function(){return FormatsAgendaTimeRangeFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsAgendaTimeRangeFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsagendatimerangeformat"},"formats.agendaTimeRangeFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,"Time range displayed in the gutter of the Agenda ",(0,esm.yg)("inlineCode",{parentName:"p"},"view")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-agenda-time-range-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsAgendaTimeRangeFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsAgendaTimeRangeFormat=function FormatsAgendaTimeRangeFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{agendaTimeRangeFormat:function agendaTimeRangeFormat(_ref,culture,localizer){var start=_ref.start,end=_ref.end;return localizer.format(start,"hh:mm A",culture)+" - "+localizer.format(end,"hh:mm A",culture)}},views:[src.Pp.WEEK,src.Pp.DAY,src.Pp.AGENDA]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.AGENDA,events:events.A,formats:formats,localizer:mLocalizer,views:views})})};FormatsAgendaTimeRangeFormat.displayName="FormatsAgendaTimeRangeFormat",FormatsAgendaTimeRangeFormat.storyName="formats.agendaTimeRangeFormat",FormatsAgendaTimeRangeFormat.parameters=Object.assign({storySource:{source:"function FormatsAgendaTimeRangeFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n agendaTimeRangeFormat: ({ start, end }, culture, localizer) =>\n localizer.format(start, 'hh:mm A', culture) +\n ' - ' +\n localizer.format(end, 'hh:mm A', culture),\n },\n views: [Views.WEEK, Views.DAY, Views.AGENDA],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsAgendaTimeRangeFormat.parameters);var __namedExportsOrder=["FormatsAgendaTimeRangeFormat"];FormatsAgendaTimeRangeFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsAgendaTimeRangeFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsAgendaTimeRangeFormat.stories.js"]={name:"FormatsAgendaTimeRangeFormat",docgenInfo:FormatsAgendaTimeRangeFormat.__docgenInfo,path:"stories/props/formatsAgendaTimeRangeFormat.stories.js"})},"./stories/props/formatsDateFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsDateFormat:function(){return FormatsDateFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsDateFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsdateformat"},"formats.dateFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'Format for the day of the month heading in the Month view. e.g. "01", "02", "03", etc'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-date-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsDateFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsDateFormat=function FormatsDateFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,1),formats:{dateFormat:function dateFormat(date,culture,localizer){return localizer.format(date,"D",culture)}}}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,formats:formats,localizer:mLocalizer})})};FormatsDateFormat.displayName="FormatsDateFormat",FormatsDateFormat.storyName="formats.dateFormat",FormatsDateFormat.parameters=Object.assign({storySource:{source:"function FormatsDateFormat() {\n const { defaultDate, formats } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 1),\n formats: {\n dateFormat: (date, culture, localizer) =>\n localizer.format(date, 'D', culture),\n },\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsDateFormat.parameters);var __namedExportsOrder=["FormatsDateFormat"];FormatsDateFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsDateFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsDateFormat.stories.js"]={name:"FormatsDateFormat",docgenInfo:FormatsDateFormat.__docgenInfo,path:"stories/props/formatsDateFormat.stories.js"})},"./stories/props/formatsDayFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsDayFormat:function(){return FormatsDayFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsDayFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsdayformat"},"formats.dayFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'A day of the week format for Week and Day headings, e.g. "Wed 01/04"'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-day-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsDayFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsDayFormat=function FormatsDayFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{dayFormat:function dayFormat(date,culture,localizer){return localizer.format(date,"ddd MM/DD",culture)}},views:[src.Pp.WEEK,src.Pp.DAY]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,formats:formats,localizer:mLocalizer,views:views})})};FormatsDayFormat.displayName="FormatsDayFormat",FormatsDayFormat.storyName="formats.dayFormat",FormatsDayFormat.parameters=Object.assign({storySource:{source:"function FormatsDayFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n dayFormat: (date, culture, localizer) =>\n localizer.format(date, 'ddd MM/DD', culture),\n },\n views: [Views.WEEK, Views.DAY],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsDayFormat.parameters);var __namedExportsOrder=["FormatsDayFormat"];FormatsDayFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsDayFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsDayFormat.stories.js"]={name:"FormatsDayFormat",docgenInfo:FormatsDayFormat.__docgenInfo,path:"stories/props/formatsDayFormat.stories.js"})},"./stories/props/formatsDayHeaderFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsDayHeaderFormat:function(){return FormatsDayHeaderFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsDayHeaderFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsdayheaderformat"},"formats.dayHeaderFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'Toolbar header format for the Day view, e.g. "Wednesday Apr 01"'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-day-header-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsDayHeaderFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsDayHeaderFormat=function FormatsDayHeaderFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{dayHeaderFormat:function dayHeaderFormat(date,culture,localizer){return localizer.format(date,"dddd MMMM Do",culture)}},views:[src.Pp.WEEK,src.Pp.DAY]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.DAY,events:events.A,formats:formats,localizer:mLocalizer,views:views})})};FormatsDayHeaderFormat.displayName="FormatsDayHeaderFormat",FormatsDayHeaderFormat.storyName="formats.dayHeaderFormat",FormatsDayHeaderFormat.parameters=Object.assign({storySource:{source:"function FormatsDayHeaderFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n dayHeaderFormat: (date, culture, localizer) =>\n localizer.format(date, 'dddd MMMM Do', culture),\n },\n views: [Views.WEEK, Views.DAY],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsDayHeaderFormat.parameters);var __namedExportsOrder=["FormatsDayHeaderFormat"];FormatsDayHeaderFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsDayHeaderFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsDayHeaderFormat.stories.js"]={name:"FormatsDayHeaderFormat",docgenInfo:FormatsDayHeaderFormat.__docgenInfo,path:"stories/props/formatsDayHeaderFormat.stories.js"})},"./stories/props/formatsDayRangeHeaderFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsDayRangeHeaderFormat:function(){return FormatsDayRangeHeaderFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsDayRangeHeaderFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsdayrangeheaderformat"},"formats.dayRangeHeaderFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'Toolbar header format for the Week views, e.g. "Mar 29 - Apr 04"'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-day-range-header-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsDayRangeHeaderFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsDayRangeHeaderFormat=function FormatsDayRangeHeaderFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{dayRangeHeaderFormat:function dayRangeHeaderFormat(_ref,culture,localizer){var start=_ref.start,end=_ref.end;return localizer.format(start,"ddd D",culture)+" - "+localizer.format(end,"ddd D",culture)}},views:[src.Pp.WEEK,src.Pp.DAY]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,formats:formats,localizer:mLocalizer,views:views})})};FormatsDayRangeHeaderFormat.displayName="FormatsDayRangeHeaderFormat",FormatsDayRangeHeaderFormat.storyName="formats.dayRangeHeaderFormat",FormatsDayRangeHeaderFormat.parameters=Object.assign({storySource:{source:"function FormatsDayRangeHeaderFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n dayRangeHeaderFormat: ({ start, end }, culture, localizer) =>\n localizer.format(start, 'ddd D', culture) +\n ' - ' +\n localizer.format(end, 'ddd D', culture),\n },\n views: [Views.WEEK, Views.DAY],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsDayRangeHeaderFormat.parameters);var __namedExportsOrder=["FormatsDayRangeHeaderFormat"];FormatsDayRangeHeaderFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsDayRangeHeaderFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsDayRangeHeaderFormat.stories.js"]={name:"FormatsDayRangeHeaderFormat",docgenInfo:FormatsDayRangeHeaderFormat.__docgenInfo,path:"stories/props/formatsDayRangeHeaderFormat.stories.js"})},"./stories/props/formatsEventTimeRangeEndFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsEventTimeRangeEndFormat:function(){return FormatsEventTimeRangeEndFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsEventTimeRangeEndFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatseventtimerangeendformat"},"formats.eventTimeRangeEndFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,"An optional event time range for events that continue onto another day. Used with ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"show-multi-day-times",mdxType:"LinkTo"},"showMultiDayTimes"),"."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-event-time-range-end-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsEventTimeRangeEndFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsEventTimeRangeEndFormat=function FormatsEventTimeRangeEndFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{eventTimeRangeEndFormat:function eventTimeRangeEndFormat(date,culture,localizer){return" << "+localizer.format(date,"hh:mm A",culture)}}}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,formats:formats,localizer:mLocalizer,showMultiDayTimes:!0})})};FormatsEventTimeRangeEndFormat.displayName="FormatsEventTimeRangeEndFormat",FormatsEventTimeRangeEndFormat.storyName="formats.eventTimeRangeEndFormat",FormatsEventTimeRangeEndFormat.parameters=Object.assign({storySource:{source:"function FormatsEventTimeRangeEndFormat() {\n const { defaultDate, formats } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n eventTimeRangeEndFormat: (date, culture, localizer) =>\n ' << ' + localizer.format(date, 'hh:mm A', culture),\n },\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsEventTimeRangeEndFormat.parameters);var __namedExportsOrder=["FormatsEventTimeRangeEndFormat"];FormatsEventTimeRangeEndFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsEventTimeRangeEndFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsEventTimeRangeEndFormat.stories.js"]={name:"FormatsEventTimeRangeEndFormat",docgenInfo:FormatsEventTimeRangeEndFormat.__docgenInfo,path:"stories/props/formatsEventTimeRangeEndFormat.stories.js"})},"./stories/props/formatsEventTimeRangeFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsEventTimeRangeFormat:function(){return FormatsEventTimeRangeFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsEventTimeRangeFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatseventtimerangeformat"},"formats.eventTimeRangeFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,"Time range displayed on events in Time Grid views."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-event-time-range-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsEventTimeRangeFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsEventTimeRangeFormat=function FormatsEventTimeRangeFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{eventTimeRangeFormat:function eventTimeRangeFormat(_ref,culture,localizer){var start=_ref.start,end=_ref.end;return localizer.format(start,"hh:mm a",culture)+" - "+localizer.format(end,"hh:mm a",culture)}}}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,formats:formats,localizer:mLocalizer})})};FormatsEventTimeRangeFormat.displayName="FormatsEventTimeRangeFormat",FormatsEventTimeRangeFormat.storyName="formats.eventTimeRangeFormat",FormatsEventTimeRangeFormat.parameters=Object.assign({storySource:{source:"function FormatsEventTimeRangeFormat() {\n const { defaultDate, formats } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n eventTimeRangeFormat: ({ start, end }, culture, localizer) =>\n localizer.format(start, 'hh:mm a', culture) +\n ' - ' +\n localizer.format(end, 'hh:mm a', culture),\n },\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsEventTimeRangeFormat.parameters);var __namedExportsOrder=["FormatsEventTimeRangeFormat"];FormatsEventTimeRangeFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsEventTimeRangeFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsEventTimeRangeFormat.stories.js"]={name:"FormatsEventTimeRangeFormat",docgenInfo:FormatsEventTimeRangeFormat.__docgenInfo,path:"stories/props/formatsEventTimeRangeFormat.stories.js"})},"./stories/props/formatsEventTimeRangeStartFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsEventTimeRangeStartFormat:function(){return FormatsEventTimeRangeStartFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsEventTimeRangeStartFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatseventtimerangestartformat"},"formats.eventTimeRangeStartFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,"An optional event time range for events that continue onto another day. Used with ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"show-multi-day-times",mdxType:"LinkTo"},"showMultiDayTimes"),"."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-event-time-range-start-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsEventTimeRangeStartFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsEventTimeRangeStartFormat=function FormatsEventTimeRangeStartFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{eventTimeRangeStartFormat:function eventTimeRangeStartFormat(date,culture,localizer){return localizer.format(date,"hh:mm A",culture)+" >> "}}}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,formats:formats,localizer:mLocalizer,showMultiDayTimes:!0})})};FormatsEventTimeRangeStartFormat.displayName="FormatsEventTimeRangeStartFormat",FormatsEventTimeRangeStartFormat.storyName="formats.eventTimeRangeStartFormat",FormatsEventTimeRangeStartFormat.parameters=Object.assign({storySource:{source:"function FormatsEventTimeRangeStartFormat() {\n const { defaultDate, formats } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n eventTimeRangeStartFormat: (date, culture, localizer) =>\n localizer.format(date, 'hh:mm A', culture) + ' >> ',\n },\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsEventTimeRangeStartFormat.parameters);var __namedExportsOrder=["FormatsEventTimeRangeStartFormat"];FormatsEventTimeRangeStartFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsEventTimeRangeStartFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsEventTimeRangeStartFormat.stories.js"]={name:"FormatsEventTimeRangeStartFormat",docgenInfo:FormatsEventTimeRangeStartFormat.__docgenInfo,path:"stories/props/formatsEventTimeRangeStartFormat.stories.js"})},"./stories/props/formatsMonthHeaderFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsMonthHeaderFormat:function(){return FormatsMonthHeaderFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsMonthHeaderFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsmonthheaderformat"},"formats.monthHeaderFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'Toolbar header format for the Month view, e.g "2015 April"'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-month-header-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsMonthHeaderFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsMonthHeaderFormat=function FormatsMonthHeaderFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,1),formats:{monthHeaderFormat:function monthHeaderFormat(date,culture,localizer){return localizer.format(date,"MMMM [']YY",culture)}}}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,formats:formats,localizer:mLocalizer})})};FormatsMonthHeaderFormat.displayName="FormatsMonthHeaderFormat",FormatsMonthHeaderFormat.storyName="formats.monthHeaderFormat",FormatsMonthHeaderFormat.parameters=Object.assign({storySource:{source:'function FormatsMonthHeaderFormat() {\n const { defaultDate, formats } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 1),\n formats: {\n monthHeaderFormat: (date, culture, localizer) =>\n localizer.format(date, `MMMM [\']YY`, culture),\n },\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}'}},FormatsMonthHeaderFormat.parameters);var __namedExportsOrder=["FormatsMonthHeaderFormat"];FormatsMonthHeaderFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsMonthHeaderFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsMonthHeaderFormat.stories.js"]={name:"FormatsMonthHeaderFormat",docgenInfo:FormatsMonthHeaderFormat.__docgenInfo,path:"stories/props/formatsMonthHeaderFormat.stories.js"})},"./stories/props/formatsSelectRangeFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsSelectRangeFormat:function(){return FormatsSelectRangeFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsSelectRangeFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsselectrangeformat"},"formats.selectRangeFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'A time range format shown in the highlighted area when selecting time slots, e.g "08:00 am — 12:00 pm"'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-select-range-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsSelectRangeFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsSelectRangeFormat=function FormatsSelectRangeFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{selectRangeFormat:function selectRangeFormat(_ref,culture,localizer){var start=_ref.start,end=_ref.end;return localizer.format(start,"hh:mm a",culture)+" - "+localizer.format(end,"hh:mm a",culture)}},views:[src.Pp.WEEK,src.Pp.DAY]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,formats:formats,localizer:mLocalizer,selectable:!0,views:views})})};FormatsSelectRangeFormat.displayName="FormatsSelectRangeFormat",FormatsSelectRangeFormat.storyName="formats.selectRangeFormat",FormatsSelectRangeFormat.parameters=Object.assign({storySource:{source:"function FormatsSelectRangeFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n selectRangeFormat: ({ start, end }, culture, localizer) =>\n localizer.format(start, 'hh:mm a', culture) +\n ' - ' +\n localizer.format(end, 'hh:mm a', culture),\n },\n views: [Views.WEEK, Views.DAY],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsSelectRangeFormat.parameters);var __namedExportsOrder=["FormatsSelectRangeFormat"];FormatsSelectRangeFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsSelectRangeFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsSelectRangeFormat.stories.js"]={name:"FormatsSelectRangeFormat",docgenInfo:FormatsSelectRangeFormat.__docgenInfo,path:"stories/props/formatsSelectRangeFormat.stories.js"})},"./stories/props/formatsTimeGutterFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsTimeGutterFormat:function(){return FormatsTimeGutterFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsTimeGutterFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatstimegutterformat"},"formats.timeGutterFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'The timestamp cell formats in Week and Time views, e.g. "4:00 AM"'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-time-gutter-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsTimeGutterFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsTimeGutterFormat=function FormatsTimeGutterFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{timeGutterFormat:function timeGutterFormat(date,culture,localizer){return localizer.format(date,"hh:mm a",culture)}},views:[src.Pp.WEEK,src.Pp.DAY]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,formats:formats,localizer:mLocalizer,views:views})})};FormatsTimeGutterFormat.displayName="FormatsTimeGutterFormat",FormatsTimeGutterFormat.storyName="formats.timeGutterFormat",FormatsTimeGutterFormat.parameters=Object.assign({storySource:{source:"function FormatsTimeGutterFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n timeGutterFormat: (date, culture, localizer) =>\n localizer.format(date, 'hh:mm a', culture),\n },\n views: [Views.WEEK, Views.DAY],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsTimeGutterFormat.parameters);var __namedExportsOrder=["FormatsTimeGutterFormat"];FormatsTimeGutterFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsTimeGutterFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsTimeGutterFormat.stories.js"]={name:"FormatsTimeGutterFormat",docgenInfo:FormatsTimeGutterFormat.__docgenInfo,path:"stories/props/formatsTimeGutterFormat.stories.js"})},"./stories/props/formatsWeekdayFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsWeekdayFormat:function(){return FormatsWeekdayFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsWeekdayFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsweekdayformat"},"formats.weekdayFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'Week day name format for the Month week day headings, e.g: "Sun", "Mon", "Tue", etc'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-weekday-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsWeekdayFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsWeekdayFormat=function FormatsWeekdayFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,1),formats:{weekdayFormat:function weekdayFormat(date,culture,localizer){return localizer.format(date,"dddd",culture)}}}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,formats:formats,localizer:mLocalizer})})};FormatsWeekdayFormat.displayName="FormatsWeekdayFormat",FormatsWeekdayFormat.storyName="formats.weekdayFormat",FormatsWeekdayFormat.parameters=Object.assign({storySource:{source:"function FormatsWeekdayFormat() {\n const { defaultDate, formats } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 1),\n formats: {\n weekdayFormat: (date, culture, localizer) =>\n localizer.format(date, 'dddd', culture),\n },\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsWeekdayFormat.parameters);var __namedExportsOrder=["FormatsWeekdayFormat"];FormatsWeekdayFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsWeekdayFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsWeekdayFormat.stories.js"]={name:"FormatsWeekdayFormat",docgenInfo:FormatsWeekdayFormat.__docgenInfo,path:"stories/props/formatsWeekdayFormat.stories.js"})},"./stories/props/getDrilldownView.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{GetDrilldownView:function(){return GetDrilldownView},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return getDrilldownView_stories}});__webpack_require__("./node_modules/core-js/modules/es.array.includes.js"),__webpack_require__("./node_modules/core-js/modules/es.string.includes.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"getdrilldownview"},"getDrilldownView"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (targetDate: Date, currentViewName: string, configuredViewNames: Views[]) => string|null"))),(0,esm.yg)("p",null,"Functionally equivalent to drilldownView, but accepts a function that can return a view name. It's useful for customizing the drill-down actions depending on the target date and triggering view."),(0,esm.yg)("p",null,"Return null to disable drill-down actions."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--get-drilldown-view",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),getDrilldownView_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},GetDrilldownView=function GetDrilldownView(){var getDrilldownView=(0,react.useCallback)((function(targetDate,currentViewName,configuredViewNames){return"month"===currentViewName&&configuredViewNames.includes("week")?"week":null}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,getDrilldownView:getDrilldownView,localizer:mLocalizer})})};GetDrilldownView.displayName="GetDrilldownView",GetDrilldownView.storyName="getDrilldownView",GetDrilldownView.parameters=Object.assign({storySource:{source:"function GetDrilldownView() {\n const getDrilldownView = useCallback(\n (targetDate, currentViewName, configuredViewNames) => {\n if (currentViewName === 'month' && configuredViewNames.includes('week'))\n return 'week'\n\n return null\n },\n []\n )\n\n const defaultDate = useMemo(() => new Date(2015, 3, 1), [])\n\n return (\n
\n \n
\n )\n}"}},GetDrilldownView.parameters);var __namedExportsOrder=["GetDrilldownView"];GetDrilldownView.__docgenInfo={description:"",methods:[],displayName:"GetDrilldownView"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/getDrilldownView.stories.js"]={name:"GetDrilldownView",docgenInfo:GetDrilldownView.__docgenInfo,path:"stories/props/getDrilldownView.stories.js"})},"./stories/props/getNow.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{GetNow:function(){return GetNow},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return getNow_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"getnow"},"getNow"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function () => Date")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"() => new Date()"))),(0,esm.yg)("p",null,"Determines the current date/time which is highlighted in the views."),(0,esm.yg)("p",null,"The value affects which day is shaded and which time is shown as the current time. It also affects the date used by the Today button in the toolbar."),(0,esm.yg)("p",null,"Providing a value here can be useful when you are implementing time zones using the ",(0,esm.yg)("inlineCode",{parentName:"p"},"startAccessor")," and ",(0,esm.yg)("inlineCode",{parentName:"p"},"endAccessor")," properties."),(0,esm.yg)(dist_esm.gG,{id:"props--get-now",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),getNow_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var GetNow=Template.bind({});GetNow.storyName="getNow",GetNow.args={events:events.A,getNow:function getNow(){return new Date(2015,3,13)},localizer:mLocalizer},GetNow.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},GetNow.parameters);var __namedExportsOrder=["GetNow"]},"./stories/props/length.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Length:function(){return Length},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return length_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"length"},"length"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"number")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"30"))),(0,esm.yg)("p",null,"Determines the end date from date prop in the agenda view date prop + length (in number of days) = end date."),(0,esm.yg)(dist_esm.gG,{id:"props--length",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),length_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}},length:"number"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Length=Template.bind({});Length.storyName="length",Length.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.AGENDA,events:events.A,length:14,localizer:mLocalizer},Length.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Length.parameters);var __namedExportsOrder=["Length"]},"./stories/props/localizer.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Localizer:function(){return Localizer},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return localizer_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"localizer"},"localizer"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"instanceOf(DateLocalizer)")," ",(0,esm.yg)("strong",{parentName:"li"},"required"))),(0,esm.yg)("p",null,"The localizer used for ",(0,esm.yg)("strong",{parentName:"p"},"formatting dates")," and times according to the ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"formats",mdxType:"LinkTo"},"formats")," and ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"culture",mdxType:"LinkTo"},"culture"),". To format buttons and messaging use the ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"messages",mdxType:"LinkTo"},"messages")," prop."),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"// When using `Day.js`\nimport { dayjsLocalizer } from 'react-big-calendar'\nimport dayjs from 'dayjs'\n// and, for optional time zone support\nimport timezone from 'dayjs/plugin/timezone'\n\ndayjs.extend(timezone)\n// end optional time zone support\n\n// Note that the dayjsLocalizer extends Day.js with the following plugins:\n// - IsBetween\n// - IsSameOrAfter\n// - IsSameOrBefore\n// - LocaleData\n// - LocalizedFormat\n// - MinMax\n// - UTC\n\nconst localizer = dayjsLocalizer(dayjs)\n")),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"// When using `Globalize`\nimport { globalizeLocalizer } from 'react-big-calendar'\nimport globalize from 'globalize'\n\nconst localizer = globalizeLocalizer(globalize)\n")),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"// When using `Luxon`\nimport { luxonLocalizer } from 'react-big-calendar'\nimport { DateTime, Settings } from 'luxon'\n// only use `Settings` if you require optional time zone support\nSettings.defaultZone = 'America/Los_Angeles'\n// end optional time zone support\n\n// Luxon uses the Intl API, which currently does not contain `weekInfo`\n// to determine which weekday is the start of the week by `culture`.\n// The `luxonLocalizer` defaults this to Sunday, which differs from\n// the Luxon default of Monday. The localizer requires this option\n// to change the display, and the date math for determining the\n// start of a week. Luxon uses non-zero based values for `weekday`.\nconst localizer = luxonLocalizer(DateTime, { firstDayOfWeek: 7 })\n")),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"// When using `moment`\nimport { momentLocalizer } from 'react-big-calendar'\nimport moment from 'moment'\n// and, for optional time zone support\nimport 'moment-timezone'\n\nmoment.tz.setDefault('America/Los_Angeles')\n// end optional time zone support\n\nconst localizer = momentLocalizer(moment)\n")),(0,esm.yg)("p",null,"See the ",(0,esm.yg)(addon_links_react.A,{kind:"examples",story:"example-5",mdxType:"LinkTo"},"Localization Example")," for another example of combining ",(0,esm.yg)("inlineCode",{parentName:"p"},"rtl"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"localizer"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"culture")," and ",(0,esm.yg)("inlineCode",{parentName:"p"},"messages"),"."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--localizer",mdxType:"Story"})),(0,esm.yg)("h2",{id:"more-information"},"More Information"),(0,esm.yg)("p",null,"The ",(0,esm.yg)("inlineCode",{parentName:"p"},"localizer")," can be used for date math in a number of ways. Look at the ",(0,esm.yg)(addon_links_react.A,{kind:"guides-localizers",mdxType:"LinkTo"},"Localizer Guide")," for more information."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),localizer_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}},decorators:[function(Story){return(0,jsx_runtime.jsx)("div",{style:{height:800},children:(0,jsx_runtime.jsx)(Story,{})})}]},Localizer=function Localizer(){var localizer=(0,react.useMemo)((function(){return(0,src.ye)(moment_default())}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:new Date(2015,3,13),events:events.A,localizer:localizer})})};Localizer.displayName="Localizer",Localizer.storyName="localizer *",Localizer.parameters=Object.assign({storySource:{source:'function Localizer() {\n const localizer = useMemo(() => momentLocalizer(moment), [])\n\n return (\n
\n \n
\n )\n}'}},Localizer.parameters);var __namedExportsOrder=["Localizer"];Localizer.__docgenInfo={description:"",methods:[],displayName:"Localizer"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/localizer.stories.js"]={name:"Localizer",docgenInfo:Localizer.__docgenInfo,path:"stories/props/localizer.stories.js"})},"./stories/props/longPressThreshold.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{LongPressThreshold:function(){return LongPressThreshold},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return longPressThreshold_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"longpressthreshold"},"longPressThreshold"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"number")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"250"))),(0,esm.yg)("p",null,'Specifies the number of miliseconds the user must press and hold on the screen for a touch to be considered a "long press." Long presses are used for time slot selection on touch devices.'),(0,esm.yg)(dist_esm.gG,{id:"props--long-press-threshold",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),longPressThreshold_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},longPressThreshold:"number"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var LongPressThreshold=Template.bind({});LongPressThreshold.storyName="longPressThreshold",LongPressThreshold.args={defaultDate:new Date(2015,3,13),events:events.A,localizer:mLocalizer,longPressThreshold:250},LongPressThreshold.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},LongPressThreshold.parameters);var __namedExportsOrder=["LongPressThreshold"]},"./stories/props/max.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Max:function(){return Max},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return max_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"max"},"max"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"new Date(1972, 0, 1, 23, 59, 59)"))),(0,esm.yg)("p",null,"Constrains the maximum time of the Day and Week views."),(0,esm.yg)(dist_esm.gG,{id:"props--max",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),max_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}},events:{control:{type:null}},max:{control:{type:"date"}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Max=Template.bind({});Max.storyName="max",Max.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.WEEK,events:events.A,localizer:mLocalizer,max:new Date(1972,0,1,20,59,59)},Max.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Max.parameters);var __namedExportsOrder=["Max"]},"./stories/props/messages.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Messages:function(){return Messages},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return messages_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"messages"},"messages"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"Object"))),(0,esm.yg)("p",null,"String messages used throughout the component, override to provide localizations for button text, ",(0,esm.yg)("inlineCode",{parentName:"p"},"title")," attributes and more."),(0,esm.yg)("p",null,"defualts"),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"{\n date: 'Date',\n time: 'Time',\n event: 'Event',\n allDay: 'All Day',\n week: 'Week',\n work_week: 'Work Week',\n day: 'Day',\n month: 'Month',\n previous: 'Back',\n next: 'Next',\n yesterday: 'Yesterday',\n tomorrow: 'Tomorrow',\n today: 'Today',\n agenda: 'Agenda',\n\n noEventsInRange: 'There are no events in this range.',\n /**\n * params {total} count of remaining events \n * params {remainingEvents} remaining events \n * params {events} all events in day\n */\n showMore: (total, remainingEvents, events) => `+${total} más`,\n}\n")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--messages",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),messages_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},Messages=function Messages(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),messages:{week:"Semana",work_week:"Semana de trabajo",day:"Día",month:"Mes",previous:"Atrás",next:"Después",today:"Hoy",agenda:"El Diario",showMore:function showMore(total){return"+".concat(total," más")}}}}),[]),defaultDate=_useMemo.defaultDate,messages=_useMemo.messages;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,messages:messages})})};Messages.displayName="Messages",Messages.storyName="messages",Messages.parameters=Object.assign({storySource:{source:"function Messages() {\n const { defaultDate, messages } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n messages: {\n week: 'Semana',\n work_week: 'Semana de trabajo',\n day: 'Día',\n month: 'Mes',\n previous: 'Atrás',\n next: 'Después',\n today: 'Hoy',\n agenda: 'El Diario',\n\n showMore: (total) => `+${total} más`,\n },\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},Messages.parameters);var __namedExportsOrder=["Messages"];Messages.__docgenInfo={description:"",methods:[],displayName:"Messages"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/messages.stories.js"]={name:"Messages",docgenInfo:Messages.__docgenInfo,path:"stories/props/messages.stories.js"})},"./stories/props/min.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Min:function(){return Min},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return min_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"min"},"min"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"new Date(1972, 0, 1, 0, 0, 0, 0)"))),(0,esm.yg)("p",null,"Constrains the minimum time of the Day and Week views."),(0,esm.yg)(dist_esm.gG,{id:"props--min",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),min_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}},events:{control:{type:null}},min:{control:{type:"date"}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Min=Template.bind({});Min.storyName="min",Min.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.WEEK,events:events.A,localizer:mLocalizer,min:new Date(1972,0,1,8)},Min.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Min.parameters);var __namedExportsOrder=["Min"]},"./stories/props/onDoubleClickEvent.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnDoubleClickEvent:function(){return OnDoubleClickEvent},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onDoubleClickEvent_stories}});__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"ondoubleclickevent"},"onDoubleClickEvent"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (event: Object) => any"))),(0,esm.yg)("p",null,"Callback fired when a calendar event is clicked twice. (i.e.: an ",(0,esm.yg)("inlineCode",{parentName:"p"},"onDoubleClick")," handler)."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Note:")," The ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")," prop is ",(0,esm.yg)("em",{parentName:"p"},"not")," required for this prop to function."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Important:")," The event passed into the function is the Calendar Event, not the SyntheticEvent expected by most click handlers."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-double-click-event",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onDoubleClickEvent_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}};function buildMessage(calEvent,eventName){return"[".concat(eventName,"] an 'event' selection was made with:\n ").concat(JSON.stringify(calEvent,null,2))}var OnDoubleClickEvent=function OnDoubleClickEvent(){var clickRef=(0,react.useRef)(null);(0,react.useEffect)((function(){return function(){window.clearTimeout(null==clickRef?void 0:clickRef.current)}}),[]);var onSelectEvent=(0,react.useCallback)((function(calEvent){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){window.alert(buildMessage(calEvent,"onSelectEvent"))}),250)}),[]),onDoubleClickEvent=(0,react.useCallback)((function(calEvent){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){window.alert(buildMessage(calEvent,"onDoubleClickEvent"))}),250)}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,onDoubleClickEvent:onDoubleClickEvent,onSelectEvent:onSelectEvent})})};OnDoubleClickEvent.displayName="OnDoubleClickEvent",OnDoubleClickEvent.storyName="onDoubleClickEvent",OnDoubleClickEvent.parameters=Object.assign({storySource:{source:"function OnDoubleClickEvent() {\n const clickRef = useRef(null)\n\n useEffect(() => {\n /**\n * What Is This?\n * This is to prevent a memory leak, in the off chance that you\n * teardown your interface prior to the timed method being called.\n */\n return () => {\n window.clearTimeout(clickRef?.current)\n }\n }, [])\n\n const onSelectEvent = useCallback((calEvent) => {\n /**\n * Here we are waiting 250 milliseconds (use what you want) prior to firing\n * our method. Why? Because both 'click' and 'doubleClick'\n * would fire, in the event of a 'doubleClick'. By doing\n * this, the 'click' handler is overridden by the 'doubleClick'\n * action.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n window.alert(buildMessage(calEvent, 'onSelectEvent'))\n }, 250)\n }, [])\n\n const onDoubleClickEvent = useCallback((calEvent) => {\n /**\n * Notice our use of the same ref as above.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n window.alert(buildMessage(calEvent, 'onDoubleClickEvent'))\n }, 250)\n }, [])\n\n const defaultDate = useMemo(() => new Date(2015, 3, 1), [])\n\n return (\n
\n \n
\n )\n}"}},OnDoubleClickEvent.parameters);var __namedExportsOrder=["OnDoubleClickEvent"];OnDoubleClickEvent.__docgenInfo={description:"",methods:[],displayName:"OnDoubleClickEvent"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onDoubleClickEvent.stories.js"]={name:"OnDoubleClickEvent",docgenInfo:OnDoubleClickEvent.__docgenInfo,path:"stories/props/onDoubleClickEvent.stories.js"})},"./stories/props/onDrillDown.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnDrillDown:function(){return OnDrillDown},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onDrillDown_stories}});var slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"ondrilldown"},"onDrillDown"),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-drill-down",mdxType:"Story"})),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date) => // do something"))),(0,esm.yg)("p",null,"Callback fired when date header, or the truncated event links are clicked. When included, it will override the default drilldown behavior."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onDrillDown_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},OnDrillDown=function OnDrillDown(){var _useState=(0,react.useState)(src.Pp.MONTH),_useState2=(0,slicedToArray.A)(_useState,2),view=_useState2[0],setView=_useState2[1],_useState3=(0,react.useState)(new Date(2015,3,13)),_useState4=(0,slicedToArray.A)(_useState3,2),date=_useState4[0],setDate=_useState4[1],onNavigate=(0,react.useCallback)((function(newDate){return setDate(newDate)}),[setDate]),onView=(0,react.useCallback)((function(newView){return setView(newView)}),[setView]),onDrillDown=(0,react.useCallback)((function(newDate){setDate(newDate),setView(src.Pp.AGENDA)}),[setDate,setView]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{date:date,events:events.A,localizer:mLocalizer,onDrillDown:onDrillDown,onNavigate:onNavigate,onView:onView,view:view})})};OnDrillDown.displayName="OnDrillDown",OnDrillDown.storyName="onDrillDown",OnDrillDown.parameters=Object.assign({storySource:{source:'function OnDrillDown() {\n const [view, setView] = useState(Views.MONTH)\n const [date, setDate] = useState(new Date(2015, 3, 13))\n const onNavigate = useCallback((newDate) => setDate(newDate), [setDate])\n const onView = useCallback((newView) => setView(newView), [setView])\n const onDrillDown = useCallback(\n (newDate) => {\n setDate(newDate)\n setView(Views.AGENDA)\n },\n [setDate, setView]\n )\n return (\n
\n \n
\n )\n}'}},OnDrillDown.parameters);var __namedExportsOrder=["OnDrillDown"];OnDrillDown.__docgenInfo={description:"",methods:[],displayName:"OnDrillDown"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onDrillDown.stories.js"]={name:"OnDrillDown",docgenInfo:OnDrillDown.__docgenInfo,path:"stories/props/onDrillDown.stories.js"})},"./stories/props/onKeyPressEvent.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnKeyPressEvent:function(){return OnKeyPressEvent},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onKeyPressEvent_stories}});__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"onkeypressevent"},"onKeyPressEvent"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (event: Object, e: SyntheticEvent) => void"))),(0,esm.yg)("p",null,"Callback fired when a focused calendar event receives a key press."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-key-press-event",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onKeyPressEvent_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}};var OnKeyPressEvent=function OnKeyPressEvent(){var pressRef=(0,react.useRef)(null);(0,react.useEffect)((function(){return function(){window.clearTimeout(null==pressRef?void 0:pressRef.current)}}),[]);var onKeyPressEvent=(0,react.useCallback)((function(event,keypressEvent){pressRef.current=window.setTimeout((function(){window.alert(function buildMessage(event,_ref){var altKey=_ref.altKey,ctrlKey=_ref.ctrlKey,shiftKey=_ref.shiftKey,metaKey=_ref.metaKey,key=_ref.key,prefix="";return altKey?prefix="ALT + ":ctrlKey?prefix="CTRL + ":shiftKey?prefix="SHIFT + ":metaKey&&(prefix="CMD + "),'You pressed on the "'.concat(prefix).concat(key,'" on "event":\nJSON.stringify(event, null, 2)')}(0,keypressEvent))}),250)}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,13)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,onKeyPressEvent:onKeyPressEvent})})};OnKeyPressEvent.displayName="OnKeyPressEvent",OnKeyPressEvent.storyName="onKeypressEvent",OnKeyPressEvent.parameters=Object.assign({storySource:{source:'function OnKeyPressEvent() {\n const pressRef = useRef(null)\n\n useEffect(() => {\n return () => {\n // To prevent possible memory leak on unmount\n window.clearTimeout(pressRef?.current)\n }\n }, [])\n\n const onKeyPressEvent = useCallback((event, keypressEvent) => {\n /**\n * We delay our response to capture ctrl/shift/alt + key\n * *Storybook will swallow some presses from it\'s own built-ins\n */\n pressRef.current = window.setTimeout(() => {\n window.alert(buildMessage(event, keypressEvent))\n }, 250)\n }, [])\n\n const defaultDate = useMemo(() => new Date(2015, 3, 13), [])\n\n return (\n
\n \n
\n )\n}'}},OnKeyPressEvent.parameters);var __namedExportsOrder=["OnKeyPressEvent"];OnKeyPressEvent.__docgenInfo={description:"",methods:[],displayName:"OnKeyPressEvent"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onKeyPressEvent.stories.js"]={name:"OnKeyPressEvent",docgenInfo:OnKeyPressEvent.__docgenInfo,path:"stories/props/onKeyPressEvent.stories.js"})},"./stories/props/onNavigate.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnNavigate:function(){return OnNavigate},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onNavigate_stories}});var slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"onnavigate"},"onNavigate"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function")),(0,esm.yg)("li",{parentName:"ul"},"controls: ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"date",mdxType:"LinkTo"},"date")),(0,esm.yg)("li",{parentName:"ul"},"example: ",(0,esm.yg)("inlineCode",{parentName:"li"},"(newDate) => setDate(newDate)"))),(0,esm.yg)("p",null,"Callback fired when the ",(0,esm.yg)("inlineCode",{parentName:"p"},"date")," value changes. When included it is used to 'control' the ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"date",mdxType:"LinkTo"},"date")," prop value."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-navigate",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onNavigate_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},OnNavigate=function OnNavigate(){var _useState=(0,react.useState)(new Date(2015,3,1)),_useState2=(0,slicedToArray.A)(_useState,2),date=_useState2[0],setDate=_useState2[1],onNavigate=(0,react.useCallback)((function(newDate){return setDate(newDate)}),[setDate]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{date:date,events:events.A,localizer:mLocalizer,onNavigate:onNavigate})})};OnNavigate.displayName="OnNavigate",OnNavigate.storyName="onNavigate",OnNavigate.parameters=Object.assign({storySource:{source:'function OnNavigate() {\n const [date, setDate] = useState(new Date(2015, 3, 1))\n\n const onNavigate = useCallback((newDate) => setDate(newDate), [setDate])\n\n return (\n
\n \n
\n )\n}'}},OnNavigate.parameters);var __namedExportsOrder=["OnNavigate"];OnNavigate.__docgenInfo={description:"",methods:[],displayName:"OnNavigate"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onNavigate.stories.js"]={name:"OnNavigate",docgenInfo:OnNavigate.__docgenInfo,path:"stories/props/onNavigate.stories.js"})},"./stories/props/onRangeChange.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnRangeChange:function(){return OnRangeChange},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onRangeChange_stories}});var slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"onrangechange"},"onRangeChange"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (range: Array [1|7] | Object {start: Date, end: Date}) => // do something"))),(0,esm.yg)("p",null,"Callback fired when the visible date range changes. Returns an Array of dates or an object with start and end dates for BUILTIN views."),(0,esm.yg)("p",null,"Custom views may return something different."),(0,esm.yg)("p",null,(0,esm.yg)("em",{parentName:"p"},"Note:")," This method is not fired on initial render. Only as the user navigates through Big Calendar."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-range-change",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onRangeChange_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}};var OnRangeChange=function OnRangeChange(){var _useState=(0,react.useState)(new Date(2015,3,1)),_useState2=(0,slicedToArray.A)(_useState,2),date=_useState2[0],setDate=_useState2[1],onNavigate=(0,react.useCallback)((function(newDate){return setDate(newDate)}),[setDate]),onRangeChange=(0,react.useCallback)((function(range){window.alert(function buildMessage(range){return range?Array.isArray(range)?1===range.length?"[onRangeChange] was given an array with\n a single item of ".concat(range[0].toLocaleString(),",\n which only occurs within the 'day' view."):"[onRangeChange] was given an array of seven dates,\n starting with ".concat(range[0].toLocaleString(),"\n and ending with ").concat(range[6].toLocaleString(),".\n This occurs when within the 'week' or 'work week' views."):"[onRangeChange] was given an object with\n a start of ".concat(range.start.toLocaleString(),"\n and an end of ").concat(range.end.toLocaleString(),".\n An object with 'start' and 'end' is passed\n when in the 'month' or 'agenda' views."):"no range"}(range))}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{date:date,events:events.A,localizer:mLocalizer,onNavigate:onNavigate,onRangeChange:onRangeChange})})};OnRangeChange.displayName="OnRangeChange",OnRangeChange.storyName="onRangeChange",OnRangeChange.parameters=Object.assign({storySource:{source:'function OnRangeChange() {\n const [date, setDate] = useState(new Date(2015, 3, 1))\n\n const onNavigate = useCallback((newDate) => setDate(newDate), [setDate])\n\n const onRangeChange = useCallback((range) => {\n window.alert(buildMessage(range))\n }, [])\n\n return (\n
\n \n
\n )\n}'}},OnRangeChange.parameters);var __namedExportsOrder=["OnRangeChange"];OnRangeChange.__docgenInfo={description:"",methods:[],displayName:"OnRangeChange"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onRangeChange.stories.js"]={name:"OnRangeChange",docgenInfo:OnRangeChange.__docgenInfo,path:"stories/props/onRangeChange.stories.js"})},"./stories/props/onSelectEvent.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnSelectEvent:function(){return OnSelectEvent},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onSelectEvent_stories}});__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"onselectevent"},"onSelectEvent"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (event: Object) => any"))),(0,esm.yg)("p",null,"Callback fired when a calendar event is selected (i.e.: an ",(0,esm.yg)("inlineCode",{parentName:"p"},"onClick")," handler)."),(0,esm.yg)("p",null,"The method receives the selected event as a parameter. If using ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"resources",mdxType:"LinkTo"},"resources"),", and are in a TimeGrid view ('day' or 'week'), the ",(0,esm.yg)("inlineCode",{parentName:"p"},"event")," will have an additional ",(0,esm.yg)("inlineCode",{parentName:"p"},"sourceResource")," property containing the resource object that the event is associated with."),(0,esm.yg)("p",null,"Clicking on a ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"backgroundEvents",mdxType:"LinkTo"},"backgroundEvent")," will also fire the ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelectEvent")," callback. It will also receive the ",(0,esm.yg)("inlineCode",{parentName:"p"},"backgroundEvent")," as the ",(0,esm.yg)("inlineCode",{parentName:"p"},"event")," object, but contain a ",(0,esm.yg)("inlineCode",{parentName:"p"},"isBackgroundEvent")," property set to ",(0,esm.yg)("inlineCode",{parentName:"p"},"true"),". This will allow you to distinguish between a background event and a regular event within your ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelectEvent")," handler."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Note:")," The ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")," prop is ",(0,esm.yg)("em",{parentName:"p"},"not")," required for this prop to function."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Important:")," The event passed into the function is the Calendar Event, not the SyntheticEvent expected by most click handlers."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-select-event",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onSelectEvent_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}};function buildMessage(calEvent,eventName){return"[".concat(eventName,"] an 'event' selection was made with:\n ").concat(JSON.stringify(calEvent,null,2))}var OnSelectEvent=function OnSelectEvent(){var clickRef=(0,react.useRef)(null);(0,react.useEffect)((function(){return function(){window.clearTimeout(null==clickRef?void 0:clickRef.current)}}),[]);var onSelectEvent=(0,react.useCallback)((function(calEvent){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){window.alert(buildMessage(calEvent,"onSelectEvent"))}),250)}),[]),onDoubleClickEvent=(0,react.useCallback)((function(calEvent){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){window.alert(buildMessage(calEvent,"onDoubleClickEvent"))}),250)}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,onDoubleClickEvent:onDoubleClickEvent,onSelectEvent:onSelectEvent})})};OnSelectEvent.displayName="OnSelectEvent",OnSelectEvent.storyName="onSelectEvent",OnSelectEvent.parameters=Object.assign({storySource:{source:"function OnSelectEvent() {\n const clickRef = useRef(null)\n\n useEffect(() => {\n /**\n * What Is This?\n * This is to prevent a memory leak, in the off chance that you\n * teardown your interface prior to the timed method being called.\n */\n return () => {\n window.clearTimeout(clickRef?.current)\n }\n }, [])\n\n const onSelectEvent = useCallback((calEvent) => {\n /**\n * Here we are waiting 250 milliseconds (use what you want) prior to firing\n * our method. Why? Because both 'click' and 'doubleClick'\n * would fire, in the event of a 'doubleClick'. By doing\n * this, the 'click' handler is overridden by the 'doubleClick'\n * action.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n window.alert(buildMessage(calEvent, 'onSelectEvent'))\n }, 250)\n }, [])\n\n const onDoubleClickEvent = useCallback((calEvent) => {\n /**\n * Notice our use of the same ref as above.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n window.alert(buildMessage(calEvent, 'onDoubleClickEvent'))\n }, 250)\n }, [])\n\n const defaultDate = useMemo(() => new Date(2015, 3, 1), [])\n\n return (\n
\n \n
\n )\n}"}},OnSelectEvent.parameters);var __namedExportsOrder=["OnSelectEvent"];OnSelectEvent.__docgenInfo={description:"",methods:[],displayName:"OnSelectEvent"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onSelectEvent.stories.js"]={name:"OnSelectEvent",docgenInfo:OnSelectEvent.__docgenInfo,path:"stories/props/onSelectEvent.stories.js"})},"./stories/props/onSelectSlot.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnSelectSlot:function(){return OnSelectSlot},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onSelectSlot_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"onselectslot"},"onSelectSlot"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (Object: slotInfo) => any")),(0,esm.yg)("li",{parentName:"ul"},"requires: ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable"))),(0,esm.yg)("p",null,"A callback fired when a date selection is made. Only fires when ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")," is true."),(0,esm.yg)("p",null,(0,esm.yg)("em",{parentName:"p"},"Things To Know:")," When you 'doubleClick', both 'click' and 'doubleClick' will fire. Click on the 'showCode' button, at the bottom of the example below, to see how you can get around this issue."),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},";(slotInfo: {\n start: Date,\n end: Date,\n slots: Array,\n action: 'select' | 'click' | 'doubleClick',\n resourceId: ?number, // only if the calendar is resource view\n bounds: ?{\n // For \"select\" action\n x: number,\n y: number,\n top: number,\n right: number,\n left: number,\n bottom: number,\n },\n box: ?{\n // For \"click\" or \"doubleClick\" actions\n clientX: number,\n clientY: number,\n x: number,\n y: number,\n },\n}) => any\n")),(0,esm.yg)("h2",{id:"whats-the-difference"},"What's The Difference?"),(0,esm.yg)("p",null,"How is this different from ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"on-selecting",mdxType:"LinkTo"},"onSelecting"),"? That is a very good question. The ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelecting")," method is only available in the Time views (",(0,esm.yg)("inlineCode",{parentName:"p"},"week"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"work week"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"day"),"), whereas ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelectSlot")," is also available in the ",(0,esm.yg)("inlineCode",{parentName:"p"},"month")," view. The ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelecting")," method allows you to 'cancel' your selection by returning ",(0,esm.yg)("inlineCode",{parentName:"p"},"false"),". The ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelectSlot")," method returns a ",(0,esm.yg)("inlineCode",{parentName:"p"},"slotInfo")," object, containing a lot of additional information about your selection."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-select-slot",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onSelectSlot_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}};var OnSelectSlot=function OnSelectSlot(){var clickRef=(0,react.useRef)(null);(0,react.useEffect)((function(){return function(){window.clearTimeout(null==clickRef?void 0:clickRef.current)}}),[]);var onSelectSlot=(0,react.useCallback)((function(slotInfo){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){window.alert(function buildMessage(slotInfo){return"[onSelectSlot] a date selection was made, passing 'slotInfo'\n ".concat(JSON.stringify(slotInfo,null,2))}(slotInfo))}),250)}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,onSelectSlot:onSelectSlot,selectable:!0})})};OnSelectSlot.displayName="OnSelectSlot",OnSelectSlot.storyName="onSelectSlot",OnSelectSlot.parameters=Object.assign({storySource:{source:"function OnSelectSlot() {\n const clickRef = useRef(null)\n\n useEffect(() => {\n /**\n * What Is This?\n * This is to prevent a memory leak, in the off chance that you\n * teardown your interface prior to the timed method being called.\n */\n return () => {\n window.clearTimeout(clickRef?.current)\n }\n }, [])\n\n const onSelectSlot = useCallback((slotInfo) => {\n /**\n * Here we are waiting 250 milliseconds (use what you want) prior to firing\n * our method. Why? Because both 'click' and 'doubleClick'\n * would fire, in the event of a 'doubleClick'. By doing\n * this, the 'click' handler is overridden by the 'doubleClick'\n * action.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n window.alert(buildMessage(slotInfo))\n }, 250)\n }, [])\n\n const defaultDate = useMemo(() => new Date(2015, 3, 1), [])\n\n return (\n
\n \n
\n )\n}"}},OnSelectSlot.parameters);var __namedExportsOrder=["OnSelectSlot"];OnSelectSlot.__docgenInfo={description:"",methods:[],displayName:"OnSelectSlot"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onSelectSlot.stories.js"]={name:"OnSelectSlot",docgenInfo:OnSelectSlot.__docgenInfo,path:"stories/props/onSelectSlot.stories.js"})},"./stories/props/onSelecting.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnSelecting:function(){return OnSelecting},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onSelecting_stories}});__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"onselecting"},"onSelecting"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"(range: Object { start: Date, end: Date, resourceId: null|string|number }) => ?boolean")),(0,esm.yg)("li",{parentName:"ul"},"requires: ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable"))),(0,esm.yg)("p",null,"Callback fired when dragging a selection in the Time views. Only fires when ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")," is true."),(0,esm.yg)("p",null,"Returning ",(0,esm.yg)("inlineCode",{parentName:"p"},"false")," from the handler will prevent a selection."),(0,esm.yg)("h2",{id:"whats-the-difference"},"What's The Difference?"),(0,esm.yg)("p",null,"How is this different from ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"on-select-slot",mdxType:"LinkTo"},"onSelectSlot"),"? That is a very good question. The ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelecting")," method is only available in the Time views (",(0,esm.yg)("inlineCode",{parentName:"p"},"week"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"work week"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"day"),"), whereas ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelectSlot")," is also available in the ",(0,esm.yg)("inlineCode",{parentName:"p"},"month")," view. The ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelecting")," method allows you to 'cancel' your selection by returning ",(0,esm.yg)("inlineCode",{parentName:"p"},"false"),". The ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelectSlot")," method returns a ",(0,esm.yg)("inlineCode",{parentName:"p"},"slotInfo")," object, containing a lot of additional information about your selection."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-selecting",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onSelecting_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}};function buildMessage(range,eventName){return"[".concat(eventName,"] a date range selection was made, passing:\n ").concat(JSON.stringify(range,null,2))}var OnSelecting=function OnSelecting(){var clickRef=(0,react.useRef)(null);(0,react.useEffect)((function(){return function(){window.clearTimeout(null==clickRef?void 0:clickRef.current)}}),[]);var onSelectSlot=(0,react.useCallback)((function(slotInfo){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){window.alert(buildMessage(slotInfo,"onSelectSlot"))}),250)}),[]),onSelecting=(0,react.useCallback)((function(range){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){window.alert(buildMessage(range,"onSelecting"))}),250)}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,localizer:mLocalizer,onSelecting:onSelecting,onSelectSlot:onSelectSlot,selectable:!0})})};OnSelecting.displayName="OnSelecting",OnSelecting.storyName="onSelecting",OnSelecting.parameters=Object.assign({storySource:{source:"function OnSelecting() {\n const clickRef = useRef(null)\n\n useEffect(() => {\n /**\n * What Is This?\n * This is to prevent a memory leak, in the off chance that you\n * teardown your interface prior to the timed method being called.\n */\n return () => {\n window.clearTimeout(clickRef?.current)\n }\n }, [])\n\n const onSelectSlot = useCallback((slotInfo) => {\n /**\n * Here we are waiting 250 milliseconds (use what you want) prior to firing\n * our method. Why? Because both 'click' and 'doubleClick'\n * would fire, in the event of a 'doubleClick'. By doing\n * this, the 'click' handler is overridden by the 'doubleClick'\n * action.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n window.alert(buildMessage(slotInfo, 'onSelectSlot'))\n }, 250)\n }, [])\n\n const onSelecting = useCallback((range) => {\n /**\n * Here we are waiting 250 milliseconds (use what you want) prior to firing\n * our method. Why? Because both 'click' and 'doubleClick'\n * would fire, in the event of a 'doubleClick'. By doing\n * this, the 'click' handler is overridden by the 'doubleClick'\n * action.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n window.alert(buildMessage(range, 'onSelecting'))\n }, 250)\n }, [])\n\n const defaultDate = useMemo(() => new Date(2015, 3, 1), [])\n\n return (\n
\n \n
\n )\n}"}},OnSelecting.parameters);var __namedExportsOrder=["OnSelecting"];OnSelecting.__docgenInfo={description:"",methods:[],displayName:"OnSelecting"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onSelecting.stories.js"]={name:"OnSelecting",docgenInfo:OnSelecting.__docgenInfo,path:"stories/props/onSelecting.stories.js"})},"./stories/props/onShowMore.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnShowMore:function(){return OnShowMore},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onShowMore_stories}});__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"onshowmore"},"onShowMore"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (events: Array[event: Object], date: Date) => any"))),(0,esm.yg)("p",null,"Callback fired when a +{count} more is clicked. Receives ",(0,esm.yg)("strong",{parentName:"p"},"all")," of the ",(0,esm.yg)("inlineCode",{parentName:"p"},"events")," for the ",(0,esm.yg)("inlineCode",{parentName:"p"},"date")," on which it was selected."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-show-more",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onShowMore_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}};var OnShowMore=function OnShowMore(){var onShowMore=(0,react.useCallback)((function(events,date){return window.alert(function buildMessage(calEvents,date){return"[onShowMore] received ".concat(calEvents.length," for ").concat(date.toLocaleDateString())}(events,date))}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,onShowMore:onShowMore})})};OnShowMore.displayName="OnShowMore",OnShowMore.storyName="onShowMore",OnShowMore.parameters=Object.assign({storySource:{source:'function OnShowMore() {\n const onShowMore = useCallback(\n (events, date) => window.alert(buildMessage(events, date)),\n []\n )\n\n const defaultDate = useMemo(() => new Date(2015, 3, 1), [])\n\n return (\n
\n \n
\n )\n}'}},OnShowMore.parameters);var __namedExportsOrder=["OnShowMore"];OnShowMore.__docgenInfo={description:"",methods:[],displayName:"OnShowMore"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onShowMore.stories.js"]={name:"OnShowMore",docgenInfo:OnShowMore.__docgenInfo,path:"stories/props/onShowMore.stories.js"})},"./stories/props/onView.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnView:function(){return OnView},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onView_stories}});var slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"onview"},"onView"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: 'function'"),(0,esm.yg)("li",{parentName:"ul"},"controls: ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"view",mdxType:"LinkTo"},"view")),(0,esm.yg)("li",{parentName:"ul"},"example: ",(0,esm.yg)("inlineCode",{parentName:"li"},"(newView) => setView(newView)"))),(0,esm.yg)("p",null,"Callback fired when the ",(0,esm.yg)("inlineCode",{parentName:"p"},"view")," value changes. When included it is used to 'control' the ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"view",mdxType:"LinkTo"},"view")," prop value."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-view",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onView_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},OnView=function OnView(){var _useState=(0,react.useState)(new Date(2015,3,1)),_useState2=(0,slicedToArray.A)(_useState,2),date=_useState2[0],setDate=_useState2[1],_useState3=(0,react.useState)(src.Pp.WEEK),_useState4=(0,slicedToArray.A)(_useState3,2),view=_useState4[0],setView=_useState4[1],onNavigate=(0,react.useCallback)((function(newDate){return setDate(newDate)}),[setDate]),onView=(0,react.useCallback)((function(newView){return setView(newView)}),[setView]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{date:date,events:events.A,localizer:mLocalizer,onNavigate:onNavigate,onView:onView,view:view})})};OnView.displayName="OnView",OnView.storyName="onView",OnView.parameters=Object.assign({storySource:{source:'function OnView() {\n const [date, setDate] = useState(new Date(2015, 3, 1))\n const [view, setView] = useState(Views.WEEK)\n\n const onNavigate = useCallback((newDate) => setDate(newDate), [setDate])\n const onView = useCallback((newView) => setView(newView), [setView])\n\n return (\n
\n \n
\n )\n}'}},OnView.parameters);var __namedExportsOrder=["OnView"];OnView.__docgenInfo={description:"",methods:[],displayName:"OnView"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onView.stories.js"]={name:"OnView",docgenInfo:OnView.__docgenInfo,path:"stories/props/onView.stories.js"})},"./stories/props/popup.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Popup:function(){return Popup},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return popup_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"popup"},"popup"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"true"))),(0,esm.yg)("p",null,'Show truncated events in an overlay when you click the "+',(0,esm.yg)("em",{parentName:"p"},"x"),' more" link.'),(0,esm.yg)(dist_esm.gG,{id:"props--popup",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),popup_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},popup:"boolean"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Popup=Template.bind({});Popup.storyName="popup",Popup.args={defaultDate:new Date(2015,3,13),events:events.A,localizer:mLocalizer,popup:!0},Popup.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Popup.parameters);var __namedExportsOrder=["Popup"]},"./stories/props/popupOffset.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{PopupOffset:function(){return PopupOffset},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return popupOffset_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"popupoffset"},"popupOffset"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"number|shape {x: number, y: number}"))),(0,esm.yg)("p",null,'Distance in pixels, from the edges of the viewport, the "show more" overlay should be positioned.'),(0,esm.yg)(dist_esm.gG,{id:"props--popup-offset",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),popupOffset_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},popup:"boolean"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var PopupOffset=Template.bind({});PopupOffset.storyName="popupOffset",PopupOffset.args={defaultDate:new Date(2015,3,13),events:events.A,localizer:mLocalizer,popup:!0,popupOffset:{x:30,y:20}},PopupOffset.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},PopupOffset.parameters);var __namedExportsOrder=["PopupOffset"]},"./stories/props/resourceIdAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ResourceIdAccessor:function(){return ResourceIdAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return resourceIdAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var src=__webpack_require__("./src/index.js"),storyDefaults=__webpack_require__("./stories/props/storyDefaults.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"resourceidaccessor"},"resourceIdAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string | function (resource: Object) => string | number // must be unique"))),(0,esm.yg)("p",null,"Provides a unique identifier, or an array of unique identifiers, for each resource in the ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"resources",mdxType:"LinkTo"},"resources")," array"),(0,esm.yg)(dist_esm.gG,{id:"props--resource-id-accessor",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),resourceIdAccessor_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var ResourceIdAccessor=Template.bind({});ResourceIdAccessor.storyName="resourceIdAccessor",ResourceIdAccessor.args=storyDefaults._,ResourceIdAccessor.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},ResourceIdAccessor.parameters);var __namedExportsOrder=["ResourceIdAccessor"]},"./stories/props/resourceTitleAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ResourceTitleAccessor:function(){return ResourceTitleAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return resourceTitleAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var src=__webpack_require__("./src/index.js"),storyDefaults=__webpack_require__("./stories/props/storyDefaults.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"resourcetitleaccessor"},"resourceTitleAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string | function (resource: Object) => string"))),(0,esm.yg)("p",null,"Provides a human readable name for the resource object, used in headers."),(0,esm.yg)(dist_esm.gG,{id:"props--resource-title-accessor",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),resourceTitleAccessor_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var ResourceTitleAccessor=Template.bind({});ResourceTitleAccessor.storyName="resourceTitleAccessor",ResourceTitleAccessor.args=storyDefaults._,ResourceTitleAccessor.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},ResourceTitleAccessor.parameters);var __namedExportsOrder=["ResourceTitleAccessor"]},"./stories/props/resources.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Resources:function(){return Resources},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return resources_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),resourceEvents=__webpack_require__("./stories/resources/resourceEvents.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"resources"},"resources"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"arrayOf(Resource)"))),(0,esm.yg)("p",null,"An array of resource objects that map events to a specific resource. Resource objects, like events, can be any shape or have any properties, but should be uniquly identifiable via the ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"resource-id-accessor",mdxType:"LinkTo"},"resourceIdAccessor"),', as well as a "title" or name as provided by the ',(0,esm.yg)(addon_links_react.A,{kind:"props",story:"resource-title-accessor",mdxType:"LinkTo"},"resourceTitleAccessor")," prop."),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"Resource {\n id: string | number, // must be unique\n title: string\n}\n")),(0,esm.yg)(dist_esm.gG,{id:"props--resources",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),resources_stories_resourceEvents=resourceEvents.A.events,resources=resourceEvents.A.list,mLocalizer=(0,src.ye)(moment_default()),resources_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Resources=Template.bind({});Resources.storyName="resources",Resources.args={defaultDate:new Date(2015,3,4),defaultView:src.Pp.DAY,events:resources_stories_resourceEvents,localizer:mLocalizer,resources:resources},Resources.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Resources.parameters);var __namedExportsOrder=["Resources"]},"./stories/props/rtl.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{RightToLeft:function(){return RightToLeft},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return rtl_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"rtl"},"rtl"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"false"))),(0,esm.yg)("p",null,"Switch the calendar to a right-to-left read direction. Best if used in conjunction with your ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"localizer")," and ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"messages",mdxType:"LinkTo"},"messages")," props."),(0,esm.yg)("p",null,"See the ",(0,esm.yg)(addon_links_react.A,{kind:"examples",story:"example-5",mdxType:"LinkTo"},"Localization Example")," for another example of combining ",(0,esm.yg)("inlineCode",{parentName:"p"},"rtl"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"localizer"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"culture")," and ",(0,esm.yg)("inlineCode",{parentName:"p"},"messages"),"."),(0,esm.yg)(dist_esm.gG,{id:"props--right-to-left",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),rtl_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},rtl:"boolean"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var RightToLeft=Template.bind({});RightToLeft.storyName="rtl",RightToLeft.args={defaultDate:new Date(2015,3,13),events:events.A,localizer:mLocalizer,rtl:!0,messages:{week:"أسبوع",work_week:"أسبوع العمل",day:"يوم",month:"شهر",previous:"سابق",next:"التالي",today:"اليوم",agenda:"جدول أعمال",showMore:function showMore(total){return"+".concat(total," إضافي")}}},RightToLeft.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},RightToLeft.parameters);var __namedExportsOrder=["RightToLeft"]},"./stories/props/scrollToTime.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ScrollToTime:function(){return ScrollToTime},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return scrollToTime_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"scrolltotime"},"scrollToTime"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"new Date()"))),(0,esm.yg)("p",null,"Determines how far down the scroll pane is initially scrolled down."),(0,esm.yg)(dist_esm.gG,{id:"props--scroll-to-time",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),scrollToTime_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}},events:{control:{type:null}},scrollToTime:{control:{type:"date"}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var ScrollToTime=Template.bind({});ScrollToTime.storyName="scrollToTime",ScrollToTime.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.WEEK,events:events.A,localizer:mLocalizer,scrollToTime:new Date(1972,0,1,22)},ScrollToTime.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},ScrollToTime.parameters);var __namedExportsOrder=["ScrollToTime"]},"./stories/props/selectable.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Selectable:function(){return Selectable},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return selectable_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"selectable"},"selectable"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"boolean | 'ignoreEvents'"))),(0,esm.yg)("p",null,"Allows mouse selection of ranges of dates/times."),(0,esm.yg)("p",null,"The 'ignoreEvents' option prevents selection code from running when a drag begins over an event. Useful when you want custom event click or drag logic"),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--selectable",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),selectable_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}};var Selectable=function Selectable(){var clickRef=(0,react.useRef)(null);(0,react.useEffect)((function(){return function(){window.clearTimeout(null==clickRef?void 0:clickRef.current)}}),[]);var onSelectSlot=(0,react.useCallback)((function(slotInfo){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){window.alert(function buildMessage(slotInfo){return"[onSelectSlot] a date selection was made, passing 'slotInfo'\n ".concat(JSON.stringify(slotInfo,null,2))}(slotInfo))}),250)}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,onSelectSlot:onSelectSlot,selectable:!0})})};Selectable.displayName="Selectable",Selectable.storyName="selectable",Selectable.parameters=Object.assign({storySource:{source:"function Selectable() {\n const clickRef = useRef(null)\n\n useEffect(() => {\n /**\n * What Is This?\n * This is to prevent a memory leak, in the off chance that you\n * teardown your interface prior to the timed method being called.\n */\n return () => {\n window.clearTimeout(clickRef?.current)\n }\n }, [])\n\n const onSelectSlot = useCallback((slotInfo) => {\n /**\n * Here we are waiting 250 milliseconds prior to firing\n * our method. Why? Because both 'click' and 'doubleClick'\n * would fire, in the event of a 'doubleClick'. By doing\n * this, the 'click' handler is overridden by the 'doubleClick'\n * action.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n window.alert(buildMessage(slotInfo))\n }, 250)\n }, [])\n\n const defaultDate = useMemo(() => new Date(2015, 3, 1), [])\n\n return (\n
\n \n
\n )\n}"}},Selectable.parameters);var __namedExportsOrder=["Selectable"];Selectable.__docgenInfo={description:"",methods:[],displayName:"Selectable"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/selectable.stories.js"]={name:"Selectable",docgenInfo:Selectable.__docgenInfo,path:"stories/props/selectable.stories.js"})},"./stories/props/selected.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Selected:function(){return Selected},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return selected_stories}});var slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.array.find.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"selected"},"selected"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"Event: Object"))),(0,esm.yg)("p",null,"The selected event, if any. By default, Big Calendar 'controls' the ",(0,esm.yg)("inlineCode",{parentName:"p"},"selected")," (highlighted) event in the display. You can use this prop to control which event is highlighted. The ",(0,esm.yg)("inlineCode",{parentName:"p"},"selected")," event must be a object reference to the event within the ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events")," array."),(0,esm.yg)("p",null,"Often used in conjunction with ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"on-select-event",mdxType:"LinkTo"},"OnSelectEvent")," and/or ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"on-double-click-event",mdxType:"LinkTo"},"onDoubleClickEvent"),"."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--selected",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),selected_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},Selected=function Selected(){var _useState=(0,react.useState)((function(){return events.A.find((function(event){return"Itaewon Halloween Meeting"===event.title}))})),_useState2=(0,slicedToArray.A)(_useState,2),selected=_useState2[0],setSelected=_useState2[1],clickRef=(0,react.useRef)(null);(0,react.useEffect)((function(){return function(){window.clearTimeout(null==clickRef?void 0:clickRef.current)}}),[]);var onSelectEvent=(0,react.useCallback)((function(calEvent){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){setSelected(calEvent)}),250)}),[setSelected]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,onSelectEvent:onSelectEvent,selected:selected})})};Selected.displayName="Selected",Selected.storyName="selected",Selected.parameters=Object.assign({storySource:{source:"function Selected() {\n const [selected, setSelected] = useState(() => {\n // let's make an initial selection\n return demoEvents.find(\n (event) => event.title === 'Itaewon Halloween Meeting'\n )\n })\n const clickRef = useRef(null)\n\n useEffect(() => {\n /**\n * What Is This?\n * This is to prevent a memory leak, in the off chance that you\n * teardown your interface prior to the timed method being called.\n */\n return () => {\n window.clearTimeout(clickRef?.current)\n }\n }, [])\n\n const onSelectEvent = useCallback(\n (calEvent) => {\n /**\n * Here we are waiting 250 milliseconds (use what you want) prior to firing\n * our method. Why? Because both 'click' and 'doubleClick'\n * would fire, in the event of a 'doubleClick'. By doing\n * this, the 'click' handler is overridden by the 'doubleClick'\n * action.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n setSelected(calEvent)\n }, 250)\n },\n [setSelected]\n )\n\n const defaultDate = useMemo(() => new Date(2015, 3, 1), [])\n\n return (\n
\n \n
\n )\n}"}},Selected.parameters);var __namedExportsOrder=["Selected"];Selected.__docgenInfo={description:"",methods:[],displayName:"Selected"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/selected.stories.js"]={name:"Selected",docgenInfo:Selected.__docgenInfo,path:"stories/props/selected.stories.js"})},"./stories/props/showAllEvents.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ShowAllEvents:function(){return ShowAllEvents},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return showAllEvents_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"showallevents"},"showAllEvents"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"false"))),(0,esm.yg)("p",null,"Displays all events on the month view instead of having some hidden behind +{count} more. This will cause the rows in the month view to be scrollable if the number of events exceed the height of the row."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--show-all-events",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),showAllEvents_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},showAllEvents:"boolean"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var ShowAllEvents=Template.bind({});ShowAllEvents.storyName="showAllEvents",ShowAllEvents.args={defaultDate:new Date(2015,3,13),events:events.A,localizer:mLocalizer,showAllEvents:!0},ShowAllEvents.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},ShowAllEvents.parameters);var __namedExportsOrder=["ShowAllEvents"]},"./stories/props/showMultiDayTimes.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ShowMultiDayTimes:function(){return ShowMultiDayTimes},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return showMultiDayTimes_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"showmultidaytimes"},"showMultiDayTimes"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"false"))),(0,esm.yg)("p",null,"Support to show multi-day events with specific start and end times in the main time grid (rather than in the all day header)."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Note: This may cause calendars with several events to look very busy in the week and day views.")),(0,esm.yg)(dist_esm.gG,{id:"props--show-multi-day-times",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),showMultiDayTimes_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}},max:{control:{type:null}},showMultiDayTimes:"boolean"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var ShowMultiDayTimes=Template.bind({});ShowMultiDayTimes.storyName="showMultiDayTimes",ShowMultiDayTimes.args={defaultDate:new Date(2016,11,4),defaultView:src.Pp.WEEK,events:[{title:"start of the week",start:new Date(2016,11,4,15),end:new Date(2016,11,5,3)},{title:"single day longer than max",start:new Date(2016,11,4,15),end:new Date(2016,11,4,23,30)},{title:"end of the week",start:new Date(2016,11,3),end:new Date(2016,11,3)},{title:"middle",start:new Date(2016,11,6),end:new Date(2016,11,6)}],localizer:mLocalizer,max:moment_default()().endOf("day").add(-1,"hours").toDate(),showMultiDayTimes:!0},ShowMultiDayTimes.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},ShowMultiDayTimes.parameters);var __namedExportsOrder=["ShowMultiDayTimes"]},"./stories/props/slotGroupPropGetter.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{SlotGroupPropGetter:function(){return SlotGroupPropGetter},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return slotGroupPropGetter_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"slotgrouppropgetter"},"slotGroupPropGetter"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (group: Date[]) => { style?: Object }"))),(0,esm.yg)("p",null,"Optionally provide a function that returns an object of className or style props to be applied to the time-slot node."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Caution! Styles that change layout or position may break the calendar in unexpected ways.")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--slot-group-prop-getter",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;__webpack_require__("./stories/resources/propGetter.scss");var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),slotGroupPropGetter_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},SlotGroupPropGetter=function SlotGroupPropGetter(){var slotGroupPropGetter=(0,react.useCallback)((function(){return{style:{minHeight:60}}}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,13)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,slotGroupPropGetter:slotGroupPropGetter,events:events.A,localizer:mLocalizer})})};SlotGroupPropGetter.displayName="SlotGroupPropGetter",SlotGroupPropGetter.storyName="slotGroupPropGetter",SlotGroupPropGetter.parameters=Object.assign({storySource:{source:'function SlotGroupPropGetter() {\n const slotGroupPropGetter = useCallback(\n () => ({\n style: {\n minHeight: 60,\n },\n }),\n []\n )\n\n const defaultDate = useMemo(() => new Date(2015, 3, 13), [])\n\n return (\n
\n \n
\n )\n}'}},SlotGroupPropGetter.parameters);var __namedExportsOrder=["SlotGroupPropGetter"];SlotGroupPropGetter.__docgenInfo={description:"",methods:[],displayName:"SlotGroupPropGetter"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/slotGroupPropGetter.stories.js"]={name:"SlotGroupPropGetter",docgenInfo:SlotGroupPropGetter.__docgenInfo,path:"stories/props/slotGroupPropGetter.stories.js"})},"./stories/props/slotPropGetter.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{SlotPropGetter:function(){return SlotPropGetter},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return slotPropGetter_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"slotpropgetter"},"slotPropGetter"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date) => {className?: string, style?: Object}"))),(0,esm.yg)("p",null,"Optionally provide a function that returns an object of className or style props to be applied to the the time-slot node."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Caution!")," Styles that change layout or position may break the calendar in unexpected ways."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--slot-prop-getter",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;__webpack_require__("./stories/resources/propGetter.scss");var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),slotPropGetter_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},SlotPropGetter=function SlotPropGetter(){var slotPropGetter=(0,react.useCallback)((function(date){return Object.assign({className:"slotDefault"},moment_default()(date).hour()<8&&{style:{backgroundColor:"powderblue",color:"black"}},moment_default()(date).hour()>12&&{style:{backgroundColor:"darkgreen",color:"white"}})}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,13)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,slotPropGetter:slotPropGetter,events:events.A,localizer:mLocalizer})})};SlotPropGetter.displayName="SlotPropGetter",SlotPropGetter.storyName="slotPropGetter",SlotPropGetter.parameters=Object.assign({storySource:{source:"function SlotPropGetter() {\n const slotPropGetter = useCallback(\n (date) => ({\n className: 'slotDefault',\n ...(moment(date).hour() < 8 && {\n style: {\n backgroundColor: 'powderblue',\n color: 'black',\n },\n }),\n ...(moment(date).hour() > 12 && {\n style: {\n backgroundColor: 'darkgreen',\n color: 'white',\n },\n }),\n }),\n []\n )\n\n const defaultDate = useMemo(() => new Date(2015, 3, 13), [])\n\n return (\n
\n \n
\n )\n}"}},SlotPropGetter.parameters);var __namedExportsOrder=["SlotPropGetter"];SlotPropGetter.__docgenInfo={description:"",methods:[],displayName:"SlotPropGetter"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/slotPropGetter.stories.js"]={name:"SlotPropGetter",docgenInfo:SlotPropGetter.__docgenInfo,path:"stories/props/slotPropGetter.stories.js"})},"./stories/props/startAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{StartAccessor:function(){return StartAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return startAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var src=__webpack_require__("./src/index.js"),storyDefaults=__webpack_require__("./stories/props/storyDefaults.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"startaccessor"},"startAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => Date")),(0,esm.yg)("li",{parentName:"ul"},"default: 'start'")),(0,esm.yg)("p",null,"The start date/time of the event. Must resolve to a JavaScript ",(0,esm.yg)("inlineCode",{parentName:"p"},"Date")," object."),(0,esm.yg)(dist_esm.gG,{id:"props--start-accessor",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),startAccessor_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var StartAccessor=Template.bind({});StartAccessor.storyName="startAccessor",StartAccessor.args=storyDefaults.o,StartAccessor.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},StartAccessor.parameters);var __namedExportsOrder=["StartAccessor"]},"./stories/props/step.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Step:function(){return Step},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return step_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"step"},"step"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"number")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"30"))),(0,esm.yg)("p",null,"Determines the selectable time increments in week and day views"),(0,esm.yg)(dist_esm.gG,{id:"props--step",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),step_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}},step:"number"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Step=Template.bind({});Step.storyName="step",Step.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.WEEK,events:events.A,localizer:mLocalizer,step:15},Step.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Step.parameters);var __namedExportsOrder=["Step"]},"./stories/props/timeslots.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Timeslots:function(){return Timeslots},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return timeslots_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"timeslots"},"timeslots"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"number"))),(0,esm.yg)("p",null,'The number of slots per "section" in the time grid views. Adjust with ',(0,esm.yg)(addon_links_react.A,{kind:"props",story:"step",mdxType:"LinkTo"},"step")," to change the default of 1 hour long groups, with 30 minute slots."),(0,esm.yg)(dist_esm.gG,{id:"props--timeslots",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),timeslots_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}},step:"number",timeslots:"number"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Timeslots=Template.bind({});Timeslots.storyName="timeslots",Timeslots.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.WEEK,events:events.A,localizer:mLocalizer,step:15,timeslots:4},Timeslots.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Timeslots.parameters);var __namedExportsOrder=["Timeslots"]},"./stories/props/titleAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{TitleAccessor:function(){return TitleAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return titleAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var src=__webpack_require__("./src/index.js"),storyDefaults=__webpack_require__("./stories/props/storyDefaults.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"titleaccessor"},"titleAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => string")),(0,esm.yg)("li",{parentName:"ul"},"default: 'title'")),(0,esm.yg)("p",null,"Accessor for the event title, used to display event information. Should resolve to a ",(0,esm.yg)("inlineCode",{parentName:"p"},"renderable")," value."),(0,esm.yg)(dist_esm.gG,{id:"props--title-accessor",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),titleAccessor_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var TitleAccessor=Template.bind({});TitleAccessor.storyName="titleAccessor",TitleAccessor.args=storyDefaults.o,TitleAccessor.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},TitleAccessor.parameters);var __namedExportsOrder=["TitleAccessor"]},"./stories/props/toolbar.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Toolbar:function(){return Toolbar},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return toolbar_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"toolbar"},"toolbar"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"true"))),(0,esm.yg)("p",null,"Determines whether the toolbar is displayed"),(0,esm.yg)(dist_esm.gG,{id:"props--toolbar",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),toolbar_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},toolbar:"boolean"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Toolbar=Template.bind({});Toolbar.storyName="toolbar",Toolbar.args={defaultDate:new Date(2015,3,13),events:events.A,localizer:mLocalizer,toolbar:!0},Toolbar.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Toolbar.parameters);var __namedExportsOrder=["Toolbar"]},"./stories/props/tooltipAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{TooltipAccessor:function(){return TooltipAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return tooltipAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var src=__webpack_require__("./src/index.js"),storyDefaults=__webpack_require__("./stories/props/storyDefaults.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"tooltipaccessor"},"tooltipAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => string")),(0,esm.yg)("li",{parentName:"ul"},"default: 'title'")),(0,esm.yg)("p",null,"Accessor for the event tooltip, used to display event information. Should resolve to a ",(0,esm.yg)("inlineCode",{parentName:"p"},"renderable")," value. Removes the tooltip if null."),(0,esm.yg)(dist_esm.gG,{id:"props--tooltip-accessor",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),tooltipAccessor_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var TooltipAccessor=Template.bind({});TooltipAccessor.storyName="tooltipAccessor",TooltipAccessor.args=storyDefaults.o,TooltipAccessor.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},TooltipAccessor.parameters);var __namedExportsOrder=["TooltipAccessor"]},"./stories/props/view.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{View:function(){return View},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return view_stories}});var slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"view"},"view"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"Views.MONTH (month|week|work_week|day|agenda)")),(0,esm.yg)("li",{parentName:"ul"},"controlled by: ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"on-view",mdxType:"LinkTo"},"onView"))),(0,esm.yg)("p",null,"The current view value of the calendar. Determines the visible 'view'.\nIf ",(0,esm.yg)("inlineCode",{parentName:"p"},"view")," is omitted then it is defaulted to 'month'."),(0,esm.yg)("p",null,"This is a controllable prop, when using ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"on-view",mdxType:"LinkTo"},"onView")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--view",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),view_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},View=function View(){var _useState=(0,react.useState)(new Date(2015,3,1)),_useState2=(0,slicedToArray.A)(_useState,2),date=_useState2[0],setDate=_useState2[1],_useState3=(0,react.useState)(src.Pp.WEEK),_useState4=(0,slicedToArray.A)(_useState3,2),view=_useState4[0],setView=_useState4[1],onNavigate=(0,react.useCallback)((function(newDate){return setDate(newDate)}),[setDate]),onView=(0,react.useCallback)((function(newView){return setView(newView)}),[setView]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{date:date,events:events.A,localizer:mLocalizer,onNavigate:onNavigate,onView:onView,view:view})})};View.displayName="View",View.storyName="view",View.parameters=Object.assign({storySource:{source:'function View() {\n const [date, setDate] = useState(new Date(2015, 3, 1))\n const [view, setView] = useState(Views.WEEK)\n\n const onNavigate = useCallback((newDate) => setDate(newDate), [setDate])\n const onView = useCallback((newView) => setView(newView), [setView])\n\n return (\n
\n \n
\n )\n}'}},View.parameters);var __namedExportsOrder=["View"];View.__docgenInfo={description:"",methods:[],displayName:"View"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/view.stories.js"]={name:"View",docgenInfo:View.__docgenInfo,path:"stories/props/view.stories.js"})},"./stories/props/views.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{CalViews:function(){return CalViews},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return views_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"views"},"views"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"Views ('month'|'week'|'work_week'|'day'|'agenda')")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"[views.MONTH, views.WEEK, views.DAY, views.AGENDA]"))),(0,esm.yg)("p",null,"An array of built-in view names to allow the calendar to display. accepts either an array of builtin view names,"),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"views={['month', 'day', 'agenda']}\n")),(0,esm.yg)("p",null,"or an object hash of the view name and the component (or boolean for builtin)."),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"views={{\n month: true,\n week: false,\n myweek: WorkWeekViewComponent,\n}}\n")),(0,esm.yg)("p",null,"Custom views can be any React component, that implements the following interface:"),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"interface View {\n static title(date: Date, { formats: DateFormat[], culture: string?, ...props }): string\n static navigate(date: Date, action: 'PREV' | 'NEXT' | 'DATE'): Date\n}\n")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--cal-views",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),views_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},CalViews=function CalViews(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,1),views:[src.Pp.MONTH,src.Pp.DAY,src.Pp.AGENDA]}}),[]),defaultDate=_useMemo.defaultDate,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,views:views})})};CalViews.displayName="CalViews",CalViews.storyName="views",CalViews.parameters=Object.assign({storySource:{source:'function CalViews() {\n const { defaultDate, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 1),\n views: [Views.MONTH, Views.DAY, Views.AGENDA],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}'}},CalViews.parameters);var __namedExportsOrder=["CalViews"];CalViews.__docgenInfo={description:"",methods:[],displayName:"CalViews"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/views.stories.js"]={name:"CalViews",docgenInfo:CalViews.__docgenInfo,path:"stories/props/views.stories.js"})},"./src/BackgroundWrapper.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";var _NoopWrapper__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./src/NoopWrapper.js");__webpack_exports__.A=_NoopWrapper__WEBPACK_IMPORTED_MODULE_0__.A},"./src/DateContentRow.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return src_DateContentRow}});var classCallCheck=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/classCallCheck.js"),createClass=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/createClass.js"),callSuper=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/callSuper.js"),inherits=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/inherits.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.array.slice.js"),__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),clsx_m=__webpack_require__("./node_modules/clsx/dist/clsx.m.js"),height=__webpack_require__("./node_modules/dom-helpers/esm/height.js"),querySelectorAll=__webpack_require__("./node_modules/dom-helpers/esm/querySelectorAll.js"),helpers=__webpack_require__("./src/utils/helpers.js"),selection=__webpack_require__("./src/utils/selection.js"),Selection=__webpack_require__("./src/Selection.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),BackgroundCells=function(_React$Component){function BackgroundCells(props,context){var _this;return(0,classCallCheck.default)(this,BackgroundCells),(_this=(0,callSuper.default)(this,BackgroundCells,[props,context])).state={selecting:!1},_this.containerRef=(0,react.createRef)(),_this}return(0,inherits.default)(BackgroundCells,_React$Component),(0,createClass.default)(BackgroundCells,[{key:"componentDidMount",value:function componentDidMount(){this.props.selectable&&this._selectable()}},{key:"componentWillUnmount",value:function componentWillUnmount(){this._teardownSelectable()}},{key:"componentDidUpdate",value:function componentDidUpdate(prevProps){!prevProps.selectable&&this.props.selectable&&this._selectable(),prevProps.selectable&&!this.props.selectable&&this._teardownSelectable()}},{key:"render",value:function render(){var _this$props=this.props,range=_this$props.range,getNow=_this$props.getNow,getters=_this$props.getters,currentDate=_this$props.date,Wrapper=_this$props.components.dateCellWrapper,localizer=_this$props.localizer,_this$state=this.state,selecting=_this$state.selecting,startIdx=_this$state.startIdx,endIdx=_this$state.endIdx,current=getNow();return(0,jsx_runtime.jsx)("div",{className:"rbc-row-bg",ref:this.containerRef,children:range.map((function(date,index){var selected=selecting&&index>=startIdx&&index<=endIdx,_getters$dayProp=getters.dayProp(date),className=_getters$dayProp.className,style=_getters$dayProp.style;return(0,jsx_runtime.jsx)(Wrapper,{value:date,range:range,children:(0,jsx_runtime.jsx)("div",{style:style,className:(0,clsx_m.A)("rbc-day-bg",className,selected&&"rbc-selected-cell",localizer.isSameDate(date,current)&&"rbc-today",currentDate&&localizer.neq(currentDate,date,"month")&&"rbc-off-range-bg")})},index)}))})}},{key:"_selectable",value:function _selectable(){var _this2=this,node=this.containerRef.current,selector=this._selector=new Selection.Ay(this.props.container,{longPressThreshold:this.props.longPressThreshold}),selectorClicksHandler=function selectorClicksHandler(point,actionType){if(!(0,Selection.xH)(node,point)&&!(0,Selection.fN)(node,point)){var rowBox=(0,Selection.rF)(node),_this2$props=_this2.props,range=_this2$props.range,rtl=_this2$props.rtl;if((0,selection.bY)(rowBox,point)){var currentCell=(0,selection.sU)(rowBox,point.x,rtl,range.length);_this2._selectSlot({startIdx:currentCell,endIdx:currentCell,action:actionType,box:point})}}_this2._initial={},_this2.setState({selecting:!1})};selector.on("selecting",(function(box){var _this2$props2=_this2.props,range=_this2$props2.range,rtl=_this2$props2.rtl,startIdx=-1,endIdx=-1;if(_this2.state.selecting||((0,helpers.me)(_this2.props.onSelectStart,[box]),_this2._initial={x:box.x,y:box.y}),selector.isSelected(node)){var nodeBox=(0,Selection.rF)(node),_dateCellSelection=(0,selection.bx)(_this2._initial,nodeBox,box,range.length,rtl);startIdx=_dateCellSelection.startIdx,endIdx=_dateCellSelection.endIdx}_this2.setState({selecting:!0,startIdx:startIdx,endIdx:endIdx})})),selector.on("beforeSelect",(function(box){if("ignoreEvents"===_this2.props.selectable)return!(0,Selection.xH)(_this2.containerRef.current,box)})),selector.on("click",(function(point){return selectorClicksHandler(point,"click")})),selector.on("doubleClick",(function(point){return selectorClicksHandler(point,"doubleClick")})),selector.on("select",(function(bounds){_this2._selectSlot(Object.assign({},_this2.state,{action:"select",bounds:bounds})),_this2._initial={},_this2.setState({selecting:!1}),(0,helpers.me)(_this2.props.onSelectEnd,[_this2.state])}))}},{key:"_teardownSelectable",value:function _teardownSelectable(){this._selector&&(this._selector.teardown(),this._selector=null)}},{key:"_selectSlot",value:function _selectSlot(_ref){var endIdx=_ref.endIdx,startIdx=_ref.startIdx,action=_ref.action,bounds=_ref.bounds,box=_ref.box;-1!==endIdx&&-1!==startIdx&&this.props.onSelectSlot&&this.props.onSelectSlot({start:startIdx,end:endIdx,action:action,bounds:bounds,box:box,resourceId:this.props.resourceId})}}])}(react.Component);BackgroundCells.__docgenInfo={description:"",methods:[{name:"_selectable",docblock:null,modifiers:[],params:[],returns:null},{name:"_teardownSelectable",docblock:null,modifiers:[],params:[],returns:null},{name:"_selectSlot",docblock:null,modifiers:[],params:[{name:"{ endIdx, startIdx, action, bounds, box }",type:null}],returns:null}],displayName:"BackgroundCells",props:{date:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},getNow:{description:"",type:{name:"func"},required:!0},getters:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},container:{description:"",type:{name:"func"},required:!1},dayPropGetter:{description:"",type:{name:"func"},required:!1},selectable:{description:"",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},longPressThreshold:{description:"",type:{name:"number"},required:!1},onSelectSlot:{description:"",type:{name:"func"},required:!0},onSelectEnd:{description:"",type:{name:"func"},required:!1},onSelectStart:{description:"",type:{name:"func"},required:!1},range:{description:"",type:{name:"arrayOf",value:{name:"instanceOf",value:"Date"}},required:!1},rtl:{description:"",type:{name:"bool"},required:!1},type:{description:"",type:{name:"string"},required:!1},resourceId:{description:"",type:{name:"any"},required:!1},localizer:{description:"",type:{name:"any"},required:!1}}};var src_BackgroundCells=BackgroundCells;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/BackgroundCells.js"]={name:"BackgroundCells",docgenInfo:BackgroundCells.__docgenInfo,path:"src/BackgroundCells.js"});var EventRow=__webpack_require__("./src/EventRow.js"),EventRowMixin=(__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./src/EventRowMixin.js")),eventLevels=__webpack_require__("./src/utils/eventLevels.js"),range=__webpack_require__("./node_modules/lodash/range.js"),range_default=__webpack_require__.n(range),isSegmentInSlot=function isSegmentInSlot(seg,slot){return seg.left<=slot&&seg.right>=slot},eventsInSlot=function eventsInSlot(segments,slot){return segments.filter((function(seg){return isSegmentInSlot(seg,slot)})).map((function(seg){return seg.event}))},EventEndingRow=function(_React$Component){function EventEndingRow(){return(0,classCallCheck.default)(this,EventEndingRow),(0,callSuper.default)(this,EventEndingRow,arguments)}return(0,inherits.default)(EventEndingRow,_React$Component),(0,createClass.default)(EventEndingRow,[{key:"render",value:function render(){for(var _this$props=this.props,segments=_this$props.segments,slots=_this$props.slotMetrics.slots,rowSegments=(0,eventLevels.O_)(segments).levels[0],current=1,lastEnd=1,row=[];current<=slots;){var key="_lvl_"+current,_ref=rowSegments.filter((function(seg){return isSegmentInSlot(seg,current)}))[0]||{},event=_ref.event,left=_ref.left,right=_ref.right,span=_ref.span;if(event){var gap=Math.max(0,left-lastEnd);if(this.canRenderSlotEvent(left,span)){var content=EventRowMixin.A.renderEvent(this.props,event);gap&&row.push(EventRowMixin.A.renderSpan(slots,gap,key+"_gap")),row.push(EventRowMixin.A.renderSpan(slots,span,key,content)),lastEnd=current=right+1}else gap&&row.push(EventRowMixin.A.renderSpan(slots,gap,key+"_gap")),row.push(EventRowMixin.A.renderSpan(slots,1,key,this.renderShowMore(segments,current))),lastEnd=current+=1}else current++}return(0,jsx_runtime.jsx)("div",{className:"rbc-row",children:row})}},{key:"canRenderSlotEvent",value:function canRenderSlotEvent(slot,span){var segments=this.props.segments;return range_default()(slot,slot+span).every((function(s){return 1===eventsInSlot(segments,s).length}))}},{key:"renderShowMore",value:function renderShowMore(segments,slot){var _this=this,_this$props2=this.props,localizer=_this$props2.localizer,events=_this$props2.slotMetrics.getEventsForSlot(slot),remainingEvents=eventsInSlot(segments,slot),count=remainingEvents.length;return!!count&&(0,jsx_runtime.jsx)("button",{type:"button",className:(0,clsx_m.A)("rbc-button-link","rbc-show-more"),onClick:function onClick(e){return _this.showMore(slot,e)},children:localizer.messages.showMore(count,remainingEvents,events)},"sm_"+slot)}},{key:"showMore",value:function showMore(slot,e){e.preventDefault(),e.stopPropagation(),this.props.onShowMore(slot,e.target)}}])}(react.Component);EventEndingRow.defaultProps=Object.assign({},EventRowMixin.A.defaultProps),EventEndingRow.__docgenInfo={description:"",methods:[{name:"canRenderSlotEvent",docblock:null,modifiers:[],params:[{name:"slot",type:null},{name:"span",type:null}],returns:null},{name:"renderShowMore",docblock:null,modifiers:[],params:[{name:"segments",type:null},{name:"slot",type:null}],returns:null},{name:"showMore",docblock:null,modifiers:[],params:[{name:"slot",type:null},{name:"e",type:null}],returns:null}],displayName:"EventEndingRow",props:{segments:{description:"",type:{name:"array"},required:!1},slots:{description:"",type:{name:"number"},required:!1},onShowMore:{description:"",type:{name:"func"},required:!1}},composes:["./EventRowMixin"]};var src_EventEndingRow=EventEndingRow;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/EventEndingRow.js"]={name:"EventEndingRow",docgenInfo:EventEndingRow.__docgenInfo,path:"src/EventEndingRow.js"});var NoopWrapper=__webpack_require__("./src/NoopWrapper.js"),ScrollableWeekWrapper=function ScrollableWeekWrapper(_ref){var children=_ref.children;return(0,jsx_runtime.jsx)("div",{className:"rbc-row-content-scroll-container",children:children})};ScrollableWeekWrapper.displayName="ScrollableWeekWrapper",ScrollableWeekWrapper.__docgenInfo={description:"",methods:[],displayName:"ScrollableWeekWrapper"};var src_ScrollableWeekWrapper=ScrollableWeekWrapper;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/ScrollableWeekWrapper.js"]={name:"ScrollableWeekWrapper",docgenInfo:ScrollableWeekWrapper.__docgenInfo,path:"src/ScrollableWeekWrapper.js"});__webpack_require__("./node_modules/core-js/modules/es.array.find.js");var memoize_one_esm=__webpack_require__("./node_modules/memoize-one/dist/memoize-one.esm.js"),isEqual=function isEqual(a,b){return a[0].range===b[0].range&&a[0].events===b[0].events};function getSlotMetrics(){return(0,memoize_one_esm.A)((function(options){for(var range=options.range,events=options.events,maxRows=options.maxRows,minRows=options.minRows,accessors=options.accessors,localizer=options.localizer,_endOfRange=(0,eventLevels.qO)({dateRange:range,localizer:localizer}),first=_endOfRange.first,last=_endOfRange.last,segments=events.map((function(evt){return(0,eventLevels.FA)(evt,range,accessors,localizer)})),_eventLevels=(0,eventLevels.O_)(segments,Math.max(maxRows-1,1)),levels=_eventLevels.levels,extra=_eventLevels.extra,minEventRows=extra.length>0?minRows-1:minRows;levels.length=slot}(seg,slot)})).map((function(seg){return seg.event}))},continuesPrior:function continuesPrior(event){return localizer.continuesPrior(accessors.start(event),first)},continuesAfter:function continuesAfter(event){var start=accessors.start(event),end=accessors.end(event);return localizer.continuesAfter(start,end,last)}}}),isEqual)}var DateContentRow=function(_React$Component){function DateContentRow(){var _this;(0,classCallCheck.default)(this,DateContentRow);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,DateContentRow,[].concat(args))).handleSelectSlot=function(slot){var _this$props=_this.props,range=_this$props.range;(0,_this$props.onSelectSlot)(range.slice(slot.start,slot.end+1),slot)},_this.handleShowMore=function(slot,target){var cell,_this$props2=_this.props,range=_this$props2.range,onShowMore=_this$props2.onShowMore,metrics=_this.slotMetrics(_this.props),row=(0,querySelectorAll.A)(_this.containerRef.current,".rbc-row-bg")[0];row&&(cell=row.children[slot-1]),onShowMore(metrics.getEventsForSlot(slot),range[slot-1],cell,slot,target)},_this.getContainer=function(){var container=_this.props.container;return container?container():_this.containerRef.current},_this.renderHeadingCell=function(date,index){var _this$props3=_this.props,renderHeader=_this$props3.renderHeader,getNow=_this$props3.getNow,localizer=_this$props3.localizer;return renderHeader({date:date,key:"header_".concat(index),className:(0,clsx_m.A)("rbc-date-cell",localizer.isSameDate(date,getNow())&&"rbc-now")})},_this.renderDummy=function(){var _this$props4=_this.props,className=_this$props4.className,range=_this$props4.range,renderHeader=_this$props4.renderHeader,showAllEvents=_this$props4.showAllEvents;return(0,jsx_runtime.jsx)("div",{className:className,ref:_this.containerRef,children:(0,jsx_runtime.jsxs)("div",{className:(0,clsx_m.A)("rbc-row-content",showAllEvents&&"rbc-row-content-scrollable"),children:[renderHeader&&(0,jsx_runtime.jsx)("div",{className:"rbc-row",ref:_this.headingRowRef,children:range.map(_this.renderHeadingCell)}),(0,jsx_runtime.jsx)("div",{className:"rbc-row",ref:_this.eventRowRef,children:(0,jsx_runtime.jsx)("div",{className:"rbc-row-segment",children:(0,jsx_runtime.jsx)("div",{className:"rbc-event",children:(0,jsx_runtime.jsx)("div",{className:"rbc-event-content",children:" "})})})})]})})},_this.containerRef=(0,react.createRef)(),_this.headingRowRef=(0,react.createRef)(),_this.eventRowRef=(0,react.createRef)(),_this.slotMetrics=getSlotMetrics(),_this}return(0,inherits.default)(DateContentRow,_React$Component),(0,createClass.default)(DateContentRow,[{key:"getRowLimit",value:function getRowLimit(){var _this$headingRowRef,eventHeight=(0,height.A)(this.eventRowRef.current),headingHeight=null!==(_this$headingRowRef=this.headingRowRef)&&void 0!==_this$headingRowRef&&_this$headingRowRef.current?(0,height.A)(this.headingRowRef.current):0,eventSpace=(0,height.A)(this.containerRef.current)-headingHeight;return Math.max(Math.floor(eventSpace/eventHeight),1)}},{key:"render",value:function render(){var _this$props5=this.props,date=_this$props5.date,rtl=_this$props5.rtl,range=_this$props5.range,className=_this$props5.className,selected=_this$props5.selected,selectable=_this$props5.selectable,renderForMeasure=_this$props5.renderForMeasure,accessors=_this$props5.accessors,getters=_this$props5.getters,components=_this$props5.components,getNow=_this$props5.getNow,renderHeader=_this$props5.renderHeader,onSelect=_this$props5.onSelect,localizer=_this$props5.localizer,onSelectStart=_this$props5.onSelectStart,onSelectEnd=_this$props5.onSelectEnd,onDoubleClick=_this$props5.onDoubleClick,onKeyPress=_this$props5.onKeyPress,resourceId=_this$props5.resourceId,longPressThreshold=_this$props5.longPressThreshold,isAllDay=_this$props5.isAllDay,resizable=_this$props5.resizable,showAllEvents=_this$props5.showAllEvents;if(renderForMeasure)return this.renderDummy();var metrics=this.slotMetrics(this.props),levels=metrics.levels,extra=metrics.extra,ScrollableWeekComponent=showAllEvents?src_ScrollableWeekWrapper:NoopWrapper.A,WeekWrapper=components.weekWrapper,eventRowProps={selected:selected,accessors:accessors,getters:getters,localizer:localizer,components:components,onSelect:onSelect,onDoubleClick:onDoubleClick,onKeyPress:onKeyPress,resourceId:resourceId,slotMetrics:metrics,resizable:resizable};return(0,jsx_runtime.jsxs)("div",{className:className,role:"rowgroup",ref:this.containerRef,children:[(0,jsx_runtime.jsx)(src_BackgroundCells,{localizer:localizer,date:date,getNow:getNow,rtl:rtl,range:range,selectable:selectable,container:this.getContainer,getters:getters,onSelectStart:onSelectStart,onSelectEnd:onSelectEnd,onSelectSlot:this.handleSelectSlot,components:components,longPressThreshold:longPressThreshold,resourceId:resourceId}),(0,jsx_runtime.jsxs)("div",{className:(0,clsx_m.A)("rbc-row-content",showAllEvents&&"rbc-row-content-scrollable"),role:"row",children:[renderHeader&&(0,jsx_runtime.jsx)("div",{className:"rbc-row ",ref:this.headingRowRef,children:range.map(this.renderHeadingCell)}),(0,jsx_runtime.jsx)(ScrollableWeekComponent,{children:(0,jsx_runtime.jsxs)(WeekWrapper,Object.assign({isAllDay:isAllDay},eventRowProps,{rtl:this.props.rtl,children:[levels.map((function(segs,idx){return(0,jsx_runtime.jsx)(EventRow.A,Object.assign({segments:segs},eventRowProps),idx)})),!!extra.length&&(0,jsx_runtime.jsx)(src_EventEndingRow,Object.assign({segments:extra,onShowMore:this.handleShowMore},eventRowProps))]}))})]})]})}}])}(react.Component);DateContentRow.defaultProps={minRows:0,maxRows:1/0},DateContentRow.__docgenInfo={description:"",methods:[{name:"handleSelectSlot",docblock:null,modifiers:[],params:[{name:"slot",type:null}],returns:null},{name:"handleShowMore",docblock:null,modifiers:[],params:[{name:"slot",type:null},{name:"target",type:null}],returns:null},{name:"getContainer",docblock:null,modifiers:[],params:[],returns:null},{name:"getRowLimit",docblock:null,modifiers:[],params:[],returns:null},{name:"renderHeadingCell",docblock:null,modifiers:[],params:[{name:"date",type:null},{name:"index",type:null}],returns:null},{name:"renderDummy",docblock:null,modifiers:[],params:[],returns:null}],displayName:"DateContentRow",props:{minRows:{defaultValue:{value:"0",computed:!1},description:"",type:{name:"number"},required:!1},maxRows:{defaultValue:{value:"Infinity",computed:!0},description:"",type:{name:"number"},required:!1},date:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},events:{description:"",type:{name:"array"},required:!0},range:{description:"",type:{name:"array"},required:!0},rtl:{description:"",type:{name:"bool"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1},resourceId:{description:"",type:{name:"any"},required:!1},renderForMeasure:{description:"",type:{name:"bool"},required:!1},renderHeader:{description:"",type:{name:"func"},required:!1},container:{description:"",type:{name:"func"},required:!1},selected:{description:"",type:{name:"object"},required:!1},selectable:{description:"",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},longPressThreshold:{description:"",type:{name:"number"},required:!1},onShowMore:{description:"",type:{name:"func"},required:!1},showAllEvents:{description:"",type:{name:"bool"},required:!1},onSelectSlot:{description:"",type:{name:"func"},required:!1},onSelect:{description:"",type:{name:"func"},required:!1},onSelectEnd:{description:"",type:{name:"func"},required:!1},onSelectStart:{description:"",type:{name:"func"},required:!1},onDoubleClick:{description:"",type:{name:"func"},required:!1},onKeyPress:{description:"",type:{name:"func"},required:!1},dayPropGetter:{description:"",type:{name:"func"},required:!1},getNow:{description:"",type:{name:"func"},required:!0},isAllDay:{description:"",type:{name:"bool"},required:!1},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0}}};var src_DateContentRow=DateContentRow;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/DateContentRow.js"]={name:"DateContentRow",docgenInfo:DateContentRow.__docgenInfo,path:"src/DateContentRow.js"})},"./src/EventCell.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/classCallCheck.js"),_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/createClass.js"),_babel_runtime_helpers_esm_callSuper__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/callSuper.js"),_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/inherits.js"),react__WEBPACK_IMPORTED_MODULE_1__=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),clsx__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__("./node_modules/clsx/dist/clsx.m.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/react/jsx-runtime.js"),_excluded=["style","className","event","selected","isAllDay","onSelect","onDoubleClick","onKeyPress","localizer","continuesPrior","continuesAfter","accessors","getters","children","components","slotStart","slotEnd"],EventCell=function(_React$Component){function EventCell(){return(0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_3__.default)(this,EventCell),(0,_babel_runtime_helpers_esm_callSuper__WEBPACK_IMPORTED_MODULE_4__.default)(this,EventCell,arguments)}return(0,_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__.default)(EventCell,_React$Component),(0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_6__.default)(EventCell,[{key:"render",value:function render(){var _this$props=this.props,style=_this$props.style,className=_this$props.className,event=_this$props.event,selected=_this$props.selected,isAllDay=_this$props.isAllDay,onSelect=_this$props.onSelect,_onDoubleClick=_this$props.onDoubleClick,onKeyPress=_this$props.onKeyPress,localizer=_this$props.localizer,continuesPrior=_this$props.continuesPrior,continuesAfter=_this$props.continuesAfter,accessors=_this$props.accessors,getters=_this$props.getters,children=_this$props.children,_this$props$component=_this$props.components,Event=_this$props$component.event,EventWrapper=_this$props$component.eventWrapper,slotStart=_this$props.slotStart,slotEnd=_this$props.slotEnd,props=(0,_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_7__.A)(_this$props,_excluded);delete props.resizable;var title=accessors.title(event),tooltip=accessors.tooltip(event),end=accessors.end(event),start=accessors.start(event),allDay=accessors.allDay(event),showAsAllDay=isAllDay||allDay||localizer.diff(start,localizer.ceil(end,"day"),"day")>1,userProps=getters.eventProp(event,start,end,selected),content=(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("div",{className:"rbc-event-content",title:tooltip||void 0,children:Event?(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Event,{event:event,continuesPrior:continuesPrior,continuesAfter:continuesAfter,title:title,isAllDay:allDay,localizer:localizer,slotStart:slotStart,slotEnd:slotEnd}):title});return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(EventWrapper,Object.assign({},this.props,{type:"date",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("div",Object.assign({},props,{style:Object.assign({},userProps.style,style),className:(0,clsx__WEBPACK_IMPORTED_MODULE_8__.A)("rbc-event",className,userProps.className,{"rbc-selected":selected,"rbc-event-allday":showAsAllDay,"rbc-event-continues-prior":continuesPrior,"rbc-event-continues-after":continuesAfter}),onClick:function onClick(e){return onSelect&&onSelect(event,e)},onDoubleClick:function onDoubleClick(e){return _onDoubleClick&&_onDoubleClick(event,e)},onKeyDown:function onKeyDown(e){return onKeyPress&&onKeyPress(event,e)},children:"function"==typeof children?children(content):content}))}))}}])}(react__WEBPACK_IMPORTED_MODULE_1__.Component);EventCell.__docgenInfo={description:"",methods:[],displayName:"EventCell",props:{event:{description:"",type:{name:"object"},required:!0},slotStart:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},slotEnd:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1},selected:{description:"",type:{name:"bool"},required:!1},isAllDay:{description:"",type:{name:"bool"},required:!1},continuesPrior:{description:"",type:{name:"bool"},required:!1},continuesAfter:{description:"",type:{name:"bool"},required:!1},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!1},onSelect:{description:"",type:{name:"func"},required:!1},onDoubleClick:{description:"",type:{name:"func"},required:!1},onKeyPress:{description:"",type:{name:"func"},required:!1}}},__webpack_exports__.A=EventCell,"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/EventCell.js"]={name:"EventCell",docgenInfo:EventCell.__docgenInfo,path:"src/EventCell.js"})},"./src/EventRow.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/classCallCheck.js"),_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/createClass.js"),_babel_runtime_helpers_esm_callSuper__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/callSuper.js"),_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/inherits.js"),clsx__WEBPACK_IMPORTED_MODULE_8__=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/clsx/dist/clsx.m.js")),react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/react/index.js"),_EventRowMixin__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./src/EventRowMixin.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/react/jsx-runtime.js"),EventRow=function(_React$Component){function EventRow(){return(0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_4__.default)(this,EventRow),(0,_babel_runtime_helpers_esm_callSuper__WEBPACK_IMPORTED_MODULE_5__.default)(this,EventRow,arguments)}return(0,_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_6__.default)(EventRow,_React$Component),(0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_7__.default)(EventRow,[{key:"render",value:function render(){var _this=this,_this$props=this.props,segments=_this$props.segments,slots=_this$props.slotMetrics.slots,className=_this$props.className,lastEnd=1;return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div",{className:(0,clsx__WEBPACK_IMPORTED_MODULE_8__.A)(className,"rbc-row"),children:segments.reduce((function(row,_ref,li){var event=_ref.event,left=_ref.left,right=_ref.right,span=_ref.span,key="_lvl_"+li,gap=left-lastEnd,content=_EventRowMixin__WEBPACK_IMPORTED_MODULE_2__.A.renderEvent(_this.props,event);return gap&&row.push(_EventRowMixin__WEBPACK_IMPORTED_MODULE_2__.A.renderSpan(slots,gap,"".concat(key,"_gap"))),row.push(_EventRowMixin__WEBPACK_IMPORTED_MODULE_2__.A.renderSpan(slots,span,key,content)),lastEnd=right+1,row}),[])})}}])}(react__WEBPACK_IMPORTED_MODULE_1__.Component);EventRow.defaultProps=Object.assign({},_EventRowMixin__WEBPACK_IMPORTED_MODULE_2__.A.defaultProps),EventRow.__docgenInfo={description:"",methods:[],displayName:"EventRow",props:{segments:{description:"",type:{name:"array"},required:!1}},composes:["./EventRowMixin"]},__webpack_exports__.A=EventRow,"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/EventRow.js"]={name:"EventRow",docgenInfo:EventRow.__docgenInfo,path:"src/EventRow.js"})},"./src/EventRowMixin.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";var prop_types__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/prop-types/index.js"),prop_types__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__),_EventCell__WEBPACK_IMPORTED_MODULE_1__=(__webpack_require__("./node_modules/react/index.js"),__webpack_require__("./src/EventCell.js")),_utils_selection__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./src/utils/selection.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/react/jsx-runtime.js");__webpack_exports__.A={propTypes:{slotMetrics:prop_types__WEBPACK_IMPORTED_MODULE_4___default().object.isRequired,selected:prop_types__WEBPACK_IMPORTED_MODULE_4___default().object,isAllDay:prop_types__WEBPACK_IMPORTED_MODULE_4___default().bool,accessors:prop_types__WEBPACK_IMPORTED_MODULE_4___default().object.isRequired,localizer:prop_types__WEBPACK_IMPORTED_MODULE_4___default().object.isRequired,components:prop_types__WEBPACK_IMPORTED_MODULE_4___default().object.isRequired,getters:prop_types__WEBPACK_IMPORTED_MODULE_4___default().object.isRequired,onSelect:prop_types__WEBPACK_IMPORTED_MODULE_4___default().func,onDoubleClick:prop_types__WEBPACK_IMPORTED_MODULE_4___default().func,onKeyPress:prop_types__WEBPACK_IMPORTED_MODULE_4___default().func},defaultProps:{segments:[],selected:{}},renderEvent:function renderEvent(props,event){var selected=props.selected,accessors=(props.isAllDay,props.accessors),getters=props.getters,onSelect=props.onSelect,onDoubleClick=props.onDoubleClick,onKeyPress=props.onKeyPress,localizer=props.localizer,slotMetrics=props.slotMetrics,components=props.components,resizable=props.resizable,continuesPrior=slotMetrics.continuesPrior(event),continuesAfter=slotMetrics.continuesAfter(event);return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_EventCell__WEBPACK_IMPORTED_MODULE_1__.A,{event:event,getters:getters,localizer:localizer,accessors:accessors,components:components,onSelect:onSelect,onDoubleClick:onDoubleClick,onKeyPress:onKeyPress,continuesPrior:continuesPrior,continuesAfter:continuesAfter,slotStart:slotMetrics.first,slotEnd:slotMetrics.last,selected:(0,_utils_selection__WEBPACK_IMPORTED_MODULE_2__.sp)(event,selected),resizable:resizable})},renderSpan:function renderSpan(slots,len,key){var content=arguments.length>3&&void 0!==arguments[3]?arguments[3]:" ",per=Math.abs(len)/slots*100+"%";return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div",{className:"rbc-row-segment",style:{WebkitFlexBasis:per,flexBasis:per,maxWidth:per},children:content},key)}}},"./src/Header.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__("./node_modules/react/index.js");var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/react/jsx-runtime.js"),Header=function Header(_ref){var label=_ref.label;return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)("span",{role:"columnheader","aria-sort":"none",children:label})};Header.displayName="Header",Header.__docgenInfo={description:"",methods:[],displayName:"Header",props:{label:{description:"",type:{name:"node"},required:!1}}},__webpack_exports__.A=Header,"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/Header.js"]={name:"Header",docgenInfo:Header.__docgenInfo,path:"src/Header.js"})},"./src/NoopWrapper.js":function(__unused_webpack_module,__webpack_exports__){"use strict";__webpack_exports__.A=function NoopWrapper(props){return props.children}},"./src/PopOverlay.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return src_PopOverlay}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),prop_types=__webpack_require__("./node_modules/prop-types/index.js"),prop_types_default=__webpack_require__.n(prop_types),Overlay=__webpack_require__("./node_modules/react-overlays/esm/Overlay.js"),esm_offset=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/dom-helpers/esm/offset.js"));var EventCell=__webpack_require__("./src/EventCell.js"),selection=__webpack_require__("./src/utils/selection.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");function Pop(_ref2){var containerRef=_ref2.containerRef,accessors=_ref2.accessors,getters=_ref2.getters,selected=_ref2.selected,components=_ref2.components,localizer=_ref2.localizer,position=_ref2.position,show=_ref2.show,events=_ref2.events,slotStart=_ref2.slotStart,slotEnd=_ref2.slotEnd,onSelect=_ref2.onSelect,onDoubleClick=_ref2.onDoubleClick,onKeyPress=_ref2.onKeyPress,handleDragStart=_ref2.handleDragStart,popperRef=_ref2.popperRef,target=_ref2.target,offset=_ref2.offset;!function useClickOutside(_ref){var ref=_ref.ref,callback=_ref.callback;(0,react.useEffect)((function(){var handleClickOutside=function handleClickOutside(e){ref.current&&!ref.current.contains(e.target)&&callback()};return document.addEventListener("mousedown",handleClickOutside),function(){document.removeEventListener("mousedown",handleClickOutside)}}),[ref,callback])}({ref:popperRef,callback:show}),(0,react.useLayoutEffect)((function(){var _getPosition=function getPosition(_ref){var target=_ref.target,offset=_ref.offset,container=_ref.container,box=_ref.box,_getOffset=(0,esm_offset.A)(target),top=_getOffset.top,left=_getOffset.left,width=_getOffset.width,height=_getOffset.height,_getOffset2=(0,esm_offset.A)(container),cTop=_getOffset2.top,cLeft=_getOffset2.left,cWidth=_getOffset2.width,cHeight=_getOffset2.height,_getOffset3=(0,esm_offset.A)(box),bWidth=_getOffset3.width,bHeight=_getOffset3.height,viewBottom=cTop+cHeight,viewRight=cLeft+cWidth,bottom=top+bHeight,right=left+bWidth,x=offset.x,y=offset.y;return{topOffset:bottom>viewBottom?top-bHeight-y:top+y+height,leftOffset:right>viewRight?left+x-bWidth+width:left+x}}({target:target,offset:offset,container:containerRef.current,box:popperRef.current}),topOffset=_getPosition.topOffset,leftOffset=_getPosition.leftOffset;popperRef.current.style.top="".concat(topOffset,"px"),popperRef.current.style.left="".concat(leftOffset,"px")}),[offset.x,offset.y,target]);var width=position.width,style={minWidth:width+width/2};return(0,jsx_runtime.jsxs)("div",{style:style,className:"rbc-overlay",ref:popperRef,children:[(0,jsx_runtime.jsx)("div",{className:"rbc-overlay-header",children:localizer.format(slotStart,"dayHeaderFormat")}),events.map((function(event,idx){return(0,jsx_runtime.jsx)(EventCell.A,{type:"popup",localizer:localizer,event:event,getters:getters,onSelect:onSelect,accessors:accessors,components:components,onDoubleClick:onDoubleClick,onKeyPress:onKeyPress,continuesPrior:localizer.lt(accessors.end(event),slotStart,"day"),continuesAfter:localizer.gte(accessors.start(event),slotEnd,"day"),slotStart:slotStart,slotEnd:slotEnd,selected:(0,selection.sp)(event,selected),draggable:!0,onDragStart:function onDragStart(){return handleDragStart(event)},onDragEnd:function onDragEnd(){return show()}},idx)}))]})}Pop.displayName="Pop";var Popup=react.forwardRef((function(props,ref){return(0,jsx_runtime.jsx)(Pop,Object.assign({},props,{popperRef:ref}))}));Popup.propTypes={accessors:prop_types_default().object.isRequired,getters:prop_types_default().object.isRequired,selected:prop_types_default().object,components:prop_types_default().object.isRequired,localizer:prop_types_default().object.isRequired,position:prop_types_default().object.isRequired,show:prop_types_default().func.isRequired,events:prop_types_default().array.isRequired,slotStart:prop_types_default().instanceOf(Date).isRequired,slotEnd:prop_types_default().instanceOf(Date),onSelect:prop_types_default().func,onDoubleClick:prop_types_default().func,onKeyPress:prop_types_default().func,handleDragStart:prop_types_default().func,style:prop_types_default().object,offset:prop_types_default().shape({x:prop_types_default().number,y:prop_types_default().number})},Popup.__docgenInfo={description:"",methods:[],displayName:"Popup",props:{accessors:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},selected:{description:"",type:{name:"object"},required:!1},components:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},position:{description:"",type:{name:"object"},required:!0},show:{description:"",type:{name:"func"},required:!0},events:{description:"",type:{name:"array"},required:!0},slotStart:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},slotEnd:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},onSelect:{description:"",type:{name:"func"},required:!1},onDoubleClick:{description:"",type:{name:"func"},required:!1},onKeyPress:{description:"",type:{name:"func"},required:!1},handleDragStart:{description:"",type:{name:"func"},required:!1},style:{description:"",type:{name:"object"},required:!1},offset:{description:"",type:{name:"shape",value:{x:{name:"number",required:!1},y:{name:"number",required:!1}}},required:!1}}};var src_Popup=Popup;function CalOverlay(_ref){var containerRef=_ref.containerRef,_ref$popupOffset=_ref.popupOffset,popupOffset=void 0===_ref$popupOffset?5:_ref$popupOffset,overlay=_ref.overlay,accessors=_ref.accessors,localizer=_ref.localizer,components=_ref.components,getters=_ref.getters,selected=_ref.selected,handleSelectEvent=_ref.handleSelectEvent,handleDoubleClickEvent=_ref.handleDoubleClickEvent,handleKeyPressEvent=_ref.handleKeyPressEvent,handleDragStart=_ref.handleDragStart,onHide=_ref.onHide,overlayDisplay=_ref.overlayDisplay,popperRef=(0,react.useRef)(null);if(!overlay.position)return null;var offset=popupOffset;isNaN(popupOffset)||(offset={x:popupOffset,y:popupOffset});var position=overlay.position,events=overlay.events,date=overlay.date,end=overlay.end;return(0,jsx_runtime.jsx)(Overlay.A,{rootClose:!0,flip:!0,show:!0,placement:"bottom",onHide:onHide,target:overlay.target,children:function children(_ref2){var props=_ref2.props;return(0,jsx_runtime.jsx)(src_Popup,Object.assign({},props,{containerRef:containerRef,ref:popperRef,target:overlay.target,offset:offset,accessors:accessors,getters:getters,selected:selected,components:components,localizer:localizer,position:position,show:overlayDisplay,events:events,slotStart:date,slotEnd:end,onSelect:handleSelectEvent,onDoubleClick:handleDoubleClickEvent,onKeyPress:handleKeyPressEvent,handleDragStart:handleDragStart}))}})}"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/Popup.js"]={name:"Popup",docgenInfo:Popup.__docgenInfo,path:"src/Popup.js"}),CalOverlay.displayName="CalOverlay";var PopOverlay=react.forwardRef((function(props,ref){return(0,jsx_runtime.jsx)(CalOverlay,Object.assign({},props,{containerRef:ref}))}));PopOverlay.propTypes={popupOffset:prop_types_default().oneOfType([prop_types_default().number,prop_types_default().shape({x:prop_types_default().number,y:prop_types_default().number})]),overlay:prop_types_default().shape({position:prop_types_default().object,events:prop_types_default().array,date:prop_types_default().instanceOf(Date),end:prop_types_default().instanceOf(Date)}),accessors:prop_types_default().object.isRequired,localizer:prop_types_default().object.isRequired,components:prop_types_default().object.isRequired,getters:prop_types_default().object.isRequired,selected:prop_types_default().object,handleSelectEvent:prop_types_default().func,handleDoubleClickEvent:prop_types_default().func,handleKeyPressEvent:prop_types_default().func,handleDragStart:prop_types_default().func,onHide:prop_types_default().func,overlayDisplay:prop_types_default().func},PopOverlay.__docgenInfo={description:"",methods:[],displayName:"PopOverlay",props:{popupOffset:{description:"",type:{name:"union",value:[{name:"number"},{name:"shape",value:{x:{name:"number",required:!1},y:{name:"number",required:!1}}}]},required:!1},overlay:{description:"",type:{name:"shape",value:{position:{name:"object",required:!1},events:{name:"array",required:!1},date:{name:"instanceOf",value:"Date",required:!1},end:{name:"instanceOf",value:"Date",required:!1}}},required:!1},accessors:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},selected:{description:"",type:{name:"object"},required:!1},handleSelectEvent:{description:"",type:{name:"func"},required:!1},handleDoubleClickEvent:{description:"",type:{name:"func"},required:!1},handleKeyPressEvent:{description:"",type:{name:"func"},required:!1},handleDragStart:{description:"",type:{name:"func"},required:!1},onHide:{description:"",type:{name:"func"},required:!1},overlayDisplay:{description:"",type:{name:"func"},required:!1}}};var src_PopOverlay=PopOverlay;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/PopOverlay.js"]={name:"PopOverlay",docgenInfo:PopOverlay.__docgenInfo,path:"src/PopOverlay.js"})},"./src/Selection.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{LP:function(){return getEventNodeFromPoint},fN:function(){return isShowMore},rF:function(){return getBoundsForNode},xH:function(){return isEvent}});var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/classCallCheck.js"),_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/createClass.js"),dom_helpers_contains__WEBPACK_IMPORTED_MODULE_6__=(__webpack_require__("./node_modules/core-js/modules/es.array.splice.js"),__webpack_require__("./node_modules/core-js/modules/web.dom-collections.for-each.js"),__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/es.array.includes.js"),__webpack_require__("./node_modules/core-js/modules/es.string.includes.js"),__webpack_require__("./node_modules/dom-helpers/esm/contains.js")),dom_helpers_closest__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("./node_modules/dom-helpers/esm/closest.js"),dom_helpers_listen__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/dom-helpers/esm/listen.js");function addEventListener(type,handler){var target=arguments.length>2&&void 0!==arguments[2]?arguments[2]:document;return(0,dom_helpers_listen__WEBPACK_IMPORTED_MODULE_5__.A)(target,type,handler,{passive:!1})}function getEventNodeFromPoint(node,_ref){var clientX=_ref.clientX,clientY=_ref.clientY,target=document.elementFromPoint(clientX,clientY);return(0,dom_helpers_closest__WEBPACK_IMPORTED_MODULE_7__.A)(target,".rbc-event",node)}function isEvent(node,bounds){return!!getEventNodeFromPoint(node,bounds)}function isShowMore(node,bounds){return!!function getShowMoreNodeFromPoint(node,_ref2){var clientX=_ref2.clientX,clientY=_ref2.clientY,target=document.elementFromPoint(clientX,clientY);return(0,dom_helpers_closest__WEBPACK_IMPORTED_MODULE_7__.A)(target,".rbc-show-more",node)}(node,bounds)}function getEventCoordinates(e){var target=e;return e.touches&&e.touches.length&&(target=e.touches[0]),{clientX:target.clientX,clientY:target.clientY,pageX:target.pageX,pageY:target.pageY}}var Selection=function(){return(0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_9__.default)((function Selection(node){var _ref3=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},_ref3$global=_ref3.global,global=void 0!==_ref3$global&&_ref3$global,_ref3$longPressThresh=_ref3.longPressThreshold,longPressThreshold=void 0===_ref3$longPressThresh?250:_ref3$longPressThresh,_ref3$validContainers=_ref3.validContainers,validContainers=void 0===_ref3$validContainers?[]:_ref3$validContainers;(0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_8__.default)(this,Selection),this._initialEvent=null,this.selecting=!1,this.isDetached=!1,this.container=node,this.globalMouse=!node||global,this.longPressThreshold=longPressThreshold,this.validContainers=validContainers,this._listeners=Object.create(null),this._handleInitialEvent=this._handleInitialEvent.bind(this),this._handleMoveEvent=this._handleMoveEvent.bind(this),this._handleTerminatingEvent=this._handleTerminatingEvent.bind(this),this._keyListener=this._keyListener.bind(this),this._dropFromOutsideListener=this._dropFromOutsideListener.bind(this),this._dragOverFromOutsideListener=this._dragOverFromOutsideListener.bind(this),this._removeTouchMoveWindowListener=addEventListener("touchmove",(function(){}),window),this._removeKeyDownListener=addEventListener("keydown",this._keyListener),this._removeKeyUpListener=addEventListener("keyup",this._keyListener),this._removeDropFromOutsideListener=addEventListener("drop",this._dropFromOutsideListener),this._removeDragOverFromOutsideListener=addEventListener("dragover",this._dragOverFromOutsideListener),this._addInitialEventListener()}),[{key:"on",value:function on(type,handler){var handlers=this._listeners[type]||(this._listeners[type]=[]);return handlers.push(handler),{remove:function remove(){var idx=handlers.indexOf(handler);-1!==idx&&handlers.splice(idx,1)}}}},{key:"emit",value:function emit(type){for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)args[_key-1]=arguments[_key];var result;return(this._listeners[type]||[]).forEach((function(fn){void 0===result&&(result=fn.apply(void 0,args))})),result}},{key:"teardown",value:function teardown(){this._initialEvent=null,this._initialEventData=null,this._selectRect=null,this.selecting=!1,this._lastClickData=null,this.isDetached=!0,this._listeners=Object.create(null),this._removeTouchMoveWindowListener&&this._removeTouchMoveWindowListener(),this._removeInitialEventListener&&this._removeInitialEventListener(),this._removeEndListener&&this._removeEndListener(),this._onEscListener&&this._onEscListener(),this._removeMoveListener&&this._removeMoveListener(),this._removeKeyUpListener&&this._removeKeyUpListener(),this._removeKeyDownListener&&this._removeKeyDownListener(),this._removeDropFromOutsideListener&&this._removeDropFromOutsideListener(),this._removeDragOverFromOutsideListener&&this._removeDragOverFromOutsideListener()}},{key:"isSelected",value:function isSelected(node){var box=this._selectRect;return!(!box||!this.selecting)&&objectsCollide(box,getBoundsForNode(node))}},{key:"filter",value:function filter(items){return this._selectRect&&this.selecting?items.filter(this.isSelected,this):[]}},{key:"_addLongPressListener",value:function _addLongPressListener(handler,initialEvent){var _this=this,timer=null,removeTouchMoveListener=null,removeTouchEndListener=null,handleTouchStart=function handleTouchStart(initialEvent){timer=setTimeout((function(){cleanup(),handler(initialEvent)}),_this.longPressThreshold),removeTouchMoveListener=addEventListener("touchmove",(function(){return cleanup()})),removeTouchEndListener=addEventListener("touchend",(function(){return cleanup()}))},removeTouchStartListener=addEventListener("touchstart",handleTouchStart),cleanup=function cleanup(){timer&&clearTimeout(timer),removeTouchMoveListener&&removeTouchMoveListener(),removeTouchEndListener&&removeTouchEndListener(),timer=null,removeTouchMoveListener=null,removeTouchEndListener=null};return initialEvent&&handleTouchStart(initialEvent),function(){cleanup(),removeTouchStartListener()}}},{key:"_addInitialEventListener",value:function _addInitialEventListener(){var _this2=this,removeMouseDownListener=addEventListener("mousedown",(function(e){_this2._removeInitialEventListener(),_this2._handleInitialEvent(e),_this2._removeInitialEventListener=addEventListener("mousedown",_this2._handleInitialEvent)})),removeTouchStartListener=addEventListener("touchstart",(function(e){_this2._removeInitialEventListener(),_this2._removeInitialEventListener=_this2._addLongPressListener(_this2._handleInitialEvent,e)}));this._removeInitialEventListener=function(){removeMouseDownListener(),removeTouchStartListener()}}},{key:"_dropFromOutsideListener",value:function _dropFromOutsideListener(e){var _getEventCoordinates=getEventCoordinates(e),pageX=_getEventCoordinates.pageX,pageY=_getEventCoordinates.pageY,clientX=_getEventCoordinates.clientX,clientY=_getEventCoordinates.clientY;this.emit("dropFromOutside",{x:pageX,y:pageY,clientX:clientX,clientY:clientY}),e.preventDefault()}},{key:"_dragOverFromOutsideListener",value:function _dragOverFromOutsideListener(e){var _getEventCoordinates2=getEventCoordinates(e),pageX=_getEventCoordinates2.pageX,pageY=_getEventCoordinates2.pageY,clientX=_getEventCoordinates2.clientX,clientY=_getEventCoordinates2.clientY;this.emit("dragOverFromOutside",{x:pageX,y:pageY,clientX:clientX,clientY:clientY}),e.preventDefault()}},{key:"_handleInitialEvent",value:function _handleInitialEvent(e){if(this._initialEvent=e,!this.isDetached){var offsetData,_getEventCoordinates3=getEventCoordinates(e),clientX=_getEventCoordinates3.clientX,clientY=_getEventCoordinates3.clientY,pageX=_getEventCoordinates3.pageX,pageY=_getEventCoordinates3.pageY,node=this.container();if(3!==e.which&&2!==e.button&&function isOverContainer(container,x,y){return!container||(0,dom_helpers_contains__WEBPACK_IMPORTED_MODULE_6__.A)(container,document.elementFromPoint(x,y))}(node,clientX,clientY)){if(!this.globalMouse&&node&&!(0,dom_helpers_contains__WEBPACK_IMPORTED_MODULE_6__.A)(node,e.target)){var _normalizeDistance=function normalizeDistance(){var distance=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;"object"!=typeof distance&&(distance={top:distance,left:distance,right:distance,bottom:distance});return distance}(0),top=_normalizeDistance.top,left=_normalizeDistance.left,bottom=_normalizeDistance.bottom,right=_normalizeDistance.right;if(!objectsCollide({top:(offsetData=getBoundsForNode(node)).top-top,left:offsetData.left-left,bottom:offsetData.bottom+bottom,right:offsetData.right+right},{top:pageY,left:pageX}))return}if(!1!==this.emit("beforeSelect",this._initialEventData={isTouch:/^touch/.test(e.type),x:pageX,y:pageY,clientX:clientX,clientY:clientY}))switch(e.type){case"mousedown":this._removeEndListener=addEventListener("mouseup",this._handleTerminatingEvent),this._onEscListener=addEventListener("keydown",this._handleTerminatingEvent),this._removeMoveListener=addEventListener("mousemove",this._handleMoveEvent);break;case"touchstart":this._handleMoveEvent(e),this._removeEndListener=addEventListener("touchend",this._handleTerminatingEvent),this._removeMoveListener=addEventListener("touchmove",this._handleMoveEvent)}}}}},{key:"_isWithinValidContainer",value:function _isWithinValidContainer(e){var eventTarget=e.target,containers=this.validContainers;return!(containers&&containers.length&&eventTarget)||containers.some((function(target){return!!eventTarget.closest(target)}))}},{key:"_handleTerminatingEvent",value:function _handleTerminatingEvent(e){var selecting=this.selecting,bounds=this._selectRect;if(!selecting&&e.type.includes("key")&&(e=this._initialEvent),this.selecting=!1,this._removeEndListener&&this._removeEndListener(),this._removeMoveListener&&this._removeMoveListener(),this._selectRect=null,this._initialEvent=null,this._initialEventData=null,e){var inRoot=!this.container||(0,dom_helpers_contains__WEBPACK_IMPORTED_MODULE_6__.A)(this.container(),e.target),isWithinValidContainer=this._isWithinValidContainer(e);return"Escape"!==e.key&&isWithinValidContainer?!selecting&&inRoot?this._handleClickEvent(e):selecting?this.emit("select",bounds):this.emit("reset"):this.emit("reset")}}},{key:"_handleClickEvent",value:function _handleClickEvent(e){var _getEventCoordinates4=getEventCoordinates(e),pageX=_getEventCoordinates4.pageX,pageY=_getEventCoordinates4.pageY,clientX=_getEventCoordinates4.clientX,clientY=_getEventCoordinates4.clientY,now=(new Date).getTime();return this._lastClickData&&now-this._lastClickData.timestamp<250?(this._lastClickData=null,this.emit("doubleClick",{x:pageX,y:pageY,clientX:clientX,clientY:clientY})):(this._lastClickData={timestamp:now},this.emit("click",{x:pageX,y:pageY,clientX:clientX,clientY:clientY}))}},{key:"_handleMoveEvent",value:function _handleMoveEvent(e){if(null!==this._initialEventData&&!this.isDetached){var _this$_initialEventDa=this._initialEventData,x=_this$_initialEventDa.x,y=_this$_initialEventDa.y,_getEventCoordinates5=getEventCoordinates(e),pageX=_getEventCoordinates5.pageX,pageY=_getEventCoordinates5.pageY,w=Math.abs(x-pageX),h=Math.abs(y-pageY),left=Math.min(pageX,x),top=Math.min(pageY,y),old=this.selecting,click=this.isClick(pageX,pageY);(!click||old||w||h)&&(old||click||this.emit("selectStart",this._initialEventData),click||(this.selecting=!0,this._selectRect={top:top,left:left,x:pageX,y:pageY,right:left+w,bottom:top+h},this.emit("selecting",this._selectRect)),e.preventDefault())}}},{key:"_keyListener",value:function _keyListener(e){this.ctrl=e.metaKey||e.ctrlKey}},{key:"isClick",value:function isClick(pageX,pageY){var _this$_initialEventDa2=this._initialEventData,x=_this$_initialEventDa2.x,y=_this$_initialEventDa2.y;return!_this$_initialEventDa2.isTouch&&Math.abs(pageX-x)<=5&&Math.abs(pageY-y)<=5}}])}();function objectsCollide(nodeA,nodeB){var tolerance=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,_getBoundsForNode=getBoundsForNode(nodeA),aTop=_getBoundsForNode.top,aLeft=_getBoundsForNode.left,_getBoundsForNode$rig=_getBoundsForNode.right,aRight=void 0===_getBoundsForNode$rig?aLeft:_getBoundsForNode$rig,_getBoundsForNode$bot=_getBoundsForNode.bottom,aBottom=void 0===_getBoundsForNode$bot?aTop:_getBoundsForNode$bot,_getBoundsForNode2=getBoundsForNode(nodeB),bTop=_getBoundsForNode2.top,bLeft=_getBoundsForNode2.left,_getBoundsForNode2$ri=_getBoundsForNode2.right,bRight=void 0===_getBoundsForNode2$ri?bLeft:_getBoundsForNode2$ri,_getBoundsForNode2$bo=_getBoundsForNode2.bottom;return!(aBottom-tolerance(void 0===_getBoundsForNode2$bo?bTop:_getBoundsForNode2$bo)||aRight-tolerancebRight)}function getBoundsForNode(node){if(!node.getBoundingClientRect)return node;var rect=node.getBoundingClientRect(),left=rect.left+pageOffset("left"),top=rect.top+pageOffset("top");return{top:top,left:left,right:(node.offsetWidth||0)+left,bottom:(node.offsetHeight||0)+top}}function pageOffset(dir){return"left"===dir?window.pageXOffset||document.body.scrollLeft||0:"top"===dir?window.pageYOffset||document.body.scrollTop||0:void 0}__webpack_exports__.Ay=Selection},"./src/TimeGrid.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return TimeGrid}});var slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),classCallCheck=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/classCallCheck.js"),createClass=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/createClass.js"),callSuper=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/callSuper.js"),inherits=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/inherits.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/web.dom-collections.for-each.js"),__webpack_require__("./node_modules/core-js/modules/es.array.sort.js"),__webpack_require__("./node_modules/react/index.js")),clsx_m=__webpack_require__("./node_modules/clsx/dist/clsx.m.js"),animationFrame=__webpack_require__("./node_modules/dom-helpers/esm/animationFrame.js"),memoize_one_esm=__webpack_require__("./node_modules/memoize-one/dist/memoize-one.esm.js"),objectWithoutProperties=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),Selection=(__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./src/Selection.js")),getKey=(__webpack_require__("./node_modules/core-js/modules/es.array.find-index.js"),function getKey(_ref){var min=_ref.min,max=_ref.max,step=_ref.step,slots=_ref.slots,localizer=_ref.localizer;return"".concat(+localizer.startOf(min,"minutes"))+"".concat(+localizer.startOf(max,"minutes"))+"".concat(step,"-").concat(slots)});function getSlotMetrics(_ref2){for(var start=_ref2.min,end=_ref2.max,step=_ref2.step,timeslots=_ref2.timeslots,localizer=_ref2.localizer,key=getKey({start:start,end:end,step:step,timeslots:timeslots,localizer:localizer}),totalMin=1+localizer.getTotalMin(start,end),minutesFromMidnight=localizer.getMinutesFromMidnight(start),numGroups=Math.ceil((totalMin-1)/(step*timeslots)),numSlots=numGroups*timeslots,groups=new Array(numGroups),slots=new Array(numSlots),grp=0;grp1&&void 0!==arguments[1]?arguments[1]:0;if(localizer.lt(date,start,"minutes"))return slots[0];if(localizer.gt(date,end,"minutes"))return slots[slots.length-1];var diffMins=localizer.diff(start,date,"minutes");return slots[(diffMins-diffMins%step)/step+offset]},startsBeforeDay:function startsBeforeDay(date){return localizer.lt(date,start,"day")},startsAfterDay:function startsAfterDay(date){return localizer.gt(date,end,"day")},startsBefore:function startsBefore(date){return localizer.lt(localizer.merge(start,date),start,"minutes")},startsAfter:function startsAfter(date){return localizer.gt(localizer.merge(end,date),end,"minutes")},getRange:function getRange(rangeStart,rangeEnd,ignoreMin,ignoreMax){ignoreMin||(rangeStart=localizer.min(end,localizer.max(start,rangeStart))),ignoreMax||(rangeEnd=localizer.min(end,localizer.max(start,rangeEnd)));var rangeStartMin=positionFromDate(rangeStart),rangeEndMin=positionFromDate(rangeEnd),top=rangeEndMin>step*numSlots&&!localizer.eq(end,rangeEnd)?(rangeStartMin-step)/(step*numSlots)*100:rangeStartMin/(step*numSlots)*100;return{top:top,height:rangeEndMin/(step*numSlots)*100-top,start:positionFromDate(rangeStart),startDate:rangeStart,end:positionFromDate(rangeEnd),endDate:rangeEnd}},getCurrentTimePosition:function getCurrentTimePosition(rangeStart){return positionFromDate(rangeStart)/(step*numSlots)*100}}}var selection=__webpack_require__("./src/utils/selection.js"),helpers=__webpack_require__("./src/utils/helpers.js"),sortBy=(__webpack_require__("./node_modules/core-js/modules/es.array.splice.js"),__webpack_require__("./node_modules/core-js/modules/es.array.find.js"),__webpack_require__("./node_modules/lodash/sortBy.js")),sortBy_default=__webpack_require__.n(sortBy),Event=function(){return(0,createClass.default)((function Event(data,_ref){var accessors=_ref.accessors,slotMetrics=_ref.slotMetrics;(0,classCallCheck.default)(this,Event);var _slotMetrics$getRange=slotMetrics.getRange(accessors.start(data),accessors.end(data)),start=_slotMetrics$getRange.start,startDate=_slotMetrics$getRange.startDate,end=_slotMetrics$getRange.end,endDate=_slotMetrics$getRange.endDate,top=_slotMetrics$getRange.top,height=_slotMetrics$getRange.height;this.start=start,this.end=end,this.startMs=+startDate,this.endMs=+endDate,this.top=top,this.height=height,this.data=data}),[{key:"_width",get:function get(){return this.rows?100/(this.rows.reduce((function(max,row){return Math.max(max,row.leaves.length+1)}),0)+1):this.leaves?(100-this.container._width)/(this.leaves.length+1):this.row._width}},{key:"width",get:function get(){var noOverlap=this._width,overlap=Math.min(100,1.7*this._width);if(this.rows)return overlap;if(this.leaves)return this.leaves.length>0?overlap:noOverlap;var leaves=this.row.leaves;return leaves.indexOf(this)===leaves.length-1?noOverlap:overlap}},{key:"xOffset",get:function get(){if(this.rows)return 0;if(this.leaves)return this.container._width;var _this$row=this.row,leaves=_this$row.leaves,xOffset=_this$row.xOffset,_width=_this$row._width;return xOffset+(leaves.indexOf(this)+1)*_width}}])}();function onSameRow(a,b,minimumStartDifference){return Math.abs(b.start-a.start)a.start&&b.start0;){var event=sortedByTime.shift();sorted.push(event);for(var i=0;itest.startMs)){if(i>0){var _event=sortedByTime.splice(i,1)[0];sorted.push(_event)}break}}}return sorted}(events.map((function(event){return new Event(event,{slotMetrics:slotMetrics,accessors:accessors})}))),containerEvents=[],_loop=function _loop(){var event=eventsInRenderOrder[i],container=containerEvents.find((function(c){return c.end>event.start||Math.abs(event.start-c.start)=0;j--)onSameRow(container.rows[j],event,minimumStartDifference)&&(row=container.rows[j]);row?(row.leaves.push(event),event.row=row):(event.leaves=[],container.rows.push(event))},i=0;i-1)){maxIdx=maxIdx>node.friends[i].idx?maxIdx:node.friends[i].idx,visited.push(node.friends[i]);var newIdx=getMaxIdxDFS(node.friends[i],maxIdx,visited);maxIdx=maxIdx>newIdx?maxIdx:newIdx}return maxIdx}var DefaultAlgorithms={overlap:getStyledEvents,"no-overlap":function no_overlap(_ref){var styledEvents=getStyledEvents({events:_ref.events,minimumStartDifference:_ref.minimumStartDifference,slotMetrics:_ref.slotMetrics,accessors:_ref.accessors});styledEvents.sort((function(a,b){return a=a.style,b=b.style,a.top!==b.top?a.top>b.top?1:-1:a.height!==b.height?a.top+a.height=y1&&y4<=y2||y4>y1&&y4<=y2||y3>=y1&&y3idx?_maxIdx:idx}_maxIdx<=e.idx&&(e.size=100-e.idx*e.size);var padding=0===e.idx?0:3;e.style.width="calc(".concat(e.size,"% - ").concat(padding,"px)"),e.style.height="calc(".concat(e.style.height,"% - 2px)"),e.style.xOffset="calc(".concat(e.style.left,"% + ").concat(padding,"px)")}return styledEvents}};var BackgroundWrapper=__webpack_require__("./src/BackgroundWrapper.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),TimeSlotGroup=function(_Component){function TimeSlotGroup(){return(0,classCallCheck.default)(this,TimeSlotGroup),(0,callSuper.default)(this,TimeSlotGroup,arguments)}return(0,inherits.default)(TimeSlotGroup,_Component),(0,createClass.default)(TimeSlotGroup,[{key:"render",value:function render(){var _this$props=this.props,renderSlot=_this$props.renderSlot,resource=_this$props.resource,group=_this$props.group,getters=_this$props.getters,_this$props$component=_this$props.components,_this$props$component2=(_this$props$component=void 0===_this$props$component?{}:_this$props$component).timeSlotWrapper,Wrapper=void 0===_this$props$component2?BackgroundWrapper.A:_this$props$component2,groupProps=getters?getters.slotGroupProp(group):{};return(0,jsx_runtime.jsx)("div",Object.assign({className:"rbc-timeslot-group"},groupProps,{children:group.map((function(value,idx){var slotProps=getters?getters.slotProp(value,resource):{};return(0,jsx_runtime.jsx)(Wrapper,{value:value,resource:resource,children:(0,jsx_runtime.jsx)("div",Object.assign({},slotProps,{className:(0,clsx_m.A)("rbc-time-slot",slotProps.className),children:renderSlot&&renderSlot(value,idx)}))},idx)}))}))}}])}(react.Component);TimeSlotGroup.__docgenInfo={description:"",methods:[],displayName:"TimeSlotGroup",props:{renderSlot:{description:"",type:{name:"func"},required:!1},group:{description:"",type:{name:"array"},required:!0},resource:{description:"",type:{name:"any"},required:!1},components:{description:"",type:{name:"object"},required:!1},getters:{description:"",type:{name:"object"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/TimeSlotGroup.js"]={name:"TimeSlotGroup",docgenInfo:TimeSlotGroup.__docgenInfo,path:"src/TimeSlotGroup.js"});var TimeGridEvent=__webpack_require__("./src/TimeGridEvent.js"),DayColumnWrapper=(__webpack_require__("./src/utils/propTypes.js"),function DayColumnWrapper(_ref){var children=_ref.children,className=_ref.className,style=_ref.style,innerRef=_ref.innerRef;return(0,jsx_runtime.jsx)("div",{className:className,style:style,ref:innerRef,children:children})});DayColumnWrapper.displayName="DayColumnWrapper";var src_DayColumnWrapper=react.forwardRef((function(props,ref){return(0,jsx_runtime.jsx)(DayColumnWrapper,Object.assign({},props,{innerRef:ref}))})),_excluded=["dayProp"],_excluded2=["eventContainerWrapper"],DayColumn=function(_React$Component){function DayColumn(){var _this;(0,classCallCheck.default)(this,DayColumn);for(var _len=arguments.length,_args=new Array(_len),_key=0;_key<_len;_key++)_args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,DayColumn,[].concat(_args))).state={selecting:!1,timeIndicatorPosition:null},_this.intervalTriggered=!1,_this.renderEvents=function(_ref){var events=_ref.events,isBackgroundEvent=_ref.isBackgroundEvent,_this$props=_this.props,rtl=_this$props.rtl,selected=_this$props.selected,accessors=_this$props.accessors,localizer=_this$props.localizer,getters=_this$props.getters,components=_this$props.components,step=_this$props.step,timeslots=_this$props.timeslots,dayLayoutAlgorithm=_this$props.dayLayoutAlgorithm,resizable=_this$props.resizable,slotMetrics=_this.slotMetrics,messages=localizer.messages,styledEvents=function DayEventLayout_getStyledEvents(_ref){_ref.events,_ref.minimumStartDifference,_ref.slotMetrics,_ref.accessors;var dayLayoutAlgorithm=_ref.dayLayoutAlgorithm,algorithm=dayLayoutAlgorithm;return dayLayoutAlgorithm in DefaultAlgorithms&&(algorithm=DefaultAlgorithms[dayLayoutAlgorithm]),function isFunction(a){return!!(a&&a.constructor&&a.call&&a.apply)}(algorithm)?algorithm.apply(this,arguments):[]}({events:events,accessors:accessors,slotMetrics:slotMetrics,minimumStartDifference:Math.ceil(step*timeslots/2),dayLayoutAlgorithm:dayLayoutAlgorithm});return styledEvents.map((function(_ref2,idx){var label,event=_ref2.event,style=_ref2.style,end=accessors.end(event),start=accessors.start(event),format="eventTimeRangeFormat",startsBeforeDay=slotMetrics.startsBeforeDay(start),startsAfterDay=slotMetrics.startsAfterDay(end);startsBeforeDay?format="eventTimeRangeEndFormat":startsAfterDay&&(format="eventTimeRangeStartFormat"),label=startsBeforeDay&&startsAfterDay?messages.allDay:localizer.format({start:start,end:end},format);var continuesPrior=startsBeforeDay||slotMetrics.startsBefore(start),continuesAfter=startsAfterDay||slotMetrics.startsAfter(end);return(0,jsx_runtime.jsx)(TimeGridEvent.A,{style:style,event:event,label:label,getters:getters,rtl:rtl,components:components,continuesPrior:continuesPrior,continuesAfter:continuesAfter,accessors:accessors,resource:_this.props.resource,selected:(0,selection.sp)(event,selected),onClick:function onClick(e){return _this._select(Object.assign({},event,_this.props.resource&&{sourceResource:_this.props.resource},isBackgroundEvent&&{isBackgroundEvent:!0}),e)},onDoubleClick:function onDoubleClick(e){return _this._doubleClick(event,e)},isBackgroundEvent:isBackgroundEvent,onKeyPress:function onKeyPress(e){return _this._keyPress(event,e)},resizable:resizable},"evt_"+idx)}))},_this._selectable=function(){var node=_this.containerRef.current,_this$props2=_this.props,longPressThreshold=_this$props2.longPressThreshold,localizer=_this$props2.localizer,selector=_this._selector=new Selection.Ay((function(){return node}),{longPressThreshold:longPressThreshold}),maybeSelect=function maybeSelect(box){var onSelecting=_this.props.onSelecting,current=_this.state||{},state=selectionState(box),start=state.startDate,end=state.endDate;onSelecting&&(localizer.eq(current.startDate,start,"minutes")&&localizer.eq(current.endDate,end,"minutes")||!1===onSelecting({start:start,end:end,resourceId:_this.props.resource}))||_this.state.start===state.start&&_this.state.end===state.end&&_this.state.selecting===state.selecting||_this.setState(state)},selectionState=function selectionState(point){var currentSlot=_this.slotMetrics.closestSlotFromPoint(point,(0,Selection.rF)(node));_this.state.selecting||(_this._initialSlot=currentSlot);var initialSlot=_this._initialSlot;localizer.lte(initialSlot,currentSlot)?currentSlot=_this.slotMetrics.nextSlot(currentSlot):localizer.gt(initialSlot,currentSlot)&&(initialSlot=_this.slotMetrics.nextSlot(initialSlot));var selectRange=_this.slotMetrics.getRange(localizer.min(initialSlot,currentSlot),localizer.max(initialSlot,currentSlot));return Object.assign({},selectRange,{selecting:!0,top:"".concat(selectRange.top,"%"),height:"".concat(selectRange.height,"%")})},selectorClicksHandler=function selectorClicksHandler(box,actionType){if(!(0,Selection.xH)(_this.containerRef.current,box)){var _selectionState=selectionState(box),startDate=_selectionState.startDate,endDate=_selectionState.endDate;_this._selectSlot({startDate:startDate,endDate:endDate,action:actionType,box:box})}_this.setState({selecting:!1})};selector.on("selecting",maybeSelect),selector.on("selectStart",maybeSelect),selector.on("beforeSelect",(function(box){if("ignoreEvents"===_this.props.selectable)return!(0,Selection.xH)(_this.containerRef.current,box)})),selector.on("click",(function(box){return selectorClicksHandler(box,"click")})),selector.on("doubleClick",(function(box){return selectorClicksHandler(box,"doubleClick")})),selector.on("select",(function(bounds){_this.state.selecting&&(_this._selectSlot(Object.assign({},_this.state,{action:"select",bounds:bounds})),_this.setState({selecting:!1}))})),selector.on("reset",(function(){_this.state.selecting&&_this.setState({selecting:!1})}))},_this._teardownSelectable=function(){_this._selector&&(_this._selector.teardown(),_this._selector=null)},_this._selectSlot=function(_ref3){for(var startDate=_ref3.startDate,endDate=_ref3.endDate,action=_ref3.action,bounds=_ref3.bounds,box=_ref3.box,current=startDate,slots=[];_this.props.localizer.lte(current,endDate);)slots.push(current),current=new Date(+current+60*_this.props.step*1e3);(0,helpers.me)(_this.props.onSelectSlot,{slots:slots,start:startDate,end:endDate,resourceId:_this.props.resource,action:action,bounds:bounds,box:box})},_this._select=function(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++)args[_key2]=arguments[_key2];(0,helpers.me)(_this.props.onSelectEvent,args)},_this._doubleClick=function(){for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++)args[_key3]=arguments[_key3];(0,helpers.me)(_this.props.onDoubleClickEvent,args)},_this._keyPress=function(){for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++)args[_key4]=arguments[_key4];(0,helpers.me)(_this.props.onKeyPressEvent,args)},_this.slotMetrics=getSlotMetrics(_this.props),_this.containerRef=(0,react.createRef)(),_this}return(0,inherits.default)(DayColumn,_React$Component),(0,createClass.default)(DayColumn,[{key:"componentDidMount",value:function componentDidMount(){this.props.selectable&&this._selectable(),this.props.isNow&&this.setTimeIndicatorPositionUpdateInterval()}},{key:"componentWillUnmount",value:function componentWillUnmount(){this._teardownSelectable(),this.clearTimeIndicatorInterval()}},{key:"componentDidUpdate",value:function componentDidUpdate(prevProps,prevState){this.props.selectable&&!prevProps.selectable&&this._selectable(),!this.props.selectable&&prevProps.selectable&&this._teardownSelectable();var _this$props3=this.props,getNow=_this$props3.getNow,isNow=_this$props3.isNow,localizer=_this$props3.localizer,date=_this$props3.date,min=_this$props3.min,max=_this$props3.max,getNowChanged=localizer.neq(prevProps.getNow(),getNow(),"minutes");if(prevProps.isNow!==isNow||getNowChanged){if(this.clearTimeIndicatorInterval(),isNow){var tail=!getNowChanged&&localizer.eq(prevProps.date,date,"minutes")&&prevState.timeIndicatorPosition===this.state.timeIndicatorPosition;this.setTimeIndicatorPositionUpdateInterval(tail)}}else isNow&&(localizer.neq(prevProps.min,min,"minutes")||localizer.neq(prevProps.max,max,"minutes"))&&this.positionTimeIndicator()}},{key:"setTimeIndicatorPositionUpdateInterval",value:function setTimeIndicatorPositionUpdateInterval(){var _this3=this,tail=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.intervalTriggered||tail||this.positionTimeIndicator(),this._timeIndicatorTimeout=window.setTimeout((function(){_this3.intervalTriggered=!0,_this3.positionTimeIndicator(),_this3.setTimeIndicatorPositionUpdateInterval()}),6e4)}},{key:"clearTimeIndicatorInterval",value:function clearTimeIndicatorInterval(){this.intervalTriggered=!1,window.clearTimeout(this._timeIndicatorTimeout)}},{key:"positionTimeIndicator",value:function positionTimeIndicator(){var _this$props4=this.props,min=_this$props4.min,max=_this$props4.max,current=(0,_this$props4.getNow)();if(current>=min&¤t<=max){var top=this.slotMetrics.getCurrentTimePosition(current);this.intervalTriggered=!0,this.setState({timeIndicatorPosition:top})}else this.clearTimeIndicatorInterval()}},{key:"render",value:function render(){var _this$props5=this.props,date=_this$props5.date,max=_this$props5.max,rtl=_this$props5.rtl,isNow=_this$props5.isNow,resource=_this$props5.resource,accessors=_this$props5.accessors,localizer=_this$props5.localizer,_this$props5$getters=_this$props5.getters,dayProp=_this$props5$getters.dayProp,getters=(0,objectWithoutProperties.A)(_this$props5$getters,_excluded),_this$props5$componen=_this$props5.components,EventContainer=_this$props5$componen.eventContainerWrapper,components=(0,objectWithoutProperties.A)(_this$props5$componen,_excluded2);this.slotMetrics=this.slotMetrics.update(this.props);var slotMetrics=this.slotMetrics,_this$state=this.state,selecting=_this$state.selecting,top=_this$state.top,height=_this$state.height,selectDates={start:_this$state.startDate,end:_this$state.endDate},_dayProp=dayProp(max,resource),className=_dayProp.className,style=_dayProp.style,DayColumnWrapperComponent=components.dayColumnWrapper||src_DayColumnWrapper;return(0,jsx_runtime.jsxs)(DayColumnWrapperComponent,{ref:this.containerRef,date:date,style:style,className:(0,clsx_m.A)(className,"rbc-day-slot","rbc-time-column",isNow&&"rbc-now",isNow&&"rbc-today",selecting&&"rbc-slot-selecting"),slotMetrics:slotMetrics,resource:resource,children:[slotMetrics.groups.map((function(grp,idx){return(0,jsx_runtime.jsx)(TimeSlotGroup,{group:grp,resource:resource,getters:getters,components:components},idx)})),(0,jsx_runtime.jsx)(EventContainer,{localizer:localizer,resource:resource,accessors:accessors,getters:getters,components:components,slotMetrics:slotMetrics,children:(0,jsx_runtime.jsxs)("div",{className:(0,clsx_m.A)("rbc-events-container",rtl&&"rtl"),children:[this.renderEvents({events:this.props.backgroundEvents,isBackgroundEvent:!0}),this.renderEvents({events:this.props.events})]})}),selecting&&(0,jsx_runtime.jsx)("div",{className:"rbc-slot-selection",style:{top:top,height:height},children:(0,jsx_runtime.jsx)("span",{children:localizer.format(selectDates,"selectRangeFormat")})}),isNow&&this.intervalTriggered&&(0,jsx_runtime.jsx)("div",{className:"rbc-current-time-indicator",style:{top:"".concat(this.state.timeIndicatorPosition,"%")}})]})}}])}(react.Component);DayColumn.defaultProps={dragThroughEvents:!0,timeslots:2},DayColumn.__docgenInfo={description:"",methods:[{name:"setTimeIndicatorPositionUpdateInterval",docblock:"@param tail {Boolean} - whether `positionTimeIndicator` call should be\n deferred or called upon setting interval (`true` - if deferred);",modifiers:[],params:[{name:"tail",description:"{Boolean} - whether `positionTimeIndicator` call should be\n deferred or called upon setting interval (`true` - if deferred);",type:null,optional:!1}],returns:null,description:null},{name:"clearTimeIndicatorInterval",docblock:null,modifiers:[],params:[],returns:null},{name:"positionTimeIndicator",docblock:null,modifiers:[],params:[],returns:null},{name:"renderEvents",docblock:null,modifiers:[],params:[{name:"{ events, isBackgroundEvent }",type:null}],returns:null},{name:"_selectable",docblock:null,modifiers:[],params:[],returns:null},{name:"_teardownSelectable",docblock:null,modifiers:[],params:[],returns:null},{name:"_selectSlot",docblock:null,modifiers:[],params:[{name:"{ startDate, endDate, action, bounds, box }",type:null}],returns:null},{name:"_select",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"_doubleClick",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"_keyPress",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null}],displayName:"DayColumn",props:{dragThroughEvents:{defaultValue:{value:"true",computed:!1},description:"",type:{name:"bool"},required:!1},timeslots:{defaultValue:{value:"2",computed:!1},description:"",type:{name:"number"},required:!1},events:{description:"",type:{name:"array"},required:!0},backgroundEvents:{description:"",type:{name:"array"},required:!0},step:{description:"",type:{name:"number"},required:!0},date:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},min:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},max:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},getNow:{description:"",type:{name:"func"},required:!0},isNow:{description:"",type:{name:"bool"},required:!1},rtl:{description:"",type:{name:"bool"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},showMultiDayTimes:{description:"",type:{name:"bool"},required:!1},culture:{description:"",type:{name:"string"},required:!1},selected:{description:"",type:{name:"object"},required:!1},selectable:{description:"",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},eventOffset:{description:"",type:{name:"number"},required:!1},longPressThreshold:{description:"",type:{name:"number"},required:!1},onSelecting:{description:"",type:{name:"func"},required:!1},onSelectSlot:{description:"",type:{name:"func"},required:!0},onSelectEvent:{description:"",type:{name:"func"},required:!0},onDoubleClickEvent:{description:"",type:{name:"func"},required:!0},onKeyPressEvent:{description:"",type:{name:"func"},required:!1},className:{description:"",type:{name:"string"},required:!1},resource:{description:"",type:{name:"any"},required:!1},dayLayoutAlgorithm:{description:"",type:{name:"custom",raw:"DayLayoutAlgorithmPropType"},required:!1}}};var src_DayColumn=DayColumn;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/DayColumn.js"]={name:"DayColumn",docgenInfo:DayColumn.__docgenInfo,path:"src/DayColumn.js"});var TimeGutter=function TimeGutter(_ref2){var min=_ref2.min,max=_ref2.max,timeslots=_ref2.timeslots,step=_ref2.step,localizer=_ref2.localizer,getNow=_ref2.getNow,resource=_ref2.resource,components=_ref2.components,getters=_ref2.getters,gutterRef=_ref2.gutterRef,TimeGutterWrapper=components.timeGutterWrapper,_useMemo=(0,react.useMemo)((function(){return function adjustForDST(_ref){var min=_ref.min,max=_ref.max,localizer=_ref.localizer;return localizer.getTimezoneOffset(min)!==localizer.getTimezoneOffset(max)?{start:localizer.add(min,-1,"day"),end:localizer.add(max,-1,"day")}:{start:min,end:max}}({min:min,max:max,localizer:localizer})}),[null==min?void 0:min.toISOString(),null==max?void 0:max.toISOString(),localizer]),start=_useMemo.start,end=_useMemo.end,_useState=(0,react.useState)(getSlotMetrics({min:start,max:end,timeslots:timeslots,step:step,localizer:localizer})),_useState2=(0,slicedToArray.A)(_useState,2),slotMetrics=_useState2[0],setSlotMetrics=_useState2[1];(0,react.useEffect)((function(){slotMetrics&&setSlotMetrics(slotMetrics.update({min:start,max:end,timeslots:timeslots,step:step,localizer:localizer}))}),[null==start?void 0:start.toISOString(),null==end?void 0:end.toISOString(),timeslots,step]);var renderSlot=(0,react.useCallback)((function(value,idx){if(idx)return null;var isNow=slotMetrics.dateIsInGroup(getNow(),idx);return(0,jsx_runtime.jsx)("span",{className:(0,clsx_m.A)("rbc-label",isNow&&"rbc-now"),children:localizer.format(value,"timeGutterFormat")})}),[slotMetrics,localizer,getNow]);return(0,jsx_runtime.jsx)(TimeGutterWrapper,{slotMetrics:slotMetrics,children:(0,jsx_runtime.jsx)("div",{className:"rbc-time-gutter rbc-time-column",ref:gutterRef,children:slotMetrics.groups.map((function(grp,idx){return(0,jsx_runtime.jsx)(TimeSlotGroup,{group:grp,resource:resource,components:components,renderSlot:renderSlot,getters:getters},idx)}))})})};TimeGutter.displayName="TimeGutter";var src_TimeGutter=react.forwardRef((function(props,ref){return(0,jsx_runtime.jsx)(TimeGutter,Object.assign({gutterRef:ref},props))})),scrollbarSize=__webpack_require__("./node_modules/dom-helpers/esm/scrollbarSize.js"),DateContentRow=__webpack_require__("./src/DateContentRow.js"),Header=__webpack_require__("./src/Header.js"),ResourceHeader=function ResourceHeader(_ref){var label=_ref.label;return(0,jsx_runtime.jsx)(react.Fragment,{children:label})};ResourceHeader.displayName="ResourceHeader",ResourceHeader.__docgenInfo={description:"",methods:[],displayName:"ResourceHeader",props:{label:{description:"",type:{name:"node"},required:!1},index:{description:"",type:{name:"number"},required:!1},resource:{description:"",type:{name:"object"},required:!1}}};var src_ResourceHeader=ResourceHeader;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/ResourceHeader.js"]={name:"ResourceHeader",docgenInfo:ResourceHeader.__docgenInfo,path:"src/ResourceHeader.js"});var TimeGridHeader=function(_React$Component){function TimeGridHeader(){var _this;(0,classCallCheck.default)(this,TimeGridHeader);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,TimeGridHeader,[].concat(args))).handleHeaderClick=function(date,view,e){e.preventDefault(),(0,helpers.me)(_this.props.onDrillDown,[date,view])},_this.renderRow=function(resource){var _this$props=_this.props,events=_this$props.events,rtl=_this$props.rtl,selectable=_this$props.selectable,getNow=_this$props.getNow,range=_this$props.range,getters=_this$props.getters,localizer=_this$props.localizer,accessors=_this$props.accessors,components=_this$props.components,resizable=_this$props.resizable,resourceId=accessors.resourceId(resource),eventsToDisplay=resource?events.filter((function(event){return accessors.resource(event)===resourceId})):events;return(0,jsx_runtime.jsx)(DateContentRow.A,{isAllDay:!0,rtl:rtl,getNow:getNow,minRows:2,maxRows:_this.props.allDayMaxRows+1,range:range,events:eventsToDisplay,resourceId:resourceId,className:"rbc-allday-cell",selectable:selectable,selected:_this.props.selected,components:components,accessors:accessors,getters:getters,localizer:localizer,onSelect:_this.props.onSelectEvent,onShowMore:_this.props.onShowMore,onDoubleClick:_this.props.onDoubleClickEvent,onKeyPress:_this.props.onKeyPressEvent,onSelectSlot:_this.props.onSelectSlot,longPressThreshold:_this.props.longPressThreshold,resizable:resizable})},_this}return(0,inherits.default)(TimeGridHeader,_React$Component),(0,createClass.default)(TimeGridHeader,[{key:"renderHeaderCells",value:function renderHeaderCells(range){var _this2=this,_this$props2=this.props,localizer=_this$props2.localizer,getDrilldownView=_this$props2.getDrilldownView,getNow=_this$props2.getNow,dayProp=_this$props2.getters.dayProp,_this$props2$componen=_this$props2.components.header,HeaderComponent=void 0===_this$props2$componen?Header.A:_this$props2$componen,today=getNow();return range.map((function(date,i){var drilldownView=getDrilldownView(date),label=localizer.format(date,"dayFormat"),_dayProp=dayProp(date),className=_dayProp.className,style=_dayProp.style,header=(0,jsx_runtime.jsx)(HeaderComponent,{date:date,label:label,localizer:localizer});return(0,jsx_runtime.jsx)("div",{style:style,className:(0,clsx_m.A)("rbc-header",className,localizer.isSameDate(date,today)&&"rbc-today"),children:drilldownView?(0,jsx_runtime.jsx)("button",{type:"button",className:"rbc-button-link",onClick:function onClick(e){return _this2.handleHeaderClick(date,drilldownView,e)},children:header}):(0,jsx_runtime.jsx)("span",{children:header})},i)}))}},{key:"render",value:function render(){var _this3=this,_this$props3=this.props,width=_this$props3.width,rtl=_this$props3.rtl,resources=_this$props3.resources,range=_this$props3.range,events=_this$props3.events,getNow=_this$props3.getNow,accessors=_this$props3.accessors,selectable=_this$props3.selectable,components=_this$props3.components,getters=_this$props3.getters,scrollRef=_this$props3.scrollRef,localizer=_this$props3.localizer,isOverflowing=_this$props3.isOverflowing,_this$props3$componen=_this$props3.components,TimeGutterHeader=_this$props3$componen.timeGutterHeader,_this$props3$componen2=_this$props3$componen.resourceHeader,ResourceHeaderComponent=void 0===_this$props3$componen2?src_ResourceHeader:_this$props3$componen2,resizable=_this$props3.resizable,style={};isOverflowing&&(style[rtl?"marginLeft":"marginRight"]="".concat((0,scrollbarSize.A)()-1,"px"));var groupedEvents=resources.groupEvents(events);return(0,jsx_runtime.jsxs)("div",{style:style,ref:scrollRef,className:(0,clsx_m.A)("rbc-time-header",isOverflowing&&"rbc-overflowing"),children:[(0,jsx_runtime.jsx)("div",{className:"rbc-label rbc-time-header-gutter",style:{width:width,minWidth:width,maxWidth:width},children:TimeGutterHeader&&(0,jsx_runtime.jsx)(TimeGutterHeader,{})}),resources.map((function(_ref,idx){var _ref2=(0,slicedToArray.A)(_ref,2),id=_ref2[0],resource=_ref2[1];return(0,jsx_runtime.jsxs)("div",{className:"rbc-time-header-content",children:[resource&&(0,jsx_runtime.jsx)("div",{className:"rbc-row rbc-row-resource",children:(0,jsx_runtime.jsx)("div",{className:"rbc-header",children:(0,jsx_runtime.jsx)(ResourceHeaderComponent,{index:idx,label:accessors.resourceTitle(resource),resource:resource})})},"resource_".concat(idx)),(0,jsx_runtime.jsx)("div",{className:"rbc-row rbc-time-header-cell".concat(range.length<=1?" rbc-time-header-cell-single-day":""),children:_this3.renderHeaderCells(range)}),(0,jsx_runtime.jsx)(DateContentRow.A,{isAllDay:!0,rtl:rtl,getNow:getNow,minRows:2,maxRows:_this3.props.allDayMaxRows+1,range:range,events:groupedEvents.get(id)||[],resourceId:resource&&id,className:"rbc-allday-cell",selectable:selectable,selected:_this3.props.selected,components:components,accessors:accessors,getters:getters,localizer:localizer,onSelect:_this3.props.onSelectEvent,onShowMore:_this3.props.onShowMore,onDoubleClick:_this3.props.onDoubleClickEvent,onKeyDown:_this3.props.onKeyPressEvent,onSelectSlot:_this3.props.onSelectSlot,longPressThreshold:_this3.props.longPressThreshold,resizable:resizable})]},id||idx)}))]})}}])}(react.Component);TimeGridHeader.__docgenInfo={description:"",methods:[{name:"handleHeaderClick",docblock:null,modifiers:[],params:[{name:"date",type:null},{name:"view",type:null},{name:"e",type:null}],returns:null},{name:"renderHeaderCells",docblock:null,modifiers:[],params:[{name:"range",type:null}],returns:null},{name:"renderRow",docblock:null,modifiers:[],params:[{name:"resource",type:null}],returns:null}],displayName:"TimeGridHeader",props:{range:{description:"",type:{name:"array"},required:!0},events:{description:"",type:{name:"array"},required:!0},resources:{description:"",type:{name:"object"},required:!1},getNow:{description:"",type:{name:"func"},required:!0},isOverflowing:{description:"",type:{name:"bool"},required:!1},rtl:{description:"",type:{name:"bool"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1},width:{description:"",type:{name:"number"},required:!1},localizer:{description:"",type:{name:"object"},required:!0},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},selected:{description:"",type:{name:"object"},required:!1},selectable:{description:"",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},longPressThreshold:{description:"",type:{name:"number"},required:!1},allDayMaxRows:{description:"",type:{name:"number"},required:!1},onSelectSlot:{description:"",type:{name:"func"},required:!1},onSelectEvent:{description:"",type:{name:"func"},required:!1},onDoubleClickEvent:{description:"",type:{name:"func"},required:!1},onKeyPressEvent:{description:"",type:{name:"func"},required:!1},onDrillDown:{description:"",type:{name:"func"},required:!1},onShowMore:{description:"",type:{name:"func"},required:!1},getDrilldownView:{description:"",type:{name:"func"},required:!0},scrollRef:{description:"",type:{name:"any"},required:!1}}};var src_TimeGridHeader=TimeGridHeader;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/TimeGridHeader.js"]={name:"TimeGridHeader",docgenInfo:TimeGridHeader.__docgenInfo,path:"src/TimeGridHeader.js"});var PopOverlay=__webpack_require__("./src/PopOverlay.js"),esm_width=__webpack_require__("./node_modules/dom-helpers/esm/width.js"),esm_position=__webpack_require__("./node_modules/dom-helpers/esm/position.js"),constants=__webpack_require__("./src/utils/constants.js"),eventLevels=__webpack_require__("./src/utils/eventLevels.js"),NONE=(__webpack_require__("./node_modules/core-js/modules/es.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.to-string.js"),__webpack_require__("./node_modules/core-js/modules/es.string.iterator.js"),__webpack_require__("./node_modules/core-js/modules/es.array.iterator.js"),__webpack_require__("./node_modules/core-js/modules/web.dom-collections.iterator.js"),{});var TimeGrid=function(_Component){function TimeGrid(props){var _this;return(0,classCallCheck.default)(this,TimeGrid),(_this=(0,callSuper.default)(this,TimeGrid,[props])).handleScroll=function(e){_this.scrollRef.current&&(_this.scrollRef.current.scrollLeft=e.target.scrollLeft)},_this.handleResize=function(){animationFrame.Z(_this.rafHandle),_this.rafHandle=animationFrame.E(_this.checkOverflow)},_this.handleKeyPressEvent=function(){_this.clearSelection();for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];(0,helpers.me)(_this.props.onKeyPressEvent,args)},_this.handleSelectEvent=function(){_this.clearSelection();for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++)args[_key2]=arguments[_key2];(0,helpers.me)(_this.props.onSelectEvent,args)},_this.handleDoubleClickEvent=function(){_this.clearSelection();for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++)args[_key3]=arguments[_key3];(0,helpers.me)(_this.props.onDoubleClickEvent,args)},_this.handleShowMore=function(events,date,cell,slot,target){var _this$props=_this.props,popup=_this$props.popup,onDrillDown=_this$props.onDrillDown,onShowMore=_this$props.onShowMore,getDrilldownView=_this$props.getDrilldownView,doShowMoreDrillDown=_this$props.doShowMoreDrillDown;if(_this.clearSelection(),popup){var position=(0,esm_position.A)(cell,_this.containerRef.current);_this.setState({overlay:{date:date,events:events,position:Object.assign({},position,{width:"200px"}),target:target}})}else doShowMoreDrillDown&&(0,helpers.me)(onDrillDown,[date,getDrilldownView(date)||constants.l.DAY]);(0,helpers.me)(onShowMore,[events,date,slot])},_this.handleSelectAllDaySlot=function(slots,slotInfo){var onSelectSlot=_this.props.onSelectSlot,start=new Date(slots[0]),end=new Date(slots[slots.length-1]);end.setDate(slots[slots.length-1].getDate()+1),(0,helpers.me)(onSelectSlot,{slots:slots,start:start,end:end,action:slotInfo.action,resourceId:slotInfo.resourceId})},_this.overlayDisplay=function(){_this.setState({overlay:null})},_this.checkOverflow=function(){if(!_this._updatingOverflow){var content=_this.contentRef.current;if(null!=content&&content.scrollHeight){var isOverflowing=content.scrollHeight>content.clientHeight;_this.state.isOverflowing!==isOverflowing&&(_this._updatingOverflow=!0,_this.setState({isOverflowing:isOverflowing},(function(){_this._updatingOverflow=!1})))}}},_this.memoizedResources=(0,memoize_one_esm.A)((function(resources,accessors){return function Resources(resources,accessors){return{map:function map(fn){return resources?resources.map((function(resource,idx){return fn([accessors.resourceId(resource),resource],idx)})):[fn([NONE,null],0)]},groupEvents:function groupEvents(events){var eventsByResource=new Map;return resources?(events.forEach((function(event){var id=accessors.resource(event)||NONE;if(Array.isArray(id))id.forEach((function(item){var resourceEvents=eventsByResource.get(item)||[];resourceEvents.push(event),eventsByResource.set(item,resourceEvents)}));else{var resourceEvents=eventsByResource.get(id)||[];resourceEvents.push(event),eventsByResource.set(id,resourceEvents)}})),eventsByResource):(eventsByResource.set(NONE,events),eventsByResource)}}}(resources,accessors)})),_this.state={gutterWidth:void 0,isOverflowing:null},_this.scrollRef=react.createRef(),_this.contentRef=react.createRef(),_this.containerRef=react.createRef(),_this._scrollRatio=null,_this.gutterRef=(0,react.createRef)(),_this}return(0,inherits.default)(TimeGrid,_Component),(0,createClass.default)(TimeGrid,[{key:"getSnapshotBeforeUpdate",value:function getSnapshotBeforeUpdate(){return this.checkOverflow(),null}},{key:"componentDidMount",value:function componentDidMount(){null==this.props.width&&this.measureGutter(),this.calculateScroll(),this.applyScroll(),window.addEventListener("resize",this.handleResize)}},{key:"componentWillUnmount",value:function componentWillUnmount(){window.removeEventListener("resize",this.handleResize),animationFrame.Z(this.rafHandle),this.measureGutterAnimationFrameRequest&&window.cancelAnimationFrame(this.measureGutterAnimationFrameRequest)}},{key:"componentDidUpdate",value:function componentDidUpdate(){this.applyScroll()}},{key:"renderEvents",value:function renderEvents(range,events,backgroundEvents,now){var _this2=this,_this$props2=this.props,min=_this$props2.min,max=_this$props2.max,components=_this$props2.components,accessors=_this$props2.accessors,localizer=_this$props2.localizer,dayLayoutAlgorithm=_this$props2.dayLayoutAlgorithm,resources=this.memoizedResources(this.props.resources,accessors),groupedEvents=resources.groupEvents(events),groupedBackgroundEvents=resources.groupEvents(backgroundEvents);return resources.map((function(_ref,i){var _ref2=(0,slicedToArray.A)(_ref,2),id=_ref2[0],resource=_ref2[1];return range.map((function(date,jj){var daysEvents=(groupedEvents.get(id)||[]).filter((function(event){return localizer.inRange(date,accessors.start(event),accessors.end(event),"day")})),daysBackgroundEvents=(groupedBackgroundEvents.get(id)||[]).filter((function(event){return localizer.inRange(date,accessors.start(event),accessors.end(event),"day")}));return(0,react.createElement)(src_DayColumn,Object.assign({},_this2.props,{localizer:localizer,min:localizer.merge(date,min),max:localizer.merge(date,max),resource:resource&&id,components:components,isNow:localizer.isSameDate(date,now),key:i+"-"+jj,date:date,events:daysEvents,backgroundEvents:daysBackgroundEvents,dayLayoutAlgorithm:dayLayoutAlgorithm}))}))}))}},{key:"render",value:function render(){var _this$props$allDayMax,_this$props3=this.props,events=_this$props3.events,backgroundEvents=_this$props3.backgroundEvents,range=_this$props3.range,width=_this$props3.width,rtl=_this$props3.rtl,selected=_this$props3.selected,getNow=_this$props3.getNow,resources=_this$props3.resources,components=_this$props3.components,accessors=_this$props3.accessors,getters=_this$props3.getters,localizer=_this$props3.localizer,min=_this$props3.min,max=_this$props3.max,showMultiDayTimes=_this$props3.showMultiDayTimes,longPressThreshold=_this$props3.longPressThreshold,resizable=_this$props3.resizable;width=width||this.state.gutterWidth;var start=range[0],end=range[range.length-1];this.slots=range.length;var allDayEvents=[],rangeEvents=[],rangeBackgroundEvents=[];return events.forEach((function(event){if((0,eventLevels.r4)(event,start,end,accessors,localizer)){var eStart=accessors.start(event),eEnd=accessors.end(event);accessors.allDay(event)||localizer.startAndEndAreDateOnly(eStart,eEnd)||!showMultiDayTimes&&!localizer.isSameDate(eStart,eEnd)?allDayEvents.push(event):rangeEvents.push(event)}})),backgroundEvents.forEach((function(event){(0,eventLevels.r4)(event,start,end,accessors,localizer)&&rangeBackgroundEvents.push(event)})),allDayEvents.sort((function(a,b){return(0,eventLevels.kD)(a,b,accessors,localizer)})),(0,jsx_runtime.jsxs)("div",{className:(0,clsx_m.A)("rbc-time-view",resources&&"rbc-time-view-resources"),ref:this.containerRef,children:[(0,jsx_runtime.jsx)(src_TimeGridHeader,{range:range,events:allDayEvents,width:width,rtl:rtl,getNow:getNow,localizer:localizer,selected:selected,allDayMaxRows:this.props.showAllEvents?1/0:null!==(_this$props$allDayMax=this.props.allDayMaxRows)&&void 0!==_this$props$allDayMax?_this$props$allDayMax:1/0,resources:this.memoizedResources(resources,accessors),selectable:this.props.selectable,accessors:accessors,getters:getters,components:components,scrollRef:this.scrollRef,isOverflowing:this.state.isOverflowing,longPressThreshold:longPressThreshold,onSelectSlot:this.handleSelectAllDaySlot,onSelectEvent:this.handleSelectEvent,onShowMore:this.handleShowMore,onDoubleClickEvent:this.props.onDoubleClickEvent,onKeyPressEvent:this.props.onKeyPressEvent,onDrillDown:this.props.onDrillDown,getDrilldownView:this.props.getDrilldownView,resizable:resizable}),this.props.popup&&this.renderOverlay(),(0,jsx_runtime.jsxs)("div",{ref:this.contentRef,className:"rbc-time-content",onScroll:this.handleScroll,children:[(0,jsx_runtime.jsx)(src_TimeGutter,{date:start,ref:this.gutterRef,localizer:localizer,min:localizer.merge(start,min),max:localizer.merge(start,max),step:this.props.step,getNow:this.props.getNow,timeslots:this.props.timeslots,components:components,className:"rbc-time-gutter",getters:getters}),this.renderEvents(range,rangeEvents,rangeBackgroundEvents,getNow())]})]})}},{key:"renderOverlay",value:function renderOverlay(){var _this$state$overlay,_this$state,_this3=this,overlay=null!==(_this$state$overlay=null===(_this$state=this.state)||void 0===_this$state?void 0:_this$state.overlay)&&void 0!==_this$state$overlay?_this$state$overlay:{},_this$props4=this.props,accessors=_this$props4.accessors,localizer=_this$props4.localizer,components=_this$props4.components,getters=_this$props4.getters,selected=_this$props4.selected,popupOffset=_this$props4.popupOffset,handleDragStart=_this$props4.handleDragStart;return(0,jsx_runtime.jsx)(PopOverlay.A,{overlay:overlay,accessors:accessors,localizer:localizer,components:components,getters:getters,selected:selected,popupOffset:popupOffset,ref:this.containerRef,handleKeyPressEvent:this.handleKeyPressEvent,handleSelectEvent:this.handleSelectEvent,handleDoubleClickEvent:this.handleDoubleClickEvent,handleDragStart:handleDragStart,show:!!overlay.position,overlayDisplay:this.overlayDisplay,onHide:function onHide(){return _this3.setState({overlay:null})}})}},{key:"clearSelection",value:function clearSelection(){clearTimeout(this._selectTimer),this._pendingSelection=[]}},{key:"measureGutter",value:function measureGutter(){var _this4=this;this.measureGutterAnimationFrameRequest&&window.cancelAnimationFrame(this.measureGutterAnimationFrameRequest),this.measureGutterAnimationFrameRequest=window.requestAnimationFrame((function(){var _this4$gutterRef,width=null!==(_this4$gutterRef=_this4.gutterRef)&&void 0!==_this4$gutterRef&&_this4$gutterRef.current?(0,esm_width.A)(_this4.gutterRef.current):void 0;width&&_this4.state.gutterWidth!==width&&_this4.setState({gutterWidth:width})}))}},{key:"applyScroll",value:function applyScroll(){if(null!=this._scrollRatio&&!0===this.props.enableAutoScroll){var content=this.contentRef.current;content.scrollTop=content.scrollHeight*this._scrollRatio,this._scrollRatio=null}}},{key:"calculateScroll",value:function calculateScroll(){var props=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props,min=props.min,max=props.max,scrollToTime=props.scrollToTime,localizer=props.localizer,diffMillis=localizer.diff(localizer.merge(scrollToTime,min),scrollToTime,"milliseconds"),totalMillis=localizer.diff(min,max,"milliseconds");this._scrollRatio=diffMillis/totalMillis}}])}(react.Component);TimeGrid.defaultProps={step:30,timeslots:2},TimeGrid.__docgenInfo={description:"",methods:[{name:"handleScroll",docblock:null,modifiers:[],params:[{name:"e",type:null}],returns:null},{name:"handleResize",docblock:null,modifiers:[],params:[],returns:null},{name:"handleKeyPressEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleSelectEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleDoubleClickEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleShowMore",docblock:null,modifiers:[],params:[{name:"events",type:null},{name:"date",type:null},{name:"cell",type:null},{name:"slot",type:null},{name:"target",type:null}],returns:null},{name:"handleSelectAllDaySlot",docblock:null,modifiers:[],params:[{name:"slots",type:null},{name:"slotInfo",type:null}],returns:null},{name:"renderEvents",docblock:null,modifiers:[],params:[{name:"range",type:null},{name:"events",type:null},{name:"backgroundEvents",type:null},{name:"now",type:null}],returns:null},{name:"renderOverlay",docblock:null,modifiers:[],params:[],returns:null},{name:"overlayDisplay",docblock:null,modifiers:[],params:[],returns:null},{name:"clearSelection",docblock:null,modifiers:[],params:[],returns:null},{name:"measureGutter",docblock:null,modifiers:[],params:[],returns:null},{name:"applyScroll",docblock:null,modifiers:[],params:[],returns:null},{name:"calculateScroll",docblock:null,modifiers:[],params:[{name:"props",type:null}],returns:null},{name:"checkOverflow",docblock:null,modifiers:[],params:[],returns:null}],displayName:"TimeGrid",props:{step:{defaultValue:{value:"30",computed:!1},description:"",type:{name:"number"},required:!1},timeslots:{defaultValue:{value:"2",computed:!1},description:"",type:{name:"number"},required:!1},events:{description:"",type:{name:"array"},required:!0},backgroundEvents:{description:"",type:{name:"array"},required:!0},resources:{description:"",type:{name:"array"},required:!1},range:{description:"",type:{name:"arrayOf",value:{name:"instanceOf",value:"Date"}},required:!1},min:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},max:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},getNow:{description:"",type:{name:"func"},required:!0},scrollToTime:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},enableAutoScroll:{description:"",type:{name:"bool"},required:!1},showMultiDayTimes:{description:"",type:{name:"bool"},required:!1},rtl:{description:"",type:{name:"bool"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1},width:{description:"",type:{name:"number"},required:!1},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},allDayMaxRows:{description:"",type:{name:"number"},required:!1},selected:{description:"",type:{name:"object"},required:!1},selectable:{description:"",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},longPressThreshold:{description:"",type:{name:"number"},required:!1},onNavigate:{description:"",type:{name:"func"},required:!1},onSelectSlot:{description:"",type:{name:"func"},required:!1},onSelectEnd:{description:"",type:{name:"func"},required:!1},onSelectStart:{description:"",type:{name:"func"},required:!1},onSelectEvent:{description:"",type:{name:"func"},required:!1},onShowMore:{description:"",type:{name:"func"},required:!1},onDoubleClickEvent:{description:"",type:{name:"func"},required:!1},onKeyPressEvent:{description:"",type:{name:"func"},required:!1},onDrillDown:{description:"",type:{name:"func"},required:!1},getDrilldownView:{description:"",type:{name:"func"},required:!0},dayLayoutAlgorithm:{description:"",type:{name:"custom",raw:"DayLayoutAlgorithmPropType"},required:!1},showAllEvents:{description:"",type:{name:"bool"},required:!1},doShowMoreDrillDown:{description:"",type:{name:"bool"},required:!1},popup:{description:"",type:{name:"bool"},required:!1},handleDragStart:{description:"",type:{name:"func"},required:!1},popupOffset:{description:"",type:{name:"union",value:[{name:"number"},{name:"shape",value:{x:{name:"number",required:!1},y:{name:"number",required:!1}}}]},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/TimeGrid.js"]={name:"TimeGrid",docgenInfo:TimeGrid.__docgenInfo,path:"src/TimeGrid.js"})},"./src/TimeGridEvent.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/defineProperty.js"),clsx__WEBPACK_IMPORTED_MODULE_4__=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/clsx/dist/clsx.m.js")),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__=(__webpack_require__("./node_modules/react/index.js"),__webpack_require__("./node_modules/react/jsx-runtime.js"));function stringifyPercent(v){return"string"==typeof v?v:v+"%"}function TimeGridEvent(props){var style=props.style,className=props.className,event=props.event,accessors=props.accessors,rtl=props.rtl,selected=props.selected,label=props.label,continuesPrior=props.continuesPrior,continuesAfter=props.continuesAfter,getters=props.getters,onClick=props.onClick,onDoubleClick=props.onDoubleClick,isBackgroundEvent=props.isBackgroundEvent,onKeyPress=props.onKeyPress,_props$components=props.components,Event=_props$components.event,EventWrapper=_props$components.eventWrapper,title=accessors.title(event),tooltip=accessors.tooltip(event),end=accessors.end(event),start=accessors.start(event),userProps=getters.eventProp(event,start,end,selected),inner=[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("div",{className:"rbc-event-label",children:label},"1"),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("div",{className:"rbc-event-content",children:Event?(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Event,{event:event,title:title}):title},"2")],height=style.height,top=style.top,width=style.width,xOffset=style.xOffset,eventStyle=Object.assign({},userProps.style,(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_3__.A)({top:stringifyPercent(top),height:stringifyPercent(height),width:stringifyPercent(width)},rtl?"right":"left",stringifyPercent(xOffset)));return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(EventWrapper,Object.assign({type:"time"},props,{children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("div",{role:"button",tabIndex:0,onClick:onClick,onDoubleClick:onDoubleClick,style:eventStyle,onKeyDown:onKeyPress,title:tooltip?("string"==typeof label?label+": ":"")+tooltip:void 0,className:(0,clsx__WEBPACK_IMPORTED_MODULE_4__.A)(isBackgroundEvent?"rbc-background-event":"rbc-event",className,userProps.className,{"rbc-selected":selected,"rbc-event-continues-earlier":continuesPrior,"rbc-event-continues-later":continuesAfter}),children:inner})}))}TimeGridEvent.displayName="TimeGridEvent",TimeGridEvent.__docgenInfo={description:"",methods:[],displayName:"TimeGridEvent"},__webpack_exports__.A=TimeGridEvent,"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/TimeGridEvent.js"]={name:"TimeGridEvent",docgenInfo:TimeGridEvent.__docgenInfo,path:"src/TimeGridEvent.js"})},"./src/addons/dragAndDrop/index.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return dragAndDrop}});var objectWithoutProperties=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),classCallCheck=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/classCallCheck.js"),createClass=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/createClass.js"),callSuper=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/callSuper.js"),inherits=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/inherits.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),clsx_m=__webpack_require__("./node_modules/clsx/dist/clsx.m.js"),accessors=(__webpack_require__("./src/utils/propTypes.js"),__webpack_require__("./node_modules/core-js/modules/es.array.includes.js"),__webpack_require__("./node_modules/core-js/modules/es.string.includes.js"),__webpack_require__("./src/utils/accessors.js")),DnDContext=react.createContext(),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),EventWrapper=function(_React$Component){function EventWrapper(){var _this;(0,classCallCheck.default)(this,EventWrapper);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,EventWrapper,[].concat(args))).handleResizeUp=function(e){0===e.button&&_this.context.draggable.onBeginAction(_this.props.event,"resize","UP")},_this.handleResizeDown=function(e){0===e.button&&_this.context.draggable.onBeginAction(_this.props.event,"resize","DOWN")},_this.handleResizeLeft=function(e){0===e.button&&_this.context.draggable.onBeginAction(_this.props.event,"resize","LEFT")},_this.handleResizeRight=function(e){0===e.button&&_this.context.draggable.onBeginAction(_this.props.event,"resize","RIGHT")},_this.handleStartDragging=function(e){var _e$target$getAttribut;0===e.button&&((null===(_e$target$getAttribut=e.target.getAttribute("class"))||void 0===_e$target$getAttribut?void 0:_e$target$getAttribut.includes("rbc-addons-dnd-resize"))||(Object.assign({},_this.props.event).sourceResource=_this.props.resource,_this.context.draggable.onBeginAction(_this.props.event,"move")))},_this}return(0,inherits.default)(EventWrapper,_React$Component),(0,createClass.default)(EventWrapper,[{key:"renderAnchor",value:function renderAnchor(direction){var cls="Up"===direction||"Down"===direction?"ns":"ew";return(0,jsx_runtime.jsx)("div",{className:"rbc-addons-dnd-resize-".concat(cls,"-anchor"),onMouseDown:this["handleResize".concat(direction)],children:(0,jsx_runtime.jsx)("div",{className:"rbc-addons-dnd-resize-".concat(cls,"-icon")})})}},{key:"render",value:function render(){var _this$props=this.props,event=_this$props.event,type=_this$props.type,continuesPrior=_this$props.continuesPrior,continuesAfter=_this$props.continuesAfter,resizable=_this$props.resizable,children=this.props.children;if(event.__isPreview)return react.cloneElement(children,{className:(0,clsx_m.A)(children.props.className,"rbc-addons-dnd-drag-preview")});var draggable=this.context.draggable,draggableAccessor=draggable.draggableAccessor,resizableAccessor=draggable.resizableAccessor,isDraggable=!draggableAccessor||!!(0,accessors.s)(event,draggableAccessor);if(!isDraggable)return children;var isResizable=resizable&&(!resizableAccessor||!!(0,accessors.s)(event,resizableAccessor));if(isResizable||isDraggable){var newProps={onMouseDown:this.handleStartDragging,onTouchStart:this.handleStartDragging};if(isResizable){var StartAnchor=null,EndAnchor=null;"date"===type?(StartAnchor=!continuesPrior&&this.renderAnchor("Left"),EndAnchor=!continuesAfter&&this.renderAnchor("Right")):(StartAnchor=!continuesPrior&&this.renderAnchor("Up"),EndAnchor=!continuesAfter&&this.renderAnchor("Down")),newProps.children=(0,jsx_runtime.jsxs)("div",{className:"rbc-addons-dnd-resizable",children:[StartAnchor,children.props.children,EndAnchor]})}draggable.dragAndDropAction.interacting&&draggable.dragAndDropAction.event===event&&(newProps.className=(0,clsx_m.A)(children.props.className,"rbc-addons-dnd-dragged-event")),children=react.cloneElement(children,newProps)}return children}}])}(react.Component);EventWrapper.contextType=DnDContext,EventWrapper.__docgenInfo={description:"",methods:[{name:"handleResizeUp",docblock:null,modifiers:[],params:[{name:"e",type:null}],returns:null},{name:"handleResizeDown",docblock:null,modifiers:[],params:[{name:"e",type:null}],returns:null},{name:"handleResizeLeft",docblock:null,modifiers:[],params:[{name:"e",type:null}],returns:null},{name:"handleResizeRight",docblock:null,modifiers:[],params:[{name:"e",type:null}],returns:null},{name:"handleStartDragging",docblock:null,modifiers:[],params:[{name:"e",type:null}],returns:null},{name:"renderAnchor",docblock:null,modifiers:[],params:[{name:"direction",type:null}],returns:null}],displayName:"EventWrapper",props:{type:{description:"",type:{name:"enum",value:[{value:"'date'",computed:!1},{value:"'time'",computed:!1}]},required:!1},event:{description:"",type:{name:"object"},required:!0},draggable:{description:"",type:{name:"bool"},required:!1},allDay:{description:"",type:{name:"bool"},required:!1},isRow:{description:"",type:{name:"bool"},required:!1},continuesPrior:{description:"",type:{name:"bool"},required:!1},continuesAfter:{description:"",type:{name:"bool"},required:!1},isDragging:{description:"",type:{name:"bool"},required:!1},isResizing:{description:"",type:{name:"bool"},required:!1},resource:{description:"",type:{name:"number"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1}}};var dragAndDrop_EventWrapper=EventWrapper;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/addons/dragAndDrop/EventWrapper.js"]={name:"EventWrapper",docgenInfo:EventWrapper.__docgenInfo,path:"src/addons/dragAndDrop/EventWrapper.js"});var esm=__webpack_require__("./node_modules/dom-helpers/esm/index.js"),querySelectorAll=__webpack_require__("./node_modules/dom-helpers/cjs/querySelectorAll.js"),querySelectorAll_default=__webpack_require__.n(querySelectorAll),Selection=__webpack_require__("./src/Selection.js"),TimeGridEvent=__webpack_require__("./src/TimeGridEvent.js"),_excluded=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/es.object.keys.js"),__webpack_require__("./node_modules/core-js/modules/web.dom-collections.for-each.js"),["children"]),dragAccessors={start:(0,accessors.C)((function(e){return e.start})),end:(0,accessors.C)((function(e){return e.end}))};function mergeComponents(){var components=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},addons=arguments.length>1?arguments[1]:void 0,keys=Object.keys(addons),result=Object.assign({},components);return keys.forEach((function(key){result[key]=components[key]?function nest(){for(var _len=arguments.length,Components=new Array(_len),_key=0;_key<_len;_key++)Components[_key]=arguments[_key];var factories=Components.filter(Boolean).map(react.createFactory);return function Nest(_ref){var children=_ref.children,props=(0,objectWithoutProperties.A)(_ref,_excluded);return factories.reduceRight((function(child,factory){return factory(props,child)}),children)}}(components[key],addons[key]):addons[key]})),result}function pointInColumn(bounds,point){var left=bounds.left,right=bounds.right,top=bounds.top,x=point.x,y=point.y;return xleft&&y>top}function eventTimes(event,accessors,localizer){var start=accessors.start(event),end=accessors.end(event);return localizer.eq(start,end,"minutes")&&0===localizer.diff(start,end,"minutes")&&(end=localizer.add(end,1,"day")),{start:start,end:end,duration:localizer.diff(start,end,"milliseconds")}}var EventContainerWrapper=function(_React$Component){function EventContainerWrapper(){var _this;(0,classCallCheck.default)(this,EventContainerWrapper);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,EventContainerWrapper,[].concat(args))).handleMove=function(point,bounds){if(!pointInColumn(bounds,point))return _this.reset();var event=_this.context.draggable.dragAndDropAction.event,_this$props=_this.props,accessors=_this$props.accessors,slotMetrics=_this$props.slotMetrics,newSlot=slotMetrics.closestSlotFromPoint({y:point.y-_this.eventOffsetTop,x:point.x},bounds),duration=eventTimes(event,accessors,_this.props.localizer).duration,newEnd=_this.props.localizer.add(newSlot,duration,"milliseconds");_this.update(event,slotMetrics.getRange(newSlot,newEnd,!1,!0))},_this.handleDropFromOutside=function(point,boundaryBox){var _this$props2=_this.props,slotMetrics=_this$props2.slotMetrics,resource=_this$props2.resource,start=slotMetrics.closestSlotFromPoint({y:point.y,x:point.x},boundaryBox);_this.context.draggable.onDropFromOutside({start:start,end:slotMetrics.nextSlot(start),allDay:!1,resource:resource})},_this.updateParentScroll=function(parent,node){setTimeout((function(){var draggedEl=querySelectorAll_default()(node,".rbc-addons-dnd-drag-preview")[0];draggedEl&&(draggedEl.offsetTopparent.scrollTop+parent.clientHeight&&(0,esm.F1)(parent,Math.min(draggedEl.offsetTop-parent.offsetHeight+draggedEl.offsetHeight,parent.scrollHeight)))}))},_this._selectable=function(){var wrapper=_this.ref.current,node=wrapper.children[0],isBeingDragged=!1,selector=_this._selector=new Selection.Ay((function(){return wrapper.closest(".rbc-time-view")})),parent=(0,esm.mi)(wrapper);selector.on("beforeSelect",(function(point){var dragAndDropAction=_this.context.draggable.dragAndDropAction;if(!dragAndDropAction.action)return!1;if("resize"===dragAndDropAction.action)return pointInColumn((0,Selection.rF)(node),point);var eventNode=(0,Selection.LP)(node,point);if(!eventNode)return!1;_this.eventOffsetTop=point.y-(0,Selection.rF)(eventNode).top})),selector.on("selecting",(function(box){var bounds=(0,Selection.rF)(node),dragAndDropAction=_this.context.draggable.dragAndDropAction;"move"===dragAndDropAction.action&&(_this.updateParentScroll(parent,node),_this.handleMove(box,bounds)),"resize"===dragAndDropAction.action&&(_this.updateParentScroll(parent,node),_this.handleResize(box,bounds))})),selector.on("dropFromOutside",(function(point){if(_this.context.draggable.onDropFromOutside){var bounds=(0,Selection.rF)(node);pointInColumn(bounds,point)&&_this.handleDropFromOutside(point,bounds)}})),selector.on("dragOver",(function(point){if(_this.context.draggable.dragFromOutsideItem){var bounds=(0,Selection.rF)(node);_this.handleDropFromOutside(point,bounds)}})),selector.on("selectStart",(function(){isBeingDragged=!0,_this.context.draggable.onStart()})),selector.on("select",(function(point){var bounds=(0,Selection.rF)(node);if(isBeingDragged=!1,"resize"===_this.context.draggable.dragAndDropAction.action)_this.handleInteractionEnd();else{if(!_this.state.event||!pointInColumn(bounds,point))return;_this.handleInteractionEnd()}})),selector.on("click",(function(){isBeingDragged&&_this.reset(),_this.context.draggable.onEnd(null)})),selector.on("reset",(function(){_this.reset(),_this.context.draggable.onEnd(null)}))},_this.handleInteractionEnd=function(){var resource=_this.props.resource,event=_this.state.event;_this.reset(),_this.context.draggable.onEnd({start:event.start,end:event.end,resourceId:resource})},_this._teardownSelectable=function(){_this._selector&&(_this._selector.teardown(),_this._selector=null)},_this.state={},_this.ref=react.createRef(),_this}return(0,inherits.default)(EventContainerWrapper,_React$Component),(0,createClass.default)(EventContainerWrapper,[{key:"componentDidMount",value:function componentDidMount(){this._selectable()}},{key:"componentWillUnmount",value:function componentWillUnmount(){this._teardownSelectable()}},{key:"reset",value:function reset(){this.state.event&&this.setState({event:null,top:null,height:null})}},{key:"update",value:function update(event,_ref){var startDate=_ref.startDate,endDate=_ref.endDate,top=_ref.top,height=_ref.height,lastEvent=this.state.event;lastEvent&&startDate===lastEvent.start&&endDate===lastEvent.end||this.setState({top:top,height:height,event:Object.assign({},event,{start:startDate,end:endDate})})}},{key:"handleResize",value:function handleResize(point,bounds){var newRange,_this$props3=this.props,accessors=_this$props3.accessors,slotMetrics=_this$props3.slotMetrics,localizer=_this$props3.localizer,_this$context$draggab=this.context.draggable.dragAndDropAction,event=_this$context$draggab.event,direction=_this$context$draggab.direction,newTime=slotMetrics.closestSlotFromPoint(point,bounds),_eventTimes2=eventTimes(event,accessors,localizer),start=_eventTimes2.start,end=_eventTimes2.end;if("UP"===direction){var newStart=localizer.min(newTime,slotMetrics.closestSlotFromDate(end,-1));newRange=slotMetrics.getRange(newStart,end),newRange=Object.assign({},newRange,{endDate:end})}else if("DOWN"===direction){var newEnd=localizer.max(newTime,slotMetrics.closestSlotFromDate(start));newRange=slotMetrics.getRange(start,newEnd),newRange=Object.assign({},newRange,{startDate:start})}this.update(event,newRange)}},{key:"renderContent",value:function renderContent(){var _this$props4=this.props,children=_this$props4.children,accessors=_this$props4.accessors,components=_this$props4.components,getters=_this$props4.getters,slotMetrics=_this$props4.slotMetrics,localizer=_this$props4.localizer,_this$state=this.state,event=_this$state.event,top=_this$state.top,height=_this$state.height;if(!event)return children;var label,events=children.props.children,start=event.start,end=event.end,format="eventTimeRangeFormat",startsBeforeDay=slotMetrics.startsBeforeDay(start),startsAfterDay=slotMetrics.startsAfterDay(end);return startsBeforeDay?format="eventTimeRangeEndFormat":startsAfterDay&&(format="eventTimeRangeStartFormat"),label=startsBeforeDay&&startsAfterDay?localizer.messages.allDay:localizer.format({start:start,end:end},format),react.cloneElement(children,{children:(0,jsx_runtime.jsxs)(react.Fragment,{children:[events,event&&(0,jsx_runtime.jsx)(TimeGridEvent.A,{event:event,label:label,className:"rbc-addons-dnd-drag-preview",style:{top:top,height:height,width:100},getters:getters,components:components,accessors:Object.assign({},accessors,dragAccessors),continuesPrior:startsBeforeDay,continuesAfter:startsAfterDay})]})})}},{key:"render",value:function render(){return(0,jsx_runtime.jsx)("div",{ref:this.ref,children:this.renderContent()})}}])}(react.Component);EventContainerWrapper.contextType=DnDContext,EventContainerWrapper.__docgenInfo={description:"",methods:[{name:"reset",docblock:null,modifiers:[],params:[],returns:null},{name:"update",docblock:null,modifiers:[],params:[{name:"event",type:null},{name:"{ startDate, endDate, top, height }",type:null}],returns:null},{name:"handleMove",docblock:null,modifiers:[],params:[{name:"point",type:null},{name:"bounds",type:null}],returns:null},{name:"handleResize",docblock:null,modifiers:[],params:[{name:"point",type:null},{name:"bounds",type:null}],returns:null},{name:"handleDropFromOutside",docblock:null,modifiers:[],params:[{name:"point",type:null},{name:"boundaryBox",type:null}],returns:null},{name:"updateParentScroll",docblock:null,modifiers:[],params:[{name:"parent",type:null},{name:"node",type:null}],returns:null},{name:"_selectable",docblock:null,modifiers:[],params:[],returns:null},{name:"handleInteractionEnd",docblock:null,modifiers:[],params:[],returns:null},{name:"_teardownSelectable",docblock:null,modifiers:[],params:[],returns:null},{name:"renderContent",docblock:null,modifiers:[],params:[],returns:null}],displayName:"EventContainerWrapper",props:{accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},slotMetrics:{description:"",type:{name:"object"},required:!0},resource:{description:"",type:{name:"any"},required:!1}}};var dragAndDrop_EventContainerWrapper=EventContainerWrapper;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/addons/dragAndDrop/EventContainerWrapper.js"]={name:"EventContainerWrapper",docgenInfo:EventContainerWrapper.__docgenInfo,path:"src/addons/dragAndDrop/EventContainerWrapper.js"});var toConsumableArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),EventRow=__webpack_require__("./src/EventRow.js"),eventLevels=__webpack_require__("./src/utils/eventLevels.js"),selection=__webpack_require__("./src/utils/selection.js"),WeekWrapper=function(_React$Component){function WeekWrapper(){var _this;(0,classCallCheck.default)(this,WeekWrapper);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,WeekWrapper,[].concat(args))).handleMove=function(point,bounds,draggedEvent){if(!(0,selection.bY)(bounds,point))return _this.reset();var event=_this.context.draggable.dragAndDropAction.event||draggedEvent,_this$props=_this.props,accessors=_this$props.accessors,slotMetrics=_this$props.slotMetrics,rtl=_this$props.rtl,localizer=_this$props.localizer,slot=(0,selection.sU)(bounds,point.x,rtl,slotMetrics.slots),date=slotMetrics.getDateForSlot(slot),_eventTimes=eventTimes(event,accessors,localizer),start=_eventTimes.start,duration=_eventTimes.duration;start=localizer.merge(date,start);var end=localizer.add(start,duration,"milliseconds");_this.update(event,start,end)},_this.handleDropFromOutside=function(point,bounds){if(_this.context.draggable.onDropFromOutside){var _this$props2=_this.props,slotMetrics=_this$props2.slotMetrics,rtl=_this$props2.rtl,localizer=_this$props2.localizer,slot=(0,selection.sU)(bounds,point.x,rtl,slotMetrics.slots),start=slotMetrics.getDateForSlot(slot);_this.context.draggable.onDropFromOutside({start:start,end:localizer.add(start,1,"day"),allDay:!1})}},_this.handleDragOverFromOutside=function(point,node){_this.context.draggable.dragFromOutsideItem&&_this.handleMove(point,node,_this.context.draggable.dragFromOutsideItem())},_this._selectable=function(){var node=_this.ref.current.closest(".rbc-month-row, .rbc-allday-cell"),container=node.closest(".rbc-month-view, .rbc-time-view"),isMonthRow=node.classList.contains("rbc-month-row"),selector=_this._selector=new Selection.Ay((function(){return container}),{validContainers:(0,toConsumableArray.A)(isMonthRow?[]:[".rbc-day-slot",".rbc-allday-cell"])});selector.on("beforeSelect",(function(point){var isAllDay=_this.props.isAllDay,action=_this.context.draggable.dragAndDropAction.action,bounds=(0,Selection.rF)(node),isInBox=(0,selection.bY)(bounds,point);return"move"===action||"resize"===action&&(!isAllDay||isInBox)})),selector.on("selecting",(function(box){var bounds=(0,Selection.rF)(node),dragAndDropAction=_this.context.draggable.dragAndDropAction;"move"===dragAndDropAction.action&&_this.handleMove(box,bounds),"resize"===dragAndDropAction.action&&_this.handleResize(box,bounds)})),selector.on("selectStart",(function(){return _this.context.draggable.onStart()})),selector.on("select",(function(point){var bounds=(0,Selection.rF)(node);_this.state.segment&&((0,selection.bY)(bounds,point)?_this.handleInteractionEnd():_this.reset())})),selector.on("dropFromOutside",(function(point){if(_this.context.draggable.onDropFromOutside){var bounds=(0,Selection.rF)(node);(0,selection.bY)(bounds,point)&&_this.handleDropFromOutside(point,bounds)}})),selector.on("dragOverFromOutside",(function(point){if(_this.context.draggable.dragFromOutsideItem){var bounds=(0,Selection.rF)(node);_this.handleDragOverFromOutside(point,bounds)}})),selector.on("click",(function(){return _this.context.draggable.onEnd(null)})),selector.on("reset",(function(){_this.reset(),_this.context.draggable.onEnd(null)}))},_this.handleInteractionEnd=function(){var _this$props3=_this.props,resourceId=_this$props3.resourceId,isAllDay=_this$props3.isAllDay,event=_this.state.segment.event;_this.reset(),_this.context.draggable.onEnd({start:event.start,end:event.end,resourceId:resourceId,isAllDay:isAllDay})},_this._teardownSelectable=function(){_this._selector&&(_this._selector.teardown(),_this._selector=null)},_this.state={},_this.ref=react.createRef(),_this}return(0,inherits.default)(WeekWrapper,_React$Component),(0,createClass.default)(WeekWrapper,[{key:"componentDidMount",value:function componentDidMount(){this._selectable()}},{key:"componentWillUnmount",value:function componentWillUnmount(){this._teardownSelectable()}},{key:"reset",value:function reset(){this.state.segment&&this.setState({segment:null})}},{key:"update",value:function update(event,start,end){var segment=(0,eventLevels.FA)(Object.assign({},event,{end:end,start:start,__isPreview:!0}),this.props.slotMetrics.range,dragAccessors,this.props.localizer),lastSegment=this.state.segment;lastSegment&&segment.span===lastSegment.span&&segment.left===lastSegment.left&&segment.right===lastSegment.right||this.setState({segment:segment})}},{key:"handleResize",value:function handleResize(point,bounds){var _this$context$draggab=this.context.draggable.dragAndDropAction,event=_this$context$draggab.event,direction=_this$context$draggab.direction,_this$props4=this.props,accessors=_this$props4.accessors,slotMetrics=_this$props4.slotMetrics,rtl=_this$props4.rtl,localizer=_this$props4.localizer,_eventTimes2=eventTimes(event,accessors,localizer),start=_eventTimes2.start,end=_eventTimes2.end,slot=(0,selection.sU)(bounds,point.x,rtl,slotMetrics.slots),date=slotMetrics.getDateForSlot(slot),cursorInRow=(0,selection.bY)(bounds,point);if("RIGHT"===direction){if(cursorInRow){if(slotMetrics.last+start))return void this.setState({segment:null});end=localizer.add(slotMetrics.last,1,"milliseconds")}var originalEnd=accessors.end(event);end=localizer.merge(end,originalEnd),localizer.lt(end,start)&&(end=originalEnd)}else if("LEFT"===direction){if(cursorInRow){if(slotMetrics.first>end)return this.reset();start=date}else{if(!(localizer.inRange(end,slotMetrics.first,slotMetrics.last)||bounds.top>point.y&&localizer.lt(slotMetrics.last,end)))return void this.reset();start=localizer.add(slotMetrics.first,-1,"milliseconds")}var originalStart=accessors.start(event);start=localizer.merge(start,originalStart),localizer.gt(start,end)&&(start=originalStart)}this.update(event,start,end)}},{key:"render",value:function render(){var _this$props5=this.props,children=_this$props5.children,accessors=_this$props5.accessors,segment=this.state.segment;return(0,jsx_runtime.jsxs)("div",{ref:this.ref,className:"rbc-addons-dnd-row-body",children:[children,segment&&(0,jsx_runtime.jsx)(EventRow.A,Object.assign({},this.props,{selected:null,className:"rbc-addons-dnd-drag-row",segments:[segment],accessors:Object.assign({},accessors,dragAccessors)}))]})}}])}(react.Component);WeekWrapper.contextType=DnDContext,WeekWrapper.__docgenInfo={description:"",methods:[{name:"reset",docblock:null,modifiers:[],params:[],returns:null},{name:"update",docblock:null,modifiers:[],params:[{name:"event",type:null},{name:"start",type:null},{name:"end",type:null}],returns:null},{name:"handleMove",docblock:null,modifiers:[],params:[{name:"point",type:null},{name:"bounds",type:null},{name:"draggedEvent",type:null}],returns:null},{name:"handleDropFromOutside",docblock:null,modifiers:[],params:[{name:"point",type:null},{name:"bounds",type:null}],returns:null},{name:"handleDragOverFromOutside",docblock:null,modifiers:[],params:[{name:"point",type:null},{name:"node",type:null}],returns:null},{name:"handleResize",docblock:null,modifiers:[],params:[{name:"point",type:null},{name:"bounds",type:null}],returns:null},{name:"_selectable",docblock:null,modifiers:[],params:[],returns:null},{name:"handleInteractionEnd",docblock:null,modifiers:[],params:[],returns:null},{name:"_teardownSelectable",docblock:null,modifiers:[],params:[],returns:null}],displayName:"WeekWrapper",props:{isAllDay:{description:"",type:{name:"bool"},required:!1},slotMetrics:{description:"",type:{name:"object"},required:!0},accessors:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},resourceId:{description:"",type:{name:"any"},required:!1},rtl:{description:"",type:{name:"bool"},required:!1},localizer:{description:"",type:{name:"any"},required:!1}}};var dragAndDrop_WeekWrapper=WeekWrapper;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/addons/dragAndDrop/WeekWrapper.js"]={name:"WeekWrapper",docgenInfo:WeekWrapper.__docgenInfo,path:"src/addons/dragAndDrop/WeekWrapper.js"});var withDragAndDrop_excluded=["selectable","elementProps","components"];var dragAndDrop=function withDragAndDrop(Calendar){var DragAndDropCalendar=function(_React$Component){function DragAndDropCalendar(){var _this;(0,classCallCheck.default)(this,DragAndDropCalendar);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,DragAndDropCalendar,[].concat(args))).defaultOnDragOver=function(event){event.preventDefault()},_this.handleBeginAction=function(event,action,direction){_this.setState({event:event,action:action,direction:direction});var onDragStart=_this.props.onDragStart;onDragStart&&onDragStart({event:event,action:action,direction:direction})},_this.handleInteractionStart=function(){!1===_this.state.interacting&&_this.setState({interacting:!0})},_this.handleInteractionEnd=function(interactionInfo){var _this$state=_this.state,action=_this$state.action,event=_this$state.event;if(action&&(_this.setState({action:null,event:null,interacting:!1,direction:null}),null!=interactionInfo)){interactionInfo.event=event;var _this$props=_this.props,onEventDrop=_this$props.onEventDrop,onEventResize=_this$props.onEventResize;"move"===action&&onEventDrop&&onEventDrop(interactionInfo),"resize"===action&&onEventResize&&onEventResize(interactionInfo)}},_this.state={interacting:!1},_this}return(0,inherits.default)(DragAndDropCalendar,_React$Component),(0,createClass.default)(DragAndDropCalendar,[{key:"getDnDContextValue",value:function getDnDContextValue(){return{draggable:{onStart:this.handleInteractionStart,onEnd:this.handleInteractionEnd,onBeginAction:this.handleBeginAction,onDropFromOutside:this.props.onDropFromOutside,dragFromOutsideItem:this.props.dragFromOutsideItem,draggableAccessor:this.props.draggableAccessor,resizableAccessor:this.props.resizableAccessor,dragAndDropAction:this.state}}}},{key:"render",value:function render(){var _this$props2=this.props,selectable=_this$props2.selectable,elementProps=_this$props2.elementProps,components=_this$props2.components,props=(0,objectWithoutProperties.A)(_this$props2,withDragAndDrop_excluded),interacting=this.state.interacting;delete props.onEventDrop,delete props.onEventResize,props.selectable=!!selectable&&"ignoreEvents",this.components=mergeComponents(components,{eventWrapper:dragAndDrop_EventWrapper,eventContainerWrapper:dragAndDrop_EventContainerWrapper,weekWrapper:dragAndDrop_WeekWrapper});var elementPropsWithDropFromOutside=this.props.onDropFromOutside?Object.assign({},elementProps,{onDragOver:this.props.onDragOver||this.defaultOnDragOver}):elementProps;props.className=(0,clsx_m.A)(props.className,"rbc-addons-dnd",!!interacting&&"rbc-addons-dnd-is-dragging");var context=this.getDnDContextValue();return(0,jsx_runtime.jsx)(DnDContext.Provider,{value:context,children:(0,jsx_runtime.jsx)(Calendar,Object.assign({},props,{elementProps:elementPropsWithDropFromOutside,components:this.components}))})}}])}(react.Component);return DragAndDropCalendar.defaultProps=Object.assign({},Calendar.defaultProps,{draggableAccessor:null,resizableAccessor:null,resizable:!0}),DragAndDropCalendar}},"./src/index.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{Vv:function(){return src_Calendar},C5:function(){return constants.o},Pp:function(){return constants.l},vH:function(){return dayjs},fk:function(){return globalize},AW:function(){return luxon},ye:function(){return moment}});var NoopWrapper=__webpack_require__("./src/NoopWrapper.js"),BackgroundWrapper=(NoopWrapper.A,__webpack_require__("./src/BackgroundWrapper.js")),objectWithoutProperties=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),classCallCheck=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/classCallCheck.js"),createClass=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/createClass.js"),callSuper=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/callSuper.js"),inherits=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/inherits.js"),slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.object.entries.js"),__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.object.keys.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),esm=__webpack_require__("./node_modules/uncontrollable/lib/esm/index.js"),clsx_m=__webpack_require__("./node_modules/clsx/dist/clsx.m.js"),helpers=(__webpack_require__("./src/utils/propTypes.js"),__webpack_require__("./src/utils/helpers.js")),constants=__webpack_require__("./src/utils/constants.js"),prop_types=__webpack_require__("./node_modules/prop-types/index.js"),prop_types_default=__webpack_require__.n(prop_types),browser=__webpack_require__("./node_modules/invariant/browser.js"),browser_default=__webpack_require__.n(browser),dates=__webpack_require__("./src/utils/dates.js"),localePropType=prop_types_default().oneOfType([prop_types_default().string,prop_types_default().func]);function _format(localizer,formatter,value,format,culture){var result="function"==typeof format?format(value,culture,localizer):formatter.call(localizer,value,format,culture);return browser_default()(null==result||"string"==typeof result,"`localizer format(..)` must return a string, null, or undefined"),result}function getSlotDate(dt,minutesFromMidnight,offset){return new Date(dt.getFullYear(),dt.getMonth(),dt.getDate(),0,minutesFromMidnight+offset,0,0)}function getDstOffset(start,end){return start.getTimezoneOffset()-end.getTimezoneOffset()}function getTotalMin(start,end){return(0,dates.Ui)(start,end,"minutes")+getDstOffset(start,end)}function getMinutesFromMidnight(start){var daystart=(0,dates.GH)(start,"day");return(0,dates.Ui)(daystart,start,"minutes")+getDstOffset(daystart,start)}function continuesPrior(start,first){return(0,dates.lt)(start,first,"day")}function continuesAfter(start,end,last){return(0,dates.eq)(start,end,"minutes")?(0,dates.RO)(end,last,"minutes"):(0,dates.gt)(end,last,"minutes")}function daySpan(start,end){return(0,dates.p0)(start,end,"day")}function sortEvents(_ref){var _ref$evtA=_ref.evtA,aStart=_ref$evtA.start,aEnd=_ref$evtA.end,aAllDay=_ref$evtA.allDay,_ref$evtB=_ref.evtB,bStart=_ref$evtB.start,bEnd=_ref$evtB.end,bAllDay=_ref$evtB.allDay,startSort=+(0,dates.GH)(aStart,"day")-+(0,dates.GH)(bStart,"day"),durA=daySpan(aStart,aEnd),durB=daySpan(bStart,bEnd);return startSort||durB-durA||!!bAllDay-!!aAllDay||+aStart-+bStart||+aEnd-+bEnd}function inEventRange(_ref2){var _ref2$event=_ref2.event,start=_ref2$event.start,end=_ref2$event.end,_ref2$range=_ref2.range,rangeStart=_ref2$range.start,rangeEnd=_ref2$range.end,eStart=(0,dates.GH)(start,"day"),startsBeforeEnd=(0,dates.wJ)(eStart,rangeEnd,"day"),endsAfterStart=(0,dates.t7)(eStart,end,"minutes")?(0,dates.gt)(end,rangeStart,"minutes"):(0,dates.RO)(end,rangeStart,"minutes");return startsBeforeEnd&&endsAfterStart}function isSameDate(date1,date2){return(0,dates.eq)(date1,date2,"day")}function startAndEndAreDateOnly(start,end){return(0,dates.pR)(start)&&(0,dates.pR)(end)}var localizer_DateLocalizer=(0,createClass.default)((function DateLocalizer(spec){var _this=this;(0,classCallCheck.default)(this,DateLocalizer),browser_default()("function"==typeof spec.format,"date localizer `format(..)` must be a function"),browser_default()("function"==typeof spec.firstOfWeek,"date localizer `firstOfWeek(..)` must be a function"),this.propType=spec.propType||localePropType,this.formats=spec.formats,this.format=function(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return _format.apply(void 0,[_this,spec.format].concat(args))},this.startOfWeek=spec.firstOfWeek,this.merge=spec.merge||dates.h1,this.inRange=spec.inRange||dates.r4,this.lt=spec.lt||dates.lt,this.lte=spec.lte||dates.wJ,this.gt=spec.gt||dates.gt,this.gte=spec.gte||dates.RO,this.eq=spec.eq||dates.eq,this.neq=spec.neq||dates.t7,this.startOf=spec.startOf||dates.GH,this.endOf=spec.endOf||dates.pJ,this.add=spec.add||dates.WQ,this.range=spec.range||dates.y1,this.diff=spec.diff||dates.Ui,this.ceil=spec.ceil||dates.mk,this.min=spec.min||dates.jk,this.max=spec.max||dates.T9,this.minutes=spec.minutes||dates.Gx,this.daySpan=spec.daySpan||daySpan,this.firstVisibleDay=spec.firstVisibleDay||dates.tk,this.lastVisibleDay=spec.lastVisibleDay||dates.Jo,this.visibleDays=spec.visibleDays||dates.IC,this.getSlotDate=spec.getSlotDate||getSlotDate,this.getTimezoneOffset=spec.getTimezoneOffset||function(value){return value.getTimezoneOffset()},this.getDstOffset=spec.getDstOffset||getDstOffset,this.getTotalMin=spec.getTotalMin||getTotalMin,this.getMinutesFromMidnight=spec.getMinutesFromMidnight||getMinutesFromMidnight,this.continuesPrior=spec.continuesPrior||continuesPrior,this.continuesAfter=spec.continuesAfter||continuesAfter,this.sortEvents=spec.sortEvents||sortEvents,this.inEventRange=spec.inEventRange||inEventRange,this.isSameDate=spec.isSameDate||isSameDate,this.startAndEndAreDateOnly=spec.startAndEndAreDateOnly||startAndEndAreDateOnly,this.segmentOffset=spec.browserTZOffset?spec.browserTZOffset():0}));function mergeWithDefaults(localizer,culture,formatOverrides,messages){var formats=Object.assign({},localizer.formats,formatOverrides);return Object.assign({},localizer,{messages:messages,startOfWeek:function startOfWeek(){return localizer.startOfWeek(culture)},format:function format(value,_format2){return localizer.format(value,formats[_format2]||_format2,culture)}})}var defaultMessages={date:"Date",time:"Time",event:"Event",allDay:"All Day",week:"Week",work_week:"Work Week",day:"Day",month:"Month",previous:"Back",next:"Next",yesterday:"Yesterday",tomorrow:"Tomorrow",today:"Today",agenda:"Agenda",noEventsInRange:"There are no events in this range.",showMore:function showMore(total){return"+".concat(total," more")}};var defineProperty=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/defineProperty.js"),toConsumableArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),chunk=(__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.array.slice.js"),__webpack_require__("./node_modules/core-js/modules/es.array.sort.js"),__webpack_require__("./node_modules/lodash/chunk.js")),chunk_default=__webpack_require__.n(chunk),esm_position=__webpack_require__("./node_modules/dom-helpers/esm/position.js"),animationFrame=__webpack_require__("./node_modules/dom-helpers/esm/animationFrame.js"),PopOverlay=__webpack_require__("./src/PopOverlay.js"),DateContentRow=__webpack_require__("./src/DateContentRow.js"),Header=__webpack_require__("./src/Header.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),DateHeader=function DateHeader(_ref){var label=_ref.label,drilldownView=_ref.drilldownView,onDrillDown=_ref.onDrillDown;return drilldownView?(0,jsx_runtime.jsx)("button",{type:"button",className:"rbc-button-link",onClick:onDrillDown,role:"cell",children:label}):(0,jsx_runtime.jsx)("span",{children:label})};DateHeader.displayName="DateHeader",DateHeader.__docgenInfo={description:"",methods:[],displayName:"DateHeader",props:{label:{description:"",type:{name:"node"},required:!1},date:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},drilldownView:{description:"",type:{name:"string"},required:!1},onDrillDown:{description:"",type:{name:"func"},required:!1},isOffRange:{description:"",type:{name:"bool"},required:!1}}};var src_DateHeader=DateHeader;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/DateHeader.js"]={name:"DateHeader",docgenInfo:DateHeader.__docgenInfo,path:"src/DateHeader.js"});var eventLevels=__webpack_require__("./src/utils/eventLevels.js"),_excluded=["date","className"],MonthView=function(_React$Component){function MonthView(){var _this;(0,classCallCheck.default)(this,MonthView);for(var _len=arguments.length,_args=new Array(_len),_key=0;_key<_len;_key++)_args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,MonthView,[].concat(_args))).getContainer=function(){return _this.containerRef.current},_this.renderWeek=function(week,weekIdx){var _this$props=_this.props,events=_this$props.events,components=_this$props.components,selectable=_this$props.selectable,getNow=_this$props.getNow,selected=_this$props.selected,date=_this$props.date,localizer=_this$props.localizer,longPressThreshold=_this$props.longPressThreshold,accessors=_this$props.accessors,getters=_this$props.getters,showAllEvents=_this$props.showAllEvents,_this$state=_this.state,needLimitMeasure=_this$state.needLimitMeasure,rowLimit=_this$state.rowLimit,weeksEvents=function eventsForWeek(evts,start,end,accessors,localizer){return evts.filter((function(e){return(0,eventLevels.r4)(e,start,end,accessors,localizer)}))}((0,toConsumableArray.A)(events),week[0],week[week.length-1],accessors,localizer),sorted=(0,eventLevels.SY)(weeksEvents,accessors,localizer);return(0,jsx_runtime.jsx)(DateContentRow.A,{ref:0===weekIdx?_this.slotRowRef:void 0,container:_this.getContainer,className:"rbc-month-row",getNow:getNow,date:date,range:week,events:sorted,maxRows:showAllEvents?1/0:rowLimit,selected:selected,selectable:selectable,components:components,accessors:accessors,getters:getters,localizer:localizer,renderHeader:_this.readerDateHeading,renderForMeasure:needLimitMeasure,onShowMore:_this.handleShowMore,onSelect:_this.handleSelectEvent,onDoubleClick:_this.handleDoubleClickEvent,onKeyPress:_this.handleKeyPressEvent,onSelectSlot:_this.handleSelectSlot,longPressThreshold:longPressThreshold,rtl:_this.props.rtl,resizable:_this.props.resizable,showAllEvents:showAllEvents},weekIdx)},_this.readerDateHeading=function(_ref){var date=_ref.date,className=_ref.className,props=(0,objectWithoutProperties.A)(_ref,_excluded),_this$props2=_this.props,currentDate=_this$props2.date,getDrilldownView=_this$props2.getDrilldownView,localizer=_this$props2.localizer,isOffRange=localizer.neq(date,currentDate,"month"),isCurrent=localizer.isSameDate(date,currentDate),drilldownView=getDrilldownView(date),label=localizer.format(date,"dateFormat"),DateHeaderComponent=_this.props.components.dateHeader||src_DateHeader;return(0,jsx_runtime.jsx)("div",Object.assign({},props,{className:(0,clsx_m.A)(className,isOffRange&&"rbc-off-range",isCurrent&&"rbc-current"),role:"cell",children:(0,jsx_runtime.jsx)(DateHeaderComponent,{label:label,date:date,drilldownView:drilldownView,isOffRange:isOffRange,onDrillDown:function onDrillDown(e){return _this.handleHeadingClick(date,drilldownView,e)}})}))},_this.handleSelectSlot=function(range,slotInfo){_this._pendingSelection=_this._pendingSelection.concat(range),clearTimeout(_this._selectTimer),_this._selectTimer=setTimeout((function(){return _this.selectDates(slotInfo)}))},_this.handleHeadingClick=function(date,view,e){e.preventDefault(),_this.clearSelection(),(0,helpers.me)(_this.props.onDrillDown,[date,view])},_this.handleSelectEvent=function(){_this.clearSelection();for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++)args[_key2]=arguments[_key2];(0,helpers.me)(_this.props.onSelectEvent,args)},_this.handleDoubleClickEvent=function(){_this.clearSelection();for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++)args[_key3]=arguments[_key3];(0,helpers.me)(_this.props.onDoubleClickEvent,args)},_this.handleKeyPressEvent=function(){_this.clearSelection();for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++)args[_key4]=arguments[_key4];(0,helpers.me)(_this.props.onKeyPressEvent,args)},_this.handleShowMore=function(events,date,cell,slot,target){var _this$props3=_this.props,popup=_this$props3.popup,onDrillDown=_this$props3.onDrillDown,onShowMore=_this$props3.onShowMore,getDrilldownView=_this$props3.getDrilldownView,doShowMoreDrillDown=_this$props3.doShowMoreDrillDown;if(_this.clearSelection(),popup){var position=(0,esm_position.A)(cell,_this.containerRef.current);_this.setState({overlay:{date:date,events:events,position:position,target:target}})}else doShowMoreDrillDown&&(0,helpers.me)(onDrillDown,[date,getDrilldownView(date)||constants.l.DAY]);(0,helpers.me)(onShowMore,[events,date,slot])},_this.overlayDisplay=function(){_this.setState({overlay:null})},_this.state={rowLimit:5,needLimitMeasure:!0,date:null},_this.containerRef=(0,react.createRef)(),_this.slotRowRef=(0,react.createRef)(),_this._bgRows=[],_this._pendingSelection=[],_this}return(0,inherits.default)(MonthView,_React$Component),(0,createClass.default)(MonthView,[{key:"componentDidMount",value:function componentDidMount(){var running,_this2=this;this.state.needLimitMeasure&&this.measureRowLimit(this.props),window.addEventListener("resize",this._resizeListener=function(){running||animationFrame.E((function(){running=!1,_this2.setState({needLimitMeasure:!0})}))},!1)}},{key:"componentDidUpdate",value:function componentDidUpdate(){this.state.needLimitMeasure&&this.measureRowLimit(this.props)}},{key:"componentWillUnmount",value:function componentWillUnmount(){window.removeEventListener("resize",this._resizeListener,!1)}},{key:"render",value:function render(){var _this$props4=this.props,date=_this$props4.date,localizer=_this$props4.localizer,className=_this$props4.className,month=localizer.visibleDays(date,localizer),weeks=chunk_default()(month,7);return this._weekCount=weeks.length,(0,jsx_runtime.jsxs)("div",{className:(0,clsx_m.A)("rbc-month-view",className),role:"table","aria-label":"Month View",ref:this.containerRef,children:[(0,jsx_runtime.jsx)("div",{className:"rbc-row rbc-month-header",role:"row",children:this.renderHeaders(weeks[0])}),weeks.map(this.renderWeek),this.props.popup&&this.renderOverlay()]})}},{key:"renderHeaders",value:function renderHeaders(row){var _this$props5=this.props,localizer=_this$props5.localizer,components=_this$props5.components,first=row[0],last=row[row.length-1],HeaderComponent=components.header||Header.A;return localizer.range(first,last,"day").map((function(day,idx){return(0,jsx_runtime.jsx)("div",{className:"rbc-header",children:(0,jsx_runtime.jsx)(HeaderComponent,{date:day,localizer:localizer,label:localizer.format(day,"weekdayFormat")})},"header_"+idx)}))}},{key:"renderOverlay",value:function renderOverlay(){var _this$state$overlay,_this$state2,_this3=this,overlay=null!==(_this$state$overlay=null===(_this$state2=this.state)||void 0===_this$state2?void 0:_this$state2.overlay)&&void 0!==_this$state$overlay?_this$state$overlay:{},_this$props6=this.props,accessors=_this$props6.accessors,localizer=_this$props6.localizer,components=_this$props6.components,getters=_this$props6.getters,selected=_this$props6.selected,popupOffset=_this$props6.popupOffset,handleDragStart=_this$props6.handleDragStart;return(0,jsx_runtime.jsx)(PopOverlay.A,{overlay:overlay,accessors:accessors,localizer:localizer,components:components,getters:getters,selected:selected,popupOffset:popupOffset,ref:this.containerRef,handleKeyPressEvent:this.handleKeyPressEvent,handleSelectEvent:this.handleSelectEvent,handleDoubleClickEvent:this.handleDoubleClickEvent,handleDragStart:handleDragStart,show:!!overlay.position,overlayDisplay:this.overlayDisplay,onHide:function onHide(){return _this3.setState({overlay:null})}})}},{key:"measureRowLimit",value:function measureRowLimit(){this.setState({needLimitMeasure:!1,rowLimit:this.slotRowRef.current.getRowLimit()})}},{key:"selectDates",value:function selectDates(slotInfo){var slots=this._pendingSelection.slice();this._pendingSelection=[],slots.sort((function(a,b){return+a-+b}));var start=new Date(slots[0]),end=new Date(slots[slots.length-1]);end.setDate(slots[slots.length-1].getDate()+1),(0,helpers.me)(this.props.onSelectSlot,{slots:slots,start:start,end:end,action:slotInfo.action,bounds:slotInfo.bounds,box:slotInfo.box})}},{key:"clearSelection",value:function clearSelection(){clearTimeout(this._selectTimer),this._pendingSelection=[]}}],[{key:"getDerivedStateFromProps",value:function getDerivedStateFromProps(_ref2,state){var date=_ref2.date;return{date:date,needLimitMeasure:_ref2.localizer.neq(date,state.date,"month")}}}])}(react.Component);MonthView.range=function(date,_ref3){var localizer=_ref3.localizer;return{start:localizer.firstVisibleDay(date,localizer),end:localizer.lastVisibleDay(date,localizer)}},MonthView.navigate=function(date,action,_ref4){var localizer=_ref4.localizer;switch(action){case constants.o.PREVIOUS:return localizer.add(date,-1,"month");case constants.o.NEXT:return localizer.add(date,1,"month");default:return date}},MonthView.title=function(date,_ref5){return _ref5.localizer.format(date,"monthHeaderFormat")},MonthView.__docgenInfo={description:"",methods:[{name:"getContainer",docblock:null,modifiers:[],params:[],returns:null},{name:"renderWeek",docblock:null,modifiers:[],params:[{name:"week",type:null},{name:"weekIdx",type:null}],returns:null},{name:"readerDateHeading",docblock:null,modifiers:[],params:[{name:"{ date, className, ...props }",type:null}],returns:null},{name:"renderHeaders",docblock:null,modifiers:[],params:[{name:"row",type:null}],returns:null},{name:"renderOverlay",docblock:null,modifiers:[],params:[],returns:null},{name:"measureRowLimit",docblock:null,modifiers:[],params:[],returns:null},{name:"handleSelectSlot",docblock:null,modifiers:[],params:[{name:"range",type:null},{name:"slotInfo",type:null}],returns:null},{name:"handleHeadingClick",docblock:null,modifiers:[],params:[{name:"date",type:null},{name:"view",type:null},{name:"e",type:null}],returns:null},{name:"handleSelectEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleDoubleClickEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleKeyPressEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleShowMore",docblock:null,modifiers:[],params:[{name:"events",type:null},{name:"date",type:null},{name:"cell",type:null},{name:"slot",type:null},{name:"target",type:null}],returns:null},{name:"overlayDisplay",docblock:null,modifiers:[],params:[],returns:null},{name:"selectDates",docblock:null,modifiers:[],params:[{name:"slotInfo",type:null}],returns:null},{name:"clearSelection",docblock:null,modifiers:[],params:[],returns:null},{name:"range",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null},{name:"navigate",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"action",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null},{name:"title",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null}],displayName:"MonthView",props:{events:{description:"",type:{name:"array"},required:!0},date:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},min:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},max:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},step:{description:"",type:{name:"number"},required:!1},getNow:{description:"",type:{name:"func"},required:!0},scrollToTime:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},enableAutoScroll:{description:"",type:{name:"bool"},required:!1},rtl:{description:"",type:{name:"bool"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1},width:{description:"",type:{name:"number"},required:!1},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},selected:{description:"",type:{name:"object"},required:!1},selectable:{description:"",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},longPressThreshold:{description:"",type:{name:"number"},required:!1},onNavigate:{description:"",type:{name:"func"},required:!1},onSelectSlot:{description:"",type:{name:"func"},required:!1},onSelectEvent:{description:"",type:{name:"func"},required:!1},onDoubleClickEvent:{description:"",type:{name:"func"},required:!1},onKeyPressEvent:{description:"",type:{name:"func"},required:!1},onShowMore:{description:"",type:{name:"func"},required:!1},showAllEvents:{description:"",type:{name:"bool"},required:!1},doShowMoreDrillDown:{description:"",type:{name:"bool"},required:!1},onDrillDown:{description:"",type:{name:"func"},required:!1},getDrilldownView:{description:"",type:{name:"func"},required:!0},popup:{description:"",type:{name:"bool"},required:!1},handleDragStart:{description:"",type:{name:"func"},required:!1},popupOffset:{description:"",type:{name:"union",value:[{name:"number"},{name:"shape",value:{x:{name:"number",required:!1},y:{name:"number",required:!1}}}]},required:!1}}};var Month=MonthView;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/Month.js"]={name:"MonthView",docgenInfo:MonthView.__docgenInfo,path:"src/Month.js"});var TimeGrid=__webpack_require__("./src/TimeGrid.js"),Day_excluded=["date","localizer","min","max","scrollToTime","enableAutoScroll"],Day=function(_React$Component){function Day(){return(0,classCallCheck.default)(this,Day),(0,callSuper.default)(this,Day,arguments)}return(0,inherits.default)(Day,_React$Component),(0,createClass.default)(Day,[{key:"render",value:function render(){var _this$props=this.props,date=_this$props.date,localizer=_this$props.localizer,_this$props$min=_this$props.min,min=void 0===_this$props$min?localizer.startOf(new Date,"day"):_this$props$min,_this$props$max=_this$props.max,max=void 0===_this$props$max?localizer.endOf(new Date,"day"):_this$props$max,_this$props$scrollToT=_this$props.scrollToTime,scrollToTime=void 0===_this$props$scrollToT?localizer.startOf(new Date,"day"):_this$props$scrollToT,_this$props$enableAut=_this$props.enableAutoScroll,enableAutoScroll=void 0===_this$props$enableAut||_this$props$enableAut,props=(0,objectWithoutProperties.A)(_this$props,Day_excluded),range=Day.range(date,{localizer:localizer});return(0,jsx_runtime.jsx)(TimeGrid.A,Object.assign({},props,{range:range,eventOffset:10,localizer:localizer,min:min,max:max,scrollToTime:scrollToTime,enableAutoScroll:enableAutoScroll}))}}])}(react.Component);Day.range=function(date,_ref){return[_ref.localizer.startOf(date,"day")]},Day.navigate=function(date,action,_ref2){var localizer=_ref2.localizer;switch(action){case constants.o.PREVIOUS:return localizer.add(date,-1,"day");case constants.o.NEXT:return localizer.add(date,1,"day");default:return date}},Day.title=function(date,_ref3){return _ref3.localizer.format(date,"dayHeaderFormat")},Day.__docgenInfo={description:"",methods:[{name:"range",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null},{name:"navigate",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"action",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null},{name:"title",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null}],displayName:"Day",props:{date:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},events:{description:"",type:{name:"array"},required:!0},backgroundEvents:{description:"",type:{name:"array"},required:!0},resources:{description:"",type:{name:"array"},required:!1},step:{description:"",type:{name:"number"},required:!1},timeslots:{description:"",type:{name:"number"},required:!1},range:{description:"",type:{name:"arrayOf",value:{name:"instanceOf",value:"Date"}},required:!1},min:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},max:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},getNow:{description:"",type:{name:"func"},required:!0},scrollToTime:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},enableAutoScroll:{description:"",type:{name:"bool"},required:!1},showMultiDayTimes:{description:"",type:{name:"bool"},required:!1},rtl:{description:"",type:{name:"bool"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1},width:{description:"",type:{name:"number"},required:!1},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},allDayMaxRows:{description:"",type:{name:"number"},required:!1},selected:{description:"",type:{name:"object"},required:!1},selectable:{description:"",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},longPressThreshold:{description:"",type:{name:"number"},required:!1},onNavigate:{description:"",type:{name:"func"},required:!1},onSelectSlot:{description:"",type:{name:"func"},required:!1},onSelectEnd:{description:"",type:{name:"func"},required:!1},onSelectStart:{description:"",type:{name:"func"},required:!1},onSelectEvent:{description:"",type:{name:"func"},required:!1},onDoubleClickEvent:{description:"",type:{name:"func"},required:!1},onKeyPressEvent:{description:"",type:{name:"func"},required:!1},onShowMore:{description:"",type:{name:"func"},required:!1},onDrillDown:{description:"",type:{name:"func"},required:!1},getDrilldownView:{description:"",type:{name:"func"},required:!0},dayLayoutAlgorithm:{description:"",type:{name:"custom",raw:"DayLayoutAlgorithmPropType"},required:!1},showAllEvents:{description:"",type:{name:"bool"},required:!1},doShowMoreDrillDown:{description:"",type:{name:"bool"},required:!1},popup:{description:"",type:{name:"bool"},required:!1},handleDragStart:{description:"",type:{name:"func"},required:!1},popupOffset:{description:"",type:{name:"union",value:[{name:"number"},{name:"shape",value:{x:{name:"number",required:!1},y:{name:"number",required:!1}}}]},required:!1}}};var src_Day=Day;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/Day.js"]={name:"Day",docgenInfo:Day.__docgenInfo,path:"src/Day.js"});var toArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toArray.js"),Week_excluded=["date","localizer","min","max","scrollToTime","enableAutoScroll"],Week=function(_React$Component){function Week(){return(0,classCallCheck.default)(this,Week),(0,callSuper.default)(this,Week,arguments)}return(0,inherits.default)(Week,_React$Component),(0,createClass.default)(Week,[{key:"render",value:function render(){var _this$props=this.props,date=_this$props.date,localizer=_this$props.localizer,_this$props$min=_this$props.min,min=void 0===_this$props$min?localizer.startOf(new Date,"day"):_this$props$min,_this$props$max=_this$props.max,max=void 0===_this$props$max?localizer.endOf(new Date,"day"):_this$props$max,_this$props$scrollToT=_this$props.scrollToTime,scrollToTime=void 0===_this$props$scrollToT?localizer.startOf(new Date,"day"):_this$props$scrollToT,_this$props$enableAut=_this$props.enableAutoScroll,enableAutoScroll=void 0===_this$props$enableAut||_this$props$enableAut,props=(0,objectWithoutProperties.A)(_this$props,Week_excluded),range=Week.range(date,this.props);return(0,jsx_runtime.jsx)(TimeGrid.A,Object.assign({},props,{range:range,eventOffset:15,localizer:localizer,min:min,max:max,scrollToTime:scrollToTime,enableAutoScroll:enableAutoScroll}))}}])}(react.Component);Week.defaultProps=TimeGrid.A.defaultProps,Week.navigate=function(date,action,_ref){var localizer=_ref.localizer;switch(action){case constants.o.PREVIOUS:return localizer.add(date,-1,"week");case constants.o.NEXT:return localizer.add(date,1,"week");default:return date}},Week.range=function(date,_ref2){var localizer=_ref2.localizer,firstOfWeek=localizer.startOfWeek(),start=localizer.startOf(date,"week",firstOfWeek),end=localizer.endOf(date,"week",firstOfWeek);return localizer.range(start,end)},Week.title=function(date,_ref3){var localizer=_ref3.localizer,_Week$range=Week.range(date,{localizer:localizer}),_Week$range2=(0,toArray.A)(_Week$range),start=_Week$range2[0],rest=_Week$range2.slice(1);return localizer.format({start:start,end:rest.pop()},"dayRangeHeaderFormat")},Week.__docgenInfo={description:"",methods:[{name:"navigate",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"action",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null},{name:"range",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null},{name:"title",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null}],displayName:"Week",props:{date:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},events:{description:"",type:{name:"array"},required:!0},backgroundEvents:{description:"",type:{name:"array"},required:!0},resources:{description:"",type:{name:"array"},required:!1},step:{description:"",type:{name:"number"},required:!1},timeslots:{description:"",type:{name:"number"},required:!1},range:{description:"",type:{name:"arrayOf",value:{name:"instanceOf",value:"Date"}},required:!1},min:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},max:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},getNow:{description:"",type:{name:"func"},required:!0},scrollToTime:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},enableAutoScroll:{description:"",type:{name:"bool"},required:!1},showMultiDayTimes:{description:"",type:{name:"bool"},required:!1},rtl:{description:"",type:{name:"bool"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1},width:{description:"",type:{name:"number"},required:!1},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},allDayMaxRows:{description:"",type:{name:"number"},required:!1},selected:{description:"",type:{name:"object"},required:!1},selectable:{description:"",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},longPressThreshold:{description:"",type:{name:"number"},required:!1},onNavigate:{description:"",type:{name:"func"},required:!1},onSelectSlot:{description:"",type:{name:"func"},required:!1},onSelectEnd:{description:"",type:{name:"func"},required:!1},onSelectStart:{description:"",type:{name:"func"},required:!1},onSelectEvent:{description:"",type:{name:"func"},required:!1},onDoubleClickEvent:{description:"",type:{name:"func"},required:!1},onKeyPressEvent:{description:"",type:{name:"func"},required:!1},onShowMore:{description:"",type:{name:"func"},required:!1},onDrillDown:{description:"",type:{name:"func"},required:!1},getDrilldownView:{description:"",type:{name:"func"},required:!0},dayLayoutAlgorithm:{description:"",type:{name:"custom",raw:"DayLayoutAlgorithmPropType"},required:!1},showAllEvents:{description:"",type:{name:"bool"},required:!1},doShowMoreDrillDown:{description:"",type:{name:"bool"},required:!1},popup:{description:"",type:{name:"bool"},required:!1},handleDragStart:{description:"",type:{name:"func"},required:!1},popupOffset:{description:"",type:{name:"union",value:[{name:"number"},{name:"shape",value:{x:{name:"number",required:!1},y:{name:"number",required:!1}}}]},required:!1}}};var src_Week=Week;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/Week.js"]={name:"Week",docgenInfo:Week.__docgenInfo,path:"src/Week.js"});var WorkWeek_excluded=["date","localizer","min","max","scrollToTime","enableAutoScroll"];function workWeekRange(date,options){return src_Week.range(date,options).filter((function(d){return-1===[6,0].indexOf(d.getDay())}))}var WorkWeek=function(_React$Component){function WorkWeek(){return(0,classCallCheck.default)(this,WorkWeek),(0,callSuper.default)(this,WorkWeek,arguments)}return(0,inherits.default)(WorkWeek,_React$Component),(0,createClass.default)(WorkWeek,[{key:"render",value:function render(){var _this$props=this.props,date=_this$props.date,localizer=_this$props.localizer,_this$props$min=_this$props.min,min=void 0===_this$props$min?localizer.startOf(new Date,"day"):_this$props$min,_this$props$max=_this$props.max,max=void 0===_this$props$max?localizer.endOf(new Date,"day"):_this$props$max,_this$props$scrollToT=_this$props.scrollToTime,scrollToTime=void 0===_this$props$scrollToT?localizer.startOf(new Date,"day"):_this$props$scrollToT,_this$props$enableAut=_this$props.enableAutoScroll,enableAutoScroll=void 0===_this$props$enableAut||_this$props$enableAut,props=(0,objectWithoutProperties.A)(_this$props,WorkWeek_excluded),range=workWeekRange(date,this.props);return(0,jsx_runtime.jsx)(TimeGrid.A,Object.assign({},props,{range:range,eventOffset:15,localizer:localizer,min:min,max:max,scrollToTime:scrollToTime,enableAutoScroll:enableAutoScroll}))}}])}(react.Component);WorkWeek.defaultProps=TimeGrid.A.defaultProps,WorkWeek.range=workWeekRange,WorkWeek.navigate=src_Week.navigate,WorkWeek.title=function(date,_ref){var localizer=_ref.localizer,_workWeekRange=workWeekRange(date,{localizer:localizer}),_workWeekRange2=(0,toArray.A)(_workWeekRange),start=_workWeekRange2[0],rest=_workWeekRange2.slice(1);return localizer.format({start:start,end:rest.pop()},"dayRangeHeaderFormat")},WorkWeek.__docgenInfo={description:"",methods:[{name:"title",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null}],displayName:"WorkWeek",props:{date:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},localizer:{description:"",type:{name:"any"},required:!1},min:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},max:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},scrollToTime:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},enableAutoScroll:{description:"",type:{name:"bool"},required:!1}}};var src_WorkWeek=WorkWeek;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/WorkWeek.js"]={name:"WorkWeek",docgenInfo:WorkWeek.__docgenInfo,path:"src/WorkWeek.js"});__webpack_require__("./node_modules/core-js/modules/es.string.trim.js");var addClass=__webpack_require__("./node_modules/dom-helpers/esm/addClass.js"),removeClass=__webpack_require__("./node_modules/dom-helpers/esm/removeClass.js"),width=__webpack_require__("./node_modules/dom-helpers/esm/width.js"),scrollbarSize=__webpack_require__("./node_modules/dom-helpers/esm/scrollbarSize.js"),selection=__webpack_require__("./src/utils/selection.js");function Agenda(_ref){var accessors=_ref.accessors,components=_ref.components,date=_ref.date,events=_ref.events,getters=_ref.getters,_ref$length=_ref.length,length=void 0===_ref$length?30:_ref$length,localizer=_ref.localizer,onDoubleClickEvent=_ref.onDoubleClickEvent,onSelectEvent=_ref.onSelectEvent,selected=_ref.selected,headerRef=(0,react.useRef)(null),dateColRef=(0,react.useRef)(null),timeColRef=(0,react.useRef)(null),contentRef=(0,react.useRef)(null),tbodyRef=(0,react.useRef)(null);(0,react.useEffect)((function(){_adjustHeader()}));var timeRangeLabel=function timeRangeLabel(day,event){var labelClass="",TimeComponent=components.time,label=localizer.messages.allDay,end=accessors.end(event),start=accessors.start(event);return accessors.allDay(event)||(localizer.eq(start,end)?label=localizer.format(start,"agendaTimeFormat"):localizer.isSameDate(start,end)?label=localizer.format({start:start,end:end},"agendaTimeRangeFormat"):localizer.isSameDate(day,start)?label=localizer.format(start,"agendaTimeFormat"):localizer.isSameDate(day,end)&&(label=localizer.format(end,"agendaTimeFormat"))),localizer.gt(day,start,"day")&&(labelClass="rbc-continues-prior"),localizer.lt(day,end,"day")&&(labelClass+=" rbc-continues-after"),(0,jsx_runtime.jsx)("span",{className:labelClass.trim(),children:TimeComponent?(0,jsx_runtime.jsx)(TimeComponent,{event:event,day:day,label:label}):label})},_adjustHeader=function _adjustHeader(){if(tbodyRef.current){var header=headerRef.current,firstRow=tbodyRef.current.firstChild;if(firstRow){var isOverflowing=contentRef.current.scrollHeight>contentRef.current.clientHeight,_widths=[],widths=_widths;_widths=[(0,width.A)(firstRow.children[0]),(0,width.A)(firstRow.children[1])],widths[0]===_widths[0]&&widths[1]===_widths[1]||(dateColRef.current.style.width=_widths[0]+"px",timeColRef.current.style.width=_widths[1]+"px"),isOverflowing?((0,addClass.A)(header,"rbc-header-overflowing"),header.style.marginRight=(0,scrollbarSize.A)()+"px"):(0,removeClass.A)(header,"rbc-header-overflowing")}}},messages=localizer.messages,end=localizer.add(date,length,"day"),range=localizer.range(date,end,"day");return(events=events.filter((function(event){return(0,eventLevels.r4)(event,localizer.startOf(date,"day"),localizer.endOf(end,"day"),accessors,localizer)}))).sort((function(a,b){return+accessors.start(a)-+accessors.start(b)})),(0,jsx_runtime.jsx)("div",{className:"rbc-agenda-view",children:0!==events.length?(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)("table",{ref:headerRef,className:"rbc-agenda-table",children:(0,jsx_runtime.jsx)("thead",{children:(0,jsx_runtime.jsxs)("tr",{children:[(0,jsx_runtime.jsx)("th",{className:"rbc-header",ref:dateColRef,children:messages.date}),(0,jsx_runtime.jsx)("th",{className:"rbc-header",ref:timeColRef,children:messages.time}),(0,jsx_runtime.jsx)("th",{className:"rbc-header",children:messages.event})]})})}),(0,jsx_runtime.jsx)("div",{className:"rbc-agenda-content",ref:contentRef,children:(0,jsx_runtime.jsx)("table",{className:"rbc-agenda-table",children:(0,jsx_runtime.jsx)("tbody",{ref:tbodyRef,children:range.map((function(day,idx){return function renderDay(day,events,dayKey){var Event=components.event,AgendaDate=components.date;return(events=events.filter((function(e){return(0,eventLevels.r4)(e,localizer.startOf(day,"day"),localizer.endOf(day,"day"),accessors,localizer)}))).map((function(event,idx){var title=accessors.title(event),end=accessors.end(event),start=accessors.start(event),userProps=getters.eventProp(event,start,end,(0,selection.sp)(event,selected)),dateLabel=0===idx&&localizer.format(day,"agendaDateFormat"),first=0===idx&&(0,jsx_runtime.jsx)("td",{rowSpan:events.length,className:"rbc-agenda-date-cell",children:AgendaDate?(0,jsx_runtime.jsx)(AgendaDate,{day:day,label:dateLabel}):dateLabel});return(0,jsx_runtime.jsxs)("tr",{className:userProps.className,style:userProps.style,children:[first,(0,jsx_runtime.jsx)("td",{className:"rbc-agenda-time-cell",children:timeRangeLabel(day,event)}),(0,jsx_runtime.jsx)("td",{className:"rbc-agenda-event-cell",onClick:function onClick(e){return onSelectEvent&&onSelectEvent(event,e)},onDoubleClick:function onDoubleClick(e){return onDoubleClickEvent&&onDoubleClickEvent(event,e)},children:Event?(0,jsx_runtime.jsx)(Event,{event:event,title:title}):title})]},dayKey+"_"+idx)}),[])}(day,events,idx)}))})})})]}):(0,jsx_runtime.jsx)("span",{className:"rbc-agenda-empty",children:messages.noEventsInRange})})}Agenda.displayName="Agenda",Agenda.range=function(start,_ref2){var _ref2$length=_ref2.length,length=void 0===_ref2$length?30:_ref2$length;return{start:start,end:_ref2.localizer.add(start,length,"day")}},Agenda.navigate=function(date,action,_ref3){var _ref3$length=_ref3.length,length=void 0===_ref3$length?30:_ref3$length,localizer=_ref3.localizer;switch(action){case constants.o.PREVIOUS:return localizer.add(date,-length,"day");case constants.o.NEXT:return localizer.add(date,length,"day");default:return date}},Agenda.title=function(start,_ref4){var _ref4$length=_ref4.length,length=void 0===_ref4$length?30:_ref4$length,localizer=_ref4.localizer,end=localizer.add(start,length,"day");return localizer.format({start:start,end:end},"agendaHeaderFormat")},Agenda.__docgenInfo={description:"",methods:[{name:"range",docblock:null,modifiers:["static"],params:[{name:"start",optional:!1,type:null},{name:"{ length = DEFAULT_LENGTH, localizer }",type:null}],returns:null},{name:"navigate",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"action",optional:!1,type:null},{name:"{ length = DEFAULT_LENGTH, localizer }",type:null}],returns:null},{name:"title",docblock:null,modifiers:["static"],params:[{name:"start",optional:!1,type:null},{name:"{ length = DEFAULT_LENGTH, localizer }",type:null}],returns:null}],displayName:"Agenda",props:{length:{defaultValue:{value:"30",computed:!1},description:"",type:{name:"number"},required:!1},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},date:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},events:{description:"",type:{name:"array"},required:!1},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},onSelectEvent:{description:"",type:{name:"func"},required:!1},onDoubleClickEvent:{description:"",type:{name:"func"},required:!1},selected:{description:"",type:{name:"object"},required:!1}}};var src_Agenda=Agenda;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/Agenda.js"]={name:"Agenda",docgenInfo:Agenda.__docgenInfo,path:"src/Agenda.js"});var Views=(0,defineProperty.A)((0,defineProperty.A)((0,defineProperty.A)((0,defineProperty.A)((0,defineProperty.A)({},constants.l.MONTH,Month),constants.l.WEEK,src_Week),constants.l.WORK_WEEK,src_WorkWeek),constants.l.DAY,src_Day),constants.l.AGENDA,src_Agenda),move_excluded=["action","date","today"];var Toolbar=function(_React$Component){function Toolbar(){var _this;(0,classCallCheck.default)(this,Toolbar);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,Toolbar,[].concat(args))).navigate=function(action){_this.props.onNavigate(action)},_this.view=function(view){_this.props.onView(view)},_this}return(0,inherits.default)(Toolbar,_React$Component),(0,createClass.default)(Toolbar,[{key:"render",value:function render(){var _this$props=this.props,messages=_this$props.localizer.messages,label=_this$props.label;return(0,jsx_runtime.jsxs)("div",{className:"rbc-toolbar",children:[(0,jsx_runtime.jsxs)("span",{className:"rbc-btn-group",children:[(0,jsx_runtime.jsx)("button",{type:"button",onClick:this.navigate.bind(null,constants.o.TODAY),children:messages.today}),(0,jsx_runtime.jsx)("button",{type:"button",onClick:this.navigate.bind(null,constants.o.PREVIOUS),children:messages.previous}),(0,jsx_runtime.jsx)("button",{type:"button",onClick:this.navigate.bind(null,constants.o.NEXT),children:messages.next})]}),(0,jsx_runtime.jsx)("span",{className:"rbc-toolbar-label",children:label}),(0,jsx_runtime.jsx)("span",{className:"rbc-btn-group",children:this.viewNamesGroup(messages)})]})}},{key:"viewNamesGroup",value:function viewNamesGroup(messages){var _this2=this,viewNames=this.props.views,view=this.props.view;if(viewNames.length>1)return viewNames.map((function(name){return(0,jsx_runtime.jsx)("button",{type:"button",className:(0,clsx_m.A)({"rbc-active":view===name}),onClick:_this2.view.bind(null,name),children:messages[name]},name)}))}}])}(react.Component);Toolbar.__docgenInfo={description:"",methods:[{name:"navigate",docblock:null,modifiers:[],params:[{name:"action",type:null}],returns:null},{name:"view",docblock:null,modifiers:[],params:[{name:"view",type:null}],returns:null},{name:"viewNamesGroup",docblock:null,modifiers:[],params:[{name:"messages",type:null}],returns:null}],displayName:"Toolbar",props:{view:{description:"",type:{name:"string"},required:!0},views:{description:"",type:{name:"arrayOf",value:{name:"string"}},required:!0},label:{description:"",type:{name:"node"},required:!0},localizer:{description:"",type:{name:"object"},required:!1},onNavigate:{description:"",type:{name:"func"},required:!0},onView:{description:"",type:{name:"func"},required:!0}}};var src_Toolbar=Toolbar;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/Toolbar.js"]={name:"Toolbar",docgenInfo:Toolbar.__docgenInfo,path:"src/Toolbar.js"});var omit=__webpack_require__("./node_modules/lodash/omit.js"),omit_default=__webpack_require__.n(omit),defaults=__webpack_require__("./node_modules/lodash/defaults.js"),defaults_default=__webpack_require__.n(defaults),transform=__webpack_require__("./node_modules/lodash/transform.js"),transform_default=__webpack_require__.n(transform),mapValues=__webpack_require__("./node_modules/lodash/mapValues.js"),mapValues_default=__webpack_require__.n(mapValues),accessors=__webpack_require__("./src/utils/accessors.js"),Calendar_excluded=["view","date","getNow","onNavigate"],_excluded2=["view","toolbar","events","backgroundEvents","style","className","elementProps","date","getNow","length","showMultiDayTimes","onShowMore","doShowMoreDrillDown","components","formats","messages","culture"];function viewNames(_views){if(Array.isArray(_views))return _views;for(var views=[],_i=0,_Object$entries=Object.entries(_views);_i<_Object$entries.length;_i++){var _ref=_Object$entries[_i],_ref2=(0,slicedToArray.A)(_ref,2),key=_ref2[0];_ref2[1]&&views.push(key)}return views}var Calendar=function(_React$Component){function Calendar(){var _this;(0,classCallCheck.default)(this,Calendar);for(var _len=arguments.length,_args=new Array(_len),_key=0;_key<_len;_key++)_args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,Calendar,[].concat(_args))).getViews=function(){var views=_this.props.views;return Array.isArray(views)?transform_default()(views,(function(obj,name){return obj[name]=Views[name]}),{}):"object"==typeof views?mapValues_default()(views,(function(value,key){return!0===value?Views[key]:value})):Views},_this.getView=function(){return _this.getViews()[_this.props.view]},_this.getDrilldownView=function(date){var _this$props=_this.props,view=_this$props.view,drilldownView=_this$props.drilldownView,getDrilldownView=_this$props.getDrilldownView;return getDrilldownView?getDrilldownView(date,view,Object.keys(_this.getViews())):drilldownView},_this.handleRangeChange=function(date,viewComponent,view){var _this$props2=_this.props,onRangeChange=_this$props2.onRangeChange,localizer=_this$props2.localizer;onRangeChange&&viewComponent.range&&onRangeChange(viewComponent.range(date,{localizer:localizer}),view)},_this.handleNavigate=function(action,newDate){var _this$props3=_this.props,view=_this$props3.view,date=_this$props3.date,getNow=_this$props3.getNow,onNavigate=_this$props3.onNavigate,props=(0,objectWithoutProperties.A)(_this$props3,Calendar_excluded),ViewComponent=_this.getView(),today=getNow();date=function moveDate(View,_ref){var action=_ref.action,date=_ref.date,today=_ref.today,props=(0,objectWithoutProperties.A)(_ref,move_excluded);switch(View="string"==typeof View?Views[View]:View,action){case constants.o.TODAY:date=today||new Date;break;case constants.o.DATE:break;default:browser_default()(View&&"function"==typeof View.navigate,"Calendar View components must implement a static `.navigate(date, action)` method.s"),date=View.navigate(date,action,props)}return date}(ViewComponent,Object.assign({},props,{action:action,date:newDate||date||today,today:today})),onNavigate(date,view,action),_this.handleRangeChange(date,ViewComponent)},_this.handleViewChange=function(view){view!==_this.props.view&&function isValidView(view,_ref3){return-1!==viewNames(_ref3.views).indexOf(view)}(view,_this.props)&&_this.props.onView(view);var views=_this.getViews();_this.handleRangeChange(_this.props.date||_this.props.getNow(),views[view],view)},_this.handleSelectEvent=function(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++)args[_key2]=arguments[_key2];(0,helpers.me)(_this.props.onSelectEvent,args)},_this.handleDoubleClickEvent=function(){for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++)args[_key3]=arguments[_key3];(0,helpers.me)(_this.props.onDoubleClickEvent,args)},_this.handleKeyPressEvent=function(){for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++)args[_key4]=arguments[_key4];(0,helpers.me)(_this.props.onKeyPressEvent,args)},_this.handleSelectSlot=function(slotInfo){(0,helpers.me)(_this.props.onSelectSlot,slotInfo)},_this.handleDrillDown=function(date,view){var onDrillDown=_this.props.onDrillDown;onDrillDown?onDrillDown(date,view,_this.drilldownView):(view&&_this.handleViewChange(view),_this.handleNavigate(constants.o.DATE,date))},_this.state={context:Calendar.getContext(_this.props)},_this}return(0,inherits.default)(Calendar,_React$Component),(0,createClass.default)(Calendar,[{key:"render",value:function render(){var _this$props4=this.props,view=_this$props4.view,toolbar=_this$props4.toolbar,events=_this$props4.events,backgroundEvents=_this$props4.backgroundEvents,style=_this$props4.style,className=_this$props4.className,elementProps=_this$props4.elementProps,current=_this$props4.date,getNow=_this$props4.getNow,length=_this$props4.length,showMultiDayTimes=_this$props4.showMultiDayTimes,onShowMore=_this$props4.onShowMore,doShowMoreDrillDown=_this$props4.doShowMoreDrillDown,props=(_this$props4.components,_this$props4.formats,_this$props4.messages,_this$props4.culture,(0,objectWithoutProperties.A)(_this$props4,_excluded2));current=current||getNow();var View=this.getView(),_this$state$context=this.state.context,accessors=_this$state$context.accessors,components=_this$state$context.components,getters=_this$state$context.getters,localizer=_this$state$context.localizer,viewNames=_this$state$context.viewNames,CalToolbar=components.toolbar||src_Toolbar,label=View.title(current,{localizer:localizer,length:length});return(0,jsx_runtime.jsxs)("div",Object.assign({},elementProps,{className:(0,clsx_m.A)(className,"rbc-calendar",props.rtl&&"rbc-rtl"),style:style,children:[toolbar&&(0,jsx_runtime.jsx)(CalToolbar,{date:current,view:view,views:viewNames,label:label,onView:this.handleViewChange,onNavigate:this.handleNavigate,localizer:localizer}),(0,jsx_runtime.jsx)(View,Object.assign({},props,{events:events,backgroundEvents:backgroundEvents,date:current,getNow:getNow,length:length,localizer:localizer,getters:getters,components:components,accessors:accessors,showMultiDayTimes:showMultiDayTimes,getDrilldownView:this.getDrilldownView,onNavigate:this.handleNavigate,onDrillDown:this.handleDrillDown,onSelectEvent:this.handleSelectEvent,onDoubleClickEvent:this.handleDoubleClickEvent,onKeyPressEvent:this.handleKeyPressEvent,onSelectSlot:this.handleSelectSlot,onShowMore:onShowMore,doShowMoreDrillDown:doShowMoreDrillDown}))]}))}}],[{key:"getDerivedStateFromProps",value:function getDerivedStateFromProps(nextProps){return{context:Calendar.getContext(nextProps)}}},{key:"getContext",value:function getContext(_ref4){var startAccessor=_ref4.startAccessor,endAccessor=_ref4.endAccessor,allDayAccessor=_ref4.allDayAccessor,tooltipAccessor=_ref4.tooltipAccessor,titleAccessor=_ref4.titleAccessor,resourceAccessor=_ref4.resourceAccessor,resourceIdAccessor=_ref4.resourceIdAccessor,resourceTitleAccessor=_ref4.resourceTitleAccessor,eventPropGetter=_ref4.eventPropGetter,backgroundEventPropGetter=_ref4.backgroundEventPropGetter,slotPropGetter=_ref4.slotPropGetter,slotGroupPropGetter=_ref4.slotGroupPropGetter,dayPropGetter=_ref4.dayPropGetter,view=_ref4.view,views=_ref4.views,localizer=_ref4.localizer,culture=_ref4.culture,_ref4$messages=_ref4.messages,messages=void 0===_ref4$messages?{}:_ref4$messages,_ref4$components=_ref4.components,components=void 0===_ref4$components?{}:_ref4$components,_ref4$formats=_ref4.formats,formats=void 0===_ref4$formats?{}:_ref4$formats,names=viewNames(views);return{viewNames:names,localizer:mergeWithDefaults(localizer,culture,formats,function messages_messages(msgs){return Object.assign({},defaultMessages,msgs)}(messages)),getters:{eventProp:function eventProp(){return eventPropGetter&&eventPropGetter.apply(void 0,arguments)||{}},backgroundEventProp:function backgroundEventProp(){return backgroundEventPropGetter&&backgroundEventPropGetter.apply(void 0,arguments)||{}},slotProp:function slotProp(){return slotPropGetter&&slotPropGetter.apply(void 0,arguments)||{}},slotGroupProp:function slotGroupProp(){return slotGroupPropGetter&&slotGroupPropGetter.apply(void 0,arguments)||{}},dayProp:function dayProp(){return dayPropGetter&&dayPropGetter.apply(void 0,arguments)||{}}},components:defaults_default()(components[view]||{},omit_default()(components,names),{eventWrapper:NoopWrapper.A,backgroundEventWrapper:NoopWrapper.A,eventContainerWrapper:NoopWrapper.A,dateCellWrapper:NoopWrapper.A,weekWrapper:NoopWrapper.A,timeSlotWrapper:NoopWrapper.A,timeGutterWrapper:NoopWrapper.A}),accessors:{start:(0,accessors.C)(startAccessor),end:(0,accessors.C)(endAccessor),allDay:(0,accessors.C)(allDayAccessor),tooltip:(0,accessors.C)(tooltipAccessor),title:(0,accessors.C)(titleAccessor),resource:(0,accessors.C)(resourceAccessor),resourceId:(0,accessors.C)(resourceIdAccessor),resourceTitle:(0,accessors.C)(resourceTitleAccessor)}}}}])}(react.Component);Calendar.defaultProps={events:[],backgroundEvents:[],elementProps:{},popup:!1,toolbar:!0,view:constants.l.MONTH,views:[constants.l.MONTH,constants.l.WEEK,constants.l.DAY,constants.l.AGENDA],step:30,length:30,allDayMaxRows:1/0,doShowMoreDrillDown:!0,drilldownView:constants.l.DAY,titleAccessor:"title",tooltipAccessor:"title",allDayAccessor:"allDay",startAccessor:"start",endAccessor:"end",resourceAccessor:"resourceId",resourceIdAccessor:"id",resourceTitleAccessor:"title",longPressThreshold:250,getNow:function getNow(){return new Date},dayLayoutAlgorithm:"overlap"},Calendar.__docgenInfo={description:"",methods:[{name:"getContext",docblock:null,modifiers:["static"],params:[{name:"{\n startAccessor,\n endAccessor,\n allDayAccessor,\n tooltipAccessor,\n titleAccessor,\n resourceAccessor,\n resourceIdAccessor,\n resourceTitleAccessor,\n eventPropGetter,\n backgroundEventPropGetter,\n slotPropGetter,\n slotGroupPropGetter,\n dayPropGetter,\n view,\n views,\n localizer,\n culture,\n messages = {},\n components = {},\n formats = {},\n}",type:null}],returns:null},{name:"getViews",docblock:null,modifiers:[],params:[],returns:null},{name:"getView",docblock:null,modifiers:[],params:[],returns:null},{name:"getDrilldownView",docblock:null,modifiers:[],params:[{name:"date",type:null}],returns:null},{name:"handleRangeChange",docblock:"@param date\n@param viewComponent\n@param {'month'|'week'|'work_week'|'day'|'agenda'} [view] - optional\nparameter. It appears when range change on view changing. It could be handy\nwhen you need to have both: range and view type at once, i.e. for manage rbc\nstate via url",modifiers:[],params:[{name:"date",description:null,type:null,optional:!1},{name:"viewComponent",description:null,type:null,optional:!1},{name:"view"}],returns:null,description:null},{name:"handleNavigate",docblock:null,modifiers:[],params:[{name:"action",type:null},{name:"newDate",type:null}],returns:null},{name:"handleViewChange",docblock:null,modifiers:[],params:[{name:"view",type:null}],returns:null},{name:"handleSelectEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleDoubleClickEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleKeyPressEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleSelectSlot",docblock:null,modifiers:[],params:[{name:"slotInfo",type:null}],returns:null},{name:"handleDrillDown",docblock:null,modifiers:[],params:[{name:"date",type:null},{name:"view",type:null}],returns:null}],displayName:"Calendar",props:{events:{defaultValue:{value:"[]",computed:!1},description:'An array of event objects to display on the calendar. Events objects\ncan be any shape, as long as the Calendar knows how to retrieve the\nfollowing details of the event:\n\n - start time\n - end time\n - title\n - whether its an "all day" event or not\n - any resource the event may be related to\n\nEach of these properties can be customized or generated dynamically by\nsetting the various "accessor" props. Without any configuration the default\nevent should look like:\n\n```js\nEvent {\n title: string,\n start: Date,\n end: Date,\n allDay?: boolean\n resource?: any,\n}\n```',type:{name:"arrayOf",value:{name:"object"}},required:!1},backgroundEvents:{defaultValue:{value:"[]",computed:!1},description:'An array of background event objects to display on the calendar. Background\nEvents behave similarly to Events but are not factored into Event overlap logic,\nallowing them to sit behind any Events that may occur during the same period.\nBackground Events objects can be any shape, as long as the Calendar knows how to\nretrieve the following details of the event:\n\n - start time\n - end time\n\nEach of these properties can be customized or generated dynamically by\nsetting the various "accessor" props. Without any configuration the default\nevent should look like:\n\n```js\nBackgroundEvent {\n start: Date,\n end: Date,\n}\n```',type:{name:"arrayOf",value:{name:"object"}},required:!1},elementProps:{defaultValue:{value:"{}",computed:!1},description:"Props passed to main calendar `
`.",type:{name:"object"},required:!1},popup:{defaultValue:{value:"false",computed:!1},description:'Show truncated events in an overlay when you click the "+_x_ more" link.',type:{name:"bool"},required:!1},toolbar:{defaultValue:{value:"true",computed:!1},description:"Determines whether the toolbar is displayed",type:{name:"bool"},required:!1},view:{defaultValue:{value:"views.MONTH",computed:!0},description:"The current view of the calendar.\n\n@default 'month'\n@controllable onView",type:{name:"string"},required:!1},views:{defaultValue:{value:"[views.MONTH, views.WEEK, views.DAY, views.AGENDA]",computed:!1},description:"An array of built-in view names to allow the calendar to display.\naccepts either an array of builtin view names,\n\n```jsx\nviews={['month', 'day', 'agenda']}\n```\nor an object hash of the view name and the component (or boolean for builtin).\n\n```jsx\nviews={{\n month: true,\n week: false,\n myweek: WorkWeekViewComponent,\n}}\n```\n\nCustom views can be any React component, that implements the following\ninterface:\n\n```js\ninterface View {\n static title(date: Date, { formats: DateFormat[], culture: string?, ...props }): string\n static navigate(date: Date, action: 'PREV' | 'NEXT' | 'DATE'): Date\n}\n```\n\n@type Views ('month'|'week'|'work_week'|'day'|'agenda')\n@View\n ['month', 'week', 'day', 'agenda']",type:{name:"custom",raw:"componentViews"},required:!1},step:{defaultValue:{value:"30",computed:!1},description:"Determines the selectable time increments in week and day views, in minutes.",type:{name:"number"},required:!1},length:{defaultValue:{value:"30",computed:!1},description:"Determines the end date from date prop in the agenda view\ndate prop + length (in number of days) = end date",type:{name:"number"},required:!1},allDayMaxRows:{defaultValue:{value:"Infinity",computed:!0},description:"Determines a maximum amount of rows of events to display in the all day\nsection for Week and Day views, will display `showMore` button if\nevents excede this number.\n\nDefaults to `Infinity`",type:{name:"number"},required:!1},doShowMoreDrillDown:{defaultValue:{value:"true",computed:!1},description:'Determines whether the drill down should occur when clicking on the "+_x_ more" link.\nIf `popup` is false, and `doShowMoreDrillDown` is true, the drill down will occur as usual.\nIf `popup` is false, and `doShowMoreDrillDown` is false, the drill down will not occur and the `onShowMore` function will trigger.',type:{name:"bool"},required:!1},drilldownView:{defaultValue:{value:"views.DAY",computed:!0},description:'The string name of the destination view for drill-down actions, such\nas clicking a date header, or the truncated events links. If\n`getDrilldownView` is also specified it will be used instead.\n\nSet to `null` to disable drill-down actions.\n\n```js\n\n```',type:{name:"string"},required:!1},titleAccessor:{defaultValue:{value:"'title'",computed:!1},description:"Accessor for the event title, used to display event information. Should\nresolve to a `renderable` value.\n\n```js\nstring | (event: Object) => string\n```\n\n@type {(func|string)}",type:{name:"custom",raw:"accessor"},required:!1},tooltipAccessor:{defaultValue:{value:"'title'",computed:!1},description:"Accessor for the event tooltip. Should\nresolve to a `renderable` value. Removes the tooltip if null.\n\n```js\nstring | (event: Object) => string\n```\n\n@type {(func|string)}",type:{name:"custom",raw:"accessor"},required:!1},allDayAccessor:{defaultValue:{value:"'allDay'",computed:!1},description:'Determines whether the event should be considered an "all day" event and ignore time.\nMust resolve to a `boolean` value.\n\n```js\nstring | (event: Object) => boolean\n```\n\n@type {(func|string)}',type:{name:"custom",raw:"accessor"},required:!1},startAccessor:{defaultValue:{value:"'start'",computed:!1},description:"The start date/time of the event. Must resolve to a JavaScript `Date` object.\n\n```js\nstring | (event: Object) => Date\n```\n\n@type {(func|string)}",type:{name:"custom",raw:"accessor"},required:!1},endAccessor:{defaultValue:{value:"'end'",computed:!1},description:"The end date/time of the event. Must resolve to a JavaScript `Date` object.\n\n```js\nstring | (event: Object) => Date\n```\n\n@type {(func|string)}",type:{name:"custom",raw:"accessor"},required:!1},resourceAccessor:{defaultValue:{value:"'resourceId'",computed:!1},description:"Returns the id of the `resource` that the event is a member of. This\nid should match at least one resource in the `resources` array.\n\n```js\nstring | (event: Object) => Date\n```\n\n@type {(func|string)}",type:{name:"custom",raw:"accessor"},required:!1},resourceIdAccessor:{defaultValue:{value:"'id'",computed:!1},description:"Provides a unique identifier, or an array of unique identifiers, for each resource in the `resources` array\n\n```js\nstring | (resource: Object) => any\n```\n\n@type {(func|string)}",type:{name:"custom",raw:"accessor"},required:!1},resourceTitleAccessor:{defaultValue:{value:"'title'",computed:!1},description:"Provides a human readable name for the resource object, used in headers.\n\n```js\nstring | (resource: Object) => any\n```\n\n@type {(func|string)}",type:{name:"custom",raw:"accessor"},required:!1},longPressThreshold:{defaultValue:{value:"250",computed:!1},description:'Specifies the number of milliseconds the user must press and hold on the screen for a touch\nto be considered a "long press." Long presses are used for time slot selection on touch\ndevices.\n\n@type {number}\n@default 250',type:{name:"number"},required:!1},getNow:{defaultValue:{value:"() => new Date()",computed:!1},description:"Determines the current date/time which is highlighted in the views.\n\nThe value affects which day is shaded and which time is shown as\nthe current time. It also affects the date used by the Today button in\nthe toolbar.\n\nProviding a value here can be useful when you are implementing time zones\nusing the `startAccessor` and `endAccessor` properties.\n\n@type {func}\n@default () => new Date()",type:{name:"func"},required:!1},dayLayoutAlgorithm:{defaultValue:{value:"'overlap'",computed:!1},description:"A day event layout(arrangement) algorithm.\n\n`overlap` allows events to be overlapped.\n\n`no-overlap` resizes events to avoid overlap.\n\nor custom `Function(events, minimumStartDifference, slotMetrics, accessors)`",type:{name:"custom",raw:"DayLayoutAlgorithmPropType"},required:!1},localizer:{description:"The localizer used for formatting dates and times according to the `format` and `culture`\n\nglobalize\n```js\nimport {globalizeLocalizer} from 'react-big-calendar'\nimport globalize from 'globalize'\n\nconst localizer = globalizeLocalizer(globalize)\n```\nmoment\n``js\nimport {momentLocalizer} from 'react-big-calendar'\nimport moment from 'moment'\n// and, for optional time zone support\nimport 'moment-timezone'\n\nmoment.tz.setDefault('America/Los_Angeles')\n// end optional time zone support\n\nconst localizer = momentLocalizer(moment)\n```\n\nLuxon\n```js\nimport {luxonLocalizer} from 'react-big-calendar'\nimport {DateTime, Settings} from 'luxon'\n// only use `Settings` if you require optional time zone support\nSettings.defaultZone = 'America/Los_Angeles'\n// end optional time zone support\n\n// Luxon uses the Intl API, which currently does not contain `weekInfo`\n// to determine which weekday is the start of the week by `culture`.\n// The `luxonLocalizer` defaults this to Sunday, which differs from\n// the Luxon default of Monday. The localizer requires this option\n// to change the display, and the date math for determining the\n// start of a week. Luxon uses non-zero based values for `weekday`.\nconst localizer = luxonLocalizer(DateTime, {firstDayOfWeek: 7})\n```",type:{name:"object"},required:!0},date:{description:"The current date value of the calendar. Determines the visible view range.\nIf `date` is omitted then the result of `getNow` is used; otherwise the\ncurrent date is used.\n\n@controllable onNavigate",type:{name:"instanceOf",value:"Date"},required:!1},defaultView:{description:"The initial view set for the Calendar.\n@type Calendar.Views ('month'|'week'|'work_week'|'day'|'agenda')\n@default 'month'",type:{name:"string"},required:!1},resources:{description:'An array of resource objects that map events to a specific resource.\nResource objects, like events, can be any shape or have any properties,\nbut should be uniquly identifiable via the `resourceIdAccessor`, as\nwell as a "title" or name as provided by the `resourceTitleAccessor` prop.',type:{name:"arrayOf",value:{name:"object"}},required:!1},onNavigate:{description:"Callback fired when the `date` value changes.\n\n@controllable date",type:{name:"func"},required:!1},onView:{description:"Callback fired when the `view` value changes.\n\n@controllable view",type:{name:"func"},required:!1},onDrillDown:{description:"Callback fired when date header, or the truncated events links are clicked",type:{name:"func"},required:!1},onRangeChange:{description:"```js\n(dates: Date[] | { start: Date; end: Date }, view: 'month'|'week'|'work_week'|'day'|'agenda'|undefined) => void\n```\n\nCallback fired when the visible date range changes. Returns an Array of dates\nor an object with start and end dates for BUILTIN views. Optionally new `view`\nwill be returned when callback called after view change.\n\nCustom views may return something different.",type:{name:"func"},required:!1},onSelectSlot:{description:'A callback fired when a date selection is made. Only fires when `selectable` is `true`.\n\n```js\n(\n slotInfo: {\n start: Date,\n end: Date,\n resourceId: (number|string),\n slots: Array,\n action: "select" | "click" | "doubleClick",\n bounds: ?{ // For "select" action\n x: number,\n y: number,\n top: number,\n right: number,\n left: number,\n bottom: number,\n },\n box: ?{ // For "click" or "doubleClick" actions\n clientX: number,\n clientY: number,\n x: number,\n y: number,\n },\n }\n) => any\n```',type:{name:"func"},required:!1},onSelectEvent:{description:"Callback fired when a calendar event is selected.\n\n```js\n(event: Object, e: SyntheticEvent) => any\n```\n\n@controllable selected",type:{name:"func"},required:!1},onDoubleClickEvent:{description:"Callback fired when a calendar event is clicked twice.\n\n```js\n(event: Object, e: SyntheticEvent) => void\n```",type:{name:"func"},required:!1},onKeyPressEvent:{description:"Callback fired when a focused calendar event receives a key press.\n\n```js\n(event: Object, e: SyntheticEvent) => void\n```",type:{name:"func"},required:!1},onSelecting:{description:"Callback fired when dragging a selection in the Time views.\n\nReturning `false` from the handler will prevent a selection.\n\n```js\n(range: { start: Date, end: Date, resourceId: (number|string) }) => ?boolean\n```",type:{name:"func"},required:!1},onShowMore:{description:"Callback fired when a +{count} more is clicked\n\n```js\n(events: Object, date: Date) => any\n```",type:{name:"func"},required:!1},showAllEvents:{description:"Displays all events on the month view instead of\nhaving some hidden behind +{count} more. This will\ncause the rows in the month view to be scrollable if\nthe number of events exceed the height of the row.",type:{name:"bool"},required:!1},selected:{description:"The selected event, if any.",type:{name:"object"},required:!1},getDrilldownView:{description:"Functionally equivalent to `drilldownView`, but accepts a function\nthat can return a view name. It's useful for customizing the drill-down\nactions depending on the target date and triggering view.\n\nReturn `null` to disable drill-down actions.\n\n```js\n\n if (currentViewName === 'month' && configuredViewNames.includes('week'))\n return 'week'\n\n return null;\n }}\n/>\n```",type:{name:"func"},required:!1},popupOffset:{description:'Distance in pixels, from the edges of the viewport, the "show more" overlay should be positioned.\n\n```jsx\n\n\n```',type:{name:"union",value:[{name:"number"},{name:"shape",value:{x:{name:"number",required:!1},y:{name:"number",required:!1}}}]},required:!1},selectable:{description:"Allows mouse selection of ranges of dates/times.\n\nThe 'ignoreEvents' option prevents selection code from running when a\ndrag begins over an event. Useful when you want custom event click or drag\nlogic",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},timeslots:{description:'The number of slots per "section" in the time grid views. Adjust with `step`\nto change the default of 1 hour long groups, with 30 minute slots.',type:{name:"number"},required:!1},rtl:{description:"Switch the calendar to a `right-to-left` read direction.",type:{name:"bool"},required:!1},eventPropGetter:{description:"Optionally provide a function that returns an object of className or style props\nto be applied to the the event node.\n\n```js\n(\n\tevent: Object,\n\tstart: Date,\n\tend: Date,\n\tisSelected: boolean\n) => { className?: string, style?: Object }\n```",type:{name:"func"},required:!1},slotPropGetter:{description:"Optionally provide a function that returns an object of className or style props\nto be applied to the time-slot node. Caution! Styles that change layout or\nposition may break the calendar in unexpected ways.\n\n```js\n(date: Date, resourceId: (number|string)) => { className?: string, style?: Object }\n```",type:{name:"func"},required:!1},slotGroupPropGetter:{description:"Optionally provide a function that returns an object of props to be applied\nto the time-slot group node. Useful to dynamically change the sizing of time nodes.\n```js\n(group: Date[]) => { style?: Object }\n```",type:{name:"func"},required:!1},dayPropGetter:{description:"Optionally provide a function that returns an object of className or style props\nto be applied to the the day background. Caution! Styles that change layout or\nposition may break the calendar in unexpected ways.\n\n```js\n(date: Date) => { className?: string, style?: Object }\n```",type:{name:"func"},required:!1},showMultiDayTimes:{description:"Support to show multi-day events with specific start and end times in the\nmain time grid (rather than in the all day header).\n\n**Note: This may cause calendars with several events to look very busy in\nthe week and day views.**",type:{name:"bool"},required:!1},min:{description:"Constrains the minimum _time_ of the Day and Week views.",type:{name:"instanceOf",value:"Date"},required:!1},max:{description:"Constrains the maximum _time_ of the Day and Week views.",type:{name:"instanceOf",value:"Date"},required:!1},scrollToTime:{description:"Determines how far down the scroll pane is initially scrolled down.",type:{name:"instanceOf",value:"Date"},required:!1},enableAutoScroll:{description:"Determines whether the scroll pane is automatically scrolled down or not.",type:{name:"bool"},required:!1},culture:{description:"Specify a specific culture code for the Calendar.\n\n**Note: it's generally better to handle this globally via your i18n library.**",type:{name:"string"},required:!1},formats:{description:"Localizer specific formats, tell the Calendar how to format and display dates.\n\n`format` types are dependent on the configured localizer; Moment, Luxon and Globalize\naccept strings of tokens according to their own specification, such as: `'DD mm yyyy'`.\n\n```jsx\nlet formats = {\n dateFormat: 'dd',\n\n dayFormat: (date, , localizer) =>\n localizer.format(date, 'DDD', culture),\n\n dayRangeHeaderFormat: ({ start, end }, culture, localizer) =>\n localizer.format(start, { date: 'short' }, culture) + ' – ' +\n localizer.format(end, { date: 'short' }, culture)\n}\n\n\n```\n\nAll localizers accept a function of\nthe form `(date: Date, culture: ?string, localizer: Localizer) -> string`",type:{name:"shape",value:{dateFormat:{name:"custom",raw:"dateFormat",description:'Format for the day of the month heading in the Month view.\ne.g. "01", "02", "03", etc',required:!1},dayFormat:{name:"custom",raw:"dateFormat",description:'A day of the week format for Week and Day headings,\ne.g. "Wed 01/04"',required:!1},weekdayFormat:{name:"custom",raw:"dateFormat",description:'Week day name format for the Month week day headings,\ne.g: "Sun", "Mon", "Tue", etc',required:!1},timeGutterFormat:{name:"custom",raw:"dateFormat",description:'The timestamp cell formats in Week and Time views, e.g. "4:00 AM"',required:!1},monthHeaderFormat:{name:"custom",raw:"dateFormat",description:'Toolbar header format for the Month view, e.g "2015 April"',required:!1},dayRangeHeaderFormat:{name:"custom",raw:"dateRangeFormat",description:'Toolbar header format for the Week views, e.g. "Mar 29 - Apr 04"',required:!1},dayHeaderFormat:{name:"custom",raw:"dateFormat",description:'Toolbar header format for the Day view, e.g. "Wednesday Apr 01"',required:!1},agendaHeaderFormat:{name:"custom",raw:"dateRangeFormat",description:'Toolbar header format for the Agenda view, e.g. "4/1/2015 – 5/1/2015"',required:!1},selectRangeFormat:{name:"custom",raw:"dateRangeFormat",description:'A time range format for selecting time slots, e.g "8:00am – 2:00pm"',required:!1},agendaDateFormat:{name:"custom",raw:"dateFormat",required:!1},agendaTimeFormat:{name:"custom",raw:"dateFormat",required:!1},agendaTimeRangeFormat:{name:"custom",raw:"dateRangeFormat",required:!1},eventTimeRangeFormat:{name:"custom",raw:"dateRangeFormat",description:"Time range displayed on events.",required:!1},eventTimeRangeStartFormat:{name:"custom",raw:"dateFormat",description:"An optional event time range for events that continue onto another day",required:!1},eventTimeRangeEndFormat:{name:"custom",raw:"dateFormat",description:"An optional event time range for events that continue from another day",required:!1}}},required:!1},components:{description:"Customize how different sections of the calendar render by providing custom Components.\nIn particular the `Event` component can be specified for the entire calendar, or you can\nprovide an individual component for each view type.\n\n```jsx\nlet components = {\n event: MyEvent, // used by each view (Month, Day, Week)\n eventWrapper: MyEventWrapper,\n eventContainerWrapper: MyEventContainerWrapper,\n dateCellWrapper: MyDateCellWrapper,\n timeSlotWrapper: MyTimeSlotWrapper,\n timeGutterHeader: MyTimeGutterWrapper,\n timeGutterWrapper: MyTimeGutterWrapper,\n resourceHeader: MyResourceHeader,\n toolbar: MyToolbar,\n agenda: {\n \t event: MyAgendaEvent, // with the agenda view use a different component to render events\n time: MyAgendaTime,\n date: MyAgendaDate,\n },\n day: {\n header: MyDayHeader,\n event: MyDayEvent,\n },\n week: {\n header: MyWeekHeader,\n event: MyWeekEvent,\n },\n month: {\n header: MyMonthHeader,\n dateHeader: MyMonthDateHeader,\n event: MyMonthEvent,\n }\n}\n\n```",type:{name:"shape",value:{event:{name:"elementType",required:!1},eventWrapper:{name:"elementType",required:!1},eventContainerWrapper:{name:"elementType",required:!1},dateCellWrapper:{name:"elementType",required:!1},dayColumnWrapper:{name:"elementType",required:!1},timeSlotWrapper:{name:"elementType",required:!1},timeGutterHeader:{name:"elementType",required:!1},timeGutterWrapper:{name:"elementType",required:!1},resourceHeader:{name:"elementType",required:!1},toolbar:{name:"elementType",required:!1},agenda:{name:"shape",value:{date:{name:"elementType",required:!1},time:{name:"elementType",required:!1},event:{name:"elementType",required:!1}},required:!1},day:{name:"shape",value:{header:{name:"elementType",required:!1},event:{name:"elementType",required:!1}},required:!1},week:{name:"shape",value:{header:{name:"elementType",required:!1},event:{name:"elementType",required:!1}},required:!1},month:{name:"shape",value:{header:{name:"elementType",required:!1},dateHeader:{name:"elementType",required:!1},event:{name:"elementType",required:!1}},required:!1}}},required:!1},messages:{description:"String messages used throughout the component, override to provide localizations\n\n```jsx\nconst messages = {\n date: 'Date',\n time: 'Time',\n event: 'Event',\n allDay: 'All Day',\n week: 'Week',\n work_week: 'Work Week',\n day: 'Day',\n month: 'Month',\n previous: 'Back',\n next: 'Next',\n yesterday: 'Yesterday',\n tomorrow: 'Tomorrow',\n today: 'Today',\n agenda: 'Agenda',\n\n noEventsInRange: 'There are no events in this range.',\n\n showMore: total => `+ ${total} more`,\n}\n\n\n```",type:{name:"shape",value:{allDay:{name:"node",required:!1},previous:{name:"node",required:!1},next:{name:"node",required:!1},today:{name:"node",required:!1},month:{name:"node",required:!1},week:{name:"node",required:!1},day:{name:"node",required:!1},agenda:{name:"node",required:!1},date:{name:"node",required:!1},time:{name:"node",required:!1},event:{name:"node",required:!1},noEventsInRange:{name:"node",required:!1},showMore:{name:"func",required:!1}}},required:!1}}};var src_Calendar=(0,esm.Pd)(Calendar,{view:"onView",date:"onNavigate",selected:"onSelectEvent"});"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/Calendar.js"]={name:"Calendar",docgenInfo:Calendar.__docgenInfo,path:"src/Calendar.js"});__webpack_require__("./node_modules/core-js/modules/es.function.name.js"),__webpack_require__("./node_modules/core-js/modules/es.object.to-string.js"),__webpack_require__("./node_modules/core-js/modules/es.regexp.to-string.js"),__webpack_require__("./node_modules/core-js/modules/es.number.constructor.js");var timeRangeFormat=function timeRangeFormat(_ref3,culture,local){var start=_ref3.start,end=_ref3.end;return local.format(start,"LT",culture)+" – "+local.format(end,"LT",culture)},formats={dateFormat:"DD",dayFormat:"DD ddd",weekdayFormat:"ddd",selectRangeFormat:timeRangeFormat,eventTimeRangeFormat:timeRangeFormat,eventTimeRangeStartFormat:function timeRangeStartFormat(_ref4,culture,local){var start=_ref4.start;return local.format(start,"LT",culture)+" – "},eventTimeRangeEndFormat:function timeRangeEndFormat(_ref5,culture,local){var end=_ref5.end;return" – "+local.format(end,"LT",culture)},timeGutterFormat:"LT",monthHeaderFormat:"MMMM YYYY",dayHeaderFormat:"dddd MMM DD",dayRangeHeaderFormat:function weekRangeFormat(_ref,culture,local){var start=_ref.start,end=_ref.end;return local.format(start,"MMMM DD",culture)+" – "+local.format(end,local.eq(start,end,"month")?"DD":"MMMM DD",culture)},agendaHeaderFormat:function dateRangeFormat(_ref2,culture,local){var start=_ref2.start,end=_ref2.end;return local.format(start,"L",culture)+" – "+local.format(end,"L",culture)},agendaDateFormat:"ddd MMM DD",agendaTimeFormat:"LT",agendaTimeRangeFormat:timeRangeFormat};function fixUnit(unit){var datePart=unit?unit.toLowerCase():unit;return"FullYear"===datePart?datePart="year":datePart||(datePart=void 0),datePart}function moment(moment){function getDstOffset(start,end){var _st$_z$name,_st$_z,st=moment(start).local(),ed=moment(end).local();if(!moment.tz)return st.toDate().getTimezoneOffset()-ed.toDate().getTimezoneOffset();var tzName=null!==(_st$_z$name=null==st||null===(_st$_z=st._z)||void 0===_st$_z?void 0:_st$_z.name)&&void 0!==_st$_z$name?_st$_z$name:moment.tz.guess();return moment.tz.zone(tzName).utcOffset(+st)-moment.tz.zone(tzName).utcOffset(+ed)}function defineComparators(a,b,unit){var datePart=fixUnit(unit);return[datePart?moment(a).startOf(datePart):moment(a),datePart?moment(b).startOf(datePart):moment(b),datePart]}function startOf(){var date=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,datePart=fixUnit(arguments.length>1?arguments[1]:void 0);return datePart?moment(date).startOf(datePart).toDate():moment(date).toDate()}function eq(a,b,unit){var _defineComparators=defineComparators(a,b,unit),_defineComparators2=(0,slicedToArray.A)(_defineComparators,3),dtA=_defineComparators2[0],dtB=_defineComparators2[1],datePart=_defineComparators2[2];return dtA.isSame(dtB,datePart)}function lte(a,b,unit){var _defineComparators9=defineComparators(a,b,unit),_defineComparators10=(0,slicedToArray.A)(_defineComparators9,3),dtA=_defineComparators10[0],dtB=_defineComparators10[1],datePart=_defineComparators10[2];return dtA.isSameOrBefore(dtB,datePart)}function add(date,adder,unit){var datePart=fixUnit(unit);return moment(date).add(adder,datePart).toDate()}function diff(a,b){var datePart=fixUnit(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"day"),dtA=moment(a);return moment(b).diff(dtA,datePart)}function firstVisibleDay(date){return moment(date).startOf("month").startOf("week").toDate()}function lastVisibleDay(date){return moment(date).endOf("month").endOf("week").toDate()}function daySpan(start,end){var mStart=moment(start),mEnd=moment(end);return moment.duration(mEnd.diff(mStart)).days()}return new localizer_DateLocalizer({formats:formats,firstOfWeek:function firstOfWeek(culture){var data=culture?moment.localeData(culture):moment.localeData();return data?data.firstDayOfWeek():0},firstVisibleDay:firstVisibleDay,lastVisibleDay:lastVisibleDay,visibleDays:function visibleDays(date){for(var current=firstVisibleDay(date),last=lastVisibleDay(date),days=[];lte(current,last);)days.push(current),current=add(current,1,"d");return days},format:function format(value,_format,culture){return function locale(m,c){return c?m.locale(c):m}(moment(value),culture).format(_format)},lt:function lt(a,b,unit){var _defineComparators5=defineComparators(a,b,unit),_defineComparators6=(0,slicedToArray.A)(_defineComparators5,3),dtA=_defineComparators6[0],dtB=_defineComparators6[1],datePart=_defineComparators6[2];return dtA.isBefore(dtB,datePart)},lte:lte,gt:function gt(a,b,unit){var _defineComparators3=defineComparators(a,b,unit),_defineComparators4=(0,slicedToArray.A)(_defineComparators3,3),dtA=_defineComparators4[0],dtB=_defineComparators4[1],datePart=_defineComparators4[2];return dtA.isAfter(dtB,datePart)},gte:function gte(a,b,unit){var _defineComparators7=defineComparators(a,b,unit),_defineComparators8=(0,slicedToArray.A)(_defineComparators7,3),dtA=_defineComparators8[0],dtB=_defineComparators8[1],datePart=_defineComparators8[2];return dtA.isSameOrBefore(dtB,datePart)},eq:eq,neq:function neq(a,b,unit){return!eq(a,b,unit)},merge:function merge(date,time){if(!date&&!time)return null;var tm=moment(time).format("HH:mm:ss"),dt=moment(date).startOf("day").format("MM/DD/YYYY");return moment("".concat(dt," ").concat(tm),"MM/DD/YYYY HH:mm:ss").toDate()},inRange:function inRange(day,min,max){var datePart=fixUnit(arguments.length>3&&void 0!==arguments[3]?arguments[3]:"day"),mDay=moment(day),mMin=moment(min),mMax=moment(max);return mDay.isBetween(mMin,mMax,datePart,"[]")},startOf:startOf,endOf:function endOf(){var date=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,datePart=fixUnit(arguments.length>1?arguments[1]:void 0);return datePart?moment(date).endOf(datePart).toDate():moment(date).toDate()},range:function range(start,end){for(var datePart=fixUnit(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"day"),current=moment(start).toDate(),days=[];lte(current,end);)days.push(current),current=add(current,1,datePart);return days},add:add,diff:diff,ceil:function ceil(date,unit){var datePart=fixUnit(unit),floor=startOf(date,datePart);return eq(floor,date)?floor:add(floor,1,datePart)},min:function min(dateA,dateB){var dtA=moment(dateA),dtB=moment(dateB);return moment.min(dtA,dtB).toDate()},max:function max(dateA,dateB){var dtA=moment(dateA),dtB=moment(dateB);return moment.max(dtA,dtB).toDate()},minutes:function minutes(date){return moment(date).minutes()},getSlotDate:function getSlotDate(dt,minutesFromMidnight,offset){return moment(dt).startOf("day").minute(minutesFromMidnight+offset).toDate()},getTimezoneOffset:function getTimezoneOffset(date){return moment(date).toDate().getTimezoneOffset()},getDstOffset:getDstOffset,getTotalMin:function getTotalMin(start,end){return diff(start,end,"minutes")},getMinutesFromMidnight:function getMinutesFromMidnight(start){var dayStart=moment(start).startOf("day");return moment(start).diff(dayStart,"minutes")+function getDayStartDstOffset(start){return getDstOffset(moment(start).startOf("day"),start)}(start)},continuesPrior:function continuesPrior(start,first){var mStart=moment(start),mFirst=moment(first);return mStart.isBefore(mFirst,"day")},continuesAfter:function continuesAfter(start,end,last){var mEnd=moment(end),mLast=moment(last);return mEnd.isSameOrAfter(mLast,"minutes")},sortEvents:function sortEvents(_ref6){var _ref6$evtA=_ref6.evtA,aStart=_ref6$evtA.start,aEnd=_ref6$evtA.end,aAllDay=_ref6$evtA.allDay,_ref6$evtB=_ref6.evtB,bStart=_ref6$evtB.start,bEnd=_ref6$evtB.end,bAllDay=_ref6$evtB.allDay,startSort=+startOf(aStart,"day")-+startOf(bStart,"day"),durA=daySpan(aStart,aEnd),durB=daySpan(bStart,bEnd);return startSort||durB-durA||!!bAllDay-!!aAllDay||+aStart-+bStart||+aEnd-+bEnd},inEventRange:function inEventRange(_ref7){var _ref7$event=_ref7.event,start=_ref7$event.start,end=_ref7$event.end,_ref7$range=_ref7.range,rangeStart=_ref7$range.start,rangeEnd=_ref7$range.end,startOfDay=moment(start).startOf("day"),eEnd=moment(end),rStart=moment(rangeStart),rEnd=moment(rangeEnd),startsBeforeEnd=startOfDay.isSameOrBefore(rEnd,"day"),endsAfterStart=!startOfDay.isSame(eEnd,"minutes")?eEnd.isAfter(rStart,"minutes"):eEnd.isSameOrAfter(rStart,"minutes");return startsBeforeEnd&&endsAfterStart},isSameDate:function isSameDate(date1,date2){var dt=moment(date1),dt2=moment(date2);return dt.isSame(dt2,"day")},daySpan:daySpan,browserTZOffset:function browserTZOffset(){var dt=new Date,neg=/-/.test(dt.toString())?"-":"",dtOffset=dt.getTimezoneOffset(),comparator=Number("".concat(neg).concat(Math.abs(dtOffset)));return moment().utcOffset()>comparator?1:0}})}__webpack_require__("./node_modules/core-js/modules/es.array.includes.js"),__webpack_require__("./node_modules/core-js/modules/es.string.includes.js");var luxon_timeRangeFormat=function timeRangeFormat(_ref3,culture,local){var start=_ref3.start,end=_ref3.end;return local.format(start,"t",culture)+" – "+local.format(end,"t",culture)},luxon_formats={dateFormat:"dd",dayFormat:"dd EEE",weekdayFormat:"EEE",selectRangeFormat:luxon_timeRangeFormat,eventTimeRangeFormat:luxon_timeRangeFormat,eventTimeRangeStartFormat:function timeRangeStartFormat(_ref4,culture,local){var start=_ref4.start;return local.format(start,"t",culture)+" – "},eventTimeRangeEndFormat:function timeRangeEndFormat(_ref5,culture,local){var end=_ref5.end;return" – "+local.format(end,"t",culture)},timeGutterFormat:"t",monthHeaderFormat:"MMMM yyyy",dayHeaderFormat:"EEEE MMM dd",dayRangeHeaderFormat:function weekRangeFormat(_ref,culture,local){var start=_ref.start,end=_ref.end;return local.format(start,"MMMM dd",culture)+" – "+local.format(end,local.eq(start,end,"month")?"dd":"MMMM dd",culture)},agendaHeaderFormat:function dateRangeFormat(_ref2,culture,local){var start=_ref2.start,end=_ref2.end;return local.format(start,"D",culture)+" – "+local.format(end,"D",culture)},agendaDateFormat:"EEE MMM dd",agendaTimeFormat:"t",agendaTimeRangeFormat:luxon_timeRangeFormat};function luxon_fixUnit(unit){var datePart=unit?function pluralizeUnit(unit){return/s$/.test(unit)?unit:unit+"s"}(unit.toLowerCase()):unit;return"FullYear"===datePart?datePart="year":datePart||(datePart=void 0),datePart}function luxon(DateTime){var _ref6$firstDayOfWeek=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).firstDayOfWeek,firstDayOfWeek=void 0===_ref6$firstDayOfWeek?7:_ref6$firstDayOfWeek;function defineComparators(a,b,unit){var datePart=luxon_fixUnit(unit);return[datePart?DateTime.fromJSDate(a).startOf(datePart):DateTime.fromJSDate(a),datePart?DateTime.fromJSDate(b).startOf(datePart):DateTime.fromJSDate(b),datePart]}function startOfDTWeek(dtObj){var weekday=dtObj.weekday;if(weekday===firstDayOfWeek)return dtObj.startOf("day");if(1===firstDayOfWeek)return dtObj.startOf("week");var diff=7===firstDayOfWeek?weekday:weekday+(7-firstDayOfWeek);return dtObj.minus({day:diff}).startOf("day")}function endOfDTWeek(dtObj){var weekday=dtObj.weekday,eow=1===firstDayOfWeek?7:firstDayOfWeek-1;return weekday===eow?dtObj.endOf("day"):1===firstDayOfWeek?dtObj.endOf("week"):(firstDayOfWeek>eow?dtObj.plus({day:firstDayOfWeek-eow}):dtObj).set({weekday:eow}).endOf("day")}function startOfDT(){var date=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date,datePart=luxon_fixUnit(arguments.length>1?arguments[1]:void 0);if(datePart){var dt=DateTime.fromJSDate(date);return datePart.includes("week")?startOfDTWeek(dt):dt.startOf(datePart)}return DateTime.fromJSDate(date)}function startOf(){return startOfDT(arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date,arguments.length>1?arguments[1]:void 0).toJSDate()}function endOfDT(){var date=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date,datePart=luxon_fixUnit(arguments.length>1?arguments[1]:void 0);if(datePart){var dt=DateTime.fromJSDate(date);return datePart.includes("week")?endOfDTWeek(dt):dt.endOf(datePart)}return DateTime.fromJSDate(date)}function eq(a,b,unit){var _defineComparators=defineComparators(a,b,unit),_defineComparators2=(0,slicedToArray.A)(_defineComparators,2);return+_defineComparators2[0]==+_defineComparators2[1]}function neq(a,b,unit){return!eq(a,b,unit)}function gt(a,b,unit){var _defineComparators3=defineComparators(a,b,unit),_defineComparators4=(0,slicedToArray.A)(_defineComparators3,2);return+_defineComparators4[0]>+_defineComparators4[1]}function lt(a,b,unit){var _defineComparators5=defineComparators(a,b,unit),_defineComparators6=(0,slicedToArray.A)(_defineComparators5,2);return+_defineComparators6[0]<+_defineComparators6[1]}function gte(a,b,unit){var _defineComparators7=defineComparators(a,b,unit),_defineComparators8=(0,slicedToArray.A)(_defineComparators7,2);return+_defineComparators8[0]>=+_defineComparators8[1]}function lte(a,b,unit){var _defineComparators9=defineComparators(a,b,unit),_defineComparators10=(0,slicedToArray.A)(_defineComparators9,2);return+_defineComparators10[0]<=+_defineComparators10[1]}function add(date,adder,unit){var datePart=luxon_fixUnit(unit);return DateTime.fromJSDate(date).plus((0,defineProperty.A)({},datePart,adder)).toJSDate()}function diff(a,b){var datePart=luxon_fixUnit(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"day"),dtA=DateTime.fromJSDate(a),dtB=DateTime.fromJSDate(b);return Math.floor(dtB.diff(dtA,datePart,{conversionAccuracy:"longterm"}).toObject()[datePart])}function firstVisibleDay(date){return startOfDTWeek(startOfDT(date,"month")).toJSDate()}function lastVisibleDay(date){return endOfDTWeek(endOfDT(date,"month")).toJSDate()}function daySpan(start,end){var dtStart=DateTime.fromJSDate(start);return DateTime.fromJSDate(end).diff(dtStart).as("days")}return new localizer_DateLocalizer({format:function format(value,_format,culture){return culture?function formatDateWithCulture(value,culture,format){return DateTime.fromJSDate(value).setLocale(culture).toFormat(format)}(value,culture,_format):function formatDate(value,format){return DateTime.fromJSDate(value).toFormat(format)}(value,_format)},formats:luxon_formats,firstOfWeek:function firstOfWeek(){return firstDayOfWeek},firstVisibleDay:firstVisibleDay,lastVisibleDay:lastVisibleDay,visibleDays:function visibleDays(date){for(var current=firstVisibleDay(date),last=lastVisibleDay(date),days=[];lte(current,last);)days.push(current),current=add(current,1,"day");return days},lt:lt,lte:lte,gt:gt,gte:gte,eq:eq,neq:neq,merge:function merge(date,time){if(!date&&!time)return null;var tm=DateTime.fromJSDate(time);return startOfDT(date,"day").set({hour:tm.hour,minute:tm.minute,second:tm.second,millisecond:tm.millisecond}).toJSDate()},inRange:function inRange(day,min,max){var datePart=luxon_fixUnit(arguments.length>3&&void 0!==arguments[3]?arguments[3]:"day"),mDay=startOfDT(day,datePart),mMin=startOfDT(min,datePart),mMax=startOfDT(max,datePart);return+mDay>=+mMin&&+mDay<=+mMax},startOf:startOf,endOf:function endOf(){return endOfDT(arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date,arguments.length>1?arguments[1]:void 0).toJSDate()},range:function range(start,end){for(var datePart=luxon_fixUnit(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"day"),current=DateTime.fromJSDate(start).toJSDate(),days=[];lte(current,end);)days.push(current),current=add(current,1,datePart);return days},add:add,diff:diff,ceil:function ceil(date,unit){var datePart=luxon_fixUnit(unit),floor=startOf(date,datePart);return eq(floor,date)?floor:add(floor,1,datePart)},min:function min(dateA,dateB){var dtA=DateTime.fromJSDate(dateA),dtB=DateTime.fromJSDate(dateB);return DateTime.min(dtA,dtB).toJSDate()},max:function max(dateA,dateB){var dtA=DateTime.fromJSDate(dateA),dtB=DateTime.fromJSDate(dateB);return DateTime.max(dtA,dtB).toJSDate()},getSlotDate:function getSlotDate(dt,minutesFromMidnight,offset){return startOfDT(dt,"day").set({minutes:minutesFromMidnight+offset}).toJSDate()},getTotalMin:function getTotalMin(start,end){return diff(start,end,"minutes")},getMinutesFromMidnight:function getMinutesFromMidnight(start){var dayStart=startOfDT(start,"day"),day=DateTime.fromJSDate(start);return Math.round(day.diff(dayStart,"minutes",{conversionAccuracy:"longterm"}).toObject().minutes)},continuesPrior:function continuesPrior(start,first){return lt(start,first)},continuesAfter:function continuesAfter(start,end,last){return gte(end,last)},sortEvents:function sortEvents(_ref7){var _ref7$evtA=_ref7.evtA,aStart=_ref7$evtA.start,aEnd=_ref7$evtA.end,aAllDay=_ref7$evtA.allDay,_ref7$evtB=_ref7.evtB,bStart=_ref7$evtB.start,bEnd=_ref7$evtB.end,bAllDay=_ref7$evtB.allDay,startSort=+startOf(aStart,"day")-+startOf(bStart,"day"),durA=daySpan(aStart,aEnd),durB=daySpan(bStart,bEnd);return startSort||durB-durA||!!bAllDay-!!aAllDay||+aStart-+bStart||+aEnd-+bEnd},inEventRange:function inEventRange(_ref8){var _ref8$event=_ref8.event,start=_ref8$event.start,end=_ref8$event.end,_ref8$range=_ref8.range,rangeStart=_ref8$range.start,rangeEnd=_ref8$range.end,eStart=startOf(start,"day"),startsBeforeEnd=lte(eStart,rangeEnd,"day"),endsAfterStart=neq(eStart,end,"minutes")?gt(end,rangeStart,"minutes"):gte(end,rangeStart,"minutes");return startsBeforeEnd&&endsAfterStart},isSameDate:function isSameDate(date1,date2){var dt=DateTime.fromJSDate(date1),dt2=DateTime.fromJSDate(date2);return dt.hasSame(dt2,"day")},daySpan:daySpan,browserTZOffset:function browserTZOffset(){var dt=new Date,neg=/-/.test(dt.toString())?"-":"",dtOffset=dt.getTimezoneOffset(),comparator=Number("".concat(neg).concat(Math.abs(dtOffset)));return DateTime.local().offset>comparator?1:0}})}var oldGlobalize_timeRangeFormat=function timeRangeFormat(_ref2,culture,local){var start=_ref2.start,end=_ref2.end;return local.format(start,"t",culture)+" – "+local.format(end,"t",culture)},oldGlobalize_formats={dateFormat:"dd",dayFormat:"ddd dd/MM",weekdayFormat:"ddd",selectRangeFormat:oldGlobalize_timeRangeFormat,eventTimeRangeFormat:oldGlobalize_timeRangeFormat,eventTimeRangeStartFormat:function timeRangeStartFormat(_ref3,culture,local){var start=_ref3.start;return local.format(start,"t",culture)+" – "},eventTimeRangeEndFormat:function timeRangeEndFormat(_ref4,culture,local){var end=_ref4.end;return" – "+local.format(end,"t",culture)},timeGutterFormat:"t",monthHeaderFormat:"Y",dayHeaderFormat:"dddd MMM dd",dayRangeHeaderFormat:function weekRangeFormat(_ref5,culture,local){var start=_ref5.start,end=_ref5.end;return local.format(start,"MMM dd",culture)+" – "+local.format(end,dates.eq(start,end,"month")?"dd":"MMM dd",culture)},agendaHeaderFormat:function dateRangeFormat(_ref,culture,local){var start=_ref.start,end=_ref.end;return local.format(start,"d",culture)+" – "+local.format(end,"d",culture)},agendaDateFormat:"ddd MMM dd",agendaTimeFormat:"t",agendaTimeRangeFormat:oldGlobalize_timeRangeFormat};function oldGlobalize(globalize){return new localizer_DateLocalizer({firstOfWeek:function firstOfWeek(culture){return(culture=function getCulture(culture){return culture?globalize.findClosestCulture(culture):globalize.culture()}(culture))&&culture.calendar.firstDay||0},formats:oldGlobalize_formats,format:function format(value,_format,culture){return globalize.format(value,_format,culture)}})}var globalize_timeRangeFormat=function timeRangeFormat(_ref2,culture,local){var start=_ref2.start,end=_ref2.end;return local.format(start,{time:"short"},culture)+" – "+local.format(end,{time:"short"},culture)},globalize_formats={dateFormat:"dd",dayFormat:"eee dd/MM",weekdayFormat:"eee",selectRangeFormat:globalize_timeRangeFormat,eventTimeRangeFormat:globalize_timeRangeFormat,eventTimeRangeStartFormat:function timeRangeStartFormat(_ref3,culture,local){var start=_ref3.start;return local.format(start,{time:"short"},culture)+" – "},eventTimeRangeEndFormat:function timeRangeEndFormat(_ref4,culture,local){var end=_ref4.end;return" – "+local.format(end,{time:"short"},culture)},timeGutterFormat:{time:"short"},monthHeaderFormat:"MMMM yyyy",dayHeaderFormat:"eeee MMM dd",dayRangeHeaderFormat:function weekRangeFormat(_ref5,culture,local){var start=_ref5.start,end=_ref5.end;return local.format(start,"MMM dd",culture)+" – "+local.format(end,dates.eq(start,end,"month")?"dd":"MMM dd",culture)},agendaHeaderFormat:function dateRangeFormat(_ref,culture,local){var start=_ref.start,end=_ref.end;return local.format(start,{date:"short"},culture)+" – "+local.format(end,{date:"short"},culture)},agendaDateFormat:"eee MMM dd",agendaTimeFormat:{time:"short"},agendaTimeRangeFormat:globalize_timeRangeFormat};function globalize(globalize){var locale=function locale(culture){return culture?globalize(culture):globalize};return globalize.load?new localizer_DateLocalizer({firstOfWeek:function firstOfWeek(culture){try{var cldr=locale(culture).cldr,territory=cldr.attributes.territory,firstDay=cldr.get("supplemental").weekData.firstDay[territory||"001"];return["sun","mon","tue","wed","thu","fri","sat"].indexOf(firstDay)}catch(e){0;var date=new Date,localeDay=Math.max(parseInt(locale(culture).formatDate(date,{raw:"e"}),10)-1,0);return Math.abs(date.getDay()-localeDay)}},formats:globalize_formats,format:function format(value,_format,culture){return _format="string"==typeof _format?{raw:_format}:_format,locale(culture).formatDate(value,_format)}}):oldGlobalize(globalize)}var isBetween=__webpack_require__("./node_modules/dayjs/plugin/isBetween.js"),isBetween_default=__webpack_require__.n(isBetween),isSameOrAfter=__webpack_require__("./node_modules/dayjs/plugin/isSameOrAfter.js"),isSameOrAfter_default=__webpack_require__.n(isSameOrAfter),isSameOrBefore=__webpack_require__("./node_modules/dayjs/plugin/isSameOrBefore.js"),isSameOrBefore_default=__webpack_require__.n(isSameOrBefore),localeData=__webpack_require__("./node_modules/dayjs/plugin/localeData.js"),localeData_default=__webpack_require__.n(localeData),localizedFormat=__webpack_require__("./node_modules/dayjs/plugin/localizedFormat.js"),localizedFormat_default=__webpack_require__.n(localizedFormat),minMax=__webpack_require__("./node_modules/dayjs/plugin/minMax.js"),minMax_default=__webpack_require__.n(minMax),utc=__webpack_require__("./node_modules/dayjs/plugin/utc.js"),utc_default=__webpack_require__.n(utc),dayjs_timeRangeFormat=function timeRangeFormat(_ref3,culture,local){var start=_ref3.start,end=_ref3.end;return local.format(start,"LT",culture)+" – "+local.format(end,"LT",culture)},dayjs_formats={dateFormat:"DD",dayFormat:"DD ddd",weekdayFormat:"ddd",selectRangeFormat:dayjs_timeRangeFormat,eventTimeRangeFormat:dayjs_timeRangeFormat,eventTimeRangeStartFormat:function timeRangeStartFormat(_ref4,culture,local){var start=_ref4.start;return local.format(start,"LT",culture)+" – "},eventTimeRangeEndFormat:function timeRangeEndFormat(_ref5,culture,local){var end=_ref5.end;return" – "+local.format(end,"LT",culture)},timeGutterFormat:"LT",monthHeaderFormat:"MMMM YYYY",dayHeaderFormat:"dddd MMM DD",dayRangeHeaderFormat:function weekRangeFormat(_ref,culture,local){var start=_ref.start,end=_ref.end;return local.format(start,"MMMM DD",culture)+" – "+local.format(end,local.eq(start,end,"month")?"DD":"MMMM DD",culture)},agendaHeaderFormat:function dateRangeFormat(_ref2,culture,local){var start=_ref2.start,end=_ref2.end;return local.format(start,"L",culture)+" – "+local.format(end,"L",culture)},agendaDateFormat:"ddd MMM DD",agendaTimeFormat:"LT",agendaTimeRangeFormat:dayjs_timeRangeFormat};function dayjs_fixUnit(unit){var datePart=unit?unit.toLowerCase():unit;return"FullYear"===datePart?datePart="year":datePart||(datePart=void 0),datePart}function dayjs(dayjsLib){dayjsLib.extend(isBetween_default()),dayjsLib.extend(isSameOrAfter_default()),dayjsLib.extend(isSameOrBefore_default()),dayjsLib.extend(localeData_default()),dayjsLib.extend(localizedFormat_default()),dayjsLib.extend(minMax_default()),dayjsLib.extend(utc_default());var dayjs=dayjsLib.tz?dayjsLib.tz:dayjsLib;function getDstOffset(start,end){var _st$tz$$x$$timezone,st=dayjs(start),ed=dayjs(end);if(!dayjs.tz)return st.toDate().getTimezoneOffset()-ed.toDate().getTimezoneOffset();var tzName=null!==(_st$tz$$x$$timezone=st.tz().$x.$timezone)&&void 0!==_st$tz$$x$$timezone?_st$tz$$x$$timezone:dayjsLib.tz.guess();return-dayjs.tz(+st,tzName).utcOffset()- -dayjs.tz(+ed,tzName).utcOffset()}function defineComparators(a,b,unit){var datePart=dayjs_fixUnit(unit);return[datePart?dayjs(a).startOf(datePart):dayjs(a),datePart?dayjs(b).startOf(datePart):dayjs(b),datePart]}function startOf(){var date=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,datePart=dayjs_fixUnit(arguments.length>1?arguments[1]:void 0);return datePart?dayjs(date).startOf(datePart).toDate():dayjs(date).toDate()}function eq(a,b,unit){var _defineComparators=defineComparators(a,b,unit),_defineComparators2=(0,slicedToArray.A)(_defineComparators,3),dtA=_defineComparators2[0],dtB=_defineComparators2[1],datePart=_defineComparators2[2];return dtA.isSame(dtB,datePart)}function lte(a,b,unit){var _defineComparators9=defineComparators(a,b,unit),_defineComparators10=(0,slicedToArray.A)(_defineComparators9,3),dtA=_defineComparators10[0],dtB=_defineComparators10[1],datePart=_defineComparators10[2];return dtA.isSameOrBefore(dtB,datePart)}function add(date,adder,unit){var datePart=dayjs_fixUnit(unit);return dayjs(date).add(adder,datePart).toDate()}function diff(a,b){var datePart=dayjs_fixUnit(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"day"),dtA=dayjs(a);return dayjs(b).diff(dtA,datePart)}function firstVisibleDay(date){return dayjs(date).startOf("month").startOf("week").toDate()}function lastVisibleDay(date){return dayjs(date).endOf("month").endOf("week").toDate()}function daySpan(start,end){var startDay=dayjs(start);return dayjs(end).diff(startDay,"day")}return new localizer_DateLocalizer({formats:dayjs_formats,firstOfWeek:function firstOfWeek(culture){var data=culture?dayjsLib.localeData(culture):dayjsLib.localeData();return data?data.firstDayOfWeek():0},firstVisibleDay:firstVisibleDay,lastVisibleDay:lastVisibleDay,visibleDays:function visibleDays(date){for(var current=firstVisibleDay(date),last=lastVisibleDay(date),days=[];lte(current,last);)days.push(current),current=add(current,1,"d");return days},format:function format(value,_format,culture){return function locale(dj,c){return c?dj.locale(c):dj}(dayjs(value),culture).format(_format)},lt:function lt(a,b,unit){var _defineComparators5=defineComparators(a,b,unit),_defineComparators6=(0,slicedToArray.A)(_defineComparators5,3),dtA=_defineComparators6[0],dtB=_defineComparators6[1],datePart=_defineComparators6[2];return dtA.isBefore(dtB,datePart)},lte:lte,gt:function gt(a,b,unit){var _defineComparators3=defineComparators(a,b,unit),_defineComparators4=(0,slicedToArray.A)(_defineComparators3,3),dtA=_defineComparators4[0],dtB=_defineComparators4[1],datePart=_defineComparators4[2];return dtA.isAfter(dtB,datePart)},gte:function gte(a,b,unit){var _defineComparators7=defineComparators(a,b,unit),_defineComparators8=(0,slicedToArray.A)(_defineComparators7,3),dtA=_defineComparators8[0],dtB=_defineComparators8[1],datePart=_defineComparators8[2];return dtA.isSameOrBefore(dtB,datePart)},eq:eq,neq:function neq(a,b,unit){return!eq(a,b,unit)},merge:function merge(date,time){if(!date&&!time)return null;var tm=dayjs(time).format("HH:mm:ss"),dt=dayjs(date).startOf("day").format("MM/DD/YYYY");return dayjsLib("".concat(dt," ").concat(tm),"MM/DD/YYYY HH:mm:ss").toDate()},inRange:function inRange(day,min,max){var datePart=dayjs_fixUnit(arguments.length>3&&void 0!==arguments[3]?arguments[3]:"day"),djDay=dayjs(day),djMin=dayjs(min),djMax=dayjs(max);return djDay.isBetween(djMin,djMax,datePart,"[]")},startOf:startOf,endOf:function endOf(){var date=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,datePart=dayjs_fixUnit(arguments.length>1?arguments[1]:void 0);return datePart?dayjs(date).endOf(datePart).toDate():dayjs(date).toDate()},range:function range(start,end){for(var datePart=dayjs_fixUnit(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"day"),current=dayjs(start).toDate(),days=[];lte(current,end);)days.push(current),current=add(current,1,datePart);return days},add:add,diff:diff,ceil:function ceil(date,unit){var datePart=dayjs_fixUnit(unit),floor=startOf(date,datePart);return eq(floor,date)?floor:add(floor,1,datePart)},min:function min(dateA,dateB){var dtA=dayjs(dateA),dtB=dayjs(dateB);return dayjsLib.min(dtA,dtB).toDate()},max:function max(dateA,dateB){var dtA=dayjs(dateA),dtB=dayjs(dateB);return dayjsLib.max(dtA,dtB).toDate()},minutes:function minutes(date){return dayjs(date).minutes()},getSlotDate:function getSlotDate(dt,minutesFromMidnight,offset){return dayjs(dt).startOf("day").minute(minutesFromMidnight+offset).toDate()},getTimezoneOffset:function getTimezoneOffset(date){return dayjs(date).toDate().getTimezoneOffset()},getDstOffset:getDstOffset,getTotalMin:function getTotalMin(start,end){return diff(start,end,"minutes")},getMinutesFromMidnight:function getMinutesFromMidnight(start){var dayStart=dayjs(start).startOf("day");return dayjs(start).diff(dayStart,"minutes")+function getDayStartDstOffset(start){return getDstOffset(dayjs(start).startOf("day"),start)}(start)},continuesPrior:function continuesPrior(start,first){var djStart=dayjs(start),djFirst=dayjs(first);return djStart.isBefore(djFirst,"day")},continuesAfter:function continuesAfter(start,end,last){var djEnd=dayjs(end),djLast=dayjs(last);return djEnd.isSameOrAfter(djLast,"minutes")},sortEvents:function sortEvents(_ref6){var _ref6$evtA=_ref6.evtA,aStart=_ref6$evtA.start,aEnd=_ref6$evtA.end,aAllDay=_ref6$evtA.allDay,_ref6$evtB=_ref6.evtB,bStart=_ref6$evtB.start,bEnd=_ref6$evtB.end,bAllDay=_ref6$evtB.allDay,startSort=+startOf(aStart,"day")-+startOf(bStart,"day"),durA=daySpan(aStart,aEnd),durB=daySpan(bStart,bEnd);return startSort||durB-durA||!!bAllDay-!!aAllDay||+aStart-+bStart||+aEnd-+bEnd},inEventRange:function inEventRange(_ref7){var _ref7$event=_ref7.event,start=_ref7$event.start,end=_ref7$event.end,_ref7$range=_ref7.range,rangeStart=_ref7$range.start,rangeEnd=_ref7$range.end,startOfDay=dayjs(start).startOf("day"),eEnd=dayjs(end),rStart=dayjs(rangeStart),rEnd=dayjs(rangeEnd),startsBeforeEnd=startOfDay.isSameOrBefore(rEnd,"day"),endsAfterStart=!startOfDay.isSame(eEnd,"minutes")?eEnd.isAfter(rStart,"minutes"):eEnd.isSameOrAfter(rStart,"minutes");return startsBeforeEnd&&endsAfterStart},isSameDate:function isSameDate(date1,date2){var dt=dayjs(date1),dt2=dayjs(date2);return dt.isSame(dt2,"day")},browserTZOffset:function browserTZOffset(){var dt=new Date,neg=/-/.test(dt.toString())?"-":"",dtOffset=dt.getTimezoneOffset(),comparator=Number("".concat(neg).concat(Math.abs(dtOffset)));return dayjs().utcOffset()>comparator?1:0}})}BackgroundWrapper.A,BackgroundWrapper.A},"./src/utils/accessors.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";function accessor(data,field){var value=null;return"function"==typeof field?value=field(data):"string"==typeof field&&"object"==typeof data&&null!=data&&field in data&&(value=data[field]),value}__webpack_require__.d(__webpack_exports__,{C:function(){return wrapAccessor},s:function(){return accessor}});var wrapAccessor=function wrapAccessor(acc){return function(data){return accessor(data,acc)}}},"./src/utils/constants.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{l:function(){return views},o:function(){return navigate}});var navigate={PREVIOUS:"PREV",NEXT:"NEXT",TODAY:"TODAY",DATE:"DATE"},views={MONTH:"month",WEEK:"week",WORK_WEEK:"work_week",DAY:"day",AGENDA:"agenda"}},"./src/utils/dates.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{GH:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.startOf},Gx:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.minutes},IC:function(){return visibleDays},Jo:function(){return lastVisibleDay},RO:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.gte},T9:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.max},Ui:function(){return diff},WQ:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.add},eq:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.eq},gt:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.gt},h1:function(){return merge},jk:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.min},lt:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.lt},mk:function(){return ceil},p0:function(){return duration},pJ:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.endOf},pR:function(){return isJustDate},r4:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.inRange},t7:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.neq},tk:function(){return firstVisibleDay},wJ:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.lte},y1:function(){return range}});__webpack_require__("./node_modules/core-js/modules/es.array.map.js");var date_arithmetic__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/date-arithmetic/index.js"),MILLI={seconds:1e3,minutes:6e4,hours:36e5,day:864e5};function firstVisibleDay(date,localizer){var firstOfMonth=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.startOf(date,"month");return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.startOf(firstOfMonth,"week",localizer.startOfWeek())}function lastVisibleDay(date,localizer){var endOfMonth=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.endOf(date,"month");return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.endOf(endOfMonth,"week",localizer.startOfWeek())}function visibleDays(date,localizer){for(var current=firstVisibleDay(date,localizer),last=lastVisibleDay(date,localizer),days=[];date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.lte(current,last,"day");)days.push(current),current=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.add(current,1,"day");return days}function ceil(date,unit){var floor=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.startOf(date,unit);return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.eq(floor,date)?floor:date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.add(floor,1,unit)}function range(start,end){for(var unit=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"day",current=start,days=[];date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.lte(current,end,unit);)days.push(current),current=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.add(current,1,unit);return days}function merge(date,time){return null==time&&null==date?null:(null==time&&(time=new Date),null==date&&(date=new Date),date=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.startOf(date,"day"),date=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.hours(date,date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.hours(time)),date=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.minutes(date,date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.minutes(time)),date=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.seconds(date,date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.seconds(time)),date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.milliseconds(date,date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.milliseconds(time)))}function isJustDate(date){return 0===date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.hours(date)&&0===date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.minutes(date)&&0===date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.seconds(date)&&0===date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.milliseconds(date)}function duration(start,end,unit,firstOfWeek){return"day"===unit&&(unit="date"),Math.abs(date_arithmetic__WEBPACK_IMPORTED_MODULE_1__[unit](start,void 0,firstOfWeek)-date_arithmetic__WEBPACK_IMPORTED_MODULE_1__[unit](end,void 0,firstOfWeek))}function diff(dateA,dateB,unit){return unit&&"milliseconds"!==unit?Math.round(Math.abs(+date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.startOf(dateA,unit)/MILLI[unit]-+date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.startOf(dateB,unit)/MILLI[unit])):Math.abs(+dateA-+dateB)}},"./src/utils/eventLevels.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{FA:function(){return eventSegments},O_:function(){return eventLevels},SY:function(){return sortWeekEvents},kD:function(){return sortEvents},qO:function(){return endOfRange},r4:function(){return inRange}});var _babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),lodash_findIndex__WEBPACK_IMPORTED_MODULE_3__=(__webpack_require__("./node_modules/core-js/modules/es.array.sort.js"),__webpack_require__("./node_modules/core-js/modules/web.dom-collections.for-each.js"),__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/lodash/findIndex.js")),lodash_findIndex__WEBPACK_IMPORTED_MODULE_3___default=__webpack_require__.n(lodash_findIndex__WEBPACK_IMPORTED_MODULE_3__);function endOfRange(_ref){var dateRange=_ref.dateRange,_ref$unit=_ref.unit,unit=void 0===_ref$unit?"day":_ref$unit,localizer=_ref.localizer;return{first:dateRange[0],last:localizer.add(dateRange[dateRange.length-1],1,unit)}}function eventSegments(event,range,accessors,localizer){var _endOfRange=endOfRange({dateRange:range,localizer:localizer}),first=_endOfRange.first,last=_endOfRange.last,slots=localizer.diff(first,last,"day"),start=localizer.max(localizer.startOf(accessors.start(event),"day"),first),end=localizer.min(localizer.ceil(accessors.end(event),"day"),last),padding=lodash_findIndex__WEBPACK_IMPORTED_MODULE_3___default()(range,(function(x){return localizer.isSameDate(x,start)})),span=localizer.diff(start,end,"day");return span=Math.min(span,slots),{event:event,span:span=Math.max(span-localizer.segmentOffset,1),left:padding+1,right:Math.max(padding+span,1)}}function eventLevels(rowSegments){var i,j,seg,limit=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1/0,levels=[],extra=[];for(i=0;i=limit?extra.push(seg):(levels[j]||(levels[j]=[])).push(seg)}for(i=0;i=seg.left}))}function sortWeekEvents(events,accessors,localizer){var base=(0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_4__.A)(events),multiDayEvents=[],standardEvents=[];base.forEach((function(event){var startCheck=accessors.start(event),endCheck=accessors.end(event);localizer.daySpan(startCheck,endCheck)>1?multiDayEvents.push(event):standardEvents.push(event)}));var multiSorted=multiDayEvents.sort((function(a,b){return sortEvents(a,b,accessors,localizer)})),standardSorted=standardEvents.sort((function(a,b){return sortEvents(a,b,accessors,localizer)}));return[].concat((0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_4__.A)(multiSorted),(0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_4__.A)(standardSorted))}function sortEvents(eventA,eventB,accessors,localizer){var evtA={start:accessors.start(eventA),end:accessors.end(eventA),allDay:accessors.allDay(eventA)},evtB={start:accessors.start(eventB),end:accessors.end(eventB),allDay:accessors.allDay(eventB)};return localizer.sortEvents({evtA:evtA,evtB:evtB})}},"./src/utils/helpers.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{me:function(){return notify}});__webpack_require__("./node_modules/core-js/modules/es.array.concat.js");function notify(handler,args){handler&&handler.apply(null,[].concat(args))}},"./src/utils/propTypes.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.keys.js"),__webpack_require__("./node_modules/core-js/modules/es.array.concat.js");var prop_types__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/prop-types/index.js"),prop_types__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__),_constants__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./src/utils/constants.js"),viewNames=Object.keys(_constants__WEBPACK_IMPORTED_MODULE_3__.l).map((function(k){return _constants__WEBPACK_IMPORTED_MODULE_3__.l[k]}));prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_4___default().string,prop_types__WEBPACK_IMPORTED_MODULE_4___default().func]),prop_types__WEBPACK_IMPORTED_MODULE_4___default().any,prop_types__WEBPACK_IMPORTED_MODULE_4___default().func,prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOf(viewNames)),prop_types__WEBPACK_IMPORTED_MODULE_4___default().objectOf((function(prop,key){if(-1!==viewNames.indexOf(key)&&"boolean"==typeof prop[key])return null;for(var _len=arguments.length,args=new Array(_len>2?_len-2:0),_key=2;_key<_len;_key++)args[_key-2]=arguments[_key];return prop_types__WEBPACK_IMPORTED_MODULE_4___default().elementType.apply(prop_types__WEBPACK_IMPORTED_MODULE_4___default(),[prop,key].concat(args))}))]),prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOf(["overlap","no-overlap"]),prop_types__WEBPACK_IMPORTED_MODULE_4___default().func])},"./src/utils/selection.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{bY:function(){return pointInBox},bx:function(){return dateCellSelection},sU:function(){return getSlotAtX},sp:function(){return isSelected}});var lodash_isEqual__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/lodash/isEqual.js"),lodash_isEqual__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(lodash_isEqual__WEBPACK_IMPORTED_MODULE_0__);function isSelected(event,selected){return!(!event||null==selected)&&lodash_isEqual__WEBPACK_IMPORTED_MODULE_0___default()(event,selected)}function slotWidth(rowBox,slots){return(rowBox.right-rowBox.left)/slots}function getSlotAtX(rowBox,x,rtl,slots){var cellWidth=slotWidth(rowBox,slots);return rtl?slots-1-Math.floor((x-rowBox.left)/cellWidth):Math.floor((x-rowBox.left)/cellWidth)}function pointInBox(box,_ref){var x=_ref.x,y=_ref.y;return y>=box.top&&y<=box.bottom&&x>=box.left&&x<=box.right}function dateCellSelection(start,rowBox,box,slots,rtl){var startIdx=-1,endIdx=-1,lastSlotIdx=slots-1,cellWidth=slotWidth(rowBox,slots),currentSlot=getSlotAtX(rowBox,box.x,rtl,slots),isCurrentRow=rowBox.topbox.y,isStartRow=rowBox.topstart.y,isAboveStart=start.y>rowBox.bottom,isBelowStart=rowBox.top>start.y;return box.toprowBox.bottom&&(startIdx=0,endIdx=lastSlotIdx),isCurrentRow&&(isBelowStart?(startIdx=0,endIdx=currentSlot):isAboveStart&&(startIdx=currentSlot,endIdx=lastSlotIdx)),isStartRow&&(startIdx=endIdx=rtl?lastSlotIdx-Math.floor((start.x-rowBox.left)/cellWidth):Math.floor((start.x-rowBox.left)/cellWidth),isCurrentRow?currentSlot View Example Source Code"})}),children?(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)("div",{style:{marginBottom:10},children:children}):null]})}DemoLink.displayName="DemoLink",DemoLink.__docgenInfo={description:"",methods:[],displayName:"DemoLink"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/DemoLink.component.js"]={name:"DemoLink",docgenInfo:DemoLink.__docgenInfo,path:"stories/DemoLink.component.js"})},"./stories/demos/TimezoneSelect.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return TimezoneSelect}});__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/react/index.js");var react_tackle_box_Layout__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/react-tackle-box/Layout.js"),react_tackle_box_Layout__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(react_tackle_box_Layout__WEBPACK_IMPORTED_MODULE_2__),moment__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/moment/moment.js"),moment__WEBPACK_IMPORTED_MODULE_3___default=__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_3__),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__=(__webpack_require__("./node_modules/moment-timezone/index.js"),__webpack_require__("./node_modules/react/jsx-runtime.js")),allZones=moment__WEBPACK_IMPORTED_MODULE_3___default().tz.names();function TimezoneSelect(_ref){var title=_ref.title,_ref$defaultTZ=_ref.defaultTZ,defaultTZ=void 0===_ref$defaultTZ?moment__WEBPACK_IMPORTED_MODULE_3___default().tz.guess():_ref$defaultTZ,timezone=_ref.timezone,setTimezone=_ref.setTimezone;return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div",{children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(react_tackle_box_Layout__WEBPACK_IMPORTED_MODULE_2___default(),{direction:"column",align:"center",children:[title?(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("strong",{style:{marginBottom:10},children:title}):null,(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("label",{children:"Select a Timezone"})," ",(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("select",{className:"form-control",style:{width:200,display:"inline-block"},value:timezone,onChange:function onChange(_ref2){var value=_ref2.target.value;return setTimezone(value||defaultTZ)},children:allZones.map((function(c,idx){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("option",{value:"clear"!==c?c:"",children:c},idx)}))})]})})}allZones.unshift("clear"),TimezoneSelect.displayName="TimezoneSelect",TimezoneSelect.__docgenInfo={description:"",methods:[],displayName:"TimezoneSelect",props:{defaultTZ:{defaultValue:{value:"moment.tz.guess()",computed:!0},description:"",type:{name:"string"},required:!1},title:{description:"",type:{name:"string"},required:!1},timezone:{description:"",type:{name:"string"},required:!1},setTimezone:{description:"",type:{name:"func"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/TimezoneSelect.js"]={name:"TimezoneSelect",docgenInfo:TimezoneSelect.__docgenInfo,path:"stories/demos/TimezoneSelect.js"})},"./stories/demos/exampleCode/basic.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return Basic}});var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),react__WEBPACK_IMPORTED_MODULE_3__=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.keys.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),moment__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/moment/moment.js"),moment__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_4__),react_big_calendar__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./src/index.js"),_DemoLink_component__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./stories/DemoLink.component.js"),_resources_events__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("./stories/resources/events.js"),_src_utils_dates__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__("./src/utils/dates.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__("./node_modules/react/jsx-runtime.js"),_excluded=["localizer","showDemoLink"],mLocalizer=(0,react_big_calendar__WEBPACK_IMPORTED_MODULE_5__.ye)(moment__WEBPACK_IMPORTED_MODULE_4___default()),ColoredDateCellWrapper=function ColoredDateCellWrapper(_ref){var children=_ref.children;return react__WEBPACK_IMPORTED_MODULE_3__.cloneElement(react__WEBPACK_IMPORTED_MODULE_3__.Children.only(children),{style:{backgroundColor:"lightblue"}})};function Basic(_ref2){var _ref2$localizer=_ref2.localizer,localizer=void 0===_ref2$localizer?mLocalizer:_ref2$localizer,_ref2$showDemoLink=_ref2.showDemoLink,showDemoLink=void 0===_ref2$showDemoLink||_ref2$showDemoLink,props=(0,_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_10__.A)(_ref2,_excluded),_useMemo=(0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)((function(){return{components:{timeSlotWrapper:ColoredDateCellWrapper},defaultDate:new Date(2015,3,1),max:_src_utils_dates__WEBPACK_IMPORTED_MODULE_8__.WQ(_src_utils_dates__WEBPACK_IMPORTED_MODULE_8__.pJ(new Date(2015,17,1),"day"),-1,"hours"),views:Object.keys(react_big_calendar__WEBPACK_IMPORTED_MODULE_5__.Pp).map((function(k){return react_big_calendar__WEBPACK_IMPORTED_MODULE_5__.Pp[k]}))}}),[]),components=_useMemo.components,defaultDate=_useMemo.defaultDate,max=_useMemo.max,views=_useMemo.views;return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(react__WEBPACK_IMPORTED_MODULE_3__.Fragment,{children:[showDemoLink?(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_DemoLink_component__WEBPACK_IMPORTED_MODULE_6__.A,{fileName:"basic"}):null,(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("div",Object.assign({className:"height600"},props,{children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(react_big_calendar__WEBPACK_IMPORTED_MODULE_5__.Vv,{components:components,defaultDate:defaultDate,events:_resources_events__WEBPACK_IMPORTED_MODULE_7__.A,localizer:localizer,max:max,showMultiDayTimes:!0,step:60,views:views})}))]})}Basic.displayName="Basic",Basic.__docgenInfo={description:"We are defaulting the localizer here because we are using this same\nexample on the main 'About' page in Storybook",methods:[],displayName:"Basic",props:{localizer:{defaultValue:{value:"momentLocalizer(moment)",computed:!0},description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1},showDemoLink:{defaultValue:{value:"true",computed:!1},description:"",type:{name:"bool"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/basic.js"]={name:"Basic",docgenInfo:Basic.__docgenInfo,path:"stories/demos/exampleCode/basic.js"})},"./stories/demos/exampleCode/dndOutsideSource.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return DnDOutsideResource}});var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_17__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/defineProperty.js"),_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_16__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_15__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react__WEBPACK_IMPORTED_MODULE_7__=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.array.find.js"),__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/es.function.name.js"),__webpack_require__("./node_modules/core-js/modules/es.object.entries.js"),__webpack_require__("./node_modules/react/index.js")),_resources_events__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__("./stories/resources/events.js"),react_big_calendar__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__("./src/index.js"),_resources_Card__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__("./stories/resources/Card.js"),_DemoLink_component__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__("./stories/DemoLink.component.js"),_src_addons_dragAndDrop__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__("./src/addons/dragAndDrop/index.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__=(__webpack_require__("./src/addons/dragAndDrop/styles.scss"),__webpack_require__("./node_modules/react/jsx-runtime.js")),DragAndDropCalendar=(0,_src_addons_dragAndDrop__WEBPACK_IMPORTED_MODULE_12__.A)(react_big_calendar__WEBPACK_IMPORTED_MODULE_9__.Vv),adjEvents=_resources_events__WEBPACK_IMPORTED_MODULE_8__.A.map((function(it,ind){return Object.assign({},it,{isDraggable:ind%2==0})})),formatName=function formatName(name,count){return"".concat(name," ID ").concat(count)};function DnDOutsideResource(_ref){var localizer=_ref.localizer,_useState=(0,react__WEBPACK_IMPORTED_MODULE_7__.useState)(adjEvents),_useState2=(0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_15__.A)(_useState,2),myEvents=_useState2[0],setMyEvents=_useState2[1],_useState3=(0,react__WEBPACK_IMPORTED_MODULE_7__.useState)(),_useState4=(0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_15__.A)(_useState3,2),draggedEvent=_useState4[0],setDraggedEvent=_useState4[1],_useState5=(0,react__WEBPACK_IMPORTED_MODULE_7__.useState)(!0),_useState6=(0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_15__.A)(_useState5,2),displayDragItemInCell=_useState6[0],setDisplayDragItemInCell=_useState6[1],_useState7=(0,react__WEBPACK_IMPORTED_MODULE_7__.useState)({item1:0,item2:0}),_useState8=(0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_15__.A)(_useState7,2),counters=_useState8[0],setCounters=_useState8[1],eventPropGetter=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(event){return Object.assign({},event.isDraggable?{className:"isDraggable"}:{className:"nonDraggable"})}),[]),handleDragStart=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(event){return setDraggedEvent(event)}),[]),dragFromOutsideItem=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(){return draggedEvent}),[draggedEvent]),customOnDragOver=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(dragEvent){"undroppable"!==draggedEvent&&(console.log("preventDefault"),dragEvent.preventDefault())}),[draggedEvent]),handleDisplayDragItemInCell=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(){return setDisplayDragItemInCell((function(prev){return!prev}))}),[]),moveEvent=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(_ref2){var event=_ref2.event,start=_ref2.start,end=_ref2.end,_ref2$isAllDay=_ref2.isAllDay,droppedOnAllDaySlot=void 0!==_ref2$isAllDay&&_ref2$isAllDay,allDay=event.allDay;!allDay&&droppedOnAllDaySlot&&(event.allDay=!0),setMyEvents((function(prev){var _prev$find,existing=null!==(_prev$find=prev.find((function(ev){return ev.id===event.id})))&&void 0!==_prev$find?_prev$find:{},filtered=prev.filter((function(ev){return ev.id!==event.id}));return[].concat((0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_16__.A)(filtered),[Object.assign({},existing,{start:start,end:end,allDay:allDay})])}))}),[setMyEvents]),newEvent=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(event){setMyEvents((function(prev){var idList=prev.map((function(item){return item.id})),newId=Math.max.apply(Math,(0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_16__.A)(idList))+1;return[].concat((0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_16__.A)(prev),[Object.assign({},event,{id:newId})])}))}),[setMyEvents]),onDropFromOutside=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(_ref3){var start=_ref3.start,end=_ref3.end,isAllDay=_ref3.allDay;if("undroppable"!==draggedEvent){var name=draggedEvent.name,event={title:formatName(name,counters[name]),start:start,end:end,isAllDay:isAllDay};setDraggedEvent(null),setCounters((function(prev){var count=prev[name];return Object.assign({},prev,(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_17__.A)({},name,count+1))})),newEvent(event)}else setDraggedEvent(null)}),[draggedEvent,counters,setDraggedEvent,setCounters,newEvent]),resizeEvent=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(_ref4){var event=_ref4.event,start=_ref4.start,end=_ref4.end;setMyEvents((function(prev){var _prev$find2,existing=null!==(_prev$find2=prev.find((function(ev){return ev.id===event.id})))&&void 0!==_prev$find2?_prev$find2:{},filtered=prev.filter((function(ev){return ev.id!==event.id}));return[].concat((0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_16__.A)(filtered),[Object.assign({},existing,{start:start,end:end})])}))}),[setMyEvents]),defaultDate=(0,react__WEBPACK_IMPORTED_MODULE_7__.useMemo)((function(){return new Date(2015,3,12)}),[]);return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(react__WEBPACK_IMPORTED_MODULE_7__.Fragment,{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_DemoLink_component__WEBPACK_IMPORTED_MODULE_11__.A,{fileName:"dndOutsideSource",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(_resources_Card__WEBPACK_IMPORTED_MODULE_10__.A,{className:"dndOutsideSourceExample",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)("div",{className:"inner",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)("h4",{children:"Outside Drag Sources"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)("p",{children:"Lighter colored events, in the Calendar, have an `isDraggable` key of `false`."}),Object.entries(counters).map((function(_ref5){var _ref6=(0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_15__.A)(_ref5,2),name=_ref6[0],count=_ref6[1];return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)("div",{draggable:"true",onDragStart:function onDragStart(){return handleDragStart({title:formatName(name,count),name:name})},children:formatName(name,count)},name)})),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)("div",{draggable:"true",onDragStart:function onDragStart(){return handleDragStart("undroppable")},children:"Draggable but not for calendar."})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)("div",{children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)("label",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)("input",{type:"checkbox",checked:displayDragItemInCell,onChange:handleDisplayDragItemInCell}),"Display dragged item in cell while dragging over"]})})]})}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)("div",{className:"height600",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(DragAndDropCalendar,{defaultDate:defaultDate,defaultView:react_big_calendar__WEBPACK_IMPORTED_MODULE_9__.Pp.MONTH,dragFromOutsideItem:displayDragItemInCell?dragFromOutsideItem:null,draggableAccessor:"isDraggable",eventPropGetter:eventPropGetter,events:myEvents,localizer:localizer,onDropFromOutside:onDropFromOutside,onDragOver:customOnDragOver,onEventDrop:moveEvent,onEventResize:resizeEvent,onSelectSlot:newEvent,resizable:!0,selectable:!0})})]})}DnDOutsideResource.displayName="DnDOutsideResource",DnDOutsideResource.__docgenInfo={description:"",methods:[],displayName:"DnDOutsideResource",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/dndOutsideSource.js"]={name:"DnDOutsideResource",docgenInfo:DnDOutsideResource.__docgenInfo,path:"stories/demos/exampleCode/dndOutsideSource.js"})},"./stories/demos/exampleCode/resizable.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return Resizable}});var _babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_14__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react__WEBPACK_IMPORTED_MODULE_5__=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/core-js/modules/es.array.find.js"),__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/react/index.js")),_resources_events__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./stories/resources/events.js"),react_big_calendar__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("./src/index.js"),_resources_Card__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__("./stories/resources/Card.js"),_DemoLink_component__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__("./stories/DemoLink.component.js"),_src_addons_dragAndDrop__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__("./src/addons/dragAndDrop/index.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__=(__webpack_require__("./src/addons/dragAndDrop/styles.scss"),__webpack_require__("./node_modules/react/jsx-runtime.js")),DragAndDropCalendar=(0,_src_addons_dragAndDrop__WEBPACK_IMPORTED_MODULE_10__.A)(react_big_calendar__WEBPACK_IMPORTED_MODULE_7__.Vv),adjEvents=_resources_events__WEBPACK_IMPORTED_MODULE_6__.A.map((function(it,ind){return Object.assign({},it,{isResizable:ind%2==0,isDraggable:ind%2==0})}));function Resizable(_ref){var localizer=_ref.localizer,_useState=(0,react__WEBPACK_IMPORTED_MODULE_5__.useState)(adjEvents),_useState2=(0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_13__.A)(_useState,2),myEvents=_useState2[0],setMyEvents=_useState2[1],_useState3=(0,react__WEBPACK_IMPORTED_MODULE_5__.useState)(!0),_useState4=(0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_13__.A)(_useState3,2),resizable=_useState4[0],setResizable=_useState4[1],eventPropGetter=(0,react__WEBPACK_IMPORTED_MODULE_5__.useCallback)((function(event){return Object.assign({},(!resizable||!event.isResizable)&&{className:"nonResizable"})}),[resizable]),toggleResizing=(0,react__WEBPACK_IMPORTED_MODULE_5__.useCallback)((function(){return setResizable((function(prev){return!prev}))}),[]),resizeEvent=(0,react__WEBPACK_IMPORTED_MODULE_5__.useCallback)((function(_ref2){var event=_ref2.event,start=_ref2.start,end=_ref2.end;setMyEvents((function(prev){var _prev$find,existing=null!==(_prev$find=prev.find((function(ev){return ev.id===event.id})))&&void 0!==_prev$find?_prev$find:{},filtered=prev.filter((function(ev){return ev.id!==event.id}));return[].concat((0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_14__.A)(filtered),[Object.assign({},existing,{start:start,end:end})])}))}),[setMyEvents]),defaultDate=(0,react__WEBPACK_IMPORTED_MODULE_5__.useMemo)((function(){return new Date(2015,3,12)}),[]);return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(react__WEBPACK_IMPORTED_MODULE_5__.Fragment,{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_DemoLink_component__WEBPACK_IMPORTED_MODULE_9__.A,{fileName:"dndOutsideSource",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(_resources_Card__WEBPACK_IMPORTED_MODULE_8__.A,{className:"dndOutsideSourceExample",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)("div",{className:"inner",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("h4",{children:"Resizing"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)("p",{children:["Events allowing resizing will show drag handles when you mouse over them.",(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("br",{}),"In this example, lighter colored events are not resizable.",(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("br",{}),"Toggling the checkbox to the right will turn off/on resizing all together."]})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("div",{children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)("label",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("input",{type:"checkbox",checked:resizable,onChange:toggleResizing}),"Allow Event Resizing"]})})]})}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("div",{className:"height600",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(DragAndDropCalendar,{defaultDate:defaultDate,defaultView:react_big_calendar__WEBPACK_IMPORTED_MODULE_7__.Pp.MONTH,draggableAccessor:"isDraggable",eventPropGetter:eventPropGetter,events:myEvents,localizer:localizer,onEventResize:resizeEvent,resizable:resizable,resizableAccessor:resizable?"isResizable":"fakeKey"})})]})}Resizable.displayName="Resizable",Resizable.__docgenInfo={description:"",methods:[],displayName:"Resizable",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/resizable.js"]={name:"Resizable",docgenInfo:Resizable.__docgenInfo,path:"stories/demos/exampleCode/resizable.js"})},"./stories/helpers/createEvents.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";function createEvents(){var idx=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,date=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Date,y=date.getFullYear(),m=date.getMonth(),d=date.getDate();return[[{title:"Event 1",start:new Date(y,m,d,10,30,0,0),end:new Date(y,m,d,13,30,0,0)},{title:"Event 2",start:new Date(y,m,d,10,30,0,0),end:new Date(y,m,d,13,30,0,0)},{title:"Event 3",start:new Date(y,m,d,10,30,0,0),end:new Date(y,m,d,12,30,0,0)},{title:"Event 4",start:new Date(y,m,d,8,30,0,0),end:new Date(y,m,d,18,0,0,0)},{title:"Event 5",start:new Date(y,m,d,15,30,0,0),end:new Date(y,m,d,16,0,0,0)},{title:"Event 6",start:new Date(y,m,d,11,0,0,0),end:new Date(y,m,d,12,0,0,0)},{title:"Event 7",start:new Date(y,m,d,1,0,0,0),end:new Date(y,m,d,2,0,0,0)}],[{title:"Event 1",start:new Date(y,m,d,9,30,0,0),end:new Date(y,m,d,15,30,0,0)},{title:"Event 2",start:new Date(y,m,d,11,0,0,0),end:new Date(y,m,d,13,0,0,0)},{title:"Event 3",start:new Date(y,m,d,9,30,0,0),end:new Date(y,m,d,11,30,0,0)},{title:"Event 4",start:new Date(y,m,d,9,30,0,0),end:new Date(y,m,d,10,30,0,0)},{title:"Event 5",start:new Date(y,m,d,10,0,0,0),end:new Date(y,m,d,11,0,0,0)},{title:"Event 6",start:new Date(y,m,d,10,0,0,0),end:new Date(y,m,d,11,0,0,0)},{title:"Event 7",start:new Date(y,m,d,9,30,0,0),end:new Date(y,m,d,10,30,0,0)},{title:"Event 8",start:new Date(y,m,d,9,30,0,0),end:new Date(y,m,d,10,30,0,0)},{title:"Event 9",start:new Date(y,m,d,9,30,0,0),end:new Date(y,m,d,10,30,0,0)},{title:"Event 10",start:new Date(y,m,d,10,30,0,0),end:new Date(y,m,d,12,30,0,0)},{title:"Event 11",start:new Date(y,m,d,12,0,0,0),end:new Date(y,m,d,13,0,0,0)},{title:"Event 12",start:new Date(y,m,d,12,0,0,0),end:new Date(y,m,d,13,0,0,0)},{title:"Event 13",start:new Date(y,m,d,12,0,0,0),end:new Date(y,m,d,13,0,0,0)},{title:"Event 14",start:new Date(y,m,d,12,0,0,0),end:new Date(y,m,d,13,0,0,0)},{title:"Event 15",start:new Date(y,m,d,6,30,0,0),end:new Date(y,m,d,8,0,0,0)},{title:"Event 16",start:new Date(y,m,d,16,0,0,0),end:new Date(y,m,d,17,30,0,0)}],[{title:"Event 1",start:new Date(y,m,d,2,30,0,0),end:new Date(y,m,d,4,30,0,0)},{title:"Event 2",start:new Date(y,m,d,2,30,0,0),end:new Date(y,m,d,3,30,0,0)},{title:"Event 3",start:new Date(y,m,d,3,0,0,0),end:new Date(y,m,d,4,0,0,0)}],[{title:"Event 1",start:new Date(y,m,d,6,30,0,0),end:new Date(y,m,d,7,0,0,0)},{title:"Event 2",start:new Date(y,m,d,8,0,0,0),end:new Date(y,m,d,17,0,0,0)},{title:"Event 3",start:new Date(y,m,d,8,0,0,0),end:new Date(y,m,d,11,0,0,0)},{title:"Event 4",start:new Date(y,m,d,8,0,0,0),end:new Date(y,m,d,12,0,0,0)},{title:"Event 5",start:new Date(y,m,d,10,0,0,0),end:new Date(y,m,d,13,0,0,0)},{title:"Event 6",start:new Date(y,m,d,10,0,0,0),end:new Date(y,m,d,13,0,0,0)},{title:"Event 7",start:new Date(y,m,d,10,0,0,0),end:new Date(y,m,d,13,0,0,0)}],[{title:"Event 1",start:new Date(y,m,d,19,0,0,0),end:new Date(y,m,d,20,55,0,0)},{title:"Event 2",start:new Date(y,m,d,19,15,0,0),end:new Date(y,m,d,20,15,0,0)},{title:"Event 3",start:new Date(y,m,d,19,45,0,0),end:new Date(y,m,d,22,30,0,0)},{title:"Event 4",start:new Date(y,m,d,20,45,0,0),end:new Date(y,m,d,22,5,0,0)},{title:"Event 5",start:new Date(y,m,d,10,0,0,0),end:new Date(y,m,d,11,0,0,0)},{title:"Event 6",start:new Date(y,m,d,10,30,0,0),end:new Date(y,m,d,11,30,0,0)}]][idx]}__webpack_require__.d(__webpack_exports__,{A:function(){return createEvents}})},"./stories/helpers/index.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{AZ:function(){return events},ES:function(){return resources},GI:function(){return resourceEvents},Mf:function(){return backgroundEvents},Pp:function(){return _src__WEBPACK_IMPORTED_MODULE_5__.Pp},Vv:function(){return Calendar},zm:function(){return DragAndDropCalendar}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var _storybook_addon_actions__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@storybook/addon-actions/dist/esm/index.js"),moment__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/moment/moment.js"),moment__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_2__),_src__WEBPACK_IMPORTED_MODULE_5__=(__webpack_require__("./node_modules/moment-timezone/index.js"),__webpack_require__("./node_modules/react/index.js"),__webpack_require__("./src/index.js")),_src_addons_dragAndDrop__WEBPACK_IMPORTED_MODULE_8__=(__webpack_require__("./src/sass/styles.scss"),__webpack_require__("./src/addons/dragAndDrop/styles.scss"),__webpack_require__("./src/addons/dragAndDrop/index.js")),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__("./node_modules/react/jsx-runtime.js"),localizer=(0,_src__WEBPACK_IMPORTED_MODULE_5__.ye)(moment__WEBPACK_IMPORTED_MODULE_2___default()),Calendar=function Calendar(props){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("div",{style:{height:650},children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_src__WEBPACK_IMPORTED_MODULE_5__.Vv,Object.assign({localizer:localizer},props))})};Calendar.displayName="Calendar";var DragAndDropCalendar=(0,_src_addons_dragAndDrop__WEBPACK_IMPORTED_MODULE_8__.A)(Calendar),DragableCalendar=function DragableCalendar(props){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(DragAndDropCalendar,Object.assign({popup:!0,selectable:!0,localizer:localizer,onEventDrop:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_1__.action)("event dropped"),onSelectEvent:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_1__.action)("event selected"),onSelectSlot:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_1__.action)("slot selected")},props))};DragableCalendar.displayName="DragableCalendar";var events=[{title:"test",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().add(1,"days").subtract(5,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().add(1,"days").subtract(4,"hours").toDate(),allDay:!1},{title:"test larger",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(5,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(10,"hours").toDate(),allDay:!1},{title:"test larger",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(15,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(23,"hours").toDate(),allDay:!1},{title:"test all day",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(1,"day").toDate(),allDay:!0},{title:"test 2 days",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(2,"days").toDate(),allDay:!0},{title:"test multi-day",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().add(3,"days").toDate(),allDay:!1}],backgroundEvents=[{title:"test background event",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(2,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(12,"hours").toDate(),allDay:!1}],resourceEvents=[{title:"event 1",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(1,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(2,"hours").toDate(),allDay:!1,resourceId:1},{title:"event 2",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(3,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(4,"hours").toDate(),allDay:!1,resourceId:[1,2]},{title:"event 3",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(1,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(3,"hours").toDate(),allDay:!1,resourceId:3}],resources=[{id:1,name:"Resource One"},{id:2,name:"Resource Two"},{id:3,name:"Resource Three"}];Calendar.__docgenInfo={description:"",methods:[],displayName:"Calendar"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/helpers/index.js"]={name:"Calendar",docgenInfo:Calendar.__docgenInfo,path:"stories/helpers/index.js"}),DragableCalendar.__docgenInfo={description:"",methods:[],displayName:"DragableCalendar"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/helpers/index.js"]={name:"DragableCalendar",docgenInfo:DragableCalendar.__docgenInfo,path:"stories/helpers/index.js"})},"./stories/props/storyDefaults.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{_:function(){return resourceAccessorStoryArgs},o:function(){return accessorStoryArgs}});var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),moment__WEBPACK_IMPORTED_MODULE_2__=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/moment/moment.js")),moment__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_2__),_src__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./src/index.js"),_resources_events__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./stories/resources/events.js"),_resources_resourceEvents__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./stories/resources/resourceEvents.js"),_excluded=["start","end","title","allDay"],resourceEvents=_resources_resourceEvents__WEBPACK_IMPORTED_MODULE_5__.A.events,resources=_resources_resourceEvents__WEBPACK_IMPORTED_MODULE_5__.A.list,mLocalizer=(0,_src__WEBPACK_IMPORTED_MODULE_3__.ye)(moment__WEBPACK_IMPORTED_MODULE_2___default()),adjusted=_resources_events__WEBPACK_IMPORTED_MODULE_4__.A.map((function(event){var startDate=event.start,endDate=event.end,label=event.title,allDayEvent=event.allDay,other=(0,_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_6__.A)(event,_excluded);return Object.assign({},other,{startDate:startDate,endDate:endDate,label:label,allDayEvent:allDayEvent})})),accessorStoryArgs={allDayAccessor:"allDayEvent",defaultDate:new Date(2015,3,13),endAccessor:"endDate",events:adjusted,localizer:mLocalizer,titleAccessor:"label",tooltipAccessor:"label",startAccessor:"startDate"},adjustedResources=resources.map((function(_ref){return{Id:_ref.id,Title:_ref.title}})),resourceAccessorStoryArgs={defaultDate:new Date(2015,3,4),defaultView:_src__WEBPACK_IMPORTED_MODULE_3__.Pp.DAY,events:resourceEvents,localizer:mLocalizer,resourceIdAccessor:"Id",resources:adjustedResources,resourceTitleAccessor:"Title"}},"./stories/resources/Card.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__("./node_modules/react/index.js");var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/react/jsx-runtime.js");function Card(_ref){var children=_ref.children,className=_ref.className,style=_ref.style;return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)("div",{className:"".concat(className||""," card"),style:style,children:children})}Card.displayName="Card",Card.__docgenInfo={description:"",methods:[],displayName:"Card"},__webpack_exports__.A=Card,"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/resources/Card.js"]={name:"Card",docgenInfo:Card.__docgenInfo,path:"stories/resources/Card.js"})},"./stories/resources/customComponents.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return resources_customComponents}});var defineProperty=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/defineProperty.js"),react=__webpack_require__("./node_modules/react/index.js"),esm=__webpack_require__("./node_modules/@storybook/addon-actions/dist/esm/index.js"),jsx_runtime=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/jsx-runtime.js")),DayColumnWrapper=function DayColumnWrapper(_ref){var children=_ref.children,className=_ref.className,style=_ref.style,innerRef=_ref.innerRef;return(0,jsx_runtime.jsx)("div",{className:className,style:style,ref:innerRef,children:children})};DayColumnWrapper.displayName="DayColumnWrapper";var CustomDayColumnWrapper=react.forwardRef((function(dayColumnWrapperProps,ref){var style={borderColor:dayColumnWrapperProps.resource%2==0?"red":"#fff",borderStyle:"solid",borderWidth:"1px"};return(0,jsx_runtime.jsx)(DayColumnWrapper,Object.assign({},dayColumnWrapperProps,{style:style,innerRef:ref}))})),resources_customComponents=(0,defineProperty.A)((0,defineProperty.A)({dateCellWrapper:function dateCellWrapper(dateCellWrapperProps){var hasAlert=!!dateCellWrapperProps.range&&dateCellWrapperProps.range.some((function(date){return date.getDate()%12==0})),style={display:"flex",flex:1,borderLeft:"1px solid #DDD",backgroundColor:hasAlert?"#f5f5dc":"#fff"};return(0,jsx_runtime.jsxs)("div",{style:style,children:[hasAlert&&(0,jsx_runtime.jsx)("a",{onClick:(0,esm.action)("custom dateCellWrapper component clicked"),children:"Click me"}),dateCellWrapperProps.children]})},dayColumnWrapper:CustomDayColumnWrapper,timeSlotWrapper:function timeSlotWrapper(timeSlotWrapperProps){var hasCustomInfo=!!timeSlotWrapperProps.value&&4===timeSlotWrapperProps.value.getHours(),style={display:"flex",flex:1,backgroundColor:hasCustomInfo?"#f5f5dc":"#fff"};return(0,jsx_runtime.jsxs)("div",{style:style,children:[hasCustomInfo&&"Custom Day Wrapper",timeSlotWrapperProps.children]})},eventWrapper:function eventWrapper(eventWrapperProps){var style={border:"4px solid",borderColor:eventWrapperProps.event.start.getHours()%2==0?"green":"red",padding:"5px"};return(0,jsx_runtime.jsx)("div",{style:style,children:eventWrapperProps.children})}},"timeSlotWrapper",(function timeSlotWrapper(timeSlotWrapperProps){var style=null===timeSlotWrapperProps.resource||0!==timeSlotWrapperProps.value.getMinutes()?{}:{border:"4px solid",backgroundColor:timeSlotWrapperProps.value.getHours()>=8&&timeSlotWrapperProps.value.getHours()<=17?"green":"red",padding:"5px"};return(0,jsx_runtime.jsx)("div",{style:style,children:timeSlotWrapperProps.children})})),"timeGutterWrapper",(function timeGutterWrapper(timeGutterWrapperProps){return(0,jsx_runtime.jsx)("div",{id:"my-custom-time-gutter-wrapper",style:{backgroundColor:"gray"},children:timeGutterWrapperProps.children})}))},"./stories/resources/events.js":function(__unused_webpack_module,__webpack_exports__){"use strict";var now=new Date;__webpack_exports__.A=[{id:1,title:"Long Event",start:new Date(2015,3,7),end:new Date(2015,3,10)},{id:2,title:"DTS STARTS",start:new Date(2016,2,13,0,0,0),end:new Date(2016,2,20,0,0,0)},{id:3,title:"DTS ENDS",start:new Date(2016,10,6,0,0,0),end:new Date(2016,10,13,0,0,0)},{id:4,title:"Some Event",start:new Date(2015,3,9,0,0,0),end:new Date(2015,3,9,0,0,0),allDay:!0},{id:92,title:"Some Other Event",start:new Date(2015,3,9,8,0,0),end:new Date(2015,3,10,11,30,0)},{id:5,title:"Conference",start:new Date(2015,3,11),end:new Date(2015,3,13),desc:"Big conference for important people"},{id:6,title:"Meeting",start:new Date(2015,3,12,10,30,0,0),end:new Date(2015,3,12,12,30,0,0),desc:"Pre-meeting meeting, to prepare for the meeting"},{id:7,title:"Lunch",start:new Date(2015,3,12,12,0,0,0),end:new Date(2015,3,12,13,0,0,0),desc:"Power lunch"},{id:8,title:"Meeting",start:new Date(2015,3,12,14,0,0,0),end:new Date(2015,3,12,15,0,0,0)},{id:9,title:"Happy Hour",start:new Date(2015,3,12,17,0,0,0),end:new Date(2015,3,12,17,30,0,0),desc:"Most important meal of the day"},{id:10,title:"Dinner",start:new Date(2015,3,12,20,0,0,0),end:new Date(2015,3,12,21,0,0,0)},{id:11,title:"Planning Meeting with Paige",start:new Date(2015,3,13,8,0,0),end:new Date(2015,3,13,10,30,0)},{id:11.1,title:"Inconvenient Conference Call",start:new Date(2015,3,13,9,30,0),end:new Date(2015,3,13,12,0,0)},{id:11.2,title:"Project Kickoff - Lou's Shoes",start:new Date(2015,3,13,11,30,0),end:new Date(2015,3,13,14,0,0)},{id:11.3,title:"Quote Follow-up - Tea by Tina",start:new Date(2015,3,13,15,30,0),end:new Date(2015,3,13,16,0,0)},{id:12,title:"Late Night Event",start:new Date(2015,3,17,19,30,0),end:new Date(2015,3,18,2,0,0)},{id:12.5,title:"Late Same Night Event",start:new Date(2015,3,17,19,30,0),end:new Date(2015,3,17,23,30,0)},{id:13,title:"Multi-day Event",start:new Date(2015,3,20,19,30,0),end:new Date(2015,3,22,2,0,0)},{id:14,title:"Today",start:new Date((new Date).setHours((new Date).getHours()-3)),end:new Date((new Date).setHours((new Date).getHours()+3))},{id:15,title:"Point in Time Event",start:now,end:now},{id:16,title:"Video Record",start:new Date(2015,3,14,15,30,0),end:new Date(2015,3,14,19,0,0)},{id:17,title:"Dutch Song Producing",start:new Date(2015,3,14,16,30,0),end:new Date(2015,3,14,20,0,0)},{id:18,title:"Itaewon Meeting",start:new Date(2015,3,14,16,30,0),end:new Date(2015,3,14,17,30,0)},{id:19,title:"Online Coding Test",start:new Date(2015,3,14,17,30,0),end:new Date(2015,3,14,20,30,0)},{id:20,title:"An overlapped Event",start:new Date(2015,3,14,17,0,0),end:new Date(2015,3,14,18,30,0)},{id:21,title:"Phone Interview",start:new Date(2015,3,14,17,0,0),end:new Date(2015,3,14,18,30,0)},{id:22,title:"Cooking Class",start:new Date(2015,3,14,17,30,0),end:new Date(2015,3,14,19,0,0)},{id:23,title:"Go to the gym",start:new Date(2015,3,14,18,30,0),end:new Date(2015,3,14,20,0,0)},{id:24,title:"DST ends on this day (Europe)",start:new Date(2022,9,30,0,0,0),end:new Date(2022,9,30,4,30,0)},{id:25,title:"DST ends on this day (America)",start:new Date(2022,10,6,0,0,0),end:new Date(2022,10,6,4,30,0)},{id:26,title:"DST starts on this day (America)",start:new Date(2023,2,12,0,0,0),end:new Date(2023,2,12,4,30,0)},{id:27,title:"DST starts on this day (Europe)",start:new Date(2023,2,26,0,0,0),end:new Date(2023,2,26,4,30,0)}]},"./stories/resources/resourceEvents.js":function(__unused_webpack_module,__webpack_exports__){"use strict";__webpack_exports__.A={events:[{title:"Rencontre",resourceId:"a",start:new Date(2015,3,2,5,30,0,0),end:new Date(2015,3,2,10,30,0,0)},{title:"Another Meeting",resourceId:"b",start:new Date(2015,3,1,2,30,0,0),end:new Date(2015,3,1,4,30,0,0)},{title:"A",resourceId:"a",start:new Date(2015,3,4,5,30,0,0),end:new Date(2015,3,4,10,30,0,0)},{title:"B",resourceId:"b",start:new Date(2015,3,4,5,30,0,0),end:new Date(2015,3,4,10,30,0,0)},{title:"C",resourceId:"c",start:new Date(2015,3,4,5,30,0,0),end:new Date(2015,3,4,10,30,0,0)}],list:[{id:"a",title:"Room A"},{id:"b",title:"Room B"},{id:"c",title:"Room C"}]}},"./storybook-init-framework-entry.js":function(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__){"use strict";__webpack_require__("./node_modules/@storybook/react/dist/esm/client/index.js")},"./stories/AboutBigCalendar.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_demos_exampleCode_basic_js__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./stories/demos/exampleCode/basic.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"About Big Calendar",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"big-calendar"},"Big Calendar"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_demos_exampleCode_basic_js__WEBPACK_IMPORTED_MODULE_6__.A,{showDemoLink:!1,style:{marginBottom:15},mdxType:"Basic"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h2",{id:"introduction"},"Introduction"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Big Calendar is a full featured Calendar component for managing events and dates. It uses modern ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"flexbox")," for layout, making it super responsive and performant. Leaving most of the layout heavy lifting to the browser."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Here you will find all of the documentation you need for implementing Big Calendar. We explain the basics of implementation, give you clear details and examples of the various props needed, and try to answer your questions on how you can use Big Calendar to implement custom scheduling solutions."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h2",{id:"getting-started"},"Getting Started"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"You can install Big Calendar via ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://yarnpkg.com/en/",target:"_blank",rel:"nofollow noopener noreferrer"},"yarn")," or ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://www.npmjs.com/",target:"_blank",rel:"nofollow noopener noreferrer"},"npm"),":"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"yarn:")," ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"yarn add react-big-calendar")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"npm:")," ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"npm install --save react-big-calendar")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"Note"),": Requires Node >= 18"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"When you include Big Calendar in your interface, you will need the core styles. We provide a precompiled style sheet (",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"react-big-calendar/lib/css/react-big-calendar.css"),") for you, or you can directly import the SASS into your implementation. For more information on this, see the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"guides-custom-styling",mdxType:"LinkTo"},"Custom Styling")," guide for more details."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Also make sure that your calendar's container element has a height, or the calendar won't be visible (see why below)."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Date internationalization and localization is ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"hard")," and Big Calendar doesn't even attempt to\nsolve that problem. Instead you can use one of the many excellent solutions already\nout there, via adapters called ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"localizers"),". Big Calendar comes with three localizers for use\nwith ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://github.com/jquery/globalize",target:"_blank",rel:"nofollow noopener noreferrer"},"Globalize.js"),", ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"http://momentjs.com/",target:"_blank",rel:"nofollow noopener noreferrer"},"Moment.js")," or ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://moment.github.io/luxon",target:"_blank",rel:"nofollow noopener noreferrer"},"Luxon"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Choose the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"localizer")," that best suits your needs, or write your own. Whatever you do, you'll need to set it up before you can use the calendar (you only need to set it up once)."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-jsx"},'import { Calendar, momentLocalizer } from \'react-big-calendar\'\nimport moment from \'moment\'\n\n// Setup the localizer by providing the moment (or globalize, or Luxon) Object\n// to the correct localizer.\nconst localizer = momentLocalizer(moment) // or globalizeLocalizer\n\nconst MyCalendar = (props) => (\n
\n \n
\n)\n')),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Once you've configured a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"localizer"),", the Calendar is ready to accept ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"dateFormat")," props. These props determine how dates will be displayed throughout the component and are specific to the localizer of your choice. For instance if you are using the Moment localizer, then any ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"http://momentjs.com/docs/#/displaying/format/",target:"_blank",rel:"nofollow noopener noreferrer"},"Moment format pattern")," is valid!"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"One thing to note is that, Big Calendar treats event start/end dates as an ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"exclusive")," range which means that the event spans up to, but not including, the end date. In the case of displaying events on whole days, end dates are rounded ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"up")," to the next day. So an event ending on ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Apr 8th 12:00:00 am")," will not appear on the 8th, whereas one ending\non ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Apr 8th 12:01:00 am")," will. If you want ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"inclusive")," ranges consider providing a function ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"end-accessor",mdxType:"LinkTo"},"endAccessor")," that returns the end date + 1 day for those events that end at midnight."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h2",{id:"next-steps"},"Next Steps"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"We have provided a number of ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"about-our-examples",mdxType:"LinkTo"},"Examples")," within this documentation, including individual examples of each and every ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props-full-prop-list",mdxType:"LinkTo"},"prop"),", as well as the Drag and Drop ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-introduction",mdxType:"LinkTo"},"Addon"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The documentation 'Canvas' tab, at the top of the page, will show you the component example for that specific piece of documentation. While in the 'Canvas' you may also have interactive controls in the 'Controls' panel, allowing you to play with a prop's different values."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The 'Docs' tab will contain additional information, special case scenarios, and the rendered example. Most of these examples contain a 'Show code' button (bottom right), or even a special link at the top to 'View Example Source Code'."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h2",{id:"join-the-community"},"Join the Community"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Help us improve Big Calendar! Join us on ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://join.slack.com/t/bigcalendar/shared_invite/zt-1ml1j99af-qIvqOfosMog1W7WxM0~j2Q",target:"_blank",rel:"nofollow noopener noreferrer"},"Slack"),"."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"About Big Calendar",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/AboutExamples.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"About Our Examples",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"about-our-examples"},"About Our Examples"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"We have attempted to provide best practice code examples for using Big Calendar."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Big Calendar is... well, "big". It has dozens of props, and can be configured in a lot of different ways to meet a wide number of use cases. It also has quite a number of subcomponents, and provides the ability to override most all of them.'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Because of this, it's important to think about how you initialize your properties as you pass them to Big Calendar. Let's look at a small example:"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// don't do this\n\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// do this\nconst {defaultDate} = useMemo(() => ({\n defaultDate: new Date(2015, 3, 13)\n}), [])\n//...\n\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Instantiating a new JS ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Date")," creates a new object. React will see this 'new' prop and re-render every subcomponent that relies upon ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"defaultDate"),", even if (technically) it did not change."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// don't do this\n setView(newView)} {...otherProps} />\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// and don't do this\nconst onView = (newView) => setView(newView)\n\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// do this\nconst onView = useCallback((newView) => setView(newView), [setView])\n\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"If a prop takes an ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Object"),", an ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Array"),", a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Date"),", a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Function"),", or any other non-simple variable type, it is always a good idea to memoize those values prior to passing them as props. Chances are that some prop or state change will trigger a re-render of your Calendar. How well you manage your props will affect overall render performance."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"About Our Examples",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/addons/addOns.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Addons/Introduction",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"addons"},"Addons"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'An "Addon" is some bit of code to enhance and expand the functionality of Big Calendar. These are typically provided by someone within the Big Calendar developer community.'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"In this section we document those Addons that we have included directly in the Big Calendar codebase. If you have additional Add-ons that you have created for Big Calendar please let us know and we may link it here in the documentation."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-introduction",mdxType:"LinkTo"},"Drag and Drop"))))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Addons/Introduction",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/addons/dragAndDrop/Introduction.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Addons/Drag and Drop/Introduction",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"drag-and-drop"},"Drag and Drop"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Creates a higher-order component (HOC) supporting drag & drop for moving and/or resizing of events:"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"import { Calendar } from 'react-big-calendar'\nimport withDragAndDrop from 'react-big-calendar/lib/addons/dragAndDrop'\nimport 'react-big-calendar/lib/addons/dragAndDrop/styles.css'\n\nconst DnDCalendar = withDragAndDrop(Calendar)\n\n/* ... */\n\nreturn (\n true}\n />\n)\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Set ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"resizable",mdxType:"LinkTo"},"resizable")," to false in your calendar if you don't want events to be resizable.\n",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"resizable")," is set to true by default."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The HOC adds ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-event-drop",mdxType:"LinkTo"},"onEventDrop"),", ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-event-resize",mdxType:"LinkTo"},"onEventResize"),", and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drag-start",mdxType:"LinkTo"},"onDragStart")," callback properties if the events are\nmoved or resized. These callbacks are called with these signatures:"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"function onEventDrop({event, start, end, allDay}) {...}\nfunction onEventResize({event, start, end, allDay}) {...}\nfunction onDragStart({event}) {...}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Moving and resizing of events has some subtlety which one should be aware of:"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",{parentName:"li"},'In some situations, non-allDay events are displayed in "row" format where they\nare rendered horizontally. This is the case for ALL events in a month view. It\nis also occurs with multi-day events in a day or week view (unless ',(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"show-multi-day-times",mdxType:"LinkTo"},"showMultiDayTimes"),"\nis set).")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",{parentName:"li"},"When dropping or resizing non-allDay events into a the header area or when\nresizing them horizontally because they are displayed in row format, their\ntimes are preserved, only their date is changed.")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",{parentName:"li"},"If you care about these corner cases, you can examine the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"allDay")," param supplied\nin the callback to determine how the user dropped or resized the event."))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Additionally, this HOC adds the callback props ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drop-from-outside",mdxType:"LinkTo"},"onDropFromOutside")," and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drag-over",mdxType:"LinkTo"},"onDragOver"),":"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",{parentName:"li"},"By default, the calendar will not respond to outside draggable items being dropped\nonto it. However, if ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drop-from-outside",mdxType:"LinkTo"},"onDropFromOutside")," callback is passed, then when draggable\nDOM elements are dropped on the calendar, the callback will fire, receiving an\nobject with start and end times, and an allDay boolean.")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",{parentName:"li"},"If ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drop-from-outside",mdxType:"LinkTo"},"onDropFromOutside")," is passed, but ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drag-over",mdxType:"LinkTo"},"onDragOver")," is not, any draggable event will be\ndroppable onto the calendar by default. On the other hand, if an ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onDragOver")," callback\n",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"is")," passed, then it can discriminate as to whether a draggable item is droppable on the\ncalendar. To designate a draggable item as droppable, call ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"event.preventDefault"),"\ninside ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onDragOver"),". If ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"event.preventDefault")," is not called in the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onDragOver"),"\ncallback, then the draggable item will not be droppable on the calendar."))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"function onDropFromOutside({ start, end, allDay }) {...}\nfunction onDragOver(DragEvent: SyntheticEvent) {...}\n")))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Addons/Drag and Drop/Introduction",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/addons/dragAndDrop/props/API.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Addons/Drag and Drop/props/Full Prop List",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"all-drag-and-drops-props"},"All Drag and Drops Props"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"oneventdrop"},"onEventDrop"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function ({ event, start, end, allDay }) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-event-drop",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"A callback fired when user drops an item from one slot to another from within the Calendar. Developers will typically use this method to update an item's ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"start")," and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"end")," in ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"ondragstart"},"onDragStart"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function ({ event, action, direction }) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drag-start",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"A callback fired when user begins to drag an event."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"ondropfromoutside"},"onDropFromOutside"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function ({ start, end, allDay }) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drop-from-outside",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"A callback fired when user drops an item onto the Calendar from outside of the Calendar. Developers will typically use this method to add new items to the Calendar's ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Important:")," The callback does ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"not")," receive the element being dropped. It only receives the details of the slot an element was dropped on."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"dragfromoutsideitem"},"dragFromOutsideItem"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function () => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"drag-from-outside-item",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"A callback to get a temporary ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"event")," to display in a slot in the process of dragging from outside. This is not required for Drag and Drop to function, but provides a nice visual cue to the user when dragging in an item from outside of the Calendar."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Tip: Toggle the checkbox, in the example, and drag an outside item in. Do this from both checkbox states to see the difference in effect."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"ondragover"},"onDragOver"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (dragEvent: SyntheticEvent) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drag-over",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"If an ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onDragOver")," callback ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"is")," passed, then it can discriminate as to whether a draggable item is droppable on the calendar. To designate a draggable item as droppable, call ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"event.preventDefault")," inside ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onDragOver"),". If ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"event.preventDefault")," is not called in the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onDragOver")," callback, then the draggable item will not be droppable on the calendar."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"draggableaccessor"},"draggableAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string|function (event) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"() => true")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"draggable-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"When used, can determine whether an 'event' is draggable"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"resizable"},"resizable"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"true")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"resizable",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Determines if events may be resized on the Calendar. Used in conjunction with ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-event-resize",mdxType:"LinkTo"},"onEventResize"),". When used with the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"resizable-accessor",mdxType:"LinkTo"},"resizableAccessor")," the developer has even greater control."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note:")," ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"resizable")," events must also be draggable. You cannot resize an event with a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"draggable-accessor",mdxType:"LinkTo"},"draggableAccessor")," prop of ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"false"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"oneventresize"},"onEventResize"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function ({ event, start, end }) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-event-resize",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"A callback fired when user resizes an event. Developers will typically use this method to update an item's ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"start")," and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"end")," in ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"resizable",mdxType:"LinkTo"},"resizable")," prop must be ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"true")," (the default) to use the method."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note:")," ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"resizable")," events must also be draggable. You cannot resize an event with a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"draggable-accessor",mdxType:"LinkTo"},"draggableAccessor")," prop of ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"false"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"resizableaccessor"},"resizableAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string|function (event) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"() => true")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"resizable-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Determines if an event is resizable."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note:")," ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"resizable")," events must also be draggable. You cannot resize an event with a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"draggable-accessor",mdxType:"LinkTo"},"draggableAccessor")," prop of ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"false"),"."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Addons/Drag and Drop/props/Full Prop List",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/demos/dragAndDrop.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Examples/Drag and Drop",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"drag-and-drop"},"Drag and Drop"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-introduction",mdxType:"LinkTo"},"Drag and Drop Examples")," have been moved into the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-introduction",mdxType:"LinkTo"},"AddOns")," section of the documentation"))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Examples/Drag and Drop",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/guides/CustomStyling.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Guides/Custom Styling",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"custom-styling"},"Custom Styling"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Out of the box, you can include the compiled CSS files and be up and running. But, sometimes, you may want to style Big Calendar to match your application styling. For this reason, SASS files are included with Big Calendar."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-sass"},"@import 'react-big-calendar/lib/sass/styles';\n@import 'react-big-calendar/lib/addons/dragAndDrop/styles'; // if using DnD\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"SASS implementation provides a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"variables")," file containing color and sizing variables that you can update to fit your application. Note: Changing and/or overriding styles can cause rendering issues with your Big Calendar. Carefully test each change accordingly."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Guides/Custom Styling",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/guides/CustomView.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Guides/Creating Custom Views",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"creating-a-custom-view"},"Creating A Custom View"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"It is possible to override an existing Calendar ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view"),", or even create a new ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")," all together, by adhering to a specific interface."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"examples",story:"example-9",mdxType:"LinkTo"},"View An Example"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"First build your custom ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")," component. This could be based off an existing component, or something completely custom."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"import React, {useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport { Navigate } from 'react-big-calendar'\nimport TimeGrid from 'react-big-calendar/lib/TimeGrid'\n\nexport default function CustomWeekView({\n date,\n localizer,\n max = localizer.endOf(new Date(), 'day'),\n min = localizer.startOf(new Date(), 'day'),\n scrollToTime = localizer.startOf(new Date(), 'day'),\n ...props\n}) {\n const currRange = useMemo(\n () => CustomWeekView.range(date, { localizer }),\n [date, localizer]\n )\n\n return (\n \n )\n}\n\nCustomWeekView.propTypes = {\n date: PropTypes.instanceOf(Date).isRequired,\n localizer: PropTypes.object,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n scrollToTime: PropTypes.instanceOf(Date),\n}\n\nCustomWeekView.range = (date, { localizer }) => {\n const start = date\n const end = localizer.add(start, 2, 'day')\n\n let current = start\n const range = []\n\n while (localizer.lte(current, end, 'day')) {\n range.push(current)\n current = localizer.add(current, 1, 'day')\n }\n\n return range\n}\n\nCustomWeekView.navigate = (date, action, { localizer }) => {\n switch (action) {\n case Navigate.PREVIOUS:\n return localizer.add(date, -3, 'day')\n\n case Navigate.NEXT:\n return localizer.add(date, 3, 'day')\n\n default:\n return date\n }\n}\n\nCustomWeekView.title = (date, { localizer }) => {\n const [start, ...rest] = CustomWeekView.range(date, { localizer })\n return localizer.format({ start, end: rest.pop() }, 'dayRangeHeaderFormat')\n}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Pay special attention to the additional static methods attached to your component. As static methods, they have no concept of ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"this"),", and have specific arguments that will be passed into them."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"interface View {\n static title(date: Date, { formats: DateFormat[], culture: string?, ...props }): string\n static navigate(date: Date, action: 'PREV' | 'NEXT' | 'DATE'): Date\n static range?(date: Date, { localizer: DateLocalizer, ...props }): array\n}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"To implement your custom ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view"),", include it in your ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"views",mdxType:"LinkTo"},"views")," prop."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"import CustomWeekView from './CustomWeekView'\n//...\nconst {views, ...otherProps} = useMemo(() => ({\n views: {\n month: true,\n week: CustomWeekView,\n day: true\n },\n // ... other props\n}), [])\n//...\n\n")))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Guides/Creating Custom Views",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/guides/Dates.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Guides/Understanding Dates",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"understanding-dates"},"Understanding Dates"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Big Calendar is all about dates and times. Probably one of the easiest things that beginners miss, when first implementing Big Calendar, is that we ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"require")," true JS ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date",target:"_blank",rel:"nofollow noopener noreferrer"},"Date")," objects in our ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"Full Prop List",mdxType:"LinkTo"},"props")," and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"event")," definitions."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"It is ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"up to the developer")," to handle translating date/time values ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"to and from JS ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"strong"},"Date")," format"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"What does this mean?"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// will cause errors\nconst defaultDate = useMemo(() => '2015-04-12T13:45:00-05:00', [])\n\n// will work as expected\nconst defaultDate = useMemo(() => new Date('2015-04-12T13:45:00-05:00'), [])\n\n// will never display in the Calendar\nconst events = [\n {\n title: 'My Event'\n start: '2015-04-12T13:45:00-05:00',\n end: '2015-04-12T14:00:00-05:00'\n }\n]\n\n// what you must have is this\nconst events = [\n {\n title: 'My Event'\n start: new Date('2015-04-12T13:45:00-05:00'),\n end: new Date('2015-04-12T14:00:00-05:00')\n }\n]\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The other thing to remember is that the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Date"),"s you provide to the Calendar will, by default, be displayed in the browser's native local timezone and culture, regardless of any offsets. This is how JS ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Date"),"s work in browsers today. If you need to display dates and times in a specific timezone, other than the browser native, then you should review our ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"guides-timezones",mdxType:"LinkTo"},"Timezones Guide")," on using a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"localiizer",mdxType:"LinkTo"},"localizer")," that supports timezone conversions."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Side Note:")," Storing your date/time values in UTC (Zulu) date format (YYYY-MM-DDTHH:mm:ssZ) will make these types of transformations much easier to work with."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Guides/Understanding Dates",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/guides/Timezones.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Guides/Timezones",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"dealing-with-time-zones"},"Dealing With Time Zones"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Time Zones are... ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"hard"),", and while changing the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"culture")," will help with internationalization and localization, it does not adjust the dates for a specific time zone. Javascript Date objects don't really support time zone switching natively, and date math gets ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"very")," complicated. Thankfully Big Calendar does support ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"moment")," as a localizer, so if you use ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://momentjs.com/timezone/",target:"_blank",rel:"nofollow noopener noreferrer"},"moment-timezone")," you can get your events to display relevant to a time zone other than the browser native."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"To change your events to display as a specific time zone, you must ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://momentjs.com/timezone/docs/#/using-timezones/default-timezone/",target:"_blank",rel:"nofollow noopener noreferrer"},"change moment's default timezone")," for all dates, ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"using an IANA time zone"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-jsx"},"import { Calendar, momentLocalizer } from 'react-big-calendar'\nimport moment from 'moment'\nimport 'moment-timezone' // or 'moment-timezone/builds/moment-timezone-with-data[-datarange].js'. See their docs\n\n// Set the IANA time zone you want to use\nmoment.tz.setDefault('Europe/Paris')\n\n// Setup the localizer by providing the moment Object\n// to the correct localizer.\nconst localizer = momentLocalizer(moment) // or globalizeLocalizer\n\nconst MyCalendar = (props) => (\n
\n \n
\n)\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"momentLocalizer")," will now handle all dates and date math as if the date is in the timezone you specified. It is important to note that ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://momentjs.com/timezone/docs/#/using-timezones/default-timezone/",target:"_blank",rel:"nofollow noopener noreferrer"},"changing moment's default timezone")," affects all dates, created by moment, from that point forward, so you may want to reset the default when your component unmounts. And, if switching timezones 'on-the-fly', you want to update your ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer")," and any Date based props (min, max, getNow, etc) at the same time."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note:")," The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"luxonLocalizer")," and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"dayjsLocalizer")," operate in a similar fashion. View their respective demos and source for examples of their usage."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Guides/Timezones",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/guides/localizer.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Guides/Localizers",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"what-is-a-localizer"},"What is a Localizer?"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"You have probably noticed that your Big Calendar implementations require a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"localizer")," prop. The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer")," is needed for applying formatting and culture (i18n) to your date displays throughout the Calendar."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Now the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer")," also handles all internal date math, utilizing the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer")," you provide. This is how the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://momentjs.com/",target:"_blank",rel:"nofollow noopener noreferrer"},"moment")," and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://moment.github.io/luxon/#/",target:"_blank",rel:"nofollow noopener noreferrer"},"Luxon")," localizers handle timezones, and how all of them handle things like Daylight Savings Time. Most components receive the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer")," as a prop, meaning that your override components can also take advantage of these features.\nEach ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer"),", when created, creates an instance of ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"DateLocalizer")," class, and each one has a normalized group of functions and props available for manipulating dates."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"add(date:Date, adder:number, unit:string) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"ceil(date:Date, unit:string) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"continuesAfter(start:Date, end:Date, last:Date) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"continuesPrior(start:Date, first:Date) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"diff(a:Date, b:Date, unit:string) => number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"endOf(date:Date, unit:string) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"eq(a:Date, b:Date, unit:string) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"firstVisibleDay(date:Date) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"format(value:Date, format:string) => string"),","),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"formats:object")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"getDstOffset(start:Date, end:Date) => number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"getMinutesFromMidnight(start:Date) => number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"getSlotDate(dt:Date, minutesFromMidnight:number, offset:number) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"getTimezoneOffset(date:Date) => number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"getTotalMin(start:Date, end:Date) => number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"gt(a:Date, b:Date, unit:string) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"gte(a:Date, b:Date, unit:string) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"inEventRange({event: {start:Date, end:Date}, range: {start:Date, end:Date}}) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"inRange(day:Date, start:Date, end:Date, unit:string) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"isSameDate(date1:Date, date2:Date) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"lastVisibleDay(date:Date) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"lt(a:Date, b:Date, unit:string) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"lte(a:Date, b:Date, unit:string) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"max(dateA:Date, dateB:Date) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"merge(date:Date, time:Date) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"min(dateA:Date, dateB:Date) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"minutes(date:Date) => number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"neq(a:Date, b:Date, unit:string) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"range(start:Date, end:Date, unit:string) => Array[Date]")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"sortEvents({evtA: {start:Date, end:Date, allDay:boolean}, evtB: {start:Date, end:Date, allDay:boolean}}) => number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"startAndEndAreDateOnly(start:Date, end:Date) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"startOf(date:Date, unit:string) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"startOfWeek(culture) => number")," (alias of ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"firstOfWeek()"),")"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"visibleDays(date:Date) => Array[Date]"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Many of these methods are used by Big Calendar in the background for determining layout. You can create your own custom ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer"),", to utilize some other library, as long as they implement these methods. The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"DateLocalizer")," class defaults these methods to methods from the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://www.npmjs.com/package/date-arithmetic",target:"_blank",rel:"nofollow noopener noreferrer"},"date-arithmetic")," package."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"For examples of building your own custom ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer")," take a look at the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://github.com/jquense/react-big-calendar/blob/master/src/localizers",target:"_blank",rel:"nofollow noopener noreferrer"},"currently implemented localizers"),". If you do build your own ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer"),", please consider publishing it to ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://npmjs.org",target:"_blank",rel:"nofollow noopener noreferrer"},"npm"),". We suggest a common naming convention like ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"rbc-addon-mylocalizername"),"."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Guides/Localizers",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/props/API.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"props/Full Prop List",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"all-props"},"All Props"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"localizer"},"localizer"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"instanceOf(DateLocalizer)")," ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"li"},"required")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The localizer used for formatting dates and times according to the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"format")," and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"culture")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// When using `Globalize`\nimport { globalizeLocalizer } from 'react-big-calendar'\nimport globalize from 'globalize'\n\nconst localizer = globalizeLocalizer(globalize)\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// When using `moment`\nimport { momentLocalizer } from 'react-big-calendar'\nimport moment from 'moment'\n// and, for optional time zone support\nimport 'moment-timezone'\n\nmoment.tz.setDefault('America/Los_Angeles')\n// end optional time zone support\n\nconst localizer = momentLocalizer(moment)\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// When using `Luxon`\nimport { luxonLocalizer } from 'react-big-calendar'\nimport { DateTime, Settings } from 'luxon'\n// only use `Settings` if you require optional time zone support\nSettings.defaultZone = 'America/Los_Angeles'\n// end optional time zone support\n\n// Luxon uses the Intl API, which currently does not contain `weekInfo`\n// to determine which weekday is the start of the week by `culture`.\n// The `luxonLocalizer` defaults this to Sunday, which differs from\n// the Luxon default of Monday. The localizer requires this option\n// to change the display, and the date math for determining the\n// start of a week. Luxon uses non-zero based values for `weekday`.\nconst localizer = luxonLocalizer(DateTime, { firstDayOfWeek: 7 })\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"elementprops"},"elementProps"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"object")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"element-props",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Props passed to main calendar ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"
"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note:")," Will not pass down ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"className"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"getnow"},"getNow"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function () => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"() => new Date()")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"get-now",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Determines the current date/time which is highlighted in the views."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The value affects which day is shaded and which time is shown as the current time. It also affects the date used by the Today button in the toolbar."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Providing a value here can be useful when you are implementing time zones using the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"start-accessor",mdxType:"LinkTo"},"startAccessor")," and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"end-accessor",mdxType:"LinkTo"},"endAccessor")," properties."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"defaultdate"},"defaultDate"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"new Date()")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"default-date",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Sets the initial ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"date")," value in your calendar when you don't want it to be 'today', when not using ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"get-now",mdxType:"LinkTo"},"getNow"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"date"},"date"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"new Date()")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"controlled by: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-navigate",mdxType:"LinkTo"},"onNavigate")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"date",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The current date value of the calendar. Determines the visible view range.\nIf ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"date")," is omitted then the result of ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"get-now",mdxType:"LinkTo"},"getNow")," is used; otherwise the\ncurrent date is used."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"This is a controllable prop, when using ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-navigate",mdxType:"LinkTo"},"onNavigate")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"onnavigate"},"onNavigate"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"controls: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"date",mdxType:"LinkTo"},"date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"example: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"(newDate) => setDate(newDate)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-navigate",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"date")," value changes. When included it is used to 'control' the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"date",mdxType:"LinkTo"},"date")," prop value."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"defaultview"},"defaultView"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"Views.MONTH (month|week|work_week|day|agenda)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"default-view",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The initial ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")," set for your calendar when you don't want it to be the default ('month')."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"view"},"view"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"Views.MONTH (month|week|work_week|day|agenda)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"controlled by: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-view",mdxType:"LinkTo"},"onView")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"view",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The current view value of the calendar. Determines the visible 'view'.\nIf ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")," is omitted then it is defaulted to 'month'."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"This is a controllable prop, when using ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-view",mdxType:"LinkTo"},"onView")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"onview"},"onView"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: 'function'"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"controls: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"view",mdxType:"LinkTo"},"view")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"example: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"(newView) => setView(newView)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-view",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")," value changes. When included it is used to 'control' the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"view",mdxType:"LinkTo"},"view")," prop value."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"events"},"events"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"arrayOf(Event)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"[]")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"events",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"An array of event objects to display on the calendar. Event objects can be any shape, as long as the Calendar knows how to retrieve the following details of the event:"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"start time"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"end time"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"title"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},'whether its an "all day" event or not'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"any resource the event may be related to")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Each of these properties can be customized or generated dynamically by setting the various "accessor" props. Without any configuration the default event should look like:'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"Event {\n title: string,\n start: Date,\n end: Date,\n allDay?: boolean\n resource?: any,\n}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"backgroundevents"},"backgroundEvents"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"arrayOf(BackgroundEvent)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"[]")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"background-events",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"An array of background event objects to display on the calendar. Background Events behave similarly to ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events")," but are not factored into Event overlap logic, allowing them to sit behind any Events that may occur during the same period. Background Events objects can be any shape, as long as the Calendar knows how to retrieve the following details of the event:"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"start time"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"end time")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Each of these properties can be customized or generated dynamically by setting the various "accessor" props. Without any configuration the default event should look like:'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"BackgroundEvent {\n start: Date,\n end: Date,\n}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"titleaccessor"},"titleAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: 'title'"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"title-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Accessor for the event title, used to display event information. Should resolve to a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"renderable")," value."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"tooltipaccessor"},"tooltipAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: 'title'"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"tooltip-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Accessor for the event tooltip, used to display event information. Should resolve to a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"renderable")," value. Removes the tooltip if null."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"startaccessor"},"startAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: 'start'"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"start-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The start date/time of the event. Must resolve to a JavaScript ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Date")," object."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"endaccessor"},"endAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: 'end'"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"end-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The end date/time of the event. Must resolve to a JavaScript ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Date")," object."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"alldayaccessor"},"allDayAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: 'allDay'"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"all-day-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Determines whether the event should be considered an "all day" event and ignore time. Must resolve to a ',(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"boolean")," value."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"alldaymaxrows"},"allDayMaxRows"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"Infinity")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"all-day-max-rows",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Determines a maximum amount of rows of events to display in the all day section for Week and Day views, will display ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"showMore")," button if events excede this number."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"resources"},"resources"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"arrayOf(Resource)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"resources",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"An array of resource objects that map events to a specific resource. Resource objects, like events, can be any shape or have any properties, but should be uniquly identifiable via the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"resource-id-accessor",mdxType:"LinkTo"},"resourceIdAccessor"),', as well as a "title" or name as provided by the ',(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"resource-title-accessor",mdxType:"LinkTo"},"resourceTitleAccessor")," prop."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"Resource {\n id: string | number, // must be unique\n title: string\n}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"resourceidaccessor"},"resourceIdAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string | function (resource: Object) => string | number // must be unique")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"resource-id-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Provides a unique identifier, or an array of unique identifiers, for each resource in the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"resources",mdxType:"LinkTo"},"resources")," array"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"resourcetitleaccessor"},"resourceTitleAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string | function (resource: Object) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"resource-title-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Provides a human readable name for the resource object, used in headers."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"ondrilldown"},"onDrillDown"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date) => // do something")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-drill-down",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when date header, or the truncated events links are clicked. When included, it will override the default drilldown behavior."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"onrangechange"},"onRangeChange"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (range: Array [1|7] | Object {start: Date, end: Date}) => // do something")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-range-change",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when the visible date range changes. Returns an Array of dates or an object with start and end dates for BUILTIN views."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Custom views may return something different."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"Note:")," This method is not fired on initial render. Only as the user navigates through Big Calendar."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"selectable"},"selectable"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"boolean | 'ignoreEvents'")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Allows mouse selection of ranges of dates/times."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The 'ignoreEvents' option prevents selection code from running when a drag begins over an event. Useful when you want custom event click or drag logic."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"Things To Know:")," When you 'doubleClick', both 'click' and 'doubleClick' will fire. Click on the 'showCode' button, at the bottom of the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-select-slot",mdxType:"LinkTo"},"example"),", to see how you can get around this issue."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h2",{id:"onselectslot"},"onSelectSlot"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (Object: slotInfo) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"requires: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-select-slot",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"A callback fired when a date selection is made. Only fires when ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")," is true."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"Things To Know:")," When you 'doubleClick', both 'click' and 'doubleClick' will fire. Click on the 'showCode' button, at the bottom of the example below, to see how you can get around this issue."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},";(slotInfo: {\n start: Date,\n end: Date,\n slots: Array,\n action: 'select' | 'click' | 'doubleClick',\n bounds: ?{\n // For \"select\" action\n x: number,\n y: number,\n top: number,\n right: number,\n left: number,\n bottom: number,\n },\n box: ?{\n // For \"click\" or \"doubleClick\" actions\n clientX: number,\n clientY: number,\n x: number,\n y: number,\n },\n}) => any\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h4",{id:"whats-the-difference-from-onselecting"},"What's The Difference from onSelecting?"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"How is this different from ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-selecting",mdxType:"LinkTo"},"onSelecting"),"? That is a very good question. The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onSelecting")," method is only available in the Time views (",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"week"),", ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"work week"),", ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"day"),"), whereas ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onSelectSlot")," is also available in the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"month")," view. The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onSelecting")," method allows you to 'cancel' your selection by returning ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"false"),". The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onSelectSlot")," method returns a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"slotInfo")," object, containing a lot of additional information about your selection."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"onselectevent"},"onSelectEvent"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (event: Object) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-select-event",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when a calendar event is selected (i.e.: an ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onClick")," handler)."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note:")," The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")," prop is ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"not")," required for this prop to function."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Important:")," The event passed into the function is the Calendar Event, not the SyntheticEvent expected by most click handlers."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"ondoubleclickevent"},"onDoubleClickEvent"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (event: Object) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-double-click-event",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when a calendar event is clicked twice. (i.e.: an ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onDoubleClick")," handler)."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note:")," The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")," prop is ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"not")," required for this prop to function."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Important:")," The event passed into the function is the Calendar Event, not the SyntheticEvent expected by most click handlers."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"onselecting"},"onSelecting"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"(range: Object { start: Date, end: Date, resourceId: null|string|number }) => ?boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"requires: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-selecting",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when dragging a selection in the Time views. Only fires when ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")," is true."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Returning ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"false")," from the handler will prevent a selection."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h4",{id:"whats-the-difference-from-onselectslot"},"What's The Difference from onSelectSlot?"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"How is this different from ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-select-slot",mdxType:"LinkTo"},"onSelectSlot"),"? That is a very good question. The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onSelecting")," method is only available in the Time views (",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"week"),", ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"work week"),", ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"day"),"), whereas ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onSelectSlot")," is also available in the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"month")," view. The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onSelecting")," method allows you to 'cancel' your selection by returning ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"false"),". The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onSelectSlot")," method returns a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"slotInfo")," object, containing a lot of additional information about your selection."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"onshowmore"},"onShowMore"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (events: Array[event: Object], date: Date) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-show-more",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when a +{count} more is clicked. Receives ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"all")," of the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"events")," for the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"date")," on which it was selected."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"onkeypressevent"},"onKeyPressEvent"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (event: Object, e: SyntheticEvent) => void")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-key-press-event",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when a focused calendar event receives a key press."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"showallevents"},"showAllEvents"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"false")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"show-all-events",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Displays all events on the month view instead of having some hidden behind +{count} more. This will cause the rows in the month view to be scrollable if the number of events exceed the height of the row."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h4",{id:"selected"},"selected"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"Event: Object")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"selected",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The selected event, if any. By default, Big Calendar 'controls' the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"selected")," (highlighted) event in the display. You can use this prop to control which event is highlighted. The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"selected")," event must be a object reference to the event within the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events")," array."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Often used in conjunction with ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-select-event",mdxType:"LinkTo"},"OnSelectEvent")," and/or ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-double-click-event",mdxType:"LinkTo"},"onDoubleClickEvent"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"views"},"views"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"Views ('month'|'week'|'work_week'|'day'|'agenda')")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"[views.MONTH, views.WEEK, views.DAY, views.AGENDA]")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"cal-views",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"An array of built-in view names to allow the calendar to display. accepts either an array of builtin view names,"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"views={['month', 'day', 'agenda']}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"or an object hash of the view name and the component (or boolean for builtin)."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"views={{\n month: true,\n week: false,\n myweek: WorkWeekViewComponent,\n}}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Custom views can be any React component, that implements the following interface:"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"interface View {\n static title(date: Date, { formats: DateFormat[], culture: string?, ...props }): string\n static navigate(date: Date, action: 'PREV' | 'NEXT' | 'DATE'): Date\n}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"drilldownview"},"drilldownView"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"Views.DAY")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"drilldown-view",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The string name of the destination ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")," for drill-down actions, such as clicking a date header, or the truncated events links. If ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"getDrilldownView")," is also specified it will be used instead."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Set to ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"null")," to disable drill-down actions."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"getdrilldownview"},"getDrilldownView"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (targetDate: Date, currentViewName: string, configuredViewNames: Views[]) => string|null")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"get-drilldown-view",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Functionally equivalent to drilldownView, but accepts a function that can return a view name. It's useful for customizing the drill-down actions depending on the target date and triggering view."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Return null to disable drill-down actions."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"length"},"length"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"30")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"length",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Determines the end date from date prop in the agenda view date prop + length (in number of days) = end date."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"toolbar"},"toolbar"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"true")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"toolbar",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Determines whether the toolbar is displayed"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"popup"},"popup"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"true")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"popup",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Show truncated events in an overlay when you click the "+',(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"x"),' more" link.'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"popupoffset"},"popupOffset"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"number|shape {x: number, y: number}")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"popup-offset",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Distance in pixels, from the edges of the viewport, the "show more" overlay should be positioned.'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"longpressthreshold"},"longPressThreshold"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"250")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"long-press-threshold",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Specifies the number of miliseconds the user must press and hold on the screen for a touch to be considered a "long press." Long presses are used for time slot selection on touch devices.'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"step"},"step"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"30")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"step",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Determines the selectable time increments in week and day views"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"timeslots"},"timeslots"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"timeslots",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'The number of slots per "section" in the time grid views. Adjust with ',(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"step",mdxType:"LinkTo"},"step")," to change the default of 1 hour long groups, with 30 minute slots."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"rtl"},"rtl"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"false")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"right-to-left",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Switch the calendar to a right-to-left read direction."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"eventpropgetter"},"eventPropGetter"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (event: Object, start: Date, end: Date, isSelected: boolean) => {className?: string, style?: Object}")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"event-prop-getter",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Optionally provide a function that returns an object of className or style props to be applied to the the event node."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"slotpropgetter"},"slotPropGetter"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date) => {className?: string, style?: Object}")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-slot-prop-getter",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Optionally provide a function that returns an object of className or style props to be applied to the the time-slot node."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Caution!")," Styles that change layout or position may break the calendar in unexpected ways."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"slotgrouppropgetter"},"slotGroupPropGetter"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (group: Date[]) => { style?: Object }")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"slot-group-prop-getter",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Optionally provide a function that returns an object of className or style props to be applied to the time-slot node."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Caution! Styles that change layout or position may break the calendar in unexpected ways.")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"daypropgetter"},"dayPropGetter"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date) => {className?: string, style?: Object}")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"day-prop-getter",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Optionally provide a function that returns an object of className or style props to be applied to the the day background."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Caution!")," Styles that change layout or position may break the calendar in unexpected ways."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"showmultidaytimes"},"showMultiDayTimes"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"false")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"show-multi-day-times",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Support to show multi-day events with specific start and end times in the main time grid (rather than in the all day header)."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note: This may cause calendars with several events to look very busy in the week and day views.")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"min"},"min"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"new Date(1972, 0, 1, 0, 0, 0)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"min",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Constrains the minimum time of the Day and Week views."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"max"},"max"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"new Date(1972, 0, 1, 23, 59, 59)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"max",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Constrains the maximum time of the Day and Week views."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"scrolltotime"},"scrollToTime"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"new Date()")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"scroll-to-time",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Determines how far down the scroll pane is initially scrolled down."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"culture"},"culture"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"none (browser default)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"culture",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Specify a specific culture code for the Calendar. The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"culture")," is used by ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"formats")," with your ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"localizer")," to 'format' date/time information on the Calendar. To localize messaging, use the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"messages")," prop."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note: it's generally better to handle this globally via your i18n library.")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formats"},"formats"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"Object")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"Localizer")," specific formats, tell the Calendar how to format and display dates and times.",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"format")," types are dependent on the configured localizer; both Moment and Globalize accept strings of tokens according to their own specification, such as: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"'DD mm yyyy'"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"const formats = useMemo(() => ({\n dateFormat: 'dd',\n\n dayFormat: (date, , localizer) =>\n localizer.format(date, 'DDD', culture),\n\n dayRangeHeaderFormat: ({ start, end }, culture, localizer) =>\n localizer.format(start, { date: 'short' }, culture) + ' — ' +\n localizer.format(end, { date: 'short' }, culture)\n}), [])\n\n\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsdateformat"},"formats.dateFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-date-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Format for the day of the month heading in the Month view. e.g. "01", "02", "03", etc'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsdayformat"},"formats.dayFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-day-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'A day of the week format for Week and Day headings, e.g. "Wed 01/04"'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsweekdayformat"},"formats.weekdayFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-weekday-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Week day name format for the Month week day headings, e.g: "Sun", "Mon", "Tue", etc'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatstimegutterformat"},"formats.timeGutterFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-time-gutter-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'The timestamp cell formats in Week and Time views, e.g. "4:00 AM"'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsmonthheaderformat"},"formats.monthHeaderFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-month-header-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Toolbar header format for the Month view, e.g "2015 April"'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsdayrangeheaderformat"},"formats.dayRangeHeaderFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-day-range-header-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Toolbar header format for the Week views, e.g. "Mar 29 - Apr 04"'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsdayheaderformat"},"formats.dayHeaderFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-day-header-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Toolbar header format for the Day view, e.g. "Wednesday Apr 01"'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsagendaheaderformat"},"formats.agendaHeaderFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-agenda-header-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Toolbar header format for the Agenda view, e.g. "4/1/2015 — 5/1/2015"'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsselectrangeformat"},"formats.selectRangeFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-select-range-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'A time range format shown in the highlighted area when selecting time slots, e.g "08:00 am — 12:00 pm"'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsagendadateformat"},"formats.agendaDateFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-agenda-date-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Dates displayed in the gutter of the Agenda ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsagendatimeformat"},"formats.agendaTimeFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-agenda-time-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Time only (not range) displayed in the gutter of the Agenda ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsagendatimerangeformat"},"formats.agendaTimeRangeFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-agenda-time-range-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Time range displayed in the gutter of the Agenda ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatseventtimerangeformat"},"formats.eventTimeRangeFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-event-time-range-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Time range displayed on events in Time Grid views."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatseventtimerangestartformat"},"formats.eventTimeRangeStartFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-event-time-range-start-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"An optional event time range for events that continue onto another day. Used with ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"show-multi-day-times",mdxType:"LinkTo"},"showMultiDayTimes"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatseventtimerangeendformat"},"formats.eventTimeRangeEndFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-event-time-range-end-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"An optional event time range for events that continue onto another day. Used with ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"show-multi-day-times",mdxType:"LinkTo"},"showMultiDayTimes"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"components"},"components"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"object")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"components",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Customize how different sections of the calendar render by providing custom Components. In particular the Event component can be specified for the entire calendar, or you can provide an individual component for each view type."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"let components = useMemo({\n event: MyEvent, // used by each view (Month, Day, Week)\n toolbar: MyToolbar,\n agenda: {\n event: MyAgendaEvent // with the agenda view use a different component to render events\n }\n}, [])\n\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"messages"},"messages"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"Object")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"messages",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"String messages used throughout the component, override to provide localizations for button text, ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"title")," attributes and more."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"defualts"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"{\n date: 'Date',\n time: 'Time',\n event: 'Event',\n allDay: 'All Day',\n week: 'Week',\n work_week: 'Work Week',\n day: 'Day',\n month: 'Month',\n previous: 'Back',\n next: 'Next',\n yesterday: 'Yesterday',\n tomorrow: 'Tomorrow',\n today: 'Today',\n agenda: 'Agenda',\n\n noEventsInRange: 'There are no events in this range.',\n\n showMore: total => `+${total} more`,\n}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"daylayoutalgorithm"},"dayLayoutAlgorithm"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string | Function(events, minimumStartDifference, slotMetrics, accessors)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"overlap")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"day-layout-algorithm",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"A day event layout(arrangement) algorithm."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"overlap")," allows events to be overlapped."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"no-overlap")," resizes events to avoid overlap."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"or custom ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Function(events, minimumStartDifference, slotMetrics, accessors)")))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"props/Full Prop List",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/addons/dragAndDrop/styles.scss":function(module,exports,__webpack_require__){(exports=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(!1)).push([module.id,".rbc-addons-dnd .rbc-addons-dnd-row-body{position:relative}.rbc-addons-dnd .rbc-addons-dnd-drag-row{position:absolute;top:0;left:0;right:0}.rbc-addons-dnd .rbc-addons-dnd-over{background-color:rgba(0,0,0,.3)}.rbc-addons-dnd .rbc-event{transition:opacity 150ms}.rbc-addons-dnd .rbc-event:hover .rbc-addons-dnd-resize-ns-icon,.rbc-addons-dnd .rbc-event:hover .rbc-addons-dnd-resize-ew-icon{display:block}.rbc-addons-dnd .rbc-addons-dnd-dragged-event{opacity:0}.rbc-addons-dnd.rbc-addons-dnd-is-dragging .rbc-event:not(.rbc-addons-dnd-dragged-event):not(.rbc-addons-dnd-drag-preview){opacity:.5}.rbc-addons-dnd .rbc-addons-dnd-resizable{position:relative;width:100%;height:100%}.rbc-addons-dnd .rbc-addons-dnd-resize-ns-anchor{width:100%;text-align:center;position:absolute}.rbc-addons-dnd .rbc-addons-dnd-resize-ns-anchor:first-child{top:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ns-anchor:last-child{bottom:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ns-anchor .rbc-addons-dnd-resize-ns-icon{display:none;border-top:3px double;margin:0 auto;width:10px;cursor:ns-resize}.rbc-addons-dnd .rbc-addons-dnd-resize-ew-anchor{position:absolute;top:4px;bottom:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ew-anchor:first-child{left:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ew-anchor:last-child{right:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ew-anchor .rbc-addons-dnd-resize-ew-icon{display:none;border-left:3px double;margin-top:auto;margin-bottom:auto;height:10px;cursor:ew-resize}",""]),module.exports=exports},"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/sass/styles.scss":function(module,exports,__webpack_require__){(exports=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(!1)).push([module.id,'.rbc-btn{color:inherit;font:inherit;margin:0}button.rbc-btn{overflow:visible;text-transform:none;-webkit-appearance:button;cursor:pointer}button[disabled].rbc-btn{cursor:not-allowed}button.rbc-input::-moz-focus-inner{border:0;padding:0}.rbc-calendar{box-sizing:border-box;height:100%;display:flex;flex-direction:column;align-items:stretch}.rbc-calendar *,.rbc-calendar *:before,.rbc-calendar *:after{box-sizing:inherit}.rbc-abs-full,.rbc-row-bg{overflow:hidden;position:absolute;top:0;left:0;right:0;bottom:0}.rbc-ellipsis,.rbc-show-more,.rbc-row-segment .rbc-event-content,.rbc-event-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rbc-rtl{direction:rtl}.rbc-off-range{color:#999}.rbc-off-range-bg{background:#e6e6e6}.rbc-header{overflow:hidden;flex:1 0 0%;text-overflow:ellipsis;white-space:nowrap;padding:0 3px;text-align:center;vertical-align:middle;font-weight:bold;font-size:90%;min-height:0;border-bottom:1px solid #ddd}.rbc-header+.rbc-header{border-left:1px solid #ddd}.rbc-rtl .rbc-header+.rbc-header{border-left-width:0;border-right:1px solid #ddd}.rbc-header>a,.rbc-header>a:active,.rbc-header>a:visited{color:inherit;text-decoration:none}.rbc-button-link{color:inherit;background:none;margin:0;padding:0;border:none;cursor:pointer;user-select:text}.rbc-row-content{position:relative;user-select:none;-webkit-user-select:none;z-index:4}.rbc-row-content-scrollable{display:flex;flex-direction:column;height:100%}.rbc-row-content-scrollable .rbc-row-content-scroll-container{height:100%;overflow-y:scroll;-ms-overflow-style:none;scrollbar-width:none;-ms-overflow-style:none;scrollbar-width:none}.rbc-row-content-scrollable .rbc-row-content-scroll-container::-webkit-scrollbar{display:none}.rbc-today{background-color:#eaf6ff}.rbc-toolbar{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;margin-bottom:10px;font-size:16px}.rbc-toolbar .rbc-toolbar-label{flex-grow:1;padding:0 10px;text-align:center}.rbc-toolbar button{color:#373a3c;display:inline-block;margin:0;text-align:center;vertical-align:middle;background:none;background-image:none;border:1px solid #ccc;padding:.375rem 1rem;border-radius:4px;line-height:normal;white-space:nowrap}.rbc-toolbar button:active,.rbc-toolbar button.rbc-active{background-image:none;box-shadow:inset 0 3px 5px rgba(0,0,0,.125);background-color:#e6e6e6;border-color:#adadad}.rbc-toolbar button:active:hover,.rbc-toolbar button:active:focus,.rbc-toolbar button.rbc-active:hover,.rbc-toolbar button.rbc-active:focus{color:#373a3c;background-color:#d4d4d4;border-color:#8c8c8c}.rbc-toolbar button:focus{color:#373a3c;background-color:#e6e6e6;border-color:#adadad}.rbc-toolbar button:hover{color:#373a3c;background-color:#e6e6e6;border-color:#adadad}.rbc-btn-group{display:inline-block;white-space:nowrap}.rbc-btn-group>button:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.rbc-btn-group>button:last-child:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.rbc-rtl .rbc-btn-group>button:first-child:not(:last-child){border-radius:4px;border-top-left-radius:0;border-bottom-left-radius:0}.rbc-rtl .rbc-btn-group>button:last-child:not(:first-child){border-radius:4px;border-top-right-radius:0;border-bottom-right-radius:0}.rbc-btn-group>button:not(:first-child):not(:last-child){border-radius:0}.rbc-btn-group button+button{margin-left:-1px}.rbc-rtl .rbc-btn-group button+button{margin-left:0;margin-right:-1px}.rbc-btn-group+.rbc-btn-group,.rbc-btn-group+button{margin-left:10px}@media(max-width: 767px){.rbc-toolbar{flex-direction:column}}.rbc-event,.rbc-day-slot .rbc-background-event{border:none;box-sizing:border-box;box-shadow:none;margin:0;padding:2px 5px;background-color:#3174ad;border-radius:5px;color:#fff;cursor:pointer;width:100%;text-align:left}.rbc-slot-selecting .rbc-event,.rbc-slot-selecting .rbc-day-slot .rbc-background-event,.rbc-day-slot .rbc-slot-selecting .rbc-background-event{cursor:inherit;pointer-events:none}.rbc-event.rbc-selected,.rbc-day-slot .rbc-selected.rbc-background-event{background-color:#265985}.rbc-event:focus,.rbc-day-slot .rbc-background-event:focus{outline:5px auto #3b99fc}.rbc-event-label{font-size:80%}.rbc-event-overlaps{box-shadow:-1px 1px 5px 0px rgba(51,51,51,.5)}.rbc-event-continues-prior{border-top-left-radius:0;border-bottom-left-radius:0}.rbc-event-continues-after{border-top-right-radius:0;border-bottom-right-radius:0}.rbc-event-continues-earlier{border-top-left-radius:0;border-top-right-radius:0}.rbc-event-continues-later{border-bottom-left-radius:0;border-bottom-right-radius:0}.rbc-row{display:flex;flex-direction:row}.rbc-row-segment{padding:0 1px 1px 1px}.rbc-selected-cell{background-color:rgba(0,0,0,.1)}.rbc-show-more{background-color:rgba(255,255,255,.3);z-index:4;font-weight:bold;font-size:85%;height:auto;line-height:normal;color:#3174ad}.rbc-show-more:hover,.rbc-show-more:focus{color:#265985}.rbc-month-view{position:relative;border:1px solid #ddd;display:flex;flex-direction:column;flex:1 0 0;width:100%;user-select:none;-webkit-user-select:none;height:100%}.rbc-month-header{display:flex;flex-direction:row}.rbc-month-row{display:flex;position:relative;flex-direction:column;flex:1 0 0;flex-basis:0px;overflow:hidden;height:100%}.rbc-month-row+.rbc-month-row{border-top:1px solid #ddd}.rbc-date-cell{flex:1 1 0;min-width:0;padding-right:5px;text-align:right}.rbc-date-cell.rbc-now{font-weight:bold}.rbc-date-cell>a,.rbc-date-cell>a:active,.rbc-date-cell>a:visited{color:inherit;text-decoration:none}.rbc-row-bg{display:flex;flex-direction:row;flex:1 0 0;overflow:hidden}.rbc-day-bg{flex:1 0 0%}.rbc-day-bg+.rbc-day-bg{border-left:1px solid #ddd}.rbc-rtl .rbc-day-bg+.rbc-day-bg{border-left-width:0;border-right:1px solid #ddd}.rbc-overlay{position:absolute;z-index:5;border:1px solid #e5e5e5;background-color:#fff;box-shadow:0 5px 15px rgba(0,0,0,.25);padding:10px}.rbc-overlay>*+*{margin-top:1px}.rbc-overlay-header{border-bottom:1px solid #e5e5e5;margin:-10px -10px 5px -10px;padding:2px 10px}.rbc-agenda-view{display:flex;flex-direction:column;flex:1 0 0;overflow:auto}.rbc-agenda-view table.rbc-agenda-table{width:100%;border:1px solid #ddd;border-spacing:0;border-collapse:collapse}.rbc-agenda-view table.rbc-agenda-table tbody>tr>td{padding:5px 10px;vertical-align:top}.rbc-agenda-view table.rbc-agenda-table .rbc-agenda-time-cell{padding-left:15px;padding-right:15px;text-transform:lowercase}.rbc-agenda-view table.rbc-agenda-table tbody>tr>td+td{border-left:1px solid #ddd}.rbc-rtl .rbc-agenda-view table.rbc-agenda-table tbody>tr>td+td{border-left-width:0;border-right:1px solid #ddd}.rbc-agenda-view table.rbc-agenda-table tbody>tr+tr{border-top:1px solid #ddd}.rbc-agenda-view table.rbc-agenda-table thead>tr>th{padding:3px 5px;text-align:left;border-bottom:1px solid #ddd}.rbc-rtl .rbc-agenda-view table.rbc-agenda-table thead>tr>th{text-align:right}.rbc-agenda-time-cell{text-transform:lowercase}.rbc-agenda-time-cell .rbc-continues-after:after{content:" »"}.rbc-agenda-time-cell .rbc-continues-prior:before{content:"« "}.rbc-agenda-date-cell,.rbc-agenda-time-cell{white-space:nowrap}.rbc-agenda-event-cell{width:100%}.rbc-time-column{display:flex;flex-direction:column;min-height:100%}.rbc-time-column .rbc-timeslot-group{flex:1}.rbc-timeslot-group{border-bottom:1px solid #ddd;min-height:40px;display:flex;flex-flow:column nowrap}.rbc-time-gutter,.rbc-header-gutter{flex:none}.rbc-label{padding:0 5px}.rbc-day-slot{position:relative}.rbc-day-slot .rbc-events-container{bottom:0;left:0;position:absolute;right:0;margin-right:10px;top:0}.rbc-day-slot .rbc-events-container.rbc-rtl{left:10px;right:0}.rbc-day-slot .rbc-event,.rbc-day-slot .rbc-background-event{border:1px solid #265985;display:flex;max-height:100%;min-height:20px;flex-flow:column wrap;align-items:flex-start;overflow:hidden;position:absolute}.rbc-day-slot .rbc-background-event{opacity:.75}.rbc-day-slot .rbc-event-label{flex:none;padding-right:5px;width:auto}.rbc-day-slot .rbc-event-content{width:100%;flex:1 1 0;word-wrap:break-word;line-height:1;height:100%;min-height:1em}.rbc-day-slot .rbc-time-slot{border-top:1px solid #f7f7f7}.rbc-time-view-resources .rbc-time-gutter,.rbc-time-view-resources .rbc-time-header-gutter{position:sticky;left:0;background-color:#fff;border-right:1px solid #ddd;z-index:10;margin-right:-1px}.rbc-time-view-resources .rbc-time-header{overflow:hidden}.rbc-time-view-resources .rbc-time-header-content{min-width:auto;flex:1 0 0;flex-basis:0px}.rbc-time-view-resources .rbc-time-header-cell-single-day{display:none}.rbc-time-view-resources .rbc-day-slot{min-width:140px}.rbc-time-view-resources .rbc-header,.rbc-time-view-resources .rbc-day-bg{width:140px;flex:1 1 0;flex-basis:0 px}.rbc-time-header-content+.rbc-time-header-content{margin-left:-1px}.rbc-time-slot{flex:1 0 0}.rbc-time-slot.rbc-now{font-weight:bold}.rbc-day-header{text-align:center}.rbc-slot-selection{z-index:10;position:absolute;background-color:rgba(0,0,0,.5);color:#fff;font-size:75%;width:100%;padding:3px}.rbc-slot-selecting{cursor:move}.rbc-time-view{display:flex;flex-direction:column;flex:1;width:100%;border:1px solid #ddd;min-height:0}.rbc-time-view .rbc-time-gutter{white-space:nowrap;text-align:right}.rbc-time-view .rbc-allday-cell{box-sizing:content-box;width:100%;height:100%;position:relative}.rbc-time-view .rbc-allday-cell+.rbc-allday-cell{border-left:1px solid #ddd}.rbc-time-view .rbc-allday-events{position:relative;z-index:4}.rbc-time-view .rbc-row{box-sizing:border-box;min-height:20px}.rbc-time-header{display:flex;flex:0 0 auto;flex-direction:row}.rbc-time-header.rbc-overflowing{border-right:1px solid #ddd}.rbc-rtl .rbc-time-header.rbc-overflowing{border-right-width:0;border-left:1px solid #ddd}.rbc-time-header>.rbc-row:first-child{border-bottom:1px solid #ddd}.rbc-time-header>.rbc-row.rbc-row-resource{border-bottom:1px solid #ddd}.rbc-time-header-cell-single-day{display:none}.rbc-time-header-content{flex:1;display:flex;min-width:0;flex-direction:column;border-left:1px solid #ddd}.rbc-rtl .rbc-time-header-content{border-left-width:0;border-right:1px solid #ddd}.rbc-time-header-content>.rbc-row.rbc-row-resource{border-bottom:1px solid #ddd;flex-shrink:0}.rbc-time-content{display:flex;flex:1 0 0%;align-items:flex-start;width:100%;border-top:2px solid #ddd;overflow-y:auto;position:relative}.rbc-time-content>.rbc-time-gutter{flex:none}.rbc-time-content>*+*>*{border-left:1px solid #ddd}.rbc-rtl .rbc-time-content>*+*>*{border-left-width:0;border-right:1px solid #ddd}.rbc-time-content>.rbc-day-slot{width:100%;user-select:none;-webkit-user-select:none}.rbc-current-time-indicator{position:absolute;z-index:3;left:0;right:0;height:1px;background-color:#74ad31;pointer-events:none}',""]),module.exports=exports},"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./stories/resources/customToolbar.scss":function(module,exports,__webpack_require__){(exports=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(!1)).push([module.id,".examples--custom-toolbar button{font-weight:600;font-size:1rem}",""]),module.exports=exports},"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./stories/resources/main.scss":function(module,exports,__webpack_require__){(exports=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(!1)).push([module.id,'.rbc-btn{color:inherit;font:inherit;margin:0}button.rbc-btn{overflow:visible;text-transform:none;-webkit-appearance:button;cursor:pointer}button[disabled].rbc-btn{cursor:not-allowed}button.rbc-input::-moz-focus-inner{border:0;padding:0}.rbc-calendar{box-sizing:border-box;height:100%;display:flex;flex-direction:column;align-items:stretch}.rbc-calendar *,.rbc-calendar *:before,.rbc-calendar *:after{box-sizing:inherit}.rbc-abs-full,.rbc-row-bg{overflow:hidden;position:absolute;top:0;left:0;right:0;bottom:0}.rbc-ellipsis,.rbc-show-more,.rbc-row-segment .rbc-event-content,.rbc-event-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rbc-rtl{direction:rtl}.rbc-off-range{color:#999}.rbc-off-range-bg{background:#e6e6e6}.rbc-header{overflow:hidden;flex:1 0 0%;text-overflow:ellipsis;white-space:nowrap;padding:0 3px;text-align:center;vertical-align:middle;font-weight:bold;font-size:90%;min-height:0;border-bottom:1px solid #ddd}.rbc-header+.rbc-header{border-left:1px solid #ddd}.rbc-rtl .rbc-header+.rbc-header{border-left-width:0;border-right:1px solid #ddd}.rbc-header>a,.rbc-header>a:active,.rbc-header>a:visited{color:inherit;text-decoration:none}.rbc-button-link{color:inherit;background:none;margin:0;padding:0;border:none;cursor:pointer;user-select:text}.rbc-row-content{position:relative;user-select:none;-webkit-user-select:none;z-index:4}.rbc-row-content-scrollable{display:flex;flex-direction:column;height:100%}.rbc-row-content-scrollable .rbc-row-content-scroll-container{height:100%;overflow-y:scroll;-ms-overflow-style:none;scrollbar-width:none;-ms-overflow-style:none;scrollbar-width:none}.rbc-row-content-scrollable .rbc-row-content-scroll-container::-webkit-scrollbar{display:none}.rbc-today{background-color:#eaf6ff}.rbc-toolbar{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;margin-bottom:10px;font-size:16px}.rbc-toolbar .rbc-toolbar-label{flex-grow:1;padding:0 10px;text-align:center}.rbc-toolbar button{color:#373a3c;display:inline-block;margin:0;text-align:center;vertical-align:middle;background:none;background-image:none;border:1px solid #ccc;padding:.375rem 1rem;border-radius:4px;line-height:normal;white-space:nowrap}.rbc-toolbar button:active,.rbc-toolbar button.rbc-active{background-image:none;box-shadow:inset 0 3px 5px rgba(0,0,0,.125);background-color:#e6e6e6;border-color:#adadad}.rbc-toolbar button:active:hover,.rbc-toolbar button:active:focus,.rbc-toolbar button.rbc-active:hover,.rbc-toolbar button.rbc-active:focus{color:#373a3c;background-color:#d4d4d4;border-color:#8c8c8c}.rbc-toolbar button:focus{color:#373a3c;background-color:#e6e6e6;border-color:#adadad}.rbc-toolbar button:hover{color:#373a3c;background-color:#e6e6e6;border-color:#adadad}.rbc-btn-group{display:inline-block;white-space:nowrap}.rbc-btn-group>button:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.rbc-btn-group>button:last-child:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.rbc-rtl .rbc-btn-group>button:first-child:not(:last-child){border-radius:4px;border-top-left-radius:0;border-bottom-left-radius:0}.rbc-rtl .rbc-btn-group>button:last-child:not(:first-child){border-radius:4px;border-top-right-radius:0;border-bottom-right-radius:0}.rbc-btn-group>button:not(:first-child):not(:last-child){border-radius:0}.rbc-btn-group button+button{margin-left:-1px}.rbc-rtl .rbc-btn-group button+button{margin-left:0;margin-right:-1px}.rbc-btn-group+.rbc-btn-group,.rbc-btn-group+button{margin-left:10px}@media(max-width: 767px){.rbc-toolbar{flex-direction:column}}.rbc-event,.rbc-day-slot .rbc-background-event{border:none;box-sizing:border-box;box-shadow:none;margin:0;padding:2px 5px;background-color:#3174ad;border-radius:5px;color:#fff;cursor:pointer;width:100%;text-align:left}.rbc-slot-selecting .rbc-event,.rbc-slot-selecting .rbc-day-slot .rbc-background-event,.rbc-day-slot .rbc-slot-selecting .rbc-background-event{cursor:inherit;pointer-events:none}.rbc-event.rbc-selected,.rbc-day-slot .rbc-selected.rbc-background-event{background-color:#265985}.rbc-event:focus,.rbc-day-slot .rbc-background-event:focus{outline:5px auto #3b99fc}.rbc-event-label{font-size:80%}.rbc-event-overlaps{box-shadow:-1px 1px 5px 0px rgba(51,51,51,.5)}.rbc-event-continues-prior{border-top-left-radius:0;border-bottom-left-radius:0}.rbc-event-continues-after{border-top-right-radius:0;border-bottom-right-radius:0}.rbc-event-continues-earlier{border-top-left-radius:0;border-top-right-radius:0}.rbc-event-continues-later{border-bottom-left-radius:0;border-bottom-right-radius:0}.rbc-row{display:flex;flex-direction:row}.rbc-row-segment{padding:0 1px 1px 1px}.rbc-selected-cell{background-color:rgba(0,0,0,.1)}.rbc-show-more{background-color:rgba(255,255,255,.3);z-index:4;font-weight:bold;font-size:85%;height:auto;line-height:normal;color:#3174ad}.rbc-show-more:hover,.rbc-show-more:focus{color:#265985}.rbc-month-view{position:relative;border:1px solid #ddd;display:flex;flex-direction:column;flex:1 0 0;width:100%;user-select:none;-webkit-user-select:none;height:100%}.rbc-month-header{display:flex;flex-direction:row}.rbc-month-row{display:flex;position:relative;flex-direction:column;flex:1 0 0;flex-basis:0px;overflow:hidden;height:100%}.rbc-month-row+.rbc-month-row{border-top:1px solid #ddd}.rbc-date-cell{flex:1 1 0;min-width:0;padding-right:5px;text-align:right}.rbc-date-cell.rbc-now{font-weight:bold}.rbc-date-cell>a,.rbc-date-cell>a:active,.rbc-date-cell>a:visited{color:inherit;text-decoration:none}.rbc-row-bg{display:flex;flex-direction:row;flex:1 0 0;overflow:hidden}.rbc-day-bg{flex:1 0 0%}.rbc-day-bg+.rbc-day-bg{border-left:1px solid #ddd}.rbc-rtl .rbc-day-bg+.rbc-day-bg{border-left-width:0;border-right:1px solid #ddd}.rbc-overlay{position:absolute;z-index:5;border:1px solid #e5e5e5;background-color:#fff;box-shadow:0 5px 15px rgba(0,0,0,.25);padding:10px}.rbc-overlay>*+*{margin-top:1px}.rbc-overlay-header{border-bottom:1px solid #e5e5e5;margin:-10px -10px 5px -10px;padding:2px 10px}.rbc-agenda-view{display:flex;flex-direction:column;flex:1 0 0;overflow:auto}.rbc-agenda-view table.rbc-agenda-table{width:100%;border:1px solid #ddd;border-spacing:0;border-collapse:collapse}.rbc-agenda-view table.rbc-agenda-table tbody>tr>td{padding:5px 10px;vertical-align:top}.rbc-agenda-view table.rbc-agenda-table .rbc-agenda-time-cell{padding-left:15px;padding-right:15px;text-transform:lowercase}.rbc-agenda-view table.rbc-agenda-table tbody>tr>td+td{border-left:1px solid #ddd}.rbc-rtl .rbc-agenda-view table.rbc-agenda-table tbody>tr>td+td{border-left-width:0;border-right:1px solid #ddd}.rbc-agenda-view table.rbc-agenda-table tbody>tr+tr{border-top:1px solid #ddd}.rbc-agenda-view table.rbc-agenda-table thead>tr>th{padding:3px 5px;text-align:left;border-bottom:1px solid #ddd}.rbc-rtl .rbc-agenda-view table.rbc-agenda-table thead>tr>th{text-align:right}.rbc-agenda-time-cell{text-transform:lowercase}.rbc-agenda-time-cell .rbc-continues-after:after{content:" »"}.rbc-agenda-time-cell .rbc-continues-prior:before{content:"« "}.rbc-agenda-date-cell,.rbc-agenda-time-cell{white-space:nowrap}.rbc-agenda-event-cell{width:100%}.rbc-time-column{display:flex;flex-direction:column;min-height:100%}.rbc-time-column .rbc-timeslot-group{flex:1}.rbc-timeslot-group{border-bottom:1px solid #ddd;min-height:40px;display:flex;flex-flow:column nowrap}.rbc-time-gutter,.rbc-header-gutter{flex:none}.rbc-label{padding:0 5px}.rbc-day-slot{position:relative}.rbc-day-slot .rbc-events-container{bottom:0;left:0;position:absolute;right:0;margin-right:10px;top:0}.rbc-day-slot .rbc-events-container.rbc-rtl{left:10px;right:0}.rbc-day-slot .rbc-event,.rbc-day-slot .rbc-background-event{border:1px solid #265985;display:flex;max-height:100%;min-height:20px;flex-flow:column wrap;align-items:flex-start;overflow:hidden;position:absolute}.rbc-day-slot .rbc-background-event{opacity:.75}.rbc-day-slot .rbc-event-label{flex:none;padding-right:5px;width:auto}.rbc-day-slot .rbc-event-content{width:100%;flex:1 1 0;word-wrap:break-word;line-height:1;height:100%;min-height:1em}.rbc-day-slot .rbc-time-slot{border-top:1px solid #f7f7f7}.rbc-time-view-resources .rbc-time-gutter,.rbc-time-view-resources .rbc-time-header-gutter{position:sticky;left:0;background-color:#fff;border-right:1px solid #ddd;z-index:10;margin-right:-1px}.rbc-time-view-resources .rbc-time-header{overflow:hidden}.rbc-time-view-resources .rbc-time-header-content{min-width:auto;flex:1 0 0;flex-basis:0px}.rbc-time-view-resources .rbc-time-header-cell-single-day{display:none}.rbc-time-view-resources .rbc-day-slot{min-width:140px}.rbc-time-view-resources .rbc-header,.rbc-time-view-resources .rbc-day-bg{width:140px;flex:1 1 0;flex-basis:0 px}.rbc-time-header-content+.rbc-time-header-content{margin-left:-1px}.rbc-time-slot{flex:1 0 0}.rbc-time-slot.rbc-now{font-weight:bold}.rbc-day-header{text-align:center}.rbc-slot-selection{z-index:10;position:absolute;background-color:rgba(0,0,0,.5);color:#fff;font-size:75%;width:100%;padding:3px}.rbc-slot-selecting{cursor:move}.rbc-time-view{display:flex;flex-direction:column;flex:1;width:100%;border:1px solid #ddd;min-height:0}.rbc-time-view .rbc-time-gutter{white-space:nowrap;text-align:right}.rbc-time-view .rbc-allday-cell{box-sizing:content-box;width:100%;height:100%;position:relative}.rbc-time-view .rbc-allday-cell+.rbc-allday-cell{border-left:1px solid #ddd}.rbc-time-view .rbc-allday-events{position:relative;z-index:4}.rbc-time-view .rbc-row{box-sizing:border-box;min-height:20px}.rbc-time-header{display:flex;flex:0 0 auto;flex-direction:row}.rbc-time-header.rbc-overflowing{border-right:1px solid #ddd}.rbc-rtl .rbc-time-header.rbc-overflowing{border-right-width:0;border-left:1px solid #ddd}.rbc-time-header>.rbc-row:first-child{border-bottom:1px solid #ddd}.rbc-time-header>.rbc-row.rbc-row-resource{border-bottom:1px solid #ddd}.rbc-time-header-cell-single-day{display:none}.rbc-time-header-content{flex:1;display:flex;min-width:0;flex-direction:column;border-left:1px solid #ddd}.rbc-rtl .rbc-time-header-content{border-left-width:0;border-right:1px solid #ddd}.rbc-time-header-content>.rbc-row.rbc-row-resource{border-bottom:1px solid #ddd;flex-shrink:0}.rbc-time-content{display:flex;flex:1 0 0%;align-items:flex-start;width:100%;border-top:2px solid #ddd;overflow-y:auto;position:relative}.rbc-time-content>.rbc-time-gutter{flex:none}.rbc-time-content>*+*>*{border-left:1px solid #ddd}.rbc-rtl .rbc-time-content>*+*>*{border-left-width:0;border-right:1px solid #ddd}.rbc-time-content>.rbc-day-slot{width:100%;user-select:none;-webkit-user-select:none}.rbc-current-time-indicator{position:absolute;z-index:3;left:0;right:0;height:1px;background-color:#74ad31;pointer-events:none}.rbc-addons-dnd .rbc-addons-dnd-row-body{position:relative}.rbc-addons-dnd .rbc-addons-dnd-drag-row{position:absolute;top:0;left:0;right:0}.rbc-addons-dnd .rbc-addons-dnd-over{background-color:rgba(0,0,0,.3)}.rbc-addons-dnd .rbc-event,.rbc-addons-dnd .rbc-day-slot .rbc-background-event,.rbc-day-slot .rbc-addons-dnd .rbc-background-event{transition:opacity 150ms}.rbc-addons-dnd .rbc-event:hover .rbc-addons-dnd-resize-ns-icon,.rbc-addons-dnd .rbc-day-slot .rbc-background-event:hover .rbc-addons-dnd-resize-ns-icon,.rbc-day-slot .rbc-addons-dnd .rbc-background-event:hover .rbc-addons-dnd-resize-ns-icon,.rbc-addons-dnd .rbc-event:hover .rbc-addons-dnd-resize-ew-icon,.rbc-addons-dnd .rbc-day-slot .rbc-background-event:hover .rbc-addons-dnd-resize-ew-icon,.rbc-day-slot .rbc-addons-dnd .rbc-background-event:hover .rbc-addons-dnd-resize-ew-icon{display:block}.rbc-addons-dnd .rbc-addons-dnd-dragged-event{opacity:0}.rbc-addons-dnd.rbc-addons-dnd-is-dragging .rbc-event:not(.rbc-addons-dnd-dragged-event):not(.rbc-addons-dnd-drag-preview),.rbc-addons-dnd.rbc-addons-dnd-is-dragging .rbc-day-slot .rbc-background-event:not(.rbc-addons-dnd-dragged-event):not(.rbc-addons-dnd-drag-preview),.rbc-day-slot .rbc-addons-dnd.rbc-addons-dnd-is-dragging .rbc-background-event:not(.rbc-addons-dnd-dragged-event):not(.rbc-addons-dnd-drag-preview){opacity:.5}.rbc-addons-dnd .rbc-addons-dnd-resizable{position:relative;width:100%;height:100%}.rbc-addons-dnd .rbc-addons-dnd-resize-ns-anchor{width:100%;text-align:center;position:absolute}.rbc-addons-dnd .rbc-addons-dnd-resize-ns-anchor:first-child{top:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ns-anchor:last-child{bottom:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ns-anchor .rbc-addons-dnd-resize-ns-icon{display:none;border-top:3px double;margin:0 auto;width:10px;cursor:ns-resize}.rbc-addons-dnd .rbc-addons-dnd-resize-ew-anchor{position:absolute;top:4px;bottom:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ew-anchor:first-child{left:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ew-anchor:last-child{right:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ew-anchor .rbc-addons-dnd-resize-ew-icon{display:none;border-left:3px double;margin-top:auto;margin-bottom:auto;height:10px;cursor:ew-resize}.height600{position:relative;height:600px}.examples--header,.dndOutsideSourceExample{margin:0 40px;text-align:center}.dndOutsideSourceExample{display:flex}.dndOutsideSourceExample>.inner{display:flex;flex:1;justify-content:center;flex-wrap:wrap}.dndOutsideSourceExample>.inner h4{color:gray;width:100%}.dndOutsideSourceExample>.inner div[draggable]{display:flex;align-items:center;justify-content:center;border:2px solid gray;border-radius:4px;width:100px;margin:10px;cursor:grab}.dndOutsideSourceExample>.inner input[type=checkbox]{margin-right:5px}.card{background-color:#fff;border:0;padding:24px;border-radius:2px;margin-bottom:20px;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.isDraggable{cursor:grab !important}.nonDraggable,.nonResizable{background-color:#bed7ec !important;color:#000 !important}',""]),module.exports=exports},"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./stories/resources/propGetter.scss":function(module,exports,__webpack_require__){(exports=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(!1)).push([module.id,'.powderBlue,#my_scheduler,.tuesday{background-color:#b0e0e6;color:#000}.darkGreen{background-color:#006400;color:#fff}.slotDefault{background-color:"#FAF0E6";color:"black"}#my_scheduler{padding:.5em;border:1px solid blue}',""]),module.exports=exports},"./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[8].use[1]!./node_modules/sass-loader/dist/cjs.js!./stories/demos/exampleCode/rendering.module.scss":function(module,exports,__webpack_require__){(exports=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(!1)).push([module.id,".rendering-module__specialDay--3nNWi{background-color:#fec}",""]),exports.locals={specialDay:"rendering-module__specialDay--3nNWi"},module.exports=exports},"./node_modules/moment/locale sync recursive ^\\.\\/.*$":function(module,__unused_webpack_exports,__webpack_require__){var map={"./af":"./node_modules/moment/locale/af.js","./af.js":"./node_modules/moment/locale/af.js","./ar":"./node_modules/moment/locale/ar.js","./ar-dz":"./node_modules/moment/locale/ar-dz.js","./ar-dz.js":"./node_modules/moment/locale/ar-dz.js","./ar-kw":"./node_modules/moment/locale/ar-kw.js","./ar-kw.js":"./node_modules/moment/locale/ar-kw.js","./ar-ly":"./node_modules/moment/locale/ar-ly.js","./ar-ly.js":"./node_modules/moment/locale/ar-ly.js","./ar-ma":"./node_modules/moment/locale/ar-ma.js","./ar-ma.js":"./node_modules/moment/locale/ar-ma.js","./ar-ps":"./node_modules/moment/locale/ar-ps.js","./ar-ps.js":"./node_modules/moment/locale/ar-ps.js","./ar-sa":"./node_modules/moment/locale/ar-sa.js","./ar-sa.js":"./node_modules/moment/locale/ar-sa.js","./ar-tn":"./node_modules/moment/locale/ar-tn.js","./ar-tn.js":"./node_modules/moment/locale/ar-tn.js","./ar.js":"./node_modules/moment/locale/ar.js","./az":"./node_modules/moment/locale/az.js","./az.js":"./node_modules/moment/locale/az.js","./be":"./node_modules/moment/locale/be.js","./be.js":"./node_modules/moment/locale/be.js","./bg":"./node_modules/moment/locale/bg.js","./bg.js":"./node_modules/moment/locale/bg.js","./bm":"./node_modules/moment/locale/bm.js","./bm.js":"./node_modules/moment/locale/bm.js","./bn":"./node_modules/moment/locale/bn.js","./bn-bd":"./node_modules/moment/locale/bn-bd.js","./bn-bd.js":"./node_modules/moment/locale/bn-bd.js","./bn.js":"./node_modules/moment/locale/bn.js","./bo":"./node_modules/moment/locale/bo.js","./bo.js":"./node_modules/moment/locale/bo.js","./br":"./node_modules/moment/locale/br.js","./br.js":"./node_modules/moment/locale/br.js","./bs":"./node_modules/moment/locale/bs.js","./bs.js":"./node_modules/moment/locale/bs.js","./ca":"./node_modules/moment/locale/ca.js","./ca.js":"./node_modules/moment/locale/ca.js","./cs":"./node_modules/moment/locale/cs.js","./cs.js":"./node_modules/moment/locale/cs.js","./cv":"./node_modules/moment/locale/cv.js","./cv.js":"./node_modules/moment/locale/cv.js","./cy":"./node_modules/moment/locale/cy.js","./cy.js":"./node_modules/moment/locale/cy.js","./da":"./node_modules/moment/locale/da.js","./da.js":"./node_modules/moment/locale/da.js","./de":"./node_modules/moment/locale/de.js","./de-at":"./node_modules/moment/locale/de-at.js","./de-at.js":"./node_modules/moment/locale/de-at.js","./de-ch":"./node_modules/moment/locale/de-ch.js","./de-ch.js":"./node_modules/moment/locale/de-ch.js","./de.js":"./node_modules/moment/locale/de.js","./dv":"./node_modules/moment/locale/dv.js","./dv.js":"./node_modules/moment/locale/dv.js","./el":"./node_modules/moment/locale/el.js","./el.js":"./node_modules/moment/locale/el.js","./en-au":"./node_modules/moment/locale/en-au.js","./en-au.js":"./node_modules/moment/locale/en-au.js","./en-ca":"./node_modules/moment/locale/en-ca.js","./en-ca.js":"./node_modules/moment/locale/en-ca.js","./en-gb":"./node_modules/moment/locale/en-gb.js","./en-gb.js":"./node_modules/moment/locale/en-gb.js","./en-ie":"./node_modules/moment/locale/en-ie.js","./en-ie.js":"./node_modules/moment/locale/en-ie.js","./en-il":"./node_modules/moment/locale/en-il.js","./en-il.js":"./node_modules/moment/locale/en-il.js","./en-in":"./node_modules/moment/locale/en-in.js","./en-in.js":"./node_modules/moment/locale/en-in.js","./en-nz":"./node_modules/moment/locale/en-nz.js","./en-nz.js":"./node_modules/moment/locale/en-nz.js","./en-sg":"./node_modules/moment/locale/en-sg.js","./en-sg.js":"./node_modules/moment/locale/en-sg.js","./eo":"./node_modules/moment/locale/eo.js","./eo.js":"./node_modules/moment/locale/eo.js","./es":"./node_modules/moment/locale/es.js","./es-do":"./node_modules/moment/locale/es-do.js","./es-do.js":"./node_modules/moment/locale/es-do.js","./es-mx":"./node_modules/moment/locale/es-mx.js","./es-mx.js":"./node_modules/moment/locale/es-mx.js","./es-us":"./node_modules/moment/locale/es-us.js","./es-us.js":"./node_modules/moment/locale/es-us.js","./es.js":"./node_modules/moment/locale/es.js","./et":"./node_modules/moment/locale/et.js","./et.js":"./node_modules/moment/locale/et.js","./eu":"./node_modules/moment/locale/eu.js","./eu.js":"./node_modules/moment/locale/eu.js","./fa":"./node_modules/moment/locale/fa.js","./fa.js":"./node_modules/moment/locale/fa.js","./fi":"./node_modules/moment/locale/fi.js","./fi.js":"./node_modules/moment/locale/fi.js","./fil":"./node_modules/moment/locale/fil.js","./fil.js":"./node_modules/moment/locale/fil.js","./fo":"./node_modules/moment/locale/fo.js","./fo.js":"./node_modules/moment/locale/fo.js","./fr":"./node_modules/moment/locale/fr.js","./fr-ca":"./node_modules/moment/locale/fr-ca.js","./fr-ca.js":"./node_modules/moment/locale/fr-ca.js","./fr-ch":"./node_modules/moment/locale/fr-ch.js","./fr-ch.js":"./node_modules/moment/locale/fr-ch.js","./fr.js":"./node_modules/moment/locale/fr.js","./fy":"./node_modules/moment/locale/fy.js","./fy.js":"./node_modules/moment/locale/fy.js","./ga":"./node_modules/moment/locale/ga.js","./ga.js":"./node_modules/moment/locale/ga.js","./gd":"./node_modules/moment/locale/gd.js","./gd.js":"./node_modules/moment/locale/gd.js","./gl":"./node_modules/moment/locale/gl.js","./gl.js":"./node_modules/moment/locale/gl.js","./gom-deva":"./node_modules/moment/locale/gom-deva.js","./gom-deva.js":"./node_modules/moment/locale/gom-deva.js","./gom-latn":"./node_modules/moment/locale/gom-latn.js","./gom-latn.js":"./node_modules/moment/locale/gom-latn.js","./gu":"./node_modules/moment/locale/gu.js","./gu.js":"./node_modules/moment/locale/gu.js","./he":"./node_modules/moment/locale/he.js","./he.js":"./node_modules/moment/locale/he.js","./hi":"./node_modules/moment/locale/hi.js","./hi.js":"./node_modules/moment/locale/hi.js","./hr":"./node_modules/moment/locale/hr.js","./hr.js":"./node_modules/moment/locale/hr.js","./hu":"./node_modules/moment/locale/hu.js","./hu.js":"./node_modules/moment/locale/hu.js","./hy-am":"./node_modules/moment/locale/hy-am.js","./hy-am.js":"./node_modules/moment/locale/hy-am.js","./id":"./node_modules/moment/locale/id.js","./id.js":"./node_modules/moment/locale/id.js","./is":"./node_modules/moment/locale/is.js","./is.js":"./node_modules/moment/locale/is.js","./it":"./node_modules/moment/locale/it.js","./it-ch":"./node_modules/moment/locale/it-ch.js","./it-ch.js":"./node_modules/moment/locale/it-ch.js","./it.js":"./node_modules/moment/locale/it.js","./ja":"./node_modules/moment/locale/ja.js","./ja.js":"./node_modules/moment/locale/ja.js","./jv":"./node_modules/moment/locale/jv.js","./jv.js":"./node_modules/moment/locale/jv.js","./ka":"./node_modules/moment/locale/ka.js","./ka.js":"./node_modules/moment/locale/ka.js","./kk":"./node_modules/moment/locale/kk.js","./kk.js":"./node_modules/moment/locale/kk.js","./km":"./node_modules/moment/locale/km.js","./km.js":"./node_modules/moment/locale/km.js","./kn":"./node_modules/moment/locale/kn.js","./kn.js":"./node_modules/moment/locale/kn.js","./ko":"./node_modules/moment/locale/ko.js","./ko.js":"./node_modules/moment/locale/ko.js","./ku":"./node_modules/moment/locale/ku.js","./ku-kmr":"./node_modules/moment/locale/ku-kmr.js","./ku-kmr.js":"./node_modules/moment/locale/ku-kmr.js","./ku.js":"./node_modules/moment/locale/ku.js","./ky":"./node_modules/moment/locale/ky.js","./ky.js":"./node_modules/moment/locale/ky.js","./lb":"./node_modules/moment/locale/lb.js","./lb.js":"./node_modules/moment/locale/lb.js","./lo":"./node_modules/moment/locale/lo.js","./lo.js":"./node_modules/moment/locale/lo.js","./lt":"./node_modules/moment/locale/lt.js","./lt.js":"./node_modules/moment/locale/lt.js","./lv":"./node_modules/moment/locale/lv.js","./lv.js":"./node_modules/moment/locale/lv.js","./me":"./node_modules/moment/locale/me.js","./me.js":"./node_modules/moment/locale/me.js","./mi":"./node_modules/moment/locale/mi.js","./mi.js":"./node_modules/moment/locale/mi.js","./mk":"./node_modules/moment/locale/mk.js","./mk.js":"./node_modules/moment/locale/mk.js","./ml":"./node_modules/moment/locale/ml.js","./ml.js":"./node_modules/moment/locale/ml.js","./mn":"./node_modules/moment/locale/mn.js","./mn.js":"./node_modules/moment/locale/mn.js","./mr":"./node_modules/moment/locale/mr.js","./mr.js":"./node_modules/moment/locale/mr.js","./ms":"./node_modules/moment/locale/ms.js","./ms-my":"./node_modules/moment/locale/ms-my.js","./ms-my.js":"./node_modules/moment/locale/ms-my.js","./ms.js":"./node_modules/moment/locale/ms.js","./mt":"./node_modules/moment/locale/mt.js","./mt.js":"./node_modules/moment/locale/mt.js","./my":"./node_modules/moment/locale/my.js","./my.js":"./node_modules/moment/locale/my.js","./nb":"./node_modules/moment/locale/nb.js","./nb.js":"./node_modules/moment/locale/nb.js","./ne":"./node_modules/moment/locale/ne.js","./ne.js":"./node_modules/moment/locale/ne.js","./nl":"./node_modules/moment/locale/nl.js","./nl-be":"./node_modules/moment/locale/nl-be.js","./nl-be.js":"./node_modules/moment/locale/nl-be.js","./nl.js":"./node_modules/moment/locale/nl.js","./nn":"./node_modules/moment/locale/nn.js","./nn.js":"./node_modules/moment/locale/nn.js","./oc-lnc":"./node_modules/moment/locale/oc-lnc.js","./oc-lnc.js":"./node_modules/moment/locale/oc-lnc.js","./pa-in":"./node_modules/moment/locale/pa-in.js","./pa-in.js":"./node_modules/moment/locale/pa-in.js","./pl":"./node_modules/moment/locale/pl.js","./pl.js":"./node_modules/moment/locale/pl.js","./pt":"./node_modules/moment/locale/pt.js","./pt-br":"./node_modules/moment/locale/pt-br.js","./pt-br.js":"./node_modules/moment/locale/pt-br.js","./pt.js":"./node_modules/moment/locale/pt.js","./ro":"./node_modules/moment/locale/ro.js","./ro.js":"./node_modules/moment/locale/ro.js","./ru":"./node_modules/moment/locale/ru.js","./ru.js":"./node_modules/moment/locale/ru.js","./sd":"./node_modules/moment/locale/sd.js","./sd.js":"./node_modules/moment/locale/sd.js","./se":"./node_modules/moment/locale/se.js","./se.js":"./node_modules/moment/locale/se.js","./si":"./node_modules/moment/locale/si.js","./si.js":"./node_modules/moment/locale/si.js","./sk":"./node_modules/moment/locale/sk.js","./sk.js":"./node_modules/moment/locale/sk.js","./sl":"./node_modules/moment/locale/sl.js","./sl.js":"./node_modules/moment/locale/sl.js","./sq":"./node_modules/moment/locale/sq.js","./sq.js":"./node_modules/moment/locale/sq.js","./sr":"./node_modules/moment/locale/sr.js","./sr-cyrl":"./node_modules/moment/locale/sr-cyrl.js","./sr-cyrl.js":"./node_modules/moment/locale/sr-cyrl.js","./sr.js":"./node_modules/moment/locale/sr.js","./ss":"./node_modules/moment/locale/ss.js","./ss.js":"./node_modules/moment/locale/ss.js","./sv":"./node_modules/moment/locale/sv.js","./sv.js":"./node_modules/moment/locale/sv.js","./sw":"./node_modules/moment/locale/sw.js","./sw.js":"./node_modules/moment/locale/sw.js","./ta":"./node_modules/moment/locale/ta.js","./ta.js":"./node_modules/moment/locale/ta.js","./te":"./node_modules/moment/locale/te.js","./te.js":"./node_modules/moment/locale/te.js","./tet":"./node_modules/moment/locale/tet.js","./tet.js":"./node_modules/moment/locale/tet.js","./tg":"./node_modules/moment/locale/tg.js","./tg.js":"./node_modules/moment/locale/tg.js","./th":"./node_modules/moment/locale/th.js","./th.js":"./node_modules/moment/locale/th.js","./tk":"./node_modules/moment/locale/tk.js","./tk.js":"./node_modules/moment/locale/tk.js","./tl-ph":"./node_modules/moment/locale/tl-ph.js","./tl-ph.js":"./node_modules/moment/locale/tl-ph.js","./tlh":"./node_modules/moment/locale/tlh.js","./tlh.js":"./node_modules/moment/locale/tlh.js","./tr":"./node_modules/moment/locale/tr.js","./tr.js":"./node_modules/moment/locale/tr.js","./tzl":"./node_modules/moment/locale/tzl.js","./tzl.js":"./node_modules/moment/locale/tzl.js","./tzm":"./node_modules/moment/locale/tzm.js","./tzm-latn":"./node_modules/moment/locale/tzm-latn.js","./tzm-latn.js":"./node_modules/moment/locale/tzm-latn.js","./tzm.js":"./node_modules/moment/locale/tzm.js","./ug-cn":"./node_modules/moment/locale/ug-cn.js","./ug-cn.js":"./node_modules/moment/locale/ug-cn.js","./uk":"./node_modules/moment/locale/uk.js","./uk.js":"./node_modules/moment/locale/uk.js","./ur":"./node_modules/moment/locale/ur.js","./ur.js":"./node_modules/moment/locale/ur.js","./uz":"./node_modules/moment/locale/uz.js","./uz-latn":"./node_modules/moment/locale/uz-latn.js","./uz-latn.js":"./node_modules/moment/locale/uz-latn.js","./uz.js":"./node_modules/moment/locale/uz.js","./vi":"./node_modules/moment/locale/vi.js","./vi.js":"./node_modules/moment/locale/vi.js","./x-pseudo":"./node_modules/moment/locale/x-pseudo.js","./x-pseudo.js":"./node_modules/moment/locale/x-pseudo.js","./yo":"./node_modules/moment/locale/yo.js","./yo.js":"./node_modules/moment/locale/yo.js","./zh-cn":"./node_modules/moment/locale/zh-cn.js","./zh-cn.js":"./node_modules/moment/locale/zh-cn.js","./zh-hk":"./node_modules/moment/locale/zh-hk.js","./zh-hk.js":"./node_modules/moment/locale/zh-hk.js","./zh-mo":"./node_modules/moment/locale/zh-mo.js","./zh-mo.js":"./node_modules/moment/locale/zh-mo.js","./zh-tw":"./node_modules/moment/locale/zh-tw.js","./zh-tw.js":"./node_modules/moment/locale/zh-tw.js"};function webpackContext(req){var id=webpackContextResolve(req);return __webpack_require__(id)}function webpackContextResolve(req){if(!__webpack_require__.o(map,req)){var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}return map[req]}webpackContext.keys=function webpackContextKeys(){return Object.keys(map)},webpackContext.resolve=webpackContextResolve,module.exports=webpackContext,webpackContext.id="./node_modules/moment/locale sync recursive ^\\.\\/.*$"},"./src/addons/dragAndDrop/styles.scss":function(module,__unused_webpack_exports,__webpack_require__){var api=__webpack_require__("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),content=__webpack_require__("./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/addons/dragAndDrop/styles.scss");"string"==typeof(content=content.__esModule?content.default:content)&&(content=[[module.id,content,""]]);var options={insert:"head",singleton:!1};api(content,options);module.exports=content.locals||{}},"./src/sass/styles.scss":function(module,__unused_webpack_exports,__webpack_require__){var api=__webpack_require__("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),content=__webpack_require__("./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/sass/styles.scss");"string"==typeof(content=content.__esModule?content.default:content)&&(content=[[module.id,content,""]]);var options={insert:"head",singleton:!1};api(content,options);module.exports=content.locals||{}},"./stories/resources/customToolbar.scss":function(module,__unused_webpack_exports,__webpack_require__){var api=__webpack_require__("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),content=__webpack_require__("./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./stories/resources/customToolbar.scss");"string"==typeof(content=content.__esModule?content.default:content)&&(content=[[module.id,content,""]]);var options={insert:"head",singleton:!1};api(content,options);module.exports=content.locals||{}},"./stories/resources/main.scss":function(module,__unused_webpack_exports,__webpack_require__){var api=__webpack_require__("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),content=__webpack_require__("./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./stories/resources/main.scss");"string"==typeof(content=content.__esModule?content.default:content)&&(content=[[module.id,content,""]]);var options={insert:"head",singleton:!1};api(content,options);module.exports=content.locals||{}},"./stories/resources/propGetter.scss":function(module,__unused_webpack_exports,__webpack_require__){var api=__webpack_require__("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),content=__webpack_require__("./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./stories/resources/propGetter.scss");"string"==typeof(content=content.__esModule?content.default:content)&&(content=[[module.id,content,""]]);var options={insert:"head",singleton:!1};api(content,options);module.exports=content.locals||{}},"./stories/demos/exampleCode/rendering.module.scss":function(module,__unused_webpack_exports,__webpack_require__){var api=__webpack_require__("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),content=__webpack_require__("./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[8].use[1]!./node_modules/sass-loader/dist/cjs.js!./stories/demos/exampleCode/rendering.module.scss");"string"==typeof(content=content.__esModule?content.default:content)&&(content=[[module.id,content,""]]);var options={insert:"head",singleton:!1};api(content,options);module.exports=content.locals||{}},"./stories sync recursive ^\\.(?:(?:^%7C\\/%7C(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$":function(module,__unused_webpack_exports,__webpack_require__){var map={"./Calendar.stories.js":"./stories/Calendar.stories.js","./DragAndDrop.stories.js":"./stories/DragAndDrop.stories.js","./Durations.stories.js":"./stories/Durations.stories.js","./Layout.stories.js":"./stories/Layout.stories.js","./Timeslots.stories.js":"./stories/Timeslots.stories.js","./addons/dragAndDrop/basic.stories.js":"./stories/addons/dragAndDrop/basic.stories.js","./addons/dragAndDrop/outside.stories.js":"./stories/addons/dragAndDrop/outside.stories.js","./addons/dragAndDrop/props/dragFromOutsideItem.stories.js":"./stories/addons/dragAndDrop/props/dragFromOutsideItem.stories.js","./addons/dragAndDrop/props/draggableAccessor.stories.js":"./stories/addons/dragAndDrop/props/draggableAccessor.stories.js","./addons/dragAndDrop/props/onDragOver.stories.js":"./stories/addons/dragAndDrop/props/onDragOver.stories.js","./addons/dragAndDrop/props/onDragStart.stories.js":"./stories/addons/dragAndDrop/props/onDragStart.stories.js","./addons/dragAndDrop/props/onDropFromOutside.stories.js":"./stories/addons/dragAndDrop/props/onDropFromOutside.stories.js","./addons/dragAndDrop/props/onEventDrop.stories.js":"./stories/addons/dragAndDrop/props/onEventDrop.stories.js","./addons/dragAndDrop/props/onEventResize.stories.js":"./stories/addons/dragAndDrop/props/onEventResize.stories.js","./addons/dragAndDrop/props/resizable.stories.js":"./stories/addons/dragAndDrop/props/resizable.stories.js","./addons/dragAndDrop/props/resizableAccessor.stories.js":"./stories/addons/dragAndDrop/props/resizableAccessor.stories.js","./addons/dragAndDrop/resource.stories.js":"./stories/addons/dragAndDrop/resource.stories.js","./demos/backgroundEvents.stories.js":"./stories/demos/backgroundEvents.stories.js","./demos/basic.stories.js":"./stories/demos/basic.stories.js","./demos/cultures.stories.js":"./stories/demos/cultures.stories.js","./demos/customView.stories.js":"./stories/demos/customView.stories.js","./demos/dayjs.stories.js":"./stories/demos/dayjs.stories.js","./demos/luxon.stories.js":"./stories/demos/luxon.stories.js","./demos/noOverlap.stories.js":"./stories/demos/noOverlap.stories.js","./demos/popup.stories.js":"./stories/demos/popup.stories.js","./demos/rendering.stories.js":"./stories/demos/rendering.stories.js","./demos/resource.stories.js":"./stories/demos/resource.stories.js","./demos/selectable.stories.js":"./stories/demos/selectable.stories.js","./demos/timeslots.stories.js":"./stories/demos/timeslots.stories.js","./demos/timezones.stories.js":"./stories/demos/timezones.stories.js","./props/allDayAccessor.stories.js":"./stories/props/allDayAccessor.stories.js","./props/allDayMaxRows.stories.js":"./stories/props/allDayMaxRows.stories.js","./props/backgroundEvents.stories.js":"./stories/props/backgroundEvents.stories.js","./props/components.stories.js":"./stories/props/components.stories.js","./props/culture.stories.js":"./stories/props/culture.stories.js","./props/date.stories.js":"./stories/props/date.stories.js","./props/dayLayoutAlgorithm.stories.js":"./stories/props/dayLayoutAlgorithm.stories.js","./props/dayPropGetter.stories.js":"./stories/props/dayPropGetter.stories.js","./props/defaultDate.stories.js":"./stories/props/defaultDate.stories.js","./props/defaultView.stories.js":"./stories/props/defaultView.stories.js","./props/drilldownView.stories.js":"./stories/props/drilldownView.stories.js","./props/elementProps.stories.js":"./stories/props/elementProps.stories.js","./props/endAccessor.stories.js":"./stories/props/endAccessor.stories.js","./props/eventPropGetter.stories.js":"./stories/props/eventPropGetter.stories.js","./props/events.stories.js":"./stories/props/events.stories.js","./props/formats.stories.js":"./stories/props/formats.stories.js","./props/formatsAgendaDateFormat.stories.js":"./stories/props/formatsAgendaDateFormat.stories.js","./props/formatsAgendaHeaderFormat.stories.js":"./stories/props/formatsAgendaHeaderFormat.stories.js","./props/formatsAgendaTimeFormat.stories.js":"./stories/props/formatsAgendaTimeFormat.stories.js","./props/formatsAgendaTimeRangeFormat.stories.js":"./stories/props/formatsAgendaTimeRangeFormat.stories.js","./props/formatsDateFormat.stories.js":"./stories/props/formatsDateFormat.stories.js","./props/formatsDayFormat.stories.js":"./stories/props/formatsDayFormat.stories.js","./props/formatsDayHeaderFormat.stories.js":"./stories/props/formatsDayHeaderFormat.stories.js","./props/formatsDayRangeHeaderFormat.stories.js":"./stories/props/formatsDayRangeHeaderFormat.stories.js","./props/formatsEventTimeRangeEndFormat.stories.js":"./stories/props/formatsEventTimeRangeEndFormat.stories.js","./props/formatsEventTimeRangeFormat.stories.js":"./stories/props/formatsEventTimeRangeFormat.stories.js","./props/formatsEventTimeRangeStartFormat.stories.js":"./stories/props/formatsEventTimeRangeStartFormat.stories.js","./props/formatsMonthHeaderFormat.stories.js":"./stories/props/formatsMonthHeaderFormat.stories.js","./props/formatsSelectRangeFormat.stories.js":"./stories/props/formatsSelectRangeFormat.stories.js","./props/formatsTimeGutterFormat.stories.js":"./stories/props/formatsTimeGutterFormat.stories.js","./props/formatsWeekdayFormat.stories.js":"./stories/props/formatsWeekdayFormat.stories.js","./props/getDrilldownView.stories.js":"./stories/props/getDrilldownView.stories.js","./props/getNow.stories.js":"./stories/props/getNow.stories.js","./props/length.stories.js":"./stories/props/length.stories.js","./props/localizer.stories.js":"./stories/props/localizer.stories.js","./props/longPressThreshold.stories.js":"./stories/props/longPressThreshold.stories.js","./props/max.stories.js":"./stories/props/max.stories.js","./props/messages.stories.js":"./stories/props/messages.stories.js","./props/min.stories.js":"./stories/props/min.stories.js","./props/onDoubleClickEvent.stories.js":"./stories/props/onDoubleClickEvent.stories.js","./props/onDrillDown.stories.js":"./stories/props/onDrillDown.stories.js","./props/onKeyPressEvent.stories.js":"./stories/props/onKeyPressEvent.stories.js","./props/onNavigate.stories.js":"./stories/props/onNavigate.stories.js","./props/onRangeChange.stories.js":"./stories/props/onRangeChange.stories.js","./props/onSelectEvent.stories.js":"./stories/props/onSelectEvent.stories.js","./props/onSelectSlot.stories.js":"./stories/props/onSelectSlot.stories.js","./props/onSelecting.stories.js":"./stories/props/onSelecting.stories.js","./props/onShowMore.stories.js":"./stories/props/onShowMore.stories.js","./props/onView.stories.js":"./stories/props/onView.stories.js","./props/popup.stories.js":"./stories/props/popup.stories.js","./props/popupOffset.stories.js":"./stories/props/popupOffset.stories.js","./props/resourceIdAccessor.stories.js":"./stories/props/resourceIdAccessor.stories.js","./props/resourceTitleAccessor.stories.js":"./stories/props/resourceTitleAccessor.stories.js","./props/resources.stories.js":"./stories/props/resources.stories.js","./props/rtl.stories.js":"./stories/props/rtl.stories.js","./props/scrollToTime.stories.js":"./stories/props/scrollToTime.stories.js","./props/selectable.stories.js":"./stories/props/selectable.stories.js","./props/selected.stories.js":"./stories/props/selected.stories.js","./props/showAllEvents.stories.js":"./stories/props/showAllEvents.stories.js","./props/showMultiDayTimes.stories.js":"./stories/props/showMultiDayTimes.stories.js","./props/slotGroupPropGetter.stories.js":"./stories/props/slotGroupPropGetter.stories.js","./props/slotPropGetter.stories.js":"./stories/props/slotPropGetter.stories.js","./props/startAccessor.stories.js":"./stories/props/startAccessor.stories.js","./props/step.stories.js":"./stories/props/step.stories.js","./props/timeslots.stories.js":"./stories/props/timeslots.stories.js","./props/titleAccessor.stories.js":"./stories/props/titleAccessor.stories.js","./props/toolbar.stories.js":"./stories/props/toolbar.stories.js","./props/tooltipAccessor.stories.js":"./stories/props/tooltipAccessor.stories.js","./props/view.stories.js":"./stories/props/view.stories.js","./props/views.stories.js":"./stories/props/views.stories.js"};function webpackContext(req){var id=webpackContextResolve(req);return __webpack_require__(id)}function webpackContextResolve(req){if(!__webpack_require__.o(map,req)){var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}return map[req]}webpackContext.keys=function webpackContextKeys(){return Object.keys(map)},webpackContext.resolve=webpackContextResolve,module.exports=webpackContext,webpackContext.id="./stories sync recursive ^\\.(?:(?:^%7C\\/%7C(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$"},"./stories sync recursive ^\\.(?:(?:^%7C\\/%7C(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$":function(module,__unused_webpack_exports,__webpack_require__){var map={"./AboutBigCalendar.stories.mdx":"./stories/AboutBigCalendar.stories.mdx","./AboutExamples.stories.mdx":"./stories/AboutExamples.stories.mdx","./addons/addOns.stories.mdx":"./stories/addons/addOns.stories.mdx","./addons/dragAndDrop/Introduction.stories.mdx":"./stories/addons/dragAndDrop/Introduction.stories.mdx","./addons/dragAndDrop/props/API.stories.mdx":"./stories/addons/dragAndDrop/props/API.stories.mdx","./demos/dragAndDrop.stories.mdx":"./stories/demos/dragAndDrop.stories.mdx","./guides/CustomStyling.stories.mdx":"./stories/guides/CustomStyling.stories.mdx","./guides/CustomView.stories.mdx":"./stories/guides/CustomView.stories.mdx","./guides/Dates.stories.mdx":"./stories/guides/Dates.stories.mdx","./guides/Timezones.stories.mdx":"./stories/guides/Timezones.stories.mdx","./guides/localizer.stories.mdx":"./stories/guides/localizer.stories.mdx","./props/API.stories.mdx":"./stories/props/API.stories.mdx"};function webpackContext(req){var id=webpackContextResolve(req);return __webpack_require__(id)}function webpackContextResolve(req){if(!__webpack_require__.o(map,req)){var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}return map[req]}webpackContext.keys=function webpackContextKeys(){return Object.keys(map)},webpackContext.resolve=webpackContextResolve,module.exports=webpackContext,webpackContext.id="./stories sync recursive ^\\.(?:(?:^%7C\\/%7C(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$"},"?4f7e":function(){},"./generated-stories-entry.cjs":function(module,__unused_webpack_exports,__webpack_require__){"use strict";module=__webpack_require__.nmd(module),(0,__webpack_require__("./node_modules/@storybook/react/dist/esm/client/index.js").configure)([__webpack_require__("./stories sync recursive ^\\.(?:(?:^%7C\\/%7C(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$"),__webpack_require__("./stories sync recursive ^\\.(?:(?:^%7C\\/%7C(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$")],module,!1)}},function(__webpack_require__){var __webpack_exec__=function(moduleId){return __webpack_require__(__webpack_require__.s=moduleId)};__webpack_require__.O(0,[879],(function(){return __webpack_exec__("./stories/resources/main.scss"),__webpack_exec__("./node_modules/@storybook/core-client/dist/esm/globals/polyfills.js"),__webpack_exec__("./node_modules/@storybook/core-client/dist/esm/globals/globals.js"),__webpack_exec__("./storybook-init-framework-entry.js"),__webpack_exec__("./node_modules/@storybook/react/dist/esm/client/docs/config-generated-config-entry.js"),__webpack_exec__("./node_modules/@storybook/react/dist/esm/client/preview/config-generated-config-entry.js"),__webpack_exec__("./node_modules/@storybook/addon-links/preview.js-generated-config-entry.js"),__webpack_exec__("./node_modules/@storybook/addon-docs/preview.js-generated-config-entry.js"),__webpack_exec__("./node_modules/@storybook/addon-actions/preview.js-generated-config-entry.js"),__webpack_exec__("./node_modules/@storybook/addon-backgrounds/preview.js-generated-config-entry.js"),__webpack_exec__("./node_modules/@storybook/addon-measure/preview.js-generated-config-entry.js"),__webpack_exec__("./node_modules/@storybook/addon-outline/preview.js-generated-config-entry.js"),__webpack_exec__("./.storybook/preview.js-generated-config-entry.js"),__webpack_exec__("./generated-stories-entry.cjs")}));__webpack_require__.O()}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QVcscUNBQ1gsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLE9BQVEscUNBQ1IsVUFBVyx3Q0FDWCxhQUFjLHdDQUNkLFVBQVcscUNBQ1gsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLE9BQVEscUNBQ1IsVUFBVyxxQ0FDWCxPQUFRLHFDQUNSLFVBQVcscUNBQ1gsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLE9BQVEscUNBQ1IsVUFBVyxxQ0FDWCxPQUFRLHFDQUNSLFVBQVcscUNBQ1gsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLE9BQVEscUNBQ1IsVUFBVyxxQ0FDWCxPQUFRLHFDQUNSLFVBQVcsd0NBQ1gsYUFBYyx3Q0FDZCxVQUFXLHdDQUNYLGFBQWMsd0NBQ2QsVUFBVyxxQ0FDWCxPQUFRLHFDQUNSLFVBQVcscUNBQ1gsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLFVBQVcsd0NBQ1gsYUFBYyx3Q0FDZCxVQUFXLHdDQUNYLGFBQWMsd0NBQ2QsVUFBVyx3Q0FDWCxhQUFjLHdDQUNkLFVBQVcsd0NBQ1gsYUFBYyx3Q0FDZCxVQUFXLHdDQUNYLGFBQWMsd0NBQ2QsVUFBVyx3Q0FDWCxhQUFjLHdDQUNkLFVBQVcsd0NBQ1gsYUFBYyx3Q0FDZCxVQUFXLHdDQUNYLGFBQWMsd0NBQ2QsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLE9BQVEscUNBQ1IsVUFBVyx3Q0FDWCxhQUFjLHdDQUNkLFVBQVcsd0NBQ1gsYUFBYyx3Q0FDZCxVQUFXLHdDQUNYLGFBQWMsd0NBQ2QsVUFBVyxxQ0FDWCxPQUFRLHFDQUNSLFVBQVcscUNBQ1gsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLE9BQVEscUNBQ1IsVUFBVyxxQ0FDWCxPQUFRLHFDQUNSLFVBQVcscUNBQ1gsUUFBUyxzQ0FDVCxXQUFZLHNDQUNaLE9BQVEscUNBQ1IsVUFBVyxxQ0FDWCxPQUFRLHFDQUNSLFVBQVcsd0NBQ1gsYUFBYyx3Q0FDZCxVQUFXLHdDQUNYLGFBQWMsd0NBQ2QsVUFBVyxxQ0FDWCxPQUFRLHFDQUNSLFVBQVcscUNBQ1gsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLE9BQVEscUNBQ1Is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Q0EsT0FBTzlXLElBQUlxekMsSUFDWixDQUNBRCxlQUFlNWlELEtBQU8sU0FBU2tqRCxxQkFDOUIsT0FBT2pqRCxPQUFPRCxLQUFLd1AsSUFDcEIsRUFDQW96QyxlQUFlTyxRQUFVTCxzQkFDekJKLE9BQU9GLFFBQVVJLGVBQ2pCQSxlQUFlaDVDLEdBQUssMEkseUxDekhwQixJQUFJNEYsSUFBTSxDQUNULGlDQUFrQyx5Q0FDbEMsOEJBQStCLHNDQUMvQiw4QkFBK0Isc0NBQy9CLGdEQUFpRCx3REFDakQsNkNBQThDLHFEQUM5QyxrQ0FBbUMsMENBQ25DLHFDQUFzQyw2Q0FDdEMsa0NBQW1DLDBDQUNuQyw2QkFBOEIscUNBQzlCLGlDQUFrQyx5Q0FDbEMsaUNBQWtDLHlDQUNsQywwQkFBMkIsbUNBSTVCLFNBQVNvekMsZUFBZUMsS0FDdkIsSUFBSWo1QyxHQUFLazVDLHNCQUFzQkQsS0FDL0IsT0FBT0Usb0JBQW9CbjVDLEdBQzVCLENBQ0EsU0FBU2s1QyxzQkFBc0JELEtBQzlCLElBQUlFLG9CQUFvQkMsRUFBRXh6QyxJQUFLcXpDLEtBQU0sQ0FDcEMsSUFBSXY4QixFQUFJLElBQUkyN0IsTUFBTSx1QkFBeUJZLElBQU0sS0FFakQsTUFEQXY4QixFQUFFMjhCLEtBQU8sbUJBQ0gzOEIsQ0FDUCxDQUNBLE9BQU85VyxJQUFJcXpDLElBQ1osQ0FDQUQsZUFBZTVpRCxLQUFPLFNBQVNrakQscUJBQzlCLE9BQU9qakQsT0FBT0QsS0FBS3dQLElBQ3BCLEVBQ0FvekMsZUFBZU8sUUFBVUwsc0JBQ3pCSixPQUFPRixRQUFVSSxlQUNqQkEsZUFBZWg1QyxHQUFLLHdILDBLQzVCcEIsRUFIMkIsb0JBQVEsNERBR1YyNUMsV0FBVyxDQUFDLDhJQUFrSCxpS0FBZ0liLFFBQVEsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uLy5zdG9yeWJvb2svcHJldmlldy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi8uc3Rvcnlib29rL3ByZXZpZXcuanMtZ2VuZXJhdGVkLWNvbmZpZy1lbnRyeS5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL0NhbGVuZGFyLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9EcmFnQW5kRHJvcC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvRHVyYXRpb25zLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9MYXlvdXQuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL1RpbWVzbG90cy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvZXhhbXBsZUNvZGUvZG5kLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL2Jhc2ljLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3Avb3V0c2lkZS5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL2RyYWdGcm9tT3V0c2lkZUl0ZW0ubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL2RyYWdGcm9tT3V0c2lkZUl0ZW0uc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9kcmFnZ2FibGVBY2Nlc3Nvci5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvZHJhZ2dhYmxlQWNjZXNzb3Iuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9vbkRyYWdPdmVyLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9vbkRyYWdPdmVyLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvb25EcmFnU3RhcnQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL29uRHJhZ1N0YXJ0LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvb25Ecm9wRnJvbU91dHNpZGUubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL29uRHJvcEZyb21PdXRzaWRlLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvb25FdmVudERyb3AubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL29uRXZlbnREcm9wLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvb25FdmVudFJlc2l6ZS5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvb25FdmVudFJlc2l6ZS5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL3Jlc2l6YWJsZS5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvcmVzaXphYmxlLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvcmVzaXphYmxlQWNjZXNzb3IubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL3Jlc2l6YWJsZUFjY2Vzc29yLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9leGFtcGxlQ29kZS9kbmRyZXNvdXJjZS5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9yZXNvdXJjZS5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcmVzb3VyY2VzL2JhY2tncm91bmRFdmVudHMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9leGFtcGxlQ29kZS9iYWNrZ3JvdW5kRXZlbnRzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvYmFja2dyb3VuZEV2ZW50cy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvYmFzaWMuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2V4YW1wbGVDb2RlL2N1bHR1cmVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvY3VsdHVyZXMuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2V4YW1wbGVDb2RlL2N1c3RvbVZpZXcuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9jdXN0b21WaWV3LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9leGFtcGxlQ29kZS9kYXlqcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2RheWpzLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9leGFtcGxlQ29kZS9sdXhvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2x1eG9uLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9leGFtcGxlQ29kZS9jcmVhdGVFdmVudFdpdGhOb092ZXJsYXAuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9ub092ZXJsYXAuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2V4YW1wbGVDb2RlL3BvcHVwLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvcG9wdXAuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2V4YW1wbGVDb2RlL3JlbmRlcmluZy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL3JlbmRlcmluZy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvZXhhbXBsZUNvZGUvcmVzb3VyY2UuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9yZXNvdXJjZS5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvZXhhbXBsZUNvZGUvc2VsZWN0YWJsZS5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL3NlbGVjdGFibGUuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2V4YW1wbGVDb2RlL3RpbWVzbG90cy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL3RpbWVzbG90cy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvZXhhbXBsZUNvZGUvdGltZXpvbmVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvdGltZXpvbmVzLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9hbGxEYXlBY2Nlc3Nvci5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9hbGxEYXlBY2Nlc3Nvci5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcmVzb3VyY2VzL2FsbERheUV2ZW50cy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2FsbERheU1heFJvd3MubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvYWxsRGF5TWF4Um93cy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvYmFja2dyb3VuZEV2ZW50cy5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9iYWNrZ3JvdW5kRXZlbnRzLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9jb21wb25lbnRzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2N1c3RvbUNvbXBvbmVudHMvQ3VzdG9tVG9vbGJhci5jb21wb25lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9jb21wb25lbnRzLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9jdWx0dXJlLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2N1bHR1cmUuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2RhdGUubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZGF0ZS5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZGF5TGF5b3V0QWxnb3JpdGhtLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2RheUxheW91dEFsZ29yaXRobS5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZGF5UHJvcEdldHRlci5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9kYXlQcm9wR2V0dGVyLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9kZWZhdWx0RGF0ZS5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9kZWZhdWx0RGF0ZS5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZGVmYXVsdFZpZXcubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZGVmYXVsdFZpZXcuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2RyaWxsZG93blZpZXcubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZHJpbGxkb3duVmlldy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZWxlbWVudFByb3BzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2VsZW1lbnRQcm9wcy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZW5kQWNjZXNzb3IubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZW5kQWNjZXNzb3Iuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2V2ZW50UHJvcEdldHRlci5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9ldmVudFByb3BHZXR0ZXIuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2V2ZW50cy5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9ldmVudHMuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHMubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0cy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0FnZW5kYURhdGVGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0FnZW5kYURhdGVGb3JtYXQuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNBZ2VuZGFIZWFkZXJGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0FnZW5kYUhlYWRlckZvcm1hdC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0FnZW5kYVRpbWVGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0FnZW5kYVRpbWVGb3JtYXQuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNBZ2VuZGFUaW1lUmFuZ2VGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0FnZW5kYVRpbWVSYW5nZUZvcm1hdC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0RhdGVGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0RhdGVGb3JtYXQuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNEYXlGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0RheUZvcm1hdC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0RheUhlYWRlckZvcm1hdC5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzRGF5SGVhZGVyRm9ybWF0LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzRGF5UmFuZ2VIZWFkZXJGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0RheVJhbmdlSGVhZGVyRm9ybWF0LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzRXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0V2ZW50VGltZVJhbmdlRW5kRm9ybWF0LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzRXZlbnRUaW1lUmFuZ2VGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0V2ZW50VGltZVJhbmdlRm9ybWF0LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzRXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdC5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzRXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c01vbnRoSGVhZGVyRm9ybWF0Lm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNNb250aEhlYWRlckZvcm1hdC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c1NlbGVjdFJhbmdlRm9ybWF0Lm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNTZWxlY3RSYW5nZUZvcm1hdC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c1RpbWVHdXR0ZXJGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c1RpbWVHdXR0ZXJGb3JtYXQuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNXZWVrZGF5Rm9ybWF0Lm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNXZWVrZGF5Rm9ybWF0LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9nZXREcmlsbGRvd25WaWV3Lm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2dldERyaWxsZG93blZpZXcuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2dldE5vdy5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9nZXROb3cuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2xlbmd0aC5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9sZW5ndGguc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2xvY2FsaXplci5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9sb2NhbGl6ZXIuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2xvbmdQcmVzc1RocmVzaG9sZC5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9sb25nUHJlc3NUaHJlc2hvbGQuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL21heC5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9tYXguc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL21lc3NhZ2VzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL21lc3NhZ2VzLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9taW4ubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvbWluLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9vbkRvdWJsZUNsaWNrRXZlbnQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25Eb3VibGVDbGlja0V2ZW50LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9vbkRyaWxsRG93bi5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9vbkRyaWxsRG93bi5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25LZXlQcmVzc0V2ZW50Lm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL29uS2V5UHJlc3NFdmVudC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25OYXZpZ2F0ZS5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9vbk5hdmlnYXRlLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9vblJhbmdlQ2hhbmdlLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL29uUmFuZ2VDaGFuZ2Uuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL29uU2VsZWN0RXZlbnQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25TZWxlY3RFdmVudC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25TZWxlY3RTbG90Lm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL29uU2VsZWN0U2xvdC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25TZWxlY3RpbmcubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25TZWxlY3Rpbmcuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL29uU2hvd01vcmUubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25TaG93TW9yZS5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25WaWV3Lm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL29uVmlldy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvcG9wdXAubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvcG9wdXAuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3BvcHVwT2Zmc2V0Lm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3BvcHVwT2Zmc2V0LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9yZXNvdXJjZUlkQWNjZXNzb3IubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvcmVzb3VyY2VJZEFjY2Vzc29yLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9yZXNvdXJjZVRpdGxlQWNjZXNzb3IubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvcmVzb3VyY2VUaXRsZUFjY2Vzc29yLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9yZXNvdXJjZXMubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvcmVzb3VyY2VzLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9ydGwubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvcnRsLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9zY3JvbGxUb1RpbWUubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvc2Nyb2xsVG9UaW1lLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9zZWxlY3RhYmxlLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3NlbGVjdGFibGUuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3NlbGVjdGVkLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3NlbGVjdGVkLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9zaG93QWxsRXZlbnRzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3Nob3dBbGxFdmVudHMuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3Nob3dNdWx0aURheVRpbWVzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3Nob3dNdWx0aURheVRpbWVzLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9zbG90R3JvdXBQcm9wR2V0dGVyLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3Nsb3RHcm91cFByb3BHZXR0ZXIuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3Nsb3RQcm9wR2V0dGVyLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3Nsb3RQcm9wR2V0dGVyLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9zdGFydEFjY2Vzc29yLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3N0YXJ0QWNjZXNzb3Iuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3N0ZXAubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvc3RlcC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvdGltZXNsb3RzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3RpbWVzbG90cy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvdGl0bGVBY2Nlc3Nvci5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy90aXRsZUFjY2Vzc29yLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy90b29sYmFyLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3Rvb2xiYXIuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3Rvb2x0aXBBY2Nlc3Nvci5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy90b29sdGlwQWNjZXNzb3Iuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3ZpZXcubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvdmlldy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvdmlld3MubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvdmlld3Muc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvQmFja2dyb3VuZFdyYXBwZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL0JhY2tncm91bmRDZWxscy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvRXZlbnRFbmRpbmdSb3cuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL1Njcm9sbGFibGVXZWVrV3JhcHBlci5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvdXRpbHMvRGF0ZVNsb3RNZXRyaWNzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9EYXRlQ29udGVudFJvdy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvRXZlbnRDZWxsLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9FdmVudFJvdy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvRXZlbnRSb3dNaXhpbi5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvSGVhZGVyLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9Ob29wV3JhcHBlci5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvUG9wdXAuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2hvb2tzL3VzZUNsaWNrT3V0c2lkZS5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvUG9wT3ZlcmxheS5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvU2VsZWN0aW9uLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy91dGlscy9UaW1lU2xvdHMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL3V0aWxzL2xheW91dC1hbGdvcml0aG1zL292ZXJsYXAuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL3V0aWxzL2xheW91dC1hbGdvcml0aG1zL25vLW92ZXJsYXAuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL3V0aWxzL0RheUV2ZW50TGF5b3V0LmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9UaW1lU2xvdEdyb3VwLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9EYXlDb2x1bW5XcmFwcGVyLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9EYXlDb2x1bW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL1RpbWVHdXR0ZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL1Jlc291cmNlSGVhZGVyLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9UaW1lR3JpZEhlYWRlci5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvdXRpbHMvUmVzb3VyY2VzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9UaW1lR3JpZC5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvVGltZUdyaWRFdmVudC5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvYWRkb25zL2RyYWdBbmREcm9wL0RuRENvbnRleHQuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2FkZG9ucy9kcmFnQW5kRHJvcC9FdmVudFdyYXBwZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2FkZG9ucy9kcmFnQW5kRHJvcC9jb21tb24uanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2FkZG9ucy9kcmFnQW5kRHJvcC9FdmVudENvbnRhaW5lcldyYXBwZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2FkZG9ucy9kcmFnQW5kRHJvcC9XZWVrV3JhcHBlci5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvYWRkb25zL2RyYWdBbmREcm9wL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9hZGRvbnMvZHJhZ0FuZERyb3Avd2l0aERyYWdBbmREcm9wLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9FdmVudFdyYXBwZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2xvY2FsaXplci5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvdXRpbHMvbWVzc2FnZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL0RhdGVIZWFkZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL01vbnRoLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9EYXkuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL1dlZWsuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL1dvcmtXZWVrLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9BZ2VuZGEuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL1ZpZXdzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9Ub29sYmFyLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9DYWxlbmRhci5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvdXRpbHMvbW92ZS5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvbG9jYWxpemVycy9tb21lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2xvY2FsaXplcnMvbHV4b24uanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2xvY2FsaXplcnMvb2xkR2xvYmFsaXplLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9sb2NhbGl6ZXJzL2dsb2JhbGl6ZS5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvbG9jYWxpemVycy9kYXRlLWZucy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvbG9jYWxpemVycy9kYXlqcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL3V0aWxzL2FjY2Vzc29ycy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy91dGlscy9kYXRlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvdXRpbHMvZXZlbnRMZXZlbHMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL3V0aWxzL2hlbHBlcnMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL3V0aWxzL3Byb3BUeXBlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvdXRpbHMvc2VsZWN0aW9uLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvRGVtb0xpbmsuY29tcG9uZW50LmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvVGltZXpvbmVTZWxlY3QuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9leGFtcGxlQ29kZS9iYXNpYy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2V4YW1wbGVDb2RlL2RuZE91dHNpZGVTb3VyY2UuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9leGFtcGxlQ29kZS9yZXNpemFibGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9oZWxwZXJzL2NyZWF0ZUV2ZW50cy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2hlbHBlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9zdG9yeURlZmF1bHRzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcmVzb3VyY2VzL0NhcmQuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9yZXNvdXJjZXMvQ3VzdG9tRGF5Q29sdW1uV3JhcHBlci5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Jlc291cmNlcy9jdXN0b21Db21wb25lbnRzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcmVzb3VyY2VzL2V2ZW50cy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Jlc291cmNlcy9yZXNvdXJjZUV2ZW50cy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL0Fib3V0QmlnQ2FsZW5kYXIuc3Rvcmllcy5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9BYm91dEV4YW1wbGVzLnN0b3JpZXMubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2FkZE9ucy5zdG9yaWVzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9JbnRyb2R1Y3Rpb24uc3Rvcmllcy5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvQVBJLnN0b3JpZXMubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvZHJhZ0FuZERyb3Auc3Rvcmllcy5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9ndWlkZXMvQ3VzdG9tU3R5bGluZy5zdG9yaWVzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2d1aWRlcy9DdXN0b21WaWV3LnN0b3JpZXMubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZ3VpZGVzL0RhdGVzLnN0b3JpZXMubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZ3VpZGVzL1RpbWV6b25lcy5zdG9yaWVzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2d1aWRlcy9sb2NhbGl6ZXIuc3Rvcmllcy5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9BUEkuc3Rvcmllcy5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2FkZG9ucy9kcmFnQW5kRHJvcC9zdHlsZXMuc2NzcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvc2Fzcy9zdHlsZXMuc2NzcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Jlc291cmNlcy9jdXN0b21Ub29sYmFyLnNjc3MiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9yZXNvdXJjZXMvbWFpbi5zY3NzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcmVzb3VyY2VzL3Byb3BHZXR0ZXIuc2NzcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2V4YW1wbGVDb2RlL3JlbmRlcmluZy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS8gc3luYyBeXFwuXFwvLiokIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9hZGRvbnMvZHJhZ0FuZERyb3Avc3R5bGVzLnNjc3M/N2NmMCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvc2Fzcy9zdHlsZXMuc2Nzcz8xOGZlIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcmVzb3VyY2VzL2N1c3RvbVRvb2xiYXIuc2Nzcz9hNTRlIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcmVzb3VyY2VzL21haW4uc2Nzcz84MjQ4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcmVzb3VyY2VzL3Byb3BHZXR0ZXIuc2Nzcz9mMjc5Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvZXhhbXBsZUNvZGUvcmVuZGVyaW5nLm1vZHVsZS5zY3NzPzJmNDAiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy8gc3luYyBeXFwuKD84YzljIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvIHN5bmMgXlxcLigiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vZ2VuZXJhdGVkLXN0b3JpZXMtZW50cnkuY2pzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBwYXJhbWV0ZXJzID0ge1xuICBhY3Rpb25zOiB7IGFyZ1R5cGVzUmVnZXg6ICdeb25bQS1aXS4qJyB9LFxuICBjb250cm9sczoge1xuICAgIC8vIFRPRE86IHJlZmFjdG9yIGpzRG9jcyBpbiBDYWxlbmRhciBjb250cm9sXG4gICAgLy9leHBhbmRlZDogdHJ1ZSxcbiAgICBtYXRjaGVyczoge1xuICAgICAgY29sb3I6IC8oYmFja2dyb3VuZHxjb2xvcikkL2ksXG4gICAgICBkYXRlOiAvRGF0ZSQvLFxuICAgIH0sXG4gIH0sXG4gIHN0b3J5U29ydDoge1xuICAgIG9yZGVyOiBbXG4gICAgICAnQWJvdXQgQmlnIENhbGVuZGFyJyxcbiAgICAgICdBYm91dCBPdXIgRXhhbXBsZXMnLFxuICAgICAgJ3Byb3BzJyxcbiAgICAgICdFeGFtcGxlcycsXG4gICAgICAnR3VpZGVzJyxcbiAgICAgICdBZGRvbnMnLFxuICAgICAgWydJbnRyb2R1Y3Rpb24nLCAncHJvcHMnXSxcbiAgICBdLFxuICB9LFxuICB2aWV3TW9kZTogJ2RvY3MnLFxufVxuIiwiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGVudW1lcmFibGVPbmx5ICYmIChzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSkpLCBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IG51bGwgIT0gYXJndW1lbnRzW2ldID8gYXJndW1lbnRzW2ldIDoge307IGkgJSAyID8gb3duS2V5cyhPYmplY3Qoc291cmNlKSwgITApLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSkgOiBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCB7IGFkZERlY29yYXRvciwgYWRkUGFyYW1ldGVycywgYWRkTG9hZGVyLCBhZGRBcmdzLCBhZGRBcmdUeXBlcywgYWRkQXJnc0VuaGFuY2VyLCBhZGRBcmdUeXBlc0VuaGFuY2VyLCBzZXRHbG9iYWxSZW5kZXIgfSBmcm9tICcvaG9tZS9ydW5uZXIvd29yay9yZWFjdC1iaWctY2FsZW5kYXIvcmVhY3QtYmlnLWNhbGVuZGFyL25vZGVfbW9kdWxlcy9Ac3Rvcnlib29rL2NsaWVudC1hcGknO1xuaW1wb3J0ICogYXMgY29uZmlnIGZyb20gJy9ob21lL3J1bm5lci93b3JrL3JlYWN0LWJpZy1jYWxlbmRhci9yZWFjdC1iaWctY2FsZW5kYXIvLnN0b3J5Ym9vay9wcmV2aWV3LmpzJztcbk9iamVjdC5rZXlzKGNvbmZpZykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIHZhciB2YWx1ZSA9IGNvbmZpZ1trZXldO1xuXG4gIHN3aXRjaCAoa2V5KSB7XG4gICAgY2FzZSAnYXJncyc6XG4gICAgICB7XG4gICAgICAgIHJldHVybiBhZGRBcmdzKHZhbHVlKTtcbiAgICAgIH1cblxuICAgIGNhc2UgJ2FyZ1R5cGVzJzpcbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIGFkZEFyZ1R5cGVzKHZhbHVlKTtcbiAgICAgIH1cblxuICAgIGNhc2UgJ2RlY29yYXRvcnMnOlxuICAgICAge1xuICAgICAgICByZXR1cm4gdmFsdWUuZm9yRWFjaChmdW5jdGlvbiAoZGVjb3JhdG9yKSB7XG4gICAgICAgICAgcmV0dXJuIGFkZERlY29yYXRvcihkZWNvcmF0b3IsIGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICBjYXNlICdsb2FkZXJzJzpcbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmZvckVhY2goZnVuY3Rpb24gKGxvYWRlcikge1xuICAgICAgICAgIHJldHVybiBhZGRMb2FkZXIobG9hZGVyLCBmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgY2FzZSAncGFyYW1ldGVycyc6XG4gICAgICB7XG4gICAgICAgIHJldHVybiBhZGRQYXJhbWV0ZXJzKF9vYmplY3RTcHJlYWQoe30sIHZhbHVlKSwgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgY2FzZSAnYXJnVHlwZXNFbmhhbmNlcnMnOlxuICAgICAge1xuICAgICAgICByZXR1cm4gdmFsdWUuZm9yRWFjaChmdW5jdGlvbiAoZW5oYW5jZXIpIHtcbiAgICAgICAgICByZXR1cm4gYWRkQXJnVHlwZXNFbmhhbmNlcihlbmhhbmNlcik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgY2FzZSAnYXJnc0VuaGFuY2Vycyc6XG4gICAgICB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uIChlbmhhbmNlcikge1xuICAgICAgICAgIHJldHVybiBhZGRBcmdzRW5oYW5jZXIoZW5oYW5jZXIpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgIGNhc2UgJ3JlbmRlcic6XG4gICAgICB7XG4gICAgICAgIHJldHVybiBzZXRHbG9iYWxSZW5kZXIodmFsdWUpO1xuICAgICAgfVxuXG4gICAgY2FzZSAnZ2xvYmFscyc6XG4gICAgY2FzZSAnZ2xvYmFsVHlwZXMnOlxuICAgICAge1xuICAgICAgICB2YXIgdiA9IHt9O1xuICAgICAgICB2W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIGFkZFBhcmFtZXRlcnModiwgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgY2FzZSAnX19uYW1lZEV4cG9ydHNPcmRlcic6XG4gICAgY2FzZSAnZGVjb3JhdGVTdG9yeSc6XG4gICAgY2FzZSAncmVuZGVyVG9ET00nOlxuICAgICAge1xuICAgICAgICByZXR1cm4gbnVsbDsgLy8gVGhpcyBrZXkgaXMgbm90IGhhbmRsZWQgZGlyZWN0bHkgaW4gdjYgbW9kZS5cbiAgICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItdGVtcGxhdGVcbiAgICAgICAgcmV0dXJuIGNvbnNvbGUubG9nKGtleSArICcgd2FzIG5vdCBzdXBwb3J0ZWQgOiggIScpO1xuICAgICAgfVxuICB9XG59KTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgeyBhY3Rpb24gfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWFjdGlvbnMnXFxuXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAnLi4vc3JjJ1xcblxcbmltcG9ydCB7XFxuICBldmVudHMsXFxuICBDYWxlbmRhciBhcyBCYXNlQ2FsZW5kYXIsXFxuICBWaWV3cyxcXG4gIHJlc291cmNlRXZlbnRzLFxcbiAgcmVzb3VyY2VzLFxcbn0gZnJvbSAnLi9oZWxwZXJzJ1xcblxcbmltcG9ydCBjcmVhdGVFdmVudHMgZnJvbSAnLi9oZWxwZXJzL2NyZWF0ZUV2ZW50cydcXG5pbXBvcnQgY3VzdG9tQ29tcG9uZW50cyBmcm9tICcuL3Jlc291cmNlcy9jdXN0b21Db21wb25lbnRzJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkaXRpb25hbCBFeGFtcGxlcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgZGVjb3JhdG9yczogW1xcbiAgICAoU3RvcnkpID0+IChcXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICAgIDxTdG9yeSAvPlxcbiAgICAgIDwvZGl2PlxcbiAgICApLFxcbiAgXSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gPEJhc2VDYWxlbmRhciB7Li4uYXJnc30gLz5cXG5cXG5leHBvcnQgY29uc3QgQ29tcGxleERheVZpZXdMYXlvdXQgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkNvbXBsZXhEYXlWaWV3TGF5b3V0LnN0b3J5TmFtZSA9ICdjb21wbGV4IGRheSB2aWV3IGxheW91dCdcXG5Db21wbGV4RGF5Vmlld0xheW91dC5hcmdzID0ge1xcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgpLFxcbiAgZXZlbnRzOiBjcmVhdGVFdmVudHMoMSksXFxuICBzdGVwOiAzMCxcXG59XFxuXFxuY29uc3QgVGltZUd1dHRlciA9ICgpID0+IDxwPkN1c3RvbSBndXR0ZXIgdGV4dDwvcD5cXG5cXG5leHBvcnQgY29uc3QgQ3VzdG9tVGltZUd1dHRlckhlYWRlciA9IFRlbXBsYXRlLmJpbmQoe30pXFxuQ3VzdG9tVGltZUd1dHRlckhlYWRlci5zdG9yeU5hbWUgPSAnY3VzdG9tIFRpbWVHdXR0ZXIgaGVhZGVyJ1xcbkN1c3RvbVRpbWVHdXR0ZXJIZWFkZXIuYXJncyA9IHtcXG4gIHBvcHVwOiB0cnVlLFxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxcbiAgb25TZWxlY3RFdmVudDogYWN0aW9uKCdldmVudCBzZWxlY3RlZCcpLFxcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXFxuICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXFxuICBjb21wb25lbnRzOiB7XFxuICAgIHRpbWVHdXR0ZXJIZWFkZXI6IFRpbWVHdXR0ZXIsXFxuICB9LFxcbn1cXG5cXG5leHBvcnQgY29uc3QgQ3VzdG9tVGltZUd1dHRlcldyYXBwZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkN1c3RvbVRpbWVHdXR0ZXJXcmFwcGVyLnN0b3J5TmFtZSA9ICdjdXN0b20gVGltZUd1dHRlciB3cmFwcGVyJ1xcbkN1c3RvbVRpbWVHdXR0ZXJXcmFwcGVyLmFyZ3MgPSB7XFxuICBwb3B1cDogdHJ1ZSxcXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcXG4gIG9uU2VsZWN0RXZlbnQ6IGFjdGlvbignZXZlbnQgc2VsZWN0ZWQnKSxcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVldLFxcbiAgY29tcG9uZW50czoge1xcbiAgICB0aW1lR3V0dGVyV3JhcHBlcjogY3VzdG9tQ29tcG9uZW50cy50aW1lR3V0dGVyV3JhcHBlcixcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBjb25zdCBDdXN0b21EYXRlQ2VsbFdyYXBwZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkN1c3RvbURhdGVDZWxsV3JhcHBlci5zdG9yeU5hbWUgPSAnYWRkIGN1c3RvbSBkYXRlQ2VsbFdyYXBwZXInXFxuQ3VzdG9tRGF0ZUNlbGxXcmFwcGVyLmFyZ3MgPSB7XFxuICBkZWZhdWx0VmlldzogVmlld3MuTU9OVEgsXFxuICBldmVudHMsXFxuICBjb21wb25lbnRzOiB7XFxuICAgIGRhdGVDZWxsV3JhcHBlcjogY3VzdG9tQ29tcG9uZW50cy5kYXRlQ2VsbFdyYXBwZXIsXFxuICB9LFxcbn1cXG5cXG5leHBvcnQgY29uc3QgQ3VzdG9tVGltZVNsb3RXcmFwcGVyID0gVGVtcGxhdGUuYmluZCh7fSlcXG5DdXN0b21UaW1lU2xvdFdyYXBwZXIuc3RvcnlOYW1lID0gJ2FkZCBjdXN0b20gdGltZVNsb3RXcmFwcGVyJ1xcbkN1c3RvbVRpbWVTbG90V3JhcHBlci5hcmdzID0ge1xcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcXG4gIGV2ZW50cyxcXG4gIGNvbXBvbmVudHM6IHtcXG4gICAgdGltZVNsb3RXcmFwcGVyOiBjdXN0b21Db21wb25lbnRzLnRpbWVTbG90V3JhcHBlcixcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBjb25zdCBDdXN0b21FdmVudFdyYXBwZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkN1c3RvbUV2ZW50V3JhcHBlci5zdG9yeU5hbWUgPSAnYWRkIGN1c3RvbSBldmVudFdyYXBwZXInXFxuQ3VzdG9tRXZlbnRXcmFwcGVyLmFyZ3MgPSB7XFxuICBkZWZhdWx0VmlldzogVmlld3MuREFZLFxcbiAgZXZlbnRzLFxcbiAgY29tcG9uZW50czoge1xcbiAgICBldmVudFdyYXBwZXI6IGN1c3RvbUNvbXBvbmVudHMuZXZlbnRXcmFwcGVyLFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IEN1c3RvbU5vQWdlbmRhRXZlbnRzTGFiZWwgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkN1c3RvbU5vQWdlbmRhRXZlbnRzTGFiZWwuc3RvcnlOYW1lID0gJ2FkZCBjdXN0b20gbm8gYWdlbmRhIGV2ZW50cyBsYWJlbCdcXG5DdXN0b21Ob0FnZW5kYUV2ZW50c0xhYmVsLmFyZ3MgPSB7XFxuICBkZWZhdWx0VmlldzogVmlld3MuQUdFTkRBLFxcbiAgZXZlbnRzLFxcbiAgbWVzc2FnZXM6IHtcXG4gICAgbm9FdmVudHNJblJhbmdlOiAnVGhlcmUgYXJlIG5vIHNwZWNpYWwgZXZlbnRzIGluIHRoaXMgcmFuZ2UgW3Rlc3QgbWVzc2FnZV0nLFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IEN1c3RvbURheUNvbHVtbldyYXBwZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkN1c3RvbURheUNvbHVtbldyYXBwZXIuc3RvcnlOYW1lID0gJ2FkZCBjdXN0b20gZGF5Q29sdW1uV3JhcHBlcidcXG5DdXN0b21EYXlDb2x1bW5XcmFwcGVyLmFyZ3MgPSB7XFxuICBkZWZhdWx0VmlldzogVmlld3MuREFZLFxcbiAgZXZlbnRzOiByZXNvdXJjZUV2ZW50cyxcXG4gIHJlc291cmNlczogcmVzb3VyY2VzLFxcbiAgcmVzb3VyY2VBY2Nlc3NvcjogJ3Jlc291cmNlSWQnLFxcbiAgcmVzb3VyY2VJZEFjY2Vzc29yOiAnaWQnLFxcbiAgcmVzb3VyY2VUaXRsZUFjY2Vzc29yOiAnbmFtZScsXFxuICBjb21wb25lbnRzOiB7XFxuICAgIGRheUNvbHVtbldyYXBwZXI6IGN1c3RvbUNvbXBvbmVudHMuZGF5Q29sdW1uV3JhcHBlcixcXG4gIH0sXFxufVxcbkN1c3RvbURheUNvbHVtbldyYXBwZXIucGFyYW1ldGVycyA9IHtcXG4gIGRvY3M6IHtcXG4gICAgZGVzY3JpcHRpb246IHtcXG4gICAgICBzdG9yeTpcXG4gICAgICAgICdUaGUgY3VzdG9tIERheUNvbHVtbldyYXBwZXIgYWxsb3dzIHlvdSB0byBhZGQgeW91ciBvd24gY3VzdG9tIGxvZ2ljIHdoZW4gcmVuZGVyaW5nIGEgRGF5IENvbHVtbi4nLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkNvbXBsZXhEYXlWaWV3TGF5b3V0XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMH0sXCJlbmRMb2NcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjozMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6NTMsXCJsaW5lXCI6MzB9fSxcIkN1c3RvbVRpbWVHdXR0ZXJIZWFkZXJcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZExvY1wiOntcImNvbFwiOjUzLFwibGluZVwiOjMwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZEJvZHlcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjozMH19LFwiQ3VzdG9tVGltZUd1dHRlcldyYXBwZXJcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZExvY1wiOntcImNvbFwiOjUzLFwibGluZVwiOjMwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZEJvZHlcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjozMH19LFwiQ3VzdG9tRGF0ZUNlbGxXcmFwcGVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMH0sXCJlbmRMb2NcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjozMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6NTMsXCJsaW5lXCI6MzB9fSxcIkN1c3RvbVRpbWVTbG90V3JhcHBlclwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzB9LFwiZW5kTG9jXCI6e1wiY29sXCI6NTMsXCJsaW5lXCI6MzB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzB9LFwiZW5kQm9keVwiOntcImNvbFwiOjUzLFwibGluZVwiOjMwfX0sXCJDdXN0b21FdmVudFdyYXBwZXJcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZExvY1wiOntcImNvbFwiOjUzLFwibGluZVwiOjMwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZEJvZHlcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjozMH19LFwiQ3VzdG9tTm9BZ2VuZGFFdmVudHNMYWJlbFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzB9LFwiZW5kTG9jXCI6e1wiY29sXCI6NTMsXCJsaW5lXCI6MzB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzB9LFwiZW5kQm9keVwiOntcImNvbFwiOjUzLFwibGluZVwiOjMwfX0sXCJDdXN0b21EYXlDb2x1bW5XcmFwcGVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMH0sXCJlbmRMb2NcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjozMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6NTMsXCJsaW5lXCI6MzB9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBhY3Rpb24gfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWFjdGlvbnMnXG5cbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAnLi4vc3JjJ1xuXG5pbXBvcnQge1xuICBldmVudHMsXG4gIENhbGVuZGFyIGFzIEJhc2VDYWxlbmRhcixcbiAgVmlld3MsXG4gIHJlc291cmNlRXZlbnRzLFxuICByZXNvdXJjZXMsXG59IGZyb20gJy4vaGVscGVycydcblxuaW1wb3J0IGNyZWF0ZUV2ZW50cyBmcm9tICcuL2hlbHBlcnMvY3JlYXRlRXZlbnRzJ1xuaW1wb3J0IGN1c3RvbUNvbXBvbmVudHMgZnJvbSAnLi9yZXNvdXJjZXMvY3VzdG9tQ29tcG9uZW50cydcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0FkZGl0aW9uYWwgRXhhbXBsZXMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBkZWNvcmF0b3JzOiBbXG4gICAgKFN0b3J5KSA9PiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgICA8U3RvcnkgLz5cbiAgICAgIDwvZGl2PlxuICAgICksXG4gIF0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IDxCYXNlQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XG5cbmV4cG9ydCBjb25zdCBDb21wbGV4RGF5Vmlld0xheW91dCA9IFRlbXBsYXRlLmJpbmQoe30pO1xuQ29tcGxleERheVZpZXdMYXlvdXQuc3RvcnlOYW1lID0gJ2NvbXBsZXggZGF5IHZpZXcgbGF5b3V0J1xuQ29tcGxleERheVZpZXdMYXlvdXQuYXJncyA9IHtcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKCksXG4gIGV2ZW50czogY3JlYXRlRXZlbnRzKDEpLFxuICBzdGVwOiAzMCxcbn1cblxuY29uc3QgVGltZUd1dHRlciA9ICgpID0+IDxwPkN1c3RvbSBndXR0ZXIgdGV4dDwvcD5cblxuZXhwb3J0IGNvbnN0IEN1c3RvbVRpbWVHdXR0ZXJIZWFkZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KTtcbkN1c3RvbVRpbWVHdXR0ZXJIZWFkZXIuc3RvcnlOYW1lID0gJ2N1c3RvbSBUaW1lR3V0dGVyIGhlYWRlcidcbkN1c3RvbVRpbWVHdXR0ZXJIZWFkZXIuYXJncyA9IHtcbiAgcG9wdXA6IHRydWUsXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgb25TZWxlY3RFdmVudDogYWN0aW9uKCdldmVudCBzZWxlY3RlZCcpLFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMSksXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICB0aW1lR3V0dGVySGVhZGVyOiBUaW1lR3V0dGVyLFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgQ3VzdG9tVGltZUd1dHRlcldyYXBwZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KTtcbkN1c3RvbVRpbWVHdXR0ZXJXcmFwcGVyLnN0b3J5TmFtZSA9ICdjdXN0b20gVGltZUd1dHRlciB3cmFwcGVyJ1xuQ3VzdG9tVGltZUd1dHRlcldyYXBwZXIuYXJncyA9IHtcbiAgcG9wdXA6IHRydWUsXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgb25TZWxlY3RFdmVudDogYWN0aW9uKCdldmVudCBzZWxlY3RlZCcpLFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMSksXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICB0aW1lR3V0dGVyV3JhcHBlcjogY3VzdG9tQ29tcG9uZW50cy50aW1lR3V0dGVyV3JhcHBlcixcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEN1c3RvbURhdGVDZWxsV3JhcHBlciA9IFRlbXBsYXRlLmJpbmQoe30pO1xuQ3VzdG9tRGF0ZUNlbGxXcmFwcGVyLnN0b3J5TmFtZSA9ICdhZGQgY3VzdG9tIGRhdGVDZWxsV3JhcHBlcidcbkN1c3RvbURhdGVDZWxsV3JhcHBlci5hcmdzID0ge1xuICBkZWZhdWx0VmlldzogVmlld3MuTU9OVEgsXG4gIGV2ZW50cyxcbiAgY29tcG9uZW50czoge1xuICAgIGRhdGVDZWxsV3JhcHBlcjogY3VzdG9tQ29tcG9uZW50cy5kYXRlQ2VsbFdyYXBwZXIsXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBDdXN0b21UaW1lU2xvdFdyYXBwZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KTtcbkN1c3RvbVRpbWVTbG90V3JhcHBlci5zdG9yeU5hbWUgPSAnYWRkIGN1c3RvbSB0aW1lU2xvdFdyYXBwZXInXG5DdXN0b21UaW1lU2xvdFdyYXBwZXIuYXJncyA9IHtcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcbiAgZXZlbnRzLFxuICBjb21wb25lbnRzOiB7XG4gICAgdGltZVNsb3RXcmFwcGVyOiBjdXN0b21Db21wb25lbnRzLnRpbWVTbG90V3JhcHBlcixcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEN1c3RvbUV2ZW50V3JhcHBlciA9IFRlbXBsYXRlLmJpbmQoe30pO1xuQ3VzdG9tRXZlbnRXcmFwcGVyLnN0b3J5TmFtZSA9ICdhZGQgY3VzdG9tIGV2ZW50V3JhcHBlcidcbkN1c3RvbUV2ZW50V3JhcHBlci5hcmdzID0ge1xuICBkZWZhdWx0VmlldzogVmlld3MuREFZLFxuICBldmVudHMsXG4gIGNvbXBvbmVudHM6IHtcbiAgICBldmVudFdyYXBwZXI6IGN1c3RvbUNvbXBvbmVudHMuZXZlbnRXcmFwcGVyLFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgQ3VzdG9tTm9BZ2VuZGFFdmVudHNMYWJlbCA9IFRlbXBsYXRlLmJpbmQoe30pO1xuQ3VzdG9tTm9BZ2VuZGFFdmVudHNMYWJlbC5zdG9yeU5hbWUgPSAnYWRkIGN1c3RvbSBubyBhZ2VuZGEgZXZlbnRzIGxhYmVsJ1xuQ3VzdG9tTm9BZ2VuZGFFdmVudHNMYWJlbC5hcmdzID0ge1xuICBkZWZhdWx0VmlldzogVmlld3MuQUdFTkRBLFxuICBldmVudHMsXG4gIG1lc3NhZ2VzOiB7XG4gICAgbm9FdmVudHNJblJhbmdlOiAnVGhlcmUgYXJlIG5vIHNwZWNpYWwgZXZlbnRzIGluIHRoaXMgcmFuZ2UgW3Rlc3QgbWVzc2FnZV0nLFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgQ3VzdG9tRGF5Q29sdW1uV3JhcHBlciA9IFRlbXBsYXRlLmJpbmQoe30pO0N1c3RvbURheUNvbHVtbldyYXBwZXIuc3RvcnlOYW1lID0gJ2FkZCBjdXN0b20gZGF5Q29sdW1uV3JhcHBlcidcbkN1c3RvbURheUNvbHVtbldyYXBwZXIuYXJncyA9IHtcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcbiAgZXZlbnRzOiByZXNvdXJjZUV2ZW50cyxcbiAgcmVzb3VyY2VzOiByZXNvdXJjZXMsXG4gIHJlc291cmNlQWNjZXNzb3I6ICdyZXNvdXJjZUlkJyxcbiAgcmVzb3VyY2VJZEFjY2Vzc29yOiAnaWQnLFxuICByZXNvdXJjZVRpdGxlQWNjZXNzb3I6ICduYW1lJyxcbiAgY29tcG9uZW50czoge1xuICAgIGRheUNvbHVtbldyYXBwZXI6IGN1c3RvbUNvbXBvbmVudHMuZGF5Q29sdW1uV3JhcHBlcixcbiAgfSxcbn1cbkN1c3RvbURheUNvbHVtbldyYXBwZXIucGFyYW1ldGVycyA9IHtcbiAgZG9jczoge1xuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICBzdG9yeTpcbiAgICAgICAgJ1RoZSBjdXN0b20gRGF5Q29sdW1uV3JhcHBlciBhbGxvd3MgeW91IHRvIGFkZCB5b3VyIG93biBjdXN0b20gbG9naWMgd2hlbiByZW5kZXJpbmcgYSBEYXkgQ29sdW1uLicsXG4gICAgfSxcbiAgfSxcbn1cblxuXG5cbkNvbXBsZXhEYXlWaWV3TGF5b3V0LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gPEJhc2VDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5Db21wbGV4RGF5Vmlld0xheW91dC5wYXJhbWV0ZXJzIH07XG5DdXN0b21UaW1lR3V0dGVySGVhZGVyLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gPEJhc2VDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5DdXN0b21UaW1lR3V0dGVySGVhZGVyLnBhcmFtZXRlcnMgfTtcbkN1c3RvbVRpbWVHdXR0ZXJXcmFwcGVyLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gPEJhc2VDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5DdXN0b21UaW1lR3V0dGVyV3JhcHBlci5wYXJhbWV0ZXJzIH07XG5DdXN0b21EYXRlQ2VsbFdyYXBwZXIucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiA8QmFzZUNhbGVuZGFyIHsuLi5hcmdzfSAvPlwiIH0sIC4uLkN1c3RvbURhdGVDZWxsV3JhcHBlci5wYXJhbWV0ZXJzIH07XG5DdXN0b21UaW1lU2xvdFdyYXBwZXIucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiA8QmFzZUNhbGVuZGFyIHsuLi5hcmdzfSAvPlwiIH0sIC4uLkN1c3RvbVRpbWVTbG90V3JhcHBlci5wYXJhbWV0ZXJzIH07XG5DdXN0b21FdmVudFdyYXBwZXIucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiA8QmFzZUNhbGVuZGFyIHsuLi5hcmdzfSAvPlwiIH0sIC4uLkN1c3RvbUV2ZW50V3JhcHBlci5wYXJhbWV0ZXJzIH07XG5DdXN0b21Ob0FnZW5kYUV2ZW50c0xhYmVsLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gPEJhc2VDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5DdXN0b21Ob0FnZW5kYUV2ZW50c0xhYmVsLnBhcmFtZXRlcnMgfTtcbkN1c3RvbURheUNvbHVtbldyYXBwZXIucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiA8QmFzZUNhbGVuZGFyIHsuLi5hcmdzfSAvPlwiIH0sIC4uLkN1c3RvbURheUNvbHVtbldyYXBwZXIucGFyYW1ldGVycyB9OyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCB7IGFjdGlvbiB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tYWN0aW9ucydcXG5cXG5pbXBvcnQge1xcbiAgZXZlbnRzLFxcbiAgcmVzb3VyY2VFdmVudHMsXFxuICByZXNvdXJjZXMsXFxuICBDYWxlbmRhcixcXG4gIFZpZXdzLFxcbiAgRHJhZ0FuZERyb3BDYWxlbmRhcixcXG59IGZyb20gJy4vaGVscGVycydcXG5pbXBvcnQgY3VzdG9tQ29tcG9uZW50cyBmcm9tICcuL3Jlc291cmNlcy9jdXN0b21Db21wb25lbnRzJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkaXRpb25hbCBFeGFtcGxlcy9EcmFnIGFuZCBEcm9wJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBkZWNvcmF0b3JzOiBbXFxuICAgIChTdG9yeSkgPT4gKFxcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgICAgPFN0b3J5IC8+XFxuICAgICAgPC9kaXY+XFxuICAgICksXFxuICBdLFxcbn1cXG5cXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPERyYWdBbmREcm9wQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IERyYWdnYWJsZUFuZFJlc2l6YWJsZSA9IFRlbXBsYXRlLmJpbmQoe30pXFxuRHJhZ2dhYmxlQW5kUmVzaXphYmxlLnN0b3J5TmFtZSA9ICdkcmFnZ2FibGUgYW5kIHJlc2l6YWJsZSdcXG5EcmFnZ2FibGVBbmRSZXNpemFibGUuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgpLFxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXFxuICBldmVudHMsXFxuICByZXNpemFibGU6IHRydWUsXFxuICBvbkV2ZW50RHJvcDogYWN0aW9uKCdldmVudCBkcm9wcGVkJyksXFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IEN1c3RvbVN0ZXBzQW5kVGltZXNsb3RzID0gVGVtcGxhdGUuYmluZCh7fSlcXG5DdXN0b21TdGVwc0FuZFRpbWVzbG90cy5zdG9yeU5hbWUgPVxcbiAgJ2RyYWdnYWJsZSBhbmQgcmVzaXphYmxlIHdpdGggbm9uLWRlZmF1bHQgc3RlcHMgYW5kIHRpbWVzbG90cydcXG5DdXN0b21TdGVwc0FuZFRpbWVzbG90cy5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKCksXFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcXG4gIGV2ZW50cyxcXG4gIHJlc2l6YWJsZTogdHJ1ZSxcXG4gIG9uRXZlbnREcm9wOiBhY3Rpb24oJ2V2ZW50IGRyb3BwZWQnKSxcXG4gIG9uRXZlbnRSZXNpemU6IGFjdGlvbignZXZlbnQgcmVzaXplZCcpLFxcbiAgc3RlcHM6IDE1LFxcbiAgdGltZXNsb3RzOiA0LFxcbn1cXG5cXG5leHBvcnQgY29uc3QgV2l0aE11bHRpRGF5VGltZXMgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbldpdGhNdWx0aURheVRpbWVzLnN0b3J5TmFtZSA9ICdkcmFnZ2FibGUgYW5kIHJlc2l6YWJsZSB3aXRoIHNob3dNdWx0aURheVRpbWVzJ1xcbldpdGhNdWx0aURheVRpbWVzLmFyZ3MgPSB7XFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoKSxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgZXZlbnRzLFxcbiAgcmVzaXphYmxlOiB0cnVlLFxcbiAgc2hvd011bHRpRGF5VGltZXM6IHRydWUsXFxuICBvbkV2ZW50RHJvcDogYWN0aW9uKCdldmVudCBkcm9wcGVkJyksXFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IFdpdGhDdXN0b21EYXRlQ2VsbFdyYXBwZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbldpdGhDdXN0b21EYXRlQ2VsbFdyYXBwZXIuc3RvcnlOYW1lID1cXG4gICdkcmFnZ2FibGUgYW5kIHJlc2l6YWJsZSB3aXRoIGN1c3RvbSBkYXRlQ2VsbFdyYXBwZXInXFxuV2l0aEN1c3RvbURhdGVDZWxsV3JhcHBlci5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKCksXFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcXG4gIGV2ZW50cyxcXG4gIHJlc2l6YWJsZTogdHJ1ZSxcXG4gIHNob3dNdWx0aURheVRpbWVzOiB0cnVlLFxcbiAgb25FdmVudERyb3A6IGFjdGlvbignZXZlbnQgZHJvcHBlZCcpLFxcbiAgb25FdmVudFJlc2l6ZTogYWN0aW9uKCdldmVudCByZXNpemVkJyksXFxuICBjb21wb25lbnRzOiB7XFxuICAgIGRhdGVDZWxsV3JhcHBlcjogY3VzdG9tQ29tcG9uZW50cy5kYXRlQ2VsbFdyYXBwZXIsXFxuICB9LFxcbn1cXG5cXG5leHBvcnQgY29uc3QgV2l0aEN1c3RvbVRpbWVzbG90V3JhcHBlciA9IFRlbXBsYXRlLmJpbmQoe30pXFxuV2l0aEN1c3RvbVRpbWVzbG90V3JhcHBlci5zdG9yeU5hbWUgPVxcbiAgJ2RyYWdnYWJsZSBhbmQgcmVzaXphYmxlIHdpdGggY3VzdG9tIHRpbWVTbG90V3JhcHBlcidcXG5XaXRoQ3VzdG9tVGltZXNsb3RXcmFwcGVyLmFyZ3MgPSB7XFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoKSxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgZXZlbnRzLFxcbiAgcmVzaXphYmxlOiB0cnVlLFxcbiAgc2hvd011bHRpRGF5VGltZXM6IHRydWUsXFxuICBvbkV2ZW50RHJvcDogYWN0aW9uKCdldmVudCBkcm9wcGVkJyksXFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcXG4gIGNvbXBvbmVudHM6IHtcXG4gICAgdGltZVNsb3RXcmFwcGVyOiBjdXN0b21Db21wb25lbnRzLnRpbWVTbG90V3JhcHBlcixcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBjb25zdCBXaXRoQ3VzdG9tRXZlbnRXcmFwcGVyID0gVGVtcGxhdGUuYmluZCh7fSlcXG5XaXRoQ3VzdG9tRXZlbnRXcmFwcGVyLnN0b3J5TmFtZSA9XFxuICAnZHJhZ2dhYmxlIGFuZCByZXNpemFibGUgd2l0aCBjdXN0b20gZXZlbnRXcmFwcGVyJ1xcbldpdGhDdXN0b21FdmVudFdyYXBwZXIuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgpLFxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXFxuICBldmVudHMsXFxuICByZXNpemFibGU6IHRydWUsXFxuICBzaG93TXVsdGlEYXlUaW1lczogdHJ1ZSxcXG4gIG9uRXZlbnREcm9wOiBhY3Rpb24oJ2V2ZW50IGRyb3BwZWQnKSxcXG4gIG9uRXZlbnRSZXNpemU6IGFjdGlvbignZXZlbnQgcmVzaXplZCcpLFxcbiAgY29tcG9uZW50czoge1xcbiAgICBldmVudFdyYXBwZXI6IGN1c3RvbUNvbXBvbmVudHMuZXZlbnRXcmFwcGVyLFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IERyYWdnYWJsZU11bHRpcGxlUmVzb3VyY2VzID0gVGVtcGxhdGUuYmluZCh7fSlcXG5EcmFnZ2FibGVNdWx0aXBsZVJlc291cmNlcy5zdG9yeU5hbWUgPVxcbiAgJ2RyYWdnYWJsZSBhbmQgcmVzaXphYmxlIHdpdGggbXVsdGlwbGUgcmVzb3VyY2UgbGFuZXMnXFxuRHJhZ2dhYmxlTXVsdGlwbGVSZXNvdXJjZXMuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgpLFxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcXG4gIHZpZXdzOiBbVmlld3MuREFZLCBWaWV3cy5XRUVLLCBWaWV3cy5BR0VOREFdLFxcbiAgZXZlbnRzOiByZXNvdXJjZUV2ZW50cyxcXG4gIHJlc291cmNlczogcmVzb3VyY2VzLFxcbiAgcmVzb3VyY2VBY2Nlc3NvcjogJ3Jlc291cmNlSWQnLFxcbiAgcmVzb3VyY2VJZEFjY2Vzc29yOiAnaWQnLFxcbiAgcmVzb3VyY2VUaXRsZUFjY2Vzc29yOiAnbmFtZScsXFxuICByZXNpemFibGU6IHRydWUsXFxuICBvbkV2ZW50RHJvcDogYWN0aW9uKCdldmVudCBkcm9wcGVkJyksXFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkRyYWdnYWJsZUFuZFJlc2l6YWJsZVwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjZ9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNn0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozMH19LFwiQ3VzdG9tU3RlcHNBbmRUaW1lc2xvdHNcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjI2fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MzB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjZ9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MzB9fSxcIldpdGhNdWx0aURheVRpbWVzXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNn0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI2fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMwfX0sXCJXaXRoQ3VzdG9tRGF0ZUNlbGxXcmFwcGVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNn0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI2fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMwfX0sXCJXaXRoQ3VzdG9tVGltZXNsb3RXcmFwcGVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNn0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI2fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMwfX0sXCJXaXRoQ3VzdG9tRXZlbnRXcmFwcGVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNn0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI2fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMwfX0sXCJEcmFnZ2FibGVNdWx0aXBsZVJlc291cmNlc1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjZ9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNn0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozMH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGFjdGlvbiB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tYWN0aW9ucydcblxuaW1wb3J0IHtcbiAgZXZlbnRzLFxuICByZXNvdXJjZUV2ZW50cyxcbiAgcmVzb3VyY2VzLFxuICBDYWxlbmRhcixcbiAgVmlld3MsXG4gIERyYWdBbmREcm9wQ2FsZW5kYXIsXG59IGZyb20gJy4vaGVscGVycydcbmltcG9ydCBjdXN0b21Db21wb25lbnRzIGZyb20gJy4vcmVzb3VyY2VzL2N1c3RvbUNvbXBvbmVudHMnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdBZGRpdGlvbmFsIEV4YW1wbGVzL0RyYWcgYW5kIERyb3AnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBkZWNvcmF0b3JzOiBbXG4gICAgKFN0b3J5KSA9PiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgICA8U3RvcnkgLz5cbiAgICAgIDwvZGl2PlxuICAgICksXG4gIF0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8RHJhZ0FuZERyb3BDYWxlbmRhciB7Li4uYXJnc30gLz5cbiAgPC9kaXY+XG4pXG5cbmV4cG9ydCBjb25zdCBEcmFnZ2FibGVBbmRSZXNpemFibGUgPSBUZW1wbGF0ZS5iaW5kKHt9KTtcbkRyYWdnYWJsZUFuZFJlc2l6YWJsZS5zdG9yeU5hbWUgPSAnZHJhZ2dhYmxlIGFuZCByZXNpemFibGUnXG5EcmFnZ2FibGVBbmRSZXNpemFibGUuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKCksXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICBldmVudHMsXG4gIHJlc2l6YWJsZTogdHJ1ZSxcbiAgb25FdmVudERyb3A6IGFjdGlvbignZXZlbnQgZHJvcHBlZCcpLFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcbn1cblxuZXhwb3J0IGNvbnN0IEN1c3RvbVN0ZXBzQW5kVGltZXNsb3RzID0gVGVtcGxhdGUuYmluZCh7fSk7XG5DdXN0b21TdGVwc0FuZFRpbWVzbG90cy5zdG9yeU5hbWUgPVxuICAnZHJhZ2dhYmxlIGFuZCByZXNpemFibGUgd2l0aCBub24tZGVmYXVsdCBzdGVwcyBhbmQgdGltZXNsb3RzJ1xuQ3VzdG9tU3RlcHNBbmRUaW1lc2xvdHMuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKCksXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICBldmVudHMsXG4gIHJlc2l6YWJsZTogdHJ1ZSxcbiAgb25FdmVudERyb3A6IGFjdGlvbignZXZlbnQgZHJvcHBlZCcpLFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcbiAgc3RlcHM6IDE1LFxuICB0aW1lc2xvdHM6IDQsXG59XG5cbmV4cG9ydCBjb25zdCBXaXRoTXVsdGlEYXlUaW1lcyA9IFRlbXBsYXRlLmJpbmQoe30pO1xuV2l0aE11bHRpRGF5VGltZXMuc3RvcnlOYW1lID0gJ2RyYWdnYWJsZSBhbmQgcmVzaXphYmxlIHdpdGggc2hvd011bHRpRGF5VGltZXMnXG5XaXRoTXVsdGlEYXlUaW1lcy5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXG4gIGV2ZW50cyxcbiAgcmVzaXphYmxlOiB0cnVlLFxuICBzaG93TXVsdGlEYXlUaW1lczogdHJ1ZSxcbiAgb25FdmVudERyb3A6IGFjdGlvbignZXZlbnQgZHJvcHBlZCcpLFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcbn1cblxuZXhwb3J0IGNvbnN0IFdpdGhDdXN0b21EYXRlQ2VsbFdyYXBwZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KTtcbldpdGhDdXN0b21EYXRlQ2VsbFdyYXBwZXIuc3RvcnlOYW1lID1cbiAgJ2RyYWdnYWJsZSBhbmQgcmVzaXphYmxlIHdpdGggY3VzdG9tIGRhdGVDZWxsV3JhcHBlcidcbldpdGhDdXN0b21EYXRlQ2VsbFdyYXBwZXIuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKCksXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICBldmVudHMsXG4gIHJlc2l6YWJsZTogdHJ1ZSxcbiAgc2hvd011bHRpRGF5VGltZXM6IHRydWUsXG4gIG9uRXZlbnREcm9wOiBhY3Rpb24oJ2V2ZW50IGRyb3BwZWQnKSxcbiAgb25FdmVudFJlc2l6ZTogYWN0aW9uKCdldmVudCByZXNpemVkJyksXG4gIGNvbXBvbmVudHM6IHtcbiAgICBkYXRlQ2VsbFdyYXBwZXI6IGN1c3RvbUNvbXBvbmVudHMuZGF0ZUNlbGxXcmFwcGVyLFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgV2l0aEN1c3RvbVRpbWVzbG90V3JhcHBlciA9IFRlbXBsYXRlLmJpbmQoe30pO1xuV2l0aEN1c3RvbVRpbWVzbG90V3JhcHBlci5zdG9yeU5hbWUgPVxuICAnZHJhZ2dhYmxlIGFuZCByZXNpemFibGUgd2l0aCBjdXN0b20gdGltZVNsb3RXcmFwcGVyJ1xuV2l0aEN1c3RvbVRpbWVzbG90V3JhcHBlci5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXG4gIGV2ZW50cyxcbiAgcmVzaXphYmxlOiB0cnVlLFxuICBzaG93TXVsdGlEYXlUaW1lczogdHJ1ZSxcbiAgb25FdmVudERyb3A6IGFjdGlvbignZXZlbnQgZHJvcHBlZCcpLFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcbiAgY29tcG9uZW50czoge1xuICAgIHRpbWVTbG90V3JhcHBlcjogY3VzdG9tQ29tcG9uZW50cy50aW1lU2xvdFdyYXBwZXIsXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBXaXRoQ3VzdG9tRXZlbnRXcmFwcGVyID0gVGVtcGxhdGUuYmluZCh7fSk7XG5XaXRoQ3VzdG9tRXZlbnRXcmFwcGVyLnN0b3J5TmFtZSA9XG4gICdkcmFnZ2FibGUgYW5kIHJlc2l6YWJsZSB3aXRoIGN1c3RvbSBldmVudFdyYXBwZXInXG5XaXRoQ3VzdG9tRXZlbnRXcmFwcGVyLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgpLFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcbiAgZXZlbnRzLFxuICByZXNpemFibGU6IHRydWUsXG4gIHNob3dNdWx0aURheVRpbWVzOiB0cnVlLFxuICBvbkV2ZW50RHJvcDogYWN0aW9uKCdldmVudCBkcm9wcGVkJyksXG4gIG9uRXZlbnRSZXNpemU6IGFjdGlvbignZXZlbnQgcmVzaXplZCcpLFxuICBjb21wb25lbnRzOiB7XG4gICAgZXZlbnRXcmFwcGVyOiBjdXN0b21Db21wb25lbnRzLmV2ZW50V3JhcHBlcixcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IERyYWdnYWJsZU11bHRpcGxlUmVzb3VyY2VzID0gVGVtcGxhdGUuYmluZCh7fSk7RHJhZ2dhYmxlTXVsdGlwbGVSZXNvdXJjZXMuc3RvcnlOYW1lID1cbiAgJ2RyYWdnYWJsZSBhbmQgcmVzaXphYmxlIHdpdGggbXVsdGlwbGUgcmVzb3VyY2UgbGFuZXMnXG5EcmFnZ2FibGVNdWx0aXBsZVJlc291cmNlcy5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcbiAgdmlld3M6IFtWaWV3cy5EQVksIFZpZXdzLldFRUssIFZpZXdzLkFHRU5EQV0sXG4gIGV2ZW50czogcmVzb3VyY2VFdmVudHMsXG4gIHJlc291cmNlczogcmVzb3VyY2VzLFxuICByZXNvdXJjZUFjY2Vzc29yOiAncmVzb3VyY2VJZCcsXG4gIHJlc291cmNlSWRBY2Nlc3NvcjogJ2lkJyxcbiAgcmVzb3VyY2VUaXRsZUFjY2Vzc29yOiAnbmFtZScsXG4gIHJlc2l6YWJsZTogdHJ1ZSxcbiAgb25FdmVudERyb3A6IGFjdGlvbignZXZlbnQgZHJvcHBlZCcpLFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcbn1cblxuXG5cbkRyYWdnYWJsZUFuZFJlc2l6YWJsZS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8RHJhZ0FuZERyb3BDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5EcmFnZ2FibGVBbmRSZXNpemFibGUucGFyYW1ldGVycyB9O1xuQ3VzdG9tU3RlcHNBbmRUaW1lc2xvdHMucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPERyYWdBbmREcm9wQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uQ3VzdG9tU3RlcHNBbmRUaW1lc2xvdHMucGFyYW1ldGVycyB9O1xuV2l0aE11bHRpRGF5VGltZXMucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPERyYWdBbmREcm9wQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uV2l0aE11bHRpRGF5VGltZXMucGFyYW1ldGVycyB9O1xuV2l0aEN1c3RvbURhdGVDZWxsV3JhcHBlci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8RHJhZ0FuZERyb3BDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5XaXRoQ3VzdG9tRGF0ZUNlbGxXcmFwcGVyLnBhcmFtZXRlcnMgfTtcbldpdGhDdXN0b21UaW1lc2xvdFdyYXBwZXIucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPERyYWdBbmREcm9wQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uV2l0aEN1c3RvbVRpbWVzbG90V3JhcHBlci5wYXJhbWV0ZXJzIH07XG5XaXRoQ3VzdG9tRXZlbnRXcmFwcGVyLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxEcmFnQW5kRHJvcENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVwiIH0sIC4uLldpdGhDdXN0b21FdmVudFdyYXBwZXIucGFyYW1ldGVycyB9O1xuRHJhZ2dhYmxlTXVsdGlwbGVSZXNvdXJjZXMucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPERyYWdBbmREcm9wQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uRHJhZ2dhYmxlTXVsdGlwbGVSZXNvdXJjZXMucGFyYW1ldGVycyB9OyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCB7XFxuICBDYWxlbmRhcixcXG4gIFZpZXdzLFxcbiAgbW9tZW50TG9jYWxpemVyLFxcbiAgZ2xvYmFsaXplTG9jYWxpemVyLFxcbiAgbHV4b25Mb2NhbGl6ZXIsXFxufSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXFxuaW1wb3J0IHdpdGhEcmFnQW5kRHJvcCBmcm9tICcuLi9zcmMvYWRkb25zL2RyYWdBbmREcm9wJ1xcblxcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCAnbW9tZW50LXRpbWV6b25lL2J1aWxkcy9tb21lbnQtdGltZXpvbmUtd2l0aC1kYXRhLTE5NzAtMjAzMCdcXG5pbXBvcnQgZ2xvYmFsaXplIGZyb20gJ2dsb2JhbGl6ZSdcXG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gJ2x1eG9uJ1xcblxcbmNvbnN0IGxvY2FsaXplcnMgPSB7XFxuICBnbG9iYWxpemU6IGdsb2JhbGl6ZUxvY2FsaXplcihnbG9iYWxpemUpLFxcbiAgbW9tZW50OiBtb21lbnRMb2NhbGl6ZXIobW9tZW50KSxcXG4gIGx1eG9uOiBsdXhvbkxvY2FsaXplcihEYXRlVGltZSwgeyBmaXJzdERheU9mV2VlazogNyB9KSxcXG59XFxuXFxuY29uc3QgRHJhZ2dhYmxlQ2FsZW5kYXIgPSB3aXRoRHJhZ0FuZERyb3AoQ2FsZW5kYXIpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdBZGRpdGlvbmFsIEV4YW1wbGVzL0V2ZW50IER1cmF0aW9ucycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgZGVjb3JhdG9yczogW1xcbiAgICAoU3RvcnkpID0+IChcXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICAgIDxTdG9yeSAvPlxcbiAgICAgIDwvZGl2PlxcbiAgICApLFxcbiAgXSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoeyBsb2NhbGl6ZXI6IGxvYyA9ICdtb21lbnQnLCAuLi5hcmdzIH0pID0+IHtcXG4gIGNvbnN0IGxvY2FsaXplciA9IGxvY2FsaXplcnNbbG9jXVxcbiAgcmV0dXJuIDxEcmFnZ2FibGVDYWxlbmRhciBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gey4uLmFyZ3N9IC8+XFxufVxcblxcbmV4cG9ydCBjb25zdCBEYXlsaWdodFNhdmluZ3NTdGFydHMgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkRheWxpZ2h0U2F2aW5nc1N0YXJ0cy5hcmdUeXBlcyA9IHtcXG4gIGxvY2FsaXplcjoge1xcbiAgICBvcHRpb25zOiBbJ2dsb2JhbGl6ZScsICdtb21lbnQnLCAnbHV4b24nXSxcXG4gICAgY29udHJvbDoge1xcbiAgICAgIHR5cGU6ICdzZWxlY3QnLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuRGF5bGlnaHRTYXZpbmdzU3RhcnRzLmFyZ3MgPSB7XFxuICBkZWZhdWx0VmlldzogVmlld3MuREFZLFxcbiAgbG9jYWxpemVyOiAnbW9tZW50JyxcXG4gIG1pbjogbW9tZW50KCcxMjowMGFtJywgJ2g6bW1hJykudG9EYXRlKCksXFxuICBtYXg6IG1vbWVudCgnMTE6NTlwbScsICdoOm1tYScpLnRvRGF0ZSgpLFxcbiAgZXZlbnRzOiBbXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ29uIERTVCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCAxKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCAyLCAzMCksXFxuICAgICAgYWxsRGF5OiBmYWxzZSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnY3Jvc3NlcyBEU1QnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgMSksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgNiwgMzApLFxcbiAgICAgIGFsbERheTogZmFsc2UsXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ0FmdGVyIERTVCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCA3KSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCA5LCAzMCksXFxuICAgICAgYWxsRGF5OiBmYWxzZSxcXG4gICAgfSxcXG4gIF0sXFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAyMiwgMiwgMTMpLFxcbn1cXG5cXG5leHBvcnQgY29uc3QgRGF5bGlnaHRTYXZpbmdzU3RhcnRzQWZ0ZXIyQW0gPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkRheWxpZ2h0U2F2aW5nc1N0YXJ0c0FmdGVyMkFtLmFyZ1R5cGVzID0ge1xcbiAgbG9jYWxpemVyOiB7XFxuICAgIG9wdGlvbnM6IFsnZ2xvYmFsaXplJywgJ21vbWVudCcsICdsdXhvbiddLFxcbiAgICBjb250cm9sOiB7XFxuICAgICAgdHlwZTogJ3NlbGVjdCcsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5EYXlsaWdodFNhdmluZ3NTdGFydHNBZnRlcjJBbS5hcmdzID0ge1xcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcXG4gIGxvY2FsaXplcjogJ21vbWVudCcsXFxuICBtaW46IG1vbWVudCgnMzowMGFtJywgJ2g6bW1hJykudG9EYXRlKCksXFxuICBtYXg6IG1vbWVudCgnMTE6NTlwbScsICdoOm1tYScpLnRvRGF0ZSgpLFxcbiAgZXZlbnRzOiBbXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ29uIERTVCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCAxKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCAyLCAzMCksXFxuICAgICAgYWxsRGF5OiBmYWxzZSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnY3Jvc3NlcyBEU1QnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgMSksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgNiwgMzApLFxcbiAgICAgIGFsbERheTogZmFsc2UsXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ0FmdGVyIERTVCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCA3KSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCA5LCAzMCksXFxuICAgICAgYWxsRGF5OiBmYWxzZSxcXG4gICAgfSxcXG4gIF0sXFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAyMiwgMiwgMTMpLFxcbn1cXG5cXG5leHBvcnQgY29uc3QgRGF5bGlnaHRTYXZpbmdzRW5kcyA9IFRlbXBsYXRlLmJpbmQoe30pXFxuRGF5bGlnaHRTYXZpbmdzRW5kcy5hcmdUeXBlcyA9IHtcXG4gIGxvY2FsaXplcjoge1xcbiAgICBvcHRpb25zOiBbJ2dsb2JhbGl6ZScsICdtb21lbnQnLCAnbHV4b24nXSxcXG4gICAgY29udHJvbDoge1xcbiAgICAgIHR5cGU6ICdzZWxlY3QnLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuRGF5bGlnaHRTYXZpbmdzRW5kcy5hcmdzID0ge1xcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcXG4gIGxvY2FsaXplcjogJ21vbWVudCcsXFxuICBtaW46IG1vbWVudCgnMTI6MDBhbScsICdoOm1tYScpLnRvRGF0ZSgpLFxcbiAgbWF4OiBtb21lbnQoJzExOjU5cG0nLCAnaDptbWEnKS50b0RhdGUoKSxcXG4gIGV2ZW50czogW1xcbiAgICB7XFxuICAgICAgdGl0bGU6ICdvbiBEU1QnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAxMCwgNiwgMSksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAxMCwgNiwgMywgMzApLFxcbiAgICAgIGFsbERheTogZmFsc2UsXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ2Nyb3NzZXMgRFNUJyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAyMiwgMTAsIDYsIDEpLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAyMiwgMTAsIDYsIDYsIDMwKSxcXG4gICAgICBhbGxEYXk6IGZhbHNlLFxcbiAgICB9LFxcbiAgICB7XFxuICAgICAgdGl0bGU6ICdBZnRlciBEU1QnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAxMCwgNiwgNyksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAxMCwgNiwgNywgNDUpLFxcbiAgICAgIGFsbERheTogZmFsc2UsXFxuICAgIH0sXFxuICBdLFxcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMjIsIDEwLCA2KSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IERheWxpZ2h0U2F2aW5nc0VuZHNBZnRlcjJBbSA9IFRlbXBsYXRlLmJpbmQoe30pXFxuRGF5bGlnaHRTYXZpbmdzRW5kc0FmdGVyMkFtLmFyZ1R5cGVzID0ge1xcbiAgbG9jYWxpemVyOiB7XFxuICAgIG9wdGlvbnM6IFsnZ2xvYmFsaXplJywgJ21vbWVudCcsICdsdXhvbiddLFxcbiAgICBjb250cm9sOiB7XFxuICAgICAgdHlwZTogJ3NlbGVjdCcsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5EYXlsaWdodFNhdmluZ3NFbmRzQWZ0ZXIyQW0uYXJncyA9IHtcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5EQVksXFxuICBsb2NhbGl6ZXI6ICdtb21lbnQnLFxcbiAgbWluOiBtb21lbnQoJzM6MDBhbScsICdoOm1tYScpLnRvRGF0ZSgpLFxcbiAgbWF4OiBtb21lbnQoJzExOjU5cG0nLCAnaDptbWEnKS50b0RhdGUoKSxcXG4gIGV2ZW50czogW1xcbiAgICB7XFxuICAgICAgdGl0bGU6ICdBZnRlciBEU1QnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAxMCwgNiwgNyksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAxMCwgNiwgOSwgMzApLFxcbiAgICAgIGFsbERheTogZmFsc2UsXFxuICAgIH0sXFxuICBdLFxcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMjIsIDEwLCA2KSxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkRheWxpZ2h0U2F2aW5nc1N0YXJ0c1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzZ9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozOX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozNn0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozOX19LFwiRGF5bGlnaHRTYXZpbmdzU3RhcnRzQWZ0ZXIyQW1cIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjM2fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6Mzl9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzZ9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6Mzl9fSxcIkRheWxpZ2h0U2F2aW5nc0VuZHNcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjM2fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6Mzl9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzZ9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6Mzl9fSxcIkRheWxpZ2h0U2F2aW5nc0VuZHNBZnRlcjJBbVwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzZ9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozOX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozNn0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozOX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIENhbGVuZGFyLFxuICBWaWV3cyxcbiAgbW9tZW50TG9jYWxpemVyLFxuICBnbG9iYWxpemVMb2NhbGl6ZXIsXG4gIGx1eG9uTG9jYWxpemVyLFxufSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgd2l0aERyYWdBbmREcm9wIGZyb20gJy4uL3NyYy9hZGRvbnMvZHJhZ0FuZERyb3AnXG5cbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0ICdtb21lbnQtdGltZXpvbmUvYnVpbGRzL21vbWVudC10aW1lem9uZS13aXRoLWRhdGEtMTk3MC0yMDMwJ1xuaW1wb3J0IGdsb2JhbGl6ZSBmcm9tICdnbG9iYWxpemUnXG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gJ2x1eG9uJ1xuXG5jb25zdCBsb2NhbGl6ZXJzID0ge1xuICBnbG9iYWxpemU6IGdsb2JhbGl6ZUxvY2FsaXplcihnbG9iYWxpemUpLFxuICBtb21lbnQ6IG1vbWVudExvY2FsaXplcihtb21lbnQpLFxuICBsdXhvbjogbHV4b25Mb2NhbGl6ZXIoRGF0ZVRpbWUsIHsgZmlyc3REYXlPZldlZWs6IDcgfSksXG59XG5cbmNvbnN0IERyYWdnYWJsZUNhbGVuZGFyID0gd2l0aERyYWdBbmREcm9wKENhbGVuZGFyKVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnQWRkaXRpb25hbCBFeGFtcGxlcy9FdmVudCBEdXJhdGlvbnMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBkZWNvcmF0b3JzOiBbXG4gICAgKFN0b3J5KSA9PiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgICA8U3RvcnkgLz5cbiAgICAgIDwvZGl2PlxuICAgICksXG4gIF0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKHsgbG9jYWxpemVyOiBsb2MgPSAnbW9tZW50JywgLi4uYXJncyB9KSA9PiB7XG4gIGNvbnN0IGxvY2FsaXplciA9IGxvY2FsaXplcnNbbG9jXVxuICByZXR1cm4gPERyYWdnYWJsZUNhbGVuZGFyIGxvY2FsaXplcj17bG9jYWxpemVyfSB7Li4uYXJnc30gLz5cbn1cblxuZXhwb3J0IGNvbnN0IERheWxpZ2h0U2F2aW5nc1N0YXJ0cyA9IFRlbXBsYXRlLmJpbmQoe30pO1xuRGF5bGlnaHRTYXZpbmdzU3RhcnRzLmFyZ1R5cGVzID0ge1xuICBsb2NhbGl6ZXI6IHtcbiAgICBvcHRpb25zOiBbJ2dsb2JhbGl6ZScsICdtb21lbnQnLCAnbHV4b24nXSxcbiAgICBjb250cm9sOiB7XG4gICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICB9LFxuICB9LFxufVxuRGF5bGlnaHRTYXZpbmdzU3RhcnRzLmFyZ3MgPSB7XG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5EQVksXG4gIGxvY2FsaXplcjogJ21vbWVudCcsXG4gIG1pbjogbW9tZW50KCcxMjowMGFtJywgJ2g6bW1hJykudG9EYXRlKCksXG4gIG1heDogbW9tZW50KCcxMTo1OXBtJywgJ2g6bW1hJykudG9EYXRlKCksXG4gIGV2ZW50czogW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnb24gRFNUJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgMSksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCAyLCAzMCksXG4gICAgICBhbGxEYXk6IGZhbHNlLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdjcm9zc2VzIERTVCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAyMiwgMiwgMTMsIDEpLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgNiwgMzApLFxuICAgICAgYWxsRGF5OiBmYWxzZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnQWZ0ZXIgRFNUJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgNyksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCA5LCAzMCksXG4gICAgICBhbGxEYXk6IGZhbHNlLFxuICAgIH0sXG4gIF0sXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDIyLCAyLCAxMyksXG59XG5cbmV4cG9ydCBjb25zdCBEYXlsaWdodFNhdmluZ3NTdGFydHNBZnRlcjJBbSA9IFRlbXBsYXRlLmJpbmQoe30pO1xuRGF5bGlnaHRTYXZpbmdzU3RhcnRzQWZ0ZXIyQW0uYXJnVHlwZXMgPSB7XG4gIGxvY2FsaXplcjoge1xuICAgIG9wdGlvbnM6IFsnZ2xvYmFsaXplJywgJ21vbWVudCcsICdsdXhvbiddLFxuICAgIGNvbnRyb2w6IHtcbiAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgIH0sXG4gIH0sXG59XG5EYXlsaWdodFNhdmluZ3NTdGFydHNBZnRlcjJBbS5hcmdzID0ge1xuICBkZWZhdWx0VmlldzogVmlld3MuREFZLFxuICBsb2NhbGl6ZXI6ICdtb21lbnQnLFxuICBtaW46IG1vbWVudCgnMzowMGFtJywgJ2g6bW1hJykudG9EYXRlKCksXG4gIG1heDogbW9tZW50KCcxMTo1OXBtJywgJ2g6bW1hJykudG9EYXRlKCksXG4gIGV2ZW50czogW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnb24gRFNUJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgMSksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCAyLCAzMCksXG4gICAgICBhbGxEYXk6IGZhbHNlLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdjcm9zc2VzIERTVCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAyMiwgMiwgMTMsIDEpLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgNiwgMzApLFxuICAgICAgYWxsRGF5OiBmYWxzZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnQWZ0ZXIgRFNUJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgNyksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCA5LCAzMCksXG4gICAgICBhbGxEYXk6IGZhbHNlLFxuICAgIH0sXG4gIF0sXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDIyLCAyLCAxMyksXG59XG5cbmV4cG9ydCBjb25zdCBEYXlsaWdodFNhdmluZ3NFbmRzID0gVGVtcGxhdGUuYmluZCh7fSk7XG5EYXlsaWdodFNhdmluZ3NFbmRzLmFyZ1R5cGVzID0ge1xuICBsb2NhbGl6ZXI6IHtcbiAgICBvcHRpb25zOiBbJ2dsb2JhbGl6ZScsICdtb21lbnQnLCAnbHV4b24nXSxcbiAgICBjb250cm9sOiB7XG4gICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICB9LFxuICB9LFxufVxuRGF5bGlnaHRTYXZpbmdzRW5kcy5hcmdzID0ge1xuICBkZWZhdWx0VmlldzogVmlld3MuREFZLFxuICBsb2NhbGl6ZXI6ICdtb21lbnQnLFxuICBtaW46IG1vbWVudCgnMTI6MDBhbScsICdoOm1tYScpLnRvRGF0ZSgpLFxuICBtYXg6IG1vbWVudCgnMTE6NTlwbScsICdoOm1tYScpLnRvRGF0ZSgpLFxuICBldmVudHM6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ29uIERTVCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAyMiwgMTAsIDYsIDEpLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAxMCwgNiwgMywgMzApLFxuICAgICAgYWxsRGF5OiBmYWxzZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnY3Jvc3NlcyBEU1QnLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMjIsIDEwLCA2LCAxKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAyMiwgMTAsIDYsIDYsIDMwKSxcbiAgICAgIGFsbERheTogZmFsc2UsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ0FmdGVyIERTVCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAyMiwgMTAsIDYsIDcpLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAxMCwgNiwgNywgNDUpLFxuICAgICAgYWxsRGF5OiBmYWxzZSxcbiAgICB9LFxuICBdLFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAyMiwgMTAsIDYpLFxufVxuXG5leHBvcnQgY29uc3QgRGF5bGlnaHRTYXZpbmdzRW5kc0FmdGVyMkFtID0gVGVtcGxhdGUuYmluZCh7fSk7RGF5bGlnaHRTYXZpbmdzRW5kc0FmdGVyMkFtLmFyZ1R5cGVzID0ge1xuICBsb2NhbGl6ZXI6IHtcbiAgICBvcHRpb25zOiBbJ2dsb2JhbGl6ZScsICdtb21lbnQnLCAnbHV4b24nXSxcbiAgICBjb250cm9sOiB7XG4gICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICB9LFxuICB9LFxufVxuRGF5bGlnaHRTYXZpbmdzRW5kc0FmdGVyMkFtLmFyZ3MgPSB7XG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5EQVksXG4gIGxvY2FsaXplcjogJ21vbWVudCcsXG4gIG1pbjogbW9tZW50KCczOjAwYW0nLCAnaDptbWEnKS50b0RhdGUoKSxcbiAgbWF4OiBtb21lbnQoJzExOjU5cG0nLCAnaDptbWEnKS50b0RhdGUoKSxcbiAgZXZlbnRzOiBbXG4gICAge1xuICAgICAgdGl0bGU6ICdBZnRlciBEU1QnLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMjIsIDEwLCA2LCA3KSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAyMiwgMTAsIDYsIDksIDMwKSxcbiAgICAgIGFsbERheTogZmFsc2UsXG4gICAgfSxcbiAgXSxcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMjIsIDEwLCA2KSxcbn1cblxuXG5cbkRheWxpZ2h0U2F2aW5nc1N0YXJ0cy5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKHsgbG9jYWxpemVyOiBsb2MgPSAnbW9tZW50JywgLi4uYXJncyB9KSA9PiB7XFxuICBjb25zdCBsb2NhbGl6ZXIgPSBsb2NhbGl6ZXJzW2xvY11cXG4gIHJldHVybiA8RHJhZ2dhYmxlQ2FsZW5kYXIgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IHsuLi5hcmdzfSAvPlxcbn1cIiB9LCAuLi5EYXlsaWdodFNhdmluZ3NTdGFydHMucGFyYW1ldGVycyB9O1xuRGF5bGlnaHRTYXZpbmdzU3RhcnRzQWZ0ZXIyQW0ucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIih7IGxvY2FsaXplcjogbG9jID0gJ21vbWVudCcsIC4uLmFyZ3MgfSkgPT4ge1xcbiAgY29uc3QgbG9jYWxpemVyID0gbG9jYWxpemVyc1tsb2NdXFxuICByZXR1cm4gPERyYWdnYWJsZUNhbGVuZGFyIGxvY2FsaXplcj17bG9jYWxpemVyfSB7Li4uYXJnc30gLz5cXG59XCIgfSwgLi4uRGF5bGlnaHRTYXZpbmdzU3RhcnRzQWZ0ZXIyQW0ucGFyYW1ldGVycyB9O1xuRGF5bGlnaHRTYXZpbmdzRW5kcy5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKHsgbG9jYWxpemVyOiBsb2MgPSAnbW9tZW50JywgLi4uYXJncyB9KSA9PiB7XFxuICBjb25zdCBsb2NhbGl6ZXIgPSBsb2NhbGl6ZXJzW2xvY11cXG4gIHJldHVybiA8RHJhZ2dhYmxlQ2FsZW5kYXIgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IHsuLi5hcmdzfSAvPlxcbn1cIiB9LCAuLi5EYXlsaWdodFNhdmluZ3NFbmRzLnBhcmFtZXRlcnMgfTtcbkRheWxpZ2h0U2F2aW5nc0VuZHNBZnRlcjJBbS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKHsgbG9jYWxpemVyOiBsb2MgPSAnbW9tZW50JywgLi4uYXJncyB9KSA9PiB7XFxuICBjb25zdCBsb2NhbGl6ZXIgPSBsb2NhbGl6ZXJzW2xvY11cXG4gIHJldHVybiA8RHJhZ2dhYmxlQ2FsZW5kYXIgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IHsuLi5hcmdzfSAvPlxcbn1cIiB9LCAuLi5EYXlsaWdodFNhdmluZ3NFbmRzQWZ0ZXIyQW0ucGFyYW1ldGVycyB9OyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCB7IGFjdGlvbiB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tYWN0aW9ucydcXG5cXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5cXG5pbXBvcnQgeyBldmVudHMsIENhbGVuZGFyLCBWaWV3cywgRHJhZ0FuZERyb3BDYWxlbmRhciB9IGZyb20gJy4vaGVscGVycydcXG5pbXBvcnQgY3JlYXRlRXZlbnRzIGZyb20gJy4vaGVscGVycy9jcmVhdGVFdmVudHMnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdBZGRpdGlvbmFsIEV4YW1wbGVzL0xheW91dCcsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgZGVjb3JhdG9yczogW1xcbiAgICAoU3RvcnkpID0+IChcXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICAgIDxTdG9yeSAvPlxcbiAgICAgIDwvZGl2PlxcbiAgICApLFxcbiAgXSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcblxcbmNvbnN0IGRlZmF1bHREYXRlID0gbmV3IERhdGUoKVxcblxcbmV4cG9ydCBjb25zdCBFdmVudExheW91dCA9IFRlbXBsYXRlLmJpbmQoe30pXFxuRXZlbnRMYXlvdXQuYXJncyA9IHtcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5EQVksXFxuICBkZWZhdWx0RGF0ZSxcXG4gIHRpbWVzbG90czogNCxcXG4gIGV2ZW50czogY3JlYXRlRXZlbnRzKDEpLFxcbn1cXG5cXG5leHBvcnQgY29uc3QgRmlyc3RPZldlZWtBbGxEYXkgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkZpcnN0T2ZXZWVrQWxsRGF5LnN0b3J5TmFtZSA9ICdmaXJzdCBvZiB0aGUgd2VlayBhbGwtZGF5IGV2ZW50J1xcbkZpcnN0T2ZXZWVrQWxsRGF5LmFyZ3MgPSB7XFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxcbiAgZXZlbnRzOiBbXFxuICAgIHtcXG4gICAgICBhbGxEYXk6IHRydWUsXFxuICAgICAgdGl0bGU6ICdBbGwgRGF5IEV2ZW50JyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxcbiAgICB9LFxcbiAgXSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IEVuZE9mV2Vla0FsbERheSA9IFRlbXBsYXRlLmJpbmQoe30pXFxuRW5kT2ZXZWVrQWxsRGF5LnN0b3J5TmFtZSA9ICdlbmQgb2YgdGhlIHdlZWsgYWxsLWRheSBldmVudCdcXG5FbmRPZldlZWtBbGxEYXkuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXFxuICBldmVudHM6IFtcXG4gICAge1xcbiAgICAgIGFsbERheTogdHJ1ZSxcXG4gICAgICB0aXRsZTogJ0FsbCBEYXkgRXZlbnQnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXFxuICAgIH0sXFxuICBdLFxcbn1cXG5cXG5leHBvcnQgY29uc3QgRXZlbnRBdFN0YXJ0T2ZXZWVrID0gVGVtcGxhdGUuYmluZCh7fSlcXG5FdmVudEF0U3RhcnRPZldlZWsuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE2LCAxMSwgNCksXFxuICBldmVudHM6IFtcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnaGFzIHRpbWUnLFxcbiAgICAgIHN0YXJ0OiBtb21lbnQobmV3IERhdGUoMjAxNiwgMTEsIDQpKVxcbiAgICAgICAgLmFkZCgxLCAnZGF5cycpXFxuICAgICAgICAuc3VidHJhY3QoNSwgJ2hvdXJzJylcXG4gICAgICAgIC50b0RhdGUoKSxcXG4gICAgICBlbmQ6IG1vbWVudChuZXcgRGF0ZSgyMDE2LCAxMSwgNCkpXFxuICAgICAgICAuYWRkKDEsICdkYXlzJylcXG4gICAgICAgIC5zdWJ0cmFjdCg0LCAnaG91cnMnKVxcbiAgICAgICAgLnRvRGF0ZSgpLFxcbiAgICB9LFxcbiAgXSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IEV2ZW50QXRFbmRPZldlZWsgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkV2ZW50QXRFbmRPZldlZWsuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXFxuICBldmVudHM6IFtcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnaGFzIHRpbWUnLFxcbiAgICAgIHN0YXJ0OiBtb21lbnQobmV3IERhdGUoMjAxNiwgMTEsIDMpKVxcbiAgICAgICAgLmFkZCgxLCAnZGF5cycpXFxuICAgICAgICAuc3VidHJhY3QoNSwgJ2hvdXJzJylcXG4gICAgICAgIC50b0RhdGUoKSxcXG4gICAgICBlbmQ6IG1vbWVudChuZXcgRGF0ZSgyMDE2LCAxMSwgMykpXFxuICAgICAgICAuYWRkKDEsICdkYXlzJylcXG4gICAgICAgIC5zdWJ0cmFjdCg0LCAnaG91cnMnKVxcbiAgICAgICAgLnRvRGF0ZSgpLFxcbiAgICB9LFxcbiAgXSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IEV2ZW50c09uQUNvbnN0cmFpbmVkRGF5Q29sdW1uID0gVGVtcGxhdGUuYmluZCh7fSlcXG5FdmVudHNPbkFDb25zdHJhaW5lZERheUNvbHVtbi5hcmdzID0ge1xcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcXG4gIG1pbjogbW9tZW50KCc4IGFtJywgJ2ggYScpLnRvRGF0ZSgpLFxcbiAgbWF4OiBtb21lbnQoJzUgcG0nLCAnaCBhJykudG9EYXRlKCksXFxuICBldmVudHMsXFxufVxcblxcbmV4cG9ydCBjb25zdCBOb0R1cmF0aW9uID0gVGVtcGxhdGUuYmluZCh7fSlcXG5Ob0R1cmF0aW9uLmFyZ3MgPSB7XFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxcbiAgZXZlbnRzOiBbXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ3N0YXJ0IG9mIHRoZSB3ZWVrJyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxcbiAgICB9LFxcbiAgICB7XFxuICAgICAgdGl0bGU6ICdlbmQgb2YgdGhlIHdlZWsnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ21pZGRsZScsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDExLCA2KSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCA2KSxcXG4gICAgfSxcXG4gIF0sXFxufVxcblxcbmV4cG9ydCBjb25zdCBEYXlTcGFuID0gVGVtcGxhdGUuYmluZCh7fSlcXG5EYXlTcGFuLnN0b3J5TmFtZSA9ICdTaW5nbGUgZGF5cyBzaG91bGQgb25seSBzcGFuIG9uZSBzbG90LCBtdWx0aS1kYXlzIG11bHRpcGxlJ1xcbkRheVNwYW4uYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcXG4gIGV2ZW50czogW1xcbiAgICB7XFxuICAgICAgdGl0bGU6ICdTaW5nbGVEYXkgMScsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEwKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDExKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnU2luZ2xlRGF5IDInLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxMSksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMiksXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ1NpbmdsZURheSAzJyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMTIpLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgICB9LFxcbiAgICB7XFxuICAgICAgdGl0bGU6ICdTaW5nbGVEYXkgNCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDE0KSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnTXVsdGlEYXkgMScsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDI0KSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDI1LCAxLCAwLCAwLCAwKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnTXVsdGlEYXkgMicsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDI1KSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDI2LCAxLCAwLCAwLCAwKSxcXG4gICAgfSxcXG4gIF0sXFxufVxcblxcbmV4cG9ydCBjb25zdCBaZXJvRHVyYXRpb25PZGRpdGllcyA9ICgpID0+IHtcXG4gIHJldHVybiAoXFxuICAgIDxEcmFnQW5kRHJvcENhbGVuZGFyXFxuICAgICAgZGVmYXVsdERhdGU9e25ldyBEYXRlKDIwMTUsIDMsIDEpfVxcbiAgICAgIGV2ZW50cz17W1xcbiAgICAgICAge1xcbiAgICAgICAgICBpZDogNCxcXG4gICAgICAgICAgdGl0bGU6ICcwIGRheSBkdXJhdGlvbicsXFxuICAgICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCA4LCAwLCAwLCAwKSxcXG4gICAgICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCA4LCAwLCAwLCAwKSxcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgIGlkOiA0LFxcbiAgICAgICAgICB0aXRsZTogJzEgZGF5IGR1cmF0aW9uJyxcXG4gICAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDksIDAsIDAsIDApLFxcbiAgICAgICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEwLCAwLCAwLCAwKSxcXG4gICAgICAgIH0sXFxuICAgICAgXX1cXG4gICAgLz5cXG4gIClcXG59XFxuXFxuZXhwb3J0IGNvbnN0IFplcm9EdXJhdGlvbk92ZXJsYXAgPSAoKSA9PiB7XFxuICByZXR1cm4gKFxcbiAgICA8RHJhZ0FuZERyb3BDYWxlbmRhclxcbiAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICBldmVudHM9e1tcXG4gICAgICAgIHtcXG4gICAgICAgICAgdGl0bGU6ICdldmVudCBhJyxcXG4gICAgICAgICAgc3RhcnQ6IGRlZmF1bHREYXRlLFxcbiAgICAgICAgICBlbmQ6IGRlZmF1bHREYXRlLFxcbiAgICAgICAgfSxcXG4gICAgICAgIHtcXG4gICAgICAgICAgdGl0bGU6ICdldmVudCBiJyxcXG4gICAgICAgICAgc3RhcnQ6IGRlZmF1bHREYXRlLFxcbiAgICAgICAgICBlbmQ6IGRlZmF1bHREYXRlLFxcbiAgICAgICAgfSxcXG4gICAgICBdfVxcbiAgICAgIGRheUxheW91dEFsZ29yaXRobT17J25vLW92ZXJsYXAnfVxcbiAgICAgIHNjcm9sbFRvVGltZT17ZGVmYXVsdERhdGV9XFxuICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgIC8+XFxuICApXFxufVxcblxcbmV4cG9ydCBjb25zdCBPdmVybGFwcGluZ0JhY2tncm91bmRFdmVudHNPdmVybGFwID0gVGVtcGxhdGUuYmluZCh7fSlcXG5PdmVybGFwcGluZ0JhY2tncm91bmRFdmVudHNPdmVybGFwLnN0b3J5TmFtZSA9XFxuICBcXFwiT3ZlcmxhcHBpbmcgQmFja2dyb3VuZCBFdmVudHMgLSAnb3ZlcmxhcCdcXFwiXFxuT3ZlcmxhcHBpbmdCYWNrZ3JvdW5kRXZlbnRzT3ZlcmxhcC5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTYsIDExLCAzKSxcXG4gIGRheUxheW91dEFsZ29yaXRobTogJ292ZXJsYXAnLFxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXFxuICBzY3JvbGxUb1RpbWU6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCA3LCAwKSxcXG4gIGJhY2tncm91bmRFdmVudHM6IFtcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnRmlyc3QgRXZlbnQnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjgsIDEwLCAzMCksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjgsIDE4LCAwKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnU2Vjb25kIEV2ZW50JyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI4LCAxMiwgMCksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjgsIDE2LCAzMCksXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ1RoaXJkIEV2ZW50JyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI5LCA4LCAwKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOSwgMjEsIDApLFxcbiAgICB9LFxcbiAgICB7XFxuICAgICAgdGl0bGU6ICdGb3VydGggRXZlbnQnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDksIDMwKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOSwgMTksIDMwKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnRmlmdGggRXZlbnQnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDExLCAwKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOSwgMTgsIDApLFxcbiAgICB9LFxcbiAgICB7XFxuICAgICAgdGl0bGU6ICdTaXh0aCBFdmVudCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCA5LCAwKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCAxNCwgMCksXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ1NldmVudGggRXZlbnQnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgMTEsIDApLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDEsIDE2LCAwKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnRWlnaHRoIEV2ZW50JyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDEsIDEzLCAwKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCAxOCwgMCksXFxuICAgIH0sXFxuICBdLFxcbn1cXG5cXG5leHBvcnQgY29uc3QgT3ZlcmxhcHBpbmdCYWNrZ3JvdW5kRXZlbnRzTm9PdmVybGFwID0gVGVtcGxhdGUuYmluZCh7fSlcXG5PdmVybGFwcGluZ0JhY2tncm91bmRFdmVudHNOb092ZXJsYXAuc3RvcnlOYW1lID1cXG4gIFxcXCJPdmVybGFwcGluZyBCYWNrZ3JvdW5kIEV2ZW50cyAtICduby1vdmVybGFwJ1xcXCJcXG5PdmVybGFwcGluZ0JhY2tncm91bmRFdmVudHNOb092ZXJsYXAuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXFxuICBkYXlMYXlvdXRBbGdvcml0aG06ICduby1vdmVybGFwJyxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgc2Nyb2xsVG9UaW1lOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgNywgMCksXFxuICBiYWNrZ3JvdW5kRXZlbnRzOiBbXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ0ZpcnN0IEV2ZW50JyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI4LCAxMCwgMzApLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTAsIDI4LCAxOCwgMCksXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ1NlY29uZCBFdmVudCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOCwgMTIsIDApLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTAsIDI4LCAxNiwgMzApLFxcbiAgICB9LFxcbiAgICB7XFxuICAgICAgdGl0bGU6ICdUaGlyZCBFdmVudCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOSwgOCwgMCksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDIxLCAwKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnRm91cnRoIEV2ZW50JyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI5LCA5LCAzMCksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDE5LCAzMCksXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ0ZpZnRoIEV2ZW50JyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI5LCAxMSwgMCksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDE4LCAwKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnU2l4dGggRXZlbnQnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgOSwgMCksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgMTQsIDApLFxcbiAgICB9LFxcbiAgICB7XFxuICAgICAgdGl0bGU6ICdTZXZlbnRoIEV2ZW50JyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDEsIDExLCAwKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCAxNiwgMCksXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ0VpZ2h0aCBFdmVudCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCAxMywgMCksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgMTgsIDApLFxcbiAgICB9LFxcbiAgXSxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkV2ZW50TGF5b3V0XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyMX0sXCJlbmRMb2NcIjp7XCJjb2xcIjo0OSxcImxpbmVcIjoyMX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyMX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6NDksXCJsaW5lXCI6MjF9fSxcIkZpcnN0T2ZXZWVrQWxsRGF5XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyMX0sXCJlbmRMb2NcIjp7XCJjb2xcIjo0OSxcImxpbmVcIjoyMX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyMX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6NDksXCJsaW5lXCI6MjF9fSxcIkVuZE9mV2Vla0FsbERheVwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjF9LFwiZW5kTG9jXCI6e1wiY29sXCI6NDksXCJsaW5lXCI6MjF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjF9LFwiZW5kQm9keVwiOntcImNvbFwiOjQ5LFwibGluZVwiOjIxfX0sXCJFdmVudEF0U3RhcnRPZldlZWtcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjIxfSxcImVuZExvY1wiOntcImNvbFwiOjQ5LFwibGluZVwiOjIxfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjIxfSxcImVuZEJvZHlcIjp7XCJjb2xcIjo0OSxcImxpbmVcIjoyMX19LFwiRXZlbnRBdEVuZE9mV2Vla1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjF9LFwiZW5kTG9jXCI6e1wiY29sXCI6NDksXCJsaW5lXCI6MjF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjF9LFwiZW5kQm9keVwiOntcImNvbFwiOjQ5LFwibGluZVwiOjIxfX0sXCJFdmVudHNPbkFDb25zdHJhaW5lZERheUNvbHVtblwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjF9LFwiZW5kTG9jXCI6e1wiY29sXCI6NDksXCJsaW5lXCI6MjF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjF9LFwiZW5kQm9keVwiOntcImNvbFwiOjQ5LFwibGluZVwiOjIxfX0sXCJOb0R1cmF0aW9uXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyMX0sXCJlbmRMb2NcIjp7XCJjb2xcIjo0OSxcImxpbmVcIjoyMX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyMX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6NDksXCJsaW5lXCI6MjF9fSxcIkRheVNwYW5cIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjIxfSxcImVuZExvY1wiOntcImNvbFwiOjQ5LFwibGluZVwiOjIxfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjIxfSxcImVuZEJvZHlcIjp7XCJjb2xcIjo0OSxcImxpbmVcIjoyMX19LFwiWmVyb0R1cmF0aW9uT2RkaXRpZXNcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjM2LFwibGluZVwiOjE2NX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjE4NX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjozNixcImxpbmVcIjoxNjV9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MTg1fX0sXCJaZXJvRHVyYXRpb25PdmVybGFwXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjozNSxcImxpbmVcIjoxODd9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMDh9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MzUsXCJsaW5lXCI6MTg3fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwOH19LFwiT3ZlcmxhcHBpbmdCYWNrZ3JvdW5kRXZlbnRzT3ZlcmxhcFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjF9LFwiZW5kTG9jXCI6e1wiY29sXCI6NDksXCJsaW5lXCI6MjF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjF9LFwiZW5kQm9keVwiOntcImNvbFwiOjQ5LFwibGluZVwiOjIxfX0sXCJPdmVybGFwcGluZ0JhY2tncm91bmRFdmVudHNOb092ZXJsYXBcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjIxfSxcImVuZExvY1wiOntcImNvbFwiOjQ5LFwibGluZVwiOjIxfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjIxfSxcImVuZEJvZHlcIjp7XCJjb2xcIjo0OSxcImxpbmVcIjoyMX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGFjdGlvbiB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tYWN0aW9ucydcblxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5cbmltcG9ydCB7IGV2ZW50cywgQ2FsZW5kYXIsIFZpZXdzLCBEcmFnQW5kRHJvcENhbGVuZGFyIH0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IGNyZWF0ZUV2ZW50cyBmcm9tICcuL2hlbHBlcnMvY3JlYXRlRXZlbnRzJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnQWRkaXRpb25hbCBFeGFtcGxlcy9MYXlvdXQnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBkZWNvcmF0b3JzOiBbXG4gICAgKFN0b3J5KSA9PiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgICA8U3RvcnkgLz5cbiAgICAgIDwvZGl2PlxuICAgICksXG4gIF0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IDxDYWxlbmRhciB7Li4uYXJnc30gLz5cblxuY29uc3QgZGVmYXVsdERhdGUgPSBuZXcgRGF0ZSgpXG5cbmV4cG9ydCBjb25zdCBFdmVudExheW91dCA9IFRlbXBsYXRlLmJpbmQoe30pO1xuRXZlbnRMYXlvdXQuYXJncyA9IHtcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcbiAgZGVmYXVsdERhdGUsXG4gIHRpbWVzbG90czogNCxcbiAgZXZlbnRzOiBjcmVhdGVFdmVudHMoMSksXG59XG5cbmV4cG9ydCBjb25zdCBGaXJzdE9mV2Vla0FsbERheSA9IFRlbXBsYXRlLmJpbmQoe30pO1xuRmlyc3RPZldlZWtBbGxEYXkuc3RvcnlOYW1lID0gJ2ZpcnN0IG9mIHRoZSB3ZWVrIGFsbC1kYXkgZXZlbnQnXG5GaXJzdE9mV2Vla0FsbERheS5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxuICBldmVudHM6IFtcbiAgICB7XG4gICAgICBhbGxEYXk6IHRydWUsXG4gICAgICB0aXRsZTogJ0FsbCBEYXkgRXZlbnQnLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDExLCA0KSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxuICAgIH0sXG4gIF0sXG59XG5cbmV4cG9ydCBjb25zdCBFbmRPZldlZWtBbGxEYXkgPSBUZW1wbGF0ZS5iaW5kKHt9KTtcbkVuZE9mV2Vla0FsbERheS5zdG9yeU5hbWUgPSAnZW5kIG9mIHRoZSB3ZWVrIGFsbC1kYXkgZXZlbnQnXG5FbmRPZldlZWtBbGxEYXkuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTYsIDExLCAzKSxcbiAgZXZlbnRzOiBbXG4gICAge1xuICAgICAgYWxsRGF5OiB0cnVlLFxuICAgICAgdGl0bGU6ICdBbGwgRGF5IEV2ZW50JyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCAzKSxcbiAgICB9LFxuICBdLFxufVxuXG5leHBvcnQgY29uc3QgRXZlbnRBdFN0YXJ0T2ZXZWVrID0gVGVtcGxhdGUuYmluZCh7fSk7XG5FdmVudEF0U3RhcnRPZldlZWsuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTYsIDExLCA0KSxcbiAgZXZlbnRzOiBbXG4gICAge1xuICAgICAgdGl0bGU6ICdoYXMgdGltZScsXG4gICAgICBzdGFydDogbW9tZW50KG5ldyBEYXRlKDIwMTYsIDExLCA0KSlcbiAgICAgICAgLmFkZCgxLCAnZGF5cycpXG4gICAgICAgIC5zdWJ0cmFjdCg1LCAnaG91cnMnKVxuICAgICAgICAudG9EYXRlKCksXG4gICAgICBlbmQ6IG1vbWVudChuZXcgRGF0ZSgyMDE2LCAxMSwgNCkpXG4gICAgICAgIC5hZGQoMSwgJ2RheXMnKVxuICAgICAgICAuc3VidHJhY3QoNCwgJ2hvdXJzJylcbiAgICAgICAgLnRvRGF0ZSgpLFxuICAgIH0sXG4gIF0sXG59XG5cbmV4cG9ydCBjb25zdCBFdmVudEF0RW5kT2ZXZWVrID0gVGVtcGxhdGUuYmluZCh7fSk7XG5FdmVudEF0RW5kT2ZXZWVrLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXG4gIGV2ZW50czogW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnaGFzIHRpbWUnLFxuICAgICAgc3RhcnQ6IG1vbWVudChuZXcgRGF0ZSgyMDE2LCAxMSwgMykpXG4gICAgICAgIC5hZGQoMSwgJ2RheXMnKVxuICAgICAgICAuc3VidHJhY3QoNSwgJ2hvdXJzJylcbiAgICAgICAgLnRvRGF0ZSgpLFxuICAgICAgZW5kOiBtb21lbnQobmV3IERhdGUoMjAxNiwgMTEsIDMpKVxuICAgICAgICAuYWRkKDEsICdkYXlzJylcbiAgICAgICAgLnN1YnRyYWN0KDQsICdob3VycycpXG4gICAgICAgIC50b0RhdGUoKSxcbiAgICB9LFxuICBdLFxufVxuXG5leHBvcnQgY29uc3QgRXZlbnRzT25BQ29uc3RyYWluZWREYXlDb2x1bW4gPSBUZW1wbGF0ZS5iaW5kKHt9KTtcbkV2ZW50c09uQUNvbnN0cmFpbmVkRGF5Q29sdW1uLmFyZ3MgPSB7XG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5EQVksXG4gIG1pbjogbW9tZW50KCc4IGFtJywgJ2ggYScpLnRvRGF0ZSgpLFxuICBtYXg6IG1vbWVudCgnNSBwbScsICdoIGEnKS50b0RhdGUoKSxcbiAgZXZlbnRzLFxufVxuXG5leHBvcnQgY29uc3QgTm9EdXJhdGlvbiA9IFRlbXBsYXRlLmJpbmQoe30pO1xuTm9EdXJhdGlvbi5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxuICBldmVudHM6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ3N0YXJ0IG9mIHRoZSB3ZWVrJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgNCksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCA0KSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnZW5kIG9mIHRoZSB3ZWVrJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCAzKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnbWlkZGxlJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgNiksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCA2KSxcbiAgICB9LFxuICBdLFxufVxuXG5leHBvcnQgY29uc3QgRGF5U3BhbiA9IFRlbXBsYXRlLmJpbmQoe30pO1xuRGF5U3Bhbi5zdG9yeU5hbWUgPSAnU2luZ2xlIGRheXMgc2hvdWxkIG9ubHkgc3BhbiBvbmUgc2xvdCwgbXVsdGktZGF5cyBtdWx0aXBsZSdcbkRheVNwYW4uYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxuICBldmVudHM6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ1NpbmdsZURheSAxJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxMCksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDExKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnU2luZ2xlRGF5IDInLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDExKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTIpLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdTaW5nbGVEYXkgMycsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMTIpLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ1NpbmdsZURheSA0JyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDE0KSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnTXVsdGlEYXkgMScsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMjQpLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAyNSwgMSwgMCwgMCwgMCksXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ011bHRpRGF5IDInLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDI1KSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMjYsIDEsIDAsIDAsIDApLFxuICAgIH0sXG4gIF0sXG59XG5cbmV4cG9ydCBjb25zdCBaZXJvRHVyYXRpb25PZGRpdGllcyA9ICgpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8RHJhZ0FuZERyb3BDYWxlbmRhclxuICAgICAgZGVmYXVsdERhdGU9e25ldyBEYXRlKDIwMTUsIDMsIDEpfVxuICAgICAgZXZlbnRzPXtbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogNCxcbiAgICAgICAgICB0aXRsZTogJzAgZGF5IGR1cmF0aW9uJyxcbiAgICAgICAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgOCwgMCwgMCwgMCksXG4gICAgICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCA4LCAwLCAwLCAwKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiA0LFxuICAgICAgICAgIHRpdGxlOiAnMSBkYXkgZHVyYXRpb24nLFxuICAgICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCA5LCAwLCAwLCAwKSxcbiAgICAgICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEwLCAwLCAwLCAwKSxcbiAgICAgICAgfSxcbiAgICAgIF19XG4gICAgLz5cbiAgKVxufTtcblxuZXhwb3J0IGNvbnN0IFplcm9EdXJhdGlvbk92ZXJsYXAgPSAoKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPERyYWdBbmREcm9wQ2FsZW5kYXJcbiAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgIGV2ZW50cz17W1xuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdldmVudCBhJyxcbiAgICAgICAgICBzdGFydDogZGVmYXVsdERhdGUsXG4gICAgICAgICAgZW5kOiBkZWZhdWx0RGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiAnZXZlbnQgYicsXG4gICAgICAgICAgc3RhcnQ6IGRlZmF1bHREYXRlLFxuICAgICAgICAgIGVuZDogZGVmYXVsdERhdGUsXG4gICAgICAgIH0sXG4gICAgICBdfVxuICAgICAgZGF5TGF5b3V0QWxnb3JpdGhtPXsnbm8tb3ZlcmxhcCd9XG4gICAgICBzY3JvbGxUb1RpbWU9e2RlZmF1bHREYXRlfVxuICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XG4gICAgLz5cbiAgKVxufTtcblxuZXhwb3J0IGNvbnN0IE92ZXJsYXBwaW5nQmFja2dyb3VuZEV2ZW50c092ZXJsYXAgPSBUZW1wbGF0ZS5iaW5kKHt9KTtcbk92ZXJsYXBwaW5nQmFja2dyb3VuZEV2ZW50c092ZXJsYXAuc3RvcnlOYW1lID1cbiAgXCJPdmVybGFwcGluZyBCYWNrZ3JvdW5kIEV2ZW50cyAtICdvdmVybGFwJ1wiXG5PdmVybGFwcGluZ0JhY2tncm91bmRFdmVudHNPdmVybGFwLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXG4gIGRheUxheW91dEFsZ29yaXRobTogJ292ZXJsYXAnLFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcbiAgc2Nyb2xsVG9UaW1lOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgNywgMCksXG4gIGJhY2tncm91bmRFdmVudHM6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ0ZpcnN0IEV2ZW50JyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjgsIDEwLCAzMCksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOCwgMTgsIDApLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdTZWNvbmQgRXZlbnQnLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOCwgMTIsIDApLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjgsIDE2LCAzMCksXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ1RoaXJkIEV2ZW50JyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDgsIDApLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDIxLCAwKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnRm91cnRoIEV2ZW50JyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDksIDMwKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTAsIDI5LCAxOSwgMzApLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdGaWZ0aCBFdmVudCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI5LCAxMSwgMCksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOSwgMTgsIDApLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdTaXh0aCBFdmVudCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDEsIDksIDApLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgMTQsIDApLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdTZXZlbnRoIEV2ZW50JyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgMTEsIDApLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgMTYsIDApLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdFaWdodGggRXZlbnQnLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCAxMywgMCksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCAxOCwgMCksXG4gICAgfSxcbiAgXSxcbn1cblxuZXhwb3J0IGNvbnN0IE92ZXJsYXBwaW5nQmFja2dyb3VuZEV2ZW50c05vT3ZlcmxhcCA9IFRlbXBsYXRlLmJpbmQoe30pO092ZXJsYXBwaW5nQmFja2dyb3VuZEV2ZW50c05vT3ZlcmxhcC5zdG9yeU5hbWUgPVxuICBcIk92ZXJsYXBwaW5nIEJhY2tncm91bmQgRXZlbnRzIC0gJ25vLW92ZXJsYXAnXCJcbk92ZXJsYXBwaW5nQmFja2dyb3VuZEV2ZW50c05vT3ZlcmxhcC5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNiwgMTEsIDMpLFxuICBkYXlMYXlvdXRBbGdvcml0aG06ICduby1vdmVybGFwJyxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXG4gIHNjcm9sbFRvVGltZTogbmV3IERhdGUoMjAxNiwgMTEsIDEsIDcsIDApLFxuICBiYWNrZ3JvdW5kRXZlbnRzOiBbXG4gICAge1xuICAgICAgdGl0bGU6ICdGaXJzdCBFdmVudCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI4LCAxMCwgMzApLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjgsIDE4LCAwKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnU2Vjb25kIEV2ZW50JyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjgsIDEyLCAwKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTAsIDI4LCAxNiwgMzApLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdUaGlyZCBFdmVudCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI5LCA4LCAwKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTAsIDI5LCAyMSwgMCksXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ0ZvdXJ0aCBFdmVudCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI5LCA5LCAzMCksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOSwgMTksIDMwKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnRmlmdGggRXZlbnQnLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOSwgMTEsIDApLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDE4LCAwKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnU2l4dGggRXZlbnQnLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCA5LCAwKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDEsIDE0LCAwKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnU2V2ZW50aCBFdmVudCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDEsIDExLCAwKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDEsIDE2LCAwKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnRWlnaHRoIEV2ZW50JyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgMTMsIDApLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgMTgsIDApLFxuICAgIH0sXG4gIF0sXG59XG5cblxuXG5FdmVudExheW91dC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IDxDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5FdmVudExheW91dC5wYXJhbWV0ZXJzIH07XG5GaXJzdE9mV2Vla0FsbERheS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IDxDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5GaXJzdE9mV2Vla0FsbERheS5wYXJhbWV0ZXJzIH07XG5FbmRPZldlZWtBbGxEYXkucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XCIgfSwgLi4uRW5kT2ZXZWVrQWxsRGF5LnBhcmFtZXRlcnMgfTtcbkV2ZW50QXRTdGFydE9mV2Vlay5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IDxDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5FdmVudEF0U3RhcnRPZldlZWsucGFyYW1ldGVycyB9O1xuRXZlbnRBdEVuZE9mV2Vlay5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IDxDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5FdmVudEF0RW5kT2ZXZWVrLnBhcmFtZXRlcnMgfTtcbkV2ZW50c09uQUNvbnN0cmFpbmVkRGF5Q29sdW1uLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gPENhbGVuZGFyIHsuLi5hcmdzfSAvPlwiIH0sIC4uLkV2ZW50c09uQUNvbnN0cmFpbmVkRGF5Q29sdW1uLnBhcmFtZXRlcnMgfTtcbk5vRHVyYXRpb24ucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XCIgfSwgLi4uTm9EdXJhdGlvbi5wYXJhbWV0ZXJzIH07XG5EYXlTcGFuLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gPENhbGVuZGFyIHsuLi5hcmdzfSAvPlwiIH0sIC4uLkRheVNwYW4ucGFyYW1ldGVycyB9O1xuWmVyb0R1cmF0aW9uT2RkaXRpZXMucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIigpID0+IHtcXG4gIHJldHVybiAoXFxuICAgIDxEcmFnQW5kRHJvcENhbGVuZGFyXFxuICAgICAgZGVmYXVsdERhdGU9e25ldyBEYXRlKDIwMTUsIDMsIDEpfVxcbiAgICAgIGV2ZW50cz17W1xcbiAgICAgICAge1xcbiAgICAgICAgICBpZDogNCxcXG4gICAgICAgICAgdGl0bGU6ICcwIGRheSBkdXJhdGlvbicsXFxuICAgICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCA4LCAwLCAwLCAwKSxcXG4gICAgICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCA4LCAwLCAwLCAwKSxcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgIGlkOiA0LFxcbiAgICAgICAgICB0aXRsZTogJzEgZGF5IGR1cmF0aW9uJyxcXG4gICAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDksIDAsIDAsIDApLFxcbiAgICAgICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEwLCAwLCAwLCAwKSxcXG4gICAgICAgIH0sXFxuICAgICAgXX1cXG4gICAgLz5cXG4gIClcXG59XCIgfSwgLi4uWmVyb0R1cmF0aW9uT2RkaXRpZXMucGFyYW1ldGVycyB9O1xuWmVyb0R1cmF0aW9uT3ZlcmxhcC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKCkgPT4ge1xcbiAgcmV0dXJuIChcXG4gICAgPERyYWdBbmREcm9wQ2FsZW5kYXJcXG4gICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgZXZlbnRzPXtbXFxuICAgICAgICB7XFxuICAgICAgICAgIHRpdGxlOiAnZXZlbnQgYScsXFxuICAgICAgICAgIHN0YXJ0OiBkZWZhdWx0RGF0ZSxcXG4gICAgICAgICAgZW5kOiBkZWZhdWx0RGF0ZSxcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgIHRpdGxlOiAnZXZlbnQgYicsXFxuICAgICAgICAgIHN0YXJ0OiBkZWZhdWx0RGF0ZSxcXG4gICAgICAgICAgZW5kOiBkZWZhdWx0RGF0ZSxcXG4gICAgICAgIH0sXFxuICAgICAgXX1cXG4gICAgICBkYXlMYXlvdXRBbGdvcml0aG09eyduby1vdmVybGFwJ31cXG4gICAgICBzY3JvbGxUb1RpbWU9e2RlZmF1bHREYXRlfVxcbiAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxcbiAgICAvPlxcbiAgKVxcbn1cIiB9LCAuLi5aZXJvRHVyYXRpb25PdmVybGFwLnBhcmFtZXRlcnMgfTtcbk92ZXJsYXBwaW5nQmFja2dyb3VuZEV2ZW50c092ZXJsYXAucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XCIgfSwgLi4uT3ZlcmxhcHBpbmdCYWNrZ3JvdW5kRXZlbnRzT3ZlcmxhcC5wYXJhbWV0ZXJzIH07XG5PdmVybGFwcGluZ0JhY2tncm91bmRFdmVudHNOb092ZXJsYXAucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XCIgfSwgLi4uT3ZlcmxhcHBpbmdCYWNrZ3JvdW5kRXZlbnRzTm9PdmVybGFwLnBhcmFtZXRlcnMgfTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgeyBhY3Rpb24gfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWFjdGlvbnMnXFxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi9zcmMnXFxuXFxuaW1wb3J0IHsgQ2FsZW5kYXIgYXMgQmFzZUNhbGVuZGFyLCBWaWV3cywgZXZlbnRzIH0gZnJvbSAnLi9oZWxwZXJzJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkaXRpb25hbCBFeGFtcGxlcy9UaW1lc2xvdHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGRlY29yYXRvcnM6IFtcXG4gICAgKFN0b3J5KSA9PiAoXFxuICAgICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgICA8U3RvcnkgLz5cXG4gICAgICA8L2Rpdj5cXG4gICAgKSxcXG4gIF0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IDxCYXNlQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuXFxuZXhwb3J0IGNvbnN0IFNlbGVjdGFibGVTdGVwMTV4NFNsb3QgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcblNlbGVjdGFibGVTdGVwMTV4NFNsb3Quc3RvcnlOYW1lID0gJ3NlbGVjdGFibGUsIHN0ZXAgMTUsIDQgdGltZXNsb3RzJ1xcblNlbGVjdGFibGVTdGVwMTV4NFNsb3QuYXJncyA9IHtcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKCksXFxuICBzZWxlY3RhYmxlOiB0cnVlLFxcbiAgdGltZXNsb3RzOiA0LFxcbiAgc3RlcDogMTUsXFxuICBldmVudHMsXFxuICBvblNlbGVjdEV2ZW50OiBhY3Rpb24oJ2V2ZW50IHNlbGVjdGVkJyksXFxuICBvblNlbGVjdFNsb3Q6IGFjdGlvbignc2xvdCBzZWxlY3RlZCcpLFxcbn1cXG5cXG5leHBvcnQgY29uc3QgU2VsZWN0YWJsZVN0ZXAxMHg2U2xvdCA9IFRlbXBsYXRlLmJpbmQoe30pXFxuU2VsZWN0YWJsZVN0ZXAxMHg2U2xvdC5zdG9yeU5hbWUgPSAnc2VsZWN0YWJsZSwgc3RlcCAxMCwgNiB0aW1lc2xvdHMnXFxuU2VsZWN0YWJsZVN0ZXAxMHg2U2xvdC5hcmdzID0ge1xcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoKSxcXG4gIHNlbGVjdGFibGU6IHRydWUsXFxuICB0aW1lc2xvdHM6IDYsXFxuICBzdGVwOiAxMCxcXG4gIGV2ZW50cyxcXG4gIG9uU2VsZWN0RXZlbnQ6IGFjdGlvbignZXZlbnQgc2VsZWN0ZWQnKSxcXG4gIG9uU2VsZWN0U2xvdDogYWN0aW9uKCdzbG90IHNlbGVjdGVkJyksXFxufVxcblxcbmV4cG9ydCBjb25zdCBTZWxlY3RhYmxlU3RlcDV4NlNsb3QgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcblNlbGVjdGFibGVTdGVwNXg2U2xvdC5zdG9yeU5hbWUgPSAnc2VsZWN0YWJsZSwgc3RlcCA1LCA2IHRpbWVzbG90cydcXG5TZWxlY3RhYmxlU3RlcDV4NlNsb3QuYXJncyA9IHtcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKCksXFxuICBzZWxlY3RhYmxlOiB0cnVlLFxcbiAgdGltZXNsb3RzOiA2LFxcbiAgc3RlcDogNSxcXG4gIGV2ZW50cyxcXG4gIG9uU2VsZWN0RXZlbnQ6IGFjdGlvbignZXZlbnQgc2VsZWN0ZWQnKSxcXG4gIG9uU2VsZWN0U2xvdDogYWN0aW9uKCdzbG90IHNlbGVjdGVkJyksXFxufVxcblxcbmV4cG9ydCBjb25zdCBTZWxlY3RhYmxlM1Nsb3QgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcblNlbGVjdGFibGUzU2xvdC5zdG9yeU5hbWUgPSAnc2VsZWN0YWJsZSwgMyB0aW1lc2xvdHMnXFxuU2VsZWN0YWJsZTNTbG90LmFyZ3MgPSB7XFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgpLFxcbiAgc2VsZWN0YWJsZTogdHJ1ZSxcXG4gIHRpbWVzbG90czogMyxcXG4gIGV2ZW50cyxcXG4gIG9uU2VsZWN0RXZlbnQ6IGFjdGlvbignZXZlbnQgc2VsZWN0ZWQnKSxcXG4gIG9uU2VsZWN0U2xvdDogYWN0aW9uKCdzbG90IHNlbGVjdGVkJyksXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJTZWxlY3RhYmxlU3RlcDE1eDRTbG90XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjoxOX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6NTMsXCJsaW5lXCI6MTl9fSxcIlNlbGVjdGFibGVTdGVwMTB4NlNsb3RcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjUzLFwibGluZVwiOjE5fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjoxOX19LFwiU2VsZWN0YWJsZVN0ZXA1eDZTbG90XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjoxOX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6NTMsXCJsaW5lXCI6MTl9fSxcIlNlbGVjdGFibGUzU2xvdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6NTMsXCJsaW5lXCI6MTl9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjUzLFwibGluZVwiOjE5fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgYWN0aW9uIH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1hY3Rpb25zJ1xuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi9zcmMnXG5cbmltcG9ydCB7IENhbGVuZGFyIGFzIEJhc2VDYWxlbmRhciwgVmlld3MsIGV2ZW50cyB9IGZyb20gJy4vaGVscGVycydcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0FkZGl0aW9uYWwgRXhhbXBsZXMvVGltZXNsb3RzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgZGVjb3JhdG9yczogW1xuICAgIChTdG9yeSkgPT4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPFN0b3J5IC8+XG4gICAgICA8L2Rpdj5cbiAgICApLFxuICBdLFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiA8QmFzZUNhbGVuZGFyIHsuLi5hcmdzfSAvPlxuXG5leHBvcnQgY29uc3QgU2VsZWN0YWJsZVN0ZXAxNXg0U2xvdCA9IFRlbXBsYXRlLmJpbmQoe30pO1xuU2VsZWN0YWJsZVN0ZXAxNXg0U2xvdC5zdG9yeU5hbWUgPSAnc2VsZWN0YWJsZSwgc3RlcCAxNSwgNCB0aW1lc2xvdHMnXG5TZWxlY3RhYmxlU3RlcDE1eDRTbG90LmFyZ3MgPSB7XG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoKSxcbiAgc2VsZWN0YWJsZTogdHJ1ZSxcbiAgdGltZXNsb3RzOiA0LFxuICBzdGVwOiAxNSxcbiAgZXZlbnRzLFxuICBvblNlbGVjdEV2ZW50OiBhY3Rpb24oJ2V2ZW50IHNlbGVjdGVkJyksXG4gIG9uU2VsZWN0U2xvdDogYWN0aW9uKCdzbG90IHNlbGVjdGVkJyksXG59XG5cbmV4cG9ydCBjb25zdCBTZWxlY3RhYmxlU3RlcDEweDZTbG90ID0gVGVtcGxhdGUuYmluZCh7fSk7XG5TZWxlY3RhYmxlU3RlcDEweDZTbG90LnN0b3J5TmFtZSA9ICdzZWxlY3RhYmxlLCBzdGVwIDEwLCA2IHRpbWVzbG90cydcblNlbGVjdGFibGVTdGVwMTB4NlNsb3QuYXJncyA9IHtcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgpLFxuICBzZWxlY3RhYmxlOiB0cnVlLFxuICB0aW1lc2xvdHM6IDYsXG4gIHN0ZXA6IDEwLFxuICBldmVudHMsXG4gIG9uU2VsZWN0RXZlbnQ6IGFjdGlvbignZXZlbnQgc2VsZWN0ZWQnKSxcbiAgb25TZWxlY3RTbG90OiBhY3Rpb24oJ3Nsb3Qgc2VsZWN0ZWQnKSxcbn1cblxuZXhwb3J0IGNvbnN0IFNlbGVjdGFibGVTdGVwNXg2U2xvdCA9IFRlbXBsYXRlLmJpbmQoe30pO1xuU2VsZWN0YWJsZVN0ZXA1eDZTbG90LnN0b3J5TmFtZSA9ICdzZWxlY3RhYmxlLCBzdGVwIDUsIDYgdGltZXNsb3RzJ1xuU2VsZWN0YWJsZVN0ZXA1eDZTbG90LmFyZ3MgPSB7XG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoKSxcbiAgc2VsZWN0YWJsZTogdHJ1ZSxcbiAgdGltZXNsb3RzOiA2LFxuICBzdGVwOiA1LFxuICBldmVudHMsXG4gIG9uU2VsZWN0RXZlbnQ6IGFjdGlvbignZXZlbnQgc2VsZWN0ZWQnKSxcbiAgb25TZWxlY3RTbG90OiBhY3Rpb24oJ3Nsb3Qgc2VsZWN0ZWQnKSxcbn1cblxuZXhwb3J0IGNvbnN0IFNlbGVjdGFibGUzU2xvdCA9IFRlbXBsYXRlLmJpbmQoe30pO1NlbGVjdGFibGUzU2xvdC5zdG9yeU5hbWUgPSAnc2VsZWN0YWJsZSwgMyB0aW1lc2xvdHMnXG5TZWxlY3RhYmxlM1Nsb3QuYXJncyA9IHtcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgpLFxuICBzZWxlY3RhYmxlOiB0cnVlLFxuICB0aW1lc2xvdHM6IDMsXG4gIGV2ZW50cyxcbiAgb25TZWxlY3RFdmVudDogYWN0aW9uKCdldmVudCBzZWxlY3RlZCcpLFxuICBvblNlbGVjdFNsb3Q6IGFjdGlvbignc2xvdCBzZWxlY3RlZCcpLFxufVxuXG5cblxuU2VsZWN0YWJsZVN0ZXAxNXg0U2xvdC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IDxCYXNlQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XCIgfSwgLi4uU2VsZWN0YWJsZVN0ZXAxNXg0U2xvdC5wYXJhbWV0ZXJzIH07XG5TZWxlY3RhYmxlU3RlcDEweDZTbG90LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gPEJhc2VDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5TZWxlY3RhYmxlU3RlcDEweDZTbG90LnBhcmFtZXRlcnMgfTtcblNlbGVjdGFibGVTdGVwNXg2U2xvdC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IDxCYXNlQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XCIgfSwgLi4uU2VsZWN0YWJsZVN0ZXA1eDZTbG90LnBhcmFtZXRlcnMgfTtcblNlbGVjdGFibGUzU2xvdC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IDxCYXNlQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XCIgfSwgLi4uU2VsZWN0YWJsZTNTbG90LnBhcmFtZXRlcnMgfTsiLCJpbXBvcnQgUmVhY3QsIHsgRnJhZ21lbnQsIHVzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBEYXRlTG9jYWxpemVyIH0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuaW1wb3J0IERlbW9MaW5rIGZyb20gJy4uLy4uL0RlbW9MaW5rLmNvbXBvbmVudCdcbi8vIFN0b3J5Ym9vayBjYW5ub3QgYWxpYXMgdGhpcywgc28geW91IHdvdWxkIHVzZSAncmVhY3QtYmlnLWNhbGVuZGFyL2xpYi9hZGRvbnMvZHJhZ0FuZERyb3AnXG5pbXBvcnQgd2l0aERyYWdBbmREcm9wIGZyb20gJy4uLy4uLy4uL3NyYy9hZGRvbnMvZHJhZ0FuZERyb3AnXG4vLyBTdG9yeWJvb2sgY2Fubm90IGFsaWFzIHRoaXMsIHNvIHlvdSB3b3VsZCB1c2UgJ3JlYWN0LWJpZy1jYWxlbmRhci9saWIvYWRkb25zL2RyYWdBbmREcm9wL3N0eWxlcy5zY3NzJ1xuaW1wb3J0ICcuLi8uLi8uLi9zcmMvYWRkb25zL2RyYWdBbmREcm9wL3N0eWxlcy5zY3NzJ1xuXG5jb25zdCBEcmFnQW5kRHJvcENhbGVuZGFyID0gd2l0aERyYWdBbmREcm9wKENhbGVuZGFyKVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEcmFnQW5kRHJvcCh7IGxvY2FsaXplciB9KSB7XG4gIGNvbnN0IFtteUV2ZW50cywgc2V0TXlFdmVudHNdID0gdXNlU3RhdGUoZXZlbnRzKVxuXG4gIGNvbnN0IG1vdmVFdmVudCA9IHVzZUNhbGxiYWNrKFxuICAgICh7IGV2ZW50LCBzdGFydCwgZW5kLCBpc0FsbERheTogZHJvcHBlZE9uQWxsRGF5U2xvdCA9IGZhbHNlIH0pID0+IHtcbiAgICAgIGNvbnN0IHsgYWxsRGF5IH0gPSBldmVudFxuICAgICAgaWYgKCFhbGxEYXkgJiYgZHJvcHBlZE9uQWxsRGF5U2xvdCkge1xuICAgICAgICBldmVudC5hbGxEYXkgPSB0cnVlXG4gICAgICB9XG4gICAgICBpZiAoYWxsRGF5ICYmICFkcm9wcGVkT25BbGxEYXlTbG90KSB7XG4gICAgICAgICAgZXZlbnQuYWxsRGF5ID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHNldE15RXZlbnRzKChwcmV2KSA9PiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gcHJldi5maW5kKChldikgPT4gZXYuaWQgPT09IGV2ZW50LmlkKSA/PyB7fVxuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IHByZXYuZmlsdGVyKChldikgPT4gZXYuaWQgIT09IGV2ZW50LmlkKVxuICAgICAgICByZXR1cm4gWy4uLmZpbHRlcmVkLCB7IC4uLmV4aXN0aW5nLCBzdGFydCwgZW5kLCBhbGxEYXk6IGV2ZW50LmFsbERheSB9XVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtzZXRNeUV2ZW50c11cbiAgKVxuXG4gIGNvbnN0IHJlc2l6ZUV2ZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgZXZlbnQsIHN0YXJ0LCBlbmQgfSkgPT4ge1xuICAgICAgc2V0TXlFdmVudHMoKHByZXYpID0+IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBwcmV2LmZpbmQoKGV2KSA9PiBldi5pZCA9PT0gZXZlbnQuaWQpID8/IHt9XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gcHJldi5maWx0ZXIoKGV2KSA9PiBldi5pZCAhPT0gZXZlbnQuaWQpXG4gICAgICAgIHJldHVybiBbLi4uZmlsdGVyZWQsIHsgLi4uZXhpc3RpbmcsIHN0YXJ0LCBlbmQgfV1cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbc2V0TXlFdmVudHNdXG4gIClcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMTIpLCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIDxEZW1vTGluayBmaWxlTmFtZT1cImRuZFwiPlxuICAgICAgICA8c3Ryb25nPlxuICAgICAgICAgIERyYWcgYW5kIERyb3AgYW4gXCJldmVudFwiIGZyb20gb25lIHNsb3QgdG8gYW5vdGhlciB0byBcIm1vdmVcIiB0aGUgZXZlbnQsXG4gICAgICAgICAgb3IgZHJhZyBhbiBldmVudCdzIGRyYWcgaGFuZGxlcyB0byBcInJlc2l6ZVwiIHRoZSBldmVudC5cbiAgICAgICAgPC9zdHJvbmc+XG4gICAgICA8L0RlbW9MaW5rPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPERyYWdBbmREcm9wQ2FsZW5kYXJcbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLk1PTlRIfVxuICAgICAgICAgIGV2ZW50cz17bXlFdmVudHN9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgb25FdmVudERyb3A9e21vdmVFdmVudH1cbiAgICAgICAgICBvbkV2ZW50UmVzaXplPXtyZXNpemVFdmVudH1cbiAgICAgICAgICBwb3B1cFxuICAgICAgICAgIHJlc2l6YWJsZVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9GcmFnbWVudD5cbiAgKVxufVxuRHJhZ0FuZERyb3AucHJvcFR5cGVzID0ge1xuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGVMb2NhbGl6ZXIpLFxufVxuIiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uLy4uL3NyYydcXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi4vLi4vZGVtb3MvZXhhbXBsZUNvZGUvZG5kJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG51bGwsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFeGFtcGxlMSgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVxcbkV4YW1wbGUxLnN0b3J5TmFtZSA9ICdCYXNpYyBEcmFnIG4gRHJvcCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRXhhbXBsZTFcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJ1xuaW1wb3J0IEJhc2ljIGZyb20gJy4uLy4uL2RlbW9zL2V4YW1wbGVDb2RlL2RuZCdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0FkZG9ucy9EcmFnIGFuZCBEcm9wJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG51bGwsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IEV4YW1wbGUxID0gZnVuY3Rpb24gRXhhbXBsZTEoKSB7XG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O0V4YW1wbGUxLnN0b3J5TmFtZSA9ICdCYXNpYyBEcmFnIG4gRHJvcCdcblxuXG5cbkV4YW1wbGUxLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBFeGFtcGxlMSgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLkV4YW1wbGUxLnBhcmFtZXRlcnMgfTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJ1xcbmltcG9ydCBCYXNpYyBmcm9tICcuLi8uLi9kZW1vcy9leGFtcGxlQ29kZS9kbmRPdXRzaWRlU291cmNlJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG51bGwsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFeGFtcGxlMygpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVxcbkV4YW1wbGUzLnN0b3J5TmFtZSA9ICdEcmFnIGFuZCBEcm9wIChmcm9tIG91dHNpZGUgY2FsZW5kYXIpJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJFeGFtcGxlM1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMnXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi4vLi4vZGVtb3MvZXhhbXBsZUNvZGUvZG5kT3V0c2lkZVNvdXJjZSdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0FkZG9ucy9EcmFnIGFuZCBEcm9wJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG51bGwsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IEV4YW1wbGUzID0gZnVuY3Rpb24gRXhhbXBsZTMoKSB7XG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O0V4YW1wbGUzLnN0b3J5TmFtZSA9ICdEcmFnIGFuZCBEcm9wIChmcm9tIG91dHNpZGUgY2FsZW5kYXIpJ1xuXG5cblxuRXhhbXBsZTMucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEV4YW1wbGUzKCkge1xcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XCIgfSwgLi4uRXhhbXBsZTMucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRyYWdmcm9tb3V0c2lkZWl0ZW1cIlxuICAgIH19PntgZHJhZ0Zyb21PdXRzaWRlSXRlbWB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKCkgPT4gYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEEgY2FsbGJhY2sgdG8gZ2V0IGEgdGVtcG9yYXJ5IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGV2ZW50YH08L2lubGluZUNvZGU+e2AgdG8gZGlzcGxheSBpbiBhIHNsb3QgaW4gdGhlIHByb2Nlc3Mgb2YgZHJhZ2dpbmcgZnJvbSBvdXRzaWRlLiBUaGlzIGlzIG5vdCByZXF1aXJlZCBmb3IgRHJhZyBhbmQgRHJvcCB0byBmdW5jdGlvbiwgYnV0IHByb3ZpZGVzIGEgbmljZSB2aXN1YWwgY3VlIHRvIHRoZSB1c2VyIHdoZW4gZHJhZ2dpbmcgaW4gYW4gaXRlbSBmcm9tIG91dHNpZGUgb2YgdGhlIENhbGVuZGFyLmB9PC9wPlxuICAgIDxwPntgVGlwOiBUb2dnbGUgdGhlIGNoZWNrYm94LCBpbiB0aGUgZXhhbXBsZSwgYW5kIGRyYWcgYW4gb3V0c2lkZSBpdGVtIGluLiBEbyB0aGlzIGZyb20gYm90aCBjaGVja2JveCBzdGF0ZXMgdG8gc2VlIHRoZSBkaWZmZXJlbmNlIGluIGVmZmVjdC5gfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wcy0tZHJhZy1mcm9tLW91dHNpZGUtaXRlbVwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYydcXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi4vLi4vLi4vZGVtb3MvZXhhbXBsZUNvZGUvZG5kT3V0c2lkZVNvdXJjZSdcXG5pbXBvcnQgbWR4IGZyb20gJy4vZHJhZ0Zyb21PdXRzaWRlSXRlbS5tZHgnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZnVuY3Rpb24gRHJhZ0Zyb21PdXRzaWRlSXRlbSgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVxcbkRyYWdGcm9tT3V0c2lkZUl0ZW0uc3RvcnlOYW1lID0gJ2RyYWdGcm9tT3V0c2lkZUl0ZW0nXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkRyYWdGcm9tT3V0c2lkZUl0ZW1cIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIxfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJ1xuaW1wb3J0IEJhc2ljIGZyb20gJy4uLy4uLy4uL2RlbW9zL2V4YW1wbGVDb2RlL2RuZE91dHNpZGVTb3VyY2UnXG5pbXBvcnQgbWR4IGZyb20gJy4vZHJhZ0Zyb21PdXRzaWRlSXRlbS5tZHgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IERyYWdGcm9tT3V0c2lkZUl0ZW0gPSBmdW5jdGlvbiBEcmFnRnJvbU91dHNpZGVJdGVtKCkge1xuICByZXR1cm4gPEJhc2ljIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxufTtEcmFnRnJvbU91dHNpZGVJdGVtLnN0b3J5TmFtZSA9ICdkcmFnRnJvbU91dHNpZGVJdGVtJ1xuXG5cblxuRHJhZ0Zyb21PdXRzaWRlSXRlbS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRHJhZ0Zyb21PdXRzaWRlSXRlbSgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLkRyYWdGcm9tT3V0c2lkZUl0ZW0ucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRyYWdnYWJsZWFjY2Vzc29yXCJcbiAgICB9fT57YGRyYWdnYWJsZUFjY2Vzc29yYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmd8ZnVuY3Rpb24gKGV2ZW50KSA9PiBib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2AoKSA9PiB0cnVlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgV2hlbiB1c2VkLCBjYW4gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gJ2V2ZW50JyBpcyBkcmFnZ2FibGVgfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wcy0tZHJhZ2dhYmxlLWFjY2Vzc29yXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJ1xcbmltcG9ydCBCYXNpYyBmcm9tICcuLi8uLi8uLi9kZW1vcy9leGFtcGxlQ29kZS9kbmRPdXRzaWRlU291cmNlJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9kcmFnZ2FibGVBY2Nlc3Nvci5tZHgnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZnVuY3Rpb24gRHJhZ2dhYmxlQWNjZXNzb3IoKSB7XFxuICByZXR1cm4gPEJhc2ljIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cXG5EcmFnZ2FibGVBY2Nlc3Nvci5zdG9yeU5hbWUgPSAnZHJhZ2dhYmxlQWNjZXNzb3InXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkRyYWdnYWJsZUFjY2Vzc29yXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYydcbmltcG9ydCBCYXNpYyBmcm9tICcuLi8uLi8uLi9kZW1vcy9leGFtcGxlQ29kZS9kbmRPdXRzaWRlU291cmNlJ1xuaW1wb3J0IG1keCBmcm9tICcuL2RyYWdnYWJsZUFjY2Vzc29yLm1keCdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0FkZG9ucy9EcmFnIGFuZCBEcm9wL3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgY29uc3QgRHJhZ2dhYmxlQWNjZXNzb3IgPSBmdW5jdGlvbiBEcmFnZ2FibGVBY2Nlc3NvcigpIHtcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07RHJhZ2dhYmxlQWNjZXNzb3Iuc3RvcnlOYW1lID0gJ2RyYWdnYWJsZUFjY2Vzc29yJ1xuXG5cblxuRHJhZ2dhYmxlQWNjZXNzb3IucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIERyYWdnYWJsZUFjY2Vzc29yKCkge1xcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XCIgfSwgLi4uRHJhZ2dhYmxlQWNjZXNzb3IucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9uZHJhZ292ZXJcIlxuICAgIH19Pntgb25EcmFnT3ZlcmB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRyYWdFdmVudDogU3ludGhldGljRXZlbnQpID0+IGFueWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YElmIGFuIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uRHJhZ092ZXJgfTwvaW5saW5lQ29kZT57YCBjYWxsYmFjayBgfTxlbSBwYXJlbnROYW1lPVwicFwiPntgaXNgfTwvZW0+e2AgcGFzc2VkLCB0aGVuIGl0IGNhbiBkaXNjcmltaW5hdGUgYXMgdG8gd2hldGhlciBhIGRyYWdnYWJsZSBpdGVtIGlzIGRyb3BwYWJsZSBvbiB0aGUgY2FsZW5kYXIuIFRvIGRlc2lnbmF0ZSBhIGRyYWdnYWJsZSBpdGVtIGFzIGRyb3BwYWJsZSwgY2FsbCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BldmVudC5wcmV2ZW50RGVmYXVsdGB9PC9pbmxpbmVDb2RlPntgIGluc2lkZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvbkRyYWdPdmVyYH08L2lubGluZUNvZGU+e2AuIElmIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGV2ZW50LnByZXZlbnREZWZhdWx0YH08L2lubGluZUNvZGU+e2AgaXMgbm90IGNhbGxlZCBpbiB0aGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25EcmFnT3ZlcmB9PC9pbmxpbmVDb2RlPntgIGNhbGxiYWNrLCB0aGVuIHRoZSBkcmFnZ2FibGUgaXRlbSB3aWxsIG5vdCBiZSBkcm9wcGFibGUgb24gdGhlIGNhbGVuZGFyLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzLS1vbi1kcmFnLW92ZXJcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnXFxuaW1wb3J0IEJhc2ljIGZyb20gJy4uLy4uLy4uL2RlbW9zL2V4YW1wbGVDb2RlL2RuZE91dHNpZGVTb3VyY2UnXFxuaW1wb3J0IG1keCBmcm9tICcuL29uRHJhZ092ZXIubWR4J1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AvcHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGZ1bmN0aW9uIE9uRHJhZ092ZXIoKSB7XFxuICByZXR1cm4gPEJhc2ljIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cXG5PbkRyYWdPdmVyLnN0b3J5TmFtZSA9ICdvbkRyYWdPdmVyJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPbkRyYWdPdmVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYydcbmltcG9ydCBCYXNpYyBmcm9tICcuLi8uLi8uLi9kZW1vcy9leGFtcGxlQ29kZS9kbmRPdXRzaWRlU291cmNlJ1xuaW1wb3J0IG1keCBmcm9tICcuL29uRHJhZ092ZXIubWR4J1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AvcHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBjb25zdCBPbkRyYWdPdmVyID0gZnVuY3Rpb24gT25EcmFnT3ZlcigpIHtcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07T25EcmFnT3Zlci5zdG9yeU5hbWUgPSAnb25EcmFnT3ZlcidcblxuXG5cbk9uRHJhZ092ZXIucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIE9uRHJhZ092ZXIoKSB7XFxuICByZXR1cm4gPEJhc2ljIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5PbkRyYWdPdmVyLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbmRyYWdzdGFydFwiXG4gICAgfX0+e2BvbkRyYWdTdGFydGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKHsgZXZlbnQsIGFjdGlvbiwgZGlyZWN0aW9uIH0pID0+IGFueWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEEgY2FsbGJhY2sgZmlyZWQgd2hlbiB1c2VyIGJlZ2lucyB0byBkcmFnIGFuIGV2ZW50LmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzLS1vbi1kcmFnLXN0YXJ0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJ1xcbmltcG9ydCBCYXNpYyBmcm9tICcuLi8uLi8uLi9kZW1vcy9leGFtcGxlQ29kZS9kbmRPdXRzaWRlU291cmNlJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9vbkRyYWdTdGFydC5tZHgnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZnVuY3Rpb24gT25EcmFnU3RhcnQoKSB7XFxuICByZXR1cm4gPEJhc2ljIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cXG5PbkRyYWdTdGFydC5zdG9yeU5hbWUgPSAnb25EcmFnU3RhcnQnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIk9uRHJhZ1N0YXJ0XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYydcbmltcG9ydCBCYXNpYyBmcm9tICcuLi8uLi8uLi9kZW1vcy9leGFtcGxlQ29kZS9kbmRPdXRzaWRlU291cmNlJ1xuaW1wb3J0IG1keCBmcm9tICcuL29uRHJhZ1N0YXJ0Lm1keCdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0FkZG9ucy9EcmFnIGFuZCBEcm9wL3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgY29uc3QgT25EcmFnU3RhcnQgPSBmdW5jdGlvbiBPbkRyYWdTdGFydCgpIHtcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07T25EcmFnU3RhcnQuc3RvcnlOYW1lID0gJ29uRHJhZ1N0YXJ0J1xuXG5cblxuT25EcmFnU3RhcnQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIE9uRHJhZ1N0YXJ0KCkge1xcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XCIgfSwgLi4uT25EcmFnU3RhcnQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9uZHJvcGZyb21vdXRzaWRlXCJcbiAgICB9fT57YG9uRHJvcEZyb21PdXRzaWRlYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoeyBzdGFydCwgZW5kLCBhbGxEYXkgfSkgPT4gYW55YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQSBjYWxsYmFjayBmaXJlZCB3aGVuIHVzZXIgZHJvcHMgYW4gaXRlbSBvbnRvIHRoZSBDYWxlbmRhciBmcm9tIG91dHNpZGUgb2YgdGhlIENhbGVuZGFyLiBEZXZlbG9wZXJzIHdpbGwgdHlwaWNhbGx5IHVzZSB0aGlzIG1ldGhvZCB0byBhZGQgbmV3IGl0ZW1zIHRvIHRoZSBDYWxlbmRhcidzIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImV2ZW50c1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YGV2ZW50c2B9PC9MaW5rVG8+e2AuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgSW1wb3J0YW50OmB9PC9zdHJvbmc+e2AgVGhlIGNhbGxiYWNrIGRvZXMgYH08c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2Bub3RgfTwvc3Ryb25nPntgIHJlY2VpdmUgdGhlIGVsZW1lbnQgYmVpbmcgZHJvcHBlZC4gSXQgb25seSByZWNlaXZlcyB0aGUgZGV0YWlscyBvZiB0aGUgc2xvdCBhbiBlbGVtZW50IHdhcyBkcm9wcGVkIG9uLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzLS1vbi1kcm9wLWZyb20tb3V0c2lkZVwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYydcXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi4vLi4vLi4vZGVtb3MvZXhhbXBsZUNvZGUvZG5kT3V0c2lkZVNvdXJjZSdcXG5pbXBvcnQgbWR4IGZyb20gJy4vb25Ecm9wRnJvbU91dHNpZGUubWR4J1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AvcHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGZ1bmN0aW9uIE9uRHJvcEZyb21PdXRzaWRlKCkge1xcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XFxuT25Ecm9wRnJvbU91dHNpZGUuc3RvcnlOYW1lID0gJ29uRHJvcEZyb21PdXRzaWRlJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPbkRyb3BGcm9tT3V0c2lkZVwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIxfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MjF9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi4vLi4vLi4vZGVtb3MvZXhhbXBsZUNvZGUvZG5kT3V0c2lkZVNvdXJjZSdcbmltcG9ydCBtZHggZnJvbSAnLi9vbkRyb3BGcm9tT3V0c2lkZS5tZHgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IE9uRHJvcEZyb21PdXRzaWRlID0gZnVuY3Rpb24gT25Ecm9wRnJvbU91dHNpZGUoKSB7XG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O09uRHJvcEZyb21PdXRzaWRlLnN0b3J5TmFtZSA9ICdvbkRyb3BGcm9tT3V0c2lkZSdcblxuXG5cbk9uRHJvcEZyb21PdXRzaWRlLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBPbkRyb3BGcm9tT3V0c2lkZSgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLk9uRHJvcEZyb21PdXRzaWRlLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbmV2ZW50ZHJvcFwiXG4gICAgfX0+e2BvbkV2ZW50RHJvcGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKHsgZXZlbnQsIHN0YXJ0LCBlbmQsIGFsbERheSB9KSA9PiBhbnlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBIGNhbGxiYWNrIGZpcmVkIHdoZW4gdXNlciBkcm9wcyBhbiBpdGVtIGZyb20gb25lIHNsb3QgdG8gYW5vdGhlciBmcm9tIHdpdGhpbiB0aGUgQ2FsZW5kYXIuIERldmVsb3BlcnMgd2lsbCB0eXBpY2FsbHkgdXNlIHRoaXMgbWV0aG9kIHRvIHVwZGF0ZSBhbiBpdGVtJ3MgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgc3RhcnRgfTwvaW5saW5lQ29kZT57YCBhbmQgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZW5kYH08L2lubGluZUNvZGU+e2AgaW4gYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZXZlbnRzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZXZlbnRzYH08L0xpbmtUbz57YC5gfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wcy0tb24tZXZlbnQtZHJvcFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYydcXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi4vLi4vLi4vZGVtb3MvZXhhbXBsZUNvZGUvZG5kT3V0c2lkZVNvdXJjZSdcXG5pbXBvcnQgbWR4IGZyb20gJy4vb25FdmVudERyb3AubWR4J1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AvcHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGZ1bmN0aW9uIE9uRXZlbnREcm9wKCkge1xcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XFxuT25FdmVudERyb3Auc3RvcnlOYW1lID0gJ29uRXZlbnREcm9wJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPbkV2ZW50RHJvcFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIxfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MjF9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi4vLi4vLi4vZGVtb3MvZXhhbXBsZUNvZGUvZG5kT3V0c2lkZVNvdXJjZSdcbmltcG9ydCBtZHggZnJvbSAnLi9vbkV2ZW50RHJvcC5tZHgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IE9uRXZlbnREcm9wID0gZnVuY3Rpb24gT25FdmVudERyb3AoKSB7XG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O09uRXZlbnREcm9wLnN0b3J5TmFtZSA9ICdvbkV2ZW50RHJvcCdcblxuXG5cbk9uRXZlbnREcm9wLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBPbkV2ZW50RHJvcCgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLk9uRXZlbnREcm9wLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbmV2ZW50cmVzaXplXCJcbiAgICB9fT57YG9uRXZlbnRSZXNpemVgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uICh7IGV2ZW50LCBzdGFydCwgZW5kIH0pID0+IGFueWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEEgY2FsbGJhY2sgZmlyZWQgd2hlbiB1c2VyIHJlc2l6ZXMgYW4gZXZlbnQuIERldmVsb3BlcnMgd2lsbCB0eXBpY2FsbHkgdXNlIHRoaXMgbWV0aG9kIHRvIHVwZGF0ZSBhbiBpdGVtJ3MgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgc3RhcnRgfTwvaW5saW5lQ29kZT57YCBhbmQgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZW5kYH08L2lubGluZUNvZGU+e2AgaW4gYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZXZlbnRzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZXZlbnRzYH08L0xpbmtUbz57YC5gfTwvcD5cbiAgICA8cD57YFRoZSBgfTxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJyZXNpemFibGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2ByZXNpemFibGVgfTwvTGlua1RvPntgIHByb3AgbXVzdCBiZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B0cnVlYH08L2lubGluZUNvZGU+e2AgKHRoZSBkZWZhdWx0KSB0byB1c2UgdGhlIG1ldGhvZC5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BOb3RlOmB9PC9zdHJvbmc+e2AgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgcmVzaXphYmxlYH08L2lubGluZUNvZGU+e2AgZXZlbnRzIG11c3QgYWxzbyBiZSBkcmFnZ2FibGUuIFlvdSBjYW5ub3QgcmVzaXplIGFuIGV2ZW50IHdpdGggYSBgfTxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJkcmFnZ2FibGUtYWNjZXNzb3JcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BkcmFnZ2FibGVBY2Nlc3NvcmB9PC9MaW5rVG8+e2AgcHJvcCBvZiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BmYWxzZWB9PC9pbmxpbmVDb2RlPntgLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzLS1vbi1ldmVudC1yZXNpemVcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnXFxuaW1wb3J0IEJhc2ljIGZyb20gJy4uLy4uLy4uL2RlbW9zL2V4YW1wbGVDb2RlL3Jlc2l6YWJsZSdcXG5pbXBvcnQgbWR4IGZyb20gJy4vb25FdmVudFJlc2l6ZS5tZHgnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZnVuY3Rpb24gT25FdmVudFJlc2l6ZSgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVxcbk9uRXZlbnRSZXNpemUuc3RvcnlOYW1lID0gJ29uRXZlbnRSZXNpemUnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIk9uRXZlbnRSZXNpemVcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIxfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJ1xuaW1wb3J0IEJhc2ljIGZyb20gJy4uLy4uLy4uL2RlbW9zL2V4YW1wbGVDb2RlL3Jlc2l6YWJsZSdcbmltcG9ydCBtZHggZnJvbSAnLi9vbkV2ZW50UmVzaXplLm1keCdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0FkZG9ucy9EcmFnIGFuZCBEcm9wL3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgY29uc3QgT25FdmVudFJlc2l6ZSA9IGZ1bmN0aW9uIE9uRXZlbnRSZXNpemUoKSB7XG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O09uRXZlbnRSZXNpemUuc3RvcnlOYW1lID0gJ29uRXZlbnRSZXNpemUnXG5cblxuXG5PbkV2ZW50UmVzaXplLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBPbkV2ZW50UmVzaXplKCkge1xcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XCIgfSwgLi4uT25FdmVudFJlc2l6ZS5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwicmVzaXphYmxlXCJcbiAgICB9fT57YHJlc2l6YWJsZWB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgdHJ1ZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERldGVybWluZXMgaWYgZXZlbnRzIG1heSBiZSByZXNpemVkIG9uIHRoZSBDYWxlbmRhci4gVXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGB9PExpbmtUbyBraW5kPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtcHJvcHNcIiBzdG9yeT1cIm9uLWV2ZW50LXJlc2l6ZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uRXZlbnRSZXNpemVgfTwvTGlua1RvPntgLiBXaGVuIHVzZWQgd2l0aCB0aGUgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwicmVzaXphYmxlLWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgcmVzaXphYmxlQWNjZXNzb3JgfTwvTGlua1RvPntgIHRoZSBkZXZlbG9wZXIgaGFzIGV2ZW4gZ3JlYXRlciBjb250cm9sLmB9PC9wPlxuICAgIDxwPjxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YE5vdGU6YH08L3N0cm9uZz57YCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2ByZXNpemFibGVgfTwvaW5saW5lQ29kZT57YCBldmVudHMgbXVzdCBhbHNvIGJlIGRyYWdnYWJsZS4gWW91IGNhbm5vdCByZXNpemUgYW4gZXZlbnQgd2l0aCBhIGB9PExpbmtUbyBraW5kPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtcHJvcHNcIiBzdG9yeT1cImRyYWdnYWJsZS1hY2Nlc3NvclwiIG1keFR5cGU9XCJMaW5rVG9cIj57YGRyYWdnYWJsZUFjY2Vzc29yYH08L0xpbmtUbz57YCBwcm9wIG9mIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGZhbHNlYH08L2lubGluZUNvZGU+e2AuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtcHJvcHMtLXJlc2l6YWJsZVwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYydcXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi4vLi4vLi4vZGVtb3MvZXhhbXBsZUNvZGUvcmVzaXphYmxlJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9yZXNpemFibGUubWR4J1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AvcHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGZ1bmN0aW9uIFJlc2l6YWJsZSgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVxcblJlc2l6YWJsZS5zdG9yeU5hbWUgPSAncmVzaXphYmxlJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJSZXNpemFibGVcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIxfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJ1xuaW1wb3J0IEJhc2ljIGZyb20gJy4uLy4uLy4uL2RlbW9zL2V4YW1wbGVDb2RlL3Jlc2l6YWJsZSdcbmltcG9ydCBtZHggZnJvbSAnLi9yZXNpemFibGUubWR4J1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AvcHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBjb25zdCBSZXNpemFibGUgPSBmdW5jdGlvbiBSZXNpemFibGUoKSB7XG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O1Jlc2l6YWJsZS5zdG9yeU5hbWUgPSAncmVzaXphYmxlJ1xuXG5cblxuUmVzaXphYmxlLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBSZXNpemFibGUoKSB7XFxuICByZXR1cm4gPEJhc2ljIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5SZXNpemFibGUucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcInJlc2l6YWJsZWFjY2Vzc29yXCJcbiAgICB9fT57YHJlc2l6YWJsZUFjY2Vzc29yYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmd8ZnVuY3Rpb24gKGV2ZW50KSA9PiBib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2AoKSA9PiB0cnVlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRGV0ZXJtaW5lcyBpZiBhbiBldmVudCBpcyByZXNpemFibGUuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgTm90ZTpgfTwvc3Ryb25nPntgIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHJlc2l6YWJsZWB9PC9pbmxpbmVDb2RlPntgIGV2ZW50cyBtdXN0IGFsc28gYmUgZHJhZ2dhYmxlLiBZb3UgY2Fubm90IHJlc2l6ZSBhbiBldmVudCB3aXRoIGEgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwiZHJhZ2dhYmxlLWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZHJhZ2dhYmxlQWNjZXNzb3JgfTwvTGlua1RvPntgIHByb3Agb2YgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZmFsc2VgfTwvaW5saW5lQ29kZT57YC5gfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wcy0tcmVzaXphYmxlXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJ1xcbmltcG9ydCBCYXNpYyBmcm9tICcuLi8uLi8uLi9kZW1vcy9leGFtcGxlQ29kZS9yZXNpemFibGUnXFxuaW1wb3J0IG1keCBmcm9tICcuL3Jlc2l6YWJsZUFjY2Vzc29yLm1keCdcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ0FkZG9ucy9EcmFnIGFuZCBEcm9wL3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBmdW5jdGlvbiBSZXNpemFibGVBY2Nlc3NvcigpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVxcblJlc2l6YWJsZUFjY2Vzc29yLnN0b3J5TmFtZSA9ICdyZXNpemFibGVBY2Nlc3NvcidcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiUmVzaXphYmxlQWNjZXNzb3JcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIxfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJ1xuaW1wb3J0IEJhc2ljIGZyb20gJy4uLy4uLy4uL2RlbW9zL2V4YW1wbGVDb2RlL3Jlc2l6YWJsZSdcbmltcG9ydCBtZHggZnJvbSAnLi9yZXNpemFibGVBY2Nlc3Nvci5tZHgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IFJlc2l6YWJsZUFjY2Vzc29yID0gZnVuY3Rpb24gUmVzaXphYmxlQWNjZXNzb3IoKSB7XG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O1Jlc2l6YWJsZUFjY2Vzc29yLnN0b3J5TmFtZSA9ICdyZXNpemFibGVBY2Nlc3NvcidcblxuXG5cblJlc2l6YWJsZUFjY2Vzc29yLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBSZXNpemFibGVBY2Nlc3NvcigpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLlJlc2l6YWJsZUFjY2Vzc29yLnBhcmFtZXRlcnMgfTsiLCJpbXBvcnQgUmVhY3QsIHsgRnJhZ21lbnQsIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBEYXRlTG9jYWxpemVyIH0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuaW1wb3J0IERlbW9MaW5rIGZyb20gJy4uLy4uL0RlbW9MaW5rLmNvbXBvbmVudCdcbi8vIFN0b3J5Ym9vayBjYW5ub3QgYWxpYXMgdGhpcywgc28geW91IHdvdWxkIHVzZSAncmVhY3QtYmlnLWNhbGVuZGFyL2xpYi9hZGRvbnMvZHJhZ0FuZERyb3AnXG5pbXBvcnQgd2l0aERyYWdBbmREcm9wIGZyb20gJy4uLy4uLy4uL3NyYy9hZGRvbnMvZHJhZ0FuZERyb3AnXG4vLyBTdG9yeWJvb2sgY2Fubm90IGFsaWFzIHRoaXMsIHNvIHlvdSB3b3VsZCB1c2UgJ3JlYWN0LWJpZy1jYWxlbmRhci9saWIvYWRkb25zL2RyYWdBbmREcm9wL3N0eWxlcy5zY3NzJ1xuaW1wb3J0ICcuLi8uLi8uLi9zcmMvYWRkb25zL2RyYWdBbmREcm9wL3N0eWxlcy5zY3NzJ1xuXG5jb25zdCBEcmFnQW5kRHJvcENhbGVuZGFyID0gd2l0aERyYWdBbmREcm9wKENhbGVuZGFyKVxuXG5jb25zdCBldmVudHMgPSBbXG4gIHtcbiAgICBpZDogMCxcbiAgICB0aXRsZTogJ0JvYXJkIG1lZXRpbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgOSwgMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgMTMsIDAsIDApLFxuICAgIHJlc291cmNlSWQ6IFsxLCAyXSxcbiAgfSxcbiAge1xuICAgIGlkOiAxLFxuICAgIHRpdGxlOiAnTVMgdHJhaW5pbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgMTQsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxOCwgMCwgMjksIDE2LCAzMCwgMCksXG4gICAgcmVzb3VyY2VJZDogMixcbiAgfSxcbiAge1xuICAgIGlkOiAyLFxuICAgIHRpdGxlOiAnVGVhbSBsZWFkIG1lZXRpbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgOCwgMzAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxOCwgMCwgMjksIDEyLCAzMCwgMCksXG4gICAgcmVzb3VyY2VJZDogMyxcbiAgfSxcbiAge1xuICAgIGlkOiAxMCxcbiAgICB0aXRsZTogJ0JvYXJkIG1lZXRpbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCAwLCAzMCwgMjMsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxOCwgMCwgMzAsIDIzLCA1OSwgMCksXG4gICAgcmVzb3VyY2VJZDogMSxcbiAgfSxcbiAge1xuICAgIGlkOiAxMSxcbiAgICB0aXRsZTogJ0JpcnRoZGF5IFBhcnR5JyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxOCwgMCwgMzAsIDcsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxOCwgMCwgMzAsIDEwLCAzMCwgMCksXG4gICAgcmVzb3VyY2VJZDogNCxcbiAgfSxcbiAge1xuICAgIGlkOiAxMixcbiAgICB0aXRsZTogJ0JvYXJkIG1lZXRpbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgMjMsIDU5LCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTgsIDAsIDMwLCAxMywgMCwgMCksXG4gICAgcmVzb3VyY2VJZDogMSxcbiAgfSxcbiAge1xuICAgIGlkOiAxMyxcbiAgICB0aXRsZTogJ0JvYXJkIG1lZXRpbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgMjMsIDUwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTgsIDAsIDMwLCAxMywgMCwgMCksXG4gICAgcmVzb3VyY2VJZDogMixcbiAgfSxcbiAge1xuICAgIGlkOiAxNCxcbiAgICB0aXRsZTogJ0JvYXJkIG1lZXRpbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgMjMsIDQwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTgsIDAsIDMwLCAxMywgMCwgMCksXG4gICAgcmVzb3VyY2VJZDogNCxcbiAgfSxcbl1cblxuY29uc3QgcmVzb3VyY2VNYXAgPSBbXG4gIHsgcmVzb3VyY2VJZDogMSwgcmVzb3VyY2VUaXRsZTogJ0JvYXJkIHJvb20nIH0sXG4gIHsgcmVzb3VyY2VJZDogMiwgcmVzb3VyY2VUaXRsZTogJ1RyYWluaW5nIHJvb20nIH0sXG4gIHsgcmVzb3VyY2VJZDogMywgcmVzb3VyY2VUaXRsZTogJ01lZXRpbmcgcm9vbSAxJyB9LFxuICB7IHJlc291cmNlSWQ6IDQsIHJlc291cmNlVGl0bGU6ICdNZWV0aW5nIHJvb20gMicgfSxcbl1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRG5EUmVzb3VyY2UoeyBsb2NhbGl6ZXIgfSkge1xuICBjb25zdCBbbXlFdmVudHMsIHNldE15RXZlbnRzXSA9IHVzZVN0YXRlKGV2ZW50cylcbiAgY29uc3QgW2NvcHlFdmVudCwgc2V0Q29weUV2ZW50XSA9IHVzZVN0YXRlKHRydWUpXG5cbiAgY29uc3QgdG9nZ2xlQ29weUV2ZW50ID0gdXNlQ2FsbGJhY2soKCkgPT4gc2V0Q29weUV2ZW50KCh2YWwpID0+ICF2YWwpLCBbXSlcblxuICBjb25zdCBtb3ZlRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAoe1xuICAgICAgZXZlbnQsXG4gICAgICBzdGFydCxcbiAgICAgIGVuZCxcbiAgICAgIHJlc291cmNlSWQsXG4gICAgICBpc0FsbERheTogZHJvcHBlZE9uQWxsRGF5U2xvdCA9IGZhbHNlLFxuICAgIH0pID0+IHtcbiAgICAgIGNvbnN0IHsgYWxsRGF5IH0gPSBldmVudFxuICAgICAgaWYgKCFhbGxEYXkgJiYgZHJvcHBlZE9uQWxsRGF5U2xvdCkge1xuICAgICAgICBldmVudC5hbGxEYXkgPSB0cnVlXG4gICAgICB9XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShldmVudC5yZXNvdXJjZUlkKSkge1xuICAgICAgICBpZiAoY29weUV2ZW50KSB7XG4gICAgICAgICAgcmVzb3VyY2VJZCA9IFsuLi5uZXcgU2V0KFsuLi5ldmVudC5yZXNvdXJjZUlkLCByZXNvdXJjZUlkXSldXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBldmVudC5yZXNvdXJjZUlkLmZpbHRlcihcbiAgICAgICAgICAgIChldikgPT4gZXYgIT09IGV2ZW50LnNvdXJjZVJlc291cmNlXG4gICAgICAgICAgKVxuICAgICAgICAgIHJlc291cmNlSWQgPSBbLi4ubmV3IFNldChbLi4uZmlsdGVyZWQsIHJlc291cmNlSWRdKV1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjb3B5RXZlbnQpIHtcbiAgICAgICAgcmVzb3VyY2VJZCA9IFsuLi5uZXcgU2V0KFtldmVudC5yZXNvdXJjZUlkLCByZXNvdXJjZUlkXSldXG4gICAgICB9XG5cbiAgICAgIHNldE15RXZlbnRzKChwcmV2KSA9PiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gcHJldi5maW5kKChldikgPT4gZXYuaWQgPT09IGV2ZW50LmlkKSA/PyB7fVxuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IHByZXYuZmlsdGVyKChldikgPT4gZXYuaWQgIT09IGV2ZW50LmlkKVxuICAgICAgICByZXR1cm4gWy4uLmZpbHRlcmVkLCB7IC4uLmV4aXN0aW5nLCBzdGFydCwgZW5kLCByZXNvdXJjZUlkLCBhbGxEYXkgfV1cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbc2V0TXlFdmVudHMsIGNvcHlFdmVudF1cbiAgKVxuXG4gIGNvbnN0IHJlc2l6ZUV2ZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgZXZlbnQsIHN0YXJ0LCBlbmQgfSkgPT4ge1xuICAgICAgc2V0TXlFdmVudHMoKHByZXYpID0+IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBwcmV2LmZpbmQoKGV2KSA9PiBldi5pZCA9PT0gZXZlbnQuaWQpID8/IHt9XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gcHJldi5maWx0ZXIoKGV2KSA9PiBldi5pZCAhPT0gZXZlbnQuaWQpXG4gICAgICAgIHJldHVybiBbLi4uZmlsdGVyZWQsIHsgLi4uZXhpc3RpbmcsIHN0YXJ0LCBlbmQgfV1cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbc2V0TXlFdmVudHNdXG4gIClcblxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBzY3JvbGxUb1RpbWUgfSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSksXG4gICAgICBzY3JvbGxUb1RpbWU6IG5ldyBEYXRlKDE5NzIsIDAsIDEsIDgpLFxuICAgIH0pLFxuICAgIFtdXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIDxEZW1vTGluayBmaWxlTmFtZT1cImRuZHJlc291cmNlXCI+XG4gICAgICAgIDxzdHJvbmc+XG4gICAgICAgICAgRHJhZyBhbmQgRHJvcCBhbiBcImV2ZW50XCIgZnJvbSBvbmUgcmVzb3VyY2Ugc2xvdCB0byBhbm90aGVyLlxuICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW46ICcxMHB4IDAgMjBweCAwJyB9fT5cbiAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgY2hlY2tlZD17Y29weUV2ZW50fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17dG9nZ2xlQ29weUV2ZW50fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIEtlZXAgY29weSBvZiBkcmFnZ2VkIFwic291cmNlXCIgZXZlbnQgaW4gaXRzIG9yaWdpbmFsIHJlc291cmNlIHNsb3QuXG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0RlbW9MaW5rPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPERyYWdBbmREcm9wQ2FsZW5kYXJcbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLkRBWX1cbiAgICAgICAgICBldmVudHM9e215RXZlbnRzfVxuICAgICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICAgIG9uRXZlbnREcm9wPXttb3ZlRXZlbnR9XG4gICAgICAgICAgb25FdmVudFJlc2l6ZT17cmVzaXplRXZlbnR9XG4gICAgICAgICAgcmVzaXphYmxlXG4gICAgICAgICAgcmVzb3VyY2VJZEFjY2Vzc29yPVwicmVzb3VyY2VJZFwiXG4gICAgICAgICAgcmVzb3VyY2VzPXtyZXNvdXJjZU1hcH1cbiAgICAgICAgICByZXNvdXJjZVRpdGxlQWNjZXNzb3I9XCJyZXNvdXJjZVRpdGxlXCJcbiAgICAgICAgICBzY3JvbGxUb1RpbWU9e3Njcm9sbFRvVGltZX1cbiAgICAgICAgICBzZWxlY3RhYmxlXG4gICAgICAgICAgc2hvd011bHRpRGF5VGltZXM9e3RydWV9XG4gICAgICAgICAgc3RlcD17MTV9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0ZyYWdtZW50PlxuICApXG59XG5EbkRSZXNvdXJjZS5wcm9wVHlwZXMgPSB7XG4gIGxvY2FsaXplcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZUxvY2FsaXplciksXG59XG4iLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJ1xcbmltcG9ydCBEbkRSZXNvdXJjZSBmcm9tICcuLi8uLi9kZW1vcy9leGFtcGxlQ29kZS9kbmRyZXNvdXJjZSdcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ0FkZG9ucy9EcmFnIGFuZCBEcm9wJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBudWxsLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZnVuY3Rpb24gRXhhbXBsZTIoKSB7XFxuICByZXR1cm4gPERuRFJlc291cmNlIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cXG5FeGFtcGxlMi5zdG9yeU5hbWUgPSAnUmVzb3VyY2UgRHJhZyBhbmQgRHJvcCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRXhhbXBsZTJcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJ1xuaW1wb3J0IERuRFJlc291cmNlIGZyb20gJy4uLy4uL2RlbW9zL2V4YW1wbGVDb2RlL2RuZHJlc291cmNlJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbnVsbCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgY29uc3QgRXhhbXBsZTIgPSBmdW5jdGlvbiBFeGFtcGxlMigpIHtcbiAgcmV0dXJuIDxEbkRSZXNvdXJjZSBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07RXhhbXBsZTIuc3RvcnlOYW1lID0gJ1Jlc291cmNlIERyYWcgYW5kIERyb3AnXG5cblxuXG5FeGFtcGxlMi5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRXhhbXBsZTIoKSB7XFxuICByZXR1cm4gPERuRFJlc291cmNlIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5FeGFtcGxlMi5wYXJhbWV0ZXJzIH07IiwiZXhwb3J0IGRlZmF1bHQgW1xuICB7XG4gICAgaWQ6IDAsXG4gICAgdGl0bGU6ICdBdmFpbGFibGUgZm9yIENsaWVudHMnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxMywgNiksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMywgMTgpLFxuICB9LFxuXVxuIiwiaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIERhdGVMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgRGVtb0xpbmsgZnJvbSAnLi4vLi4vRGVtb0xpbmsuY29tcG9uZW50J1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IGJhY2tncm91bmRFdmVudHMgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2JhY2tncm91bmRFdmVudHMnXG5pbXBvcnQgKiBhcyBkYXRlcyBmcm9tICcuLi8uLi8uLi9zcmMvdXRpbHMvZGF0ZXMnXG5cbmxldCBhbGxWaWV3cyA9IE9iamVjdC5rZXlzKFZpZXdzKS5tYXAoKGspID0+IFZpZXdzW2tdKVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCYWNrZ3JvdW5kRXZlbnRzQ2FsZW5kYXIoeyBsb2NhbGl6ZXIgfSkge1xuICBjb25zdCB7IGRlZmF1bHREYXRlLCBtYXggfSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gICAgICBtYXg6IGRhdGVzLmFkZChkYXRlcy5lbmRPZihuZXcgRGF0ZSgyMDE1LCAxNywgMSksICdkYXknKSwgLTEsICdob3VycycpLFxuICAgIH0pLFxuICAgIFtdXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIDxEZW1vTGluayBmaWxlTmFtZT1cImJhY2tncm91bmRFdmVudHNcIiAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPENhbGVuZGFyXG4gICAgICAgICAgYmFja2dyb3VuZEV2ZW50cz17YmFja2dyb3VuZEV2ZW50c31cbiAgICAgICAgICBkYXlMYXlvdXRBbGdvcml0aG09XCJuby1vdmVybGFwXCJcbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLkRBWX1cbiAgICAgICAgICBldmVudHM9e2V2ZW50c31cbiAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICBtYXg9e21heH1cbiAgICAgICAgICBzaG93TXVsdGlEYXlUaW1lc1xuICAgICAgICAgIHN0ZXA9ezYwfVxuICAgICAgICAgIHZpZXdzPXthbGxWaWV3c31cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvRnJhZ21lbnQ+XG4gIClcbn1cbkJhY2tncm91bmRFdmVudHNDYWxlbmRhci5wcm9wVHlwZXMgPSB7XG4gIGxvY2FsaXplcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZUxvY2FsaXplciksXG59XG4iLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBCYWNrZ3JvdW5kQ2FsZW5kYXIgZnJvbSAnLi9leGFtcGxlQ29kZS9iYWNrZ3JvdW5kRXZlbnRzJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG51bGwsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFeGFtcGxlMTAoKSB7XFxuICByZXR1cm4gPEJhY2tncm91bmRDYWxlbmRhciBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XFxuRXhhbXBsZTEwLnN0b3J5TmFtZSA9ICdCYWNrZ3JvdW5kIEV2ZW50cydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRXhhbXBsZTEwXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBCYWNrZ3JvdW5kQ2FsZW5kYXIgZnJvbSAnLi9leGFtcGxlQ29kZS9iYWNrZ3JvdW5kRXZlbnRzJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbnVsbCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgY29uc3QgRXhhbXBsZTEwID0gZnVuY3Rpb24gRXhhbXBsZTEwKCkge1xuICByZXR1cm4gPEJhY2tncm91bmRDYWxlbmRhciBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07RXhhbXBsZTEwLnN0b3J5TmFtZSA9ICdCYWNrZ3JvdW5kIEV2ZW50cydcblxuXG5cbkV4YW1wbGUxMC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRXhhbXBsZTEwKCkge1xcbiAgcmV0dXJuIDxCYWNrZ3JvdW5kQ2FsZW5kYXIgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLkV4YW1wbGUxMC5wYXJhbWV0ZXJzIH07IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi9leGFtcGxlQ29kZS9iYXNpYydcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ0V4YW1wbGVzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBudWxsLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZnVuY3Rpb24gRXhhbXBsZTEoKSB7XFxuICByZXR1cm4gPEJhc2ljIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cXG5FeGFtcGxlMS5zdG9yeU5hbWUgPSAnQmFzaWMgRGVtbydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRXhhbXBsZTFcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IEJhc2ljIGZyb20gJy4vZXhhbXBsZUNvZGUvYmFzaWMnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdFeGFtcGxlcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBudWxsLFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBjb25zdCBFeGFtcGxlMSA9IGZ1bmN0aW9uIEV4YW1wbGUxKCkge1xuICByZXR1cm4gPEJhc2ljIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxufTtFeGFtcGxlMS5zdG9yeU5hbWUgPSAnQmFzaWMgRGVtbydcblxuXG5cbkV4YW1wbGUxLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBFeGFtcGxlMSgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLkV4YW1wbGUxLnBhcmFtZXRlcnMgfTsiLCJpbXBvcnQgUmVhY3QsIHsgRnJhZ21lbnQsIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgQ2FsZW5kYXIsIERhdGVMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgRGVtb0xpbmsgZnJvbSAnLi4vLi4vRGVtb0xpbmsuY29tcG9uZW50J1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IExheW91dCBmcm9tICdyZWFjdC10YWNrbGUtYm94L0xheW91dCdcblxucmVxdWlyZSgnZ2xvYmFsaXplL2xpYi9jdWx0dXJlcy9nbG9iYWxpemUuY3VsdHVyZS5lbi1HQicpXG5yZXF1aXJlKCdnbG9iYWxpemUvbGliL2N1bHR1cmVzL2dsb2JhbGl6ZS5jdWx0dXJlLmVzJylcbnJlcXVpcmUoJ2dsb2JhbGl6ZS9saWIvY3VsdHVyZXMvZ2xvYmFsaXplLmN1bHR1cmUuZnInKVxucmVxdWlyZSgnZ2xvYmFsaXplL2xpYi9jdWx0dXJlcy9nbG9iYWxpemUuY3VsdHVyZS5hci1BRScpXG5cbmNvbnN0IGN1bHR1cmVzID0gWydlbicsICdlbi1HQicsICdlcycsICdmcicsICdhci1BRSddXG5jb25zdCBsYW5nID0ge1xuICBlbjogbnVsbCxcbiAgJ2VuLUdCJzogbnVsbCxcbiAgZXM6IHtcbiAgICB3ZWVrOiAnU2VtYW5hJyxcbiAgICB3b3JrX3dlZWs6ICdTZW1hbmEgZGUgdHJhYmFqbycsXG4gICAgZGF5OiAnRMOtYScsXG4gICAgbW9udGg6ICdNZXMnLFxuICAgIHByZXZpb3VzOiAnQXRyw6FzJyxcbiAgICBuZXh0OiAnRGVzcHXDqXMnLFxuICAgIHRvZGF5OiAnSG95JyxcbiAgICBhZ2VuZGE6ICdFbCBEaWFyaW8nLFxuXG4gICAgc2hvd01vcmU6ICh0b3RhbCkgPT4gYCske3RvdGFsfSBtw6FzYCxcbiAgfSxcbiAgZnI6IHtcbiAgICB3ZWVrOiAnTGEgc2VtYWluZScsXG4gICAgd29ya193ZWVrOiAnU2VtYWluZSBkZSB0cmF2YWlsJyxcbiAgICBkYXk6ICdKb3VyJyxcbiAgICBtb250aDogJ01vaXMnLFxuICAgIHByZXZpb3VzOiAnQW50w6lyaWV1cicsXG4gICAgbmV4dDogJ1Byb2NoYWluJyxcbiAgICB0b2RheTogYEF1am91cmQnaHVpYCxcbiAgICBhZ2VuZGE6ICdPcmRyZSBkdSBqb3VyJyxcblxuICAgIHNob3dNb3JlOiAodG90YWwpID0+IGArJHt0b3RhbH0gcGx1c2AsXG4gIH0sXG4gICdhci1BRSc6IHtcbiAgICB3ZWVrOiAn2KPYs9io2YjYuScsXG4gICAgd29ya193ZWVrOiAn2KPYs9io2YjYuSDYp9mE2LnZhdmEJyxcbiAgICBkYXk6ICfZitmI2YUnLFxuICAgIG1vbnRoOiAn2LTZh9ixJyxcbiAgICBwcmV2aW91czogJ9iz2KfYqNmCJyxcbiAgICBuZXh0OiAn2KfZhNiq2KfZhNmKJyxcbiAgICB0b2RheTogJ9in2YTZitmI2YUnLFxuICAgIGFnZW5kYTogJ9is2K/ZiNmEINij2LnZhdin2YQnLFxuXG4gICAgc2hvd01vcmU6ICh0b3RhbCkgPT4gYCske3RvdGFsfSDYpdi22KfZgdmKYCxcbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ3VsdHVyZXNEZW1vKHsgbG9jYWxpemVyIH0pIHtcbiAgY29uc3QgW2N1bHR1cmUsIHNldEN1bHR1cmVdID0gdXNlU3RhdGUoJ2ZyJylcbiAgY29uc3QgW3JpZ2h0VG9MZWZ0LCBzZXRSaWdodFRvTGVmdF0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBjdWx0dXJlT25DbGljayA9IHVzZUNhbGxiYWNrKFxuICAgICh7IHRhcmdldDogeyB2YWx1ZSB9IH0pID0+IHtcbiAgICAgIC8vIHJlYWxseSBiZXR0ZXIgdG8gdXNlUmVkdWNlciBmb3Igc2ltdWx0YW5lb3VzbHkgc2V0dGluZyBtdWx0aXBsZSBzdGF0ZSB2YWx1ZXNcbiAgICAgIHNldEN1bHR1cmUodmFsdWUpXG4gICAgICBzZXRSaWdodFRvTGVmdCh2YWx1ZSA9PT0gJ2FyLUFFJylcbiAgICB9LFxuICAgIFtzZXRDdWx0dXJlXVxuICApXG5cbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgbWVzc2FnZXMgfSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcbiAgICAgIG1lc3NhZ2VzOiBsYW5nW2N1bHR1cmVdLFxuICAgIH0pLFxuICAgIFtjdWx0dXJlXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8RnJhZ21lbnQ+XG4gICAgICA8RGVtb0xpbmsgZmlsZU5hbWU9XCJjdWx0dXJlc1wiPlxuICAgICAgICA8TGF5b3V0IGRpcmVjdGlvbj1cImNvbHVtblwiIGFsaWduPVwiY2VudGVyXCI+XG4gICAgICAgICAgPGxhYmVsPlNlbGVjdCBhIEN1bHR1cmU8L2xhYmVsPnsnICd9XG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiAyMDAsIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snIH19XG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU9eydmcid9XG4gICAgICAgICAgICBvbkNoYW5nZT17Y3VsdHVyZU9uQ2xpY2t9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2N1bHR1cmVzLm1hcCgoYywgaWR4KSA9PiAoXG4gICAgICAgICAgICAgIDxvcHRpb24ga2V5PXtpZHh9IHZhbHVlPXtjfT5cbiAgICAgICAgICAgICAgICB7Y31cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9MYXlvdXQ+XG4gICAgICA8L0RlbW9MaW5rPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPENhbGVuZGFyXG4gICAgICAgICAgY3VsdHVyZT17Y3VsdHVyZX1cbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZXZlbnRzPXtldmVudHN9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgbWVzc2FnZXM9e21lc3NhZ2VzfVxuICAgICAgICAgIHJ0bD17cmlnaHRUb0xlZnR9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0ZyYWdtZW50PlxuICApXG59XG5DdWx0dXJlc0RlbW8ucHJvcFR5cGVzID0ge1xuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGVMb2NhbGl6ZXIpLFxufVxuIiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgQ3VsdHVyZURlbW8gZnJvbSAnLi9leGFtcGxlQ29kZS9jdWx0dXJlcydcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ0V4YW1wbGVzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBudWxsLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZnVuY3Rpb24gRXhhbXBsZTUoKSB7XFxuICByZXR1cm4gPEN1bHR1cmVEZW1vIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cXG5FeGFtcGxlNS5zdG9yeU5hbWUgPSAnTG9jYWxpemF0aW9uJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJFeGFtcGxlNVwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgQ3VsdHVyZURlbW8gZnJvbSAnLi9leGFtcGxlQ29kZS9jdWx0dXJlcydcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0V4YW1wbGVzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG51bGwsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IEV4YW1wbGU1ID0gZnVuY3Rpb24gRXhhbXBsZTUoKSB7XG4gIHJldHVybiA8Q3VsdHVyZURlbW8gbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O0V4YW1wbGU1LnN0b3J5TmFtZSA9ICdMb2NhbGl6YXRpb24nXG5cblxuXG5FeGFtcGxlNS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRXhhbXBsZTUoKSB7XFxuICByZXR1cm4gPEN1bHR1cmVEZW1vIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5FeGFtcGxlNS5wYXJhbWV0ZXJzIH07IiwiaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5cbmltcG9ydCAqIGFzIGRhdGVzIGZyb20gJ2RhdGUtYXJpdGhtZXRpYydcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgTmF2aWdhdGUsIERhdGVMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgVGltZUdyaWQgZnJvbSAnLi4vLi4vLi4vc3JjL1RpbWVHcmlkJyAvLyB1c2UgJ3JlYWN0LWJpZy1jYWxlbmRhci9saWIvVGltZUdyaWQnLiBDYW4ndCAnYWxpYXMnIGluIFN0b3J5Ym9va1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IERlbW9MaW5rIGZyb20gJy4uLy4uL0RlbW9MaW5rLmNvbXBvbmVudCdcblxuZnVuY3Rpb24gTXlXZWVrKHtcbiAgZGF0ZSxcbiAgbG9jYWxpemVyLFxuICBtYXggPSBsb2NhbGl6ZXIuZW5kT2YobmV3IERhdGUoKSwgJ2RheScpLFxuICBtaW4gPSBsb2NhbGl6ZXIuc3RhcnRPZihuZXcgRGF0ZSgpLCAnZGF5JyksXG4gIHNjcm9sbFRvVGltZSA9IGxvY2FsaXplci5zdGFydE9mKG5ldyBEYXRlKCksICdkYXknKSxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgY29uc3QgY3VyclJhbmdlID0gdXNlTWVtbyhcbiAgICAoKSA9PiBNeVdlZWsucmFuZ2UoZGF0ZSwgeyBsb2NhbGl6ZXIgfSksXG4gICAgW2RhdGUsIGxvY2FsaXplcl1cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFRpbWVHcmlkXG4gICAgICBkYXRlPXtkYXRlfVxuICAgICAgZXZlbnRPZmZzZXQ9ezE1fVxuICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICBtYXg9e21heH1cbiAgICAgIG1pbj17bWlufVxuICAgICAgcmFuZ2U9e2N1cnJSYW5nZX1cbiAgICAgIHNjcm9sbFRvVGltZT17c2Nyb2xsVG9UaW1lfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuTXlXZWVrLnByb3BUeXBlcyA9IHtcbiAgZGF0ZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBtYXg6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICBtaW46IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICBzY3JvbGxUb1RpbWU6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxufVxuXG5NeVdlZWsucmFuZ2UgPSAoZGF0ZSwgeyBsb2NhbGl6ZXIgfSkgPT4ge1xuICBjb25zdCBzdGFydCA9IGRhdGVcbiAgY29uc3QgZW5kID0gZGF0ZXMuYWRkKHN0YXJ0LCAyLCAnZGF5JylcblxuICBsZXQgY3VycmVudCA9IHN0YXJ0XG4gIGNvbnN0IHJhbmdlID0gW11cblxuICB3aGlsZSAobG9jYWxpemVyLmx0ZShjdXJyZW50LCBlbmQsICdkYXknKSkge1xuICAgIHJhbmdlLnB1c2goY3VycmVudClcbiAgICBjdXJyZW50ID0gbG9jYWxpemVyLmFkZChjdXJyZW50LCAxLCAnZGF5JylcbiAgfVxuXG4gIHJldHVybiByYW5nZVxufVxuXG5NeVdlZWsubmF2aWdhdGUgPSAoZGF0ZSwgYWN0aW9uLCB7IGxvY2FsaXplciB9KSA9PiB7XG4gIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgY2FzZSBOYXZpZ2F0ZS5QUkVWSU9VUzpcbiAgICAgIHJldHVybiBsb2NhbGl6ZXIuYWRkKGRhdGUsIC0zLCAnZGF5JylcblxuICAgIGNhc2UgTmF2aWdhdGUuTkVYVDpcbiAgICAgIHJldHVybiBsb2NhbGl6ZXIuYWRkKGRhdGUsIDMsICdkYXknKVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkYXRlXG4gIH1cbn1cblxuTXlXZWVrLnRpdGxlID0gKGRhdGUpID0+IHtcbiAgcmV0dXJuIGBNeSBhd2Vzb21lIHdlZWs6ICR7ZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoKX1gXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEN1c3RvbVZpZXcoeyBsb2NhbGl6ZXIgfSkge1xuICBjb25zdCB7IGRlZmF1bHREYXRlLCB2aWV3cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxuICAgICAgdmlld3M6IHtcbiAgICAgICAgbW9udGg6IHRydWUsXG4gICAgICAgIHdlZWs6IE15V2VlayxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPEZyYWdtZW50PlxuICAgICAgPERlbW9MaW5rIGZpbGVOYW1lPVwiY3VzdG9tVmlld1wiPlxuICAgICAgICA8c3Ryb25nPlRoZSBDYWxlbmRhciBiZWxvdyBpbXBsZW1lbnRzIGEgY3VzdG9tIDMtZGF5IHdlZWsgdmlldzwvc3Ryb25nPlxuICAgICAgPC9EZW1vTGluaz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICAgIDxDYWxlbmRhclxuICAgICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cbiAgICAgICAgICBldmVudHM9e2V2ZW50c31cbiAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICB2aWV3cz17dmlld3N9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0ZyYWdtZW50PlxuICApXG59XG5DdXN0b21WaWV3LnByb3BUeXBlcyA9IHtcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlTG9jYWxpemVyKSxcbn1cbiIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IEN1c3RvbVZpZXcgZnJvbSAnLi9leGFtcGxlQ29kZS9jdXN0b21WaWV3J1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG51bGwsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFeGFtcGxlOSgpIHtcXG4gIHJldHVybiA8Q3VzdG9tVmlldyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XFxuRXhhbXBsZTkuc3RvcnlOYW1lID0gJ0N1c3RvbSBDYWxlbmRhciBWaWV3cydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRXhhbXBsZTlcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IEN1c3RvbVZpZXcgZnJvbSAnLi9leGFtcGxlQ29kZS9jdXN0b21WaWV3J1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbnVsbCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgY29uc3QgRXhhbXBsZTkgPSBmdW5jdGlvbiBFeGFtcGxlOSgpIHtcbiAgcmV0dXJuIDxDdXN0b21WaWV3IGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxufTtFeGFtcGxlOS5zdG9yeU5hbWUgPSAnQ3VzdG9tIENhbGVuZGFyIFZpZXdzJ1xuXG5cblxuRXhhbXBsZTkucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEV4YW1wbGU5KCkge1xcbiAgcmV0dXJuIDxDdXN0b21WaWV3IGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5FeGFtcGxlOS5wYXJhbWV0ZXJzIH07IiwiaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIGRheWpzTG9jYWxpemVyIH0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuaW1wb3J0IERlbW9MaW5rIGZyb20gJy4uLy4uL0RlbW9MaW5rLmNvbXBvbmVudCdcbmltcG9ydCBldmVudHMgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2V2ZW50cydcblxuLy8gTm90ZSB0aGF0IHRoZSBkYXlqc0xvY2FsaXplciBleHRlbmRzIERheS5qcyB3aXRoIHRoZSBmb2xsb3dpbmcgcGx1Z2luczpcbi8vIC0gSXNCZXR3ZWVuXG4vLyAtIElzU2FtZU9yQWZ0ZXJcbi8vIC0gSXNTYW1lT3JCZWZvcmVcbi8vIC0gTG9jYWxlRGF0YVxuLy8gLSBMb2NhbGl6ZWRGb3JtYXRcbi8vIC0gTWluTWF4XG4vLyAtIFVUQ1xuXG4vLyBhZGQgb3B0aW9uYWwgdGltZSB6b25lIHN1cHBvcnRcbmltcG9ydCB0aW1lem9uZSBmcm9tICdkYXlqcy9wbHVnaW4vdGltZXpvbmUnXG5kYXlqcy5leHRlbmQodGltZXpvbmUpXG5cbmNvbnN0IGRqTG9jYWxpemVyID0gZGF5anNMb2NhbGl6ZXIoZGF5anMpXG5cbmNvbnN0IENvbG9yZWREYXRlQ2VsbFdyYXBwZXIgPSAoeyBjaGlsZHJlbiB9KSA9PlxuICBSZWFjdC5jbG9uZUVsZW1lbnQoUmVhY3QuQ2hpbGRyZW4ub25seShjaGlsZHJlbiksIHtcbiAgICBzdHlsZToge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAnbGlnaHRibHVlJyxcbiAgICB9LFxuICB9KVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEYXlqcyh7IC4uLnByb3BzIH0pIHtcbiAgY29uc3QgeyBjb21wb25lbnRzLCBkZWZhdWx0RGF0ZSwgbWF4LCB2aWV3cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgY29tcG9uZW50czoge1xuICAgICAgICB0aW1lU2xvdFdyYXBwZXI6IENvbG9yZWREYXRlQ2VsbFdyYXBwZXIsXG4gICAgICB9LFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxuICAgICAgbWF4OiBkYXlqcygpLmVuZE9mKCdkYXknKS5zdWJ0cmFjdCgxLCAnaG91cnMnKS50b0RhdGUoKSxcbiAgICAgIHZpZXdzOiBPYmplY3Qua2V5cyhWaWV3cykubWFwKChrKSA9PiBWaWV3c1trXSksXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPEZyYWdtZW50PlxuICAgICAgPERlbW9MaW5rIGZpbGVOYW1lPVwiZGF5anNcIiAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIiB7Li4ucHJvcHN9PlxuICAgICAgICA8Q2FsZW5kYXJcbiAgICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgICBldmVudHM9e2V2ZW50c31cbiAgICAgICAgICBsb2NhbGl6ZXI9e2RqTG9jYWxpemVyfVxuICAgICAgICAgIG1heD17bWF4fVxuICAgICAgICAgIHNob3dNdWx0aURheVRpbWVzXG4gICAgICAgICAgc3RlcD17NjB9XG4gICAgICAgICAgdmlld3M9e3ZpZXdzfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9GcmFnbWVudD5cbiAgKVxufVxuIiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJ1xcbmltcG9ydCB7IENhbGVuZGFyLCBkYXlqc0xvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgRGF5anMgZnJvbSAnLi9leGFtcGxlQ29kZS9kYXlqcydcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ0V4YW1wbGVzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBudWxsLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gZGF5anNMb2NhbGl6ZXIoZGF5anMpXFxuXFxuZXhwb3J0IGZ1bmN0aW9uIERheWpzTG9jYWxpemVyKCkge1xcbiAgcmV0dXJuIDxEYXlqcyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkRheWpzTG9jYWxpemVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcydcbmltcG9ydCB7IENhbGVuZGFyLCBkYXlqc0xvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBEYXlqcyBmcm9tICcuL2V4YW1wbGVDb2RlL2RheWpzJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbnVsbCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBsb2NhbGl6ZXIgPSBkYXlqc0xvY2FsaXplcihkYXlqcylcblxuZXhwb3J0IGNvbnN0IERheWpzTG9jYWxpemVyID0gZnVuY3Rpb24gRGF5anNMb2NhbGl6ZXIoKSB7XG4gIHJldHVybiA8RGF5anMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O1xuXG5cbkRheWpzTG9jYWxpemVyLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBEYXlqc0xvY2FsaXplcigpIHtcXG4gIHJldHVybiA8RGF5anMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLkRheWpzTG9jYWxpemVyLnBhcmFtZXRlcnMgfTsiLCJpbXBvcnQgUmVhY3QsIHsgRnJhZ21lbnQsIHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENhbGVuZGFyLCBsdXhvbkxvY2FsaXplciwgVmlld3MgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgeyBEYXRlVGltZSwgU2V0dGluZ3MgfSBmcm9tICdsdXhvbidcbmltcG9ydCBEZW1vTGluayBmcm9tICcuLi8uLi9EZW1vTGluay5jb21wb25lbnQnXG5cbmltcG9ydCBldmVudHMgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBUaW1lem9uZVNlbGVjdCBmcm9tICcuLi9UaW1lem9uZVNlbGVjdCdcblxuY29uc3QgZGVmYXVsdFRaID0gRGF0ZVRpbWUubG9jYWwoKS56b25lTmFtZVxuY29uc3QgZGVmYXVsdERhdGVTdHIgPSAnMjAxNS0wNC0xMydcblxuZnVuY3Rpb24gZ2V0RGF0ZShzdHIsIERhdGVUaW1lT2JqKSB7XG4gIHJldHVybiBEYXRlVGltZU9iai5mcm9tSVNPKHN0cikudG9KU0RhdGUoKVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMdXhvbigpIHtcbiAgY29uc3QgW3RpbWV6b25lLCBzZXRUaW1lem9uZV0gPSB1c2VTdGF0ZShkZWZhdWx0VFopXG5cbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZ2V0Tm93LCBsb2NhbGl6ZXIsIG15RXZlbnRzLCBzY3JvbGxUb1RpbWUgfSA9XG4gICAgdXNlTWVtbygoKSA9PiB7XG4gICAgICBTZXR0aW5ncy5kZWZhdWx0Wm9uZSA9IHRpbWV6b25lXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWZhdWx0RGF0ZTogZ2V0RGF0ZShkZWZhdWx0RGF0ZVN0ciwgRGF0ZVRpbWUpLFxuICAgICAgICBnZXROb3c6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkudG9KU0RhdGUoKSxcbiAgICAgICAgbG9jYWxpemVyOiBsdXhvbkxvY2FsaXplcihEYXRlVGltZSksXG4gICAgICAgIG15RXZlbnRzOiBbLi4uZXZlbnRzXSxcbiAgICAgICAgc2Nyb2xsVG9UaW1lOiBEYXRlVGltZS5sb2NhbCgpLnRvSlNEYXRlKCksXG4gICAgICB9XG4gICAgfSwgW3RpbWV6b25lXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBTZXR0aW5ncy5kZWZhdWx0Wm9uZSA9IGRlZmF1bHRUWiAvLyByZXNldCB0byBicm93c2VyIFRaIG9uIHVubW91bnRcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHJldHVybiAoXG4gICAgPEZyYWdtZW50PlxuICAgICAgPERlbW9MaW5rIGZpbGVOYW1lPVwibHV4b25cIj5cbiAgICAgICAgPFRpbWV6b25lU2VsZWN0XG4gICAgICAgICAgZGVmYXVsdFRaPXtkZWZhdWx0VFp9XG4gICAgICAgICAgc2V0VGltZXpvbmU9e3NldFRpbWV6b25lfVxuICAgICAgICAgIHRpbWV6b25lPXt0aW1lem9uZX1cbiAgICAgICAgICB0aXRsZT17YFRoaXMgY2FsZW5kYXIgdXNlcyB0aGUgJ2x1eG9uTG9jYWxpemVyJ2B9XG4gICAgICAgIC8+XG4gICAgICA8L0RlbW9MaW5rPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPENhbGVuZGFyXG4gICAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxuICAgICAgICAgIGV2ZW50cz17bXlFdmVudHN9XG4gICAgICAgICAgZ2V0Tm93PXtnZXROb3d9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgc2Nyb2xsVG9UaW1lPXtzY3JvbGxUb1RpbWV9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0ZyYWdtZW50PlxuICApXG59XG4iLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gJ2x1eG9uJ1xcbmltcG9ydCB7IENhbGVuZGFyLCBsdXhvbkxvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgTHV4b24gZnJvbSAnLi9leGFtcGxlQ29kZS9sdXhvbidcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ0V4YW1wbGVzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBudWxsLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbHV4b25Mb2NhbGl6ZXIoRGF0ZVRpbWUpXFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEx1eG9uTG9jYWxpemVyKCkge1xcbiAgcmV0dXJuIDxMdXhvbiBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkx1eG9uTG9jYWxpemVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nXG5pbXBvcnQgeyBDYWxlbmRhciwgbHV4b25Mb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgTHV4b24gZnJvbSAnLi9leGFtcGxlQ29kZS9sdXhvbidcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0V4YW1wbGVzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG51bGwsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbHV4b25Mb2NhbGl6ZXIoRGF0ZVRpbWUpXG5cbmV4cG9ydCBjb25zdCBMdXhvbkxvY2FsaXplciA9IGZ1bmN0aW9uIEx1eG9uTG9jYWxpemVyKCkge1xuICByZXR1cm4gPEx1eG9uIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxufTtcblxuXG5MdXhvbkxvY2FsaXplci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gTHV4b25Mb2NhbGl6ZXIoKSB7XFxuICByZXR1cm4gPEx1eG9uIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5MdXhvbkxvY2FsaXplci5wYXJhbWV0ZXJzIH07IiwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSwgdXNlTWVtbywgRnJhZ21lbnQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgRGF0ZUxvY2FsaXplciB9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbmltcG9ydCBEZW1vTGluayBmcm9tICcuLi8uLi9EZW1vTGluay5jb21wb25lbnQnXG5pbXBvcnQgZXZlbnRzIGZyb20gJy4uLy4uL3Jlc291cmNlcy9ldmVudHMnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENyZWF0ZUV2ZW50V2l0aE5vT3ZlcmxhcCh7XG4gIGxvY2FsaXplcixcbiAgZGF5TGF5b3V0QWxnb3JpdGhtID0gJ25vLW92ZXJsYXAnLFxufSkge1xuICBjb25zdCBbbXlFdmVudHMsIHNldEV2ZW50c10gPSB1c2VTdGF0ZShldmVudHMpXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0U2xvdCA9IHVzZUNhbGxiYWNrKFxuICAgICh7IHN0YXJ0LCBlbmQgfSkgPT4ge1xuICAgICAgY29uc3QgdGl0bGUgPSB3aW5kb3cucHJvbXB0KCdOZXcgRXZlbnQgTmFtZScpXG4gICAgICBpZiAodGl0bGUpIHtcbiAgICAgICAgc2V0RXZlbnRzKChwcmV2KSA9PiBbLi4ucHJldiwgeyBzdGFydCwgZW5kLCB0aXRsZSB9XSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZXRFdmVudHNdXG4gIClcblxuICBjb25zdCBoYW5kbGVTZWxlY3RFdmVudCA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4gd2luZG93LmFsZXJ0KGV2ZW50LnRpdGxlKSxcbiAgICBbXVxuICApXG5cbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgc2Nyb2xsVG9UaW1lIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTIpLFxuICAgICAgc2Nyb2xsVG9UaW1lOiBuZXcgRGF0ZSgxOTcwLCAxLCAxLCA2KSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8RnJhZ21lbnQ+XG4gICAgICA8RGVtb0xpbmsgZmlsZU5hbWU9XCJjcmVhdGVFdmVudFdpdGhOb092ZXJsYXBcIj5cbiAgICAgICAgPHN0cm9uZz5cbiAgICAgICAgICBDbGljayBhbiBldmVudCB0byBzZWUgbW9yZSBpbmZvLCBvciBkcmFnIHRoZSBtb3VzZSBvdmVyIHRoZSBjYWxlbmRhclxuICAgICAgICAgIHRvIHNlbGVjdCBhIGRhdGUvdGltZSByYW5nZS5cbiAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICBUaGUgZXZlbnRzIGFyZSBiZWluZyBhcnJhbmdlZCBieSBgbm8tb3ZlcmxhcGAgYWxnb3JpdGhtLlxuICAgICAgICA8L3N0cm9uZz5cbiAgICAgIDwvRGVtb0xpbms+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgICA8Q2FsZW5kYXJcbiAgICAgICAgICBkYXlMYXlvdXRBbGdvcml0aG09e2RheUxheW91dEFsZ29yaXRobX1cbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XG4gICAgICAgICAgZXZlbnRzPXtteUV2ZW50c31cbiAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICBvblNlbGVjdEV2ZW50PXtoYW5kbGVTZWxlY3RFdmVudH1cbiAgICAgICAgICBvblNlbGVjdFNsb3Q9e2hhbmRsZVNlbGVjdFNsb3R9XG4gICAgICAgICAgc2VsZWN0YWJsZVxuICAgICAgICAgIHNjcm9sbFRvVGltZT17c2Nyb2xsVG9UaW1lfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9GcmFnbWVudD5cbiAgKVxufVxuXG5DcmVhdGVFdmVudFdpdGhOb092ZXJsYXAucHJvcFR5cGVzID0ge1xuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGVMb2NhbGl6ZXIpLFxuICBkYXlMYXlvdXRBbGdvcml0aG06IFByb3BUeXBlcy5zdHJpbmcsXG59XG4iLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBDcmVhdGVFdmVudFdpdGhOb092ZXJsYXAgZnJvbSAnLi9leGFtcGxlQ29kZS9jcmVhdGVFdmVudFdpdGhOb092ZXJsYXAnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdFeGFtcGxlcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbnVsbCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEV4YW1wbGUzKCkge1xcbiAgcmV0dXJuIDxDcmVhdGVFdmVudFdpdGhOb092ZXJsYXAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVxcbkV4YW1wbGUzLnN0b3J5TmFtZSA9ICdDcmVhdGUgZXZlbnRzIHdpdGggbm8tb3ZlcmxhcCBhbGdvcml0aG0nXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkV4YW1wbGUzXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBDcmVhdGVFdmVudFdpdGhOb092ZXJsYXAgZnJvbSAnLi9leGFtcGxlQ29kZS9jcmVhdGVFdmVudFdpdGhOb092ZXJsYXAnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdFeGFtcGxlcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBudWxsLFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBjb25zdCBFeGFtcGxlMyA9IGZ1bmN0aW9uIEV4YW1wbGUzKCkge1xuICByZXR1cm4gPENyZWF0ZUV2ZW50V2l0aE5vT3ZlcmxhcCBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07RXhhbXBsZTMuc3RvcnlOYW1lID0gJ0NyZWF0ZSBldmVudHMgd2l0aCBuby1vdmVybGFwIGFsZ29yaXRobSdcblxuXG5cbkV4YW1wbGUzLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBFeGFtcGxlMygpIHtcXG4gIHJldHVybiA8Q3JlYXRlRXZlbnRXaXRoTm9PdmVybGFwIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5FeGFtcGxlMy5wYXJhbWV0ZXJzIH07IiwiaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBDYWxlbmRhciwgRGF0ZUxvY2FsaXplciB9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbmltcG9ydCBEZW1vTGluayBmcm9tICcuLi8uLi9EZW1vTGluay5jb21wb25lbnQnXG5pbXBvcnQgZXZlbnRzIGZyb20gJy4uLy4uL3Jlc291cmNlcy9ldmVudHMnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBvcHVwKHsgbG9jYWxpemVyIH0pIHtcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcbiAgcmV0dXJuIChcbiAgICA8RnJhZ21lbnQ+XG4gICAgICA8RGVtb0xpbmsgZmlsZU5hbWU9XCJwb3B1cFwiPlxuICAgICAgICA8c3Ryb25nPlxuICAgICAgICAgIENsaWNrIHRoZSBcIismIzEyMzt4JiMxMjU7IG1vcmVcIiBsaW5rIG9uIGFueSBjYWxlbmRhciBkYXkgdGhhdCBjYW5ub3RcbiAgICAgICAgICBmaXQgYWxsIHRoZSBkYXlzIGV2ZW50cyB0byBzZWUgYW4gaW5saW5lIHBvcHVwIG9mIGFsbCB0aGUgZXZlbnRzLlxuICAgICAgICA8L3N0cm9uZz5cbiAgICAgIDwvRGVtb0xpbms+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgICA8Q2FsZW5kYXJcbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZXZlbnRzPXtldmVudHN9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgcG9wdXBcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvRnJhZ21lbnQ+XG4gIClcbn1cblBvcHVwLnByb3BUeXBlcyA9IHtcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlTG9jYWxpemVyKSxcbn1cbiIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IFBvcHVwRGVtbyBmcm9tICcuL2V4YW1wbGVDb2RlL3BvcHVwJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG51bGwsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFeGFtcGxlNigpIHtcXG4gIHJldHVybiA8UG9wdXBEZW1vIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cXG5FeGFtcGxlNi5zdG9yeU5hbWUgPSAnU2hvdyBtb3JlIHZpYSBhIHBvcHVwJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJFeGFtcGxlNlwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgUG9wdXBEZW1vIGZyb20gJy4vZXhhbXBsZUNvZGUvcG9wdXAnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdFeGFtcGxlcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBudWxsLFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBjb25zdCBFeGFtcGxlNiA9IGZ1bmN0aW9uIEV4YW1wbGU2KCkge1xuICByZXR1cm4gPFBvcHVwRGVtbyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07RXhhbXBsZTYuc3RvcnlOYW1lID0gJ1Nob3cgbW9yZSB2aWEgYSBwb3B1cCdcblxuXG5cbkV4YW1wbGU2LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBFeGFtcGxlNigpIHtcXG4gIHJldHVybiA8UG9wdXBEZW1vIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5FeGFtcGxlNi5wYXJhbWV0ZXJzIH07IiwiaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIERhdGVMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgRGVtb0xpbmsgZnJvbSAnLi4vLi4vRGVtb0xpbmsuY29tcG9uZW50J1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3JlbmRlcmluZy5tb2R1bGUuc2NzcydcblxuZnVuY3Rpb24gRXZlbnQoeyBldmVudCB9KSB7XG4gIHJldHVybiAoXG4gICAgPHNwYW4+XG4gICAgICA8c3Ryb25nPntldmVudC50aXRsZX08L3N0cm9uZz5cbiAgICAgIHtldmVudC5kZXNjICYmICc6ICAnICsgZXZlbnQuZGVzY31cbiAgICA8L3NwYW4+XG4gIClcbn1cbkV2ZW50LnByb3BUeXBlcyA9IHtcbiAgZXZlbnQ6IFByb3BUeXBlcy5vYmplY3QsXG59XG5cbmZ1bmN0aW9uIEV2ZW50QWdlbmRhKHsgZXZlbnQgfSkge1xuICByZXR1cm4gKFxuICAgIDxzcGFuPlxuICAgICAgPGVtIHN0eWxlPXt7IGNvbG9yOiAnbWFnZW50YScgfX0+e2V2ZW50LnRpdGxlfTwvZW0+XG4gICAgICA8cD57ZXZlbnQuZGVzY308L3A+XG4gICAgPC9zcGFuPlxuICApXG59XG5FdmVudEFnZW5kYS5wcm9wVHlwZXMgPSB7XG4gIGV2ZW50OiBQcm9wVHlwZXMub2JqZWN0LFxufVxuXG5jb25zdCBjdXN0b21EYXlQcm9wR2V0dGVyID0gKGRhdGUpID0+IHtcbiAgaWYgKGRhdGUuZ2V0RGF0ZSgpID09PSA3IHx8IGRhdGUuZ2V0RGF0ZSgpID09PSAxNSlcbiAgICByZXR1cm4ge1xuICAgICAgY2xhc3NOYW1lOiBzdHlsZXMuc3BlY2lhbERheSxcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGJvcmRlcjogJ3NvbGlkIDNweCAnICsgKGRhdGUuZ2V0RGF0ZSgpID09PSA3ID8gJyNmYWEnIDogJyNhZmEnKSxcbiAgICAgIH0sXG4gICAgfVxuICBlbHNlIHJldHVybiB7fVxufVxuXG5jb25zdCBjdXN0b21TbG90UHJvcEdldHRlciA9IChkYXRlKSA9PiB7XG4gIGlmIChkYXRlLmdldERhdGUoKSA9PT0gNyB8fCBkYXRlLmdldERhdGUoKSA9PT0gMTUpXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsYXNzTmFtZTogc3R5bGVzLnNwZWNpYWxEYXksXG4gICAgfVxuICBlbHNlIHJldHVybiB7fVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSZW5kZXJpbmcoeyBsb2NhbGl6ZXIgfSkge1xuICBjb25zdCB7IGNvbXBvbmVudHMsIGRlZmF1bHREYXRlIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIGFnZW5kYToge1xuICAgICAgICAgIGV2ZW50OiBFdmVudEFnZW5kYSxcbiAgICAgICAgfSxcbiAgICAgICAgZXZlbnQ6IEV2ZW50LFxuICAgICAgfSxcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCA3KSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8RnJhZ21lbnQ+XG4gICAgICA8RGVtb0xpbmsgZmlsZU5hbWU9XCJyZW5kZXJpbmdcIiAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPENhbGVuZGFyXG4gICAgICAgICAgY29tcG9uZW50cz17Y29tcG9uZW50c31cbiAgICAgICAgICBkYXlQcm9wR2V0dGVyPXtjdXN0b21EYXlQcm9wR2V0dGVyfVxuICAgICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuQUdFTkRBfVxuICAgICAgICAgIGV2ZW50cz17ZXZlbnRzfVxuICAgICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICAgIHNsb3RQcm9wR2V0dGVyPXtjdXN0b21TbG90UHJvcEdldHRlcn1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvRnJhZ21lbnQ+XG4gIClcbn1cblJlbmRlcmluZy5wcm9wVHlwZXMgPSB7XG4gIGxvY2FsaXplcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZUxvY2FsaXplciksXG59XG4iLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBSZW5kZXJpbmcgZnJvbSAnLi9leGFtcGxlQ29kZS9yZW5kZXJpbmcnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdFeGFtcGxlcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbnVsbCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEV4YW1wbGU4KCkge1xcbiAgcmV0dXJuIDxSZW5kZXJpbmcgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVxcbkV4YW1wbGU4LnN0b3J5TmFtZSA9ICdDdXN0b21pemVkIENvbXBvbmVudCBSZW5kZXJpbmcnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkV4YW1wbGU4XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBSZW5kZXJpbmcgZnJvbSAnLi9leGFtcGxlQ29kZS9yZW5kZXJpbmcnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdFeGFtcGxlcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBudWxsLFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBjb25zdCBFeGFtcGxlOCA9IGZ1bmN0aW9uIEV4YW1wbGU4KCkge1xuICByZXR1cm4gPFJlbmRlcmluZyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07RXhhbXBsZTguc3RvcnlOYW1lID0gJ0N1c3RvbWl6ZWQgQ29tcG9uZW50IFJlbmRlcmluZydcblxuXG5cbkV4YW1wbGU4LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBFeGFtcGxlOCgpIHtcXG4gIHJldHVybiA8UmVuZGVyaW5nIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5FeGFtcGxlOC5wYXJhbWV0ZXJzIH07IiwiaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIERhdGVMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgRGVtb0xpbmsgZnJvbSAnLi4vLi4vRGVtb0xpbmsuY29tcG9uZW50J1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5jb25zdCBldmVudHMgPSBbXG4gIHtcbiAgICBpZDogMCxcbiAgICB0aXRsZTogJ0JvYXJkIG1lZXRpbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgOSwgMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgMTMsIDAsIDApLFxuICAgIHJlc291cmNlSWQ6IDEsXG4gIH0sXG4gIHtcbiAgICBpZDogMSxcbiAgICB0aXRsZTogJ01TIHRyYWluaW5nJyxcbiAgICBhbGxEYXk6IHRydWUsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTgsIDAsIDI5LCAxNCwgMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgMTYsIDMwLCAwKSxcbiAgICByZXNvdXJjZUlkOiAyLFxuICB9LFxuICB7XG4gICAgaWQ6IDIsXG4gICAgdGl0bGU6ICdUZWFtIGxlYWQgbWVldGluZycsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTgsIDAsIDI5LCA4LCAzMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgMTIsIDMwLCAwKSxcbiAgICByZXNvdXJjZUlkOiBbMiwgM10sXG4gIH0sXG4gIHtcbiAgICBpZDogMTEsXG4gICAgdGl0bGU6ICdCaXJ0aGRheSBQYXJ0eScsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTgsIDAsIDMwLCA3LCAwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTgsIDAsIDMwLCAxMCwgMzAsIDApLFxuICAgIHJlc291cmNlSWQ6IDQsXG4gIH0sXG5dXG5cbmNvbnN0IHJlc291cmNlTWFwID0gW1xuICB7IHJlc291cmNlSWQ6IDEsIHJlc291cmNlVGl0bGU6ICdCb2FyZCByb29tJyB9LFxuICB7IHJlc291cmNlSWQ6IDIsIHJlc291cmNlVGl0bGU6ICdUcmFpbmluZyByb29tJyB9LFxuICB7IHJlc291cmNlSWQ6IDMsIHJlc291cmNlVGl0bGU6ICdNZWV0aW5nIHJvb20gMScgfSxcbiAgeyByZXNvdXJjZUlkOiA0LCByZXNvdXJjZVRpdGxlOiAnTWVldGluZyByb29tIDInIH0sXG5dXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJlc291cmNlKHsgbG9jYWxpemVyIH0pIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgdmlld3MgfSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSksXG4gICAgICB2aWV3czogWydkYXknLCAnd29ya193ZWVrJ10sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPEZyYWdtZW50PlxuICAgICAgPERlbW9MaW5rIGZpbGVOYW1lPVwicmVzb3VyY2VcIiAvPlxuICAgICAgPHN0cm9uZz5cbiAgICAgICAgVGhlIGNhbGVuZGFyIGJlbG93IHVzZXMgdGhlIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJyZXNvdXJjZS1pZC1hY2Nlc3NvclwiPnJlc291cmNlSWRBY2Nlc3NvcjwvTGlua1RvPiwgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInJlc291cmNlLXRpdGxlLWFjY2Vzc29yXCI+cmVzb3VyY2VUaXRsZUFjY2Vzc29yPC9MaW5rVG8+IGFuZCA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwicmVzb3VyY2VzXCI+cmVzb3VyY2VzPC9MaW5rVG8+IHByb3BzIHRvIHNob3cgZXZlbnRzIHNjaGVkdWxlZCBmb3IgZGlmZmVyZW50IHJlc291cmNlcy5cbiAgICAgICAgPGJyLz5cbiAgICAgICAgRXZlbnRzIGNhbiBiZSBtYXBwZWQgdG8gYSBzaW5nbGUgcmVzb3VyY2UsIG9yIG11bHRpcGxlIHJlc291cmNlcy5cbiAgICAgIDwvc3Ryb25nPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPENhbGVuZGFyXG4gICAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5EQVl9XG4gICAgICAgICAgZXZlbnRzPXtldmVudHN9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgcmVzb3VyY2VJZEFjY2Vzc29yPVwicmVzb3VyY2VJZFwiXG4gICAgICAgICAgcmVzb3VyY2VzPXtyZXNvdXJjZU1hcH1cbiAgICAgICAgICByZXNvdXJjZVRpdGxlQWNjZXNzb3I9XCJyZXNvdXJjZVRpdGxlXCJcbiAgICAgICAgICBzdGVwPXs2MH1cbiAgICAgICAgICB2aWV3cz17dmlld3N9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0ZyYWdtZW50PlxuICApXG59XG5SZXNvdXJjZS5wcm9wVHlwZXMgPSB7XG4gIGxvY2FsaXplcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZUxvY2FsaXplciksXG59XG4iLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBSZXNvdXJjZSBmcm9tICcuL2V4YW1wbGVDb2RlL3Jlc291cmNlJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG51bGwsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFeGFtcGxlMTEoKSB7XFxuICByZXR1cm4gPFJlc291cmNlIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cXG5FeGFtcGxlMTEuc3RvcnlOYW1lID0gJ1Jlc291cmNlIFNjaGVkdWxpbmcnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkV4YW1wbGUxMVwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgUmVzb3VyY2UgZnJvbSAnLi9leGFtcGxlQ29kZS9yZXNvdXJjZSdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0V4YW1wbGVzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG51bGwsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IEV4YW1wbGUxMSA9IGZ1bmN0aW9uIEV4YW1wbGUxMSgpIHtcbiAgcmV0dXJuIDxSZXNvdXJjZSBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07RXhhbXBsZTExLnN0b3J5TmFtZSA9ICdSZXNvdXJjZSBTY2hlZHVsaW5nJ1xuXG5cblxuRXhhbXBsZTExLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBFeGFtcGxlMTEoKSB7XFxuICByZXR1cm4gPFJlc291cmNlIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5FeGFtcGxlMTEucGFyYW1ldGVycyB9OyIsImltcG9ydCBSZWFjdCwgeyBGcmFnbWVudCwgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIERhdGVMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgRGVtb0xpbmsgZnJvbSAnLi4vLi4vRGVtb0xpbmsuY29tcG9uZW50J1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZXZlbnRzJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTZWxlY3RhYmxlKHsgbG9jYWxpemVyIH0pIHtcbiAgY29uc3QgW215RXZlbnRzLCBzZXRFdmVudHNdID0gdXNlU3RhdGUoZXZlbnRzKVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFNsb3QgPSB1c2VDYWxsYmFjayhcbiAgICAoeyBzdGFydCwgZW5kIH0pID0+IHtcbiAgICAgIGNvbnN0IHRpdGxlID0gd2luZG93LnByb21wdCgnTmV3IEV2ZW50IG5hbWUnKVxuICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgIHNldEV2ZW50cygocHJldikgPT4gWy4uLnByZXYsIHsgc3RhcnQsIGVuZCwgdGl0bGUgfV0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbc2V0RXZlbnRzXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0RXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQpID0+IHdpbmRvdy5hbGVydChldmVudC50aXRsZSksXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIHNjcm9sbFRvVGltZSB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEyKSxcbiAgICAgIHNjcm9sbFRvVGltZTogbmV3IERhdGUoMTk3MCwgMSwgMSwgNiksXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPEZyYWdtZW50PlxuICAgICAgPERlbW9MaW5rIGZpbGVOYW1lPVwic2VsZWN0YWJsZVwiPlxuICAgICAgICA8c3Ryb25nPlxuICAgICAgICAgIENsaWNrIGFuIGV2ZW50IHRvIHNlZSBtb3JlIGluZm8sIG9yIGRyYWcgdGhlIG1vdXNlIG92ZXIgdGhlIGNhbGVuZGFyXG4gICAgICAgICAgdG8gc2VsZWN0IGEgZGF0ZS90aW1lIHJhbmdlLlxuICAgICAgICA8L3N0cm9uZz5cbiAgICAgIDwvRGVtb0xpbms+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgICA8Q2FsZW5kYXJcbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XG4gICAgICAgICAgZXZlbnRzPXtteUV2ZW50c31cbiAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICBvblNlbGVjdEV2ZW50PXtoYW5kbGVTZWxlY3RFdmVudH1cbiAgICAgICAgICBvblNlbGVjdFNsb3Q9e2hhbmRsZVNlbGVjdFNsb3R9XG4gICAgICAgICAgc2VsZWN0YWJsZVxuICAgICAgICAgIHNjcm9sbFRvVGltZT17c2Nyb2xsVG9UaW1lfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9GcmFnbWVudD5cbiAgKVxufVxuXG5TZWxlY3RhYmxlLnByb3BUeXBlcyA9IHtcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlTG9jYWxpemVyKSxcbn1cbiIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IFNlbGVjdGFibGUgZnJvbSAnLi9leGFtcGxlQ29kZS9zZWxlY3RhYmxlJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG51bGwsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFeGFtcGxlMigpIHtcXG4gIHJldHVybiA8U2VsZWN0YWJsZSBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XFxuRXhhbXBsZTIuc3RvcnlOYW1lID0gJ0NyZWF0ZSBFdmVudHMnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkV4YW1wbGUyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBTZWxlY3RhYmxlIGZyb20gJy4vZXhhbXBsZUNvZGUvc2VsZWN0YWJsZSdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0V4YW1wbGVzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG51bGwsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IEV4YW1wbGUyID0gZnVuY3Rpb24gRXhhbXBsZTIoKSB7XG4gIHJldHVybiA8U2VsZWN0YWJsZSBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07RXhhbXBsZTIuc3RvcnlOYW1lID0gJ0NyZWF0ZSBFdmVudHMnXG5cblxuXG5FeGFtcGxlMi5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRXhhbXBsZTIoKSB7XFxuICByZXR1cm4gPFNlbGVjdGFibGUgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLkV4YW1wbGUyLnBhcmFtZXRlcnMgfTsiLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbywgRnJhZ21lbnQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgRGF0ZUxvY2FsaXplciB9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbmltcG9ydCBEZW1vTGluayBmcm9tICcuLi8uLi9EZW1vTGluay5jb21wb25lbnQnXG5pbXBvcnQgZXZlbnRzIGZyb20gJy4uLy4uL3Jlc291cmNlcy9ldmVudHMnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRpbWVzbG90cyh7IGxvY2FsaXplciB9KSB7XG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxMiksIFtdKVxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIDxEZW1vTGluayBmaWxlTmFtZT1cInRpbWVzbG90c1wiIC8+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgICA8Q2FsZW5kYXJcbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XG4gICAgICAgICAgZXZlbnRzPXtldmVudHN9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgc3RlcD17MTV9XG4gICAgICAgICAgdGltZXNsb3RzPXs4fVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9GcmFnbWVudD5cbiAgKVxufVxuVGltZXNsb3RzLnByb3BUeXBlcyA9IHtcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlTG9jYWxpemVyKSxcbn1cbiIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IFRpbWVzbG90cyBmcm9tICcuL2V4YW1wbGVDb2RlL3RpbWVzbG90cydcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ0V4YW1wbGVzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBudWxsLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZnVuY3Rpb24gRXhhbXBsZTcoKSB7XFxuICByZXR1cm4gPFRpbWVzbG90cyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XFxuRXhhbXBsZTcuc3RvcnlOYW1lID0gJ1RpbWVzbG90cydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRXhhbXBsZTdcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IFRpbWVzbG90cyBmcm9tICcuL2V4YW1wbGVDb2RlL3RpbWVzbG90cydcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0V4YW1wbGVzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG51bGwsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IEV4YW1wbGU3ID0gZnVuY3Rpb24gRXhhbXBsZTcoKSB7XG4gIHJldHVybiA8VGltZXNsb3RzIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxufTtFeGFtcGxlNy5zdG9yeU5hbWUgPSAnVGltZXNsb3RzJ1xuXG5cblxuRXhhbXBsZTcucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEV4YW1wbGU3KCkge1xcbiAgcmV0dXJuIDxUaW1lc2xvdHMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLkV4YW1wbGU3LnBhcmFtZXRlcnMgfTsiLCJpbXBvcnQgUmVhY3QsIHsgRnJhZ21lbnQsIHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIsIFZpZXdzIH0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgJ21vbWVudC10aW1lem9uZSdcbmltcG9ydCBEZW1vTGluayBmcm9tICcuLi8uLi9EZW1vTGluay5jb21wb25lbnQnXG5pbXBvcnQgZXZlbnRzIGZyb20gJy4uLy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgVGltZXpvbmVTZWxlY3QgZnJvbSAnLi4vVGltZXpvbmVTZWxlY3QnXG5cbmNvbnN0IGRlZmF1bHRUWiA9IG1vbWVudC50ei5ndWVzcygpXG5jb25zdCBkZWZhdWx0RGF0ZVN0ciA9ICcyMDE1LTQtMTMnXG5cbmZ1bmN0aW9uIGdldERhdGUoc3RyLCBtb21lbnRPYmopIHtcbiAgcmV0dXJuIG1vbWVudE9iaihzdHIsICdZWVlZLU1NLUREJykudG9EYXRlKClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVGltZXpvbmVzKCkge1xuICBjb25zdCBbdGltZXpvbmUsIHNldFRpbWV6b25lXSA9IHVzZVN0YXRlKGRlZmF1bHRUWilcblxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBnZXROb3csIGxvY2FsaXplciwgbXlFdmVudHMsIHNjcm9sbFRvVGltZSB9ID1cbiAgICB1c2VNZW1vKCgpID0+IHtcbiAgICAgIG1vbWVudC50ei5zZXREZWZhdWx0KHRpbWV6b25lKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVmYXVsdERhdGU6IGdldERhdGUoZGVmYXVsdERhdGVTdHIsIG1vbWVudCksXG4gICAgICAgIGdldE5vdzogKCkgPT4gbW9tZW50KCkudG9EYXRlKCksXG4gICAgICAgIGxvY2FsaXplcjogbW9tZW50TG9jYWxpemVyKG1vbWVudCksXG4gICAgICAgIG15RXZlbnRzOiBbLi4uZXZlbnRzXSxcbiAgICAgICAgc2Nyb2xsVG9UaW1lOiBtb21lbnQoKS50b0RhdGUoKSxcbiAgICAgIH1cbiAgICB9LCBbdGltZXpvbmVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIG1vbWVudC50ei5zZXREZWZhdWx0KCkgLy8gcmVzZXQgdG8gYnJvd3NlciBUWiBvbiB1bm1vdW50XG4gICAgfVxuICB9LCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIDxEZW1vTGluayBmaWxlTmFtZT1cInRpbWV6b25lc1wiPlxuICAgICAgICA8VGltZXpvbmVTZWxlY3RcbiAgICAgICAgICBkZWZhdWx0VFo9e2RlZmF1bHRUWn1cbiAgICAgICAgICBzZXRUaW1lem9uZT17c2V0VGltZXpvbmV9XG4gICAgICAgICAgdGltZXpvbmU9e3RpbWV6b25lfVxuICAgICAgICAvPlxuICAgICAgPC9EZW1vTGluaz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICAgIDxDYWxlbmRhclxuICAgICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cbiAgICAgICAgICBldmVudHM9e215RXZlbnRzfVxuICAgICAgICAgIGdldE5vdz17Z2V0Tm93fVxuICAgICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICAgIHNjcm9sbFRvVGltZT17c2Nyb2xsVG9UaW1lfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9GcmFnbWVudD5cbiAgKVxufVxuIiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IFRpbWV6b25lQ2FsZW5kYXIgZnJvbSAnLi9leGFtcGxlQ29kZS90aW1lem9uZXMnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdFeGFtcGxlcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbnVsbCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFeGFtcGxlNCgpIHtcXG4gIHJldHVybiA8VGltZXpvbmVDYWxlbmRhciAvPlxcbn1cXG5FeGFtcGxlNC5zdG9yeU5hbWUgPSAnVGltZXpvbmVzJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJFeGFtcGxlNFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxNX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjE3fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTV9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MTd9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBUaW1lem9uZUNhbGVuZGFyIGZyb20gJy4vZXhhbXBsZUNvZGUvdGltZXpvbmVzJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbnVsbCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRXhhbXBsZTQgPSBmdW5jdGlvbiBFeGFtcGxlNCgpIHtcbiAgcmV0dXJuIDxUaW1lem9uZUNhbGVuZGFyIC8+XG59O0V4YW1wbGU0LnN0b3J5TmFtZSA9ICdUaW1lem9uZXMnXG5cblxuXG5FeGFtcGxlNC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRXhhbXBsZTQoKSB7XFxuICByZXR1cm4gPFRpbWV6b25lQ2FsZW5kYXIgLz5cXG59XCIgfSwgLi4uRXhhbXBsZTQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJhbGxkYXlhY2Nlc3NvclwiXG4gICAgfX0+e2BhbGxEYXlBY2Nlc3NvcmB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nIHwgZnVuY3Rpb24gKGV2ZW50OiBPYmplY3QpID0+IGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogJ2FsbERheSdgfTwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERldGVybWluZXMgd2hldGhlciB0aGUgZXZlbnQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYW4gXCJhbGwgZGF5XCIgZXZlbnQgYW5kIGlnbm9yZSB0aW1lLiBNdXN0IHJlc29sdmUgdG8gYSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2Bib29sZWFuYH08L2lubGluZUNvZGU+e2AgdmFsdWUuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLWFsbC1kYXktYWNjZXNzb3JcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCB7IGFjY2Vzc29yU3RvcnlBcmdzIH0gZnJvbSAnLi9zdG9yeURlZmF1bHRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9hbGxEYXlBY2Nlc3Nvci5tZHgnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZTogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IEFsbERheUFjY2Vzc29yID0gVGVtcGxhdGUuYmluZCh7fSlcXG5BbGxEYXlBY2Nlc3Nvci5zdG9yeU5hbWUgPSAnYWxsRGF5QWNjZXNzb3InXFxuQWxsRGF5QWNjZXNzb3IuYXJncyA9IGFjY2Vzc29yU3RvcnlBcmdzXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkFsbERheUFjY2Vzc29yXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyMX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI1fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjIxfSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI1fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgeyBhY2Nlc3NvclN0b3J5QXJncyB9IGZyb20gJy4vc3RvcnlEZWZhdWx0cydcbmltcG9ydCBtZHggZnJvbSAnLi9hbGxEYXlBY2Nlc3Nvci5tZHgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IEFsbERheUFjY2Vzc29yID0gVGVtcGxhdGUuYmluZCh7fSk7QWxsRGF5QWNjZXNzb3Iuc3RvcnlOYW1lID0gJ2FsbERheUFjY2Vzc29yJ1xuQWxsRGF5QWNjZXNzb3IuYXJncyA9IGFjY2Vzc29yU3RvcnlBcmdzXG5cblxuXG5BbGxEYXlBY2Nlc3Nvci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uQWxsRGF5QWNjZXNzb3IucGFyYW1ldGVycyB9OyIsImV4cG9ydCBkZWZhdWx0IFtcbiAge1xuICAgIGlkOiAwLFxuICAgIHRpdGxlOiAnQWxsIERheSBFdmVudCB2ZXJ5IGxvbmcgdGl0bGUnLFxuICAgIGFsbERheTogdHJ1ZSxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcbiAgfSxcbiAge1xuICAgIGlkOiAxLFxuICAgIHRpdGxlOiAnIzIgQWxsIERheSBFdmVudCB2ZXJ5IGxvbmcgdGl0bGUnLFxuICAgIGFsbERheTogdHJ1ZSxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAyKSxcbiAgfSxcbiAge1xuICAgIGlkOiAyLFxuICAgIHRpdGxlOiAnIzMgQWxsIERheSBFdmVudCB2ZXJ5IGxvbmcgdGl0bGUnLFxuICAgIGFsbERheTogdHJ1ZSxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcbiAgfSxcbiAge1xuICAgIGlkOiAzLFxuICAgIHRpdGxlOiAnIzQgQWxsIERheSBFdmVudCcsXG4gICAgYWxsRGF5OiB0cnVlLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxuICB9LFxuICB7XG4gICAgaWQ6IDQsXG4gICAgdGl0bGU6ICcjNSBBbGwgRGF5IEV2ZW50JyxcbiAgICBhbGxEYXk6IHRydWUsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMSksXG4gIH0sXG4gIHtcbiAgICBpZDogNSxcbiAgICB0aXRsZTogJyM2IEFsbCBEYXkgRXZlbnQnLFxuICAgIGFsbERheTogdHJ1ZSxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgNyksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCA3KSxcbiAgfSxcbl1cbiIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImFsbGRheW1heHJvd3NcIlxuICAgIH19PntgYWxsRGF5TWF4Um93c2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbnVtYmVyYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BJbmZpbml0eWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERldGVybWluZXMgYSBtYXhpbXVtIGFtb3VudCBvZiByb3dzIG9mIGV2ZW50cyB0byBkaXNwbGF5IGluIHRoZSBhbGwgZGF5IHNlY3Rpb24gZm9yIFdlZWsgYW5kIERheSB2aWV3cywgd2lsbCBkaXNwbGF5IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHNob3dNb3JlYH08L2lubGluZUNvZGU+e2AgYnV0dG9uIGlmIGV2ZW50cyBleGNlZGUgdGhpcyBudW1iZXIuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLWFsbC1kYXktbWF4LXJvd3NcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBhbGxEYXlFdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2FsbERheUV2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vYWxsRGF5TWF4Um93cy5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZTogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IEFsbERheU1heFJvd3MgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkFsbERheU1heFJvd3Muc3RvcnlOYW1lID0gJ2FsbERheU1heFJvd3MnXFxuQWxsRGF5TWF4Um93cy5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXFxuICBldmVudHM6IGFsbERheUV2ZW50cyxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG4gIGFsbERheU1heFJvd3M6IDIsXFxuICBwb3B1cDogdHJ1ZSxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkFsbERheU1heFJvd3NcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjI0fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6Mjh9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjR9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6Mjh9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGFsbERheUV2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvYWxsRGF5RXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2FsbERheU1heFJvd3MubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgYXJnVHlwZXM6IHtcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBkZWZhdWx0RGF0ZTogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgQWxsRGF5TWF4Um93cyA9IFRlbXBsYXRlLmJpbmQoe30pO0FsbERheU1heFJvd3Muc3RvcnlOYW1lID0gJ2FsbERheU1heFJvd3MnXG5BbGxEYXlNYXhSb3dzLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXG4gIGV2ZW50czogYWxsRGF5RXZlbnRzLFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG4gIGFsbERheU1heFJvd3M6IDIsXG4gIHBvcHVwOiB0cnVlLFxufVxuXG5cblxuQWxsRGF5TWF4Um93cy5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uQWxsRGF5TWF4Um93cy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiYmFja2dyb3VuZGV2ZW50c1wiXG4gICAgfX0+e2BiYWNrZ3JvdW5kRXZlbnRzYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BhcnJheU9mKEJhY2tncm91bmRFdmVudClgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YFtdYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQW4gYXJyYXkgb2YgYmFja2dyb3VuZCBldmVudCBvYmplY3RzIHRvIGRpc3BsYXkgb24gdGhlIGNhbGVuZGFyLiBCYWNrZ3JvdW5kXG5FdmVudHMgYmVoYXZlIHNpbWlsYXJseSB0byBFdmVudHMgYnV0IGFyZSBub3QgZmFjdG9yZWQgaW50byBFdmVudCBvdmVybGFwIGxvZ2ljLFxuYWxsb3dpbmcgdGhlbSB0byBzaXQgYmVoaW5kIGFueSBFdmVudHMgdGhhdCBtYXkgb2NjdXIgZHVyaW5nIHRoZSBzYW1lIHBlcmlvZC5cbkJhY2tncm91bmQgRXZlbnRzIG9iamVjdHMgY2FuIGJlIGFueSBzaGFwZSwgYXMgbG9uZyBhcyB0aGUgQ2FsZW5kYXIga25vd3MgaG93IHRvXG5yZXRyaWV2ZSB0aGUgZm9sbG93aW5nIGRldGFpbHMgb2YgdGhlIGV2ZW50OmB9PC9wPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHN0YXJ0IHRpbWVgfTwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BlbmQgdGltZWB9PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRWFjaCBvZiB0aGVzZSBwcm9wZXJ0aWVzIGNhbiBiZSBjdXN0b21pemVkIG9yIGdlbmVyYXRlZCBkeW5hbWljYWxseSBieVxuc2V0dGluZyB0aGUgdmFyaW91cyBcImFjY2Vzc29yXCIgcHJvcHMuIFdpdGhvdXQgYW55IGNvbmZpZ3VyYXRpb24gdGhlIGRlZmF1bHRcbmV2ZW50IHNob3VsZCBsb29rIGxpa2U6YH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YEJhY2tncm91bmRFdmVudCB7XG4gIHN0YXJ0OiBEYXRlLFxuICBlbmQ6IERhdGUsXG59XG5gfTwvY29kZT48L3ByZT5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tYmFjay1ncm91bmQtZXZlbnRzXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgeyBiYWNrZ3JvdW5kRXZlbnRzLCBldmVudHMgfSBmcm9tICcuLi9oZWxwZXJzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9iYWNrZ3JvdW5kRXZlbnRzLm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHRWaWV3OiB7XFxuICAgICAgY29udHJvbDoge1xcbiAgICAgICAgdHlwZTogbnVsbCxcXG4gICAgICB9LFxcbiAgICB9LFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IEJhY2tHcm91bmRFdmVudHMgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkJhY2tHcm91bmRFdmVudHMuc3RvcnlOYW1lID0gJ2JhY2tncm91bmRFdmVudHMnXFxuQmFja0dyb3VuZEV2ZW50cy5hcmdzID0ge1xcbiAgYmFja2dyb3VuZEV2ZW50cyxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgZXZlbnRzLFxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxcbn1cXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiQmFja0dyb3VuZEV2ZW50c1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6Mjh9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozMn0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozMn19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgeyBiYWNrZ3JvdW5kRXZlbnRzLCBldmVudHMgfSBmcm9tICcuLi9oZWxwZXJzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2JhY2tncm91bmRFdmVudHMubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgYXJnVHlwZXM6IHtcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBkZWZhdWx0Vmlldzoge1xuICAgICAgY29udHJvbDoge1xuICAgICAgICB0eXBlOiBudWxsLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgQmFja0dyb3VuZEV2ZW50cyA9IFRlbXBsYXRlLmJpbmQoe30pO0JhY2tHcm91bmRFdmVudHMuc3RvcnlOYW1lID0gJ2JhY2tncm91bmRFdmVudHMnXG5CYWNrR3JvdW5kRXZlbnRzLmFyZ3MgPSB7XG4gIGJhY2tncm91bmRFdmVudHMsXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICBldmVudHMsXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcbn1cblxuXG5cbkJhY2tHcm91bmRFdmVudHMucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVwiIH0sIC4uLkJhY2tHcm91bmRFdmVudHMucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImNvbXBvbmVudHNcIlxuICAgIH19PntgY29tcG9uZW50c2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgb2JqZWN0YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ3VzdG9taXplIGhvdyBkaWZmZXJlbnQgc2VjdGlvbnMgb2YgdGhlIGNhbGVuZGFyIHJlbmRlciBieSBwcm92aWRpbmcgY3VzdG9tIENvbXBvbmVudHMuIEluIHBhcnRpY3VsYXIgdGhlIEV2ZW50IGNvbXBvbmVudCBjYW4gYmUgc3BlY2lmaWVkIGZvciB0aGUgZW50aXJlIGNhbGVuZGFyLCBvciB5b3UgY2FuIHByb3ZpZGUgYW4gaW5kaXZpZHVhbCBjb21wb25lbnQgZm9yIGVhY2ggdmlldyB0eXBlLmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanN4XCJcbiAgICAgIH19PntgY29uc3QgY29tcG9uZW50cyA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgZXZlbnQ6IE15RXZlbnQsIC8vIHVzZWQgYnkgZWFjaCB2aWV3IChNb250aCwgRGF5LCBXZWVrKVxuICBldmVudFdyYXBwZXI6IE15RXZlbnRXcmFwcGVyLFxuICBldmVudENvbnRhaW5lcldyYXBwZXI6IE15RXZlbnRDb250YWluZXJXcmFwcGVyLFxuICBkYXRlQ2VsbFdyYXBwZXI6IE15RGF0ZUNlbGxXcmFwcGVyLFxuICBkYXlDb2x1bW5XcmFwcGVyOiBNeURheUNvbHVtbldyYXBwZXIsXG4gIHRpbWVTbG90V3JhcHBlcjogTXlUaW1lU2xvdFdyYXBwZXIsXG4gIHRpbWVHdXR0ZXJIZWFkZXI6IE15VGltZUd1dHRlcldyYXBwZXIsXG4gIHJlc291cmNlSGVhZGVyOiBNeVJlc291cmNlSGVhZGVyLFxuICB0b29sYmFyOiBNeVRvb2xiYXIsXG4gIGFnZW5kYToge1xuICAgIGV2ZW50OiBNeUFnZW5kYUV2ZW50LCAvLyB3aXRoIHRoZSBhZ2VuZGEgdmlldyB1c2UgYSBkaWZmZXJlbnQgY29tcG9uZW50IHRvIHJlbmRlciBldmVudHNcbiAgICB0aW1lOiBNeUFnZW5kYVRpbWUsXG4gICAgZGF0ZTogTXlBZ2VuZGFEYXRlLFxuICB9LFxuICBkYXk6IHtcbiAgICBoZWFkZXI6IE15RGF5SGVhZGVyLFxuICAgIGV2ZW50OiBNeURheUV2ZW50LFxuICB9LFxuICB3ZWVrOiB7XG4gICAgaGVhZGVyOiBNeVdlZWtIZWFkZXIsXG4gICAgZXZlbnQ6IE15V2Vla0V2ZW50LFxuICB9LFxuICBtb250aDoge1xuICAgIGhlYWRlcjogTXlNb250aEhlYWRlcixcbiAgICBkYXRlSGVhZGVyOiBNeU1vbnRoRGF0ZUhlYWRlcixcbiAgICBldmVudDogTXlNb250aEV2ZW50LFxuICB9XG59KSwgW10pXG48Q2FsZW5kYXIgY29tcG9uZW50cz17Y29tcG9uZW50c30gLz5cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tY29tcG9uZW50c1wiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCdcbmltcG9ydCB7IE5hdmlnYXRlIGFzIG5hdmlnYXRlIH0gZnJvbSAnLi4vLi4vLi4vc3JjJ1xuXG5mdW5jdGlvbiBWaWV3TmFtZXNHcm91cCh7IHZpZXdzOiB2aWV3TmFtZXMsIHZpZXcsIG1lc3NhZ2VzLCBvblZpZXcgfSkge1xuICByZXR1cm4gdmlld05hbWVzLm1hcCgobmFtZSkgPT4gKFxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAga2V5PXtuYW1lfVxuICAgICAgY2xhc3NOYW1lPXtjbHN4KHsgJ3JiYy1hY3RpdmUnOiB2aWV3ID09PSBuYW1lIH0pfVxuICAgICAgb25DbGljaz17KCkgPT4gb25WaWV3KG5hbWUpfVxuICAgID5cbiAgICAgIHttZXNzYWdlc1tuYW1lXX1cbiAgICA8L2J1dHRvbj5cbiAgKSlcbn1cblZpZXdOYW1lc0dyb3VwLnByb3BUeXBlcyA9IHtcbiAgbWVzc2FnZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9uVmlldzogUHJvcFR5cGVzLmZ1bmMsXG4gIHZpZXc6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHZpZXdzOiBQcm9wVHlwZXMuYXJyYXksXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEN1c3RvbVRvb2xiYXIoe1xuICAvLyBkYXRlLCAvLyBhdmFpbGFibGUsIGJ1dCBub3QgdXNlZCBoZXJlXG4gIGxhYmVsLFxuICBsb2NhbGl6ZXI6IHsgbWVzc2FnZXMgfSxcbiAgb25OYXZpZ2F0ZSxcbiAgb25WaWV3LFxuICB2aWV3LFxuICB2aWV3cyxcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJiYy10b29sYmFyXCI+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJyYmMtYnRuLWdyb3VwXCI+XG4gICAgICAgIDxWaWV3TmFtZXNHcm91cFxuICAgICAgICAgIHZpZXc9e3ZpZXd9XG4gICAgICAgICAgdmlld3M9e3ZpZXdzfVxuICAgICAgICAgIG1lc3NhZ2VzPXttZXNzYWdlc31cbiAgICAgICAgICBvblZpZXc9e29uVmlld31cbiAgICAgICAgLz5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicmJjLXRvb2xiYXItbGFiZWxcIj57bGFiZWx9PC9zcGFuPlxuXG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2Nsc3goJ3JiYy1idG4tZ3JvdXAnLCAnZXhhbXBsZXMtLWN1c3RvbS10b29sYmFyJyl9PlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4gb25OYXZpZ2F0ZShuYXZpZ2F0ZS5QUkVWSU9VUyl9XG4gICAgICAgICAgYXJpYS1sYWJlbD17bWVzc2FnZXMucHJldmlvdXN9XG4gICAgICAgID5cbiAgICAgICAgICAmIzYwO1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uTmF2aWdhdGUobmF2aWdhdGUuVE9EQVkpfVxuICAgICAgICAgIGFyaWEtbGFiZWw9e21lc3NhZ2VzLnRvZGF5fVxuICAgICAgICA+XG4gICAgICAgICAgJiM4MjI2O1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uTmF2aWdhdGUobmF2aWdhdGUuTkVYVCl9XG4gICAgICAgICAgYXJpYS1sYWJlbD17bWVzc2FnZXMubmV4dH1cbiAgICAgICAgPlxuICAgICAgICAgICYjNjI7XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICApXG59XG5DdXN0b21Ub29sYmFyLnByb3BUeXBlcyA9IHtcbiAgZGF0ZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG4gIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIG1lc3NhZ2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICBvbk5hdmlnYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25WaWV3OiBQcm9wVHlwZXMuZnVuYyxcbiAgdmlldzogUHJvcFR5cGVzLnN0cmluZyxcbiAgdmlld3M6IFByb3BUeXBlcy5hcnJheSxcbn1cbiIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2NvbXBvbmVudHMubWR4J1xcbmltcG9ydCBDdXN0b21Ub29sYmFyIGZyb20gJy4vY3VzdG9tQ29tcG9uZW50cy9DdXN0b21Ub29sYmFyLmNvbXBvbmVudCdcXG5pbXBvcnQgJy4uL3Jlc291cmNlcy9jdXN0b21Ub29sYmFyLnNjc3MnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIENvbXBvbmVudHMoKSB7XFxuICBjb25zdCB7IGNvbXBvbmVudHMsIGRlZmF1bHREYXRlIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGNvbXBvbmVudHM6IHtcXG4gICAgICAgIHRvb2xiYXI6IEN1c3RvbVRvb2xiYXIsXFxuICAgICAgfSxcXG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgY29tcG9uZW50cz17Y29tcG9uZW50c31cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuQ29tcG9uZW50cy5zdG9yeU5hbWUgPSAnY29tcG9uZW50cydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiQ29tcG9uZW50c1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoyMX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQyfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MjF9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDJ9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9jb21wb25lbnRzLm1keCdcbmltcG9ydCBDdXN0b21Ub29sYmFyIGZyb20gJy4vY3VzdG9tQ29tcG9uZW50cy9DdXN0b21Ub29sYmFyLmNvbXBvbmVudCdcbmltcG9ydCAnLi4vcmVzb3VyY2VzL2N1c3RvbVRvb2xiYXIuc2NzcydcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IENvbXBvbmVudHMgPSBmdW5jdGlvbiBDb21wb25lbnRzKCkge1xuICBjb25zdCB7IGNvbXBvbmVudHMsIGRlZmF1bHREYXRlIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIHRvb2xiYXI6IEN1c3RvbVRvb2xiYXIsXG4gICAgICB9LFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0NvbXBvbmVudHMuc3RvcnlOYW1lID0gJ2NvbXBvbmVudHMnXG5cblxuXG5Db21wb25lbnRzLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBDb21wb25lbnRzKCkge1xcbiAgY29uc3QgeyBjb21wb25lbnRzLCBkZWZhdWx0RGF0ZSB9ID0gdXNlTWVtbyhcXG4gICAgKCkgPT4gKHtcXG4gICAgICBjb21wb25lbnRzOiB7XFxuICAgICAgICB0b29sYmFyOiBDdXN0b21Ub29sYmFyLFxcbiAgICAgIH0sXFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLkNvbXBvbmVudHMucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImN1bHR1cmVcIlxuICAgIH19PntgY3VsdHVyZWB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2Bub25lIChicm93c2VyIGRlZmF1bHQpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgU3BlY2lmeSBhIHNwZWNpZmljIGN1bHR1cmUgY29kZSBmb3IgdGhlIENhbGVuZGFyLiBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgY3VsdHVyZWB9PC9pbmxpbmVDb2RlPntgIGlzIHVzZWQgYnkgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0c1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YGZvcm1hdHNgfTwvTGlua1RvPntgIHdpdGggeW91ciBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJsb2NhbGl6ZXJcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2Bsb2NhbGl6ZXJgfTwvTGlua1RvPntgIHRvICdmb3JtYXQnIGRhdGUvdGltZSBpbmZvcm1hdGlvbiBvbiB0aGUgQ2FsZW5kYXIuIFRvIGxvY2FsaXplIG1lc3NhZ2luZywgdXNlIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJtZXNzYWdlc1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YG1lc3NhZ2VzYH08L0xpbmtUbz57YCBwcm9wLmB9PC9wPlxuICAgIDxwPntgU2VlIHRoZSBgfTxMaW5rVG8ga2luZD1cImV4YW1wbGVzXCIgc3Rvcnk9XCJleGFtcGxlLTVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BMb2NhbGl6YXRpb24gRXhhbXBsZWB9PC9MaW5rVG8+e2AgZm9yIGFub3RoZXIgZXhhbXBsZSBvZiBjb21iaW5pbmcgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgcnRsYH08L2lubGluZUNvZGU+e2AsIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGxvY2FsaXplcmB9PC9pbmxpbmVDb2RlPntgLCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BjdWx0dXJlYH08L2lubGluZUNvZGU+e2AgYW5kIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG1lc3NhZ2VzYH08L2lubGluZUNvZGU+e2AuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgTm90ZTogaXQncyBnZW5lcmFsbHkgYmV0dGVyIHRvIGhhbmRsZSB0aGlzIGdsb2JhbGx5IHZpYSB5b3VyIGkxOG4gbGlicmFyeS5gfTwvc3Ryb25nPjwvcD5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tY3VsdHVyZVwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vY3VsdHVyZS5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHREYXRlOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBjdWx0dXJlOiB7XFxuICAgICAgb3B0aW9uczogWydlcycsICdmcicsICdlbi11cycsICdlbi1nYiddLFxcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgQ3VsdHVyZSA9IFRlbXBsYXRlLmJpbmQoe30pXFxuQ3VsdHVyZS5zdG9yeU5hbWUgPSAnY3VsdHVyZSdcXG5DdWx0dXJlLmFyZ3MgPSB7XFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxcbiAgY3VsdHVyZTogJ2VzJyxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkN1bHR1cmVcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MzR9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzB9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MzR9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9jdWx0dXJlLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBjdWx0dXJlOiB7XG4gICAgICBvcHRpb25zOiBbJ2VzJywgJ2ZyJywgJ2VuLXVzJywgJ2VuLWdiJ10sXG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgQ3VsdHVyZSA9IFRlbXBsYXRlLmJpbmQoe30pO0N1bHR1cmUuc3RvcnlOYW1lID0gJ2N1bHR1cmUnXG5DdWx0dXJlLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxuICBjdWx0dXJlOiAnZXMnLFxufVxuXG5cblxuQ3VsdHVyZS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uQ3VsdHVyZS5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZGF0ZVwiXG4gICAgfX0+e2BkYXRlYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BpbnN0YW5jZU9mKERhdGUpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BuZXcgRGF0ZSgpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGNvbnRyb2xsZWQgYnk6IGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLW5hdmlnYXRlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgb25OYXZpZ2F0ZWB9PC9MaW5rVG8+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIGN1cnJlbnQgZGF0ZSB2YWx1ZSBvZiB0aGUgY2FsZW5kYXIuIERldGVybWluZXMgdGhlIHZpc2libGUgdmlldyByYW5nZS5cbklmIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGRhdGVgfTwvaW5saW5lQ29kZT57YCBpcyBvbWl0dGVkIHRoZW4gdGhlIHJlc3VsdCBvZiBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJnZXQtbm93XCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZ2V0Tm93YH08L0xpbmtUbz57YCBpcyB1c2VkOyBvdGhlcndpc2UgdGhlXG5jdXJyZW50IGRhdGUgaXMgdXNlZC5gfTwvcD5cbiAgICA8cD57YFRoaXMgaXMgYSBjb250cm9sbGFibGUgcHJvcCwgd2hlbiB1c2luZyBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1uYXZpZ2F0ZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uTmF2aWdhdGVgfTwvTGlua1RvPjwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWNhbC1kYXRlXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2RhdGUubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBDYWxEYXRlKCkge1xcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMSkpXFxuXFxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGF0ZT17ZGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbkNhbERhdGUuc3RvcnlOYW1lID0gJ2RhdGUnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkNhbERhdGVcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozNH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM0fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9kYXRlLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IENhbERhdGUgPSBmdW5jdGlvbiBDYWxEYXRlKCkge1xuICBjb25zdCBbZGF0ZSwgc2V0RGF0ZV0gPSB1c2VTdGF0ZShuZXcgRGF0ZSgyMDE1LCAzLCAxKSlcblxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGF0ZT17ZGF0ZX1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0NhbERhdGUuc3RvcnlOYW1lID0gJ2RhdGUnXG5cblxuXG5DYWxEYXRlLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBDYWxEYXRlKCkge1xcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMSkpXFxuXFxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGF0ZT17ZGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLkNhbERhdGUucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRheWxheW91dGFsZ29yaXRobVwiXG4gICAgfX0+e2BkYXlMYXlvdXRBbGdvcml0aG1gfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0cmluZyB8IEZ1bmN0aW9uKGV2ZW50cywgbWluaW11bVN0YXJ0RGlmZmVyZW5jZSwgc2xvdE1ldHJpY3MsIGFjY2Vzc29ycylgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG92ZXJsYXBgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBIGRheSBldmVudCBsYXlvdXQoYXJyYW5nZW1lbnQpIGFsZ29yaXRobS5gfTwvcD5cbiAgICA8cD48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb3ZlcmxhcGB9PC9pbmxpbmVDb2RlPntgIGFsbG93cyBldmVudHMgdG8gYmUgb3ZlcmxhcHBlZC5gfTwvcD5cbiAgICA8cD48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbm8tb3ZlcmxhcGB9PC9pbmxpbmVDb2RlPntgIHJlc2l6ZXMgZXZlbnRzIHRvIGF2b2lkIG92ZXJsYXAuYH08L3A+XG4gICAgPHA+e2BvciBjdXN0b20gYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgRnVuY3Rpb24oZXZlbnRzLCBtaW5pbXVtU3RhcnREaWZmZXJlbmNlLCBzbG90TWV0cmljcywgYWNjZXNzb3JzKWB9PC9pbmxpbmVDb2RlPjwvcD5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tZGF5LWxheW91dC1hbGdvcml0aG1cIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2RheUxheW91dEFsZ29yaXRobS5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHREYXRlOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHRWaWV3OiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkYXlMYXlvdXRBbGdvcml0aG06IHtcXG4gICAgICBvcHRpb25zOiBbJ292ZXJsYXAnLCAnbm8tb3ZlcmxhcCddLFxcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgRGF5TGF5b3V0QWxnb3JpdGhtID0gVGVtcGxhdGUuYmluZCh7fSlcXG5EYXlMYXlvdXRBbGdvcml0aG0uc3RvcnlOYW1lID0gJ2RheUxheW91dEFsZ29yaXRobSdcXG5EYXlMYXlvdXRBbGdvcml0aG0uYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG4gIGRheUxheW91dEFsZ29yaXRobTogJ25vLW92ZXJsYXAnLFxcbn1cXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRGF5TGF5b3V0QWxnb3JpdGhtXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM1fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjMxfSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM1fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZGF5TGF5b3V0QWxnb3JpdGhtLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBkZWZhdWx0VmlldzogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRheUxheW91dEFsZ29yaXRobToge1xuICAgICAgb3B0aW9uczogWydvdmVybGFwJywgJ25vLW92ZXJsYXAnXSxcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cbiAgPC9kaXY+XG4pXG5cbmV4cG9ydCBjb25zdCBEYXlMYXlvdXRBbGdvcml0aG0gPSBUZW1wbGF0ZS5iaW5kKHt9KTtEYXlMYXlvdXRBbGdvcml0aG0uc3RvcnlOYW1lID0gJ2RheUxheW91dEFsZ29yaXRobSdcbkRheUxheW91dEFsZ29yaXRobS5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG4gIGRheUxheW91dEFsZ29yaXRobTogJ25vLW92ZXJsYXAnLFxufVxuXG5cblxuRGF5TGF5b3V0QWxnb3JpdGhtLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5EYXlMYXlvdXRBbGdvcml0aG0ucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRheXByb3BnZXR0ZXJcIlxuICAgIH19PntgZGF5UHJvcEdldHRlcmB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIHJlc291cmNlSWQ/OiBBbnkpID0+IHtjbGFzc05hbWU/OiBzdHJpbmcsIHN0eWxlPzogT2JqZWN0fWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YE9wdGlvbmFsbHkgcHJvdmlkZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBvYmplY3Qgb2YgY2xhc3NOYW1lIG9yIHN0eWxlIHByb3BzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHRoZSBkYXkgYmFja2dyb3VuZC5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BDYXV0aW9uIWB9PC9zdHJvbmc+e2AgU3R5bGVzIHRoYXQgY2hhbmdlIGxheW91dCBvciBwb3NpdGlvbiBtYXkgYnJlYWsgdGhlIGNhbGVuZGFyIGluIHVuZXhwZWN0ZWQgd2F5cy5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWRheS1wcm9wLWdldHRlclwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9kYXlQcm9wR2V0dGVyLm1keCdcXG5pbXBvcnQgJy4uL3Jlc291cmNlcy9wcm9wR2V0dGVyLnNjc3MnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIERheVByb3BHZXR0ZXIoKSB7XFxuICBjb25zdCBkYXlQcm9wR2V0dGVyID0gdXNlQ2FsbGJhY2soXFxuICAgIChkYXRlKSA9PiAoe1xcbiAgICAgIC4uLihtb21lbnQoZGF0ZSkuZGF5KCkgPT09IDIgJiYge1xcbiAgICAgICAgY2xhc3NOYW1lOiAndHVlc2RheScsXFxuICAgICAgfSksXFxuICAgICAgLi4uKG1vbWVudChkYXRlKS5kYXkoKSA9PT0gNCAmJiB7XFxuICAgICAgICBzdHlsZToge1xcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdkYXJrZ3JlZW4nLFxcbiAgICAgICAgICBjb2xvcjogJ3doaXRlJyxcXG4gICAgICAgIH0sXFxuICAgICAgfSksXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxcbiAgICAgICAgZGF5UHJvcEdldHRlcj17ZGF5UHJvcEdldHRlcn1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuRGF5UHJvcEdldHRlci5zdG9yeU5hbWUgPSAnZGF5UHJvcEdldHRlcidcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRGF5UHJvcEdldHRlclwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoyMH0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ5fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MjB9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDl9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2RheVByb3BHZXR0ZXIubWR4J1xuaW1wb3J0ICcuLi9yZXNvdXJjZXMvcHJvcEdldHRlci5zY3NzJ1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRGF5UHJvcEdldHRlciA9IGZ1bmN0aW9uIERheVByb3BHZXR0ZXIoKSB7XG4gIGNvbnN0IGRheVByb3BHZXR0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZGF0ZSkgPT4gKHtcbiAgICAgIC4uLihtb21lbnQoZGF0ZSkuZGF5KCkgPT09IDIgJiYge1xuICAgICAgICBjbGFzc05hbWU6ICd0dWVzZGF5JyxcbiAgICAgIH0pLFxuICAgICAgLi4uKG1vbWVudChkYXRlKS5kYXkoKSA9PT0gNCAmJiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnZGFya2dyZWVuJyxcbiAgICAgICAgICBjb2xvcjogJ3doaXRlJyxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFtdXG4gIClcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMTMpLCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cbiAgICAgICAgZGF5UHJvcEdldHRlcj17ZGF5UHJvcEdldHRlcn1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0RheVByb3BHZXR0ZXIuc3RvcnlOYW1lID0gJ2RheVByb3BHZXR0ZXInXG5cblxuXG5EYXlQcm9wR2V0dGVyLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBEYXlQcm9wR2V0dGVyKCkge1xcbiAgY29uc3QgZGF5UHJvcEdldHRlciA9IHVzZUNhbGxiYWNrKFxcbiAgICAoZGF0ZSkgPT4gKHtcXG4gICAgICAuLi4obW9tZW50KGRhdGUpLmRheSgpID09PSAyICYmIHtcXG4gICAgICAgIGNsYXNzTmFtZTogJ3R1ZXNkYXknLFxcbiAgICAgIH0pLFxcbiAgICAgIC4uLihtb21lbnQoZGF0ZSkuZGF5KCkgPT09IDQgJiYge1xcbiAgICAgICAgc3R5bGU6IHtcXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnZGFya2dyZWVuJyxcXG4gICAgICAgICAgY29sb3I6ICd3aGl0ZScsXFxuICAgICAgICB9LFxcbiAgICAgIH0pLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksIFtdKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGRheVByb3BHZXR0ZXI9e2RheVByb3BHZXR0ZXJ9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLkRheVByb3BHZXR0ZXIucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRlZmF1bHRkYXRlXCJcbiAgICB9fT57YGRlZmF1bHREYXRlYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BpbnN0YW5jZU9mKERhdGUpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BuZXcgRGF0ZSgpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgU2V0cyB0aGUgaW5pdGlhbCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BkYXRlYH08L2lubGluZUNvZGU+e2AgdmFsdWUgaW4geW91ciBjYWxlbmRhciB3aGVuIHlvdSBkb24ndCB3YW50IGl0IHRvIGJlICd0b2RheScsIHdoZW4gbm90IHVzaW5nIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGdldE5vd2B9PC9pbmxpbmVDb2RlPntgLCBvciBjb250cm9sbGluZyBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BkYXRlYH08L2lubGluZUNvZGU+e2AuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLWRlZmF1bHQtZGF0ZVwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZGVmYXVsdERhdGUubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdFZpZXc6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgRGVmYXVsdERhdGUgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkRlZmF1bHREYXRlLnN0b3J5TmFtZSA9ICdkZWZhdWx0RGF0ZSdcXG5EZWZhdWx0RGF0ZS5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5EQVksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJEZWZhdWx0RGF0ZVwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6Mjh9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozMn0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozMn19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2RlZmF1bHREYXRlLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdFZpZXc6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IERlZmF1bHREYXRlID0gVGVtcGxhdGUuYmluZCh7fSk7RGVmYXVsdERhdGUuc3RvcnlOYW1lID0gJ2RlZmF1bHREYXRlJ1xuRGVmYXVsdERhdGUuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG59XG5cblxuXG5EZWZhdWx0RGF0ZS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uRGVmYXVsdERhdGUucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRlZmF1bHR2aWV3XCJcbiAgICB9fT57YGRlZmF1bHRWaWV3YH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YFZpZXdzLk1PTlRIIChtb250aHx3ZWVrfHdvcmtfd2Vla3xkYXl8YWdlbmRhKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFRoZSBpbml0aWFsIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHZpZXdgfTwvaW5saW5lQ29kZT57YCBzZXQgZm9yIHlvdXIgY2FsZW5kYXIgd2hlbiB5b3UgZG9uJ3Qgd2FudCBpdCB0byBiZSB0aGUgZGVmYXVsdCAoJ21vbnRoJykuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLWRlZmF1bHQtdmlld1wiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZGVmYXVsdFZpZXcubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgRGVmYXVsdFZpZXcgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkRlZmF1bHRWaWV3LnN0b3J5TmFtZSA9ICdkZWZhdWx0VmlldydcXG5EZWZhdWx0Vmlldy5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5EQVksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJEZWZhdWx0Vmlld1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6Mjh9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozMn0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozMn19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2RlZmF1bHRWaWV3Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IERlZmF1bHRWaWV3ID0gVGVtcGxhdGUuYmluZCh7fSk7RGVmYXVsdFZpZXcuc3RvcnlOYW1lID0gJ2RlZmF1bHRWaWV3J1xuRGVmYXVsdFZpZXcuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG59XG5cblxuXG5EZWZhdWx0Vmlldy5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uRGVmYXVsdFZpZXcucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRyaWxsZG93bnZpZXdcIlxuICAgIH19PntgZHJpbGxkb3duVmlld2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BWaWV3cy5EQVlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUaGUgc3RyaW5nIG5hbWUgb2YgdGhlIGRlc3RpbmF0aW9uIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHZpZXdgfTwvaW5saW5lQ29kZT57YCBmb3IgZHJpbGwtZG93biBhY3Rpb25zLCBzdWNoIGFzIGNsaWNraW5nIGEgZGF0ZSBoZWFkZXIsIG9yIHRoZSB0cnVuY2F0ZWQgZXZlbnRzIGxpbmtzLiBJZiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BnZXREcmlsbGRvd25WaWV3YH08L2lubGluZUNvZGU+e2AgaXMgYWxzbyBzcGVjaWZpZWQgaXQgd2lsbCBiZSB1c2VkIGluc3RlYWQuYH08L3A+XG4gICAgPHA+e2BTZXQgdG8gYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbnVsbGB9PC9pbmxpbmVDb2RlPntgIHRvIGRpc2FibGUgZHJpbGwtZG93biBhY3Rpb25zLmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2A8Q2FsZW5kYXIgZHJpbGxkb3duVmlldz1cImFnZW5kYVwiIC8+XG5gfTwvY29kZT48L3ByZT5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tZHJpbGxkb3duLXZpZXdcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2RyaWxsZG93blZpZXcubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICAgIGRyaWxsZG93blZpZXc6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiAnc2VsZWN0JyxcXG4gICAgICAgIG9wdGlvbnM6IFsnZGF5JywgJ2FnZW5kYSddLFxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBWaWV3cy5EQVksXFxuICAgICAgfSxcXG4gICAgfSxcXG4gIH0sXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVxcblxcbmV4cG9ydCBjb25zdCBEcmlsbGRvd25WaWV3ID0gVGVtcGxhdGUuYmluZCh7fSlcXG5EcmlsbGRvd25WaWV3LnN0b3J5TmFtZSA9ICdkcmlsbGRvd25WaWV3J1xcbkRyaWxsZG93blZpZXcuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcXG4gIGRyaWxsZG93blZpZXc6IFZpZXdzLkFHRU5EQSxcXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkRyaWxsZG93blZpZXdcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjM1fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6Mzl9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzV9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6Mzl9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9kcmlsbGRvd25WaWV3Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkcmlsbGRvd25WaWV3OiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICBvcHRpb25zOiBbJ2RheScsICdhZ2VuZGEnXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBWaWV3cy5EQVksXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cbiAgPC9kaXY+XG4pXG5cbmV4cG9ydCBjb25zdCBEcmlsbGRvd25WaWV3ID0gVGVtcGxhdGUuYmluZCh7fSk7RHJpbGxkb3duVmlldy5zdG9yeU5hbWUgPSAnZHJpbGxkb3duVmlldydcbkRyaWxsZG93blZpZXcuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxuICBkcmlsbGRvd25WaWV3OiBWaWV3cy5BR0VOREEsXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxufVxuXG5cblxuRHJpbGxkb3duVmlldy5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uRHJpbGxkb3duVmlldy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZWxlbWVudHByb3BzXCJcbiAgICB9fT57YGVsZW1lbnRQcm9wc2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgb2JqZWN0YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgUHJvcHMgcGFzc2VkIHRvIG1haW4gY2FsZW5kYXIgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgPGRpdj5gfTwvaW5saW5lQ29kZT57YC5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BOb3RlOmB9PC9zdHJvbmc+e2AgV2lsbCBub3QgcGFzcyBkb3duIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGNsYXNzTmFtZWB9PC9pbmxpbmVDb2RlPntgLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS1lbGVtZW50LXByb3BzXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2VsZW1lbnRQcm9wcy5tZHgnXFxuaW1wb3J0ICcuLi9yZXNvdXJjZXMvcHJvcEdldHRlci5zY3NzJ1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gIH0sXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVxcblxcbmV4cG9ydCBjb25zdCBFbGVtZW50UHJvcHMgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkVsZW1lbnRQcm9wcy5zdG9yeU5hbWUgPSAnZWxlbWVudFByb3BzJ1xcbkVsZW1lbnRQcm9wcy5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gIGVsZW1lbnRQcm9wczogeyBpZDogJ215X3NjaGVkdWxlcicgfSxcXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkVsZW1lbnRQcm9wc1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjR9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyOH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyOH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZWxlbWVudFByb3BzLm1keCdcbmltcG9ydCAnLi4vcmVzb3VyY2VzL3Byb3BHZXR0ZXIuc2NzcydcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gIH0sXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cbiAgPC9kaXY+XG4pXG5cbmV4cG9ydCBjb25zdCBFbGVtZW50UHJvcHMgPSBUZW1wbGF0ZS5iaW5kKHt9KTtFbGVtZW50UHJvcHMuc3RvcnlOYW1lID0gJ2VsZW1lbnRQcm9wcydcbkVsZW1lbnRQcm9wcy5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxuICBlbGVtZW50UHJvcHM6IHsgaWQ6ICdteV9zY2hlZHVsZXInIH0sXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxufVxuXG5cblxuRWxlbWVudFByb3BzLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5FbGVtZW50UHJvcHMucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImVuZGFjY2Vzc29yXCJcbiAgICB9fT57YGVuZEFjY2Vzc29yYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmcgfCBmdW5jdGlvbiAoZXZlbnQ6IE9iamVjdCkgPT4gRGF0ZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiAnZW5kJ2B9PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIGVuZCBkYXRlL3RpbWUgb2YgdGhlIGV2ZW50LiBNdXN0IHJlc29sdmUgdG8gYSBKYXZhU2NyaXB0IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YERhdGVgfTwvaW5saW5lQ29kZT57YCBvYmplY3QuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLWVuZC1hY2Nlc3NvclwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IHsgYWNjZXNzb3JTdG9yeUFyZ3MgfSBmcm9tICcuL3N0b3J5RGVmYXVsdHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2VuZEFjY2Vzc29yLm1keCdcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHREYXRlOiB7XFxuICAgICAgY29udHJvbDoge1xcbiAgICAgICAgdHlwZTogbnVsbCxcXG4gICAgICB9LFxcbiAgICB9LFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IEVuZEFjY2Vzc29yID0gVGVtcGxhdGUuYmluZCh7fSlcXG5FbmRBY2Nlc3Nvci5zdG9yeU5hbWUgPSAnZW5kQWNjZXNzb3InXFxuRW5kQWNjZXNzb3IuYXJncyA9IGFjY2Vzc29yU3RvcnlBcmdzXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkVuZEFjY2Vzc29yXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI5fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI1fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI5fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgeyBhY2Nlc3NvclN0b3J5QXJncyB9IGZyb20gJy4vc3RvcnlEZWZhdWx0cydcbmltcG9ydCBtZHggZnJvbSAnLi9lbmRBY2Nlc3Nvci5tZHgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IEVuZEFjY2Vzc29yID0gVGVtcGxhdGUuYmluZCh7fSk7RW5kQWNjZXNzb3Iuc3RvcnlOYW1lID0gJ2VuZEFjY2Vzc29yJ1xuRW5kQWNjZXNzb3IuYXJncyA9IGFjY2Vzc29yU3RvcnlBcmdzXG5cblxuXG5FbmRBY2Nlc3Nvci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uRW5kQWNjZXNzb3IucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImV2ZW50cHJvcGdldHRlclwiXG4gICAgfX0+e2BldmVudFByb3BHZXR0ZXJgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChldmVudDogT2JqZWN0LCBzdGFydDogRGF0ZSwgZW5kOiBEYXRlLCBpc1NlbGVjdGVkOiBib29sZWFuKSA9PiB7Y2xhc3NOYW1lPzogc3RyaW5nLCBzdHlsZT86IE9iamVjdH1gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BPcHRpb25hbGx5IHByb3ZpZGUgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gb2JqZWN0IG9mIGNsYXNzTmFtZSBvciBzdHlsZSBwcm9wcyB0byBiZSBhcHBsaWVkIHRvIHRoZSB0aGUgZXZlbnQgbm9kZS5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWV2ZW50LXByb3AtZ2V0dGVyXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2V2ZW50UHJvcEdldHRlci5tZHgnXFxuaW1wb3J0ICcuLi9yZXNvdXJjZXMvcHJvcEdldHRlci5zY3NzJ1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFdmVudFByb3BHZXR0ZXIoKSB7XFxuICBjb25zdCBldmVudFByb3BHZXR0ZXIgPSB1c2VDYWxsYmFjayhcXG4gICAgKGV2ZW50LCBzdGFydCwgZW5kLCBpc1NlbGVjdGVkKSA9PiAoe1xcbiAgICAgIC4uLihpc1NlbGVjdGVkICYmIHtcXG4gICAgICAgIHN0eWxlOiB7XFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMwMDAnLFxcbiAgICAgICAgfSxcXG4gICAgICB9KSxcXG4gICAgICAuLi4obW9tZW50KHN0YXJ0KS5ob3VyKCkgPCAxMiAmJiB7XFxuICAgICAgICBjbGFzc05hbWU6ICdwb3dkZXJCbHVlJyxcXG4gICAgICB9KSxcXG4gICAgICAuLi4oZXZlbnQudGl0bGUuaW5jbHVkZXMoJ01lZXRpbmcnKSAmJiB7XFxuICAgICAgICBjbGFzc05hbWU6ICdkYXJrR3JlZW4nLFxcbiAgICAgIH0pLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e25ldyBEYXRlKDIwMTUsIDMsIDEzKX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxcbiAgICAgICAgZXZlbnRQcm9wR2V0dGVyPXtldmVudFByb3BHZXR0ZXJ9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbkV2ZW50UHJvcEdldHRlci5zdG9yeU5hbWUgPSAnZXZlbnRQcm9wR2V0dGVyJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJFdmVudFByb3BHZXR0ZXJcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MjB9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo0OX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjIwfSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ5fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9ldmVudFByb3BHZXR0ZXIubWR4J1xuaW1wb3J0ICcuLi9yZXNvdXJjZXMvcHJvcEdldHRlci5zY3NzJ1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRXZlbnRQcm9wR2V0dGVyID0gZnVuY3Rpb24gRXZlbnRQcm9wR2V0dGVyKCkge1xuICBjb25zdCBldmVudFByb3BHZXR0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQsIHN0YXJ0LCBlbmQsIGlzU2VsZWN0ZWQpID0+ICh7XG4gICAgICAuLi4oaXNTZWxlY3RlZCAmJiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIC4uLihtb21lbnQoc3RhcnQpLmhvdXIoKSA8IDEyICYmIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncG93ZGVyQmx1ZScsXG4gICAgICB9KSxcbiAgICAgIC4uLihldmVudC50aXRsZS5pbmNsdWRlcygnTWVldGluZycpICYmIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZGFya0dyZWVuJyxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFtdXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e25ldyBEYXRlKDIwMTUsIDMsIDEzKX1cbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XG4gICAgICAgIGV2ZW50UHJvcEdldHRlcj17ZXZlbnRQcm9wR2V0dGVyfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07RXZlbnRQcm9wR2V0dGVyLnN0b3J5TmFtZSA9ICdldmVudFByb3BHZXR0ZXInXG5cblxuXG5FdmVudFByb3BHZXR0ZXIucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEV2ZW50UHJvcEdldHRlcigpIHtcXG4gIGNvbnN0IGV2ZW50UHJvcEdldHRlciA9IHVzZUNhbGxiYWNrKFxcbiAgICAoZXZlbnQsIHN0YXJ0LCBlbmQsIGlzU2VsZWN0ZWQpID0+ICh7XFxuICAgICAgLi4uKGlzU2VsZWN0ZWQgJiYge1xcbiAgICAgICAgc3R5bGU6IHtcXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzAwMCcsXFxuICAgICAgICB9LFxcbiAgICAgIH0pLFxcbiAgICAgIC4uLihtb21lbnQoc3RhcnQpLmhvdXIoKSA8IDEyICYmIHtcXG4gICAgICAgIGNsYXNzTmFtZTogJ3Bvd2RlckJsdWUnLFxcbiAgICAgIH0pLFxcbiAgICAgIC4uLihldmVudC50aXRsZS5pbmNsdWRlcygnTWVldGluZycpICYmIHtcXG4gICAgICAgIGNsYXNzTmFtZTogJ2RhcmtHcmVlbicsXFxuICAgICAgfSksXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17bmV3IERhdGUoMjAxNSwgMywgMTMpfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBldmVudFByb3BHZXR0ZXI9e2V2ZW50UHJvcEdldHRlcn1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uRXZlbnRQcm9wR2V0dGVyLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJldmVudHNcIlxuICAgIH19PntgZXZlbnRzYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BhcnJheU9mKEV2ZW50KWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgW11gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBbiBhcnJheSBvZiBldmVudCBvYmplY3RzIHRvIGRpc3BsYXkgb24gdGhlIGNhbGVuZGFyLiBFdmVudHMgb2JqZWN0c1xuY2FuIGJlIGFueSBzaGFwZSwgYXMgbG9uZyBhcyB0aGUgQ2FsZW5kYXIga25vd3MgaG93IHRvIHJldHJpZXZlIHRoZVxuZm9sbG93aW5nIGRldGFpbHMgb2YgdGhlIGV2ZW50OmB9PC9wPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHN0YXJ0IHRpbWVgfTwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BlbmQgdGltZWB9PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHRpdGxlYH08L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgd2hldGhlciBpdHMgYW4gXCJhbGwgZGF5XCIgZXZlbnQgb3Igbm90YH08L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgYW55IHJlc291cmNlIHRoZSBldmVudCBtYXkgYmUgcmVsYXRlZCB0b2B9PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRWFjaCBvZiB0aGVzZSBwcm9wZXJ0aWVzIGNhbiBiZSBjdXN0b21pemVkIG9yIGdlbmVyYXRlZCBkeW5hbWljYWxseSBieVxuc2V0dGluZyB0aGUgdmFyaW91cyBcImFjY2Vzc29yXCIgcHJvcHMuIFdpdGhvdXQgYW55IGNvbmZpZ3VyYXRpb24gdGhlIGRlZmF1bHRcbmV2ZW50IHNob3VsZCBsb29rIGxpa2U6YH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YEV2ZW50IHtcbiAgdGl0bGU6IHN0cmluZyxcbiAgc3RhcnQ6IERhdGUsXG4gIGVuZDogRGF0ZSxcbiAgYWxsRGF5PzogYm9vbGVhblxuICByZXNvdXJjZT86IGFueSxcbn1cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS1ldmVudHNcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZXZlbnRzLm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgRXZlbnRzID0gVGVtcGxhdGUuYmluZCh7fSlcXG5FdmVudHMuc3RvcnlOYW1lID0gJ2V2ZW50cydcXG5FdmVudHMuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJFdmVudHNcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjI3fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MzF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6Mjd9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MzF9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2V2ZW50cy5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cbiAgPC9kaXY+XG4pXG5cbmV4cG9ydCBjb25zdCBFdmVudHMgPSBUZW1wbGF0ZS5iaW5kKHt9KTtFdmVudHMuc3RvcnlOYW1lID0gJ2V2ZW50cydcbkV2ZW50cy5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxuICBldmVudHM6IGRlbW9FdmVudHMsXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcbn1cblxuXG5cbkV2ZW50cy5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uRXZlbnRzLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJmb3JtYXRzXCJcbiAgICB9fT57YGZvcm1hdHNgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YE9iamVjdGB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwibG9jYWxpemVyXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBMb2NhbGl6ZXJcbiAgICA8L0xpbmtUbz4gc3BlY2lmaWMgZm9ybWF0cywgdGVsbCB0aGUgQ2FsZW5kYXIgaG93IHRvIGZvcm1hdCBhbmQgZGlzcGxheSBkYXRlcyBhbmRcbnRpbWVzLlxuICAgIDxwPntgVGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGZvcm1hdGB9PC9pbmxpbmVDb2RlPntgIHR5cGVzIGFyZSBkZXBlbmRlbnQgb24gdGhlIGNvbmZpZ3VyZWQgbG9jYWxpemVyOyBib3RoIE1vbWVudCBhbmQgR2xvYmFsaXplIGFjY2VwdCBzdHJpbmdzIG9mIHRva2VucyBhY2NvcmRpbmcgdG8gdGhlaXIgb3duIHNwZWNpZmljYXRpb24sIHN1Y2ggYXM6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YCdERCBtbSB5eXl5J2B9PC9pbmxpbmVDb2RlPntgLmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2Bjb25zdCBmb3JtYXRzID0gdXNlTWVtbygoKSA9PiAoe1xuICBkYXRlRm9ybWF0OiAnZGQnLFxuXG4gIGRheUZvcm1hdDogKGRhdGUsICwgbG9jYWxpemVyKSA9PlxuICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ0RERCcsIGN1bHR1cmUpLFxuXG4gIGRheVJhbmdlSGVhZGVyRm9ybWF0OiAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cbiAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCB7IGRhdGU6ICdzaG9ydCcgfSwgY3VsdHVyZSkgKyAnIOKAlCAnICtcbiAgICBsb2NhbGl6ZXIuZm9ybWF0KGVuZCwgeyBkYXRlOiAnc2hvcnQnIH0sIGN1bHR1cmUpXG59KSwgW10pXG5cbjxDYWxlbmRhciBmb3JtYXRzPXtmb3JtYXRzfSAvPlxuYH08L2NvZGU+PC9wcmU+XG4gICAgPENhbnZhcyBtZHhUeXBlPVwiQ2FudmFzXCI+XG4gIDxTdG9yeSBpZD1cInByb3BzLS1mb3JtYXRzXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzLm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5leHBvcnQgZnVuY3Rpb24gRm9ybWF0cygpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxcbiAgICAgIGZvcm1hdHM6IHtcXG4gICAgICAgIC8vIHRoZSAnZGF0ZScgb24gZWFjaCBkYXkgY2VsbCBvZiB0aGUgJ21vbnRoJyB2aWV3XFxuICAgICAgICBkYXRlRm9ybWF0OiAnRCcsXFxuICAgICAgICAvLyB0aGUgZGF5IG9mIHRoZSB3ZWVrIGhlYWRlciBpbiB0aGUgJ21vbnRoJyB2aWV3XFxuICAgICAgICB3ZWVrZGF5Rm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkZGRkJywgY3VsdHVyZSksXFxuICAgICAgICAvLyB0aGUgZGF5IGhlYWRlciBpbiB0aGUgJ3dlZWsnIGFuZCAnZGF5JyAoVGltZSBHcmlkKSB2aWV3c1xcbiAgICAgICAgZGF5Rm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkZGRkIERvJywgY3VsdHVyZSksXFxuICAgICAgICAvLyB0aGUgdGltZSBpbiB0aGUgZ3V0dGVyIGluIHRoZSBUaW1lIEdyaWQgdmlld3NcXG4gICAgICAgIHRpbWVHdXR0ZXJGb3JtYXQ6IChkYXRlLCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2hoOm1tIGEnLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuRm9ybWF0cy5zdG9yeU5hbWUgPSAnZm9ybWF0cydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRm9ybWF0c1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjUwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NTB9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEZvcm1hdHMgPSBmdW5jdGlvbiBGb3JtYXRzKCkge1xuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMSksXG4gICAgICBmb3JtYXRzOiB7XG4gICAgICAgIC8vIHRoZSAnZGF0ZScgb24gZWFjaCBkYXkgY2VsbCBvZiB0aGUgJ21vbnRoJyB2aWV3XG4gICAgICAgIGRhdGVGb3JtYXQ6ICdEJyxcbiAgICAgICAgLy8gdGhlIGRheSBvZiB0aGUgd2VlayBoZWFkZXIgaW4gdGhlICdtb250aCcgdmlld1xuICAgICAgICB3ZWVrZGF5Rm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2RkZGQnLCBjdWx0dXJlKSxcbiAgICAgICAgLy8gdGhlIGRheSBoZWFkZXIgaW4gdGhlICd3ZWVrJyBhbmQgJ2RheScgKFRpbWUgR3JpZCkgdmlld3NcbiAgICAgICAgZGF5Rm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2RkZGQgRG8nLCBjdWx0dXJlKSxcbiAgICAgICAgLy8gdGhlIHRpbWUgaW4gdGhlIGd1dHRlciBpbiB0aGUgVGltZSBHcmlkIHZpZXdzXG4gICAgICAgIHRpbWVHdXR0ZXJGb3JtYXQ6IChkYXRlLCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnaGg6bW0gYScsIGN1bHR1cmUpLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0Zvcm1hdHMuc3RvcnlOYW1lID0gJ2Zvcm1hdHMnXG5cblxuXG5Gb3JtYXRzLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBGb3JtYXRzKCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cyB9ID0gdXNlTWVtbyhcXG4gICAgKCkgPT4gKHtcXG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMSksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgLy8gdGhlICdkYXRlJyBvbiBlYWNoIGRheSBjZWxsIG9mIHRoZSAnbW9udGgnIHZpZXdcXG4gICAgICAgIGRhdGVGb3JtYXQ6ICdEJyxcXG4gICAgICAgIC8vIHRoZSBkYXkgb2YgdGhlIHdlZWsgaGVhZGVyIGluIHRoZSAnbW9udGgnIHZpZXdcXG4gICAgICAgIHdlZWtkYXlGb3JtYXQ6IChkYXRlLCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2RkZGQnLCBjdWx0dXJlKSxcXG4gICAgICAgIC8vIHRoZSBkYXkgaGVhZGVyIGluIHRoZSAnd2VlaycgYW5kICdkYXknIChUaW1lIEdyaWQpIHZpZXdzXFxuICAgICAgICBkYXlGb3JtYXQ6IChkYXRlLCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2RkZGQgRG8nLCBjdWx0dXJlKSxcXG4gICAgICAgIC8vIHRoZSB0aW1lIGluIHRoZSBndXR0ZXIgaW4gdGhlIFRpbWUgR3JpZCB2aWV3c1xcbiAgICAgICAgdGltZUd1dHRlckZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnaGg6bW0gYScsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJmb3JtYXRzYWdlbmRhZGF0ZWZvcm1hdFwiXG4gICAgfX0+e2Bmb3JtYXRzLmFnZW5kYURhdGVGb3JtYXRgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChkYXRlOiBEYXRlLCBjdWx0dXJlOiA/c3RyaW5nLCBsb2NhbGl6ZXI6IERhdGVMb2NhbGl6ZXIpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERhdGVzIGRpc3BsYXllZCBpbiB0aGUgZ3V0dGVyIG9mIHRoZSBBZ2VuZGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgdmlld2B9PC9pbmxpbmVDb2RlPjwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWZvcm1hdHMtYWdlbmRhLWRhdGUtZm9ybWF0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0FnZW5kYURhdGVGb3JtYXQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBGb3JtYXRzQWdlbmREYXRlRm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBhZ2VuZGFEYXRlRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkZGRkIE1NTU0gRG8nLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZLCBWaWV3cy5BR0VOREFdLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLkFHRU5EQX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbkZvcm1hdHNBZ2VuZERhdGVGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuYWdlbmRhRGF0ZUZvcm1hdCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRm9ybWF0c0FnZW5kRGF0ZUZvcm1hdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ0fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDR9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0FnZW5kYURhdGVGb3JtYXQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRm9ybWF0c0FnZW5kRGF0ZUZvcm1hdCA9IGZ1bmN0aW9uIEZvcm1hdHNBZ2VuZERhdGVGb3JtYXQoKSB7XG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxuICAgICAgZm9ybWF0czoge1xuICAgICAgICBhZ2VuZGFEYXRlRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2RkZGQgTU1NTSBEbycsIGN1bHR1cmUpLFxuICAgICAgfSxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZLCBWaWV3cy5BR0VOREFdLFxuICAgIH0pLFxuICAgIFtdXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuQUdFTkRBfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgICAgdmlld3M9e3ZpZXdzfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtGb3JtYXRzQWdlbmREYXRlRm9ybWF0LnN0b3J5TmFtZSA9ICdmb3JtYXRzLmFnZW5kYURhdGVGb3JtYXQnXG5cblxuXG5Gb3JtYXRzQWdlbmREYXRlRm9ybWF0LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBGb3JtYXRzQWdlbmREYXRlRm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBhZ2VuZGFEYXRlRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkZGRkIE1NTU0gRG8nLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZLCBWaWV3cy5BR0VOREFdLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLkFHRU5EQX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLkZvcm1hdHNBZ2VuZERhdGVGb3JtYXQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNhZ2VuZGFoZWFkZXJmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5hZ2VuZGFIZWFkZXJGb3JtYXRgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChyYW5nZTogT2JqZWN0IHtzdGFydDogRGF0ZSwgZW5kOiBEYXRlfSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUb29sYmFyIGhlYWRlciBmb3JtYXQgZm9yIHRoZSBBZ2VuZGEgdmlldywgZS5nLiBcIjQvMS8yMDE1IOKAlCA1LzEvMjAxNVwiYH08L3A+XG4gICAgPENhbnZhcyBtZHhUeXBlPVwiQ2FudmFzXCI+XG4gIDxTdG9yeSBpZD1cInByb3BzLS1mb3JtYXRzLWFnZW5kYS1oZWFkZXItZm9ybWF0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0FnZW5kYUhlYWRlckZvcm1hdC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1hdHNBZ2VuZEhlYWRlckZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgYWdlbmRhSGVhZGVyRm9ybWF0OiAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChzdGFydCwgJ2RkZGQgTU1NTSBEbywgWVlZWScsIGN1bHR1cmUpICtcXG4gICAgICAgICAgJyAtICcgK1xcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGVuZCwgJ2RkZGQgTU1NTSBEbywgWVlZWScsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgICAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVksIFZpZXdzLkFHRU5EQV0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuQUdFTkRBfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIHZpZXdzPXt2aWV3c31cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuRm9ybWF0c0FnZW5kSGVhZGVyRm9ybWF0LnN0b3J5TmFtZSA9ICdmb3JtYXRzLmFnZW5kYUhlYWRlckZvcm1hdCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRm9ybWF0c0FnZW5kSGVhZGVyRm9ybWF0XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NDZ9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo0Nn19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzQWdlbmRhSGVhZGVyRm9ybWF0Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEZvcm1hdHNBZ2VuZEhlYWRlckZvcm1hdCA9IGZ1bmN0aW9uIEZvcm1hdHNBZ2VuZEhlYWRlckZvcm1hdCgpIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gICAgICBmb3JtYXRzOiB7XG4gICAgICAgIGFnZW5kYUhlYWRlckZvcm1hdDogKHsgc3RhcnQsIGVuZCB9LCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChzdGFydCwgJ2RkZGQgTU1NTSBEbywgWVlZWScsIGN1bHR1cmUpICtcbiAgICAgICAgICAnIC0gJyArXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChlbmQsICdkZGRkIE1NTU0gRG8sIFlZWVknLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWSwgVmlld3MuQUdFTkRBXSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLkFHRU5EQX1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAgIHZpZXdzPXt2aWV3c31cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07Rm9ybWF0c0FnZW5kSGVhZGVyRm9ybWF0LnN0b3J5TmFtZSA9ICdmb3JtYXRzLmFnZW5kYUhlYWRlckZvcm1hdCdcblxuXG5cbkZvcm1hdHNBZ2VuZEhlYWRlckZvcm1hdC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRm9ybWF0c0FnZW5kSGVhZGVyRm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBhZ2VuZGFIZWFkZXJGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCAnZGRkZCBNTU1NIERvLCBZWVlZJywgY3VsdHVyZSkgK1xcbiAgICAgICAgICAnIC0gJyArXFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZW5kLCAnZGRkZCBNTU1NIERvLCBZWVlZJywgY3VsdHVyZSksXFxuICAgICAgfSxcXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWSwgVmlld3MuQUdFTkRBXSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5BR0VOREF9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgdmlld3M9e3ZpZXdzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzQWdlbmRIZWFkZXJGb3JtYXQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNhZ2VuZGF0aW1lZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMuYWdlbmRhVGltZUZvcm1hdGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGltZSBvbmx5IChub3QgcmFuZ2UpIGRpc3BsYXllZCBpbiB0aGUgZ3V0dGVyIG9mIHRoZSBBZ2VuZGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgdmlld2B9PC9pbmxpbmVDb2RlPjwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWZvcm1hdHMtYWdlbmRhLXRpbWUtZm9ybWF0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0FnZW5kYVRpbWVGb3JtYXQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBGb3JtYXRzQWdlbmRUaW1lRm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBhZ2VuZGFUaW1lRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdoaDptbSBBJywgY3VsdHVyZSksXFxuICAgICAgfSxcXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWSwgVmlld3MuQUdFTkRBXSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5BR0VOREF9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgdmlld3M9e3ZpZXdzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5Gb3JtYXRzQWdlbmRUaW1lRm9ybWF0LnN0b3J5TmFtZSA9ICdmb3JtYXRzLmFnZW5kYVRpbWVGb3JtYXQnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkZvcm1hdHNBZ2VuZFRpbWVGb3JtYXRcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo0NH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ0fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2Zvcm1hdHNBZ2VuZGFUaW1lRm9ybWF0Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEZvcm1hdHNBZ2VuZFRpbWVGb3JtYXQgPSBmdW5jdGlvbiBGb3JtYXRzQWdlbmRUaW1lRm9ybWF0KCkge1xuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzLCB2aWV3cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgYWdlbmRhVGltZUZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdoaDptbSBBJywgY3VsdHVyZSksXG4gICAgICB9LFxuICAgICAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVksIFZpZXdzLkFHRU5EQV0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5BR0VOREF9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICB2aWV3cz17dmlld3N9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0Zvcm1hdHNBZ2VuZFRpbWVGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuYWdlbmRhVGltZUZvcm1hdCdcblxuXG5cbkZvcm1hdHNBZ2VuZFRpbWVGb3JtYXQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEZvcm1hdHNBZ2VuZFRpbWVGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzLCB2aWV3cyB9ID0gdXNlTWVtbyhcXG4gICAgKCkgPT4gKHtcXG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgICAgIGZvcm1hdHM6IHtcXG4gICAgICAgIGFnZW5kYVRpbWVGb3JtYXQ6IChkYXRlLCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2hoOm1tIEEnLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZLCBWaWV3cy5BR0VOREFdLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLkFHRU5EQX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLkZvcm1hdHNBZ2VuZFRpbWVGb3JtYXQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNhZ2VuZGF0aW1lcmFuZ2Vmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5hZ2VuZGFUaW1lUmFuZ2VGb3JtYXRgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChyYW5nZTogT2JqZWN0IHtzdGFydDogRGF0ZSwgZW5kOiBEYXRlfSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUaW1lIHJhbmdlIGRpc3BsYXllZCBpbiB0aGUgZ3V0dGVyIG9mIHRoZSBBZ2VuZGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgdmlld2B9PC9pbmxpbmVDb2RlPjwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWZvcm1hdHMtYWdlbmRhLXRpbWUtcmFuZ2UtZm9ybWF0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0FnZW5kYVRpbWVSYW5nZUZvcm1hdC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1hdHNBZ2VuZGFUaW1lUmFuZ2VGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzLCB2aWV3cyB9ID0gdXNlTWVtbyhcXG4gICAgKCkgPT4gKHtcXG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgICAgIGZvcm1hdHM6IHtcXG4gICAgICAgIGFnZW5kYVRpbWVSYW5nZUZvcm1hdDogKHsgc3RhcnQsIGVuZCB9LCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoc3RhcnQsICdoaDptbSBBJywgY3VsdHVyZSkgK1xcbiAgICAgICAgICAnIC0gJyArXFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZW5kLCAnaGg6bW0gQScsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgICAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVksIFZpZXdzLkFHRU5EQV0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuQUdFTkRBfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIHZpZXdzPXt2aWV3c31cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuRm9ybWF0c0FnZW5kYVRpbWVSYW5nZUZvcm1hdC5zdG9yeU5hbWUgPSAnZm9ybWF0cy5hZ2VuZGFUaW1lUmFuZ2VGb3JtYXQnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkZvcm1hdHNBZ2VuZGFUaW1lUmFuZ2VGb3JtYXRcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo0Nn0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ2fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2Zvcm1hdHNBZ2VuZGFUaW1lUmFuZ2VGb3JtYXQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRm9ybWF0c0FnZW5kYVRpbWVSYW5nZUZvcm1hdCA9IGZ1bmN0aW9uIEZvcm1hdHNBZ2VuZGFUaW1lUmFuZ2VGb3JtYXQoKSB7XG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxuICAgICAgZm9ybWF0czoge1xuICAgICAgICBhZ2VuZGFUaW1lUmFuZ2VGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoc3RhcnQsICdoaDptbSBBJywgY3VsdHVyZSkgK1xuICAgICAgICAgICcgLSAnICtcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGVuZCwgJ2hoOm1tIEEnLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWSwgVmlld3MuQUdFTkRBXSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLkFHRU5EQX1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAgIHZpZXdzPXt2aWV3c31cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07Rm9ybWF0c0FnZW5kYVRpbWVSYW5nZUZvcm1hdC5zdG9yeU5hbWUgPSAnZm9ybWF0cy5hZ2VuZGFUaW1lUmFuZ2VGb3JtYXQnXG5cblxuXG5Gb3JtYXRzQWdlbmRhVGltZVJhbmdlRm9ybWF0LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBGb3JtYXRzQWdlbmRhVGltZVJhbmdlRm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBhZ2VuZGFUaW1lUmFuZ2VGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCAnaGg6bW0gQScsIGN1bHR1cmUpICtcXG4gICAgICAgICAgJyAtICcgK1xcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGVuZCwgJ2hoOm1tIEEnLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZLCBWaWV3cy5BR0VOREFdLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLkFHRU5EQX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLkZvcm1hdHNBZ2VuZGFUaW1lUmFuZ2VGb3JtYXQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNkYXRlZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMuZGF0ZUZvcm1hdGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRm9ybWF0IGZvciB0aGUgZGF5IG9mIHRoZSBtb250aCBoZWFkaW5nIGluIHRoZSBNb250aCB2aWV3LiBlLmcuIFwiMDFcIiwgXCIwMlwiLCBcIjAzXCIsIGV0Y2B9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tZm9ybWF0cy1kYXRlLWZvcm1hdFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0RhdGVGb3JtYXQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBGb3JtYXRzRGF0ZUZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxcbiAgICAgIGZvcm1hdHM6IHtcXG4gICAgICAgIGRhdGVGb3JtYXQ6IChkYXRlLCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ0QnLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuRm9ybWF0c0RhdGVGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZGF0ZUZvcm1hdCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRm9ybWF0c0RhdGVGb3JtYXRcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo0MX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQxfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0RhdGVGb3JtYXQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRm9ybWF0c0RhdGVGb3JtYXQgPSBmdW5jdGlvbiBGb3JtYXRzRGF0ZUZvcm1hdCgpIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxuICAgICAgZm9ybWF0czoge1xuICAgICAgICBkYXRlRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ0QnLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtGb3JtYXRzRGF0ZUZvcm1hdC5zdG9yeU5hbWUgPSAnZm9ybWF0cy5kYXRlRm9ybWF0J1xuXG5cblxuRm9ybWF0c0RhdGVGb3JtYXQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEZvcm1hdHNEYXRlRm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cyB9ID0gdXNlTWVtbyhcXG4gICAgKCkgPT4gKHtcXG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMSksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZGF0ZUZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnRCcsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzRGF0ZUZvcm1hdC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c2RheWZvcm1hdFwiXG4gICAgfX0+e2Bmb3JtYXRzLmRheUZvcm1hdGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQSBkYXkgb2YgdGhlIHdlZWsgZm9ybWF0IGZvciBXZWVrIGFuZCBEYXkgaGVhZGluZ3MsIGUuZy4gXCJXZWQgMDEvMDRcImB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tZm9ybWF0cy1kYXktZm9ybWF0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0RheUZvcm1hdC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1hdHNEYXlGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzLCB2aWV3cyB9ID0gdXNlTWVtbyhcXG4gICAgKCkgPT4gKHtcXG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgICAgIGZvcm1hdHM6IHtcXG4gICAgICAgIGRheUZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnZGRkIE1NL0REJywgY3VsdHVyZSksXFxuICAgICAgfSxcXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbkZvcm1hdHNEYXlGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZGF5Rm9ybWF0J1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJGb3JtYXRzRGF5Rm9ybWF0XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NDR9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo0NH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzRGF5Rm9ybWF0Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEZvcm1hdHNEYXlGb3JtYXQgPSBmdW5jdGlvbiBGb3JtYXRzRGF5Rm9ybWF0KCkge1xuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzLCB2aWV3cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgZGF5Rm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2RkZCBNTS9ERCcsIGN1bHR1cmUpLFxuICAgICAgfSxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZXSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICB2aWV3cz17dmlld3N9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0Zvcm1hdHNEYXlGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZGF5Rm9ybWF0J1xuXG5cblxuRm9ybWF0c0RheUZvcm1hdC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRm9ybWF0c0RheUZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZGF5Rm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkZGQgTU0vREQnLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZXSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIHZpZXdzPXt2aWV3c31cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uRm9ybWF0c0RheUZvcm1hdC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c2RheWhlYWRlcmZvcm1hdFwiXG4gICAgfX0+e2Bmb3JtYXRzLmRheUhlYWRlckZvcm1hdGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVG9vbGJhciBoZWFkZXIgZm9ybWF0IGZvciB0aGUgRGF5IHZpZXcsIGUuZy4gXCJXZWRuZXNkYXkgQXByIDAxXCJgfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWZvcm1hdHMtZGF5LWhlYWRlci1mb3JtYXRcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzRGF5SGVhZGVyRm9ybWF0Lm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5leHBvcnQgZnVuY3Rpb24gRm9ybWF0c0RheUhlYWRlckZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZGF5SGVhZGVyRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkZGRkIE1NTU0gRG8nLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZXSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5EQVl9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgdmlld3M9e3ZpZXdzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5Gb3JtYXRzRGF5SGVhZGVyRm9ybWF0LnN0b3J5TmFtZSA9ICdmb3JtYXRzLmRheUhlYWRlckZvcm1hdCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRm9ybWF0c0RheUhlYWRlckZvcm1hdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ0fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDR9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0RheUhlYWRlckZvcm1hdC5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBGb3JtYXRzRGF5SGVhZGVyRm9ybWF0ID0gZnVuY3Rpb24gRm9ybWF0c0RheUhlYWRlckZvcm1hdCgpIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gICAgICBmb3JtYXRzOiB7XG4gICAgICAgIGRheUhlYWRlckZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkZGRkIE1NTU0gRG8nLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5EQVl9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICB2aWV3cz17dmlld3N9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0Zvcm1hdHNEYXlIZWFkZXJGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZGF5SGVhZGVyRm9ybWF0J1xuXG5cblxuRm9ybWF0c0RheUhlYWRlckZvcm1hdC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRm9ybWF0c0RheUhlYWRlckZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZGF5SGVhZGVyRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkZGRkIE1NTU0gRG8nLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZXSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5EQVl9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgdmlld3M9e3ZpZXdzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzRGF5SGVhZGVyRm9ybWF0LnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJmb3JtYXRzZGF5cmFuZ2VoZWFkZXJmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5kYXlSYW5nZUhlYWRlckZvcm1hdGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKHJhbmdlOiBPYmplY3Qge3N0YXJ0OiBEYXRlLCBlbmQ6IERhdGV9LCBjdWx0dXJlOiA/c3RyaW5nLCBsb2NhbGl6ZXI6IERhdGVMb2NhbGl6ZXIpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFRvb2xiYXIgaGVhZGVyIGZvcm1hdCBmb3IgdGhlIFdlZWsgdmlld3MsIGUuZy4gXCJNYXIgMjkgLSBBcHIgMDRcImB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tZm9ybWF0cy1kYXktcmFuZ2UtaGVhZGVyLWZvcm1hdFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2Zvcm1hdHNEYXlSYW5nZUhlYWRlckZvcm1hdC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1hdHNEYXlSYW5nZUhlYWRlckZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZGF5UmFuZ2VIZWFkZXJGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCAnZGRkIEQnLCBjdWx0dXJlKSArXFxuICAgICAgICAgICcgLSAnICtcXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChlbmQsICdkZGQgRCcsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgICAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVldLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgdmlld3M9e3ZpZXdzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5Gb3JtYXRzRGF5UmFuZ2VIZWFkZXJGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZGF5UmFuZ2VIZWFkZXJGb3JtYXQnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkZvcm1hdHNEYXlSYW5nZUhlYWRlckZvcm1hdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ2fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDZ9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0RheVJhbmdlSGVhZGVyRm9ybWF0Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEZvcm1hdHNEYXlSYW5nZUhlYWRlckZvcm1hdCA9IGZ1bmN0aW9uIEZvcm1hdHNEYXlSYW5nZUhlYWRlckZvcm1hdCgpIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gICAgICBmb3JtYXRzOiB7XG4gICAgICAgIGRheVJhbmdlSGVhZGVyRm9ybWF0OiAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCAnZGRkIEQnLCBjdWx0dXJlKSArXG4gICAgICAgICAgJyAtICcgK1xuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZW5kLCAnZGRkIEQnLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgICAgdmlld3M9e3ZpZXdzfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtGb3JtYXRzRGF5UmFuZ2VIZWFkZXJGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZGF5UmFuZ2VIZWFkZXJGb3JtYXQnXG5cblxuXG5Gb3JtYXRzRGF5UmFuZ2VIZWFkZXJGb3JtYXQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEZvcm1hdHNEYXlSYW5nZUhlYWRlckZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZGF5UmFuZ2VIZWFkZXJGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCAnZGRkIEQnLCBjdWx0dXJlKSArXFxuICAgICAgICAgICcgLSAnICtcXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChlbmQsICdkZGQgRCcsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgICAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVldLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgdmlld3M9e3ZpZXdzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzRGF5UmFuZ2VIZWFkZXJGb3JtYXQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNldmVudHRpbWVyYW5nZWVuZGZvcm1hdFwiXG4gICAgfX0+e2Bmb3JtYXRzLmV2ZW50VGltZVJhbmdlRW5kRm9ybWF0YH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBbiBvcHRpb25hbCBldmVudCB0aW1lIHJhbmdlIGZvciBldmVudHMgdGhhdCBjb250aW51ZSBvbnRvIGFub3RoZXIgZGF5LiBVc2VkIHdpdGggYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic2hvdy1tdWx0aS1kYXktdGltZXNcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BzaG93TXVsdGlEYXlUaW1lc2B9PC9MaW5rVG8+e2AuYH08L3A+XG4gICAgPENhbnZhcyBtZHhUeXBlPVwiQ2FudmFzXCI+XG4gIDxTdG9yeSBpZD1cInByb3BzLS1mb3JtYXRzLWV2ZW50LXRpbWUtcmFuZ2UtZW5kLWZvcm1hdFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2Zvcm1hdHNFdmVudFRpbWVSYW5nZUVuZEZvcm1hdC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1hdHNFdmVudFRpbWVSYW5nZUVuZEZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBldmVudFRpbWVSYW5nZUVuZEZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgJyA8PCAnICsgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnaGg6bW0gQScsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBzaG93TXVsdGlEYXlUaW1lc1xcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5Gb3JtYXRzRXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkZvcm1hdHNFdmVudFRpbWVSYW5nZUVuZEZvcm1hdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQzfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDN9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0V2ZW50VGltZVJhbmdlRW5kRm9ybWF0Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEZvcm1hdHNFdmVudFRpbWVSYW5nZUVuZEZvcm1hdCA9IGZ1bmN0aW9uIEZvcm1hdHNFdmVudFRpbWVSYW5nZUVuZEZvcm1hdCgpIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgZXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQ6IChkYXRlLCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XG4gICAgICAgICAgJyA8PCAnICsgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnaGg6bW0gQScsIGN1bHR1cmUpLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICBzaG93TXVsdGlEYXlUaW1lc1xuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtGb3JtYXRzRXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQnXG5cblxuXG5Gb3JtYXRzRXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEZvcm1hdHNFdmVudFRpbWVSYW5nZUVuZEZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBldmVudFRpbWVSYW5nZUVuZEZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgJyA8PCAnICsgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnaGg6bW0gQScsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBzaG93TXVsdGlEYXlUaW1lc1xcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzRXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNldmVudHRpbWVyYW5nZWZvcm1hdFwiXG4gICAgfX0+e2Bmb3JtYXRzLmV2ZW50VGltZVJhbmdlRm9ybWF0YH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAocmFuZ2U6IE9iamVjdCB7c3RhcnQ6IERhdGUsIGVuZDogRGF0ZX0sIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGltZSByYW5nZSBkaXNwbGF5ZWQgb24gZXZlbnRzIGluIFRpbWUgR3JpZCB2aWV3cy5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWZvcm1hdHMtZXZlbnQtdGltZS1yYW5nZS1mb3JtYXRcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzRXZlbnRUaW1lUmFuZ2VGb3JtYXQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBGb3JtYXRzRXZlbnRUaW1lUmFuZ2VGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZXZlbnRUaW1lUmFuZ2VGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCAnaGg6bW0gYScsIGN1bHR1cmUpICtcXG4gICAgICAgICAgJyAtICcgK1xcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGVuZCwgJ2hoOm1tIGEnLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5Gb3JtYXRzRXZlbnRUaW1lUmFuZ2VGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZXZlbnRUaW1lUmFuZ2VGb3JtYXQnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkZvcm1hdHNFdmVudFRpbWVSYW5nZUZvcm1hdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ0fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDR9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0V2ZW50VGltZVJhbmdlRm9ybWF0Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEZvcm1hdHNFdmVudFRpbWVSYW5nZUZvcm1hdCA9IGZ1bmN0aW9uIEZvcm1hdHNFdmVudFRpbWVSYW5nZUZvcm1hdCgpIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgZXZlbnRUaW1lUmFuZ2VGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoc3RhcnQsICdoaDptbSBhJywgY3VsdHVyZSkgK1xuICAgICAgICAgICcgLSAnICtcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGVuZCwgJ2hoOm1tIGEnLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07Rm9ybWF0c0V2ZW50VGltZVJhbmdlRm9ybWF0LnN0b3J5TmFtZSA9ICdmb3JtYXRzLmV2ZW50VGltZVJhbmdlRm9ybWF0J1xuXG5cblxuRm9ybWF0c0V2ZW50VGltZVJhbmdlRm9ybWF0LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBGb3JtYXRzRXZlbnRUaW1lUmFuZ2VGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZXZlbnRUaW1lUmFuZ2VGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCAnaGg6bW0gYScsIGN1bHR1cmUpICtcXG4gICAgICAgICAgJyAtICcgK1xcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGVuZCwgJ2hoOm1tIGEnLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzRXZlbnRUaW1lUmFuZ2VGb3JtYXQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNldmVudHRpbWVyYW5nZXN0YXJ0Zm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMuZXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQW4gb3B0aW9uYWwgZXZlbnQgdGltZSByYW5nZSBmb3IgZXZlbnRzIHRoYXQgY29udGludWUgb250byBhbm90aGVyIGRheS4gVXNlZCB3aXRoIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNob3ctbXVsdGktZGF5LXRpbWVzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgc2hvd011bHRpRGF5VGltZXNgfTwvTGlua1RvPntgLmB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tZm9ybWF0cy1ldmVudC10aW1lLXJhbmdlLXN0YXJ0LWZvcm1hdFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2Zvcm1hdHNFdmVudFRpbWVSYW5nZVN0YXJ0Rm9ybWF0Lm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5leHBvcnQgZnVuY3Rpb24gRm9ybWF0c0V2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnaGg6bW0gQScsIGN1bHR1cmUpICsgJyA+PiAnLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBzaG93TXVsdGlEYXlUaW1lc1xcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5Gb3JtYXRzRXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdC5zdG9yeU5hbWUgPSAnZm9ybWF0cy5ldmVudFRpbWVSYW5nZVN0YXJ0Rm9ybWF0J1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJGb3JtYXRzRXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQzfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDN9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0V2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRm9ybWF0c0V2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQgPSBmdW5jdGlvbiBGb3JtYXRzRXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdCgpIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgZXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdoaDptbSBBJywgY3VsdHVyZSkgKyAnID4+ICcsXG4gICAgICB9LFxuICAgIH0pLFxuICAgIFtdXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAgIHNob3dNdWx0aURheVRpbWVzXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0Zvcm1hdHNFdmVudFRpbWVSYW5nZVN0YXJ0Rm9ybWF0LnN0b3J5TmFtZSA9ICdmb3JtYXRzLmV2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQnXG5cblxuXG5Gb3JtYXRzRXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRm9ybWF0c0V2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnaGg6bW0gQScsIGN1bHR1cmUpICsgJyA+PiAnLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBzaG93TXVsdGlEYXlUaW1lc1xcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzRXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c21vbnRoaGVhZGVyZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMubW9udGhIZWFkZXJGb3JtYXRgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChkYXRlOiBEYXRlLCBjdWx0dXJlOiA/c3RyaW5nLCBsb2NhbGl6ZXI6IERhdGVMb2NhbGl6ZXIpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFRvb2xiYXIgaGVhZGVyIGZvcm1hdCBmb3IgdGhlIE1vbnRoIHZpZXcsIGUuZyBcIjIwMTUgQXByaWxcImB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tZm9ybWF0cy1tb250aC1oZWFkZXItZm9ybWF0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzTW9udGhIZWFkZXJGb3JtYXQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBGb3JtYXRzTW9udGhIZWFkZXJGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBtb250aEhlYWRlckZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCBgTU1NTSBbJ11ZWWAsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5Gb3JtYXRzTW9udGhIZWFkZXJGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMubW9udGhIZWFkZXJGb3JtYXQnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkZvcm1hdHNNb250aEhlYWRlckZvcm1hdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQxfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDF9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzTW9udGhIZWFkZXJGb3JtYXQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRm9ybWF0c01vbnRoSGVhZGVyRm9ybWF0ID0gZnVuY3Rpb24gRm9ybWF0c01vbnRoSGVhZGVyRm9ybWF0KCkge1xuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMSksXG4gICAgICBmb3JtYXRzOiB7XG4gICAgICAgIG1vbnRoSGVhZGVyRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgYE1NTU0gWyddWVlgLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtGb3JtYXRzTW9udGhIZWFkZXJGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMubW9udGhIZWFkZXJGb3JtYXQnXG5cblxuXG5Gb3JtYXRzTW9udGhIZWFkZXJGb3JtYXQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEZvcm1hdHNNb250aEhlYWRlckZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxcbiAgICAgIGZvcm1hdHM6IHtcXG4gICAgICAgIG1vbnRoSGVhZGVyRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsIGBNTU1NIFsnXVlZYCwgY3VsdHVyZSksXFxuICAgICAgfSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLkZvcm1hdHNNb250aEhlYWRlckZvcm1hdC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c3NlbGVjdHJhbmdlZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMuc2VsZWN0UmFuZ2VGb3JtYXRgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChyYW5nZTogT2JqZWN0IHtzdGFydDogRGF0ZSwgZW5kOiBEYXRlfSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBIHRpbWUgcmFuZ2UgZm9ybWF0IHNob3duIGluIHRoZSBoaWdobGlnaHRlZCBhcmVhIHdoZW4gc2VsZWN0aW5nIHRpbWUgc2xvdHMsIGUuZyBcIjA4OjAwIGFtIOKAlCAxMjowMCBwbVwiYH08L3A+XG4gICAgPENhbnZhcyBtZHhUeXBlPVwiQ2FudmFzXCI+XG4gIDxTdG9yeSBpZD1cInByb3BzLS1mb3JtYXRzLXNlbGVjdC1yYW5nZS1mb3JtYXRcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzU2VsZWN0UmFuZ2VGb3JtYXQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBGb3JtYXRzU2VsZWN0UmFuZ2VGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzLCB2aWV3cyB9ID0gdXNlTWVtbyhcXG4gICAgKCkgPT4gKHtcXG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgICAgIGZvcm1hdHM6IHtcXG4gICAgICAgIHNlbGVjdFJhbmdlRm9ybWF0OiAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChzdGFydCwgJ2hoOm1tIGEnLCBjdWx0dXJlKSArXFxuICAgICAgICAgICcgLSAnICtcXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChlbmQsICdoaDptbSBhJywgY3VsdHVyZSksXFxuICAgICAgfSxcXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBzZWxlY3RhYmxlXFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbkZvcm1hdHNTZWxlY3RSYW5nZUZvcm1hdC5zdG9yeU5hbWUgPSAnZm9ybWF0cy5zZWxlY3RSYW5nZUZvcm1hdCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRm9ybWF0c1NlbGVjdFJhbmdlRm9ybWF0XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NDd9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo0N319fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzU2VsZWN0UmFuZ2VGb3JtYXQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRm9ybWF0c1NlbGVjdFJhbmdlRm9ybWF0ID0gZnVuY3Rpb24gRm9ybWF0c1NlbGVjdFJhbmdlRm9ybWF0KCkge1xuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzLCB2aWV3cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgc2VsZWN0UmFuZ2VGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoc3RhcnQsICdoaDptbSBhJywgY3VsdHVyZSkgK1xuICAgICAgICAgICcgLSAnICtcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGVuZCwgJ2hoOm1tIGEnLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgICAgc2VsZWN0YWJsZVxuICAgICAgICB2aWV3cz17dmlld3N9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0Zvcm1hdHNTZWxlY3RSYW5nZUZvcm1hdC5zdG9yeU5hbWUgPSAnZm9ybWF0cy5zZWxlY3RSYW5nZUZvcm1hdCdcblxuXG5cbkZvcm1hdHNTZWxlY3RSYW5nZUZvcm1hdC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRm9ybWF0c1NlbGVjdFJhbmdlRm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBzZWxlY3RSYW5nZUZvcm1hdDogKHsgc3RhcnQsIGVuZCB9LCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoc3RhcnQsICdoaDptbSBhJywgY3VsdHVyZSkgK1xcbiAgICAgICAgICAnIC0gJyArXFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZW5kLCAnaGg6bW0gYScsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgICAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVldLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgc2VsZWN0YWJsZVxcbiAgICAgICAgdmlld3M9e3ZpZXdzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzU2VsZWN0UmFuZ2VGb3JtYXQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHN0aW1lZ3V0dGVyZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMudGltZUd1dHRlckZvcm1hdGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIHRpbWVzdGFtcCBjZWxsIGZvcm1hdHMgaW4gV2VlayBhbmQgVGltZSB2aWV3cywgZS5nLiBcIjQ6MDAgQU1cImB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tZm9ybWF0cy10aW1lLWd1dHRlci1mb3JtYXRcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzVGltZUd1dHRlckZvcm1hdC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1hdHNUaW1lR3V0dGVyRm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICB0aW1lR3V0dGVyRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdoaDptbSBhJywgY3VsdHVyZSksXFxuICAgICAgfSxcXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbkZvcm1hdHNUaW1lR3V0dGVyRm9ybWF0LnN0b3J5TmFtZSA9ICdmb3JtYXRzLnRpbWVHdXR0ZXJGb3JtYXQnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkZvcm1hdHNUaW1lR3V0dGVyRm9ybWF0XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NDR9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo0NH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzVGltZUd1dHRlckZvcm1hdC5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBGb3JtYXRzVGltZUd1dHRlckZvcm1hdCA9IGZ1bmN0aW9uIEZvcm1hdHNUaW1lR3V0dGVyRm9ybWF0KCkge1xuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzLCB2aWV3cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgdGltZUd1dHRlckZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdoaDptbSBhJywgY3VsdHVyZSksXG4gICAgICB9LFxuICAgICAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVldLFxuICAgIH0pLFxuICAgIFtdXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAgIHZpZXdzPXt2aWV3c31cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07Rm9ybWF0c1RpbWVHdXR0ZXJGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMudGltZUd1dHRlckZvcm1hdCdcblxuXG5cbkZvcm1hdHNUaW1lR3V0dGVyRm9ybWF0LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBGb3JtYXRzVGltZUd1dHRlckZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgdGltZUd1dHRlckZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnaGg6bW0gYScsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgICAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVldLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgdmlld3M9e3ZpZXdzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzVGltZUd1dHRlckZvcm1hdC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c3dlZWtkYXlmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy53ZWVrZGF5Rm9ybWF0YH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BXZWVrIGRheSBuYW1lIGZvcm1hdCBmb3IgdGhlIE1vbnRoIHdlZWsgZGF5IGhlYWRpbmdzLCBlLmc6IFwiU3VuXCIsIFwiTW9uXCIsIFwiVHVlXCIsIGV0Y2B9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tZm9ybWF0cy13ZWVrZGF5LWZvcm1hdFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c1dlZWtkYXlGb3JtYXQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBGb3JtYXRzV2Vla2RheUZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxcbiAgICAgIGZvcm1hdHM6IHtcXG4gICAgICAgIHdlZWtkYXlGb3JtYXQ6IChkYXRlLCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2RkZGQnLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuRm9ybWF0c1dlZWtkYXlGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMud2Vla2RheUZvcm1hdCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRm9ybWF0c1dlZWtkYXlGb3JtYXRcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo0MX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQxfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c1dlZWtkYXlGb3JtYXQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRm9ybWF0c1dlZWtkYXlGb3JtYXQgPSBmdW5jdGlvbiBGb3JtYXRzV2Vla2RheUZvcm1hdCgpIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxuICAgICAgZm9ybWF0czoge1xuICAgICAgICB3ZWVrZGF5Rm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2RkZGQnLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtGb3JtYXRzV2Vla2RheUZvcm1hdC5zdG9yeU5hbWUgPSAnZm9ybWF0cy53ZWVrZGF5Rm9ybWF0J1xuXG5cblxuRm9ybWF0c1dlZWtkYXlGb3JtYXQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEZvcm1hdHNXZWVrZGF5Rm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cyB9ID0gdXNlTWVtbyhcXG4gICAgKCkgPT4gKHtcXG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMSksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgd2Vla2RheUZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnZGRkZCcsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzV2Vla2RheUZvcm1hdC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZ2V0ZHJpbGxkb3dudmlld1wiXG4gICAgfX0+e2BnZXREcmlsbGRvd25WaWV3YH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAodGFyZ2V0RGF0ZTogRGF0ZSwgY3VycmVudFZpZXdOYW1lOiBzdHJpbmcsIGNvbmZpZ3VyZWRWaWV3TmFtZXM6IFZpZXdzW10pID0+IHN0cmluZ3xudWxsYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gZHJpbGxkb3duVmlldywgYnV0IGFjY2VwdHMgYSBmdW5jdGlvbiB0aGF0IGNhbiByZXR1cm4gYSB2aWV3IG5hbWUuIEl0J3MgdXNlZnVsIGZvciBjdXN0b21pemluZyB0aGUgZHJpbGwtZG93biBhY3Rpb25zIGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0IGRhdGUgYW5kIHRyaWdnZXJpbmcgdmlldy5gfTwvcD5cbiAgICA8cD57YFJldHVybiBudWxsIHRvIGRpc2FibGUgZHJpbGwtZG93biBhY3Rpb25zLmB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tZ2V0LWRyaWxsZG93bi12aWV3XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZ2V0RHJpbGxkb3duVmlldy5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEdldERyaWxsZG93blZpZXcoKSB7XFxuICBjb25zdCBnZXREcmlsbGRvd25WaWV3ID0gdXNlQ2FsbGJhY2soXFxuICAgICh0YXJnZXREYXRlLCBjdXJyZW50Vmlld05hbWUsIGNvbmZpZ3VyZWRWaWV3TmFtZXMpID0+IHtcXG4gICAgICBpZiAoY3VycmVudFZpZXdOYW1lID09PSAnbW9udGgnICYmIGNvbmZpZ3VyZWRWaWV3TmFtZXMuaW5jbHVkZXMoJ3dlZWsnKSlcXG4gICAgICAgIHJldHVybiAnd2VlaydcXG5cXG4gICAgICByZXR1cm4gbnVsbFxcbiAgICB9LFxcbiAgICBbXVxcbiAgKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgZ2V0RHJpbGxkb3duVmlldz17Z2V0RHJpbGxkb3duVmlld31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuR2V0RHJpbGxkb3duVmlldy5zdG9yeU5hbWUgPSAnZ2V0RHJpbGxkb3duVmlldydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiR2V0RHJpbGxkb3duVmlld1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQyfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDJ9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZ2V0RHJpbGxkb3duVmlldy5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBHZXREcmlsbGRvd25WaWV3ID0gZnVuY3Rpb24gR2V0RHJpbGxkb3duVmlldygpIHtcbiAgY29uc3QgZ2V0RHJpbGxkb3duVmlldyA9IHVzZUNhbGxiYWNrKFxuICAgICh0YXJnZXREYXRlLCBjdXJyZW50Vmlld05hbWUsIGNvbmZpZ3VyZWRWaWV3TmFtZXMpID0+IHtcbiAgICAgIGlmIChjdXJyZW50Vmlld05hbWUgPT09ICdtb250aCcgJiYgY29uZmlndXJlZFZpZXdOYW1lcy5pbmNsdWRlcygnd2VlaycpKVxuICAgICAgICByZXR1cm4gJ3dlZWsnXG5cbiAgICAgIHJldHVybiBudWxsXG4gICAgfSxcbiAgICBbXVxuICApXG5cbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGdldERyaWxsZG93blZpZXc9e2dldERyaWxsZG93blZpZXd9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07R2V0RHJpbGxkb3duVmlldy5zdG9yeU5hbWUgPSAnZ2V0RHJpbGxkb3duVmlldydcblxuXG5cbkdldERyaWxsZG93blZpZXcucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEdldERyaWxsZG93blZpZXcoKSB7XFxuICBjb25zdCBnZXREcmlsbGRvd25WaWV3ID0gdXNlQ2FsbGJhY2soXFxuICAgICh0YXJnZXREYXRlLCBjdXJyZW50Vmlld05hbWUsIGNvbmZpZ3VyZWRWaWV3TmFtZXMpID0+IHtcXG4gICAgICBpZiAoY3VycmVudFZpZXdOYW1lID09PSAnbW9udGgnICYmIGNvbmZpZ3VyZWRWaWV3TmFtZXMuaW5jbHVkZXMoJ3dlZWsnKSlcXG4gICAgICAgIHJldHVybiAnd2VlaydcXG5cXG4gICAgICByZXR1cm4gbnVsbFxcbiAgICB9LFxcbiAgICBbXVxcbiAgKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgZ2V0RHJpbGxkb3duVmlldz17Z2V0RHJpbGxkb3duVmlld31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uR2V0RHJpbGxkb3duVmlldy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZ2V0bm93XCJcbiAgICB9fT57YGdldE5vd2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKCkgPT4gRGF0ZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgKCkgPT4gbmV3IERhdGUoKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERldGVybWluZXMgdGhlIGN1cnJlbnQgZGF0ZS90aW1lIHdoaWNoIGlzIGhpZ2hsaWdodGVkIGluIHRoZSB2aWV3cy5gfTwvcD5cbiAgICA8cD57YFRoZSB2YWx1ZSBhZmZlY3RzIHdoaWNoIGRheSBpcyBzaGFkZWQgYW5kIHdoaWNoIHRpbWUgaXMgc2hvd24gYXMgdGhlIGN1cnJlbnQgdGltZS4gSXQgYWxzbyBhZmZlY3RzIHRoZSBkYXRlIHVzZWQgYnkgdGhlIFRvZGF5IGJ1dHRvbiBpbiB0aGUgdG9vbGJhci5gfTwvcD5cbiAgICA8cD57YFByb3ZpZGluZyBhIHZhbHVlIGhlcmUgY2FuIGJlIHVzZWZ1bCB3aGVuIHlvdSBhcmUgaW1wbGVtZW50aW5nIHRpbWUgem9uZXMgdXNpbmcgdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHN0YXJ0QWNjZXNzb3JgfTwvaW5saW5lQ29kZT57YCBhbmQgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZW5kQWNjZXNzb3JgfTwvaW5saW5lQ29kZT57YCBwcm9wZXJ0aWVzLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS1nZXQtbm93XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2dldE5vdy5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuY29uc3QgZ2V0Tm93ID0gKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMTMpXFxuXFxuZXhwb3J0IGNvbnN0IEdldE5vdyA9IFRlbXBsYXRlLmJpbmQoe30pXFxuR2V0Tm93LnN0b3J5TmFtZSA9ICdnZXROb3cnXFxuR2V0Tm93LmFyZ3MgPSB7XFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBnZXROb3csXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJHZXROb3dcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjIzfSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6Mjd9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjN9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6Mjd9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2dldE5vdy5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5jb25zdCBnZXROb3cgPSAoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxMylcblxuZXhwb3J0IGNvbnN0IEdldE5vdyA9IFRlbXBsYXRlLmJpbmQoe30pO0dldE5vdy5zdG9yeU5hbWUgPSAnZ2V0Tm93J1xuR2V0Tm93LmFyZ3MgPSB7XG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgZ2V0Tm93LFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG59XG5cblxuXG5HZXROb3cucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVwiIH0sIC4uLkdldE5vdy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwibGVuZ3RoXCJcbiAgICB9fT57YGxlbmd0aGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbnVtYmVyYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2AzMGB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERldGVybWluZXMgdGhlIGVuZCBkYXRlIGZyb20gZGF0ZSBwcm9wIGluIHRoZSBhZ2VuZGEgdmlldyBkYXRlIHByb3AgKyBsZW5ndGggKGluIG51bWJlciBvZiBkYXlzKSA9IGVuZCBkYXRlLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS1sZW5ndGhcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2xlbmd0aC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZToge1xcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6IG51bGwsXFxuICAgICAgfSxcXG4gICAgfSxcXG4gICAgZGVmYXVsdFZpZXc6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICAgIGxlbmd0aDogJ251bWJlcicsXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgTGVuZ3RoID0gVGVtcGxhdGUuYmluZCh7fSlcXG5MZW5ndGguc3RvcnlOYW1lID0gJ2xlbmd0aCdcXG5MZW5ndGguYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBkZWZhdWx0VmlldzogVmlld3MuQUdFTkRBLFxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxcbiAgbGVuZ3RoOiAxNCxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkxlbmd0aFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzR9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozOH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozNH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozOH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2xlbmd0aC5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZpZXc6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBsZW5ndGg6ICdudW1iZXInLFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgTGVuZ3RoID0gVGVtcGxhdGUuYmluZCh7fSk7TGVuZ3RoLnN0b3J5TmFtZSA9ICdsZW5ndGgnXG5MZW5ndGguYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkFHRU5EQSxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxuICBsZW5ndGg6IDE0LFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG59XG5cblxuXG5MZW5ndGgucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVwiIH0sIC4uLkxlbmd0aC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwibG9jYWxpemVyXCJcbiAgICB9fT57YGxvY2FsaXplcmB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgaW5zdGFuY2VPZihEYXRlTG9jYWxpemVyKWB9PC9pbmxpbmVDb2RlPntgIGB9PHN0cm9uZyBwYXJlbnROYW1lPVwibGlcIj57YHJlcXVpcmVkYH08L3N0cm9uZz48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUaGUgbG9jYWxpemVyIHVzZWQgZm9yIGB9PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgZm9ybWF0dGluZyBkYXRlc2B9PC9zdHJvbmc+e2AgYW5kIHRpbWVzIGFjY29yZGluZyB0byB0aGUgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0c1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YGZvcm1hdHNgfTwvTGlua1RvPntgIGFuZCBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJjdWx0dXJlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgY3VsdHVyZWB9PC9MaW5rVG8+e2AuIFRvIGZvcm1hdCBidXR0b25zIGFuZCBtZXNzYWdpbmcgdXNlIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJtZXNzYWdlc1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YG1lc3NhZ2VzYH08L0xpbmtUbz57YCBwcm9wLmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2AvLyBXaGVuIHVzaW5nIFxcYERheS5qc1xcYFxuaW1wb3J0IHsgZGF5anNMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnXG4vLyBhbmQsIGZvciBvcHRpb25hbCB0aW1lIHpvbmUgc3VwcG9ydFxuaW1wb3J0IHRpbWV6b25lIGZyb20gJ2RheWpzL3BsdWdpbi90aW1lem9uZSdcblxuZGF5anMuZXh0ZW5kKHRpbWV6b25lKVxuLy8gZW5kIG9wdGlvbmFsIHRpbWUgem9uZSBzdXBwb3J0XG5cbi8vIE5vdGUgdGhhdCB0aGUgZGF5anNMb2NhbGl6ZXIgZXh0ZW5kcyBEYXkuanMgd2l0aCB0aGUgZm9sbG93aW5nIHBsdWdpbnM6XG4vLyAtIElzQmV0d2VlblxuLy8gLSBJc1NhbWVPckFmdGVyXG4vLyAtIElzU2FtZU9yQmVmb3JlXG4vLyAtIExvY2FsZURhdGFcbi8vIC0gTG9jYWxpemVkRm9ybWF0XG4vLyAtIE1pbk1heFxuLy8gLSBVVENcblxuY29uc3QgbG9jYWxpemVyID0gZGF5anNMb2NhbGl6ZXIoZGF5anMpXG5gfTwvY29kZT48L3ByZT5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgLy8gV2hlbiB1c2luZyBcXGBHbG9iYWxpemVcXGBcbmltcG9ydCB7IGdsb2JhbGl6ZUxvY2FsaXplciB9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbmltcG9ydCBnbG9iYWxpemUgZnJvbSAnZ2xvYmFsaXplJ1xuXG5jb25zdCBsb2NhbGl6ZXIgPSBnbG9iYWxpemVMb2NhbGl6ZXIoZ2xvYmFsaXplKVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YC8vIFdoZW4gdXNpbmcgXFxgTHV4b25cXGBcbmltcG9ydCB7IGx1eG9uTG9jYWxpemVyIH0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuaW1wb3J0IHsgRGF0ZVRpbWUsIFNldHRpbmdzIH0gZnJvbSAnbHV4b24nXG4vLyBvbmx5IHVzZSBcXGBTZXR0aW5nc1xcYCBpZiB5b3UgcmVxdWlyZSBvcHRpb25hbCB0aW1lIHpvbmUgc3VwcG9ydFxuU2V0dGluZ3MuZGVmYXVsdFpvbmUgPSAnQW1lcmljYS9Mb3NfQW5nZWxlcydcbi8vIGVuZCBvcHRpb25hbCB0aW1lIHpvbmUgc3VwcG9ydFxuXG4vLyBMdXhvbiB1c2VzIHRoZSBJbnRsIEFQSSwgd2hpY2ggY3VycmVudGx5IGRvZXMgbm90IGNvbnRhaW4gXFxgd2Vla0luZm9cXGBcbi8vIHRvIGRldGVybWluZSB3aGljaCB3ZWVrZGF5IGlzIHRoZSBzdGFydCBvZiB0aGUgd2VlayBieSBcXGBjdWx0dXJlXFxgLlxuLy8gVGhlIFxcYGx1eG9uTG9jYWxpemVyXFxgIGRlZmF1bHRzIHRoaXMgdG8gU3VuZGF5LCB3aGljaCBkaWZmZXJzIGZyb21cbi8vIHRoZSBMdXhvbiBkZWZhdWx0IG9mIE1vbmRheS4gVGhlIGxvY2FsaXplciByZXF1aXJlcyB0aGlzIG9wdGlvblxuLy8gdG8gY2hhbmdlIHRoZSBkaXNwbGF5LCBhbmQgdGhlIGRhdGUgbWF0aCBmb3IgZGV0ZXJtaW5pbmcgdGhlXG4vLyBzdGFydCBvZiBhIHdlZWsuIEx1eG9uIHVzZXMgbm9uLXplcm8gYmFzZWQgdmFsdWVzIGZvciBcXGB3ZWVrZGF5XFxgLlxuY29uc3QgbG9jYWxpemVyID0gbHV4b25Mb2NhbGl6ZXIoRGF0ZVRpbWUsIHsgZmlyc3REYXlPZldlZWs6IDcgfSlcbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2AvLyBXaGVuIHVzaW5nIFxcYG1vbWVudFxcYFxuaW1wb3J0IHsgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG4vLyBhbmQsIGZvciBvcHRpb25hbCB0aW1lIHpvbmUgc3VwcG9ydFxuaW1wb3J0ICdtb21lbnQtdGltZXpvbmUnXG5cbm1vbWVudC50ei5zZXREZWZhdWx0KCdBbWVyaWNhL0xvc19BbmdlbGVzJylcbi8vIGVuZCBvcHRpb25hbCB0aW1lIHpvbmUgc3VwcG9ydFxuXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPHA+e2BTZWUgdGhlIGB9PExpbmtUbyBraW5kPVwiZXhhbXBsZXNcIiBzdG9yeT1cImV4YW1wbGUtNVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YExvY2FsaXphdGlvbiBFeGFtcGxlYH08L0xpbmtUbz57YCBmb3IgYW5vdGhlciBleGFtcGxlIG9mIGNvbWJpbmluZyBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BydGxgfTwvaW5saW5lQ29kZT57YCwgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbG9jYWxpemVyYH08L2lubGluZUNvZGU+e2AsIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGN1bHR1cmVgfTwvaW5saW5lQ29kZT57YCBhbmQgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbWVzc2FnZXNgfTwvaW5saW5lQ29kZT57YC5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWxvY2FsaXplclwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPGgyIHsuLi57XG4gICAgICBcImlkXCI6IFwibW9yZS1pbmZvcm1hdGlvblwiXG4gICAgfX0+e2BNb3JlIEluZm9ybWF0aW9uYH08L2gyPlxuICAgIDxwPntgVGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGxvY2FsaXplcmB9PC9pbmxpbmVDb2RlPntgIGNhbiBiZSB1c2VkIGZvciBkYXRlIG1hdGggaW4gYSBudW1iZXIgb2Ygd2F5cy4gTG9vayBhdCB0aGUgYH08TGlua1RvIGtpbmQ9XCJndWlkZXMtbG9jYWxpemVyc1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YExvY2FsaXplciBHdWlkZWB9PC9MaW5rVG8+e2AgZm9yIG1vcmUgaW5mb3JtYXRpb24uYH08L3A+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vbG9jYWxpemVyLm1keCdcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbiAgZGVjb3JhdG9yczogW1xcbiAgICAoU3RvcnkpID0+IChcXG4gICAgICA8ZGl2IHN0eWxlPXt7IGhlaWdodDogODAwIH19PlxcbiAgICAgICAgPFN0b3J5IC8+XFxuICAgICAgPC9kaXY+XFxuICAgICksXFxuICBdLFxcbn1cXG5cXG5leHBvcnQgZnVuY3Rpb24gTG9jYWxpemVyKCkge1xcbiAgY29uc3QgbG9jYWxpemVyID0gdXNlTWVtbygoKSA9PiBtb21lbnRMb2NhbGl6ZXIobW9tZW50KSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtuZXcgRGF0ZSgyMDE1LCAzLCAxMyl9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuTG9jYWxpemVyLnN0b3J5TmFtZSA9ICdsb2NhbGl6ZXIgKidcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiTG9jYWxpemVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjI0fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MzZ9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoyNH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozNn19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2xvY2FsaXplci5tZHgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbiAgZGVjb3JhdG9yczogW1xuICAgIChTdG9yeSkgPT4gKFxuICAgICAgPGRpdiBzdHlsZT17eyBoZWlnaHQ6IDgwMCB9fT5cbiAgICAgICAgPFN0b3J5IC8+XG4gICAgICA8L2Rpdj5cbiAgICApLFxuICBdLFxufVxuXG5leHBvcnQgY29uc3QgTG9jYWxpemVyID0gZnVuY3Rpb24gTG9jYWxpemVyKCkge1xuICBjb25zdCBsb2NhbGl6ZXIgPSB1c2VNZW1vKCgpID0+IG1vbWVudExvY2FsaXplcihtb21lbnQpLCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e25ldyBEYXRlKDIwMTUsIDMsIDEzKX1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07TG9jYWxpemVyLnN0b3J5TmFtZSA9ICdsb2NhbGl6ZXIgKidcblxuXG5cbkxvY2FsaXplci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gTG9jYWxpemVyKCkge1xcbiAgY29uc3QgbG9jYWxpemVyID0gdXNlTWVtbygoKSA9PiBtb21lbnRMb2NhbGl6ZXIobW9tZW50KSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtuZXcgRGF0ZSgyMDE1LCAzLCAxMyl9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uTG9jYWxpemVyLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJsb25ncHJlc3N0aHJlc2hvbGRcIlxuICAgIH19PntgbG9uZ1ByZXNzVGhyZXNob2xkYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BudW1iZXJgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YDI1MGB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIG1pbGlzZWNvbmRzIHRoZSB1c2VyIG11c3QgcHJlc3MgYW5kIGhvbGQgb24gdGhlIHNjcmVlbiBmb3IgYSB0b3VjaCB0byBiZSBjb25zaWRlcmVkIGEgXCJsb25nIHByZXNzLlwiIExvbmcgcHJlc3NlcyBhcmUgdXNlZCBmb3IgdGltZSBzbG90IHNlbGVjdGlvbiBvbiB0b3VjaCBkZXZpY2VzLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS1sb25nLXByZXNzLXRocmVzaG9sZFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9sb25nUHJlc3NUaHJlc2hvbGQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICAgIGxvbmdQcmVzc1RocmVzaG9sZDogJ251bWJlcicsXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgTG9uZ1ByZXNzVGhyZXNob2xkID0gVGVtcGxhdGUuYmluZCh7fSlcXG5Mb25nUHJlc3NUaHJlc2hvbGQuc3RvcnlOYW1lID0gJ2xvbmdQcmVzc1RocmVzaG9sZCdcXG5Mb25nUHJlc3NUaHJlc2hvbGQuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxuICBsb25nUHJlc3NUaHJlc2hvbGQ6IDI1MCxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkxvbmdQcmVzc1RocmVzaG9sZFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6Mjl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozM30sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozM319fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vbG9uZ1ByZXNzVGhyZXNob2xkLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBsb25nUHJlc3NUaHJlc2hvbGQ6ICdudW1iZXInLFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgTG9uZ1ByZXNzVGhyZXNob2xkID0gVGVtcGxhdGUuYmluZCh7fSk7TG9uZ1ByZXNzVGhyZXNob2xkLnN0b3J5TmFtZSA9ICdsb25nUHJlc3NUaHJlc2hvbGQnXG5Mb25nUHJlc3NUaHJlc2hvbGQuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG4gIGxvbmdQcmVzc1RocmVzaG9sZDogMjUwLFxufVxuXG5cblxuTG9uZ1ByZXNzVGhyZXNob2xkLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5Mb25nUHJlc3NUaHJlc2hvbGQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm1heFwiXG4gICAgfX0+e2BtYXhgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGluc3RhbmNlT2YoRGF0ZSlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG5ldyBEYXRlKDE5NzIsIDAsIDEsIDIzLCA1OSwgNTkpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ29uc3RyYWlucyB0aGUgbWF4aW11bSB0aW1lIG9mIHRoZSBEYXkgYW5kIFdlZWsgdmlld3MuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLW1heFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vbWF4Lm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdFZpZXc6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIG1heDogeyBjb250cm9sOiB7IHR5cGU6ICdkYXRlJyB9IH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgTWF4ID0gVGVtcGxhdGUuYmluZCh7fSlcXG5NYXguc3RvcnlOYW1lID0gJ21heCdcXG5NYXguYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG4gIG1heDogbmV3IERhdGUoMTk3MiwgMCwgMSwgMjAsIDU5LCA1OSksXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJNYXhcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjI2fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MzB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjZ9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MzB9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9tYXgubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgYXJnVHlwZXM6IHtcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBkZWZhdWx0RGF0ZTogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHRWaWV3OiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgbWF4OiB7IGNvbnRyb2w6IHsgdHlwZTogJ2RhdGUnIH0gfSxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IE1heCA9IFRlbXBsYXRlLmJpbmQoe30pO01heC5zdG9yeU5hbWUgPSAnbWF4J1xuTWF4LmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICBldmVudHM6IGRlbW9FdmVudHMsXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcbiAgbWF4OiBuZXcgRGF0ZSgxOTcyLCAwLCAxLCAyMCwgNTksIDU5KSxcbn1cblxuXG5cbk1heC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uTWF4LnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJtZXNzYWdlc1wiXG4gICAgfX0+e2BtZXNzYWdlc2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgT2JqZWN0YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgU3RyaW5nIG1lc3NhZ2VzIHVzZWQgdGhyb3VnaG91dCB0aGUgY29tcG9uZW50LCBvdmVycmlkZSB0byBwcm92aWRlIGxvY2FsaXphdGlvbnMgZm9yIGJ1dHRvbiB0ZXh0LCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B0aXRsZWB9PC9pbmxpbmVDb2RlPntgIGF0dHJpYnV0ZXMgYW5kIG1vcmUuYH08L3A+XG4gICAgPHA+e2BkZWZ1YWx0c2B9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2B7XG4gIGRhdGU6ICdEYXRlJyxcbiAgdGltZTogJ1RpbWUnLFxuICBldmVudDogJ0V2ZW50JyxcbiAgYWxsRGF5OiAnQWxsIERheScsXG4gIHdlZWs6ICdXZWVrJyxcbiAgd29ya193ZWVrOiAnV29yayBXZWVrJyxcbiAgZGF5OiAnRGF5JyxcbiAgbW9udGg6ICdNb250aCcsXG4gIHByZXZpb3VzOiAnQmFjaycsXG4gIG5leHQ6ICdOZXh0JyxcbiAgeWVzdGVyZGF5OiAnWWVzdGVyZGF5JyxcbiAgdG9tb3Jyb3c6ICdUb21vcnJvdycsXG4gIHRvZGF5OiAnVG9kYXknLFxuICBhZ2VuZGE6ICdBZ2VuZGEnLFxuXG4gIG5vRXZlbnRzSW5SYW5nZTogJ1RoZXJlIGFyZSBubyBldmVudHMgaW4gdGhpcyByYW5nZS4nLFxuICAvKipcbiAgICogcGFyYW1zIHt0b3RhbH0gY291bnQgb2YgcmVtYWluaW5nIGV2ZW50cyBcbiAgICogcGFyYW1zIHtyZW1haW5pbmdFdmVudHN9IHJlbWFpbmluZyBldmVudHMgXG4gICAqIHBhcmFtcyB7ZXZlbnRzfSBhbGwgZXZlbnRzIGluIGRheVxuICAgKi9cbiAgc2hvd01vcmU6ICh0b3RhbCwgcmVtYWluaW5nRXZlbnRzLCBldmVudHMpID0+IFxcYCtcXCR7dG90YWx9IG3DoXNcXGAsXG59XG5gfTwvY29kZT48L3ByZT5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLW1lc3NhZ2VzXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9tZXNzYWdlcy5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIE1lc3NhZ2VzKCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgbWVzc2FnZXMgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBtZXNzYWdlczoge1xcbiAgICAgICAgd2VlazogJ1NlbWFuYScsXFxuICAgICAgICB3b3JrX3dlZWs6ICdTZW1hbmEgZGUgdHJhYmFqbycsXFxuICAgICAgICBkYXk6ICdEw61hJyxcXG4gICAgICAgIG1vbnRoOiAnTWVzJyxcXG4gICAgICAgIHByZXZpb3VzOiAnQXRyw6FzJyxcXG4gICAgICAgIG5leHQ6ICdEZXNwdcOpcycsXFxuICAgICAgICB0b2RheTogJ0hveScsXFxuICAgICAgICBhZ2VuZGE6ICdFbCBEaWFyaW8nLFxcblxcbiAgICAgICAgc2hvd01vcmU6ICh0b3RhbCkgPT4gYCske3RvdGFsfSBtw6FzYCxcXG4gICAgICB9LFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgbWVzc2FnZXM9e21lc3NhZ2VzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5NZXNzYWdlcy5zdG9yeU5hbWUgPSAnbWVzc2FnZXMnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIk1lc3NhZ2VzXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NDl9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo0OX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL21lc3NhZ2VzLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IE1lc3NhZ2VzID0gZnVuY3Rpb24gTWVzc2FnZXMoKSB7XG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIG1lc3NhZ2VzIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxuICAgICAgbWVzc2FnZXM6IHtcbiAgICAgICAgd2VlazogJ1NlbWFuYScsXG4gICAgICAgIHdvcmtfd2VlazogJ1NlbWFuYSBkZSB0cmFiYWpvJyxcbiAgICAgICAgZGF5OiAnRMOtYScsXG4gICAgICAgIG1vbnRoOiAnTWVzJyxcbiAgICAgICAgcHJldmlvdXM6ICdBdHLDoXMnLFxuICAgICAgICBuZXh0OiAnRGVzcHXDqXMnLFxuICAgICAgICB0b2RheTogJ0hveScsXG4gICAgICAgIGFnZW5kYTogJ0VsIERpYXJpbycsXG5cbiAgICAgICAgc2hvd01vcmU6ICh0b3RhbCkgPT4gYCske3RvdGFsfSBtw6FzYCxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICBtZXNzYWdlcz17bWVzc2FnZXN9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O01lc3NhZ2VzLnN0b3J5TmFtZSA9ICdtZXNzYWdlcydcblxuXG5cbk1lc3NhZ2VzLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBNZXNzYWdlcygpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIG1lc3NhZ2VzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgbWVzc2FnZXM6IHtcXG4gICAgICAgIHdlZWs6ICdTZW1hbmEnLFxcbiAgICAgICAgd29ya193ZWVrOiAnU2VtYW5hIGRlIHRyYWJham8nLFxcbiAgICAgICAgZGF5OiAnRMOtYScsXFxuICAgICAgICBtb250aDogJ01lcycsXFxuICAgICAgICBwcmV2aW91czogJ0F0csOhcycsXFxuICAgICAgICBuZXh0OiAnRGVzcHXDqXMnLFxcbiAgICAgICAgdG9kYXk6ICdIb3knLFxcbiAgICAgICAgYWdlbmRhOiAnRWwgRGlhcmlvJyxcXG5cXG4gICAgICAgIHNob3dNb3JlOiAodG90YWwpID0+IGArJHt0b3RhbH0gbcOhc2AsXFxuICAgICAgfSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG1lc3NhZ2VzPXttZXNzYWdlc31cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uTWVzc2FnZXMucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm1pblwiXG4gICAgfX0+e2BtaW5gfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGluc3RhbmNlT2YoRGF0ZSlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG5ldyBEYXRlKDE5NzIsIDAsIDEsIDAsIDAsIDAsIDApYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ29uc3RyYWlucyB0aGUgbWluaW11bSB0aW1lIG9mIHRoZSBEYXkgYW5kIFdlZWsgdmlld3MuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLW1pblwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vbWluLm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdFZpZXc6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIG1pbjogeyBjb250cm9sOiB7IHR5cGU6ICdkYXRlJyB9IH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgTWluID0gVGVtcGxhdGUuYmluZCh7fSlcXG5NaW4uc3RvcnlOYW1lID0gJ21pbidcXG5NaW4uYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG4gIG1pbjogbmV3IERhdGUoMTk3MiwgMCwgMSwgOCksXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJNaW5cIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjI2fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MzB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjZ9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MzB9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9taW4ubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgYXJnVHlwZXM6IHtcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBkZWZhdWx0RGF0ZTogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHRWaWV3OiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgbWluOiB7IGNvbnRyb2w6IHsgdHlwZTogJ2RhdGUnIH0gfSxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IE1pbiA9IFRlbXBsYXRlLmJpbmQoe30pO01pbi5zdG9yeU5hbWUgPSAnbWluJ1xuTWluLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICBldmVudHM6IGRlbW9FdmVudHMsXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcbiAgbWluOiBuZXcgRGF0ZSgxOTcyLCAwLCAxLCA4KSxcbn1cblxuXG5cbk1pbi5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uTWluLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbmRvdWJsZWNsaWNrZXZlbnRcIlxuICAgIH19Pntgb25Eb3VibGVDbGlja0V2ZW50YH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZXZlbnQ6IE9iamVjdCkgPT4gYW55YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ2FsbGJhY2sgZmlyZWQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGNsaWNrZWQgdHdpY2UuIChpLmUuOiBhbiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvbkRvdWJsZUNsaWNrYH08L2lubGluZUNvZGU+e2AgaGFuZGxlcikuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgTm90ZTpgfTwvc3Ryb25nPntgIFRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJzZWxlY3RhYmxlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgc2VsZWN0YWJsZWB9PC9MaW5rVG8+e2AgcHJvcCBpcyBgfTxlbSBwYXJlbnROYW1lPVwicFwiPntgbm90YH08L2VtPntgIHJlcXVpcmVkIGZvciB0aGlzIHByb3AgdG8gZnVuY3Rpb24uYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgSW1wb3J0YW50OmB9PC9zdHJvbmc+e2AgVGhlIGV2ZW50IHBhc3NlZCBpbnRvIHRoZSBmdW5jdGlvbiBpcyB0aGUgQ2FsZW5kYXIgRXZlbnQsIG5vdCB0aGUgU3ludGhldGljRXZlbnQgZXhwZWN0ZWQgYnkgbW9zdCBjbGljayBoYW5kbGVycy5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLW9uLWRvdWJsZS1jbGljay1ldmVudFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9vbkRvdWJsZUNsaWNrRXZlbnQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmZ1bmN0aW9uIGJ1aWxkTWVzc2FnZShjYWxFdmVudCwgZXZlbnROYW1lKSB7XFxuICByZXR1cm4gYFske2V2ZW50TmFtZX1dIGFuICdldmVudCcgc2VsZWN0aW9uIHdhcyBtYWRlIHdpdGg6XFxuICAke0pTT04uc3RyaW5naWZ5KGNhbEV2ZW50LCBudWxsLCAyKX1gXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBPbkRvdWJsZUNsaWNrRXZlbnQoKSB7XFxuICBjb25zdCBjbGlja1JlZiA9IHVzZVJlZihudWxsKVxcblxcbiAgdXNlRWZmZWN0KCgpID0+IHtcXG4gICAgLyoqXFxuICAgICAqIFdoYXQgSXMgVGhpcz9cXG4gICAgICogVGhpcyBpcyB0byBwcmV2ZW50IGEgbWVtb3J5IGxlYWssIGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgeW91XFxuICAgICAqIHRlYXJkb3duIHlvdXIgaW50ZXJmYWNlIHByaW9yIHRvIHRoZSB0aW1lZCBtZXRob2QgYmVpbmcgY2FsbGVkLlxcbiAgICAgKi9cXG4gICAgcmV0dXJuICgpID0+IHtcXG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICB9XFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uU2VsZWN0RXZlbnQgPSB1c2VDYWxsYmFjaygoY2FsRXZlbnQpID0+IHtcXG4gICAgLyoqXFxuICAgICAqIEhlcmUgd2UgYXJlIHdhaXRpbmcgMjUwIG1pbGxpc2Vjb25kcyAodXNlIHdoYXQgeW91IHdhbnQpIHByaW9yIHRvIGZpcmluZ1xcbiAgICAgKiBvdXIgbWV0aG9kLiBXaHk/IEJlY2F1c2UgYm90aCAnY2xpY2snIGFuZCAnZG91YmxlQ2xpY2snXFxuICAgICAqIHdvdWxkIGZpcmUsIGluIHRoZSBldmVudCBvZiBhICdkb3VibGVDbGljaycuIEJ5IGRvaW5nXFxuICAgICAqIHRoaXMsIHRoZSAnY2xpY2snIGhhbmRsZXIgaXMgb3ZlcnJpZGRlbiBieSB0aGUgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgKiBhY3Rpb24uXFxuICAgICAqL1xcbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5hbGVydChidWlsZE1lc3NhZ2UoY2FsRXZlbnQsICdvblNlbGVjdEV2ZW50JykpXFxuICAgIH0sIDI1MClcXG4gIH0sIFtdKVxcblxcbiAgY29uc3Qgb25Eb3VibGVDbGlja0V2ZW50ID0gdXNlQ2FsbGJhY2soKGNhbEV2ZW50KSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBOb3RpY2Ugb3VyIHVzZSBvZiB0aGUgc2FtZSByZWYgYXMgYWJvdmUuXFxuICAgICAqL1xcbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5hbGVydChidWlsZE1lc3NhZ2UoY2FsRXZlbnQsICdvbkRvdWJsZUNsaWNrRXZlbnQnKSlcXG4gICAgfSwgMjUwKVxcbiAgfSwgW10pXFxuXFxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMSksIFtdKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBvbkRvdWJsZUNsaWNrRXZlbnQ9e29uRG91YmxlQ2xpY2tFdmVudH1cXG4gICAgICAgIG9uU2VsZWN0RXZlbnQ9e29uU2VsZWN0RXZlbnR9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbk9uRG91YmxlQ2xpY2tFdmVudC5zdG9yeU5hbWUgPSAnb25Eb3VibGVDbGlja0V2ZW50J1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPbkRvdWJsZUNsaWNrRXZlbnRcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MjR9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo3NX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjI0fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjc1fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9vbkRvdWJsZUNsaWNrRXZlbnQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5mdW5jdGlvbiBidWlsZE1lc3NhZ2UoY2FsRXZlbnQsIGV2ZW50TmFtZSkge1xuICByZXR1cm4gYFske2V2ZW50TmFtZX1dIGFuICdldmVudCcgc2VsZWN0aW9uIHdhcyBtYWRlIHdpdGg6XG4gICR7SlNPTi5zdHJpbmdpZnkoY2FsRXZlbnQsIG51bGwsIDIpfWBcbn1cblxuZXhwb3J0IGNvbnN0IE9uRG91YmxlQ2xpY2tFdmVudCA9IGZ1bmN0aW9uIE9uRG91YmxlQ2xpY2tFdmVudCgpIHtcbiAgY29uc3QgY2xpY2tSZWYgPSB1c2VSZWYobnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8qKlxuICAgICAqIFdoYXQgSXMgVGhpcz9cbiAgICAgKiBUaGlzIGlzIHRvIHByZXZlbnQgYSBtZW1vcnkgbGVhaywgaW4gdGhlIG9mZiBjaGFuY2UgdGhhdCB5b3VcbiAgICAgKiB0ZWFyZG93biB5b3VyIGludGVyZmFjZSBwcmlvciB0byB0aGUgdGltZWQgbWV0aG9kIGJlaW5nIGNhbGxlZC5cbiAgICAgKi9cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9uU2VsZWN0RXZlbnQgPSB1c2VDYWxsYmFjaygoY2FsRXZlbnQpID0+IHtcbiAgICAvKipcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgKHVzZSB3aGF0IHlvdSB3YW50KSBwcmlvciB0byBmaXJpbmdcbiAgICAgKiBvdXIgbWV0aG9kLiBXaHk/IEJlY2F1c2UgYm90aCAnY2xpY2snIGFuZCAnZG91YmxlQ2xpY2snXG4gICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcbiAgICAgKiBhY3Rpb24uXG4gICAgICovXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShjYWxFdmVudCwgJ29uU2VsZWN0RXZlbnQnKSlcbiAgICB9LCAyNTApXG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9uRG91YmxlQ2xpY2tFdmVudCA9IHVzZUNhbGxiYWNrKChjYWxFdmVudCkgPT4ge1xuICAgIC8qKlxuICAgICAqIE5vdGljZSBvdXIgdXNlIG9mIHRoZSBzYW1lIHJlZiBhcyBhYm92ZS5cbiAgICAgKi9cbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxuICAgIGNsaWNrUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKGNhbEV2ZW50LCAnb25Eb3VibGVDbGlja0V2ZW50JykpXG4gICAgfSwgMjUwKVxuICB9LCBbXSlcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMSksIFtdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICBvbkRvdWJsZUNsaWNrRXZlbnQ9e29uRG91YmxlQ2xpY2tFdmVudH1cbiAgICAgICAgb25TZWxlY3RFdmVudD17b25TZWxlY3RFdmVudH1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07T25Eb3VibGVDbGlja0V2ZW50LnN0b3J5TmFtZSA9ICdvbkRvdWJsZUNsaWNrRXZlbnQnXG5cblxuXG5PbkRvdWJsZUNsaWNrRXZlbnQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIE9uRG91YmxlQ2xpY2tFdmVudCgpIHtcXG4gIGNvbnN0IGNsaWNrUmVmID0gdXNlUmVmKG51bGwpXFxuXFxuICB1c2VFZmZlY3QoKCkgPT4ge1xcbiAgICAvKipcXG4gICAgICogV2hhdCBJcyBUaGlzP1xcbiAgICAgKiBUaGlzIGlzIHRvIHByZXZlbnQgYSBtZW1vcnkgbGVhaywgaW4gdGhlIG9mZiBjaGFuY2UgdGhhdCB5b3VcXG4gICAgICogdGVhcmRvd24geW91ciBpbnRlcmZhY2UgcHJpb3IgdG8gdGhlIHRpbWVkIG1ldGhvZCBiZWluZyBjYWxsZWQuXFxuICAgICAqL1xcbiAgICByZXR1cm4gKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIH1cXG4gIH0sIFtdKVxcblxcbiAgY29uc3Qgb25TZWxlY3RFdmVudCA9IHVzZUNhbGxiYWNrKChjYWxFdmVudCkgPT4ge1xcbiAgICAvKipcXG4gICAgICogSGVyZSB3ZSBhcmUgd2FpdGluZyAyNTAgbWlsbGlzZWNvbmRzICh1c2Ugd2hhdCB5b3Ugd2FudCkgcHJpb3IgdG8gZmlyaW5nXFxuICAgICAqIG91ciBtZXRob2QuIFdoeT8gQmVjYXVzZSBib3RoICdjbGljaycgYW5kICdkb3VibGVDbGljaydcXG4gICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcXG4gICAgICogdGhpcywgdGhlICdjbGljaycgaGFuZGxlciBpcyBvdmVycmlkZGVuIGJ5IHRoZSAnZG91YmxlQ2xpY2snXFxuICAgICAqIGFjdGlvbi5cXG4gICAgICovXFxuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIGNsaWNrUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShjYWxFdmVudCwgJ29uU2VsZWN0RXZlbnQnKSlcXG4gICAgfSwgMjUwKVxcbiAgfSwgW10pXFxuXFxuICBjb25zdCBvbkRvdWJsZUNsaWNrRXZlbnQgPSB1c2VDYWxsYmFjaygoY2FsRXZlbnQpID0+IHtcXG4gICAgLyoqXFxuICAgICAqIE5vdGljZSBvdXIgdXNlIG9mIHRoZSBzYW1lIHJlZiBhcyBhYm92ZS5cXG4gICAgICovXFxuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIGNsaWNrUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShjYWxFdmVudCwgJ29uRG91YmxlQ2xpY2tFdmVudCcpKVxcbiAgICB9LCAyNTApXFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uRG91YmxlQ2xpY2tFdmVudD17b25Eb3VibGVDbGlja0V2ZW50fVxcbiAgICAgICAgb25TZWxlY3RFdmVudD17b25TZWxlY3RFdmVudH1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uT25Eb3VibGVDbGlja0V2ZW50LnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbmRyaWxsZG93blwiXG4gICAgfX0+e2BvbkRyaWxsRG93bmB9PC9oMT5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLW9uLWRyaWxsLWRvd25cIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSkgPT4gLy8gZG8gc29tZXRoaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ2FsbGJhY2sgZmlyZWQgd2hlbiBkYXRlIGhlYWRlciwgb3IgdGhlIHRydW5jYXRlZCBldmVudCBsaW5rcyBhcmUgY2xpY2tlZC4gV2hlbiBpbmNsdWRlZCwgaXQgd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBkcmlsbGRvd24gYmVoYXZpb3IuYH08L3A+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vb25EcmlsbERvd24ubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBPbkRyaWxsRG93bigpIHtcXG4gIGNvbnN0IFt2aWV3LCBzZXRWaWV3XSA9IHVzZVN0YXRlKFZpZXdzLk1PTlRIKVxcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMTMpKVxcbiAgY29uc3Qgb25OYXZpZ2F0ZSA9IHVzZUNhbGxiYWNrKChuZXdEYXRlKSA9PiBzZXREYXRlKG5ld0RhdGUpLCBbc2V0RGF0ZV0pXFxuICBjb25zdCBvblZpZXcgPSB1c2VDYWxsYmFjaygobmV3VmlldykgPT4gc2V0VmlldyhuZXdWaWV3KSwgW3NldFZpZXddKVxcbiAgY29uc3Qgb25EcmlsbERvd24gPSB1c2VDYWxsYmFjayhcXG4gICAgKG5ld0RhdGUpID0+IHtcXG4gICAgICBzZXREYXRlKG5ld0RhdGUpXFxuICAgICAgc2V0VmlldyhWaWV3cy5BR0VOREEpXFxuICAgIH0sXFxuICAgIFtzZXREYXRlLCBzZXRWaWV3XVxcbiAgKVxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkYXRlPXtkYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25EcmlsbERvd249e29uRHJpbGxEb3dufVxcbiAgICAgICAgb25OYXZpZ2F0ZT17b25OYXZpZ2F0ZX1cXG4gICAgICAgIG9uVmlldz17b25WaWV3fVxcbiAgICAgICAgdmlldz17dmlld31cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuT25EcmlsbERvd24uc3RvcnlOYW1lID0gJ29uRHJpbGxEb3duJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPbkRyaWxsRG93blwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ0fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDR9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9vbkRyaWxsRG93bi5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBPbkRyaWxsRG93biA9IGZ1bmN0aW9uIE9uRHJpbGxEb3duKCkge1xuICBjb25zdCBbdmlldywgc2V0Vmlld10gPSB1c2VTdGF0ZShWaWV3cy5NT05USClcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMTMpKVxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcbiAgY29uc3Qgb25WaWV3ID0gdXNlQ2FsbGJhY2soKG5ld1ZpZXcpID0+IHNldFZpZXcobmV3VmlldyksIFtzZXRWaWV3XSlcbiAgY29uc3Qgb25EcmlsbERvd24gPSB1c2VDYWxsYmFjayhcbiAgICAobmV3RGF0ZSkgPT4ge1xuICAgICAgc2V0RGF0ZShuZXdEYXRlKVxuICAgICAgc2V0VmlldyhWaWV3cy5BR0VOREEpXG4gICAgfSxcbiAgICBbc2V0RGF0ZSwgc2V0Vmlld11cbiAgKVxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGF0ZT17ZGF0ZX1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAgIG9uRHJpbGxEb3duPXtvbkRyaWxsRG93bn1cbiAgICAgICAgb25OYXZpZ2F0ZT17b25OYXZpZ2F0ZX1cbiAgICAgICAgb25WaWV3PXtvblZpZXd9XG4gICAgICAgIHZpZXc9e3ZpZXd9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O09uRHJpbGxEb3duLnN0b3J5TmFtZSA9ICdvbkRyaWxsRG93bidcblxuXG5cbk9uRHJpbGxEb3duLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBPbkRyaWxsRG93bigpIHtcXG4gIGNvbnN0IFt2aWV3LCBzZXRWaWV3XSA9IHVzZVN0YXRlKFZpZXdzLk1PTlRIKVxcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMTMpKVxcbiAgY29uc3Qgb25OYXZpZ2F0ZSA9IHVzZUNhbGxiYWNrKChuZXdEYXRlKSA9PiBzZXREYXRlKG5ld0RhdGUpLCBbc2V0RGF0ZV0pXFxuICBjb25zdCBvblZpZXcgPSB1c2VDYWxsYmFjaygobmV3VmlldykgPT4gc2V0VmlldyhuZXdWaWV3KSwgW3NldFZpZXddKVxcbiAgY29uc3Qgb25EcmlsbERvd24gPSB1c2VDYWxsYmFjayhcXG4gICAgKG5ld0RhdGUpID0+IHtcXG4gICAgICBzZXREYXRlKG5ld0RhdGUpXFxuICAgICAgc2V0VmlldyhWaWV3cy5BR0VOREEpXFxuICAgIH0sXFxuICAgIFtzZXREYXRlLCBzZXRWaWV3XVxcbiAgKVxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkYXRlPXtkYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25EcmlsbERvd249e29uRHJpbGxEb3dufVxcbiAgICAgICAgb25OYXZpZ2F0ZT17b25OYXZpZ2F0ZX1cXG4gICAgICAgIG9uVmlldz17b25WaWV3fVxcbiAgICAgICAgdmlldz17dmlld31cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uT25EcmlsbERvd24ucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9ua2V5cHJlc3NldmVudFwiXG4gICAgfX0+e2BvbktleVByZXNzRXZlbnRgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChldmVudDogT2JqZWN0LCBlOiBTeW50aGV0aWNFdmVudCkgPT4gdm9pZGB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YENhbGxiYWNrIGZpcmVkIHdoZW4gYSBmb2N1c2VkIGNhbGVuZGFyIGV2ZW50IHJlY2VpdmVzIGEga2V5IHByZXNzLmB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tb24ta2V5LXByZXNzLWV2ZW50XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL29uS2V5UHJlc3NFdmVudC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZnVuY3Rpb24gYnVpbGRNZXNzYWdlKGV2ZW50LCB7IGFsdEtleSwgY3RybEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGtleSB9KSB7XFxuICBsZXQgcHJlZml4ID0gJydcXG4gIGlmIChhbHRLZXkpIHtcXG4gICAgcHJlZml4ID0gJ0FMVCArICdcXG4gIH0gZWxzZSBpZiAoY3RybEtleSkge1xcbiAgICBwcmVmaXggPSAnQ1RSTCArICdcXG4gIH0gZWxzZSBpZiAoc2hpZnRLZXkpIHtcXG4gICAgcHJlZml4ID0gJ1NISUZUICsgJ1xcbiAgfSBlbHNlIGlmIChtZXRhS2V5KSB7XFxuICAgIHByZWZpeCA9ICdDTUQgKyAnXFxuICB9XFxuICByZXR1cm4gYFlvdSBwcmVzc2VkIG9uIHRoZSBcXFwiJHtwcmVmaXh9JHtrZXl9XFxcIiBvbiBcXFwiZXZlbnRcXFwiOlxcbkpTT04uc3RyaW5naWZ5KGV2ZW50LCBudWxsLCAyKWBcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIE9uS2V5UHJlc3NFdmVudCgpIHtcXG4gIGNvbnN0IHByZXNzUmVmID0gdXNlUmVmKG51bGwpXFxuXFxuICB1c2VFZmZlY3QoKCkgPT4ge1xcbiAgICByZXR1cm4gKCkgPT4ge1xcbiAgICAgIC8vIFRvIHByZXZlbnQgcG9zc2libGUgbWVtb3J5IGxlYWsgb24gdW5tb3VudFxcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQocHJlc3NSZWY/LmN1cnJlbnQpXFxuICAgIH1cXG4gIH0sIFtdKVxcblxcbiAgY29uc3Qgb25LZXlQcmVzc0V2ZW50ID0gdXNlQ2FsbGJhY2soKGV2ZW50LCBrZXlwcmVzc0V2ZW50KSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBXZSBkZWxheSBvdXIgcmVzcG9uc2UgdG8gY2FwdHVyZSBjdHJsL3NoaWZ0L2FsdCArIGtleVxcbiAgICAgKiAqU3Rvcnlib29rIHdpbGwgc3dhbGxvdyBzb21lIHByZXNzZXMgZnJvbSBpdCdzIG93biBidWlsdC1pbnNcXG4gICAgICovXFxuICAgIHByZXNzUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShldmVudCwga2V5cHJlc3NFdmVudCkpXFxuICAgIH0sIDI1MClcXG4gIH0sIFtdKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uS2V5UHJlc3NFdmVudD17b25LZXlQcmVzc0V2ZW50fVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5PbktleVByZXNzRXZlbnQuc3RvcnlOYW1lID0gJ29uS2V5cHJlc3NFdmVudCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiT25LZXlQcmVzc0V2ZW50XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjM0fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NjZ9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjozNH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo2Nn19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vb25LZXlQcmVzc0V2ZW50Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZnVuY3Rpb24gYnVpbGRNZXNzYWdlKGV2ZW50LCB7IGFsdEtleSwgY3RybEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGtleSB9KSB7XG4gIGxldCBwcmVmaXggPSAnJ1xuICBpZiAoYWx0S2V5KSB7XG4gICAgcHJlZml4ID0gJ0FMVCArICdcbiAgfSBlbHNlIGlmIChjdHJsS2V5KSB7XG4gICAgcHJlZml4ID0gJ0NUUkwgKyAnXG4gIH0gZWxzZSBpZiAoc2hpZnRLZXkpIHtcbiAgICBwcmVmaXggPSAnU0hJRlQgKyAnXG4gIH0gZWxzZSBpZiAobWV0YUtleSkge1xuICAgIHByZWZpeCA9ICdDTUQgKyAnXG4gIH1cbiAgcmV0dXJuIGBZb3UgcHJlc3NlZCBvbiB0aGUgXCIke3ByZWZpeH0ke2tleX1cIiBvbiBcImV2ZW50XCI6XG5KU09OLnN0cmluZ2lmeShldmVudCwgbnVsbCwgMilgXG59XG5cbmV4cG9ydCBjb25zdCBPbktleVByZXNzRXZlbnQgPSBmdW5jdGlvbiBPbktleVByZXNzRXZlbnQoKSB7XG4gIGNvbnN0IHByZXNzUmVmID0gdXNlUmVmKG51bGwpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gVG8gcHJldmVudCBwb3NzaWJsZSBtZW1vcnkgbGVhayBvbiB1bm1vdW50XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHByZXNzUmVmPy5jdXJyZW50KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3Qgb25LZXlQcmVzc0V2ZW50ID0gdXNlQ2FsbGJhY2soKGV2ZW50LCBrZXlwcmVzc0V2ZW50KSA9PiB7XG4gICAgLyoqXG4gICAgICogV2UgZGVsYXkgb3VyIHJlc3BvbnNlIHRvIGNhcHR1cmUgY3RybC9zaGlmdC9hbHQgKyBrZXlcbiAgICAgKiAqU3Rvcnlib29rIHdpbGwgc3dhbGxvdyBzb21lIHByZXNzZXMgZnJvbSBpdCdzIG93biBidWlsdC1pbnNcbiAgICAgKi9cbiAgICBwcmVzc1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShldmVudCwga2V5cHJlc3NFdmVudCkpXG4gICAgfSwgMjUwKVxuICB9LCBbXSlcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMTMpLCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgICAgb25LZXlQcmVzc0V2ZW50PXtvbktleVByZXNzRXZlbnR9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O09uS2V5UHJlc3NFdmVudC5zdG9yeU5hbWUgPSAnb25LZXlwcmVzc0V2ZW50J1xuXG5cblxuT25LZXlQcmVzc0V2ZW50LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBPbktleVByZXNzRXZlbnQoKSB7XFxuICBjb25zdCBwcmVzc1JlZiA9IHVzZVJlZihudWxsKVxcblxcbiAgdXNlRWZmZWN0KCgpID0+IHtcXG4gICAgcmV0dXJuICgpID0+IHtcXG4gICAgICAvLyBUbyBwcmV2ZW50IHBvc3NpYmxlIG1lbW9yeSBsZWFrIG9uIHVubW91bnRcXG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHByZXNzUmVmPy5jdXJyZW50KVxcbiAgICB9XFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uS2V5UHJlc3NFdmVudCA9IHVzZUNhbGxiYWNrKChldmVudCwga2V5cHJlc3NFdmVudCkgPT4ge1xcbiAgICAvKipcXG4gICAgICogV2UgZGVsYXkgb3VyIHJlc3BvbnNlIHRvIGNhcHR1cmUgY3RybC9zaGlmdC9hbHQgKyBrZXlcXG4gICAgICogKlN0b3J5Ym9vayB3aWxsIHN3YWxsb3cgc29tZSBwcmVzc2VzIGZyb20gaXQncyBvd24gYnVpbHQtaW5zXFxuICAgICAqL1xcbiAgICBwcmVzc1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5hbGVydChidWlsZE1lc3NhZ2UoZXZlbnQsIGtleXByZXNzRXZlbnQpKVxcbiAgICB9LCAyNTApXFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksIFtdKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBvbktleVByZXNzRXZlbnQ9e29uS2V5UHJlc3NFdmVudH1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uT25LZXlQcmVzc0V2ZW50LnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbm5hdmlnYXRlXCJcbiAgICB9fT57YG9uTmF2aWdhdGVgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGNvbnRyb2xzOiBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJkYXRlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZGF0ZWB9PC9MaW5rVG8+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGV4YW1wbGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2AobmV3RGF0ZSkgPT4gc2V0RGF0ZShuZXdEYXRlKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGRhdGVgfTwvaW5saW5lQ29kZT57YCB2YWx1ZSBjaGFuZ2VzLiBXaGVuIGluY2x1ZGVkIGl0IGlzIHVzZWQgdG8gJ2NvbnRyb2wnIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJkYXRlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZGF0ZWB9PC9MaW5rVG8+e2AgcHJvcCB2YWx1ZS5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLW9uLW5hdmlnYXRlXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL29uTmF2aWdhdGUubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBPbk5hdmlnYXRlKCkge1xcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMSkpXFxuXFxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGF0ZT17ZGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbk9uTmF2aWdhdGUuc3RvcnlOYW1lID0gJ29uTmF2aWdhdGUnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIk9uTmF2aWdhdGVcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozNH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM0fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9vbk5hdmlnYXRlLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IE9uTmF2aWdhdGUgPSBmdW5jdGlvbiBPbk5hdmlnYXRlKCkge1xuICBjb25zdCBbZGF0ZSwgc2V0RGF0ZV0gPSB1c2VTdGF0ZShuZXcgRGF0ZSgyMDE1LCAzLCAxKSlcblxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGF0ZT17ZGF0ZX1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O09uTmF2aWdhdGUuc3RvcnlOYW1lID0gJ29uTmF2aWdhdGUnXG5cblxuXG5Pbk5hdmlnYXRlLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBPbk5hdmlnYXRlKCkge1xcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMSkpXFxuXFxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGF0ZT17ZGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLk9uTmF2aWdhdGUucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9ucmFuZ2VjaGFuZ2VcIlxuICAgIH19Pntgb25SYW5nZUNoYW5nZWB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKHJhbmdlOiBBcnJheSBbMXw3XSB8IE9iamVjdCB7c3RhcnQ6IERhdGUsIGVuZDogRGF0ZX0pID0+IC8vIGRvIHNvbWV0aGluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIHZpc2libGUgZGF0ZSByYW5nZSBjaGFuZ2VzLiBSZXR1cm5zIGFuIEFycmF5IG9mIGRhdGVzIG9yIGFuIG9iamVjdCB3aXRoIHN0YXJ0IGFuZCBlbmQgZGF0ZXMgZm9yIEJVSUxUSU4gdmlld3MuYH08L3A+XG4gICAgPHA+e2BDdXN0b20gdmlld3MgbWF5IHJldHVybiBzb21ldGhpbmcgZGlmZmVyZW50LmB9PC9wPlxuICAgIDxwPjxlbSBwYXJlbnROYW1lPVwicFwiPntgTm90ZTpgfTwvZW0+e2AgVGhpcyBtZXRob2QgaXMgbm90IGZpcmVkIG9uIGluaXRpYWwgcmVuZGVyLiBPbmx5IGFzIHRoZSB1c2VyIG5hdmlnYXRlcyB0aHJvdWdoIEJpZyBDYWxlbmRhci5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLW9uLXJhbmdlLWNoYW5nZVwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciwgVmlld3MgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vb25SYW5nZUNoYW5nZS5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZnVuY3Rpb24gYnVpbGRNZXNzYWdlKHJhbmdlKSB7XFxuICBpZiAoIXJhbmdlKSB7XFxuICAgIHJldHVybiAnbm8gcmFuZ2UnXFxuICB9XFxuICBpZiAoIUFycmF5LmlzQXJyYXkocmFuZ2UpKSB7XFxuICAgIHJldHVybiBgW29uUmFuZ2VDaGFuZ2VdIHdhcyBnaXZlbiBhbiBvYmplY3Qgd2l0aFxcbiAgICBhIHN0YXJ0IG9mICR7cmFuZ2Uuc3RhcnQudG9Mb2NhbGVTdHJpbmcoKX1cXG4gICAgYW5kIGFuIGVuZCBvZiAke3JhbmdlLmVuZC50b0xvY2FsZVN0cmluZygpfS5cXG4gICAgQW4gb2JqZWN0IHdpdGggJ3N0YXJ0JyBhbmQgJ2VuZCcgaXMgcGFzc2VkXFxuICAgIHdoZW4gaW4gdGhlICdtb250aCcgb3IgJ2FnZW5kYScgdmlld3MuYFxcbiAgfVxcbiAgaWYgKHJhbmdlLmxlbmd0aCA9PT0gMSkge1xcbiAgICByZXR1cm4gYFtvblJhbmdlQ2hhbmdlXSB3YXMgZ2l2ZW4gYW4gYXJyYXkgd2l0aFxcbiAgICBhIHNpbmdsZSBpdGVtIG9mICR7cmFuZ2VbMF0udG9Mb2NhbGVTdHJpbmcoKX0sXFxuICAgIHdoaWNoIG9ubHkgb2NjdXJzIHdpdGhpbiB0aGUgJ2RheScgdmlldy5gXFxuICB9XFxuICByZXR1cm4gYFtvblJhbmdlQ2hhbmdlXSB3YXMgZ2l2ZW4gYW4gYXJyYXkgb2Ygc2V2ZW4gZGF0ZXMsXFxuICBzdGFydGluZyB3aXRoICR7cmFuZ2VbMF0udG9Mb2NhbGVTdHJpbmcoKX1cXG4gIGFuZCBlbmRpbmcgd2l0aCAke3JhbmdlWzZdLnRvTG9jYWxlU3RyaW5nKCl9LlxcbiAgVGhpcyBvY2N1cnMgd2hlbiB3aXRoaW4gdGhlICd3ZWVrJyBvciAnd29yayB3ZWVrJyB2aWV3cy5gXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBPblJhbmdlQ2hhbmdlKCkge1xcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMSkpXFxuXFxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcXG5cXG4gIGNvbnN0IG9uUmFuZ2VDaGFuZ2UgPSB1c2VDYWxsYmFjaygocmFuZ2UpID0+IHtcXG4gICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShyYW5nZSkpXFxuICB9LCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGF0ZT17ZGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XFxuICAgICAgICBvblJhbmdlQ2hhbmdlPXtvblJhbmdlQ2hhbmdlfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5PblJhbmdlQ2hhbmdlLnN0b3J5TmFtZSA9ICdvblJhbmdlQ2hhbmdlJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPblJhbmdlQ2hhbmdlXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjQxfSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NjF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjo0MX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo2MX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciwgVmlld3MgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL29uUmFuZ2VDaGFuZ2UubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5mdW5jdGlvbiBidWlsZE1lc3NhZ2UocmFuZ2UpIHtcbiAgaWYgKCFyYW5nZSkge1xuICAgIHJldHVybiAnbm8gcmFuZ2UnXG4gIH1cbiAgaWYgKCFBcnJheS5pc0FycmF5KHJhbmdlKSkge1xuICAgIHJldHVybiBgW29uUmFuZ2VDaGFuZ2VdIHdhcyBnaXZlbiBhbiBvYmplY3Qgd2l0aFxuICAgIGEgc3RhcnQgb2YgJHtyYW5nZS5zdGFydC50b0xvY2FsZVN0cmluZygpfVxuICAgIGFuZCBhbiBlbmQgb2YgJHtyYW5nZS5lbmQudG9Mb2NhbGVTdHJpbmcoKX0uXG4gICAgQW4gb2JqZWN0IHdpdGggJ3N0YXJ0JyBhbmQgJ2VuZCcgaXMgcGFzc2VkXG4gICAgd2hlbiBpbiB0aGUgJ21vbnRoJyBvciAnYWdlbmRhJyB2aWV3cy5gXG4gIH1cbiAgaWYgKHJhbmdlLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBgW29uUmFuZ2VDaGFuZ2VdIHdhcyBnaXZlbiBhbiBhcnJheSB3aXRoXG4gICAgYSBzaW5nbGUgaXRlbSBvZiAke3JhbmdlWzBdLnRvTG9jYWxlU3RyaW5nKCl9LFxuICAgIHdoaWNoIG9ubHkgb2NjdXJzIHdpdGhpbiB0aGUgJ2RheScgdmlldy5gXG4gIH1cbiAgcmV0dXJuIGBbb25SYW5nZUNoYW5nZV0gd2FzIGdpdmVuIGFuIGFycmF5IG9mIHNldmVuIGRhdGVzLFxuICBzdGFydGluZyB3aXRoICR7cmFuZ2VbMF0udG9Mb2NhbGVTdHJpbmcoKX1cbiAgYW5kIGVuZGluZyB3aXRoICR7cmFuZ2VbNl0udG9Mb2NhbGVTdHJpbmcoKX0uXG4gIFRoaXMgb2NjdXJzIHdoZW4gd2l0aGluIHRoZSAnd2Vlaycgb3IgJ3dvcmsgd2Vlaycgdmlld3MuYFxufVxuXG5leHBvcnQgY29uc3QgT25SYW5nZUNoYW5nZSA9IGZ1bmN0aW9uIE9uUmFuZ2VDaGFuZ2UoKSB7XG4gIGNvbnN0IFtkYXRlLCBzZXREYXRlXSA9IHVzZVN0YXRlKG5ldyBEYXRlKDIwMTUsIDMsIDEpKVxuXG4gIGNvbnN0IG9uTmF2aWdhdGUgPSB1c2VDYWxsYmFjaygobmV3RGF0ZSkgPT4gc2V0RGF0ZShuZXdEYXRlKSwgW3NldERhdGVdKVxuXG4gIGNvbnN0IG9uUmFuZ2VDaGFuZ2UgPSB1c2VDYWxsYmFjaygocmFuZ2UpID0+IHtcbiAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKHJhbmdlKSlcbiAgfSwgW10pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRhdGU9e2RhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICBvbk5hdmlnYXRlPXtvbk5hdmlnYXRlfVxuICAgICAgICBvblJhbmdlQ2hhbmdlPXtvblJhbmdlQ2hhbmdlfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtPblJhbmdlQ2hhbmdlLnN0b3J5TmFtZSA9ICdvblJhbmdlQ2hhbmdlJ1xuXG5cblxuT25SYW5nZUNoYW5nZS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gT25SYW5nZUNoYW5nZSgpIHtcXG4gIGNvbnN0IFtkYXRlLCBzZXREYXRlXSA9IHVzZVN0YXRlKG5ldyBEYXRlKDIwMTUsIDMsIDEpKVxcblxcbiAgY29uc3Qgb25OYXZpZ2F0ZSA9IHVzZUNhbGxiYWNrKChuZXdEYXRlKSA9PiBzZXREYXRlKG5ld0RhdGUpLCBbc2V0RGF0ZV0pXFxuXFxuICBjb25zdCBvblJhbmdlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKHJhbmdlKSA9PiB7XFxuICAgIHdpbmRvdy5hbGVydChidWlsZE1lc3NhZ2UocmFuZ2UpKVxcbiAgfSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRhdGU9e2RhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBvbk5hdmlnYXRlPXtvbk5hdmlnYXRlfVxcbiAgICAgICAgb25SYW5nZUNoYW5nZT17b25SYW5nZUNoYW5nZX1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uT25SYW5nZUNoYW5nZS5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwib25zZWxlY3RldmVudFwiXG4gICAgfX0+e2BvblNlbGVjdEV2ZW50YH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZXZlbnQ6IE9iamVjdCkgPT4gYW55YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ2FsbGJhY2sgZmlyZWQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIHNlbGVjdGVkIChpLmUuOiBhbiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvbkNsaWNrYH08L2lubGluZUNvZGU+e2AgaGFuZGxlcikuYH08L3A+XG4gICAgPHA+e2BUaGUgbWV0aG9kIHJlY2VpdmVzIHRoZSBzZWxlY3RlZCBldmVudCBhcyBhIHBhcmFtZXRlci4gSWYgdXNpbmcgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwicmVzb3VyY2VzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgcmVzb3VyY2VzYH08L0xpbmtUbz57YCwgYW5kIGFyZSBpbiBhIFRpbWVHcmlkIHZpZXcgKCdkYXknIG9yICd3ZWVrJyksIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BldmVudGB9PC9pbmxpbmVDb2RlPntgIHdpbGwgaGF2ZSBhbiBhZGRpdGlvbmFsIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHNvdXJjZVJlc291cmNlYH08L2lubGluZUNvZGU+e2AgcHJvcGVydHkgY29udGFpbmluZyB0aGUgcmVzb3VyY2Ugb2JqZWN0IHRoYXQgdGhlIGV2ZW50IGlzIGFzc29jaWF0ZWQgd2l0aC5gfTwvcD5cbiAgICA8cD57YENsaWNraW5nIG9uIGEgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiYmFja2dyb3VuZEV2ZW50c1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YGJhY2tncm91bmRFdmVudGB9PC9MaW5rVG8+e2Agd2lsbCBhbHNvIGZpcmUgdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uU2VsZWN0RXZlbnRgfTwvaW5saW5lQ29kZT57YCBjYWxsYmFjay4gSXQgd2lsbCBhbHNvIHJlY2VpdmUgdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGJhY2tncm91bmRFdmVudGB9PC9pbmxpbmVDb2RlPntgIGFzIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BldmVudGB9PC9pbmxpbmVDb2RlPntgIG9iamVjdCwgYnV0IGNvbnRhaW4gYSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2Bpc0JhY2tncm91bmRFdmVudGB9PC9pbmxpbmVDb2RlPntgIHByb3BlcnR5IHNldCB0byBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B0cnVlYH08L2lubGluZUNvZGU+e2AuIFRoaXMgd2lsbCBhbGxvdyB5b3UgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhIGJhY2tncm91bmQgZXZlbnQgYW5kIGEgcmVndWxhciBldmVudCB3aXRoaW4geW91ciBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvblNlbGVjdEV2ZW50YH08L2lubGluZUNvZGU+e2AgaGFuZGxlci5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BOb3RlOmB9PC9zdHJvbmc+e2AgVGhlIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNlbGVjdGFibGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BzZWxlY3RhYmxlYH08L0xpbmtUbz57YCBwcm9wIGlzIGB9PGVtIHBhcmVudE5hbWU9XCJwXCI+e2Bub3RgfTwvZW0+e2AgcmVxdWlyZWQgZm9yIHRoaXMgcHJvcCB0byBmdW5jdGlvbi5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BJbXBvcnRhbnQ6YH08L3N0cm9uZz57YCBUaGUgZXZlbnQgcGFzc2VkIGludG8gdGhlIGZ1bmN0aW9uIGlzIHRoZSBDYWxlbmRhciBFdmVudCwgbm90IHRoZSBTeW50aGV0aWNFdmVudCBleHBlY3RlZCBieSBtb3N0IGNsaWNrIGhhbmRsZXJzLmB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tb24tc2VsZWN0LWV2ZW50XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL29uU2VsZWN0RXZlbnQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmZ1bmN0aW9uIGJ1aWxkTWVzc2FnZShjYWxFdmVudCwgZXZlbnROYW1lKSB7XFxuICByZXR1cm4gYFske2V2ZW50TmFtZX1dIGFuICdldmVudCcgc2VsZWN0aW9uIHdhcyBtYWRlIHdpdGg6XFxuICAke0pTT04uc3RyaW5naWZ5KGNhbEV2ZW50LCBudWxsLCAyKX1gXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBPblNlbGVjdEV2ZW50KCkge1xcbiAgY29uc3QgY2xpY2tSZWYgPSB1c2VSZWYobnVsbClcXG5cXG4gIHVzZUVmZmVjdCgoKSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBXaGF0IElzIFRoaXM/XFxuICAgICAqIFRoaXMgaXMgdG8gcHJldmVudCBhIG1lbW9yeSBsZWFrLCBpbiB0aGUgb2ZmIGNoYW5jZSB0aGF0IHlvdVxcbiAgICAgKiB0ZWFyZG93biB5b3VyIGludGVyZmFjZSBwcmlvciB0byB0aGUgdGltZWQgbWV0aG9kIGJlaW5nIGNhbGxlZC5cXG4gICAgICovXFxuICAgIHJldHVybiAoKSA9PiB7XFxuICAgICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgfVxcbiAgfSwgW10pXFxuXFxuICBjb25zdCBvblNlbGVjdEV2ZW50ID0gdXNlQ2FsbGJhY2soKGNhbEV2ZW50KSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgKHVzZSB3aGF0IHlvdSB3YW50KSBwcmlvciB0byBmaXJpbmdcXG4gICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgKiB3b3VsZCBmaXJlLCBpbiB0aGUgZXZlbnQgb2YgYSAnZG91YmxlQ2xpY2snLiBCeSBkb2luZ1xcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcXG4gICAgICogYWN0aW9uLlxcbiAgICAgKi9cXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKGNhbEV2ZW50LCAnb25TZWxlY3RFdmVudCcpKVxcbiAgICB9LCAyNTApXFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uRG91YmxlQ2xpY2tFdmVudCA9IHVzZUNhbGxiYWNrKChjYWxFdmVudCkgPT4ge1xcbiAgICAvKipcXG4gICAgICogTm90aWNlIG91ciB1c2Ugb2YgdGhlIHNhbWUgcmVmIGFzIGFib3ZlLlxcbiAgICAgKi9cXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKGNhbEV2ZW50LCAnb25Eb3VibGVDbGlja0V2ZW50JykpXFxuICAgIH0sIDI1MClcXG4gIH0sIFtdKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25Eb3VibGVDbGlja0V2ZW50PXtvbkRvdWJsZUNsaWNrRXZlbnR9XFxuICAgICAgICBvblNlbGVjdEV2ZW50PXtvblNlbGVjdEV2ZW50fVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5PblNlbGVjdEV2ZW50LnN0b3J5TmFtZSA9ICdvblNlbGVjdEV2ZW50J1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPblNlbGVjdEV2ZW50XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjI0fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NzV9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoyNH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo3NX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vb25TZWxlY3RFdmVudC5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmZ1bmN0aW9uIGJ1aWxkTWVzc2FnZShjYWxFdmVudCwgZXZlbnROYW1lKSB7XG4gIHJldHVybiBgWyR7ZXZlbnROYW1lfV0gYW4gJ2V2ZW50JyBzZWxlY3Rpb24gd2FzIG1hZGUgd2l0aDpcbiAgJHtKU09OLnN0cmluZ2lmeShjYWxFdmVudCwgbnVsbCwgMil9YFxufVxuXG5leHBvcnQgY29uc3QgT25TZWxlY3RFdmVudCA9IGZ1bmN0aW9uIE9uU2VsZWN0RXZlbnQoKSB7XG4gIGNvbnN0IGNsaWNrUmVmID0gdXNlUmVmKG51bGwpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvKipcbiAgICAgKiBXaGF0IElzIFRoaXM/XG4gICAgICogVGhpcyBpcyB0byBwcmV2ZW50IGEgbWVtb3J5IGxlYWssIGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgeW91XG4gICAgICogdGVhcmRvd24geW91ciBpbnRlcmZhY2UgcHJpb3IgdG8gdGhlIHRpbWVkIG1ldGhvZCBiZWluZyBjYWxsZWQuXG4gICAgICovXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBvblNlbGVjdEV2ZW50ID0gdXNlQ2FsbGJhY2soKGNhbEV2ZW50KSA9PiB7XG4gICAgLyoqXG4gICAgICogSGVyZSB3ZSBhcmUgd2FpdGluZyAyNTAgbWlsbGlzZWNvbmRzICh1c2Ugd2hhdCB5b3Ugd2FudCkgcHJpb3IgdG8gZmlyaW5nXG4gICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xuICAgICAqIHdvdWxkIGZpcmUsIGluIHRoZSBldmVudCBvZiBhICdkb3VibGVDbGljaycuIEJ5IGRvaW5nXG4gICAgICogdGhpcywgdGhlICdjbGljaycgaGFuZGxlciBpcyBvdmVycmlkZGVuIGJ5IHRoZSAnZG91YmxlQ2xpY2snXG4gICAgICogYWN0aW9uLlxuICAgICAqL1xuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHdpbmRvdy5hbGVydChidWlsZE1lc3NhZ2UoY2FsRXZlbnQsICdvblNlbGVjdEV2ZW50JykpXG4gICAgfSwgMjUwKVxuICB9LCBbXSlcblxuICBjb25zdCBvbkRvdWJsZUNsaWNrRXZlbnQgPSB1c2VDYWxsYmFjaygoY2FsRXZlbnQpID0+IHtcbiAgICAvKipcbiAgICAgKiBOb3RpY2Ugb3VyIHVzZSBvZiB0aGUgc2FtZSByZWYgYXMgYWJvdmUuXG4gICAgICovXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShjYWxFdmVudCwgJ29uRG91YmxlQ2xpY2tFdmVudCcpKVxuICAgIH0sIDI1MClcbiAgfSwgW10pXG5cbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgICAgb25Eb3VibGVDbGlja0V2ZW50PXtvbkRvdWJsZUNsaWNrRXZlbnR9XG4gICAgICAgIG9uU2VsZWN0RXZlbnQ9e29uU2VsZWN0RXZlbnR9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O09uU2VsZWN0RXZlbnQuc3RvcnlOYW1lID0gJ29uU2VsZWN0RXZlbnQnXG5cblxuXG5PblNlbGVjdEV2ZW50LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBPblNlbGVjdEV2ZW50KCkge1xcbiAgY29uc3QgY2xpY2tSZWYgPSB1c2VSZWYobnVsbClcXG5cXG4gIHVzZUVmZmVjdCgoKSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBXaGF0IElzIFRoaXM/XFxuICAgICAqIFRoaXMgaXMgdG8gcHJldmVudCBhIG1lbW9yeSBsZWFrLCBpbiB0aGUgb2ZmIGNoYW5jZSB0aGF0IHlvdVxcbiAgICAgKiB0ZWFyZG93biB5b3VyIGludGVyZmFjZSBwcmlvciB0byB0aGUgdGltZWQgbWV0aG9kIGJlaW5nIGNhbGxlZC5cXG4gICAgICovXFxuICAgIHJldHVybiAoKSA9PiB7XFxuICAgICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgfVxcbiAgfSwgW10pXFxuXFxuICBjb25zdCBvblNlbGVjdEV2ZW50ID0gdXNlQ2FsbGJhY2soKGNhbEV2ZW50KSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgKHVzZSB3aGF0IHlvdSB3YW50KSBwcmlvciB0byBmaXJpbmdcXG4gICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgKiB3b3VsZCBmaXJlLCBpbiB0aGUgZXZlbnQgb2YgYSAnZG91YmxlQ2xpY2snLiBCeSBkb2luZ1xcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcXG4gICAgICogYWN0aW9uLlxcbiAgICAgKi9cXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKGNhbEV2ZW50LCAnb25TZWxlY3RFdmVudCcpKVxcbiAgICB9LCAyNTApXFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uRG91YmxlQ2xpY2tFdmVudCA9IHVzZUNhbGxiYWNrKChjYWxFdmVudCkgPT4ge1xcbiAgICAvKipcXG4gICAgICogTm90aWNlIG91ciB1c2Ugb2YgdGhlIHNhbWUgcmVmIGFzIGFib3ZlLlxcbiAgICAgKi9cXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKGNhbEV2ZW50LCAnb25Eb3VibGVDbGlja0V2ZW50JykpXFxuICAgIH0sIDI1MClcXG4gIH0sIFtdKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25Eb3VibGVDbGlja0V2ZW50PXtvbkRvdWJsZUNsaWNrRXZlbnR9XFxuICAgICAgICBvblNlbGVjdEV2ZW50PXtvblNlbGVjdEV2ZW50fVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5PblNlbGVjdEV2ZW50LnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbnNlbGVjdHNsb3RcIlxuICAgIH19Pntgb25TZWxlY3RTbG90YH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoT2JqZWN0OiBzbG90SW5mbykgPT4gYW55YH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHJlcXVpcmVzOiBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJzZWxlY3RhYmxlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgc2VsZWN0YWJsZWB9PC9MaW5rVG8+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQSBjYWxsYmFjayBmaXJlZCB3aGVuIGEgZGF0ZSBzZWxlY3Rpb24gaXMgbWFkZS4gT25seSBmaXJlcyB3aGVuIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNlbGVjdGFibGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BzZWxlY3RhYmxlYH08L0xpbmtUbz57YCBpcyB0cnVlLmB9PC9wPlxuICAgIDxwPjxlbSBwYXJlbnROYW1lPVwicFwiPntgVGhpbmdzIFRvIEtub3c6YH08L2VtPntgIFdoZW4geW91ICdkb3VibGVDbGljaycsIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJyB3aWxsIGZpcmUuIENsaWNrIG9uIHRoZSAnc2hvd0NvZGUnIGJ1dHRvbiwgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZXhhbXBsZSBiZWxvdywgdG8gc2VlIGhvdyB5b3UgY2FuIGdldCBhcm91bmQgdGhpcyBpc3N1ZS5gfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgOyhzbG90SW5mbzoge1xuICBzdGFydDogRGF0ZSxcbiAgZW5kOiBEYXRlLFxuICBzbG90czogQXJyYXk8RGF0ZT4sXG4gIGFjdGlvbjogJ3NlbGVjdCcgfCAnY2xpY2snIHwgJ2RvdWJsZUNsaWNrJyxcbiAgcmVzb3VyY2VJZDogP251bWJlciwgLy8gb25seSBpZiB0aGUgY2FsZW5kYXIgaXMgcmVzb3VyY2Ugdmlld1xuICBib3VuZHM6ID97XG4gICAgLy8gRm9yIFwic2VsZWN0XCIgYWN0aW9uXG4gICAgeDogbnVtYmVyLFxuICAgIHk6IG51bWJlcixcbiAgICB0b3A6IG51bWJlcixcbiAgICByaWdodDogbnVtYmVyLFxuICAgIGxlZnQ6IG51bWJlcixcbiAgICBib3R0b206IG51bWJlcixcbiAgfSxcbiAgYm94OiA/e1xuICAgIC8vIEZvciBcImNsaWNrXCIgb3IgXCJkb3VibGVDbGlja1wiIGFjdGlvbnNcbiAgICBjbGllbnRYOiBudW1iZXIsXG4gICAgY2xpZW50WTogbnVtYmVyLFxuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXIsXG4gIH0sXG59KSA9PiBhbnlcbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxoMiB7Li4ue1xuICAgICAgXCJpZFwiOiBcIndoYXRzLXRoZS1kaWZmZXJlbmNlXCJcbiAgICB9fT57YFdoYXQncyBUaGUgRGlmZmVyZW5jZT9gfTwvaDI+XG4gICAgPHA+e2BIb3cgaXMgdGhpcyBkaWZmZXJlbnQgZnJvbSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1zZWxlY3RpbmdcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvblNlbGVjdGluZ2B9PC9MaW5rVG8+e2A/IFRoYXQgaXMgYSB2ZXJ5IGdvb2QgcXVlc3Rpb24uIFRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvblNlbGVjdGluZ2B9PC9pbmxpbmVDb2RlPntgIG1ldGhvZCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgVGltZSB2aWV3cyAoYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgd2Vla2B9PC9pbmxpbmVDb2RlPntgLCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B3b3JrIHdlZWtgfTwvaW5saW5lQ29kZT57YCwgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZGF5YH08L2lubGluZUNvZGU+e2ApLCB3aGVyZWFzIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uU2VsZWN0U2xvdGB9PC9pbmxpbmVDb2RlPntgIGlzIGFsc28gYXZhaWxhYmxlIGluIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2Btb250aGB9PC9pbmxpbmVDb2RlPntgIHZpZXcuIFRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvblNlbGVjdGluZ2B9PC9pbmxpbmVDb2RlPntgIG1ldGhvZCBhbGxvd3MgeW91IHRvICdjYW5jZWwnIHlvdXIgc2VsZWN0aW9uIGJ5IHJldHVybmluZyBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BmYWxzZWB9PC9pbmxpbmVDb2RlPntgLiBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25TZWxlY3RTbG90YH08L2lubGluZUNvZGU+e2AgbWV0aG9kIHJldHVybnMgYSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BzbG90SW5mb2B9PC9pbmxpbmVDb2RlPntgIG9iamVjdCwgY29udGFpbmluZyBhIGxvdCBvZiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHlvdXIgc2VsZWN0aW9uLmB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tb24tc2VsZWN0LXNsb3RcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vb25TZWxlY3RTbG90Lm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5mdW5jdGlvbiBidWlsZE1lc3NhZ2Uoc2xvdEluZm8pIHtcXG4gIHJldHVybiBgW29uU2VsZWN0U2xvdF0gYSBkYXRlIHNlbGVjdGlvbiB3YXMgbWFkZSwgcGFzc2luZyAnc2xvdEluZm8nXFxuICAke0pTT04uc3RyaW5naWZ5KHNsb3RJbmZvLCBudWxsLCAyKX1gXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBPblNlbGVjdFNsb3QoKSB7XFxuICBjb25zdCBjbGlja1JlZiA9IHVzZVJlZihudWxsKVxcblxcbiAgdXNlRWZmZWN0KCgpID0+IHtcXG4gICAgLyoqXFxuICAgICAqIFdoYXQgSXMgVGhpcz9cXG4gICAgICogVGhpcyBpcyB0byBwcmV2ZW50IGEgbWVtb3J5IGxlYWssIGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgeW91XFxuICAgICAqIHRlYXJkb3duIHlvdXIgaW50ZXJmYWNlIHByaW9yIHRvIHRoZSB0aW1lZCBtZXRob2QgYmVpbmcgY2FsbGVkLlxcbiAgICAgKi9cXG4gICAgcmV0dXJuICgpID0+IHtcXG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICB9XFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uU2VsZWN0U2xvdCA9IHVzZUNhbGxiYWNrKChzbG90SW5mbykgPT4ge1xcbiAgICAvKipcXG4gICAgICogSGVyZSB3ZSBhcmUgd2FpdGluZyAyNTAgbWlsbGlzZWNvbmRzICh1c2Ugd2hhdCB5b3Ugd2FudCkgcHJpb3IgdG8gZmlyaW5nXFxuICAgICAqIG91ciBtZXRob2QuIFdoeT8gQmVjYXVzZSBib3RoICdjbGljaycgYW5kICdkb3VibGVDbGljaydcXG4gICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcXG4gICAgICogdGhpcywgdGhlICdjbGljaycgaGFuZGxlciBpcyBvdmVycmlkZGVuIGJ5IHRoZSAnZG91YmxlQ2xpY2snXFxuICAgICAqIGFjdGlvbi5cXG4gICAgICovXFxuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIGNsaWNrUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShzbG90SW5mbykpXFxuICAgIH0sIDI1MClcXG4gIH0sIFtdKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25TZWxlY3RTbG90PXtvblNlbGVjdFNsb3R9XFxuICAgICAgICBzZWxlY3RhYmxlXFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbk9uU2VsZWN0U2xvdC5zdG9yeU5hbWUgPSAnb25TZWxlY3RTbG90J1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPblNlbGVjdFNsb3RcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MjR9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo2NX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjI0fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjY1fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9vblNlbGVjdFNsb3QubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5mdW5jdGlvbiBidWlsZE1lc3NhZ2Uoc2xvdEluZm8pIHtcbiAgcmV0dXJuIGBbb25TZWxlY3RTbG90XSBhIGRhdGUgc2VsZWN0aW9uIHdhcyBtYWRlLCBwYXNzaW5nICdzbG90SW5mbydcbiAgJHtKU09OLnN0cmluZ2lmeShzbG90SW5mbywgbnVsbCwgMil9YFxufVxuXG5leHBvcnQgY29uc3QgT25TZWxlY3RTbG90ID0gZnVuY3Rpb24gT25TZWxlY3RTbG90KCkge1xuICBjb25zdCBjbGlja1JlZiA9IHVzZVJlZihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLyoqXG4gICAgICogV2hhdCBJcyBUaGlzP1xuICAgICAqIFRoaXMgaXMgdG8gcHJldmVudCBhIG1lbW9yeSBsZWFrLCBpbiB0aGUgb2ZmIGNoYW5jZSB0aGF0IHlvdVxuICAgICAqIHRlYXJkb3duIHlvdXIgaW50ZXJmYWNlIHByaW9yIHRvIHRoZSB0aW1lZCBtZXRob2QgYmVpbmcgY2FsbGVkLlxuICAgICAqL1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3Qgb25TZWxlY3RTbG90ID0gdXNlQ2FsbGJhY2soKHNsb3RJbmZvKSA9PiB7XG4gICAgLyoqXG4gICAgICogSGVyZSB3ZSBhcmUgd2FpdGluZyAyNTAgbWlsbGlzZWNvbmRzICh1c2Ugd2hhdCB5b3Ugd2FudCkgcHJpb3IgdG8gZmlyaW5nXG4gICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xuICAgICAqIHdvdWxkIGZpcmUsIGluIHRoZSBldmVudCBvZiBhICdkb3VibGVDbGljaycuIEJ5IGRvaW5nXG4gICAgICogdGhpcywgdGhlICdjbGljaycgaGFuZGxlciBpcyBvdmVycmlkZGVuIGJ5IHRoZSAnZG91YmxlQ2xpY2snXG4gICAgICogYWN0aW9uLlxuICAgICAqL1xuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHdpbmRvdy5hbGVydChidWlsZE1lc3NhZ2Uoc2xvdEluZm8pKVxuICAgIH0sIDI1MClcbiAgfSwgW10pXG5cbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgICAgb25TZWxlY3RTbG90PXtvblNlbGVjdFNsb3R9XG4gICAgICAgIHNlbGVjdGFibGVcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07T25TZWxlY3RTbG90LnN0b3J5TmFtZSA9ICdvblNlbGVjdFNsb3QnXG5cblxuXG5PblNlbGVjdFNsb3QucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIE9uU2VsZWN0U2xvdCgpIHtcXG4gIGNvbnN0IGNsaWNrUmVmID0gdXNlUmVmKG51bGwpXFxuXFxuICB1c2VFZmZlY3QoKCkgPT4ge1xcbiAgICAvKipcXG4gICAgICogV2hhdCBJcyBUaGlzP1xcbiAgICAgKiBUaGlzIGlzIHRvIHByZXZlbnQgYSBtZW1vcnkgbGVhaywgaW4gdGhlIG9mZiBjaGFuY2UgdGhhdCB5b3VcXG4gICAgICogdGVhcmRvd24geW91ciBpbnRlcmZhY2UgcHJpb3IgdG8gdGhlIHRpbWVkIG1ldGhvZCBiZWluZyBjYWxsZWQuXFxuICAgICAqL1xcbiAgICByZXR1cm4gKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIH1cXG4gIH0sIFtdKVxcblxcbiAgY29uc3Qgb25TZWxlY3RTbG90ID0gdXNlQ2FsbGJhY2soKHNsb3RJbmZvKSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgKHVzZSB3aGF0IHlvdSB3YW50KSBwcmlvciB0byBmaXJpbmdcXG4gICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgKiB3b3VsZCBmaXJlLCBpbiB0aGUgZXZlbnQgb2YgYSAnZG91YmxlQ2xpY2snLiBCeSBkb2luZ1xcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcXG4gICAgICogYWN0aW9uLlxcbiAgICAgKi9cXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKHNsb3RJbmZvKSlcXG4gICAgfSwgMjUwKVxcbiAgfSwgW10pXFxuXFxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMSksIFtdKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBvblNlbGVjdFNsb3Q9e29uU2VsZWN0U2xvdH1cXG4gICAgICAgIHNlbGVjdGFibGVcXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uT25TZWxlY3RTbG90LnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbnNlbGVjdGluZ1wiXG4gICAgfX0+e2BvblNlbGVjdGluZ2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgKHJhbmdlOiBPYmplY3QgeyBzdGFydDogRGF0ZSwgZW5kOiBEYXRlLCByZXNvdXJjZUlkOiBudWxsfHN0cmluZ3xudW1iZXIgfSkgPT4gP2Jvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgcmVxdWlyZXM6IGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNlbGVjdGFibGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BzZWxlY3RhYmxlYH08L0xpbmtUbz48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BDYWxsYmFjayBmaXJlZCB3aGVuIGRyYWdnaW5nIGEgc2VsZWN0aW9uIGluIHRoZSBUaW1lIHZpZXdzLiBPbmx5IGZpcmVzIHdoZW4gYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic2VsZWN0YWJsZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YHNlbGVjdGFibGVgfTwvTGlua1RvPntgIGlzIHRydWUuYH08L3A+XG4gICAgPHA+e2BSZXR1cm5pbmcgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZmFsc2VgfTwvaW5saW5lQ29kZT57YCBmcm9tIHRoZSBoYW5kbGVyIHdpbGwgcHJldmVudCBhIHNlbGVjdGlvbi5gfTwvcD5cbiAgICA8aDIgey4uLntcbiAgICAgIFwiaWRcIjogXCJ3aGF0cy10aGUtZGlmZmVyZW5jZVwiXG4gICAgfX0+e2BXaGF0J3MgVGhlIERpZmZlcmVuY2U/YH08L2gyPlxuICAgIDxwPntgSG93IGlzIHRoaXMgZGlmZmVyZW50IGZyb20gYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwib24tc2VsZWN0LXNsb3RcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvblNlbGVjdFNsb3RgfTwvTGlua1RvPntgPyBUaGF0IGlzIGEgdmVyeSBnb29kIHF1ZXN0aW9uLiBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25TZWxlY3RpbmdgfTwvaW5saW5lQ29kZT57YCBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgaW4gdGhlIFRpbWUgdmlld3MgKGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHdlZWtgfTwvaW5saW5lQ29kZT57YCwgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgd29yayB3ZWVrYH08L2lubGluZUNvZGU+e2AsIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGRheWB9PC9pbmxpbmVDb2RlPntgKSwgd2hlcmVhcyBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvblNlbGVjdFNsb3RgfTwvaW5saW5lQ29kZT57YCBpcyBhbHNvIGF2YWlsYWJsZSBpbiB0aGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbW9udGhgfTwvaW5saW5lQ29kZT57YCB2aWV3LiBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25TZWxlY3RpbmdgfTwvaW5saW5lQ29kZT57YCBtZXRob2QgYWxsb3dzIHlvdSB0byAnY2FuY2VsJyB5b3VyIHNlbGVjdGlvbiBieSByZXR1cm5pbmcgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZmFsc2VgfTwvaW5saW5lQ29kZT57YC4gVGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uU2VsZWN0U2xvdGB9PC9pbmxpbmVDb2RlPntgIG1ldGhvZCByZXR1cm5zIGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgc2xvdEluZm9gfTwvaW5saW5lQ29kZT57YCBvYmplY3QsIGNvbnRhaW5pbmcgYSBsb3Qgb2YgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIHNlbGVjdGlvbi5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLW9uLXNlbGVjdGluZ1wiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vb25TZWxlY3RpbmcubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmZ1bmN0aW9uIGJ1aWxkTWVzc2FnZShyYW5nZSwgZXZlbnROYW1lKSB7XFxuICByZXR1cm4gYFske2V2ZW50TmFtZX1dIGEgZGF0ZSByYW5nZSBzZWxlY3Rpb24gd2FzIG1hZGUsIHBhc3Npbmc6XFxuICAke0pTT04uc3RyaW5naWZ5KHJhbmdlLCBudWxsLCAyKX1gXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBPblNlbGVjdGluZygpIHtcXG4gIGNvbnN0IGNsaWNrUmVmID0gdXNlUmVmKG51bGwpXFxuXFxuICB1c2VFZmZlY3QoKCkgPT4ge1xcbiAgICAvKipcXG4gICAgICogV2hhdCBJcyBUaGlzP1xcbiAgICAgKiBUaGlzIGlzIHRvIHByZXZlbnQgYSBtZW1vcnkgbGVhaywgaW4gdGhlIG9mZiBjaGFuY2UgdGhhdCB5b3VcXG4gICAgICogdGVhcmRvd24geW91ciBpbnRlcmZhY2UgcHJpb3IgdG8gdGhlIHRpbWVkIG1ldGhvZCBiZWluZyBjYWxsZWQuXFxuICAgICAqL1xcbiAgICByZXR1cm4gKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIH1cXG4gIH0sIFtdKVxcblxcbiAgY29uc3Qgb25TZWxlY3RTbG90ID0gdXNlQ2FsbGJhY2soKHNsb3RJbmZvKSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgKHVzZSB3aGF0IHlvdSB3YW50KSBwcmlvciB0byBmaXJpbmdcXG4gICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgKiB3b3VsZCBmaXJlLCBpbiB0aGUgZXZlbnQgb2YgYSAnZG91YmxlQ2xpY2snLiBCeSBkb2luZ1xcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcXG4gICAgICogYWN0aW9uLlxcbiAgICAgKi9cXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKHNsb3RJbmZvLCAnb25TZWxlY3RTbG90JykpXFxuICAgIH0sIDI1MClcXG4gIH0sIFtdKVxcblxcbiAgY29uc3Qgb25TZWxlY3RpbmcgPSB1c2VDYWxsYmFjaygocmFuZ2UpID0+IHtcXG4gICAgLyoqXFxuICAgICAqIEhlcmUgd2UgYXJlIHdhaXRpbmcgMjUwIG1pbGxpc2Vjb25kcyAodXNlIHdoYXQgeW91IHdhbnQpIHByaW9yIHRvIGZpcmluZ1xcbiAgICAgKiBvdXIgbWV0aG9kLiBXaHk/IEJlY2F1c2UgYm90aCAnY2xpY2snIGFuZCAnZG91YmxlQ2xpY2snXFxuICAgICAqIHdvdWxkIGZpcmUsIGluIHRoZSBldmVudCBvZiBhICdkb3VibGVDbGljaycuIEJ5IGRvaW5nXFxuICAgICAqIHRoaXMsIHRoZSAnY2xpY2snIGhhbmRsZXIgaXMgb3ZlcnJpZGRlbiBieSB0aGUgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgKiBhY3Rpb24uXFxuICAgICAqL1xcbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5hbGVydChidWlsZE1lc3NhZ2UocmFuZ2UsICdvblNlbGVjdGluZycpKVxcbiAgICB9LCAyNTApXFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25TZWxlY3Rpbmc9e29uU2VsZWN0aW5nfVxcbiAgICAgICAgb25TZWxlY3RTbG90PXtvblNlbGVjdFNsb3R9XFxuICAgICAgICBzZWxlY3RhYmxlXFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbk9uU2VsZWN0aW5nLnN0b3J5TmFtZSA9ICdvblNlbGVjdGluZydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiT25TZWxlY3RpbmdcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MjR9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo4MX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjI0fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjgxfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vb25TZWxlY3RpbmcubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5mdW5jdGlvbiBidWlsZE1lc3NhZ2UocmFuZ2UsIGV2ZW50TmFtZSkge1xuICByZXR1cm4gYFske2V2ZW50TmFtZX1dIGEgZGF0ZSByYW5nZSBzZWxlY3Rpb24gd2FzIG1hZGUsIHBhc3Npbmc6XG4gICR7SlNPTi5zdHJpbmdpZnkocmFuZ2UsIG51bGwsIDIpfWBcbn1cblxuZXhwb3J0IGNvbnN0IE9uU2VsZWN0aW5nID0gZnVuY3Rpb24gT25TZWxlY3RpbmcoKSB7XG4gIGNvbnN0IGNsaWNrUmVmID0gdXNlUmVmKG51bGwpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvKipcbiAgICAgKiBXaGF0IElzIFRoaXM/XG4gICAgICogVGhpcyBpcyB0byBwcmV2ZW50IGEgbWVtb3J5IGxlYWssIGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgeW91XG4gICAgICogdGVhcmRvd24geW91ciBpbnRlcmZhY2UgcHJpb3IgdG8gdGhlIHRpbWVkIG1ldGhvZCBiZWluZyBjYWxsZWQuXG4gICAgICovXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBvblNlbGVjdFNsb3QgPSB1c2VDYWxsYmFjaygoc2xvdEluZm8pID0+IHtcbiAgICAvKipcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgKHVzZSB3aGF0IHlvdSB3YW50KSBwcmlvciB0byBmaXJpbmdcbiAgICAgKiBvdXIgbWV0aG9kLiBXaHk/IEJlY2F1c2UgYm90aCAnY2xpY2snIGFuZCAnZG91YmxlQ2xpY2snXG4gICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcbiAgICAgKiBhY3Rpb24uXG4gICAgICovXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShzbG90SW5mbywgJ29uU2VsZWN0U2xvdCcpKVxuICAgIH0sIDI1MClcbiAgfSwgW10pXG5cbiAgY29uc3Qgb25TZWxlY3RpbmcgPSB1c2VDYWxsYmFjaygocmFuZ2UpID0+IHtcbiAgICAvKipcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgKHVzZSB3aGF0IHlvdSB3YW50KSBwcmlvciB0byBmaXJpbmdcbiAgICAgKiBvdXIgbWV0aG9kLiBXaHk/IEJlY2F1c2UgYm90aCAnY2xpY2snIGFuZCAnZG91YmxlQ2xpY2snXG4gICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcbiAgICAgKiBhY3Rpb24uXG4gICAgICovXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShyYW5nZSwgJ29uU2VsZWN0aW5nJykpXG4gICAgfSwgMjUwKVxuICB9LCBbXSlcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMSksIFtdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgICAgb25TZWxlY3Rpbmc9e29uU2VsZWN0aW5nfVxuICAgICAgICBvblNlbGVjdFNsb3Q9e29uU2VsZWN0U2xvdH1cbiAgICAgICAgc2VsZWN0YWJsZVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtPblNlbGVjdGluZy5zdG9yeU5hbWUgPSAnb25TZWxlY3RpbmcnXG5cblxuXG5PblNlbGVjdGluZy5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gT25TZWxlY3RpbmcoKSB7XFxuICBjb25zdCBjbGlja1JlZiA9IHVzZVJlZihudWxsKVxcblxcbiAgdXNlRWZmZWN0KCgpID0+IHtcXG4gICAgLyoqXFxuICAgICAqIFdoYXQgSXMgVGhpcz9cXG4gICAgICogVGhpcyBpcyB0byBwcmV2ZW50IGEgbWVtb3J5IGxlYWssIGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgeW91XFxuICAgICAqIHRlYXJkb3duIHlvdXIgaW50ZXJmYWNlIHByaW9yIHRvIHRoZSB0aW1lZCBtZXRob2QgYmVpbmcgY2FsbGVkLlxcbiAgICAgKi9cXG4gICAgcmV0dXJuICgpID0+IHtcXG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICB9XFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uU2VsZWN0U2xvdCA9IHVzZUNhbGxiYWNrKChzbG90SW5mbykgPT4ge1xcbiAgICAvKipcXG4gICAgICogSGVyZSB3ZSBhcmUgd2FpdGluZyAyNTAgbWlsbGlzZWNvbmRzICh1c2Ugd2hhdCB5b3Ugd2FudCkgcHJpb3IgdG8gZmlyaW5nXFxuICAgICAqIG91ciBtZXRob2QuIFdoeT8gQmVjYXVzZSBib3RoICdjbGljaycgYW5kICdkb3VibGVDbGljaydcXG4gICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcXG4gICAgICogdGhpcywgdGhlICdjbGljaycgaGFuZGxlciBpcyBvdmVycmlkZGVuIGJ5IHRoZSAnZG91YmxlQ2xpY2snXFxuICAgICAqIGFjdGlvbi5cXG4gICAgICovXFxuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIGNsaWNrUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShzbG90SW5mbywgJ29uU2VsZWN0U2xvdCcpKVxcbiAgICB9LCAyNTApXFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uU2VsZWN0aW5nID0gdXNlQ2FsbGJhY2soKHJhbmdlKSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgKHVzZSB3aGF0IHlvdSB3YW50KSBwcmlvciB0byBmaXJpbmdcXG4gICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgKiB3b3VsZCBmaXJlLCBpbiB0aGUgZXZlbnQgb2YgYSAnZG91YmxlQ2xpY2snLiBCeSBkb2luZ1xcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcXG4gICAgICogYWN0aW9uLlxcbiAgICAgKi9cXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKHJhbmdlLCAnb25TZWxlY3RpbmcnKSlcXG4gICAgfSwgMjUwKVxcbiAgfSwgW10pXFxuXFxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMSksIFtdKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uU2VsZWN0aW5nPXtvblNlbGVjdGluZ31cXG4gICAgICAgIG9uU2VsZWN0U2xvdD17b25TZWxlY3RTbG90fVxcbiAgICAgICAgc2VsZWN0YWJsZVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5PblNlbGVjdGluZy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwib25zaG93bW9yZVwiXG4gICAgfX0+e2BvblNob3dNb3JlYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZXZlbnRzOiBBcnJheVtldmVudDogT2JqZWN0XSwgZGF0ZTogRGF0ZSkgPT4gYW55YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ2FsbGJhY2sgZmlyZWQgd2hlbiBhICt7Y291bnR9IG1vcmUgaXMgY2xpY2tlZC4gUmVjZWl2ZXMgYH08c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BhbGxgfTwvc3Ryb25nPntgIG9mIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BldmVudHNgfTwvaW5saW5lQ29kZT57YCBmb3IgdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGRhdGVgfTwvaW5saW5lQ29kZT57YCBvbiB3aGljaCBpdCB3YXMgc2VsZWN0ZWQuYH08L3A+XG4gICAgey8qIFJlcXVpcmVkIHdoZW4gdXNpbmcgdGhlIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJkby1zaG93LW1vcmUtZHJpbGwtZG93blwiPmRvU2hvd01vcmVEcmlsbERvd248L0xpbmtUbz4gcHJvcHMgYXMgYGZhbHNlYC4gKi99XG4gICAgPENhbnZhcyBtZHhUeXBlPVwiQ2FudmFzXCI+XG4gIDxTdG9yeSBpZD1cInByb3BzLS1vbi1zaG93LW1vcmVcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9vblNob3dNb3JlLm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5mdW5jdGlvbiBidWlsZE1lc3NhZ2UoY2FsRXZlbnRzLCBkYXRlKSB7XFxuICByZXR1cm4gYFtvblNob3dNb3JlXSByZWNlaXZlZCAke1xcbiAgICBjYWxFdmVudHMubGVuZ3RoXFxuICB9IGZvciAke2RhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCl9YFxcbn1cXG5cXG5leHBvcnQgZnVuY3Rpb24gT25TaG93TW9yZSgpIHtcXG4gIGNvbnN0IG9uU2hvd01vcmUgPSB1c2VDYWxsYmFjayhcXG4gICAgKGV2ZW50cywgZGF0ZSkgPT4gd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShldmVudHMsIGRhdGUpKSxcXG4gICAgW11cXG4gIClcXG5cXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uU2hvd01vcmU9e29uU2hvd01vcmV9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbk9uU2hvd01vcmUuc3RvcnlOYW1lID0gJ29uU2hvd01vcmUnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIk9uU2hvd01vcmVcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MjV9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo0M30sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjI1fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQzfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL29uU2hvd01vcmUubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5mdW5jdGlvbiBidWlsZE1lc3NhZ2UoY2FsRXZlbnRzLCBkYXRlKSB7XG4gIHJldHVybiBgW29uU2hvd01vcmVdIHJlY2VpdmVkICR7XG4gICAgY2FsRXZlbnRzLmxlbmd0aFxuICB9IGZvciAke2RhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCl9YFxufVxuXG5leHBvcnQgY29uc3QgT25TaG93TW9yZSA9IGZ1bmN0aW9uIE9uU2hvd01vcmUoKSB7XG4gIGNvbnN0IG9uU2hvd01vcmUgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnRzLCBkYXRlKSA9PiB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKGV2ZW50cywgZGF0ZSkpLFxuICAgIFtdXG4gIClcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMSksIFtdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICBvblNob3dNb3JlPXtvblNob3dNb3JlfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtPblNob3dNb3JlLnN0b3J5TmFtZSA9ICdvblNob3dNb3JlJ1xuXG5cblxuT25TaG93TW9yZS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gT25TaG93TW9yZSgpIHtcXG4gIGNvbnN0IG9uU2hvd01vcmUgPSB1c2VDYWxsYmFjayhcXG4gICAgKGV2ZW50cywgZGF0ZSkgPT4gd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShldmVudHMsIGRhdGUpKSxcXG4gICAgW11cXG4gIClcXG5cXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uU2hvd01vcmU9e29uU2hvd01vcmV9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLk9uU2hvd01vcmUucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9udmlld1wiXG4gICAgfX0+e2BvblZpZXdgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogJ2Z1bmN0aW9uJ2B9PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGNvbnRyb2xzOiBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJ2aWV3XCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgdmlld2B9PC9MaW5rVG8+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGV4YW1wbGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2AobmV3VmlldykgPT4gc2V0VmlldyhuZXdWaWV3KWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHZpZXdgfTwvaW5saW5lQ29kZT57YCB2YWx1ZSBjaGFuZ2VzLiBXaGVuIGluY2x1ZGVkIGl0IGlzIHVzZWQgdG8gJ2NvbnRyb2wnIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJ2aWV3XCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgdmlld2B9PC9MaW5rVG8+e2AgcHJvcCB2YWx1ZS5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLW9uLXZpZXdcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL29uVmlldy5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIE9uVmlldygpIHtcXG4gIGNvbnN0IFtkYXRlLCBzZXREYXRlXSA9IHVzZVN0YXRlKG5ldyBEYXRlKDIwMTUsIDMsIDEpKVxcbiAgY29uc3QgW3ZpZXcsIHNldFZpZXddID0gdXNlU3RhdGUoVmlld3MuV0VFSylcXG5cXG4gIGNvbnN0IG9uTmF2aWdhdGUgPSB1c2VDYWxsYmFjaygobmV3RGF0ZSkgPT4gc2V0RGF0ZShuZXdEYXRlKSwgW3NldERhdGVdKVxcbiAgY29uc3Qgb25WaWV3ID0gdXNlQ2FsbGJhY2soKG5ld1ZpZXcpID0+IHNldFZpZXcobmV3VmlldyksIFtzZXRWaWV3XSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGF0ZT17ZGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XFxuICAgICAgICBvblZpZXc9e29uVmlld31cXG4gICAgICAgIHZpZXc9e3ZpZXd9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbk9uVmlldy5zdG9yeU5hbWUgPSAnb25WaWV3J1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPblZpZXdcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozOH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM4fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vb25WaWV3Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IE9uVmlldyA9IGZ1bmN0aW9uIE9uVmlldygpIHtcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMSkpXG4gIGNvbnN0IFt2aWV3LCBzZXRWaWV3XSA9IHVzZVN0YXRlKFZpZXdzLldFRUspXG5cbiAgY29uc3Qgb25OYXZpZ2F0ZSA9IHVzZUNhbGxiYWNrKChuZXdEYXRlKSA9PiBzZXREYXRlKG5ld0RhdGUpLCBbc2V0RGF0ZV0pXG4gIGNvbnN0IG9uVmlldyA9IHVzZUNhbGxiYWNrKChuZXdWaWV3KSA9PiBzZXRWaWV3KG5ld1ZpZXcpLCBbc2V0Vmlld10pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRhdGU9e2RhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICBvbk5hdmlnYXRlPXtvbk5hdmlnYXRlfVxuICAgICAgICBvblZpZXc9e29uVmlld31cbiAgICAgICAgdmlldz17dmlld31cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07T25WaWV3LnN0b3J5TmFtZSA9ICdvblZpZXcnXG5cblxuXG5PblZpZXcucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIE9uVmlldygpIHtcXG4gIGNvbnN0IFtkYXRlLCBzZXREYXRlXSA9IHVzZVN0YXRlKG5ldyBEYXRlKDIwMTUsIDMsIDEpKVxcbiAgY29uc3QgW3ZpZXcsIHNldFZpZXddID0gdXNlU3RhdGUoVmlld3MuV0VFSylcXG5cXG4gIGNvbnN0IG9uTmF2aWdhdGUgPSB1c2VDYWxsYmFjaygobmV3RGF0ZSkgPT4gc2V0RGF0ZShuZXdEYXRlKSwgW3NldERhdGVdKVxcbiAgY29uc3Qgb25WaWV3ID0gdXNlQ2FsbGJhY2soKG5ld1ZpZXcpID0+IHNldFZpZXcobmV3VmlldyksIFtzZXRWaWV3XSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGF0ZT17ZGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XFxuICAgICAgICBvblZpZXc9e29uVmlld31cXG4gICAgICAgIHZpZXc9e3ZpZXd9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLk9uVmlldy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwicG9wdXBcIlxuICAgIH19PntgcG9wdXBgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHRydWVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BTaG93IHRydW5jYXRlZCBldmVudHMgaW4gYW4gb3ZlcmxheSB3aGVuIHlvdSBjbGljayB0aGUgXCIrYH08ZW0gcGFyZW50TmFtZT1cInBcIj57YHhgfTwvZW0+e2AgbW9yZVwiIGxpbmsuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLXBvcHVwXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3BvcHVwLm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHREYXRlOiB7XFxuICAgICAgY29udHJvbDoge1xcbiAgICAgICAgdHlwZTogbnVsbCxcXG4gICAgICB9LFxcbiAgICB9LFxcbiAgICBwb3B1cDogJ2Jvb2xlYW4nLFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IFBvcHVwID0gVGVtcGxhdGUuYmluZCh7fSlcXG5Qb3B1cC5zdG9yeU5hbWUgPSAncG9wdXAnXFxuUG9wdXAuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxuICBwb3B1cDogdHJ1ZSxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIlBvcHVwXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMzfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMzfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9wb3B1cC5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcG9wdXA6ICdib29sZWFuJyxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IFBvcHVwID0gVGVtcGxhdGUuYmluZCh7fSk7UG9wdXAuc3RvcnlOYW1lID0gJ3BvcHVwJ1xuUG9wdXAuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG4gIHBvcHVwOiB0cnVlLFxufVxuXG5cblxuUG9wdXAucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVwiIH0sIC4uLlBvcHVwLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJwb3B1cG9mZnNldFwiXG4gICAgfX0+e2Bwb3B1cE9mZnNldGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbnVtYmVyfHNoYXBlIHt4OiBudW1iZXIsIHk6IG51bWJlcn1gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BEaXN0YW5jZSBpbiBwaXhlbHMsIGZyb20gdGhlIGVkZ2VzIG9mIHRoZSB2aWV3cG9ydCwgdGhlIFwic2hvdyBtb3JlXCIgb3ZlcmxheSBzaG91bGQgYmUgcG9zaXRpb25lZC5gfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tcG9wdXAtb2Zmc2V0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3BvcHVwT2Zmc2V0Lm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHREYXRlOiB7XFxuICAgICAgY29udHJvbDoge1xcbiAgICAgICAgdHlwZTogbnVsbCxcXG4gICAgICB9LFxcbiAgICB9LFxcbiAgICBwb3B1cDogJ2Jvb2xlYW4nLFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IFBvcHVwT2Zmc2V0ID0gVGVtcGxhdGUuYmluZCh7fSlcXG5Qb3B1cE9mZnNldC5zdG9yeU5hbWUgPSAncG9wdXBPZmZzZXQnXFxuUG9wdXBPZmZzZXQuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxuICBwb3B1cDogdHJ1ZSxcXG4gIHBvcHVwT2Zmc2V0OiB7IHg6IDMwLCB5OiAyMCB9LFxcbn1cXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiUG9wdXBPZmZzZXRcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjI5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MzN9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6Mjl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MzN9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL3BvcHVwT2Zmc2V0Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBwb3B1cDogJ2Jvb2xlYW4nLFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgUG9wdXBPZmZzZXQgPSBUZW1wbGF0ZS5iaW5kKHt9KTtQb3B1cE9mZnNldC5zdG9yeU5hbWUgPSAncG9wdXBPZmZzZXQnXG5Qb3B1cE9mZnNldC5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxuICBldmVudHM6IGRlbW9FdmVudHMsXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcbiAgcG9wdXA6IHRydWUsXG4gIHBvcHVwT2Zmc2V0OiB7IHg6IDMwLCB5OiAyMCB9LFxufVxuXG5cblxuUG9wdXBPZmZzZXQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVwiIH0sIC4uLlBvcHVwT2Zmc2V0LnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJyZXNvdXJjZWlkYWNjZXNzb3JcIlxuICAgIH19PntgcmVzb3VyY2VJZEFjY2Vzc29yYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmcgfCBmdW5jdGlvbiAocmVzb3VyY2U6IE9iamVjdCkgPT4gc3RyaW5nIHwgbnVtYmVyIC8vIG11c3QgYmUgdW5pcXVlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgUHJvdmlkZXMgYSB1bmlxdWUgaWRlbnRpZmllciwgb3IgYW4gYXJyYXkgb2YgdW5pcXVlIGlkZW50aWZpZXJzLCBmb3IgZWFjaCByZXNvdXJjZSBpbiB0aGUgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwicmVzb3VyY2VzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgcmVzb3VyY2VzYH08L0xpbmtUbz57YCBhcnJheWB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS1yZXNvdXJjZS1pZC1hY2Nlc3NvclwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IHsgcmVzb3VyY2VBY2Nlc3NvclN0b3J5QXJncyB9IGZyb20gJy4vc3RvcnlEZWZhdWx0cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vcmVzb3VyY2VJZEFjY2Vzc29yLm1keCdcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHREYXRlOiB7XFxuICAgICAgY29udHJvbDoge1xcbiAgICAgICAgdHlwZTogbnVsbCxcXG4gICAgICB9LFxcbiAgICB9LFxcbiAgICBkZWZhdWx0Vmlldzoge1xcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6IG51bGwsXFxuICAgICAgfSxcXG4gICAgfSxcXG4gIH0sXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVxcblxcbmV4cG9ydCBjb25zdCBSZXNvdXJjZUlkQWNjZXNzb3IgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcblJlc291cmNlSWRBY2Nlc3Nvci5zdG9yeU5hbWUgPSAncmVzb3VyY2VJZEFjY2Vzc29yJ1xcblJlc291cmNlSWRBY2Nlc3Nvci5hcmdzID0gcmVzb3VyY2VBY2Nlc3NvclN0b3J5QXJnc1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJSZXNvdXJjZUlkQWNjZXNzb3JcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MzR9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzB9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MzR9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCB7IHJlc291cmNlQWNjZXNzb3JTdG9yeUFyZ3MgfSBmcm9tICcuL3N0b3J5RGVmYXVsdHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vcmVzb3VyY2VJZEFjY2Vzc29yLm1keCdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgYXJnVHlwZXM6IHtcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBkZWZhdWx0RGF0ZToge1xuICAgICAgY29udHJvbDoge1xuICAgICAgICB0eXBlOiBudWxsLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWaWV3OiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cbiAgPC9kaXY+XG4pXG5cbmV4cG9ydCBjb25zdCBSZXNvdXJjZUlkQWNjZXNzb3IgPSBUZW1wbGF0ZS5iaW5kKHt9KTtSZXNvdXJjZUlkQWNjZXNzb3Iuc3RvcnlOYW1lID0gJ3Jlc291cmNlSWRBY2Nlc3NvcidcblJlc291cmNlSWRBY2Nlc3Nvci5hcmdzID0gcmVzb3VyY2VBY2Nlc3NvclN0b3J5QXJnc1xuXG5cblxuUmVzb3VyY2VJZEFjY2Vzc29yLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5SZXNvdXJjZUlkQWNjZXNzb3IucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcInJlc291cmNldGl0bGVhY2Nlc3NvclwiXG4gICAgfX0+e2ByZXNvdXJjZVRpdGxlQWNjZXNzb3JgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0cmluZyB8IGZ1bmN0aW9uIChyZXNvdXJjZTogT2JqZWN0KSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BQcm92aWRlcyBhIGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIHRoZSByZXNvdXJjZSBvYmplY3QsIHVzZWQgaW4gaGVhZGVycy5gfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tcmVzb3VyY2UtdGl0bGUtYWNjZXNzb3JcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCB7IHJlc291cmNlQWNjZXNzb3JTdG9yeUFyZ3MgfSBmcm9tICcuL3N0b3J5RGVmYXVsdHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3Jlc291cmNlVGl0bGVBY2Nlc3Nvci5tZHgnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZToge1xcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6IG51bGwsXFxuICAgICAgfSxcXG4gICAgfSxcXG4gICAgZGVmYXVsdFZpZXc6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgUmVzb3VyY2VUaXRsZUFjY2Vzc29yID0gVGVtcGxhdGUuYmluZCh7fSlcXG5SZXNvdXJjZVRpdGxlQWNjZXNzb3Iuc3RvcnlOYW1lID0gJ3Jlc291cmNlVGl0bGVBY2Nlc3NvcidcXG5SZXNvdXJjZVRpdGxlQWNjZXNzb3IuYXJncyA9IHJlc291cmNlQWNjZXNzb3JTdG9yeUFyZ3NcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiUmVzb3VyY2VUaXRsZUFjY2Vzc29yXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMH0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM0fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM0fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgeyByZXNvdXJjZUFjY2Vzc29yU3RvcnlBcmdzIH0gZnJvbSAnLi9zdG9yeURlZmF1bHRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL3Jlc291cmNlVGl0bGVBY2Nlc3Nvci5tZHgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0Vmlldzoge1xuICAgICAgY29udHJvbDoge1xuICAgICAgICB0eXBlOiBudWxsLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgUmVzb3VyY2VUaXRsZUFjY2Vzc29yID0gVGVtcGxhdGUuYmluZCh7fSk7UmVzb3VyY2VUaXRsZUFjY2Vzc29yLnN0b3J5TmFtZSA9ICdyZXNvdXJjZVRpdGxlQWNjZXNzb3InXG5SZXNvdXJjZVRpdGxlQWNjZXNzb3IuYXJncyA9IHJlc291cmNlQWNjZXNzb3JTdG9yeUFyZ3NcblxuXG5cblJlc291cmNlVGl0bGVBY2Nlc3Nvci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uUmVzb3VyY2VUaXRsZUFjY2Vzc29yLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJyZXNvdXJjZXNcIlxuICAgIH19PntgcmVzb3VyY2VzYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BhcnJheU9mKFJlc291cmNlKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEFuIGFycmF5IG9mIHJlc291cmNlIG9iamVjdHMgdGhhdCBtYXAgZXZlbnRzIHRvIGEgc3BlY2lmaWMgcmVzb3VyY2UuIFJlc291cmNlIG9iamVjdHMsIGxpa2UgZXZlbnRzLCBjYW4gYmUgYW55IHNoYXBlIG9yIGhhdmUgYW55IHByb3BlcnRpZXMsIGJ1dCBzaG91bGQgYmUgdW5pcXVseSBpZGVudGlmaWFibGUgdmlhIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJyZXNvdXJjZS1pZC1hY2Nlc3NvclwiIG1keFR5cGU9XCJMaW5rVG9cIj57YHJlc291cmNlSWRBY2Nlc3NvcmB9PC9MaW5rVG8+e2AsIGFzIHdlbGwgYXMgYSBcInRpdGxlXCIgb3IgbmFtZSBhcyBwcm92aWRlZCBieSB0aGUgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwicmVzb3VyY2UtdGl0bGUtYWNjZXNzb3JcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2ByZXNvdXJjZVRpdGxlQWNjZXNzb3JgfTwvTGlua1RvPntgIHByb3AuYH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YFJlc291cmNlIHtcbiAgaWQ6IHN0cmluZyB8IG51bWJlciwgLy8gbXVzdCBiZSB1bmlxdWVcbiAgdGl0bGU6IHN0cmluZ1xufVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLXJlc291cmNlc1wiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IHJlc291cmNlRGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvcmVzb3VyY2VFdmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3Jlc291cmNlcy5tZHgnXFxuXFxuY29uc3QgeyBldmVudHM6IHJlc291cmNlRXZlbnRzLCBsaXN0OiByZXNvdXJjZXMgfSA9IHJlc291cmNlRGF0YVxcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICAgIGRlZmF1bHRWaWV3OiB7XFxuICAgICAgY29udHJvbDoge1xcbiAgICAgICAgdHlwZTogbnVsbCxcXG4gICAgICB9LFxcbiAgICB9LFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IFJlc291cmNlcyA9IFRlbXBsYXRlLmJpbmQoe30pXFxuUmVzb3VyY2VzLnN0b3J5TmFtZSA9ICdyZXNvdXJjZXMnXFxuUmVzb3VyY2VzLmFyZ3MgPSB7XFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgNCksXFxuICBkZWZhdWx0VmlldzogVmlld3MuREFZLFxcbiAgZXZlbnRzOiByZXNvdXJjZUV2ZW50cyxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG4gIHJlc291cmNlcyxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIlJlc291cmNlc1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzV9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozOX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozNX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozOX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgcmVzb3VyY2VEYXRhIGZyb20gJy4uL3Jlc291cmNlcy9yZXNvdXJjZUV2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9yZXNvdXJjZXMubWR4J1xuXG5jb25zdCB7IGV2ZW50czogcmVzb3VyY2VFdmVudHMsIGxpc3Q6IHJlc291cmNlcyB9ID0gcmVzb3VyY2VEYXRhXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZpZXc6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IFJlc291cmNlcyA9IFRlbXBsYXRlLmJpbmQoe30pO1Jlc291cmNlcy5zdG9yeU5hbWUgPSAncmVzb3VyY2VzJ1xuUmVzb3VyY2VzLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCA0KSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcbiAgZXZlbnRzOiByZXNvdXJjZUV2ZW50cyxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxuICByZXNvdXJjZXMsXG59XG5cblxuXG5SZXNvdXJjZXMucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVwiIH0sIC4uLlJlc291cmNlcy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwicnRsXCJcbiAgICB9fT57YHJ0bGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZmFsc2VgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BTd2l0Y2ggdGhlIGNhbGVuZGFyIHRvIGEgcmlnaHQtdG8tbGVmdCByZWFkIGRpcmVjdGlvbi4gQmVzdCBpZiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggeW91ciBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJsb2NhbGl6ZXJcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2Bsb2NhbGl6ZXJgfTwvTGlua1RvPntgIGFuZCBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJtZXNzYWdlc1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YG1lc3NhZ2VzYH08L0xpbmtUbz57YCBwcm9wcy5gfTwvcD5cbiAgICA8cD57YFNlZSB0aGUgYH08TGlua1RvIGtpbmQ9XCJleGFtcGxlc1wiIHN0b3J5PVwiZXhhbXBsZS01XCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgTG9jYWxpemF0aW9uIEV4YW1wbGVgfTwvTGlua1RvPntgIGZvciBhbm90aGVyIGV4YW1wbGUgb2YgY29tYmluaW5nIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHJ0bGB9PC9pbmxpbmVDb2RlPntgLCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2Bsb2NhbGl6ZXJgfTwvaW5saW5lQ29kZT57YCwgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgY3VsdHVyZWB9PC9pbmxpbmVDb2RlPntgIGFuZCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BtZXNzYWdlc2B9PC9pbmxpbmVDb2RlPntgLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS1yaWdodC10by1sZWZ0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3J0bC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZToge1xcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6IG51bGwsXFxuICAgICAgfSxcXG4gICAgfSxcXG4gICAgcnRsOiAnYm9vbGVhbicsXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuLy8gVE9ETzogbG9jYWxpemUgZXhhbXBsZSBmb3IgQXJhYmljXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgUmlnaHRUb0xlZnQgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcblJpZ2h0VG9MZWZ0LnN0b3J5TmFtZSA9ICdydGwnXFxuUmlnaHRUb0xlZnQuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxuICBydGw6IHRydWUsXFxuICBtZXNzYWdlczoge1xcbiAgICB3ZWVrOiAn2KPYs9io2YjYuScsXFxuICAgIHdvcmtfd2VlazogJ9ij2LPYqNmI2Lkg2KfZhNi52YXZhCcsXFxuICAgIGRheTogJ9mK2YjZhScsXFxuICAgIG1vbnRoOiAn2LTZh9ixJyxcXG4gICAgcHJldmlvdXM6ICfYs9in2KjZgicsXFxuICAgIG5leHQ6ICfYp9mE2KrYp9mE2YonLFxcbiAgICB0b2RheTogJ9in2YTZitmI2YUnLFxcbiAgICBhZ2VuZGE6ICfYrNiv2YjZhCDYo9i52YXYp9mEJyxcXG5cXG4gICAgc2hvd01vcmU6ICh0b3RhbCkgPT4gYCske3RvdGFsfSDYpdi22KfZgdmKYCxcXG4gIH0sXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJSaWdodFRvTGVmdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzB9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozNH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozNH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vcnRsLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBydGw6ICdib29sZWFuJyxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG4vLyBUT0RPOiBsb2NhbGl6ZSBleGFtcGxlIGZvciBBcmFiaWNcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgUmlnaHRUb0xlZnQgPSBUZW1wbGF0ZS5iaW5kKHt9KTtSaWdodFRvTGVmdC5zdG9yeU5hbWUgPSAncnRsJ1xuUmlnaHRUb0xlZnQuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG4gIHJ0bDogdHJ1ZSxcbiAgbWVzc2FnZXM6IHtcbiAgICB3ZWVrOiAn2KPYs9io2YjYuScsXG4gICAgd29ya193ZWVrOiAn2KPYs9io2YjYuSDYp9mE2LnZhdmEJyxcbiAgICBkYXk6ICfZitmI2YUnLFxuICAgIG1vbnRoOiAn2LTZh9ixJyxcbiAgICBwcmV2aW91czogJ9iz2KfYqNmCJyxcbiAgICBuZXh0OiAn2KfZhNiq2KfZhNmKJyxcbiAgICB0b2RheTogJ9in2YTZitmI2YUnLFxuICAgIGFnZW5kYTogJ9is2K/ZiNmEINij2LnZhdin2YQnLFxuXG4gICAgc2hvd01vcmU6ICh0b3RhbCkgPT4gYCske3RvdGFsfSDYpdi22KfZgdmKYCxcbiAgfSxcbn1cblxuXG5cblJpZ2h0VG9MZWZ0LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5SaWdodFRvTGVmdC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwic2Nyb2xsdG90aW1lXCJcbiAgICB9fT57YHNjcm9sbFRvVGltZWB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgaW5zdGFuY2VPZihEYXRlKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbmV3IERhdGUoKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERldGVybWluZXMgaG93IGZhciBkb3duIHRoZSBzY3JvbGwgcGFuZSBpcyBpbml0aWFsbHkgc2Nyb2xsZWQgZG93bi5gfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tc2Nyb2xsLXRvLXRpbWVcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3Njcm9sbFRvVGltZS5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHREYXRlOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHRWaWV3OiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBzY3JvbGxUb1RpbWU6IHsgY29udHJvbDogeyB0eXBlOiAnZGF0ZScgfSB9LFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IFNjcm9sbFRvVGltZSA9IFRlbXBsYXRlLmJpbmQoe30pXFxuU2Nyb2xsVG9UaW1lLnN0b3J5TmFtZSA9ICdzY3JvbGxUb1RpbWUnXFxuU2Nyb2xsVG9UaW1lLmFyZ3MgPSB7XFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxuICBzY3JvbGxUb1RpbWU6IG5ldyBEYXRlKDE5NzIsIDAsIDEsIDIyKSxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIlNjcm9sbFRvVGltZVwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjZ9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNn0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozMH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL3Njcm9sbFRvVGltZS5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdFZpZXc6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBzY3JvbGxUb1RpbWU6IHsgY29udHJvbDogeyB0eXBlOiAnZGF0ZScgfSB9LFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgU2Nyb2xsVG9UaW1lID0gVGVtcGxhdGUuYmluZCh7fSk7U2Nyb2xsVG9UaW1lLnN0b3J5TmFtZSA9ICdzY3JvbGxUb1RpbWUnXG5TY3JvbGxUb1RpbWUuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxuICBzY3JvbGxUb1RpbWU6IG5ldyBEYXRlKDE5NzIsIDAsIDEsIDIyKSxcbn1cblxuXG5cblNjcm9sbFRvVGltZS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uU2Nyb2xsVG9UaW1lLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJzZWxlY3RhYmxlXCJcbiAgICB9fT57YHNlbGVjdGFibGVgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGJvb2xlYW4gfCAnaWdub3JlRXZlbnRzJ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEFsbG93cyBtb3VzZSBzZWxlY3Rpb24gb2YgcmFuZ2VzIG9mIGRhdGVzL3RpbWVzLmB9PC9wPlxuICAgIDxwPntgVGhlICdpZ25vcmVFdmVudHMnIG9wdGlvbiBwcmV2ZW50cyBzZWxlY3Rpb24gY29kZSBmcm9tIHJ1bm5pbmcgd2hlbiBhIGRyYWcgYmVnaW5zIG92ZXIgYW4gZXZlbnQuIFVzZWZ1bCB3aGVuIHlvdSB3YW50IGN1c3RvbSBldmVudCBjbGljayBvciBkcmFnIGxvZ2ljYH08L3A+XG4gICAgPENhbnZhcyBtZHhUeXBlPVwiQ2FudmFzXCI+XG4gIDxTdG9yeSBpZD1cInByb3BzLS1zZWxlY3RhYmxlXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3NlbGVjdGFibGUubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmZ1bmN0aW9uIGJ1aWxkTWVzc2FnZShzbG90SW5mbykge1xcbiAgcmV0dXJuIGBbb25TZWxlY3RTbG90XSBhIGRhdGUgc2VsZWN0aW9uIHdhcyBtYWRlLCBwYXNzaW5nICdzbG90SW5mbydcXG4gICR7SlNPTi5zdHJpbmdpZnkoc2xvdEluZm8sIG51bGwsIDIpfWBcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIFNlbGVjdGFibGUoKSB7XFxuICBjb25zdCBjbGlja1JlZiA9IHVzZVJlZihudWxsKVxcblxcbiAgdXNlRWZmZWN0KCgpID0+IHtcXG4gICAgLyoqXFxuICAgICAqIFdoYXQgSXMgVGhpcz9cXG4gICAgICogVGhpcyBpcyB0byBwcmV2ZW50IGEgbWVtb3J5IGxlYWssIGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgeW91XFxuICAgICAqIHRlYXJkb3duIHlvdXIgaW50ZXJmYWNlIHByaW9yIHRvIHRoZSB0aW1lZCBtZXRob2QgYmVpbmcgY2FsbGVkLlxcbiAgICAgKi9cXG4gICAgcmV0dXJuICgpID0+IHtcXG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICB9XFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uU2VsZWN0U2xvdCA9IHVzZUNhbGxiYWNrKChzbG90SW5mbykgPT4ge1xcbiAgICAvKipcXG4gICAgICogSGVyZSB3ZSBhcmUgd2FpdGluZyAyNTAgbWlsbGlzZWNvbmRzIHByaW9yIHRvIGZpcmluZ1xcbiAgICAgKiBvdXIgbWV0aG9kLiBXaHk/IEJlY2F1c2UgYm90aCAnY2xpY2snIGFuZCAnZG91YmxlQ2xpY2snXFxuICAgICAqIHdvdWxkIGZpcmUsIGluIHRoZSBldmVudCBvZiBhICdkb3VibGVDbGljaycuIEJ5IGRvaW5nXFxuICAgICAqIHRoaXMsIHRoZSAnY2xpY2snIGhhbmRsZXIgaXMgb3ZlcnJpZGRlbiBieSB0aGUgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgKiBhY3Rpb24uXFxuICAgICAqL1xcbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5hbGVydChidWlsZE1lc3NhZ2Uoc2xvdEluZm8pKVxcbiAgICB9LCAyNTApXFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uU2VsZWN0U2xvdD17b25TZWxlY3RTbG90fVxcbiAgICAgICAgc2VsZWN0YWJsZVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5TZWxlY3RhYmxlLnN0b3J5TmFtZSA9ICdzZWxlY3RhYmxlJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJTZWxlY3RhYmxlXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjI0fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NjV9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoyNH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo2NX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vc2VsZWN0YWJsZS5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmZ1bmN0aW9uIGJ1aWxkTWVzc2FnZShzbG90SW5mbykge1xuICByZXR1cm4gYFtvblNlbGVjdFNsb3RdIGEgZGF0ZSBzZWxlY3Rpb24gd2FzIG1hZGUsIHBhc3NpbmcgJ3Nsb3RJbmZvJ1xuICAke0pTT04uc3RyaW5naWZ5KHNsb3RJbmZvLCBudWxsLCAyKX1gXG59XG5cbmV4cG9ydCBjb25zdCBTZWxlY3RhYmxlID0gZnVuY3Rpb24gU2VsZWN0YWJsZSgpIHtcbiAgY29uc3QgY2xpY2tSZWYgPSB1c2VSZWYobnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8qKlxuICAgICAqIFdoYXQgSXMgVGhpcz9cbiAgICAgKiBUaGlzIGlzIHRvIHByZXZlbnQgYSBtZW1vcnkgbGVhaywgaW4gdGhlIG9mZiBjaGFuY2UgdGhhdCB5b3VcbiAgICAgKiB0ZWFyZG93biB5b3VyIGludGVyZmFjZSBwcmlvciB0byB0aGUgdGltZWQgbWV0aG9kIGJlaW5nIGNhbGxlZC5cbiAgICAgKi9cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9uU2VsZWN0U2xvdCA9IHVzZUNhbGxiYWNrKChzbG90SW5mbykgPT4ge1xuICAgIC8qKlxuICAgICAqIEhlcmUgd2UgYXJlIHdhaXRpbmcgMjUwIG1pbGxpc2Vjb25kcyBwcmlvciB0byBmaXJpbmdcbiAgICAgKiBvdXIgbWV0aG9kLiBXaHk/IEJlY2F1c2UgYm90aCAnY2xpY2snIGFuZCAnZG91YmxlQ2xpY2snXG4gICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcbiAgICAgKiBhY3Rpb24uXG4gICAgICovXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShzbG90SW5mbykpXG4gICAgfSwgMjUwKVxuICB9LCBbXSlcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMSksIFtdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICBvblNlbGVjdFNsb3Q9e29uU2VsZWN0U2xvdH1cbiAgICAgICAgc2VsZWN0YWJsZVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtTZWxlY3RhYmxlLnN0b3J5TmFtZSA9ICdzZWxlY3RhYmxlJ1xuXG5cblxuU2VsZWN0YWJsZS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gU2VsZWN0YWJsZSgpIHtcXG4gIGNvbnN0IGNsaWNrUmVmID0gdXNlUmVmKG51bGwpXFxuXFxuICB1c2VFZmZlY3QoKCkgPT4ge1xcbiAgICAvKipcXG4gICAgICogV2hhdCBJcyBUaGlzP1xcbiAgICAgKiBUaGlzIGlzIHRvIHByZXZlbnQgYSBtZW1vcnkgbGVhaywgaW4gdGhlIG9mZiBjaGFuY2UgdGhhdCB5b3VcXG4gICAgICogdGVhcmRvd24geW91ciBpbnRlcmZhY2UgcHJpb3IgdG8gdGhlIHRpbWVkIG1ldGhvZCBiZWluZyBjYWxsZWQuXFxuICAgICAqL1xcbiAgICByZXR1cm4gKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIH1cXG4gIH0sIFtdKVxcblxcbiAgY29uc3Qgb25TZWxlY3RTbG90ID0gdXNlQ2FsbGJhY2soKHNsb3RJbmZvKSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgcHJpb3IgdG8gZmlyaW5nXFxuICAgICAqIG91ciBtZXRob2QuIFdoeT8gQmVjYXVzZSBib3RoICdjbGljaycgYW5kICdkb3VibGVDbGljaydcXG4gICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcXG4gICAgICogdGhpcywgdGhlICdjbGljaycgaGFuZGxlciBpcyBvdmVycmlkZGVuIGJ5IHRoZSAnZG91YmxlQ2xpY2snXFxuICAgICAqIGFjdGlvbi5cXG4gICAgICovXFxuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIGNsaWNrUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShzbG90SW5mbykpXFxuICAgIH0sIDI1MClcXG4gIH0sIFtdKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25TZWxlY3RTbG90PXtvblNlbGVjdFNsb3R9XFxuICAgICAgICBzZWxlY3RhYmxlXFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLlNlbGVjdGFibGUucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcInNlbGVjdGVkXCJcbiAgICB9fT57YHNlbGVjdGVkYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BFdmVudDogT2JqZWN0YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIHNlbGVjdGVkIGV2ZW50LCBpZiBhbnkuIEJ5IGRlZmF1bHQsIEJpZyBDYWxlbmRhciAnY29udHJvbHMnIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BzZWxlY3RlZGB9PC9pbmxpbmVDb2RlPntgIChoaWdobGlnaHRlZCkgZXZlbnQgaW4gdGhlIGRpc3BsYXkuIFlvdSBjYW4gdXNlIHRoaXMgcHJvcCB0byBjb250cm9sIHdoaWNoIGV2ZW50IGlzIGhpZ2hsaWdodGVkLiBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgc2VsZWN0ZWRgfTwvaW5saW5lQ29kZT57YCBldmVudCBtdXN0IGJlIGEgb2JqZWN0IHJlZmVyZW5jZSB0byB0aGUgZXZlbnQgd2l0aGluIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJldmVudHNcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BldmVudHNgfTwvTGlua1RvPntgIGFycmF5LmB9PC9wPlxuICAgIDxwPntgT2Z0ZW4gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLXNlbGVjdC1ldmVudFwiIG1keFR5cGU9XCJMaW5rVG9cIj57YE9uU2VsZWN0RXZlbnRgfTwvTGlua1RvPntgIGFuZC9vciBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1kb3VibGUtY2xpY2stZXZlbnRcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvbkRvdWJsZUNsaWNrRXZlbnRgfTwvTGlua1RvPntgLmB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tc2VsZWN0ZWRcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3NlbGVjdGVkLm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5leHBvcnQgZnVuY3Rpb24gU2VsZWN0ZWQoKSB7XFxuICBjb25zdCBbc2VsZWN0ZWQsIHNldFNlbGVjdGVkXSA9IHVzZVN0YXRlKCgpID0+IHtcXG4gICAgLy8gbGV0J3MgbWFrZSBhbiBpbml0aWFsIHNlbGVjdGlvblxcbiAgICByZXR1cm4gZGVtb0V2ZW50cy5maW5kKFxcbiAgICAgIChldmVudCkgPT4gZXZlbnQudGl0bGUgPT09ICdJdGFld29uIEhhbGxvd2VlbiBNZWV0aW5nJ1xcbiAgICApXFxuICB9KVxcbiAgY29uc3QgY2xpY2tSZWYgPSB1c2VSZWYobnVsbClcXG5cXG4gIHVzZUVmZmVjdCgoKSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBXaGF0IElzIFRoaXM/XFxuICAgICAqIFRoaXMgaXMgdG8gcHJldmVudCBhIG1lbW9yeSBsZWFrLCBpbiB0aGUgb2ZmIGNoYW5jZSB0aGF0IHlvdVxcbiAgICAgKiB0ZWFyZG93biB5b3VyIGludGVyZmFjZSBwcmlvciB0byB0aGUgdGltZWQgbWV0aG9kIGJlaW5nIGNhbGxlZC5cXG4gICAgICovXFxuICAgIHJldHVybiAoKSA9PiB7XFxuICAgICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgfVxcbiAgfSwgW10pXFxuXFxuICBjb25zdCBvblNlbGVjdEV2ZW50ID0gdXNlQ2FsbGJhY2soXFxuICAgIChjYWxFdmVudCkgPT4ge1xcbiAgICAgIC8qKlxcbiAgICAgICAqIEhlcmUgd2UgYXJlIHdhaXRpbmcgMjUwIG1pbGxpc2Vjb25kcyAodXNlIHdoYXQgeW91IHdhbnQpIHByaW9yIHRvIGZpcmluZ1xcbiAgICAgICAqIG91ciBtZXRob2QuIFdoeT8gQmVjYXVzZSBib3RoICdjbGljaycgYW5kICdkb3VibGVDbGljaydcXG4gICAgICAgKiB3b3VsZCBmaXJlLCBpbiB0aGUgZXZlbnQgb2YgYSAnZG91YmxlQ2xpY2snLiBCeSBkb2luZ1xcbiAgICAgICAqIHRoaXMsIHRoZSAnY2xpY2snIGhhbmRsZXIgaXMgb3ZlcnJpZGRlbiBieSB0aGUgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgICAqIGFjdGlvbi5cXG4gICAgICAgKi9cXG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICAgIGNsaWNrUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgICBzZXRTZWxlY3RlZChjYWxFdmVudClcXG4gICAgICB9LCAyNTApXFxuICAgIH0sXFxuICAgIFtzZXRTZWxlY3RlZF1cXG4gIClcXG5cXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uU2VsZWN0RXZlbnQ9e29uU2VsZWN0RXZlbnR9XFxuICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWR9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcblNlbGVjdGVkLnN0b3J5TmFtZSA9ICdzZWxlY3RlZCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiU2VsZWN0ZWRcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo2OX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjY5fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vc2VsZWN0ZWQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgU2VsZWN0ZWQgPSBmdW5jdGlvbiBTZWxlY3RlZCgpIHtcbiAgY29uc3QgW3NlbGVjdGVkLCBzZXRTZWxlY3RlZF0gPSB1c2VTdGF0ZSgoKSA9PiB7XG4gICAgLy8gbGV0J3MgbWFrZSBhbiBpbml0aWFsIHNlbGVjdGlvblxuICAgIHJldHVybiBkZW1vRXZlbnRzLmZpbmQoXG4gICAgICAoZXZlbnQpID0+IGV2ZW50LnRpdGxlID09PSAnSXRhZXdvbiBIYWxsb3dlZW4gTWVldGluZydcbiAgICApXG4gIH0pXG4gIGNvbnN0IGNsaWNrUmVmID0gdXNlUmVmKG51bGwpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvKipcbiAgICAgKiBXaGF0IElzIFRoaXM/XG4gICAgICogVGhpcyBpcyB0byBwcmV2ZW50IGEgbWVtb3J5IGxlYWssIGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgeW91XG4gICAgICogdGVhcmRvd24geW91ciBpbnRlcmZhY2UgcHJpb3IgdG8gdGhlIHRpbWVkIG1ldGhvZCBiZWluZyBjYWxsZWQuXG4gICAgICovXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBvblNlbGVjdEV2ZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKGNhbEV2ZW50KSA9PiB7XG4gICAgICAvKipcbiAgICAgICAqIEhlcmUgd2UgYXJlIHdhaXRpbmcgMjUwIG1pbGxpc2Vjb25kcyAodXNlIHdoYXQgeW91IHdhbnQpIHByaW9yIHRvIGZpcmluZ1xuICAgICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xuICAgICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcbiAgICAgICAqIHRoaXMsIHRoZSAnY2xpY2snIGhhbmRsZXIgaXMgb3ZlcnJpZGRlbiBieSB0aGUgJ2RvdWJsZUNsaWNrJ1xuICAgICAgICogYWN0aW9uLlxuICAgICAgICovXG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxuICAgICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U2VsZWN0ZWQoY2FsRXZlbnQpXG4gICAgICB9LCAyNTApXG4gICAgfSxcbiAgICBbc2V0U2VsZWN0ZWRdXG4gIClcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMSksIFtdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICBvblNlbGVjdEV2ZW50PXtvblNlbGVjdEV2ZW50fVxuICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWR9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O1NlbGVjdGVkLnN0b3J5TmFtZSA9ICdzZWxlY3RlZCdcblxuXG5cblNlbGVjdGVkLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBTZWxlY3RlZCgpIHtcXG4gIGNvbnN0IFtzZWxlY3RlZCwgc2V0U2VsZWN0ZWRdID0gdXNlU3RhdGUoKCkgPT4ge1xcbiAgICAvLyBsZXQncyBtYWtlIGFuIGluaXRpYWwgc2VsZWN0aW9uXFxuICAgIHJldHVybiBkZW1vRXZlbnRzLmZpbmQoXFxuICAgICAgKGV2ZW50KSA9PiBldmVudC50aXRsZSA9PT0gJ0l0YWV3b24gSGFsbG93ZWVuIE1lZXRpbmcnXFxuICAgIClcXG4gIH0pXFxuICBjb25zdCBjbGlja1JlZiA9IHVzZVJlZihudWxsKVxcblxcbiAgdXNlRWZmZWN0KCgpID0+IHtcXG4gICAgLyoqXFxuICAgICAqIFdoYXQgSXMgVGhpcz9cXG4gICAgICogVGhpcyBpcyB0byBwcmV2ZW50IGEgbWVtb3J5IGxlYWssIGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgeW91XFxuICAgICAqIHRlYXJkb3duIHlvdXIgaW50ZXJmYWNlIHByaW9yIHRvIHRoZSB0aW1lZCBtZXRob2QgYmVpbmcgY2FsbGVkLlxcbiAgICAgKi9cXG4gICAgcmV0dXJuICgpID0+IHtcXG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICB9XFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uU2VsZWN0RXZlbnQgPSB1c2VDYWxsYmFjayhcXG4gICAgKGNhbEV2ZW50KSA9PiB7XFxuICAgICAgLyoqXFxuICAgICAgICogSGVyZSB3ZSBhcmUgd2FpdGluZyAyNTAgbWlsbGlzZWNvbmRzICh1c2Ugd2hhdCB5b3Ugd2FudCkgcHJpb3IgdG8gZmlyaW5nXFxuICAgICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgICAqIHdvdWxkIGZpcmUsIGluIHRoZSBldmVudCBvZiBhICdkb3VibGVDbGljaycuIEJ5IGRvaW5nXFxuICAgICAgICogdGhpcywgdGhlICdjbGljaycgaGFuZGxlciBpcyBvdmVycmlkZGVuIGJ5IHRoZSAnZG91YmxlQ2xpY2snXFxuICAgICAgICogYWN0aW9uLlxcbiAgICAgICAqL1xcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICAgIHNldFNlbGVjdGVkKGNhbEV2ZW50KVxcbiAgICAgIH0sIDI1MClcXG4gICAgfSxcXG4gICAgW3NldFNlbGVjdGVkXVxcbiAgKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25TZWxlY3RFdmVudD17b25TZWxlY3RFdmVudH1cXG4gICAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZH1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uU2VsZWN0ZWQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcInNob3dhbGxldmVudHNcIlxuICAgIH19Pntgc2hvd0FsbEV2ZW50c2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZmFsc2VgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BEaXNwbGF5cyBhbGwgZXZlbnRzIG9uIHRoZSBtb250aCB2aWV3IGluc3RlYWQgb2YgaGF2aW5nIHNvbWUgaGlkZGVuIGJlaGluZCAre2NvdW50fSBtb3JlLiBUaGlzIHdpbGwgY2F1c2UgdGhlIHJvd3MgaW4gdGhlIG1vbnRoIHZpZXcgdG8gYmUgc2Nyb2xsYWJsZSBpZiB0aGUgbnVtYmVyIG9mIGV2ZW50cyBleGNlZWQgdGhlIGhlaWdodCBvZiB0aGUgcm93LmB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tc2hvdy1hbGwtZXZlbnRzXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3Nob3dBbGxFdmVudHMubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICAgIHNob3dBbGxFdmVudHM6ICdib29sZWFuJyxcXG4gIH0sXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVxcblxcbmV4cG9ydCBjb25zdCBTaG93QWxsRXZlbnRzID0gVGVtcGxhdGUuYmluZCh7fSlcXG5TaG93QWxsRXZlbnRzLnN0b3J5TmFtZSA9ICdzaG93QWxsRXZlbnRzJ1xcblNob3dBbGxFdmVudHMuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxuICBzaG93QWxsRXZlbnRzOiB0cnVlLFxcbn1cXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiU2hvd0FsbEV2ZW50c1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6Mjl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozM30sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozM319fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vc2hvd0FsbEV2ZW50cy5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgc2hvd0FsbEV2ZW50czogJ2Jvb2xlYW4nLFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgU2hvd0FsbEV2ZW50cyA9IFRlbXBsYXRlLmJpbmQoe30pO1Nob3dBbGxFdmVudHMuc3RvcnlOYW1lID0gJ3Nob3dBbGxFdmVudHMnXG5TaG93QWxsRXZlbnRzLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxuICBzaG93QWxsRXZlbnRzOiB0cnVlLFxufVxuXG5cblxuU2hvd0FsbEV2ZW50cy5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uU2hvd0FsbEV2ZW50cy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwic2hvd211bHRpZGF5dGltZXNcIlxuICAgIH19Pntgc2hvd011bHRpRGF5VGltZXNgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZhbHNlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgU3VwcG9ydCB0byBzaG93IG11bHRpLWRheSBldmVudHMgd2l0aCBzcGVjaWZpYyBzdGFydCBhbmQgZW5kIHRpbWVzIGluIHRoZSBtYWluIHRpbWUgZ3JpZCAocmF0aGVyIHRoYW4gaW4gdGhlIGFsbCBkYXkgaGVhZGVyKS5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BOb3RlOiBUaGlzIG1heSBjYXVzZSBjYWxlbmRhcnMgd2l0aCBzZXZlcmFsIGV2ZW50cyB0byBsb29rIHZlcnkgYnVzeSBpbiB0aGUgd2VlayBhbmQgZGF5IHZpZXdzLmB9PC9zdHJvbmc+PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS1zaG93LW11bHRpLWRheS10aW1lc1wiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3Nob3dNdWx0aURheVRpbWVzLm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdFZpZXc6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgbWF4OiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIHNob3dNdWx0aURheVRpbWVzOiAnYm9vbGVhbicsXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgU2hvd011bHRpRGF5VGltZXMgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcblNob3dNdWx0aURheVRpbWVzLnN0b3J5TmFtZSA9ICdzaG93TXVsdGlEYXlUaW1lcydcXG5TaG93TXVsdGlEYXlUaW1lcy5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTYsIDExLCA0KSxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgZXZlbnRzOiBbXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ3N0YXJ0IG9mIHRoZSB3ZWVrJyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDQsIDE1KSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCA1LCAzKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnc2luZ2xlIGRheSBsb25nZXIgdGhhbiBtYXgnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgNCwgMTUpLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDQsIDIzLCAzMCksXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ2VuZCBvZiB0aGUgd2VlaycsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDExLCAzKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCAzKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnbWlkZGxlJyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDYpLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDYpLFxcbiAgICB9LFxcbiAgXSxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG4gIG1heDogbW9tZW50KCkuZW5kT2YoJ2RheScpLmFkZCgtMSwgJ2hvdXJzJykudG9EYXRlKCksXFxuICBzaG93TXVsdGlEYXlUaW1lczogdHJ1ZSxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIlNob3dNdWx0aURheVRpbWVzXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI5fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI1fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI5fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBtZHggZnJvbSAnLi9zaG93TXVsdGlEYXlUaW1lcy5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdFZpZXc6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBtYXg6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBzaG93TXVsdGlEYXlUaW1lczogJ2Jvb2xlYW4nLFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgU2hvd011bHRpRGF5VGltZXMgPSBUZW1wbGF0ZS5iaW5kKHt9KTtTaG93TXVsdGlEYXlUaW1lcy5zdG9yeU5hbWUgPSAnc2hvd011bHRpRGF5VGltZXMnXG5TaG93TXVsdGlEYXlUaW1lcy5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcbiAgZXZlbnRzOiBbXG4gICAge1xuICAgICAgdGl0bGU6ICdzdGFydCBvZiB0aGUgd2VlaycsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDQsIDE1KSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDUsIDMpLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdzaW5nbGUgZGF5IGxvbmdlciB0aGFuIG1heCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDQsIDE1KSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDQsIDIzLCAzMCksXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ2VuZCBvZiB0aGUgd2VlaycsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDMpLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ21pZGRsZScsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDYpLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgNiksXG4gICAgfSxcbiAgXSxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxuICBtYXg6IG1vbWVudCgpLmVuZE9mKCdkYXknKS5hZGQoLTEsICdob3VycycpLnRvRGF0ZSgpLFxuICBzaG93TXVsdGlEYXlUaW1lczogdHJ1ZSxcbn1cblxuXG5cblNob3dNdWx0aURheVRpbWVzLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5TaG93TXVsdGlEYXlUaW1lcy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwic2xvdGdyb3VwcHJvcGdldHRlclwiXG4gICAgfX0+e2BzbG90R3JvdXBQcm9wR2V0dGVyYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZ3JvdXA6IERhdGVbXSkgPT4geyBzdHlsZT86IE9iamVjdCB9YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgT3B0aW9uYWxseSBwcm92aWRlIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIG9iamVjdCBvZiBjbGFzc05hbWUgb3Igc3R5bGUgcHJvcHMgdG8gYmUgYXBwbGllZCB0byB0aGUgdGltZS1zbG90IG5vZGUuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgQ2F1dGlvbiEgU3R5bGVzIHRoYXQgY2hhbmdlIGxheW91dCBvciBwb3NpdGlvbiBtYXkgYnJlYWsgdGhlIGNhbGVuZGFyIGluIHVuZXhwZWN0ZWQgd2F5cy5gfTwvc3Ryb25nPjwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLXNsb3QtZ3JvdXAtcHJvcC1nZXR0ZXJcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vc2xvdEdyb3VwUHJvcEdldHRlci5tZHgnXFxuaW1wb3J0ICcuLi9yZXNvdXJjZXMvcHJvcEdldHRlci5zY3NzJ1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBTbG90R3JvdXBQcm9wR2V0dGVyKCkge1xcbiAgY29uc3Qgc2xvdEdyb3VwUHJvcEdldHRlciA9IHVzZUNhbGxiYWNrKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIHN0eWxlOiB7XFxuICAgICAgICBtaW5IZWlnaHQ6IDYwLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxcbiAgICAgICAgc2xvdEdyb3VwUHJvcEdldHRlcj17c2xvdEdyb3VwUHJvcEdldHRlcn1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuU2xvdEdyb3VwUHJvcEdldHRlci5zdG9yeU5hbWUgPSAnc2xvdEdyb3VwUHJvcEdldHRlcidcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiU2xvdEdyb3VwUHJvcEdldHRlclwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoyMH0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQzfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MjB9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDN9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL3Nsb3RHcm91cFByb3BHZXR0ZXIubWR4J1xuaW1wb3J0ICcuLi9yZXNvdXJjZXMvcHJvcEdldHRlci5zY3NzJ1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgU2xvdEdyb3VwUHJvcEdldHRlciA9IGZ1bmN0aW9uIFNsb3RHcm91cFByb3BHZXR0ZXIoKSB7XG4gIGNvbnN0IHNsb3RHcm91cFByb3BHZXR0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoKSA9PiAoe1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgbWluSGVpZ2h0OiA2MCxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksIFtdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxuICAgICAgICBzbG90R3JvdXBQcm9wR2V0dGVyPXtzbG90R3JvdXBQcm9wR2V0dGVyfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07U2xvdEdyb3VwUHJvcEdldHRlci5zdG9yeU5hbWUgPSAnc2xvdEdyb3VwUHJvcEdldHRlcidcblxuXG5cblNsb3RHcm91cFByb3BHZXR0ZXIucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIFNsb3RHcm91cFByb3BHZXR0ZXIoKSB7XFxuICBjb25zdCBzbG90R3JvdXBQcm9wR2V0dGVyID0gdXNlQ2FsbGJhY2soXFxuICAgICgpID0+ICh7XFxuICAgICAgc3R5bGU6IHtcXG4gICAgICAgIG1pbkhlaWdodDogNjAsXFxuICAgICAgfSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMTMpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBzbG90R3JvdXBQcm9wR2V0dGVyPXtzbG90R3JvdXBQcm9wR2V0dGVyfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5TbG90R3JvdXBQcm9wR2V0dGVyLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJzbG90cHJvcGdldHRlclwiXG4gICAgfX0+e2BzbG90UHJvcEdldHRlcmB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUpID0+IHtjbGFzc05hbWU/OiBzdHJpbmcsIHN0eWxlPzogT2JqZWN0fWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YE9wdGlvbmFsbHkgcHJvdmlkZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBvYmplY3Qgb2YgY2xhc3NOYW1lIG9yIHN0eWxlIHByb3BzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHRoZSB0aW1lLXNsb3Qgbm9kZS5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BDYXV0aW9uIWB9PC9zdHJvbmc+e2AgU3R5bGVzIHRoYXQgY2hhbmdlIGxheW91dCBvciBwb3NpdGlvbiBtYXkgYnJlYWsgdGhlIGNhbGVuZGFyIGluIHVuZXhwZWN0ZWQgd2F5cy5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLXNsb3QtcHJvcC1nZXR0ZXJcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vc2xvdFByb3BHZXR0ZXIubWR4J1xcbmltcG9ydCAnLi4vcmVzb3VyY2VzL3Byb3BHZXR0ZXIuc2NzcydcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5leHBvcnQgZnVuY3Rpb24gU2xvdFByb3BHZXR0ZXIoKSB7XFxuICBjb25zdCBzbG90UHJvcEdldHRlciA9IHVzZUNhbGxiYWNrKFxcbiAgICAoZGF0ZSkgPT4gKHtcXG4gICAgICBjbGFzc05hbWU6ICdzbG90RGVmYXVsdCcsXFxuICAgICAgLi4uKG1vbWVudChkYXRlKS5ob3VyKCkgPCA4ICYmIHtcXG4gICAgICAgIHN0eWxlOiB7XFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3Bvd2RlcmJsdWUnLFxcbiAgICAgICAgICBjb2xvcjogJ2JsYWNrJyxcXG4gICAgICAgIH0sXFxuICAgICAgfSksXFxuICAgICAgLi4uKG1vbWVudChkYXRlKS5ob3VyKCkgPiAxMiAmJiB7XFxuICAgICAgICBzdHlsZToge1xcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdkYXJrZ3JlZW4nLFxcbiAgICAgICAgICBjb2xvcjogJ3doaXRlJyxcXG4gICAgICAgIH0sXFxuICAgICAgfSksXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxcbiAgICAgICAgc2xvdFByb3BHZXR0ZXI9e3Nsb3RQcm9wR2V0dGVyfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5TbG90UHJvcEdldHRlci5zdG9yeU5hbWUgPSAnc2xvdFByb3BHZXR0ZXInXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIlNsb3RQcm9wR2V0dGVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjIwfSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NTN9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoyMH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo1M319fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vc2xvdFByb3BHZXR0ZXIubWR4J1xuaW1wb3J0ICcuLi9yZXNvdXJjZXMvcHJvcEdldHRlci5zY3NzJ1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgU2xvdFByb3BHZXR0ZXIgPSBmdW5jdGlvbiBTbG90UHJvcEdldHRlcigpIHtcbiAgY29uc3Qgc2xvdFByb3BHZXR0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZGF0ZSkgPT4gKHtcbiAgICAgIGNsYXNzTmFtZTogJ3Nsb3REZWZhdWx0JyxcbiAgICAgIC4uLihtb21lbnQoZGF0ZSkuaG91cigpIDwgOCAmJiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAncG93ZGVyYmx1ZScsXG4gICAgICAgICAgY29sb3I6ICdibGFjaycsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIC4uLihtb21lbnQoZGF0ZSkuaG91cigpID4gMTIgJiYge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ2RhcmtncmVlbicsXG4gICAgICAgICAgY29sb3I6ICd3aGl0ZScsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSwgW10pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XG4gICAgICAgIHNsb3RQcm9wR2V0dGVyPXtzbG90UHJvcEdldHRlcn1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O1Nsb3RQcm9wR2V0dGVyLnN0b3J5TmFtZSA9ICdzbG90UHJvcEdldHRlcidcblxuXG5cblNsb3RQcm9wR2V0dGVyLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBTbG90UHJvcEdldHRlcigpIHtcXG4gIGNvbnN0IHNsb3RQcm9wR2V0dGVyID0gdXNlQ2FsbGJhY2soXFxuICAgIChkYXRlKSA9PiAoe1xcbiAgICAgIGNsYXNzTmFtZTogJ3Nsb3REZWZhdWx0JyxcXG4gICAgICAuLi4obW9tZW50KGRhdGUpLmhvdXIoKSA8IDggJiYge1xcbiAgICAgICAgc3R5bGU6IHtcXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAncG93ZGVyYmx1ZScsXFxuICAgICAgICAgIGNvbG9yOiAnYmxhY2snLFxcbiAgICAgICAgfSxcXG4gICAgICB9KSxcXG4gICAgICAuLi4obW9tZW50KGRhdGUpLmhvdXIoKSA+IDEyICYmIHtcXG4gICAgICAgIHN0eWxlOiB7XFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ2RhcmtncmVlbicsXFxuICAgICAgICAgIGNvbG9yOiAnd2hpdGUnLFxcbiAgICAgICAgfSxcXG4gICAgICB9KSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMTMpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBzbG90UHJvcEdldHRlcj17c2xvdFByb3BHZXR0ZXJ9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLlNsb3RQcm9wR2V0dGVyLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJzdGFydGFjY2Vzc29yXCJcbiAgICB9fT57YHN0YXJ0QWNjZXNzb3JgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0cmluZyB8IGZ1bmN0aW9uIChldmVudDogT2JqZWN0KSA9PiBEYXRlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6ICdzdGFydCdgfTwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFRoZSBzdGFydCBkYXRlL3RpbWUgb2YgdGhlIGV2ZW50LiBNdXN0IHJlc29sdmUgdG8gYSBKYXZhU2NyaXB0IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YERhdGVgfTwvaW5saW5lQ29kZT57YCBvYmplY3QuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLXN0YXJ0LWFjY2Vzc29yXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgeyBhY2Nlc3NvclN0b3J5QXJncyB9IGZyb20gJy4vc3RvcnlEZWZhdWx0cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vc3RhcnRBY2Nlc3Nvci5tZHgnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZToge1xcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6IG51bGwsXFxuICAgICAgfSxcXG4gICAgfSxcXG4gIH0sXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVxcblxcbmV4cG9ydCBjb25zdCBTdGFydEFjY2Vzc29yID0gVGVtcGxhdGUuYmluZCh7fSlcXG5TdGFydEFjY2Vzc29yLnN0b3J5TmFtZSA9ICdzdGFydEFjY2Vzc29yJ1xcblN0YXJ0QWNjZXNzb3IuYXJncyA9IGFjY2Vzc29yU3RvcnlBcmdzXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIlN0YXJ0QWNjZXNzb3JcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjI1fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6Mjl9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjV9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6Mjl9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCB7IGFjY2Vzc29yU3RvcnlBcmdzIH0gZnJvbSAnLi9zdG9yeURlZmF1bHRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL3N0YXJ0QWNjZXNzb3IubWR4J1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cbiAgPC9kaXY+XG4pXG5cbmV4cG9ydCBjb25zdCBTdGFydEFjY2Vzc29yID0gVGVtcGxhdGUuYmluZCh7fSk7U3RhcnRBY2Nlc3Nvci5zdG9yeU5hbWUgPSAnc3RhcnRBY2Nlc3NvcidcblN0YXJ0QWNjZXNzb3IuYXJncyA9IGFjY2Vzc29yU3RvcnlBcmdzXG5cblxuXG5TdGFydEFjY2Vzc29yLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5TdGFydEFjY2Vzc29yLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJzdGVwXCJcbiAgICB9fT57YHN0ZXBgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG51bWJlcmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgMzBgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BEZXRlcm1pbmVzIHRoZSBzZWxlY3RhYmxlIHRpbWUgaW5jcmVtZW50cyBpbiB3ZWVrIGFuZCBkYXkgdmlld3NgfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tc3RlcFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vc3RlcC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZToge1xcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6IG51bGwsXFxuICAgICAgfSxcXG4gICAgfSxcXG4gICAgZGVmYXVsdFZpZXc6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICAgIHN0ZXA6ICdudW1iZXInLFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IFN0ZXAgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcblN0ZXAuc3RvcnlOYW1lID0gJ3N0ZXAnXFxuU3RlcC5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxcbiAgc3RlcDogMTUsXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJTdGVwXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozNH0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM4fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjM0fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM4fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vc3RlcC5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZpZXc6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBzdGVwOiAnbnVtYmVyJyxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IFN0ZXAgPSBUZW1wbGF0ZS5iaW5kKHt9KTtTdGVwLnN0b3J5TmFtZSA9ICdzdGVwJ1xuU3RlcC5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG4gIHN0ZXA6IDE1LFxufVxuXG5cblxuU3RlcC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uU3RlcC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwidGltZXNsb3RzXCJcbiAgICB9fT57YHRpbWVzbG90c2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbnVtYmVyYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIG51bWJlciBvZiBzbG90cyBwZXIgXCJzZWN0aW9uXCIgaW4gdGhlIHRpbWUgZ3JpZCB2aWV3cy4gQWRqdXN0IHdpdGggYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic3RlcFwiIG1keFR5cGU9XCJMaW5rVG9cIj57YHN0ZXBgfTwvTGlua1RvPntgIHRvIGNoYW5nZSB0aGUgZGVmYXVsdCBvZiAxIGhvdXIgbG9uZyBncm91cHMsIHdpdGggMzAgbWludXRlIHNsb3RzLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS10aW1lc2xvdHNcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3RpbWVzbG90cy5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZToge1xcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6IG51bGwsXFxuICAgICAgfSxcXG4gICAgfSxcXG4gICAgZGVmYXVsdFZpZXc6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICAgIHN0ZXA6ICdudW1iZXInLFxcbiAgICB0aW1lc2xvdHM6ICdudW1iZXInLFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IFRpbWVzbG90cyA9IFRlbXBsYXRlLmJpbmQoe30pXFxuVGltZXNsb3RzLnN0b3J5TmFtZSA9ICd0aW1lc2xvdHMnXFxuVGltZXNsb3RzLmFyZ3MgPSB7XFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxuICBzdGVwOiAxNSxcXG4gIHRpbWVzbG90czogNCxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIlRpbWVzbG90c1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzV9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozOX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozNX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozOX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL3RpbWVzbG90cy5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZpZXc6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBzdGVwOiAnbnVtYmVyJyxcbiAgICB0aW1lc2xvdHM6ICdudW1iZXInLFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgVGltZXNsb3RzID0gVGVtcGxhdGUuYmluZCh7fSk7VGltZXNsb3RzLnN0b3J5TmFtZSA9ICd0aW1lc2xvdHMnXG5UaW1lc2xvdHMuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxuICBzdGVwOiAxNSxcbiAgdGltZXNsb3RzOiA0LFxufVxuXG5cblxuVGltZXNsb3RzLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5UaW1lc2xvdHMucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcInRpdGxlYWNjZXNzb3JcIlxuICAgIH19PntgdGl0bGVBY2Nlc3NvcmB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nIHwgZnVuY3Rpb24gKGV2ZW50OiBPYmplY3QpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiAndGl0bGUnYH08L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBY2Nlc3NvciBmb3IgdGhlIGV2ZW50IHRpdGxlLCB1c2VkIHRvIGRpc3BsYXkgZXZlbnQgaW5mb3JtYXRpb24uIFNob3VsZCByZXNvbHZlIHRvIGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgcmVuZGVyYWJsZWB9PC9pbmxpbmVDb2RlPntgIHZhbHVlLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS10aXRsZS1hY2Nlc3NvclwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IHsgYWNjZXNzb3JTdG9yeUFyZ3MgfSBmcm9tICcuL3N0b3J5RGVmYXVsdHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3RpdGxlQWNjZXNzb3IubWR4J1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgVGl0bGVBY2Nlc3NvciA9IFRlbXBsYXRlLmJpbmQoe30pXFxuVGl0bGVBY2Nlc3Nvci5zdG9yeU5hbWUgPSAndGl0bGVBY2Nlc3NvcidcXG5UaXRsZUFjY2Vzc29yLmFyZ3MgPSBhY2Nlc3NvclN0b3J5QXJnc1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJUaXRsZUFjY2Vzc29yXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI5fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI1fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI5fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgeyBhY2Nlc3NvclN0b3J5QXJncyB9IGZyb20gJy4vc3RvcnlEZWZhdWx0cydcbmltcG9ydCBtZHggZnJvbSAnLi90aXRsZUFjY2Vzc29yLm1keCdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgYXJnVHlwZXM6IHtcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBkZWZhdWx0RGF0ZToge1xuICAgICAgY29udHJvbDoge1xuICAgICAgICB0eXBlOiBudWxsLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgVGl0bGVBY2Nlc3NvciA9IFRlbXBsYXRlLmJpbmQoe30pO1RpdGxlQWNjZXNzb3Iuc3RvcnlOYW1lID0gJ3RpdGxlQWNjZXNzb3InXG5UaXRsZUFjY2Vzc29yLmFyZ3MgPSBhY2Nlc3NvclN0b3J5QXJnc1xuXG5cblxuVGl0bGVBY2Nlc3Nvci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uVGl0bGVBY2Nlc3Nvci5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwidG9vbGJhclwiXG4gICAgfX0+e2B0b29sYmFyYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2Bib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2B0cnVlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0b29sYmFyIGlzIGRpc3BsYXllZGB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS10b29sYmFyXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3Rvb2xiYXIubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICAgIHRvb2xiYXI6ICdib29sZWFuJyxcXG4gIH0sXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVxcblxcbmV4cG9ydCBjb25zdCBUb29sYmFyID0gVGVtcGxhdGUuYmluZCh7fSlcXG5Ub29sYmFyLnN0b3J5TmFtZSA9ICd0b29sYmFyJ1xcblRvb2xiYXIuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxuICB0b29sYmFyOiB0cnVlLFxcbn1cXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiVG9vbGJhclwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6Mjl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozM30sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozM319fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vdG9vbGJhci5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgdG9vbGJhcjogJ2Jvb2xlYW4nLFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgVG9vbGJhciA9IFRlbXBsYXRlLmJpbmQoe30pO1Rvb2xiYXIuc3RvcnlOYW1lID0gJ3Rvb2xiYXInXG5Ub29sYmFyLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxuICB0b29sYmFyOiB0cnVlLFxufVxuXG5cblxuVG9vbGJhci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uVG9vbGJhci5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwidG9vbHRpcGFjY2Vzc29yXCJcbiAgICB9fT57YHRvb2x0aXBBY2Nlc3NvcmB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nIHwgZnVuY3Rpb24gKGV2ZW50OiBPYmplY3QpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiAndGl0bGUnYH08L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBY2Nlc3NvciBmb3IgdGhlIGV2ZW50IHRvb2x0aXAsIHVzZWQgdG8gZGlzcGxheSBldmVudCBpbmZvcm1hdGlvbi4gU2hvdWxkIHJlc29sdmUgdG8gYSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2ByZW5kZXJhYmxlYH08L2lubGluZUNvZGU+e2AgdmFsdWUuIFJlbW92ZXMgdGhlIHRvb2x0aXAgaWYgbnVsbC5gfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tdG9vbHRpcC1hY2Nlc3NvclwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IHsgYWNjZXNzb3JTdG9yeUFyZ3MgfSBmcm9tICcuL3N0b3J5RGVmYXVsdHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3Rvb2x0aXBBY2Nlc3Nvci5tZHgnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZToge1xcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6IG51bGwsXFxuICAgICAgfSxcXG4gICAgfSxcXG4gIH0sXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVxcblxcbmV4cG9ydCBjb25zdCBUb29sdGlwQWNjZXNzb3IgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcblRvb2x0aXBBY2Nlc3Nvci5zdG9yeU5hbWUgPSAndG9vbHRpcEFjY2Vzc29yJ1xcblRvb2x0aXBBY2Nlc3Nvci5hcmdzID0gYWNjZXNzb3JTdG9yeUFyZ3NcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiVG9vbHRpcEFjY2Vzc29yXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI5fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI1fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI5fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgeyBhY2Nlc3NvclN0b3J5QXJncyB9IGZyb20gJy4vc3RvcnlEZWZhdWx0cydcbmltcG9ydCBtZHggZnJvbSAnLi90b29sdGlwQWNjZXNzb3IubWR4J1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cbiAgPC9kaXY+XG4pXG5cbmV4cG9ydCBjb25zdCBUb29sdGlwQWNjZXNzb3IgPSBUZW1wbGF0ZS5iaW5kKHt9KTtUb29sdGlwQWNjZXNzb3Iuc3RvcnlOYW1lID0gJ3Rvb2x0aXBBY2Nlc3NvcidcblRvb2x0aXBBY2Nlc3Nvci5hcmdzID0gYWNjZXNzb3JTdG9yeUFyZ3NcblxuXG5cblRvb2x0aXBBY2Nlc3Nvci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uVG9vbHRpcEFjY2Vzc29yLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJ2aWV3XCJcbiAgICB9fT57YHZpZXdgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgVmlld3MuTU9OVEggKG1vbnRofHdlZWt8d29ya193ZWVrfGRheXxhZ2VuZGEpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGNvbnRyb2xsZWQgYnk6IGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLXZpZXdcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvblZpZXdgfTwvTGlua1RvPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFRoZSBjdXJyZW50IHZpZXcgdmFsdWUgb2YgdGhlIGNhbGVuZGFyLiBEZXRlcm1pbmVzIHRoZSB2aXNpYmxlICd2aWV3Jy5cbklmIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHZpZXdgfTwvaW5saW5lQ29kZT57YCBpcyBvbWl0dGVkIHRoZW4gaXQgaXMgZGVmYXVsdGVkIHRvICdtb250aCcuYH08L3A+XG4gICAgPHA+e2BUaGlzIGlzIGEgY29udHJvbGxhYmxlIHByb3AsIHdoZW4gdXNpbmcgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwib24tdmlld1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uVmlld2B9PC9MaW5rVG8+PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tdmlld1wiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vdmlldy5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIFZpZXcoKSB7XFxuICBjb25zdCBbZGF0ZSwgc2V0RGF0ZV0gPSB1c2VTdGF0ZShuZXcgRGF0ZSgyMDE1LCAzLCAxKSlcXG4gIGNvbnN0IFt2aWV3LCBzZXRWaWV3XSA9IHVzZVN0YXRlKFZpZXdzLldFRUspXFxuXFxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcXG4gIGNvbnN0IG9uVmlldyA9IHVzZUNhbGxiYWNrKChuZXdWaWV3KSA9PiBzZXRWaWV3KG5ld1ZpZXcpLCBbc2V0Vmlld10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRhdGU9e2RhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBvbk5hdmlnYXRlPXtvbk5hdmlnYXRlfVxcbiAgICAgICAgb25WaWV3PXtvblZpZXd9XFxuICAgICAgICB2aWV3PXt2aWV3fVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5WaWV3LnN0b3J5TmFtZSA9ICd2aWV3J1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJWaWV3XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6Mzh9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozOH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL3ZpZXcubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgVmlldyA9IGZ1bmN0aW9uIFZpZXcoKSB7XG4gIGNvbnN0IFtkYXRlLCBzZXREYXRlXSA9IHVzZVN0YXRlKG5ldyBEYXRlKDIwMTUsIDMsIDEpKVxuICBjb25zdCBbdmlldywgc2V0Vmlld10gPSB1c2VTdGF0ZShWaWV3cy5XRUVLKVxuXG4gIGNvbnN0IG9uTmF2aWdhdGUgPSB1c2VDYWxsYmFjaygobmV3RGF0ZSkgPT4gc2V0RGF0ZShuZXdEYXRlKSwgW3NldERhdGVdKVxuICBjb25zdCBvblZpZXcgPSB1c2VDYWxsYmFjaygobmV3VmlldykgPT4gc2V0VmlldyhuZXdWaWV3KSwgW3NldFZpZXddKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkYXRlPXtkYXRlfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgICAgb25OYXZpZ2F0ZT17b25OYXZpZ2F0ZX1cbiAgICAgICAgb25WaWV3PXtvblZpZXd9XG4gICAgICAgIHZpZXc9e3ZpZXd9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O1ZpZXcuc3RvcnlOYW1lID0gJ3ZpZXcnXG5cblxuXG5WaWV3LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBWaWV3KCkge1xcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMSkpXFxuICBjb25zdCBbdmlldywgc2V0Vmlld10gPSB1c2VTdGF0ZShWaWV3cy5XRUVLKVxcblxcbiAgY29uc3Qgb25OYXZpZ2F0ZSA9IHVzZUNhbGxiYWNrKChuZXdEYXRlKSA9PiBzZXREYXRlKG5ld0RhdGUpLCBbc2V0RGF0ZV0pXFxuICBjb25zdCBvblZpZXcgPSB1c2VDYWxsYmFjaygobmV3VmlldykgPT4gc2V0VmlldyhuZXdWaWV3KSwgW3NldFZpZXddKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkYXRlPXtkYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25OYXZpZ2F0ZT17b25OYXZpZ2F0ZX1cXG4gICAgICAgIG9uVmlldz17b25WaWV3fVxcbiAgICAgICAgdmlldz17dmlld31cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uVmlldy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwidmlld3NcIlxuICAgIH19Pntgdmlld3NgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YFZpZXdzICgnbW9udGgnfCd3ZWVrJ3wnd29ya193ZWVrJ3wnZGF5J3wnYWdlbmRhJylgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YFt2aWV3cy5NT05USCwgdmlld3MuV0VFSywgdmlld3MuREFZLCB2aWV3cy5BR0VOREFdYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQW4gYXJyYXkgb2YgYnVpbHQtaW4gdmlldyBuYW1lcyB0byBhbGxvdyB0aGUgY2FsZW5kYXIgdG8gZGlzcGxheS4gYWNjZXB0cyBlaXRoZXIgYW4gYXJyYXkgb2YgYnVpbHRpbiB2aWV3IG5hbWVzLGB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2B2aWV3cz17Wydtb250aCcsICdkYXknLCAnYWdlbmRhJ119XG5gfTwvY29kZT48L3ByZT5cbiAgICA8cD57YG9yIGFuIG9iamVjdCBoYXNoIG9mIHRoZSB2aWV3IG5hbWUgYW5kIHRoZSBjb21wb25lbnQgKG9yIGJvb2xlYW4gZm9yIGJ1aWx0aW4pLmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2B2aWV3cz17e1xuICBtb250aDogdHJ1ZSxcbiAgd2VlazogZmFsc2UsXG4gIG15d2VlazogV29ya1dlZWtWaWV3Q29tcG9uZW50LFxufX1cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwPntgQ3VzdG9tIHZpZXdzIGNhbiBiZSBhbnkgUmVhY3QgY29tcG9uZW50LCB0aGF0IGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBpbnRlcmZhY2U6YH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YGludGVyZmFjZSBWaWV3IHtcbiAgc3RhdGljIHRpdGxlKGRhdGU6IERhdGUsIHsgZm9ybWF0czogRGF0ZUZvcm1hdFtdLCBjdWx0dXJlOiBzdHJpbmc/LCAuLi5wcm9wcyB9KTogc3RyaW5nXG4gIHN0YXRpYyBuYXZpZ2F0ZShkYXRlOiBEYXRlLCBhY3Rpb246ICdQUkVWJyB8ICdORVhUJyB8ICdEQVRFJyk6IERhdGVcbn1cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tY2FsLXZpZXdzXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vdmlld3MubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBDYWxWaWV3cygpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcXG4gICAgICB2aWV3czogW1ZpZXdzLk1PTlRILCBWaWV3cy5EQVksIFZpZXdzLkFHRU5EQV0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbkNhbFZpZXdzLnN0b3J5TmFtZSA9ICd2aWV3cydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiQ2FsVmlld3NcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozOH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM4fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL3ZpZXdzLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IENhbFZpZXdzID0gZnVuY3Rpb24gQ2FsVmlld3MoKSB7XG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIHZpZXdzIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMSksXG4gICAgICB2aWV3czogW1ZpZXdzLk1PTlRILCBWaWV3cy5EQVksIFZpZXdzLkFHRU5EQV0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICB2aWV3cz17dmlld3N9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0NhbFZpZXdzLnN0b3J5TmFtZSA9ICd2aWV3cydcblxuXG5cbkNhbFZpZXdzLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBDYWxWaWV3cygpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcXG4gICAgICB2aWV3czogW1ZpZXdzLk1PTlRILCBWaWV3cy5EQVksIFZpZXdzLkFHRU5EQV0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLkNhbFZpZXdzLnBhcmFtZXRlcnMgfTsiLCJpbXBvcnQgTm9vcFdyYXBwZXIgZnJvbSAnLi9Ob29wV3JhcHBlcidcblxuZXhwb3J0IGRlZmF1bHQgTm9vcFdyYXBwZXJcbiIsImltcG9ydCBSZWFjdCwgeyBjcmVhdGVSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnXG5cbmltcG9ydCB7IG5vdGlmeSB9IGZyb20gJy4vdXRpbHMvaGVscGVycydcbmltcG9ydCB7IGRhdGVDZWxsU2VsZWN0aW9uLCBnZXRTbG90QXRYLCBwb2ludEluQm94IH0gZnJvbSAnLi91dGlscy9zZWxlY3Rpb24nXG5pbXBvcnQgU2VsZWN0aW9uLCB7IGdldEJvdW5kc0Zvck5vZGUsIGlzRXZlbnQsIGlzU2hvd01vcmUgfSBmcm9tICcuL1NlbGVjdGlvbidcblxuY2xhc3MgQmFja2dyb3VuZENlbGxzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMsIGNvbnRleHQpIHtcbiAgICBzdXBlcihwcm9wcywgY29udGV4dClcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBzZWxlY3Rpbmc6IGZhbHNlLFxuICAgIH1cbiAgICB0aGlzLmNvbnRhaW5lclJlZiA9IGNyZWF0ZVJlZigpXG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLnByb3BzLnNlbGVjdGFibGUgJiYgdGhpcy5fc2VsZWN0YWJsZSgpXG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLl90ZWFyZG93blNlbGVjdGFibGUoKVxuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgIGlmICghcHJldlByb3BzLnNlbGVjdGFibGUgJiYgdGhpcy5wcm9wcy5zZWxlY3RhYmxlKSB0aGlzLl9zZWxlY3RhYmxlKClcblxuICAgIGlmIChwcmV2UHJvcHMuc2VsZWN0YWJsZSAmJiAhdGhpcy5wcm9wcy5zZWxlY3RhYmxlKVxuICAgICAgdGhpcy5fdGVhcmRvd25TZWxlY3RhYmxlKClcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBsZXQge1xuICAgICAgcmFuZ2UsXG4gICAgICBnZXROb3csXG4gICAgICBnZXR0ZXJzLFxuICAgICAgZGF0ZTogY3VycmVudERhdGUsXG4gICAgICBjb21wb25lbnRzOiB7IGRhdGVDZWxsV3JhcHBlcjogV3JhcHBlciB9LFxuICAgICAgbG9jYWxpemVyLFxuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgbGV0IHsgc2VsZWN0aW5nLCBzdGFydElkeCwgZW5kSWR4IH0gPSB0aGlzLnN0YXRlXG4gICAgbGV0IGN1cnJlbnQgPSBnZXROb3coKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLXJvdy1iZ1wiIHJlZj17dGhpcy5jb250YWluZXJSZWZ9PlxuICAgICAgICB7cmFuZ2UubWFwKChkYXRlLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGxldCBzZWxlY3RlZCA9IHNlbGVjdGluZyAmJiBpbmRleCA+PSBzdGFydElkeCAmJiBpbmRleCA8PSBlbmRJZHhcbiAgICAgICAgICBjb25zdCB7IGNsYXNzTmFtZSwgc3R5bGUgfSA9IGdldHRlcnMuZGF5UHJvcChkYXRlKVxuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxXcmFwcGVyIGtleT17aW5kZXh9IHZhbHVlPXtkYXRlfSByYW5nZT17cmFuZ2V9PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChcbiAgICAgICAgICAgICAgICAgICdyYmMtZGF5LWJnJyxcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkICYmICdyYmMtc2VsZWN0ZWQtY2VsbCcsXG4gICAgICAgICAgICAgICAgICBsb2NhbGl6ZXIuaXNTYW1lRGF0ZShkYXRlLCBjdXJyZW50KSAmJiAncmJjLXRvZGF5JyxcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnREYXRlICYmXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsaXplci5uZXEoY3VycmVudERhdGUsIGRhdGUsICdtb250aCcpICYmXG4gICAgICAgICAgICAgICAgICAgICdyYmMtb2ZmLXJhbmdlLWJnJ1xuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1dyYXBwZXI+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIF9zZWxlY3RhYmxlKCkge1xuICAgIGxldCBub2RlID0gdGhpcy5jb250YWluZXJSZWYuY3VycmVudFxuICAgIGxldCBzZWxlY3RvciA9ICh0aGlzLl9zZWxlY3RvciA9IG5ldyBTZWxlY3Rpb24odGhpcy5wcm9wcy5jb250YWluZXIsIHtcbiAgICAgIGxvbmdQcmVzc1RocmVzaG9sZDogdGhpcy5wcm9wcy5sb25nUHJlc3NUaHJlc2hvbGQsXG4gICAgfSkpXG5cbiAgICBsZXQgc2VsZWN0b3JDbGlja3NIYW5kbGVyID0gKHBvaW50LCBhY3Rpb25UeXBlKSA9PiB7XG4gICAgICBpZiAoIWlzRXZlbnQobm9kZSwgcG9pbnQpICYmICFpc1Nob3dNb3JlKG5vZGUsIHBvaW50KSkge1xuICAgICAgICBsZXQgcm93Qm94ID0gZ2V0Qm91bmRzRm9yTm9kZShub2RlKVxuICAgICAgICBsZXQgeyByYW5nZSwgcnRsIH0gPSB0aGlzLnByb3BzXG5cbiAgICAgICAgaWYgKHBvaW50SW5Cb3gocm93Qm94LCBwb2ludCkpIHtcbiAgICAgICAgICBsZXQgY3VycmVudENlbGwgPSBnZXRTbG90QXRYKHJvd0JveCwgcG9pbnQueCwgcnRsLCByYW5nZS5sZW5ndGgpXG5cbiAgICAgICAgICB0aGlzLl9zZWxlY3RTbG90KHtcbiAgICAgICAgICAgIHN0YXJ0SWR4OiBjdXJyZW50Q2VsbCxcbiAgICAgICAgICAgIGVuZElkeDogY3VycmVudENlbGwsXG4gICAgICAgICAgICBhY3Rpb246IGFjdGlvblR5cGUsXG4gICAgICAgICAgICBib3g6IHBvaW50LFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5pdGlhbCA9IHt9XG4gICAgICB0aGlzLnNldFN0YXRlKHsgc2VsZWN0aW5nOiBmYWxzZSB9KVxuICAgIH1cblxuICAgIHNlbGVjdG9yLm9uKCdzZWxlY3RpbmcnLCAoYm94KSA9PiB7XG4gICAgICBsZXQgeyByYW5nZSwgcnRsIH0gPSB0aGlzLnByb3BzXG5cbiAgICAgIGxldCBzdGFydElkeCA9IC0xXG4gICAgICBsZXQgZW5kSWR4ID0gLTFcblxuICAgICAgaWYgKCF0aGlzLnN0YXRlLnNlbGVjdGluZykge1xuICAgICAgICBub3RpZnkodGhpcy5wcm9wcy5vblNlbGVjdFN0YXJ0LCBbYm94XSlcbiAgICAgICAgdGhpcy5faW5pdGlhbCA9IHsgeDogYm94LngsIHk6IGJveC55IH1cbiAgICAgIH1cbiAgICAgIGlmIChzZWxlY3Rvci5pc1NlbGVjdGVkKG5vZGUpKSB7XG4gICAgICAgIGxldCBub2RlQm94ID0gZ2V0Qm91bmRzRm9yTm9kZShub2RlKVxuICAgICAgICA7KHsgc3RhcnRJZHgsIGVuZElkeCB9ID0gZGF0ZUNlbGxTZWxlY3Rpb24oXG4gICAgICAgICAgdGhpcy5faW5pdGlhbCxcbiAgICAgICAgICBub2RlQm94LFxuICAgICAgICAgIGJveCxcbiAgICAgICAgICByYW5nZS5sZW5ndGgsXG4gICAgICAgICAgcnRsXG4gICAgICAgICkpXG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBzZWxlY3Rpbmc6IHRydWUsXG4gICAgICAgIHN0YXJ0SWR4LFxuICAgICAgICBlbmRJZHgsXG4gICAgICB9KVxuICAgIH0pXG5cbiAgICBzZWxlY3Rvci5vbignYmVmb3JlU2VsZWN0JywgKGJveCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHMuc2VsZWN0YWJsZSAhPT0gJ2lnbm9yZUV2ZW50cycpIHJldHVyblxuXG4gICAgICByZXR1cm4gIWlzRXZlbnQodGhpcy5jb250YWluZXJSZWYuY3VycmVudCwgYm94KVxuICAgIH0pXG5cbiAgICBzZWxlY3Rvci5vbignY2xpY2snLCAocG9pbnQpID0+IHNlbGVjdG9yQ2xpY2tzSGFuZGxlcihwb2ludCwgJ2NsaWNrJykpXG5cbiAgICBzZWxlY3Rvci5vbignZG91YmxlQ2xpY2snLCAocG9pbnQpID0+XG4gICAgICBzZWxlY3RvckNsaWNrc0hhbmRsZXIocG9pbnQsICdkb3VibGVDbGljaycpXG4gICAgKVxuXG4gICAgc2VsZWN0b3Iub24oJ3NlbGVjdCcsIChib3VuZHMpID0+IHtcbiAgICAgIHRoaXMuX3NlbGVjdFNsb3QoeyAuLi50aGlzLnN0YXRlLCBhY3Rpb246ICdzZWxlY3QnLCBib3VuZHMgfSlcbiAgICAgIHRoaXMuX2luaXRpYWwgPSB7fVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNlbGVjdGluZzogZmFsc2UgfSlcbiAgICAgIG5vdGlmeSh0aGlzLnByb3BzLm9uU2VsZWN0RW5kLCBbdGhpcy5zdGF0ZV0pXG4gICAgfSlcbiAgfVxuXG4gIF90ZWFyZG93blNlbGVjdGFibGUoKSB7XG4gICAgaWYgKCF0aGlzLl9zZWxlY3RvcikgcmV0dXJuXG4gICAgdGhpcy5fc2VsZWN0b3IudGVhcmRvd24oKVxuICAgIHRoaXMuX3NlbGVjdG9yID0gbnVsbFxuICB9XG5cbiAgX3NlbGVjdFNsb3QoeyBlbmRJZHgsIHN0YXJ0SWR4LCBhY3Rpb24sIGJvdW5kcywgYm94IH0pIHtcbiAgICBpZiAoZW5kSWR4ICE9PSAtMSAmJiBzdGFydElkeCAhPT0gLTEpXG4gICAgICB0aGlzLnByb3BzLm9uU2VsZWN0U2xvdCAmJlxuICAgICAgICB0aGlzLnByb3BzLm9uU2VsZWN0U2xvdCh7XG4gICAgICAgICAgc3RhcnQ6IHN0YXJ0SWR4LFxuICAgICAgICAgIGVuZDogZW5kSWR4LFxuICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICBib3VuZHMsXG4gICAgICAgICAgYm94LFxuICAgICAgICAgIHJlc291cmNlSWQ6IHRoaXMucHJvcHMucmVzb3VyY2VJZCxcbiAgICAgICAgfSlcbiAgfVxufVxuXG5CYWNrZ3JvdW5kQ2VsbHMucHJvcFR5cGVzID0ge1xuICBkYXRlOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcbiAgZ2V0Tm93OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuXG4gIGdldHRlcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY29tcG9uZW50czogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuXG4gIGNvbnRhaW5lcjogUHJvcFR5cGVzLmZ1bmMsXG4gIGRheVByb3BHZXR0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBzZWxlY3RhYmxlOiBQcm9wVHlwZXMub25lT2YoW3RydWUsIGZhbHNlLCAnaWdub3JlRXZlbnRzJ10pLFxuICBsb25nUHJlc3NUaHJlc2hvbGQ6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgb25TZWxlY3RTbG90OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvblNlbGVjdEVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VsZWN0U3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIHJhbmdlOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSksXG4gIHJ0bDogUHJvcFR5cGVzLmJvb2wsXG4gIHR5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHJlc291cmNlSWQ6IFByb3BUeXBlcy5hbnksXG5cbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMuYW55LFxufVxuXG5leHBvcnQgZGVmYXVsdCBCYWNrZ3JvdW5kQ2VsbHNcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnXG5pbXBvcnQgRXZlbnRSb3dNaXhpbiBmcm9tICcuL0V2ZW50Um93TWl4aW4nXG5pbXBvcnQgeyBldmVudExldmVscyB9IGZyb20gJy4vdXRpbHMvZXZlbnRMZXZlbHMnXG5pbXBvcnQgcmFuZ2UgZnJvbSAnbG9kYXNoL3JhbmdlJ1xuXG5sZXQgaXNTZWdtZW50SW5TbG90ID0gKHNlZywgc2xvdCkgPT4gc2VnLmxlZnQgPD0gc2xvdCAmJiBzZWcucmlnaHQgPj0gc2xvdFxubGV0IGV2ZW50c0luU2xvdCA9IChzZWdtZW50cywgc2xvdCkgPT5cbiAgc2VnbWVudHMuZmlsdGVyKChzZWcpID0+IGlzU2VnbWVudEluU2xvdChzZWcsIHNsb3QpKS5tYXAoKHNlZykgPT4gc2VnLmV2ZW50KVxuXG5jbGFzcyBFdmVudEVuZGluZ1JvdyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHJlbmRlcigpIHtcbiAgICBsZXQge1xuICAgICAgc2VnbWVudHMsXG4gICAgICBzbG90TWV0cmljczogeyBzbG90cyB9LFxuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgbGV0IHJvd1NlZ21lbnRzID0gZXZlbnRMZXZlbHMoc2VnbWVudHMpLmxldmVsc1swXVxuXG4gICAgbGV0IGN1cnJlbnQgPSAxLFxuICAgICAgbGFzdEVuZCA9IDEsXG4gICAgICByb3cgPSBbXVxuXG4gICAgd2hpbGUgKGN1cnJlbnQgPD0gc2xvdHMpIHtcbiAgICAgIGxldCBrZXkgPSAnX2x2bF8nICsgY3VycmVudFxuXG4gICAgICBsZXQgeyBldmVudCwgbGVmdCwgcmlnaHQsIHNwYW4gfSA9XG4gICAgICAgIHJvd1NlZ21lbnRzLmZpbHRlcigoc2VnKSA9PiBpc1NlZ21lbnRJblNsb3Qoc2VnLCBjdXJyZW50KSlbMF0gfHwge30gLy9lc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICAgIGlmICghZXZlbnQpIHtcbiAgICAgICAgY3VycmVudCsrXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGxldCBnYXAgPSBNYXRoLm1heCgwLCBsZWZ0IC0gbGFzdEVuZClcblxuICAgICAgaWYgKHRoaXMuY2FuUmVuZGVyU2xvdEV2ZW50KGxlZnQsIHNwYW4pKSB7XG4gICAgICAgIGxldCBjb250ZW50ID0gRXZlbnRSb3dNaXhpbi5yZW5kZXJFdmVudCh0aGlzLnByb3BzLCBldmVudClcblxuICAgICAgICBpZiAoZ2FwKSB7XG4gICAgICAgICAgcm93LnB1c2goRXZlbnRSb3dNaXhpbi5yZW5kZXJTcGFuKHNsb3RzLCBnYXAsIGtleSArICdfZ2FwJykpXG4gICAgICAgIH1cblxuICAgICAgICByb3cucHVzaChFdmVudFJvd01peGluLnJlbmRlclNwYW4oc2xvdHMsIHNwYW4sIGtleSwgY29udGVudCkpXG5cbiAgICAgICAgbGFzdEVuZCA9IGN1cnJlbnQgPSByaWdodCArIDFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChnYXApIHtcbiAgICAgICAgICByb3cucHVzaChFdmVudFJvd01peGluLnJlbmRlclNwYW4oc2xvdHMsIGdhcCwga2V5ICsgJ19nYXAnKSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJvdy5wdXNoKFxuICAgICAgICAgIEV2ZW50Um93TWl4aW4ucmVuZGVyU3BhbihcbiAgICAgICAgICAgIHNsb3RzLFxuICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIHRoaXMucmVuZGVyU2hvd01vcmUoc2VnbWVudHMsIGN1cnJlbnQpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIGxhc3RFbmQgPSBjdXJyZW50ID0gY3VycmVudCArIDFcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJyYmMtcm93XCI+e3Jvd308L2Rpdj5cbiAgfVxuXG4gIGNhblJlbmRlclNsb3RFdmVudChzbG90LCBzcGFuKSB7XG4gICAgbGV0IHsgc2VnbWVudHMgfSA9IHRoaXMucHJvcHNcblxuICAgIHJldHVybiByYW5nZShzbG90LCBzbG90ICsgc3BhbikuZXZlcnkoKHMpID0+IHtcbiAgICAgIGNvbnN0IGNvdW50ID0gZXZlbnRzSW5TbG90KHNlZ21lbnRzLCBzKS5sZW5ndGhcblxuICAgICAgcmV0dXJuIGNvdW50ID09PSAxXG4gICAgfSlcbiAgfVxuXG4gIHJlbmRlclNob3dNb3JlKHNlZ21lbnRzLCBzbG90KSB7XG4gICAgbGV0IHsgbG9jYWxpemVyLCBzbG90TWV0cmljcyB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IGV2ZW50cyA9IHNsb3RNZXRyaWNzLmdldEV2ZW50c0ZvclNsb3Qoc2xvdClcbiAgICBjb25zdCByZW1haW5pbmdFdmVudHMgPSBldmVudHNJblNsb3Qoc2VnbWVudHMsIHNsb3QpXG4gICAgY29uc3QgY291bnQgPSByZW1haW5pbmdFdmVudHMubGVuZ3RoXG4gICAgcmV0dXJuIGNvdW50ID8gKFxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAga2V5PXsnc21fJyArIHNsb3R9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xzeCgncmJjLWJ1dHRvbi1saW5rJywgJ3JiYy1zaG93LW1vcmUnKX1cbiAgICAgICAgb25DbGljaz17KGUpID0+IHRoaXMuc2hvd01vcmUoc2xvdCwgZSl9XG4gICAgICA+XG4gICAgICAgIHtsb2NhbGl6ZXIubWVzc2FnZXMuc2hvd01vcmUoY291bnQsIHJlbWFpbmluZ0V2ZW50cywgZXZlbnRzKX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICkgOiAoXG4gICAgICBmYWxzZVxuICAgIClcbiAgfVxuXG4gIHNob3dNb3JlKHNsb3QsIGUpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgdGhpcy5wcm9wcy5vblNob3dNb3JlKHNsb3QsIGUudGFyZ2V0KVxuICB9XG59XG5cbkV2ZW50RW5kaW5nUm93LnByb3BUeXBlcyA9IHtcbiAgc2VnbWVudHM6IFByb3BUeXBlcy5hcnJheSxcbiAgc2xvdHM6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uU2hvd01vcmU6IFByb3BUeXBlcy5mdW5jLFxuICAuLi5FdmVudFJvd01peGluLnByb3BUeXBlcyxcbn1cblxuRXZlbnRFbmRpbmdSb3cuZGVmYXVsdFByb3BzID0ge1xuICAuLi5FdmVudFJvd01peGluLmRlZmF1bHRQcm9wcyxcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXZlbnRFbmRpbmdSb3dcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgU2Nyb2xsYWJsZVdlZWtXcmFwcGVyID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJyYmMtcm93LWNvbnRlbnQtc2Nyb2xsLWNvbnRhaW5lclwiPntjaGlsZHJlbn08L2Rpdj5cbn1cblxuZXhwb3J0IGRlZmF1bHQgU2Nyb2xsYWJsZVdlZWtXcmFwcGVyXG4iLCJpbXBvcnQgbWVtb2l6ZSBmcm9tICdtZW1vaXplLW9uZSdcbmltcG9ydCB7IGV2ZW50U2VnbWVudHMsIGVuZE9mUmFuZ2UsIGV2ZW50TGV2ZWxzIH0gZnJvbSAnLi9ldmVudExldmVscydcblxubGV0IGlzU2VnbWVudEluU2xvdCA9IChzZWcsIHNsb3QpID0+IHNlZy5sZWZ0IDw9IHNsb3QgJiYgc2VnLnJpZ2h0ID49IHNsb3RcblxuY29uc3QgaXNFcXVhbCA9IChhLCBiKSA9PlxuICBhWzBdLnJhbmdlID09PSBiWzBdLnJhbmdlICYmIGFbMF0uZXZlbnRzID09PSBiWzBdLmV2ZW50c1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2xvdE1ldHJpY3MoKSB7XG4gIHJldHVybiBtZW1vaXplKChvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgeyByYW5nZSwgZXZlbnRzLCBtYXhSb3dzLCBtaW5Sb3dzLCBhY2Nlc3NvcnMsIGxvY2FsaXplciB9ID0gb3B0aW9uc1xuICAgIGxldCB7IGZpcnN0LCBsYXN0IH0gPSBlbmRPZlJhbmdlKHsgZGF0ZVJhbmdlOiByYW5nZSwgbG9jYWxpemVyIH0pXG5cbiAgICBsZXQgc2VnbWVudHMgPSBldmVudHMubWFwKChldnQpID0+XG4gICAgICBldmVudFNlZ21lbnRzKGV2dCwgcmFuZ2UsIGFjY2Vzc29ycywgbG9jYWxpemVyKVxuICAgIClcblxuICAgIGxldCB7IGxldmVscywgZXh0cmEgfSA9IGV2ZW50TGV2ZWxzKHNlZ21lbnRzLCBNYXRoLm1heChtYXhSb3dzIC0gMSwgMSkpXG4gICAgLy8gU3VidHJhY3QgMSBmcm9tIG1pblJvd3MgdG8gbm90IGluY2x1ZGUgc2hvd01vcmUgYnV0dG9uIHJvdyB3aGVuXG4gICAgLy8gaXQgd291bGQgYmUgcmVuZGVyZWRcbiAgICBjb25zdCBtaW5FdmVudFJvd3MgPSBleHRyYS5sZW5ndGggPiAwID8gbWluUm93cyAtIDEgOiBtaW5Sb3dzXG4gICAgd2hpbGUgKGxldmVscy5sZW5ndGggPCBtaW5FdmVudFJvd3MpIGxldmVscy5wdXNoKFtdKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZpcnN0LFxuICAgICAgbGFzdCxcblxuICAgICAgbGV2ZWxzLFxuICAgICAgZXh0cmEsXG4gICAgICByYW5nZSxcbiAgICAgIHNsb3RzOiByYW5nZS5sZW5ndGgsXG5cbiAgICAgIGNsb25lKGFyZ3MpIHtcbiAgICAgICAgY29uc3QgbWV0cmljcyA9IGdldFNsb3RNZXRyaWNzKClcbiAgICAgICAgcmV0dXJuIG1ldHJpY3MoeyAuLi5vcHRpb25zLCAuLi5hcmdzIH0pXG4gICAgICB9LFxuXG4gICAgICBnZXREYXRlRm9yU2xvdChzbG90TnVtYmVyKSB7XG4gICAgICAgIHJldHVybiByYW5nZVtzbG90TnVtYmVyXVxuICAgICAgfSxcblxuICAgICAgZ2V0U2xvdEZvckRhdGUoZGF0ZSkge1xuICAgICAgICByZXR1cm4gcmFuZ2UuZmluZCgocikgPT4gbG9jYWxpemVyLmlzU2FtZURhdGUociwgZGF0ZSkpXG4gICAgICB9LFxuXG4gICAgICBnZXRFdmVudHNGb3JTbG90KHNsb3QpIHtcbiAgICAgICAgcmV0dXJuIHNlZ21lbnRzXG4gICAgICAgICAgLmZpbHRlcigoc2VnKSA9PiBpc1NlZ21lbnRJblNsb3Qoc2VnLCBzbG90KSlcbiAgICAgICAgICAubWFwKChzZWcpID0+IHNlZy5ldmVudClcbiAgICAgIH0sXG5cbiAgICAgIGNvbnRpbnVlc1ByaW9yKGV2ZW50KSB7XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZXIuY29udGludWVzUHJpb3IoYWNjZXNzb3JzLnN0YXJ0KGV2ZW50KSwgZmlyc3QpXG4gICAgICB9LFxuXG4gICAgICBjb250aW51ZXNBZnRlcihldmVudCkge1xuICAgICAgICBjb25zdCBzdGFydCA9IGFjY2Vzc29ycy5zdGFydChldmVudClcbiAgICAgICAgY29uc3QgZW5kID0gYWNjZXNzb3JzLmVuZChldmVudClcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplci5jb250aW51ZXNBZnRlcihzdGFydCwgZW5kLCBsYXN0KVxuICAgICAgfSxcbiAgICB9XG4gIH0sIGlzRXF1YWwpXG59XG4iLCJpbXBvcnQgUmVhY3QsIHsgY3JlYXRlUmVmIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4J1xuaW1wb3J0IGdldEhlaWdodCBmcm9tICdkb20taGVscGVycy9oZWlnaHQnXG5pbXBvcnQgcXNhIGZyb20gJ2RvbS1oZWxwZXJzL3F1ZXJ5U2VsZWN0b3JBbGwnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5cbmltcG9ydCBCYWNrZ3JvdW5kQ2VsbHMgZnJvbSAnLi9CYWNrZ3JvdW5kQ2VsbHMnXG5pbXBvcnQgRXZlbnRSb3cgZnJvbSAnLi9FdmVudFJvdydcbmltcG9ydCBFdmVudEVuZGluZ1JvdyBmcm9tICcuL0V2ZW50RW5kaW5nUm93J1xuaW1wb3J0IE5vb3BXcmFwcGVyIGZyb20gJy4vTm9vcFdyYXBwZXInXG5pbXBvcnQgU2Nyb2xsYWJsZVdlZWtXcmFwcGVyIGZyb20gJy4vU2Nyb2xsYWJsZVdlZWtXcmFwcGVyJ1xuaW1wb3J0ICogYXMgRGF0ZVNsb3RNZXRyaWNzIGZyb20gJy4vdXRpbHMvRGF0ZVNsb3RNZXRyaWNzJ1xuXG5jbGFzcyBEYXRlQ29udGVudFJvdyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHtcbiAgICBzdXBlciguLi5hcmdzKVxuXG4gICAgdGhpcy5jb250YWluZXJSZWYgPSBjcmVhdGVSZWYoKVxuICAgIHRoaXMuaGVhZGluZ1Jvd1JlZiA9IGNyZWF0ZVJlZigpXG4gICAgdGhpcy5ldmVudFJvd1JlZiA9IGNyZWF0ZVJlZigpXG5cbiAgICB0aGlzLnNsb3RNZXRyaWNzID0gRGF0ZVNsb3RNZXRyaWNzLmdldFNsb3RNZXRyaWNzKClcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdFNsb3QgPSAoc2xvdCkgPT4ge1xuICAgIGNvbnN0IHsgcmFuZ2UsIG9uU2VsZWN0U2xvdCB9ID0gdGhpcy5wcm9wc1xuXG4gICAgb25TZWxlY3RTbG90KHJhbmdlLnNsaWNlKHNsb3Quc3RhcnQsIHNsb3QuZW5kICsgMSksIHNsb3QpXG4gIH1cblxuICBoYW5kbGVTaG93TW9yZSA9IChzbG90LCB0YXJnZXQpID0+IHtcbiAgICBjb25zdCB7IHJhbmdlLCBvblNob3dNb3JlIH0gPSB0aGlzLnByb3BzXG4gICAgbGV0IG1ldHJpY3MgPSB0aGlzLnNsb3RNZXRyaWNzKHRoaXMucHJvcHMpXG4gICAgbGV0IHJvdyA9IHFzYSh0aGlzLmNvbnRhaW5lclJlZi5jdXJyZW50LCAnLnJiYy1yb3ctYmcnKVswXVxuXG4gICAgbGV0IGNlbGxcbiAgICBpZiAocm93KSBjZWxsID0gcm93LmNoaWxkcmVuW3Nsb3QgLSAxXVxuXG4gICAgbGV0IGV2ZW50cyA9IG1ldHJpY3MuZ2V0RXZlbnRzRm9yU2xvdChzbG90KVxuICAgIG9uU2hvd01vcmUoZXZlbnRzLCByYW5nZVtzbG90IC0gMV0sIGNlbGwsIHNsb3QsIHRhcmdldClcbiAgfVxuXG4gIGdldENvbnRhaW5lciA9ICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gdGhpcy5wcm9wc1xuICAgIHJldHVybiBjb250YWluZXIgPyBjb250YWluZXIoKSA6IHRoaXMuY29udGFpbmVyUmVmLmN1cnJlbnRcbiAgfVxuXG4gIGdldFJvd0xpbWl0KCkge1xuICAgIC8qIEd1ZXNzaW5nIHRoaXMgb25seSBnZXRzIGNhbGxlZCBvbiB0aGUgZHVtbXlSb3cgKi9cbiAgICBjb25zdCBldmVudEhlaWdodCA9IGdldEhlaWdodCh0aGlzLmV2ZW50Um93UmVmLmN1cnJlbnQpXG4gICAgY29uc3QgaGVhZGluZ0hlaWdodCA9IHRoaXMuaGVhZGluZ1Jvd1JlZj8uY3VycmVudFxuICAgICAgPyBnZXRIZWlnaHQodGhpcy5oZWFkaW5nUm93UmVmLmN1cnJlbnQpXG4gICAgICA6IDBcbiAgICBjb25zdCBldmVudFNwYWNlID0gZ2V0SGVpZ2h0KHRoaXMuY29udGFpbmVyUmVmLmN1cnJlbnQpIC0gaGVhZGluZ0hlaWdodFxuXG4gICAgcmV0dXJuIE1hdGgubWF4KE1hdGguZmxvb3IoZXZlbnRTcGFjZSAvIGV2ZW50SGVpZ2h0KSwgMSlcbiAgfVxuXG4gIHJlbmRlckhlYWRpbmdDZWxsID0gKGRhdGUsIGluZGV4KSA9PiB7XG4gICAgbGV0IHsgcmVuZGVySGVhZGVyLCBnZXROb3csIGxvY2FsaXplciB9ID0gdGhpcy5wcm9wc1xuXG4gICAgcmV0dXJuIHJlbmRlckhlYWRlcih7XG4gICAgICBkYXRlLFxuICAgICAga2V5OiBgaGVhZGVyXyR7aW5kZXh9YCxcbiAgICAgIGNsYXNzTmFtZTogY2xzeChcbiAgICAgICAgJ3JiYy1kYXRlLWNlbGwnLFxuICAgICAgICBsb2NhbGl6ZXIuaXNTYW1lRGF0ZShkYXRlLCBnZXROb3coKSkgJiYgJ3JiYy1ub3cnXG4gICAgICApLFxuICAgIH0pXG4gIH1cblxuICByZW5kZXJEdW1teSA9ICgpID0+IHtcbiAgICBsZXQgeyBjbGFzc05hbWUsIHJhbmdlLCByZW5kZXJIZWFkZXIsIHNob3dBbGxFdmVudHMgfSA9IHRoaXMucHJvcHNcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0gcmVmPXt0aGlzLmNvbnRhaW5lclJlZn0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goXG4gICAgICAgICAgICAncmJjLXJvdy1jb250ZW50JyxcbiAgICAgICAgICAgIHNob3dBbGxFdmVudHMgJiYgJ3JiYy1yb3ctY29udGVudC1zY3JvbGxhYmxlJ1xuICAgICAgICAgICl9XG4gICAgICAgID5cbiAgICAgICAgICB7cmVuZGVySGVhZGVyICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLXJvd1wiIHJlZj17dGhpcy5oZWFkaW5nUm93UmVmfT5cbiAgICAgICAgICAgICAge3JhbmdlLm1hcCh0aGlzLnJlbmRlckhlYWRpbmdDZWxsKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYmMtcm93XCIgcmVmPXt0aGlzLmV2ZW50Um93UmVmfT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLXJvdy1zZWdtZW50XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLWV2ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYmMtZXZlbnQtY29udGVudFwiPiZuYnNwOzwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBkYXRlLFxuICAgICAgcnRsLFxuICAgICAgcmFuZ2UsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBzZWxlY3RlZCxcbiAgICAgIHNlbGVjdGFibGUsXG4gICAgICByZW5kZXJGb3JNZWFzdXJlLFxuXG4gICAgICBhY2Nlc3NvcnMsXG4gICAgICBnZXR0ZXJzLFxuICAgICAgY29tcG9uZW50cyxcblxuICAgICAgZ2V0Tm93LFxuICAgICAgcmVuZGVySGVhZGVyLFxuICAgICAgb25TZWxlY3QsXG4gICAgICBsb2NhbGl6ZXIsXG4gICAgICBvblNlbGVjdFN0YXJ0LFxuICAgICAgb25TZWxlY3RFbmQsXG4gICAgICBvbkRvdWJsZUNsaWNrLFxuICAgICAgb25LZXlQcmVzcyxcbiAgICAgIHJlc291cmNlSWQsXG4gICAgICBsb25nUHJlc3NUaHJlc2hvbGQsXG4gICAgICBpc0FsbERheSxcbiAgICAgIHJlc2l6YWJsZSxcbiAgICAgIHNob3dBbGxFdmVudHMsXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGlmIChyZW5kZXJGb3JNZWFzdXJlKSByZXR1cm4gdGhpcy5yZW5kZXJEdW1teSgpXG5cbiAgICBsZXQgbWV0cmljcyA9IHRoaXMuc2xvdE1ldHJpY3ModGhpcy5wcm9wcylcbiAgICBsZXQgeyBsZXZlbHMsIGV4dHJhIH0gPSBtZXRyaWNzXG5cbiAgICBsZXQgU2Nyb2xsYWJsZVdlZWtDb21wb25lbnQgPSBzaG93QWxsRXZlbnRzXG4gICAgICA/IFNjcm9sbGFibGVXZWVrV3JhcHBlclxuICAgICAgOiBOb29wV3JhcHBlclxuICAgIGxldCBXZWVrV3JhcHBlciA9IGNvbXBvbmVudHMud2Vla1dyYXBwZXJcblxuICAgIGNvbnN0IGV2ZW50Um93UHJvcHMgPSB7XG4gICAgICBzZWxlY3RlZCxcbiAgICAgIGFjY2Vzc29ycyxcbiAgICAgIGdldHRlcnMsXG4gICAgICBsb2NhbGl6ZXIsXG4gICAgICBjb21wb25lbnRzLFxuICAgICAgb25TZWxlY3QsXG4gICAgICBvbkRvdWJsZUNsaWNrLFxuICAgICAgb25LZXlQcmVzcyxcbiAgICAgIHJlc291cmNlSWQsXG4gICAgICBzbG90TWV0cmljczogbWV0cmljcyxcbiAgICAgIHJlc2l6YWJsZSxcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0gcm9sZT1cInJvd2dyb3VwXCIgcmVmPXt0aGlzLmNvbnRhaW5lclJlZn0+XG4gICAgICAgIDxCYWNrZ3JvdW5kQ2VsbHNcbiAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICBkYXRlPXtkYXRlfVxuICAgICAgICAgIGdldE5vdz17Z2V0Tm93fVxuICAgICAgICAgIHJ0bD17cnRsfVxuICAgICAgICAgIHJhbmdlPXtyYW5nZX1cbiAgICAgICAgICBzZWxlY3RhYmxlPXtzZWxlY3RhYmxlfVxuICAgICAgICAgIGNvbnRhaW5lcj17dGhpcy5nZXRDb250YWluZXJ9XG4gICAgICAgICAgZ2V0dGVycz17Z2V0dGVyc31cbiAgICAgICAgICBvblNlbGVjdFN0YXJ0PXtvblNlbGVjdFN0YXJ0fVxuICAgICAgICAgIG9uU2VsZWN0RW5kPXtvblNlbGVjdEVuZH1cbiAgICAgICAgICBvblNlbGVjdFNsb3Q9e3RoaXMuaGFuZGxlU2VsZWN0U2xvdH1cbiAgICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICAgIGxvbmdQcmVzc1RocmVzaG9sZD17bG9uZ1ByZXNzVGhyZXNob2xkfVxuICAgICAgICAgIHJlc291cmNlSWQ9e3Jlc291cmNlSWR9XG4gICAgICAgIC8+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChcbiAgICAgICAgICAgICdyYmMtcm93LWNvbnRlbnQnLFxuICAgICAgICAgICAgc2hvd0FsbEV2ZW50cyAmJiAncmJjLXJvdy1jb250ZW50LXNjcm9sbGFibGUnXG4gICAgICAgICAgKX1cbiAgICAgICAgICByb2xlPVwicm93XCJcbiAgICAgICAgPlxuICAgICAgICAgIHtyZW5kZXJIZWFkZXIgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYmMtcm93IFwiIHJlZj17dGhpcy5oZWFkaW5nUm93UmVmfT5cbiAgICAgICAgICAgICAge3JhbmdlLm1hcCh0aGlzLnJlbmRlckhlYWRpbmdDZWxsKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFNjcm9sbGFibGVXZWVrQ29tcG9uZW50PlxuICAgICAgICAgICAgPFdlZWtXcmFwcGVyIGlzQWxsRGF5PXtpc0FsbERheX0gey4uLmV2ZW50Um93UHJvcHN9IHJ0bD17dGhpcy5wcm9wcy5ydGx9PlxuICAgICAgICAgICAgICB7bGV2ZWxzLm1hcCgoc2VncywgaWR4KSA9PiAoXG4gICAgICAgICAgICAgICAgPEV2ZW50Um93IGtleT17aWR4fSBzZWdtZW50cz17c2Vnc30gey4uLmV2ZW50Um93UHJvcHN9IC8+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICB7ISFleHRyYS5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICAgIDxFdmVudEVuZGluZ1Jvd1xuICAgICAgICAgICAgICAgICAgc2VnbWVudHM9e2V4dHJhfVxuICAgICAgICAgICAgICAgICAgb25TaG93TW9yZT17dGhpcy5oYW5kbGVTaG93TW9yZX1cbiAgICAgICAgICAgICAgICAgIHsuLi5ldmVudFJvd1Byb3BzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1dlZWtXcmFwcGVyPlxuICAgICAgICAgIDwvU2Nyb2xsYWJsZVdlZWtDb21wb25lbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG59XG5cbkRhdGVDb250ZW50Um93LnByb3BUeXBlcyA9IHtcbiAgZGF0ZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG4gIGV2ZW50czogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIHJhbmdlOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcblxuICBydGw6IFByb3BUeXBlcy5ib29sLFxuICByZXNpemFibGU6IFByb3BUeXBlcy5ib29sLFxuICByZXNvdXJjZUlkOiBQcm9wVHlwZXMuYW55LFxuICByZW5kZXJGb3JNZWFzdXJlOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVuZGVySGVhZGVyOiBQcm9wVHlwZXMuZnVuYyxcblxuICBjb250YWluZXI6IFByb3BUeXBlcy5mdW5jLFxuICBzZWxlY3RlZDogUHJvcFR5cGVzLm9iamVjdCxcbiAgc2VsZWN0YWJsZTogUHJvcFR5cGVzLm9uZU9mKFt0cnVlLCBmYWxzZSwgJ2lnbm9yZUV2ZW50cyddKSxcbiAgbG9uZ1ByZXNzVGhyZXNob2xkOiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIG9uU2hvd01vcmU6IFByb3BUeXBlcy5mdW5jLFxuICBzaG93QWxsRXZlbnRzOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25TZWxlY3RTbG90OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3Q6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdEVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VsZWN0U3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvbkRvdWJsZUNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25LZXlQcmVzczogUHJvcFR5cGVzLmZ1bmMsXG4gIGRheVByb3BHZXR0ZXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gIGdldE5vdzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgaXNBbGxEYXk6IFByb3BUeXBlcy5ib29sLFxuXG4gIGFjY2Vzc29yczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjb21wb25lbnRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGdldHRlcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG5cbiAgbWluUm93czogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBtYXhSb3dzOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG59XG5cbkRhdGVDb250ZW50Um93LmRlZmF1bHRQcm9wcyA9IHtcbiAgbWluUm93czogMCxcbiAgbWF4Um93czogSW5maW5pdHksXG59XG5cbmV4cG9ydCBkZWZhdWx0IERhdGVDb250ZW50Um93XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4J1xuXG5jbGFzcyBFdmVudENlbGwgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgbGV0IHtcbiAgICAgIHN0eWxlLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgZXZlbnQsXG4gICAgICBzZWxlY3RlZCxcbiAgICAgIGlzQWxsRGF5LFxuICAgICAgb25TZWxlY3QsXG4gICAgICBvbkRvdWJsZUNsaWNrLFxuICAgICAgb25LZXlQcmVzcyxcbiAgICAgIGxvY2FsaXplcixcbiAgICAgIGNvbnRpbnVlc1ByaW9yLFxuICAgICAgY29udGludWVzQWZ0ZXIsXG4gICAgICBhY2Nlc3NvcnMsXG4gICAgICBnZXR0ZXJzLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjb21wb25lbnRzOiB7IGV2ZW50OiBFdmVudCwgZXZlbnRXcmFwcGVyOiBFdmVudFdyYXBwZXIgfSxcbiAgICAgIHNsb3RTdGFydCxcbiAgICAgIHNsb3RFbmQsXG4gICAgICAuLi5wcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgZGVsZXRlIHByb3BzLnJlc2l6YWJsZVxuXG4gICAgbGV0IHRpdGxlID0gYWNjZXNzb3JzLnRpdGxlKGV2ZW50KVxuICAgIGxldCB0b29sdGlwID0gYWNjZXNzb3JzLnRvb2x0aXAoZXZlbnQpXG4gICAgbGV0IGVuZCA9IGFjY2Vzc29ycy5lbmQoZXZlbnQpXG4gICAgbGV0IHN0YXJ0ID0gYWNjZXNzb3JzLnN0YXJ0KGV2ZW50KVxuICAgIGxldCBhbGxEYXkgPSBhY2Nlc3NvcnMuYWxsRGF5KGV2ZW50KVxuXG4gICAgbGV0IHNob3dBc0FsbERheSA9XG4gICAgICBpc0FsbERheSB8fFxuICAgICAgYWxsRGF5IHx8XG4gICAgICBsb2NhbGl6ZXIuZGlmZihzdGFydCwgbG9jYWxpemVyLmNlaWwoZW5kLCAnZGF5JyksICdkYXknKSA+IDFcblxuICAgIGxldCB1c2VyUHJvcHMgPSBnZXR0ZXJzLmV2ZW50UHJvcChldmVudCwgc3RhcnQsIGVuZCwgc2VsZWN0ZWQpXG5cbiAgICBjb25zdCBjb250ZW50ID0gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYmMtZXZlbnQtY29udGVudFwiIHRpdGxlPXt0b29sdGlwIHx8IHVuZGVmaW5lZH0+XG4gICAgICAgIHtFdmVudCA/IChcbiAgICAgICAgICA8RXZlbnRcbiAgICAgICAgICAgIGV2ZW50PXtldmVudH1cbiAgICAgICAgICAgIGNvbnRpbnVlc1ByaW9yPXtjb250aW51ZXNQcmlvcn1cbiAgICAgICAgICAgIGNvbnRpbnVlc0FmdGVyPXtjb250aW51ZXNBZnRlcn1cbiAgICAgICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgICAgIGlzQWxsRGF5PXthbGxEYXl9XG4gICAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICAgIHNsb3RTdGFydD17c2xvdFN0YXJ0fVxuICAgICAgICAgICAgc2xvdEVuZD17c2xvdEVuZH1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIHRpdGxlXG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEV2ZW50V3JhcHBlciB7Li4udGhpcy5wcm9wc30gdHlwZT1cImRhdGVcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICBzdHlsZT17eyAuLi51c2VyUHJvcHMuc3R5bGUsIC4uLnN0eWxlIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KCdyYmMtZXZlbnQnLCBjbGFzc05hbWUsIHVzZXJQcm9wcy5jbGFzc05hbWUsIHtcbiAgICAgICAgICAgICdyYmMtc2VsZWN0ZWQnOiBzZWxlY3RlZCxcbiAgICAgICAgICAgICdyYmMtZXZlbnQtYWxsZGF5Jzogc2hvd0FzQWxsRGF5LFxuICAgICAgICAgICAgJ3JiYy1ldmVudC1jb250aW51ZXMtcHJpb3InOiBjb250aW51ZXNQcmlvcixcbiAgICAgICAgICAgICdyYmMtZXZlbnQtY29udGludWVzLWFmdGVyJzogY29udGludWVzQWZ0ZXIsXG4gICAgICAgICAgfSl9XG4gICAgICAgICAgb25DbGljaz17KGUpID0+IG9uU2VsZWN0ICYmIG9uU2VsZWN0KGV2ZW50LCBlKX1cbiAgICAgICAgICBvbkRvdWJsZUNsaWNrPXsoZSkgPT4gb25Eb3VibGVDbGljayAmJiBvbkRvdWJsZUNsaWNrKGV2ZW50LCBlKX1cbiAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleVByZXNzICYmIG9uS2V5UHJlc3MoZXZlbnQsIGUpfVxuICAgICAgICA+XG4gICAgICAgICAge3R5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJyA/IGNoaWxkcmVuKGNvbnRlbnQpIDogY29udGVudH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0V2ZW50V3JhcHBlcj5cbiAgICApXG4gIH1cbn1cblxuRXZlbnRDZWxsLnByb3BUeXBlcyA9IHtcbiAgZXZlbnQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc2xvdFN0YXJ0OiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcbiAgc2xvdEVuZDogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG5cbiAgcmVzaXphYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc0FsbERheTogUHJvcFR5cGVzLmJvb2wsXG4gIGNvbnRpbnVlc1ByaW9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgY29udGludWVzQWZ0ZXI6IFByb3BUeXBlcy5ib29sLFxuXG4gIGFjY2Vzc29yczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjb21wb25lbnRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGdldHRlcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMub2JqZWN0LFxuXG4gIG9uU2VsZWN0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Eb3VibGVDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uS2V5UHJlc3M6IFByb3BUeXBlcy5mdW5jLFxufVxuXG5leHBvcnQgZGVmYXVsdCBFdmVudENlbGxcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgRXZlbnRSb3dNaXhpbiBmcm9tICcuL0V2ZW50Um93TWl4aW4nXG5cbmNsYXNzIEV2ZW50Um93IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgcmVuZGVyKCkge1xuICAgIGxldCB7XG4gICAgICBzZWdtZW50cyxcbiAgICAgIHNsb3RNZXRyaWNzOiB7IHNsb3RzIH0sXG4gICAgICBjbGFzc05hbWUsXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGxldCBsYXN0RW5kID0gMVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHN4KGNsYXNzTmFtZSwgJ3JiYy1yb3cnKX0+XG4gICAgICAgIHtzZWdtZW50cy5yZWR1Y2UoKHJvdywgeyBldmVudCwgbGVmdCwgcmlnaHQsIHNwYW4gfSwgbGkpID0+IHtcbiAgICAgICAgICBsZXQga2V5ID0gJ19sdmxfJyArIGxpXG4gICAgICAgICAgbGV0IGdhcCA9IGxlZnQgLSBsYXN0RW5kXG5cbiAgICAgICAgICBsZXQgY29udGVudCA9IEV2ZW50Um93TWl4aW4ucmVuZGVyRXZlbnQodGhpcy5wcm9wcywgZXZlbnQpXG5cbiAgICAgICAgICBpZiAoZ2FwKSByb3cucHVzaChFdmVudFJvd01peGluLnJlbmRlclNwYW4oc2xvdHMsIGdhcCwgYCR7a2V5fV9nYXBgKSlcblxuICAgICAgICAgIHJvdy5wdXNoKEV2ZW50Um93TWl4aW4ucmVuZGVyU3BhbihzbG90cywgc3Bhbiwga2V5LCBjb250ZW50KSlcblxuICAgICAgICAgIGxhc3RFbmQgPSByaWdodCArIDFcblxuICAgICAgICAgIHJldHVybiByb3dcbiAgICAgICAgfSwgW10pfVxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG59XG5cbkV2ZW50Um93LnByb3BUeXBlcyA9IHtcbiAgc2VnbWVudHM6IFByb3BUeXBlcy5hcnJheSxcbiAgLi4uRXZlbnRSb3dNaXhpbi5wcm9wVHlwZXMsXG59XG5cbkV2ZW50Um93LmRlZmF1bHRQcm9wcyA9IHtcbiAgLi4uRXZlbnRSb3dNaXhpbi5kZWZhdWx0UHJvcHMsXG59XG5cbmV4cG9ydCBkZWZhdWx0IEV2ZW50Um93XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgRXZlbnRDZWxsIGZyb20gJy4vRXZlbnRDZWxsJ1xuaW1wb3J0IHsgaXNTZWxlY3RlZCB9IGZyb20gJy4vdXRpbHMvc2VsZWN0aW9uJ1xuXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9wcm9wLXR5cGVzICovXG5leHBvcnQgZGVmYXVsdCB7XG4gIHByb3BUeXBlczoge1xuICAgIHNsb3RNZXRyaWNzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG5cbiAgICBzZWxlY3RlZDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBpc0FsbERheTogUHJvcFR5cGVzLmJvb2wsXG5cbiAgICBhY2Nlc3NvcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBjb21wb25lbnRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgZ2V0dGVyczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuXG4gICAgb25TZWxlY3Q6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uRG91YmxlQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uS2V5UHJlc3M6IFByb3BUeXBlcy5mdW5jLFxuICB9LFxuXG4gIGRlZmF1bHRQcm9wczoge1xuICAgIHNlZ21lbnRzOiBbXSxcbiAgICBzZWxlY3RlZDoge30sXG4gIH0sXG5cbiAgcmVuZGVyRXZlbnQocHJvcHMsIGV2ZW50KSB7XG4gICAgbGV0IHtcbiAgICAgIHNlbGVjdGVkLFxuICAgICAgaXNBbGxEYXk6IF8sXG4gICAgICBhY2Nlc3NvcnMsXG4gICAgICBnZXR0ZXJzLFxuICAgICAgb25TZWxlY3QsXG4gICAgICBvbkRvdWJsZUNsaWNrLFxuICAgICAgb25LZXlQcmVzcyxcbiAgICAgIGxvY2FsaXplcixcbiAgICAgIHNsb3RNZXRyaWNzLFxuICAgICAgY29tcG9uZW50cyxcbiAgICAgIHJlc2l6YWJsZSxcbiAgICB9ID0gcHJvcHNcblxuICAgIGxldCBjb250aW51ZXNQcmlvciA9IHNsb3RNZXRyaWNzLmNvbnRpbnVlc1ByaW9yKGV2ZW50KVxuICAgIGxldCBjb250aW51ZXNBZnRlciA9IHNsb3RNZXRyaWNzLmNvbnRpbnVlc0FmdGVyKGV2ZW50KVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxFdmVudENlbGxcbiAgICAgICAgZXZlbnQ9e2V2ZW50fVxuICAgICAgICBnZXR0ZXJzPXtnZXR0ZXJzfVxuICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgYWNjZXNzb3JzPXthY2Nlc3NvcnN9XG4gICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XG4gICAgICAgIG9uU2VsZWN0PXtvblNlbGVjdH1cbiAgICAgICAgb25Eb3VibGVDbGljaz17b25Eb3VibGVDbGlja31cbiAgICAgICAgb25LZXlQcmVzcz17b25LZXlQcmVzc31cbiAgICAgICAgY29udGludWVzUHJpb3I9e2NvbnRpbnVlc1ByaW9yfVxuICAgICAgICBjb250aW51ZXNBZnRlcj17Y29udGludWVzQWZ0ZXJ9XG4gICAgICAgIHNsb3RTdGFydD17c2xvdE1ldHJpY3MuZmlyc3R9XG4gICAgICAgIHNsb3RFbmQ9e3Nsb3RNZXRyaWNzLmxhc3R9XG4gICAgICAgIHNlbGVjdGVkPXtpc1NlbGVjdGVkKGV2ZW50LCBzZWxlY3RlZCl9XG4gICAgICAgIHJlc2l6YWJsZT17cmVzaXphYmxlfVxuICAgICAgLz5cbiAgICApXG4gIH0sXG5cbiAgcmVuZGVyU3BhbihzbG90cywgbGVuLCBrZXksIGNvbnRlbnQgPSAnICcpIHtcbiAgICBsZXQgcGVyID0gKE1hdGguYWJzKGxlbikgLyBzbG90cykgKiAxMDAgKyAnJSdcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGtleT17a2V5fVxuICAgICAgICBjbGFzc05hbWU9XCJyYmMtcm93LXNlZ21lbnRcIlxuICAgICAgICAvLyBJRTEwLzExIG5lZWQgbWF4LXdpZHRoLiBmbGV4LWJhc2lzIGRvZXNuJ3QgcmVzcGVjdCBib3gtc2l6aW5nXG4gICAgICAgIHN0eWxlPXt7IFdlYmtpdEZsZXhCYXNpczogcGVyLCBmbGV4QmFzaXM6IHBlciwgbWF4V2lkdGg6IHBlciB9fVxuICAgICAgPlxuICAgICAgICB7Y29udGVudH1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfSxcbn1cbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgSGVhZGVyID0gKHsgbGFiZWwgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzcGFuIHJvbGU9XCJjb2x1bW5oZWFkZXJcIiBhcmlhLXNvcnQ9XCJub25lXCI+XG4gICAgICB7bGFiZWx9XG4gICAgPC9zcGFuPlxuICApXG59XG5cbkhlYWRlci5wcm9wVHlwZXMgPSB7XG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgSGVhZGVyXG4iLCJmdW5jdGlvbiBOb29wV3JhcHBlcihwcm9wcykge1xuICByZXR1cm4gcHJvcHMuY2hpbGRyZW5cbn1cblxuZXhwb3J0IGRlZmF1bHQgTm9vcFdyYXBwZXJcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBnZXRPZmZzZXQgZnJvbSAnZG9tLWhlbHBlcnMvb2Zmc2V0J1xuXG5pbXBvcnQgdXNlQ2xpY2tPdXRzaWRlIGZyb20gJy4vaG9va3MvdXNlQ2xpY2tPdXRzaWRlJ1xuaW1wb3J0IEV2ZW50Q2VsbCBmcm9tICcuL0V2ZW50Q2VsbCdcbmltcG9ydCB7IGlzU2VsZWN0ZWQgfSBmcm9tICcuL3V0aWxzL3NlbGVjdGlvbidcblxuLyoqXG4gKiBDaGFuZ2VzIHRvIHJlYWN0LW92ZXJsYXlzIGNhdXNlIGlzc3VlIHdpdGggYXV0byBwb3NpdGlvbmluZyxcbiAqIHNvIHdlIG5lZWQgdG8gbWFudWFsbHkgY2FsY3VsYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgcG9wcGVyLFxuICogYW5kIGNvbnN0cmFpbiBpdCB0byB0aGUgTW9udGggY29udGFpbmVyLlxuICovXG5mdW5jdGlvbiBnZXRQb3NpdGlvbih7IHRhcmdldCwgb2Zmc2V0LCBjb250YWluZXIsIGJveCB9KSB7XG4gIGNvbnN0IHsgdG9wLCBsZWZ0LCB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRPZmZzZXQodGFyZ2V0KVxuICBjb25zdCB7XG4gICAgdG9wOiBjVG9wLFxuICAgIGxlZnQ6IGNMZWZ0LFxuICAgIHdpZHRoOiBjV2lkdGgsXG4gICAgaGVpZ2h0OiBjSGVpZ2h0LFxuICB9ID0gZ2V0T2Zmc2V0KGNvbnRhaW5lcilcbiAgY29uc3QgeyB3aWR0aDogYldpZHRoLCBoZWlnaHQ6IGJIZWlnaHQgfSA9IGdldE9mZnNldChib3gpXG4gIGNvbnN0IHZpZXdCb3R0b20gPSBjVG9wICsgY0hlaWdodFxuICBjb25zdCB2aWV3UmlnaHQgPSBjTGVmdCArIGNXaWR0aFxuICBjb25zdCBib3R0b20gPSB0b3AgKyBiSGVpZ2h0XG4gIGNvbnN0IHJpZ2h0ID0gbGVmdCArIGJXaWR0aFxuICBjb25zdCB7IHgsIHkgfSA9IG9mZnNldFxuICBjb25zdCB0b3BPZmZzZXQgPSBib3R0b20gPiB2aWV3Qm90dG9tID8gdG9wIC0gYkhlaWdodCAtIHkgOiB0b3AgKyB5ICsgaGVpZ2h0XG4gIGNvbnN0IGxlZnRPZmZzZXQgPSByaWdodCA+IHZpZXdSaWdodCA/IGxlZnQgKyB4IC0gYldpZHRoICsgd2lkdGggOiBsZWZ0ICsgeFxuXG4gIHJldHVybiB7XG4gICAgdG9wT2Zmc2V0LFxuICAgIGxlZnRPZmZzZXQsXG4gIH1cbn1cblxuZnVuY3Rpb24gUG9wKHtcbiAgY29udGFpbmVyUmVmLFxuICBhY2Nlc3NvcnMsXG4gIGdldHRlcnMsXG4gIHNlbGVjdGVkLFxuICBjb21wb25lbnRzLFxuICBsb2NhbGl6ZXIsXG4gIHBvc2l0aW9uLFxuICBzaG93LFxuICBldmVudHMsXG4gIHNsb3RTdGFydCxcbiAgc2xvdEVuZCxcbiAgb25TZWxlY3QsXG4gIG9uRG91YmxlQ2xpY2ssXG4gIG9uS2V5UHJlc3MsXG4gIGhhbmRsZURyYWdTdGFydCxcbiAgcG9wcGVyUmVmLFxuICB0YXJnZXQsXG4gIG9mZnNldCxcbn0pIHtcbiAgdXNlQ2xpY2tPdXRzaWRlKHsgcmVmOiBwb3BwZXJSZWYsIGNhbGxiYWNrOiBzaG93IH0pXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgeyB0b3BPZmZzZXQsIGxlZnRPZmZzZXQgfSA9IGdldFBvc2l0aW9uKHtcbiAgICAgIHRhcmdldCxcbiAgICAgIG9mZnNldCxcbiAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyUmVmLmN1cnJlbnQsXG4gICAgICBib3g6IHBvcHBlclJlZi5jdXJyZW50LFxuICAgIH0pXG4gICAgcG9wcGVyUmVmLmN1cnJlbnQuc3R5bGUudG9wID0gYCR7dG9wT2Zmc2V0fXB4YFxuICAgIHBvcHBlclJlZi5jdXJyZW50LnN0eWxlLmxlZnQgPSBgJHtsZWZ0T2Zmc2V0fXB4YFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW29mZnNldC54LCBvZmZzZXQueSwgdGFyZ2V0XSlcblxuICBjb25zdCB7IHdpZHRoIH0gPSBwb3NpdGlvblxuICBjb25zdCBzdHlsZSA9IHtcbiAgICBtaW5XaWR0aDogd2lkdGggKyB3aWR0aCAvIDIsXG4gIH1cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHN0eWxlPXtzdHlsZX0gY2xhc3NOYW1lPVwicmJjLW92ZXJsYXlcIiByZWY9e3BvcHBlclJlZn0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJiYy1vdmVybGF5LWhlYWRlclwiPlxuICAgICAgICB7bG9jYWxpemVyLmZvcm1hdChzbG90U3RhcnQsICdkYXlIZWFkZXJGb3JtYXQnKX1cbiAgICAgIDwvZGl2PlxuICAgICAge2V2ZW50cy5tYXAoKGV2ZW50LCBpZHgpID0+IChcbiAgICAgICAgPEV2ZW50Q2VsbFxuICAgICAgICAgIGtleT17aWR4fVxuICAgICAgICAgIHR5cGU9XCJwb3B1cFwiXG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgZXZlbnQ9e2V2ZW50fVxuICAgICAgICAgIGdldHRlcnM9e2dldHRlcnN9XG4gICAgICAgICAgb25TZWxlY3Q9e29uU2VsZWN0fVxuICAgICAgICAgIGFjY2Vzc29ycz17YWNjZXNzb3JzfVxuICAgICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XG4gICAgICAgICAgb25Eb3VibGVDbGljaz17b25Eb3VibGVDbGlja31cbiAgICAgICAgICBvbktleVByZXNzPXtvbktleVByZXNzfVxuICAgICAgICAgIGNvbnRpbnVlc1ByaW9yPXtsb2NhbGl6ZXIubHQoYWNjZXNzb3JzLmVuZChldmVudCksIHNsb3RTdGFydCwgJ2RheScpfVxuICAgICAgICAgIGNvbnRpbnVlc0FmdGVyPXtsb2NhbGl6ZXIuZ3RlKGFjY2Vzc29ycy5zdGFydChldmVudCksIHNsb3RFbmQsICdkYXknKX1cbiAgICAgICAgICBzbG90U3RhcnQ9e3Nsb3RTdGFydH1cbiAgICAgICAgICBzbG90RW5kPXtzbG90RW5kfVxuICAgICAgICAgIHNlbGVjdGVkPXtpc1NlbGVjdGVkKGV2ZW50LCBzZWxlY3RlZCl9XG4gICAgICAgICAgZHJhZ2dhYmxlPXt0cnVlfVxuICAgICAgICAgIG9uRHJhZ1N0YXJ0PXsoKSA9PiBoYW5kbGVEcmFnU3RhcnQoZXZlbnQpfVxuICAgICAgICAgIG9uRHJhZ0VuZD17KCkgPT4gc2hvdygpfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgPC9kaXY+XG4gIClcbn1cblxuY29uc3QgUG9wdXAgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiAoXG4gIDxQb3Agey4uLnByb3BzfSBwb3BwZXJSZWY9e3JlZn0gLz5cbikpXG5Qb3B1cC5wcm9wVHlwZXMgPSB7XG4gIGFjY2Vzc29yczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnZXR0ZXJzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHNlbGVjdGVkOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjb21wb25lbnRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGxvY2FsaXplcjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBwb3NpdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzaG93OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBldmVudHM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzbG90U3RhcnQ6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsXG4gIHNsb3RFbmQ6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICBvblNlbGVjdDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRG91YmxlQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvbktleVByZXNzOiBQcm9wVHlwZXMuZnVuYyxcbiAgaGFuZGxlRHJhZ1N0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9mZnNldDogUHJvcFR5cGVzLnNoYXBlKHsgeDogUHJvcFR5cGVzLm51bWJlciwgeTogUHJvcFR5cGVzLm51bWJlciB9KSxcbn1cbmV4cG9ydCBkZWZhdWx0IFBvcHVwXG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlQ2xpY2tPdXRzaWRlKHsgcmVmLCBjYWxsYmFjayB9KSB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGUpID0+IHtcbiAgICAgIGlmIChyZWYuY3VycmVudCAmJiAhcmVmLmN1cnJlbnQuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgICAgIGNhbGxiYWNrKClcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgfVxuICB9LCBbcmVmLCBjYWxsYmFja10pXG59XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAncmVhY3Qtb3ZlcmxheXMnXG5pbXBvcnQgUG9wdXAgZnJvbSAnLi9Qb3B1cCdcblxuZnVuY3Rpb24gQ2FsT3ZlcmxheSh7XG4gIGNvbnRhaW5lclJlZixcbiAgcG9wdXBPZmZzZXQgPSA1LFxuICBvdmVybGF5LFxuICBhY2Nlc3NvcnMsXG4gIGxvY2FsaXplcixcbiAgY29tcG9uZW50cyxcbiAgZ2V0dGVycyxcbiAgc2VsZWN0ZWQsXG4gIGhhbmRsZVNlbGVjdEV2ZW50LFxuICBoYW5kbGVEb3VibGVDbGlja0V2ZW50LFxuICBoYW5kbGVLZXlQcmVzc0V2ZW50LFxuICBoYW5kbGVEcmFnU3RhcnQsXG4gIG9uSGlkZSxcbiAgb3ZlcmxheURpc3BsYXksXG59KSB7XG4gIGNvbnN0IHBvcHBlclJlZiA9IHVzZVJlZihudWxsKVxuICBpZiAoIW92ZXJsYXkucG9zaXRpb24pIHJldHVybiBudWxsXG5cbiAgbGV0IG9mZnNldCA9IHBvcHVwT2Zmc2V0XG4gIGlmICghaXNOYU4ocG9wdXBPZmZzZXQpKSB7XG4gICAgb2Zmc2V0ID0geyB4OiBwb3B1cE9mZnNldCwgeTogcG9wdXBPZmZzZXQgfVxuICB9XG5cbiAgY29uc3QgeyBwb3NpdGlvbiwgZXZlbnRzLCBkYXRlLCBlbmQgfSA9IG92ZXJsYXlcbiAgcmV0dXJuIChcbiAgICA8T3ZlcmxheVxuICAgICAgcm9vdENsb3NlXG4gICAgICBmbGlwXG4gICAgICBzaG93XG4gICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgb25IaWRlPXtvbkhpZGV9XG4gICAgICB0YXJnZXQ9e292ZXJsYXkudGFyZ2V0fVxuICAgID5cbiAgICAgIHsoeyBwcm9wcyB9KSA9PiAoXG4gICAgICAgIDxQb3B1cFxuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICBjb250YWluZXJSZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgICByZWY9e3BvcHBlclJlZn1cbiAgICAgICAgICB0YXJnZXQ9e292ZXJsYXkudGFyZ2V0fVxuICAgICAgICAgIG9mZnNldD17b2Zmc2V0fVxuICAgICAgICAgIGFjY2Vzc29ycz17YWNjZXNzb3JzfVxuICAgICAgICAgIGdldHRlcnM9e2dldHRlcnN9XG4gICAgICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgcG9zaXRpb249e3Bvc2l0aW9ufVxuICAgICAgICAgIHNob3c9e292ZXJsYXlEaXNwbGF5fVxuICAgICAgICAgIGV2ZW50cz17ZXZlbnRzfVxuICAgICAgICAgIHNsb3RTdGFydD17ZGF0ZX1cbiAgICAgICAgICBzbG90RW5kPXtlbmR9XG4gICAgICAgICAgb25TZWxlY3Q9e2hhbmRsZVNlbGVjdEV2ZW50fVxuICAgICAgICAgIG9uRG91YmxlQ2xpY2s9e2hhbmRsZURvdWJsZUNsaWNrRXZlbnR9XG4gICAgICAgICAgb25LZXlQcmVzcz17aGFuZGxlS2V5UHJlc3NFdmVudH1cbiAgICAgICAgICBoYW5kbGVEcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9PdmVybGF5PlxuICApXG59XG5cbmNvbnN0IFBvcE92ZXJsYXkgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiAoXG4gIDxDYWxPdmVybGF5IHsuLi5wcm9wc30gY29udGFpbmVyUmVmPXtyZWZ9IC8+XG4pKVxuXG5Qb3BPdmVybGF5LnByb3BUeXBlcyA9IHtcbiAgcG9wdXBPZmZzZXQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5udW1iZXIsXG4gICAgUHJvcFR5cGVzLnNoYXBlKHsgeDogUHJvcFR5cGVzLm51bWJlciwgeTogUHJvcFR5cGVzLm51bWJlciB9KSxcbiAgXSksXG4gIG92ZXJsYXk6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgcG9zaXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gICAgZXZlbnRzOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgZGF0ZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG4gICAgZW5kOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcbiAgfSksXG4gIGFjY2Vzc29yczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY29tcG9uZW50czogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnZXR0ZXJzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHNlbGVjdGVkOiBQcm9wVHlwZXMub2JqZWN0LFxuICBoYW5kbGVTZWxlY3RFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gIGhhbmRsZURvdWJsZUNsaWNrRXZlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICBoYW5kbGVLZXlQcmVzc0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgaGFuZGxlRHJhZ1N0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25IaWRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb3ZlcmxheURpc3BsYXk6IFByb3BUeXBlcy5mdW5jLFxufVxuXG5leHBvcnQgZGVmYXVsdCBQb3BPdmVybGF5XG4iLCJpbXBvcnQgY29udGFpbnMgZnJvbSAnZG9tLWhlbHBlcnMvY29udGFpbnMnXG5pbXBvcnQgY2xvc2VzdCBmcm9tICdkb20taGVscGVycy9jbG9zZXN0J1xuaW1wb3J0IGxpc3RlbiBmcm9tICdkb20taGVscGVycy9saXN0ZW4nXG5cbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgaGFuZGxlciwgdGFyZ2V0ID0gZG9jdW1lbnQpIHtcbiAgcmV0dXJuIGxpc3Rlbih0YXJnZXQsIHR5cGUsIGhhbmRsZXIsIHsgcGFzc2l2ZTogZmFsc2UgfSlcbn1cblxuZnVuY3Rpb24gaXNPdmVyQ29udGFpbmVyKGNvbnRhaW5lciwgeCwgeSkge1xuICByZXR1cm4gIWNvbnRhaW5lciB8fCBjb250YWlucyhjb250YWluZXIsIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFdmVudE5vZGVGcm9tUG9pbnQobm9kZSwgeyBjbGllbnRYLCBjbGllbnRZIH0pIHtcbiAgbGV0IHRhcmdldCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoY2xpZW50WCwgY2xpZW50WSlcbiAgcmV0dXJuIGNsb3Nlc3QodGFyZ2V0LCAnLnJiYy1ldmVudCcsIG5vZGUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaG93TW9yZU5vZGVGcm9tUG9pbnQobm9kZSwgeyBjbGllbnRYLCBjbGllbnRZIH0pIHtcbiAgbGV0IHRhcmdldCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoY2xpZW50WCwgY2xpZW50WSlcbiAgcmV0dXJuIGNsb3Nlc3QodGFyZ2V0LCAnLnJiYy1zaG93LW1vcmUnLCBub2RlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFdmVudChub2RlLCBib3VuZHMpIHtcbiAgcmV0dXJuICEhZ2V0RXZlbnROb2RlRnJvbVBvaW50KG5vZGUsIGJvdW5kcylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2hvd01vcmUobm9kZSwgYm91bmRzKSB7XG4gIHJldHVybiAhIWdldFNob3dNb3JlTm9kZUZyb21Qb2ludChub2RlLCBib3VuZHMpXG59XG5cbmZ1bmN0aW9uIGdldEV2ZW50Q29vcmRpbmF0ZXMoZSkge1xuICBsZXQgdGFyZ2V0ID0gZVxuXG4gIGlmIChlLnRvdWNoZXMgJiYgZS50b3VjaGVzLmxlbmd0aCkge1xuICAgIHRhcmdldCA9IGUudG91Y2hlc1swXVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjbGllbnRYOiB0YXJnZXQuY2xpZW50WCxcbiAgICBjbGllbnRZOiB0YXJnZXQuY2xpZW50WSxcbiAgICBwYWdlWDogdGFyZ2V0LnBhZ2VYLFxuICAgIHBhZ2VZOiB0YXJnZXQucGFnZVksXG4gIH1cbn1cblxuY29uc3QgY2xpY2tUb2xlcmFuY2UgPSA1XG5jb25zdCBjbGlja0ludGVydmFsID0gMjUwXG5cbmNsYXNzIFNlbGVjdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIG5vZGUsXG4gICAgeyBnbG9iYWwgPSBmYWxzZSwgbG9uZ1ByZXNzVGhyZXNob2xkID0gMjUwLCB2YWxpZENvbnRhaW5lcnMgPSBbXSB9ID0ge31cbiAgKSB7XG4gICAgdGhpcy5faW5pdGlhbEV2ZW50ID0gbnVsbFxuICAgIHRoaXMuc2VsZWN0aW5nID0gZmFsc2VcbiAgICB0aGlzLmlzRGV0YWNoZWQgPSBmYWxzZVxuICAgIHRoaXMuY29udGFpbmVyID0gbm9kZVxuICAgIHRoaXMuZ2xvYmFsTW91c2UgPSAhbm9kZSB8fCBnbG9iYWxcbiAgICB0aGlzLmxvbmdQcmVzc1RocmVzaG9sZCA9IGxvbmdQcmVzc1RocmVzaG9sZFxuICAgIHRoaXMudmFsaWRDb250YWluZXJzID0gdmFsaWRDb250YWluZXJzXG5cbiAgICB0aGlzLl9saXN0ZW5lcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpXG5cbiAgICB0aGlzLl9oYW5kbGVJbml0aWFsRXZlbnQgPSB0aGlzLl9oYW5kbGVJbml0aWFsRXZlbnQuYmluZCh0aGlzKVxuICAgIHRoaXMuX2hhbmRsZU1vdmVFdmVudCA9IHRoaXMuX2hhbmRsZU1vdmVFdmVudC5iaW5kKHRoaXMpXG4gICAgdGhpcy5faGFuZGxlVGVybWluYXRpbmdFdmVudCA9IHRoaXMuX2hhbmRsZVRlcm1pbmF0aW5nRXZlbnQuYmluZCh0aGlzKVxuICAgIHRoaXMuX2tleUxpc3RlbmVyID0gdGhpcy5fa2V5TGlzdGVuZXIuYmluZCh0aGlzKVxuICAgIHRoaXMuX2Ryb3BGcm9tT3V0c2lkZUxpc3RlbmVyID0gdGhpcy5fZHJvcEZyb21PdXRzaWRlTGlzdGVuZXIuYmluZCh0aGlzKVxuICAgIHRoaXMuX2RyYWdPdmVyRnJvbU91dHNpZGVMaXN0ZW5lciA9XG4gICAgICB0aGlzLl9kcmFnT3ZlckZyb21PdXRzaWRlTGlzdGVuZXIuYmluZCh0aGlzKVxuXG4gICAgLy8gRml4ZXMgYW4gaU9TIDEwIGJ1ZyB3aGVyZSBzY3JvbGxpbmcgY291bGQgbm90IGJlIHByZXZlbnRlZCBvbiB0aGUgd2luZG93LlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tZXRhZml6enkvZmxpY2tpdHkvaXNzdWVzLzQ1NyNpc3N1ZWNvbW1lbnQtMjU0NTAxMzU2XG4gICAgdGhpcy5fcmVtb3ZlVG91Y2hNb3ZlV2luZG93TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ3RvdWNobW92ZScsXG4gICAgICAoKSA9PiB7fSxcbiAgICAgIHdpbmRvd1xuICAgIClcbiAgICB0aGlzLl9yZW1vdmVLZXlEb3duTGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fa2V5TGlzdGVuZXIpXG4gICAgdGhpcy5fcmVtb3ZlS2V5VXBMaXN0ZW5lciA9IGFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5fa2V5TGlzdGVuZXIpXG4gICAgdGhpcy5fcmVtb3ZlRHJvcEZyb21PdXRzaWRlTGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2Ryb3AnLFxuICAgICAgdGhpcy5fZHJvcEZyb21PdXRzaWRlTGlzdGVuZXJcbiAgICApXG4gICAgdGhpcy5fcmVtb3ZlRHJhZ092ZXJGcm9tT3V0c2lkZUxpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdkcmFnb3ZlcicsXG4gICAgICB0aGlzLl9kcmFnT3ZlckZyb21PdXRzaWRlTGlzdGVuZXJcbiAgICApXG4gICAgdGhpcy5fYWRkSW5pdGlhbEV2ZW50TGlzdGVuZXIoKVxuICB9XG5cbiAgb24odHlwZSwgaGFuZGxlcikge1xuICAgIGxldCBoYW5kbGVycyA9IHRoaXMuX2xpc3RlbmVyc1t0eXBlXSB8fCAodGhpcy5fbGlzdGVuZXJzW3R5cGVdID0gW10pXG5cbiAgICBoYW5kbGVycy5wdXNoKGhhbmRsZXIpXG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVtb3ZlKCkge1xuICAgICAgICBsZXQgaWR4ID0gaGFuZGxlcnMuaW5kZXhPZihoYW5kbGVyKVxuICAgICAgICBpZiAoaWR4ICE9PSAtMSkgaGFuZGxlcnMuc3BsaWNlKGlkeCwgMSlcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgZW1pdCh0eXBlLCAuLi5hcmdzKSB7XG4gICAgbGV0IHJlc3VsdFxuICAgIGxldCBoYW5kbGVycyA9IHRoaXMuX2xpc3RlbmVyc1t0eXBlXSB8fCBbXVxuICAgIGhhbmRsZXJzLmZvckVhY2goKGZuKSA9PiB7XG4gICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHJlc3VsdCA9IGZuKC4uLmFyZ3MpXG4gICAgfSlcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICB0ZWFyZG93bigpIHtcbiAgICB0aGlzLl9pbml0aWFsRXZlbnQgPSBudWxsXG4gICAgdGhpcy5faW5pdGlhbEV2ZW50RGF0YSA9IG51bGxcbiAgICB0aGlzLl9zZWxlY3RSZWN0ID0gbnVsbFxuICAgIHRoaXMuc2VsZWN0aW5nID0gZmFsc2VcbiAgICB0aGlzLl9sYXN0Q2xpY2tEYXRhID0gbnVsbFxuICAgIHRoaXMuaXNEZXRhY2hlZCA9IHRydWVcbiAgICB0aGlzLl9saXN0ZW5lcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpXG4gICAgdGhpcy5fcmVtb3ZlVG91Y2hNb3ZlV2luZG93TGlzdGVuZXIgJiYgdGhpcy5fcmVtb3ZlVG91Y2hNb3ZlV2luZG93TGlzdGVuZXIoKVxuICAgIHRoaXMuX3JlbW92ZUluaXRpYWxFdmVudExpc3RlbmVyICYmIHRoaXMuX3JlbW92ZUluaXRpYWxFdmVudExpc3RlbmVyKClcbiAgICB0aGlzLl9yZW1vdmVFbmRMaXN0ZW5lciAmJiB0aGlzLl9yZW1vdmVFbmRMaXN0ZW5lcigpXG4gICAgdGhpcy5fb25Fc2NMaXN0ZW5lciAmJiB0aGlzLl9vbkVzY0xpc3RlbmVyKClcbiAgICB0aGlzLl9yZW1vdmVNb3ZlTGlzdGVuZXIgJiYgdGhpcy5fcmVtb3ZlTW92ZUxpc3RlbmVyKClcbiAgICB0aGlzLl9yZW1vdmVLZXlVcExpc3RlbmVyICYmIHRoaXMuX3JlbW92ZUtleVVwTGlzdGVuZXIoKVxuICAgIHRoaXMuX3JlbW92ZUtleURvd25MaXN0ZW5lciAmJiB0aGlzLl9yZW1vdmVLZXlEb3duTGlzdGVuZXIoKVxuICAgIHRoaXMuX3JlbW92ZURyb3BGcm9tT3V0c2lkZUxpc3RlbmVyICYmIHRoaXMuX3JlbW92ZURyb3BGcm9tT3V0c2lkZUxpc3RlbmVyKClcbiAgICB0aGlzLl9yZW1vdmVEcmFnT3ZlckZyb21PdXRzaWRlTGlzdGVuZXIgJiZcbiAgICAgIHRoaXMuX3JlbW92ZURyYWdPdmVyRnJvbU91dHNpZGVMaXN0ZW5lcigpXG4gIH1cblxuICBpc1NlbGVjdGVkKG5vZGUpIHtcbiAgICBsZXQgYm94ID0gdGhpcy5fc2VsZWN0UmVjdFxuXG4gICAgaWYgKCFib3ggfHwgIXRoaXMuc2VsZWN0aW5nKSByZXR1cm4gZmFsc2VcblxuICAgIHJldHVybiBvYmplY3RzQ29sbGlkZShib3gsIGdldEJvdW5kc0Zvck5vZGUobm9kZSkpXG4gIH1cblxuICBmaWx0ZXIoaXRlbXMpIHtcbiAgICBsZXQgYm94ID0gdGhpcy5fc2VsZWN0UmVjdFxuXG4gICAgLy9ub3Qgc2VsZWN0aW5nXG4gICAgaWYgKCFib3ggfHwgIXRoaXMuc2VsZWN0aW5nKSByZXR1cm4gW11cblxuICAgIHJldHVybiBpdGVtcy5maWx0ZXIodGhpcy5pc1NlbGVjdGVkLCB0aGlzKVxuICB9XG5cbiAgLy8gQWRkcyBhIGxpc3RlbmVyIHRoYXQgd2lsbCBjYWxsIHRoZSBoYW5kbGVyIG9ubHkgYWZ0ZXIgdGhlIHVzZXIgaGFzIHByZXNzZWQgb24gdGhlIHNjcmVlblxuICAvLyB3aXRob3V0IG1vdmluZyB0aGVpciBmaW5nZXIgZm9yIDI1MG1zLlxuICBfYWRkTG9uZ1ByZXNzTGlzdGVuZXIoaGFuZGxlciwgaW5pdGlhbEV2ZW50KSB7XG4gICAgbGV0IHRpbWVyID0gbnVsbFxuICAgIGxldCByZW1vdmVUb3VjaE1vdmVMaXN0ZW5lciA9IG51bGxcbiAgICBsZXQgcmVtb3ZlVG91Y2hFbmRMaXN0ZW5lciA9IG51bGxcbiAgICBjb25zdCBoYW5kbGVUb3VjaFN0YXJ0ID0gKGluaXRpYWxFdmVudCkgPT4ge1xuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY2xlYW51cCgpXG4gICAgICAgIGhhbmRsZXIoaW5pdGlhbEV2ZW50KVxuICAgICAgfSwgdGhpcy5sb25nUHJlc3NUaHJlc2hvbGQpXG4gICAgICByZW1vdmVUb3VjaE1vdmVMaXN0ZW5lciA9IGFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsICgpID0+IGNsZWFudXAoKSlcbiAgICAgIHJlbW92ZVRvdWNoRW5kTGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsICgpID0+IGNsZWFudXAoKSlcbiAgICB9XG4gICAgY29uc3QgcmVtb3ZlVG91Y2hTdGFydExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICd0b3VjaHN0YXJ0JyxcbiAgICAgIGhhbmRsZVRvdWNoU3RhcnRcbiAgICApXG4gICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcbiAgICAgIGlmICh0aW1lcikge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpXG4gICAgICB9XG4gICAgICBpZiAocmVtb3ZlVG91Y2hNb3ZlTGlzdGVuZXIpIHtcbiAgICAgICAgcmVtb3ZlVG91Y2hNb3ZlTGlzdGVuZXIoKVxuICAgICAgfVxuICAgICAgaWYgKHJlbW92ZVRvdWNoRW5kTGlzdGVuZXIpIHtcbiAgICAgICAgcmVtb3ZlVG91Y2hFbmRMaXN0ZW5lcigpXG4gICAgICB9XG5cbiAgICAgIHRpbWVyID0gbnVsbFxuICAgICAgcmVtb3ZlVG91Y2hNb3ZlTGlzdGVuZXIgPSBudWxsXG4gICAgICByZW1vdmVUb3VjaEVuZExpc3RlbmVyID0gbnVsbFxuICAgIH1cblxuICAgIGlmIChpbml0aWFsRXZlbnQpIHtcbiAgICAgIGhhbmRsZVRvdWNoU3RhcnQoaW5pdGlhbEV2ZW50KVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhbnVwKClcbiAgICAgIHJlbW92ZVRvdWNoU3RhcnRMaXN0ZW5lcigpXG4gICAgfVxuICB9XG5cbiAgLy8gTGlzdGVuIGZvciBtb3VzZWRvd24gYW5kIHRvdWNoc3RhcnQgZXZlbnRzLiBXaGVuIG9uZSBpcyByZWNlaXZlZCwgZGlzYWJsZSB0aGUgb3RoZXIgYW5kIHNldHVwXG4gIC8vIGZ1dHVyZSBldmVudCBoYW5kbGluZyBiYXNlZCBvbiB0aGUgdHlwZSBvZiBldmVudC5cbiAgX2FkZEluaXRpYWxFdmVudExpc3RlbmVyKCkge1xuICAgIGNvbnN0IHJlbW92ZU1vdXNlRG93bkxpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgKGUpID0+IHtcbiAgICAgIHRoaXMuX3JlbW92ZUluaXRpYWxFdmVudExpc3RlbmVyKClcbiAgICAgIHRoaXMuX2hhbmRsZUluaXRpYWxFdmVudChlKVxuICAgICAgdGhpcy5fcmVtb3ZlSW5pdGlhbEV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnbW91c2Vkb3duJyxcbiAgICAgICAgdGhpcy5faGFuZGxlSW5pdGlhbEV2ZW50XG4gICAgICApXG4gICAgfSlcbiAgICBjb25zdCByZW1vdmVUb3VjaFN0YXJ0TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgKGUpID0+IHtcbiAgICAgIHRoaXMuX3JlbW92ZUluaXRpYWxFdmVudExpc3RlbmVyKClcbiAgICAgIHRoaXMuX3JlbW92ZUluaXRpYWxFdmVudExpc3RlbmVyID0gdGhpcy5fYWRkTG9uZ1ByZXNzTGlzdGVuZXIoXG4gICAgICAgIHRoaXMuX2hhbmRsZUluaXRpYWxFdmVudCxcbiAgICAgICAgZVxuICAgICAgKVxuICAgIH0pXG5cbiAgICB0aGlzLl9yZW1vdmVJbml0aWFsRXZlbnRMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgIHJlbW92ZU1vdXNlRG93bkxpc3RlbmVyKClcbiAgICAgIHJlbW92ZVRvdWNoU3RhcnRMaXN0ZW5lcigpXG4gICAgfVxuICB9XG5cbiAgX2Ryb3BGcm9tT3V0c2lkZUxpc3RlbmVyKGUpIHtcbiAgICBjb25zdCB7IHBhZ2VYLCBwYWdlWSwgY2xpZW50WCwgY2xpZW50WSB9ID0gZ2V0RXZlbnRDb29yZGluYXRlcyhlKVxuXG4gICAgdGhpcy5lbWl0KCdkcm9wRnJvbU91dHNpZGUnLCB7XG4gICAgICB4OiBwYWdlWCxcbiAgICAgIHk6IHBhZ2VZLFxuICAgICAgY2xpZW50WDogY2xpZW50WCxcbiAgICAgIGNsaWVudFk6IGNsaWVudFksXG4gICAgfSlcblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICB9XG5cbiAgX2RyYWdPdmVyRnJvbU91dHNpZGVMaXN0ZW5lcihlKSB7XG4gICAgY29uc3QgeyBwYWdlWCwgcGFnZVksIGNsaWVudFgsIGNsaWVudFkgfSA9IGdldEV2ZW50Q29vcmRpbmF0ZXMoZSlcblxuICAgIHRoaXMuZW1pdCgnZHJhZ092ZXJGcm9tT3V0c2lkZScsIHtcbiAgICAgIHg6IHBhZ2VYLFxuICAgICAgeTogcGFnZVksXG4gICAgICBjbGllbnRYOiBjbGllbnRYLFxuICAgICAgY2xpZW50WTogY2xpZW50WSxcbiAgICB9KVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gIH1cblxuICBfaGFuZGxlSW5pdGlhbEV2ZW50KGUpIHtcbiAgICB0aGlzLl9pbml0aWFsRXZlbnQgPSBlXG4gICAgaWYgKHRoaXMuaXNEZXRhY2hlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgeyBjbGllbnRYLCBjbGllbnRZLCBwYWdlWCwgcGFnZVkgfSA9IGdldEV2ZW50Q29vcmRpbmF0ZXMoZSlcbiAgICBsZXQgbm9kZSA9IHRoaXMuY29udGFpbmVyKCksXG4gICAgICBjb2xsaWRlcyxcbiAgICAgIG9mZnNldERhdGFcblxuICAgIC8vIFJpZ2h0IGNsaWNrc1xuICAgIGlmIChcbiAgICAgIGUud2hpY2ggPT09IDMgfHxcbiAgICAgIGUuYnV0dG9uID09PSAyIHx8XG4gICAgICAhaXNPdmVyQ29udGFpbmVyKG5vZGUsIGNsaWVudFgsIGNsaWVudFkpXG4gICAgKVxuICAgICAgcmV0dXJuXG5cbiAgICBpZiAoIXRoaXMuZ2xvYmFsTW91c2UgJiYgbm9kZSAmJiAhY29udGFpbnMobm9kZSwgZS50YXJnZXQpKSB7XG4gICAgICBsZXQgeyB0b3AsIGxlZnQsIGJvdHRvbSwgcmlnaHQgfSA9IG5vcm1hbGl6ZURpc3RhbmNlKDApXG5cbiAgICAgIG9mZnNldERhdGEgPSBnZXRCb3VuZHNGb3JOb2RlKG5vZGUpXG5cbiAgICAgIGNvbGxpZGVzID0gb2JqZWN0c0NvbGxpZGUoXG4gICAgICAgIHtcbiAgICAgICAgICB0b3A6IG9mZnNldERhdGEudG9wIC0gdG9wLFxuICAgICAgICAgIGxlZnQ6IG9mZnNldERhdGEubGVmdCAtIGxlZnQsXG4gICAgICAgICAgYm90dG9tOiBvZmZzZXREYXRhLmJvdHRvbSArIGJvdHRvbSxcbiAgICAgICAgICByaWdodDogb2Zmc2V0RGF0YS5yaWdodCArIHJpZ2h0LFxuICAgICAgICB9LFxuICAgICAgICB7IHRvcDogcGFnZVksIGxlZnQ6IHBhZ2VYIH1cbiAgICAgIClcblxuICAgICAgaWYgKCFjb2xsaWRlcykgcmV0dXJuXG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMuZW1pdChcbiAgICAgICdiZWZvcmVTZWxlY3QnLFxuICAgICAgKHRoaXMuX2luaXRpYWxFdmVudERhdGEgPSB7XG4gICAgICAgIGlzVG91Y2g6IC9edG91Y2gvLnRlc3QoZS50eXBlKSxcbiAgICAgICAgeDogcGFnZVgsXG4gICAgICAgIHk6IHBhZ2VZLFxuICAgICAgICBjbGllbnRYLFxuICAgICAgICBjbGllbnRZLFxuICAgICAgfSlcbiAgICApXG5cbiAgICBpZiAocmVzdWx0ID09PSBmYWxzZSkgcmV0dXJuXG5cbiAgICBzd2l0Y2ggKGUudHlwZSkge1xuICAgICAgY2FzZSAnbW91c2Vkb3duJzpcbiAgICAgICAgdGhpcy5fcmVtb3ZlRW5kTGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICdtb3VzZXVwJyxcbiAgICAgICAgICB0aGlzLl9oYW5kbGVUZXJtaW5hdGluZ0V2ZW50XG4gICAgICAgIClcbiAgICAgICAgdGhpcy5fb25Fc2NMaXN0ZW5lciA9IGFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgJ2tleWRvd24nLFxuICAgICAgICAgIHRoaXMuX2hhbmRsZVRlcm1pbmF0aW5nRXZlbnRcbiAgICAgICAgKVxuICAgICAgICB0aGlzLl9yZW1vdmVNb3ZlTGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICdtb3VzZW1vdmUnLFxuICAgICAgICAgIHRoaXMuX2hhbmRsZU1vdmVFdmVudFxuICAgICAgICApXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICd0b3VjaHN0YXJ0JzpcbiAgICAgICAgdGhpcy5faGFuZGxlTW92ZUV2ZW50KGUpXG4gICAgICAgIHRoaXMuX3JlbW92ZUVuZExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAndG91Y2hlbmQnLFxuICAgICAgICAgIHRoaXMuX2hhbmRsZVRlcm1pbmF0aW5nRXZlbnRcbiAgICAgICAgKVxuICAgICAgICB0aGlzLl9yZW1vdmVNb3ZlTGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICd0b3VjaG1vdmUnLFxuICAgICAgICAgIHRoaXMuX2hhbmRsZU1vdmVFdmVudFxuICAgICAgICApXG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIHdoZXRoZXIgcHJvdmlkZWQgZXZlbnQgdGFyZ2V0IGVsZW1lbnRcbiAgLy8gLSBpcyBjb250YWluZWQgd2l0aGluIGEgdmFsaWQgY29udGFpbmVyXG4gIF9pc1dpdGhpblZhbGlkQ29udGFpbmVyKGUpIHtcbiAgICBjb25zdCBldmVudFRhcmdldCA9IGUudGFyZ2V0XG4gICAgY29uc3QgY29udGFpbmVycyA9IHRoaXMudmFsaWRDb250YWluZXJzXG5cbiAgICBpZiAoIWNvbnRhaW5lcnMgfHwgIWNvbnRhaW5lcnMubGVuZ3RoIHx8ICFldmVudFRhcmdldCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGFpbmVycy5zb21lKCh0YXJnZXQpID0+ICEhZXZlbnRUYXJnZXQuY2xvc2VzdCh0YXJnZXQpKVxuICB9XG5cbiAgX2hhbmRsZVRlcm1pbmF0aW5nRXZlbnQoZSkge1xuICAgIGNvbnN0IHNlbGVjdGluZyA9IHRoaXMuc2VsZWN0aW5nXG4gICAgY29uc3QgYm91bmRzID0gdGhpcy5fc2VsZWN0UmVjdFxuICAgIC8vIElmIGl0J3Mgbm90IGluIHNlbGVjdGluZyBzdGF0ZSwgaXQncyBhIGNsaWNrIGV2ZW50XG4gICAgaWYgKCFzZWxlY3RpbmcgJiYgZS50eXBlLmluY2x1ZGVzKCdrZXknKSkge1xuICAgICAgZSA9IHRoaXMuX2luaXRpYWxFdmVudFxuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0aW5nID0gZmFsc2VcbiAgICB0aGlzLl9yZW1vdmVFbmRMaXN0ZW5lciAmJiB0aGlzLl9yZW1vdmVFbmRMaXN0ZW5lcigpXG4gICAgdGhpcy5fcmVtb3ZlTW92ZUxpc3RlbmVyICYmIHRoaXMuX3JlbW92ZU1vdmVMaXN0ZW5lcigpXG5cbiAgICB0aGlzLl9zZWxlY3RSZWN0ID0gbnVsbFxuICAgIHRoaXMuX2luaXRpYWxFdmVudCA9IG51bGxcbiAgICB0aGlzLl9pbml0aWFsRXZlbnREYXRhID0gbnVsbFxuICAgIGlmICghZSkgcmV0dXJuXG5cbiAgICBsZXQgaW5Sb290ID0gIXRoaXMuY29udGFpbmVyIHx8IGNvbnRhaW5zKHRoaXMuY29udGFpbmVyKCksIGUudGFyZ2V0KVxuICAgIGxldCBpc1dpdGhpblZhbGlkQ29udGFpbmVyID0gdGhpcy5faXNXaXRoaW5WYWxpZENvbnRhaW5lcihlKVxuXG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJyB8fCAhaXNXaXRoaW5WYWxpZENvbnRhaW5lcikge1xuICAgICAgcmV0dXJuIHRoaXMuZW1pdCgncmVzZXQnKVxuICAgIH1cblxuICAgIGlmICghc2VsZWN0aW5nICYmIGluUm9vdCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2hhbmRsZUNsaWNrRXZlbnQoZSlcbiAgICB9XG5cbiAgICAvLyBVc2VyIGRyYWctY2xpY2tlZCBpbiB0aGUgU2VsZWN0YWJsZSBhcmVhXG4gICAgaWYgKHNlbGVjdGluZykgcmV0dXJuIHRoaXMuZW1pdCgnc2VsZWN0JywgYm91bmRzKVxuXG4gICAgcmV0dXJuIHRoaXMuZW1pdCgncmVzZXQnKVxuICB9XG5cbiAgX2hhbmRsZUNsaWNrRXZlbnQoZSkge1xuICAgIGNvbnN0IHsgcGFnZVgsIHBhZ2VZLCBjbGllbnRYLCBjbGllbnRZIH0gPSBnZXRFdmVudENvb3JkaW5hdGVzKGUpXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKClcblxuICAgIGlmIChcbiAgICAgIHRoaXMuX2xhc3RDbGlja0RhdGEgJiZcbiAgICAgIG5vdyAtIHRoaXMuX2xhc3RDbGlja0RhdGEudGltZXN0YW1wIDwgY2xpY2tJbnRlcnZhbFxuICAgICkge1xuICAgICAgLy8gRG91YmxlIGNsaWNrIGV2ZW50XG4gICAgICB0aGlzLl9sYXN0Q2xpY2tEYXRhID0gbnVsbFxuICAgICAgcmV0dXJuIHRoaXMuZW1pdCgnZG91YmxlQ2xpY2snLCB7XG4gICAgICAgIHg6IHBhZ2VYLFxuICAgICAgICB5OiBwYWdlWSxcbiAgICAgICAgY2xpZW50WDogY2xpZW50WCxcbiAgICAgICAgY2xpZW50WTogY2xpZW50WSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQ2xpY2sgZXZlbnRcbiAgICB0aGlzLl9sYXN0Q2xpY2tEYXRhID0ge1xuICAgICAgdGltZXN0YW1wOiBub3csXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmVtaXQoJ2NsaWNrJywge1xuICAgICAgeDogcGFnZVgsXG4gICAgICB5OiBwYWdlWSxcbiAgICAgIGNsaWVudFg6IGNsaWVudFgsXG4gICAgICBjbGllbnRZOiBjbGllbnRZLFxuICAgIH0pXG4gIH1cblxuICBfaGFuZGxlTW92ZUV2ZW50KGUpIHtcbiAgICBpZiAodGhpcy5faW5pdGlhbEV2ZW50RGF0YSA9PT0gbnVsbCB8fCB0aGlzLmlzRGV0YWNoZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGxldCB7IHgsIHkgfSA9IHRoaXMuX2luaXRpYWxFdmVudERhdGFcbiAgICBjb25zdCB7IHBhZ2VYLCBwYWdlWSB9ID0gZ2V0RXZlbnRDb29yZGluYXRlcyhlKVxuICAgIGxldCB3ID0gTWF0aC5hYnMoeCAtIHBhZ2VYKVxuICAgIGxldCBoID0gTWF0aC5hYnMoeSAtIHBhZ2VZKVxuXG4gICAgbGV0IGxlZnQgPSBNYXRoLm1pbihwYWdlWCwgeCksXG4gICAgICB0b3AgPSBNYXRoLm1pbihwYWdlWSwgeSksXG4gICAgICBvbGQgPSB0aGlzLnNlbGVjdGluZ1xuICAgIGNvbnN0IGNsaWNrID0gdGhpcy5pc0NsaWNrKHBhZ2VYLCBwYWdlWSlcbiAgICAvLyBQcmV2ZW50IGVtaXR0aW5nIHNlbGVjdFN0YXJ0IGV2ZW50IHVudGlsIG1vdXNlIGlzIG1vdmVkLlxuICAgIC8vIGluIENocm9tZSBvbiBXaW5kb3dzLCBtb3VzZU1vdmUgZXZlbnQgbWF5IGJlIGZpcmVkIGp1c3QgYWZ0ZXIgbW91c2VEb3duIGV2ZW50LlxuICAgIGlmIChjbGljayAmJiAhb2xkICYmICEodyB8fCBoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFvbGQgJiYgIWNsaWNrKSB7XG4gICAgICB0aGlzLmVtaXQoJ3NlbGVjdFN0YXJ0JywgdGhpcy5faW5pdGlhbEV2ZW50RGF0YSlcbiAgICB9XG5cbiAgICBpZiAoIWNsaWNrKSB7XG4gICAgICB0aGlzLnNlbGVjdGluZyA9IHRydWVcbiAgICAgIHRoaXMuX3NlbGVjdFJlY3QgPSB7XG4gICAgICAgIHRvcCxcbiAgICAgICAgbGVmdCxcbiAgICAgICAgeDogcGFnZVgsXG4gICAgICAgIHk6IHBhZ2VZLFxuICAgICAgICByaWdodDogbGVmdCArIHcsXG4gICAgICAgIGJvdHRvbTogdG9wICsgaCxcbiAgICAgIH1cbiAgICAgIHRoaXMuZW1pdCgnc2VsZWN0aW5nJywgdGhpcy5fc2VsZWN0UmVjdClcbiAgICB9XG5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgfVxuXG4gIF9rZXlMaXN0ZW5lcihlKSB7XG4gICAgdGhpcy5jdHJsID0gZS5tZXRhS2V5IHx8IGUuY3RybEtleVxuICB9XG5cbiAgaXNDbGljayhwYWdlWCwgcGFnZVkpIHtcbiAgICBsZXQgeyB4LCB5LCBpc1RvdWNoIH0gPSB0aGlzLl9pbml0aWFsRXZlbnREYXRhXG4gICAgcmV0dXJuIChcbiAgICAgICFpc1RvdWNoICYmXG4gICAgICBNYXRoLmFicyhwYWdlWCAtIHgpIDw9IGNsaWNrVG9sZXJhbmNlICYmXG4gICAgICBNYXRoLmFicyhwYWdlWSAtIHkpIDw9IGNsaWNrVG9sZXJhbmNlXG4gICAgKVxuICB9XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgZGlzYW5jZSBwcm9wIGZyb20gZWl0aGVyIGFuIEludCBvciBhbiBPYmplY3RcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplRGlzdGFuY2UoZGlzdGFuY2UgPSAwKSB7XG4gIGlmICh0eXBlb2YgZGlzdGFuY2UgIT09ICdvYmplY3QnKVxuICAgIGRpc3RhbmNlID0ge1xuICAgICAgdG9wOiBkaXN0YW5jZSxcbiAgICAgIGxlZnQ6IGRpc3RhbmNlLFxuICAgICAgcmlnaHQ6IGRpc3RhbmNlLFxuICAgICAgYm90dG9tOiBkaXN0YW5jZSxcbiAgICB9XG5cbiAgcmV0dXJuIGRpc3RhbmNlXG59XG5cbi8qKlxuICogR2l2ZW4gdHdvIG9iamVjdHMgY29udGFpbmluZyBcInRvcFwiLCBcImxlZnRcIiwgXCJvZmZzZXRXaWR0aFwiIGFuZCBcIm9mZnNldEhlaWdodFwiXG4gKiBwcm9wZXJ0aWVzLCBkZXRlcm1pbmUgaWYgdGhleSBjb2xsaWRlLlxuICogQHBhcmFtICB7T2JqZWN0fEhUTUxFbGVtZW50fSBhXG4gKiBAcGFyYW0gIHtPYmplY3R8SFRNTEVsZW1lbnR9IGJcbiAqIEByZXR1cm4ge2Jvb2x9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RzQ29sbGlkZShub2RlQSwgbm9kZUIsIHRvbGVyYW5jZSA9IDApIHtcbiAgbGV0IHtcbiAgICB0b3A6IGFUb3AsXG4gICAgbGVmdDogYUxlZnQsXG4gICAgcmlnaHQ6IGFSaWdodCA9IGFMZWZ0LFxuICAgIGJvdHRvbTogYUJvdHRvbSA9IGFUb3AsXG4gIH0gPSBnZXRCb3VuZHNGb3JOb2RlKG5vZGVBKVxuICBsZXQge1xuICAgIHRvcDogYlRvcCxcbiAgICBsZWZ0OiBiTGVmdCxcbiAgICByaWdodDogYlJpZ2h0ID0gYkxlZnQsXG4gICAgYm90dG9tOiBiQm90dG9tID0gYlRvcCxcbiAgfSA9IGdldEJvdW5kc0Zvck5vZGUobm9kZUIpXG5cbiAgcmV0dXJuICEoXG4gICAgLy8gJ2EnIGJvdHRvbSBkb2Vzbid0IHRvdWNoICdiJyB0b3BcbiAgICAoXG4gICAgICBhQm90dG9tIC0gdG9sZXJhbmNlIDwgYlRvcCB8fFxuICAgICAgLy8gJ2EnIHRvcCBkb2Vzbid0IHRvdWNoICdiJyBib3R0b21cbiAgICAgIGFUb3AgKyB0b2xlcmFuY2UgPiBiQm90dG9tIHx8XG4gICAgICAvLyAnYScgcmlnaHQgZG9lc24ndCB0b3VjaCAnYicgbGVmdFxuICAgICAgYVJpZ2h0IC0gdG9sZXJhbmNlIDwgYkxlZnQgfHxcbiAgICAgIC8vICdhJyBsZWZ0IGRvZXNuJ3QgdG91Y2ggJ2InIHJpZ2h0XG4gICAgICBhTGVmdCArIHRvbGVyYW5jZSA+IGJSaWdodFxuICAgIClcbiAgKVxufVxuXG4vKipcbiAqIEdpdmVuIGEgbm9kZSwgZ2V0IGV2ZXJ5dGhpbmcgbmVlZGVkIHRvIGNhbGN1bGF0ZSBpdHMgYm91bmRhcmllc1xuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IG5vZGVcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJvdW5kc0Zvck5vZGUobm9kZSkge1xuICBpZiAoIW5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSByZXR1cm4gbm9kZVxuXG4gIGxldCByZWN0ID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICBsZWZ0ID0gcmVjdC5sZWZ0ICsgcGFnZU9mZnNldCgnbGVmdCcpLFxuICAgIHRvcCA9IHJlY3QudG9wICsgcGFnZU9mZnNldCgndG9wJylcblxuICByZXR1cm4ge1xuICAgIHRvcCxcbiAgICBsZWZ0LFxuICAgIHJpZ2h0OiAobm9kZS5vZmZzZXRXaWR0aCB8fCAwKSArIGxlZnQsXG4gICAgYm90dG9tOiAobm9kZS5vZmZzZXRIZWlnaHQgfHwgMCkgKyB0b3AsXG4gIH1cbn1cblxuZnVuY3Rpb24gcGFnZU9mZnNldChkaXIpIHtcbiAgaWYgKGRpciA9PT0gJ2xlZnQnKSByZXR1cm4gd2luZG93LnBhZ2VYT2Zmc2V0IHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCB8fCAwXG4gIGlmIChkaXIgPT09ICd0b3AnKSByZXR1cm4gd2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIHx8IDBcbn1cbmV4cG9ydCBkZWZhdWx0IFNlbGVjdGlvblxuIiwiY29uc3QgZ2V0S2V5ID0gKHsgbWluLCBtYXgsIHN0ZXAsIHNsb3RzLCBsb2NhbGl6ZXIgfSkgPT5cbiAgYCR7K2xvY2FsaXplci5zdGFydE9mKG1pbiwgJ21pbnV0ZXMnKX1gICtcbiAgYCR7K2xvY2FsaXplci5zdGFydE9mKG1heCwgJ21pbnV0ZXMnKX1gICtcbiAgYCR7c3RlcH0tJHtzbG90c31gXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTbG90TWV0cmljcyh7XG4gIG1pbjogc3RhcnQsXG4gIG1heDogZW5kLFxuICBzdGVwLFxuICB0aW1lc2xvdHMsXG4gIGxvY2FsaXplcixcbn0pIHtcbiAgY29uc3Qga2V5ID0gZ2V0S2V5KHsgc3RhcnQsIGVuZCwgc3RlcCwgdGltZXNsb3RzLCBsb2NhbGl6ZXIgfSlcblxuICAvLyBEU1QgZGlmZmVyZW5jZXMgYXJlIGhhbmRsZWQgaW5zaWRlIHRoZSBsb2NhbGl6ZXJcbiAgY29uc3QgdG90YWxNaW4gPSAxICsgbG9jYWxpemVyLmdldFRvdGFsTWluKHN0YXJ0LCBlbmQpXG4gIGNvbnN0IG1pbnV0ZXNGcm9tTWlkbmlnaHQgPSBsb2NhbGl6ZXIuZ2V0TWludXRlc0Zyb21NaWRuaWdodChzdGFydClcbiAgY29uc3QgbnVtR3JvdXBzID0gTWF0aC5jZWlsKCh0b3RhbE1pbiAtIDEpIC8gKHN0ZXAgKiB0aW1lc2xvdHMpKVxuICBjb25zdCBudW1TbG90cyA9IG51bUdyb3VwcyAqIHRpbWVzbG90c1xuXG4gIGNvbnN0IGdyb3VwcyA9IG5ldyBBcnJheShudW1Hcm91cHMpXG4gIGNvbnN0IHNsb3RzID0gbmV3IEFycmF5KG51bVNsb3RzKVxuICAvLyBFYWNoIHNsb3QgZGF0ZSBpcyBjcmVhdGVkIGZyb20gXCJ6ZXJvXCIsIGluc3RlYWQgb2YgYWRkaW5nIGBzdGVwYCB0b1xuICAvLyB0aGUgcHJldmlvdXMgb25lLCBpbiBvcmRlciB0byBhdm9pZCBEU1Qgb2RkaXRpZXNcbiAgZm9yIChsZXQgZ3JwID0gMDsgZ3JwIDwgbnVtR3JvdXBzOyBncnArKykge1xuICAgIGdyb3Vwc1tncnBdID0gbmV3IEFycmF5KHRpbWVzbG90cylcblxuICAgIGZvciAobGV0IHNsb3QgPSAwOyBzbG90IDwgdGltZXNsb3RzOyBzbG90KyspIHtcbiAgICAgIGNvbnN0IHNsb3RJZHggPSBncnAgKiB0aW1lc2xvdHMgKyBzbG90XG4gICAgICBjb25zdCBtaW5Gcm9tU3RhcnQgPSBzbG90SWR4ICogc3RlcFxuICAgICAgLy8gQSBkYXRlIHdpdGggdG90YWwgbWludXRlcyBjYWxjdWxhdGVkIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBkYXlcbiAgICAgIHNsb3RzW3Nsb3RJZHhdID0gZ3JvdXBzW2dycF1bc2xvdF0gPSBsb2NhbGl6ZXIuZ2V0U2xvdERhdGUoXG4gICAgICAgIHN0YXJ0LFxuICAgICAgICBtaW51dGVzRnJvbU1pZG5pZ2h0LFxuICAgICAgICBtaW5Gcm9tU3RhcnRcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICAvLyBOZWNlc3NhcnkgdG8gYmUgYWJsZSB0byBzZWxlY3QgdXAgdW50aWwgdGhlIGxhc3QgdGltZXNsb3QgaW4gYSBkYXlcbiAgY29uc3QgbGFzdFNsb3RNaW5Gcm9tU3RhcnQgPSBzbG90cy5sZW5ndGggKiBzdGVwXG4gIHNsb3RzLnB1c2goXG4gICAgbG9jYWxpemVyLmdldFNsb3REYXRlKHN0YXJ0LCBtaW51dGVzRnJvbU1pZG5pZ2h0LCBsYXN0U2xvdE1pbkZyb21TdGFydClcbiAgKVxuXG4gIGZ1bmN0aW9uIHBvc2l0aW9uRnJvbURhdGUoZGF0ZSkge1xuICAgIGNvbnN0IGRpZmYgPVxuICAgICAgbG9jYWxpemVyLmRpZmYoc3RhcnQsIGRhdGUsICdtaW51dGVzJykgK1xuICAgICAgbG9jYWxpemVyLmdldERzdE9mZnNldChzdGFydCwgZGF0ZSlcbiAgICByZXR1cm4gTWF0aC5taW4oZGlmZiwgdG90YWxNaW4pXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGdyb3VwcyxcbiAgICB1cGRhdGUoYXJncykge1xuICAgICAgaWYgKGdldEtleShhcmdzKSAhPT0ga2V5KSByZXR1cm4gZ2V0U2xvdE1ldHJpY3MoYXJncylcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfSxcblxuICAgIGRhdGVJc0luR3JvdXAoZGF0ZSwgZ3JvdXBJbmRleCkge1xuICAgICAgY29uc3QgbmV4dEdyb3VwID0gZ3JvdXBzW2dyb3VwSW5kZXggKyAxXVxuICAgICAgcmV0dXJuIGxvY2FsaXplci5pblJhbmdlKFxuICAgICAgICBkYXRlLFxuICAgICAgICBncm91cHNbZ3JvdXBJbmRleF1bMF0sXG4gICAgICAgIG5leHRHcm91cCA/IG5leHRHcm91cFswXSA6IGVuZCxcbiAgICAgICAgJ21pbnV0ZXMnXG4gICAgICApXG4gICAgfSxcblxuICAgIG5leHRTbG90KHNsb3QpIHtcbiAgICAgIC8vIFdlIGNhbm5vdCBndWFyYW50ZWUgdGhhdCB0aGUgc2xvdCBvYmplY3QgbXVzdCBiZSBpbiBzbG90cyxcbiAgICAgIC8vIGJlY2F1c2UgYWZ0ZXIgZWFjaCB1cGRhdGUsIGEgbmV3IHNsb3RzIGFycmF5IHdpbGwgYmUgY3JlYXRlZC5cbiAgICAgIGxldCBuZXh0ID1cbiAgICAgICAgc2xvdHNbXG4gICAgICAgICAgTWF0aC5taW4oXG4gICAgICAgICAgICBzbG90cy5maW5kSW5kZXgoKHMpID0+IHMgPT09IHNsb3QgfHwgbG9jYWxpemVyLmVxKHMsIHNsb3QpKSArIDEsXG4gICAgICAgICAgICBzbG90cy5sZW5ndGggLSAxXG4gICAgICAgICAgKVxuICAgICAgICBdXG4gICAgICAvLyBpbiB0aGUgY2FzZSBvZiB0aGUgbGFzdCBzbG90IHdlIHdvbid0IGEgbG9uZyBlbm91Z2ggcmFuZ2Ugc28gbWFudWFsbHkgZ2V0IGl0XG4gICAgICBpZiAobG9jYWxpemVyLmVxKG5leHQsIHNsb3QpKSBuZXh0ID0gbG9jYWxpemVyLmFkZChzbG90LCBzdGVwLCAnbWludXRlcycpXG4gICAgICByZXR1cm4gbmV4dFxuICAgIH0sXG4gICAgY2xvc2VzdFNsb3RUb1Bvc2l0aW9uKHBlcmNlbnQpIHtcbiAgICAgIGNvbnN0IHNsb3QgPSBNYXRoLm1pbihcbiAgICAgICAgc2xvdHMubGVuZ3RoIC0gMSxcbiAgICAgICAgTWF0aC5tYXgoMCwgTWF0aC5mbG9vcihwZXJjZW50ICogbnVtU2xvdHMpKVxuICAgICAgKVxuICAgICAgcmV0dXJuIHNsb3RzW3Nsb3RdXG4gICAgfSxcblxuICAgIGNsb3Nlc3RTbG90RnJvbVBvaW50KHBvaW50LCBib3VuZGFyeVJlY3QpIHtcbiAgICAgIGxldCByYW5nZSA9IE1hdGguYWJzKGJvdW5kYXJ5UmVjdC50b3AgLSBib3VuZGFyeVJlY3QuYm90dG9tKVxuICAgICAgcmV0dXJuIHRoaXMuY2xvc2VzdFNsb3RUb1Bvc2l0aW9uKChwb2ludC55IC0gYm91bmRhcnlSZWN0LnRvcCkgLyByYW5nZSlcbiAgICB9LFxuXG4gICAgY2xvc2VzdFNsb3RGcm9tRGF0ZShkYXRlLCBvZmZzZXQgPSAwKSB7XG4gICAgICBpZiAobG9jYWxpemVyLmx0KGRhdGUsIHN0YXJ0LCAnbWludXRlcycpKSByZXR1cm4gc2xvdHNbMF1cbiAgICAgIGlmIChsb2NhbGl6ZXIuZ3QoZGF0ZSwgZW5kLCAnbWludXRlcycpKSByZXR1cm4gc2xvdHNbc2xvdHMubGVuZ3RoIC0gMV1cblxuICAgICAgY29uc3QgZGlmZk1pbnMgPSBsb2NhbGl6ZXIuZGlmZihzdGFydCwgZGF0ZSwgJ21pbnV0ZXMnKVxuICAgICAgcmV0dXJuIHNsb3RzWyhkaWZmTWlucyAtIChkaWZmTWlucyAlIHN0ZXApKSAvIHN0ZXAgKyBvZmZzZXRdXG4gICAgfSxcblxuICAgIHN0YXJ0c0JlZm9yZURheShkYXRlKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemVyLmx0KGRhdGUsIHN0YXJ0LCAnZGF5JylcbiAgICB9LFxuXG4gICAgc3RhcnRzQWZ0ZXJEYXkoZGF0ZSkge1xuICAgICAgcmV0dXJuIGxvY2FsaXplci5ndChkYXRlLCBlbmQsICdkYXknKVxuICAgIH0sXG5cbiAgICBzdGFydHNCZWZvcmUoZGF0ZSkge1xuICAgICAgcmV0dXJuIGxvY2FsaXplci5sdChsb2NhbGl6ZXIubWVyZ2Uoc3RhcnQsIGRhdGUpLCBzdGFydCwgJ21pbnV0ZXMnKVxuICAgIH0sXG5cbiAgICBzdGFydHNBZnRlcihkYXRlKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemVyLmd0KGxvY2FsaXplci5tZXJnZShlbmQsIGRhdGUpLCBlbmQsICdtaW51dGVzJylcbiAgICB9LFxuXG4gICAgZ2V0UmFuZ2UocmFuZ2VTdGFydCwgcmFuZ2VFbmQsIGlnbm9yZU1pbiwgaWdub3JlTWF4KSB7XG4gICAgICBpZiAoIWlnbm9yZU1pbilcbiAgICAgICAgcmFuZ2VTdGFydCA9IGxvY2FsaXplci5taW4oZW5kLCBsb2NhbGl6ZXIubWF4KHN0YXJ0LCByYW5nZVN0YXJ0KSlcbiAgICAgIGlmICghaWdub3JlTWF4KVxuICAgICAgICByYW5nZUVuZCA9IGxvY2FsaXplci5taW4oZW5kLCBsb2NhbGl6ZXIubWF4KHN0YXJ0LCByYW5nZUVuZCkpXG5cbiAgICAgIGNvbnN0IHJhbmdlU3RhcnRNaW4gPSBwb3NpdGlvbkZyb21EYXRlKHJhbmdlU3RhcnQpXG4gICAgICBjb25zdCByYW5nZUVuZE1pbiA9IHBvc2l0aW9uRnJvbURhdGUocmFuZ2VFbmQpXG4gICAgICBjb25zdCB0b3AgPVxuICAgICAgICByYW5nZUVuZE1pbiA+IHN0ZXAgKiBudW1TbG90cyAmJiAhbG9jYWxpemVyLmVxKGVuZCwgcmFuZ2VFbmQpXG4gICAgICAgICAgPyAoKHJhbmdlU3RhcnRNaW4gLSBzdGVwKSAvIChzdGVwICogbnVtU2xvdHMpKSAqIDEwMFxuICAgICAgICAgIDogKHJhbmdlU3RhcnRNaW4gLyAoc3RlcCAqIG51bVNsb3RzKSkgKiAxMDBcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdG9wLFxuICAgICAgICBoZWlnaHQ6IChyYW5nZUVuZE1pbiAvIChzdGVwICogbnVtU2xvdHMpKSAqIDEwMCAtIHRvcCxcbiAgICAgICAgc3RhcnQ6IHBvc2l0aW9uRnJvbURhdGUocmFuZ2VTdGFydCksXG4gICAgICAgIHN0YXJ0RGF0ZTogcmFuZ2VTdGFydCxcbiAgICAgICAgZW5kOiBwb3NpdGlvbkZyb21EYXRlKHJhbmdlRW5kKSxcbiAgICAgICAgZW5kRGF0ZTogcmFuZ2VFbmQsXG4gICAgICB9XG4gICAgfSxcblxuICAgIGdldEN1cnJlbnRUaW1lUG9zaXRpb24ocmFuZ2VTdGFydCkge1xuICAgICAgY29uc3QgcmFuZ2VTdGFydE1pbiA9IHBvc2l0aW9uRnJvbURhdGUocmFuZ2VTdGFydClcbiAgICAgIGNvbnN0IHRvcCA9IChyYW5nZVN0YXJ0TWluIC8gKHN0ZXAgKiBudW1TbG90cykpICogMTAwXG5cbiAgICAgIHJldHVybiB0b3BcbiAgICB9LFxuICB9XG59XG4iLCJpbXBvcnQgc29ydEJ5IGZyb20gJ2xvZGFzaC9zb3J0QnknXG5cbmNsYXNzIEV2ZW50IHtcbiAgY29uc3RydWN0b3IoZGF0YSwgeyBhY2Nlc3NvcnMsIHNsb3RNZXRyaWNzIH0pIHtcbiAgICBjb25zdCB7IHN0YXJ0LCBzdGFydERhdGUsIGVuZCwgZW5kRGF0ZSwgdG9wLCBoZWlnaHQgfSA9XG4gICAgICBzbG90TWV0cmljcy5nZXRSYW5nZShhY2Nlc3NvcnMuc3RhcnQoZGF0YSksIGFjY2Vzc29ycy5lbmQoZGF0YSkpXG5cbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnRcbiAgICB0aGlzLmVuZCA9IGVuZFxuICAgIHRoaXMuc3RhcnRNcyA9ICtzdGFydERhdGVcbiAgICB0aGlzLmVuZE1zID0gK2VuZERhdGVcbiAgICB0aGlzLnRvcCA9IHRvcFxuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0XG4gICAgdGhpcy5kYXRhID0gZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBldmVudCdzIHdpZHRoIHdpdGhvdXQgYW55IG92ZXJsYXAuXG4gICAqL1xuICBnZXQgX3dpZHRoKCkge1xuICAgIC8vIFRoZSBjb250YWluZXIgZXZlbnQncyB3aWR0aCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBtYXhpbXVtIG51bWJlciBvZlxuICAgIC8vIGV2ZW50cyBpbiBhbnkgb2YgaXRzIHJvd3MuXG4gICAgaWYgKHRoaXMucm93cykge1xuICAgICAgY29uc3QgY29sdW1ucyA9XG4gICAgICAgIHRoaXMucm93cy5yZWR1Y2UoXG4gICAgICAgICAgKG1heCwgcm93KSA9PiBNYXRoLm1heChtYXgsIHJvdy5sZWF2ZXMubGVuZ3RoICsgMSksIC8vIGFkZCBpdHNlbGZcbiAgICAgICAgICAwXG4gICAgICAgICkgKyAxIC8vIGFkZCB0aGUgY29udGFpbmVyXG5cbiAgICAgIHJldHVybiAxMDAgLyBjb2x1bW5zXG4gICAgfVxuXG4gICAgLy8gVGhlIHJvdyBldmVudCdzIHdpZHRoIGlzIHRoZSBzcGFjZSBsZWZ0IGJ5IHRoZSBjb250YWluZXIsIGRpdmlkZWRcbiAgICAvLyBhbW9uZyBpdHNlbGYgYW5kIGl0cyBsZWF2ZXMuXG4gICAgaWYgKHRoaXMubGVhdmVzKSB7XG4gICAgICBjb25zdCBhdmFpbGFibGVXaWR0aCA9IDEwMCAtIHRoaXMuY29udGFpbmVyLl93aWR0aFxuICAgICAgcmV0dXJuIGF2YWlsYWJsZVdpZHRoIC8gKHRoaXMubGVhdmVzLmxlbmd0aCArIDEpXG4gICAgfVxuXG4gICAgLy8gVGhlIGxlYWYgZXZlbnQncyB3aWR0aCBpcyBkZXRlcm1pbmVkIGJ5IGl0cyByb3cncyB3aWR0aFxuICAgIHJldHVybiB0aGlzLnJvdy5fd2lkdGhcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZXZlbnQncyBjYWxjdWxhdGVkIHdpZHRoLCBwb3NzaWJseSB3aXRoIGV4dHJhIHdpZHRoIGFkZGVkIGZvclxuICAgKiBvdmVybGFwcGluZyBlZmZlY3QuXG4gICAqL1xuICBnZXQgd2lkdGgoKSB7XG4gICAgY29uc3Qgbm9PdmVybGFwID0gdGhpcy5fd2lkdGhcbiAgICBjb25zdCBvdmVybGFwID0gTWF0aC5taW4oMTAwLCB0aGlzLl93aWR0aCAqIDEuNylcblxuICAgIC8vIENvbnRhaW5lcnMgY2FuIGFsd2F5cyBncm93LlxuICAgIGlmICh0aGlzLnJvd3MpIHtcbiAgICAgIHJldHVybiBvdmVybGFwXG4gICAgfVxuXG4gICAgLy8gUm93cyBjYW4gZ3JvdyBpZiB0aGV5IGhhdmUgbGVhdmVzLlxuICAgIGlmICh0aGlzLmxlYXZlcykge1xuICAgICAgcmV0dXJuIHRoaXMubGVhdmVzLmxlbmd0aCA+IDAgPyBvdmVybGFwIDogbm9PdmVybGFwXG4gICAgfVxuXG4gICAgLy8gTGVhdmVzIGNhbiBncm93IHVubGVzcyB0aGV5J3JlIHRoZSBsYXN0IGl0ZW0gaW4gYSByb3cuXG4gICAgY29uc3QgeyBsZWF2ZXMgfSA9IHRoaXMucm93XG4gICAgY29uc3QgaW5kZXggPSBsZWF2ZXMuaW5kZXhPZih0aGlzKVxuICAgIHJldHVybiBpbmRleCA9PT0gbGVhdmVzLmxlbmd0aCAtIDEgPyBub092ZXJsYXAgOiBvdmVybGFwXG4gIH1cblxuICBnZXQgeE9mZnNldCgpIHtcbiAgICAvLyBDb250YWluZXJzIGhhdmUgbm8gb2Zmc2V0LlxuICAgIGlmICh0aGlzLnJvd3MpIHJldHVybiAwXG5cbiAgICAvLyBSb3dzIGFsd2F5cyBzdGFydCB3aGVyZSB0aGVpciBjb250YWluZXIgZW5kcy5cbiAgICBpZiAodGhpcy5sZWF2ZXMpIHJldHVybiB0aGlzLmNvbnRhaW5lci5fd2lkdGhcblxuICAgIC8vIExlYXZlcyBhcmUgc3ByZWFkIG91dCBldmVubHkgb24gdGhlIHNwYWNlIGxlZnQgYnkgaXRzIHJvdy5cbiAgICBjb25zdCB7IGxlYXZlcywgeE9mZnNldCwgX3dpZHRoIH0gPSB0aGlzLnJvd1xuICAgIGNvbnN0IGluZGV4ID0gbGVhdmVzLmluZGV4T2YodGhpcykgKyAxXG4gICAgcmV0dXJuIHhPZmZzZXQgKyBpbmRleCAqIF93aWR0aFxuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgZXZlbnQgYSBhbmQgYiBpcyBjb25zaWRlcmVkIHRvIGJlIG9uIHRoZSBzYW1lIHJvdy5cbiAqL1xuZnVuY3Rpb24gb25TYW1lUm93KGEsIGIsIG1pbmltdW1TdGFydERpZmZlcmVuY2UpIHtcbiAgcmV0dXJuIChcbiAgICAvLyBPY2N1cGllcyB0aGUgc2FtZSBzdGFydCBzbG90LlxuICAgIE1hdGguYWJzKGIuc3RhcnQgLSBhLnN0YXJ0KSA8IG1pbmltdW1TdGFydERpZmZlcmVuY2UgfHxcbiAgICAvLyBBJ3Mgc3RhcnQgc2xvdCBvdmVybGFwcyB3aXRoIGIncyBlbmQgc2xvdC5cbiAgICAoYi5zdGFydCA+IGEuc3RhcnQgJiYgYi5zdGFydCA8IGEuZW5kKVxuICApXG59XG5cbmZ1bmN0aW9uIHNvcnRCeVJlbmRlcihldmVudHMpIHtcbiAgY29uc3Qgc29ydGVkQnlUaW1lID0gc29ydEJ5KGV2ZW50cywgWydzdGFydE1zJywgKGUpID0+IC1lLmVuZE1zXSlcblxuICBjb25zdCBzb3J0ZWQgPSBbXVxuICB3aGlsZSAoc29ydGVkQnlUaW1lLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBldmVudCA9IHNvcnRlZEJ5VGltZS5zaGlmdCgpXG4gICAgc29ydGVkLnB1c2goZXZlbnQpXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvcnRlZEJ5VGltZS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdGVzdCA9IHNvcnRlZEJ5VGltZVtpXVxuXG4gICAgICAvLyBTdGlsbCBpbnNpZGUgdGhpcyBldmVudCwgbG9vayBmb3IgbmV4dC5cbiAgICAgIGlmIChldmVudC5lbmRNcyA+IHRlc3Quc3RhcnRNcykgY29udGludWVcblxuICAgICAgLy8gV2UndmUgZm91bmQgdGhlIGZpcnN0IGV2ZW50IG9mIHRoZSBuZXh0IGV2ZW50IGdyb3VwLlxuICAgICAgLy8gSWYgdGhhdCBldmVudCBpcyBub3QgcmlnaHQgbmV4dCB0byBvdXIgY3VycmVudCBldmVudCwgd2UgaGF2ZSB0b1xuICAgICAgLy8gbW92ZSBpdCBoZXJlLlxuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gc29ydGVkQnlUaW1lLnNwbGljZShpLCAxKVswXVxuICAgICAgICBzb3J0ZWQucHVzaChldmVudClcbiAgICAgIH1cblxuICAgICAgLy8gV2UndmUgYWxyZWFkeSBmb3VuZCB0aGUgbmV4dCBldmVudCBncm91cCwgc28gc3RvcCBsb29raW5nLlxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc29ydGVkXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFN0eWxlZEV2ZW50cyh7XG4gIGV2ZW50cyxcbiAgbWluaW11bVN0YXJ0RGlmZmVyZW5jZSxcbiAgc2xvdE1ldHJpY3MsXG4gIGFjY2Vzc29ycyxcbn0pIHtcbiAgLy8gQ3JlYXRlIHByb3h5IGV2ZW50cyBhbmQgb3JkZXIgdGhlbSBzbyB0aGF0IHdlIGRvbid0IGhhdmVcbiAgLy8gdG8gZmlkZGxlIHdpdGggei1pbmRleGVzLlxuICBjb25zdCBwcm94aWVzID0gZXZlbnRzLm1hcChcbiAgICAoZXZlbnQpID0+IG5ldyBFdmVudChldmVudCwgeyBzbG90TWV0cmljcywgYWNjZXNzb3JzIH0pXG4gIClcbiAgY29uc3QgZXZlbnRzSW5SZW5kZXJPcmRlciA9IHNvcnRCeVJlbmRlcihwcm94aWVzKVxuXG4gIC8vIEdyb3VwIG92ZXJsYXBwaW5nIGV2ZW50cywgd2hpbGUga2VlcGluZyBvcmRlci5cbiAgLy8gRXZlcnkgZXZlbnQgaXMgYWx3YXlzIG9uZSBvZjogY29udGFpbmVyLCByb3cgb3IgbGVhZi5cbiAgLy8gQ29udGFpbmVycyBjYW4gY29udGFpbiByb3dzLCBhbmQgcm93cyBjYW4gY29udGFpbiBsZWF2ZXMuXG4gIGNvbnN0IGNvbnRhaW5lckV2ZW50cyA9IFtdXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZXZlbnRzSW5SZW5kZXJPcmRlci5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGV2ZW50ID0gZXZlbnRzSW5SZW5kZXJPcmRlcltpXVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhpcyBldmVudCBjYW4gZ28gaW50byBhIGNvbnRhaW5lciBldmVudC5cbiAgICBjb25zdCBjb250YWluZXIgPSBjb250YWluZXJFdmVudHMuZmluZChcbiAgICAgIChjKSA9PlxuICAgICAgICBjLmVuZCA+IGV2ZW50LnN0YXJ0IHx8XG4gICAgICAgIE1hdGguYWJzKGV2ZW50LnN0YXJ0IC0gYy5zdGFydCkgPCBtaW5pbXVtU3RhcnREaWZmZXJlbmNlXG4gICAgKVxuXG4gICAgLy8gQ291bGRuJ3QgZmluZCBhIGNvbnRhaW5lciDigJQgdGhhdCBtZWFucyB0aGlzIGV2ZW50IGlzIGEgY29udGFpbmVyLlxuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICBldmVudC5yb3dzID0gW11cbiAgICAgIGNvbnRhaW5lckV2ZW50cy5wdXNoKGV2ZW50KVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICAvLyBGb3VuZCBhIGNvbnRhaW5lciBmb3IgdGhlIGV2ZW50LlxuICAgIGV2ZW50LmNvbnRhaW5lciA9IGNvbnRhaW5lclxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IGNhbiBiZSBwbGFjZWQgaW4gYW4gZXhpc3Rpbmcgcm93LlxuICAgIC8vIFN0YXJ0IGxvb2tpbmcgZnJvbSBiZWhpbmQuXG4gICAgbGV0IHJvdyA9IG51bGxcbiAgICBmb3IgKGxldCBqID0gY29udGFpbmVyLnJvd3MubGVuZ3RoIC0gMTsgIXJvdyAmJiBqID49IDA7IGotLSkge1xuICAgICAgaWYgKG9uU2FtZVJvdyhjb250YWluZXIucm93c1tqXSwgZXZlbnQsIG1pbmltdW1TdGFydERpZmZlcmVuY2UpKSB7XG4gICAgICAgIHJvdyA9IGNvbnRhaW5lci5yb3dzW2pdXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJvdykge1xuICAgICAgLy8gRm91bmQgYSByb3csIHNvIGFkZCBpdC5cbiAgICAgIHJvdy5sZWF2ZXMucHVzaChldmVudClcbiAgICAgIGV2ZW50LnJvdyA9IHJvd1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDb3VsZG4ndCBmaW5kIGEgcm93IOKAkyB0aGF0IG1lYW5zIHRoaXMgZXZlbnQgaXMgYSByb3cuXG4gICAgICBldmVudC5sZWF2ZXMgPSBbXVxuICAgICAgY29udGFpbmVyLnJvd3MucHVzaChldmVudClcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm4gdGhlIG9yaWdpbmFsIGV2ZW50cywgYWxvbmcgd2l0aCB0aGVpciBzdHlsZXMuXG4gIHJldHVybiBldmVudHNJblJlbmRlck9yZGVyLm1hcCgoZXZlbnQpID0+ICh7XG4gICAgZXZlbnQ6IGV2ZW50LmRhdGEsXG4gICAgc3R5bGU6IHtcbiAgICAgIHRvcDogZXZlbnQudG9wLFxuICAgICAgaGVpZ2h0OiBldmVudC5oZWlnaHQsXG4gICAgICB3aWR0aDogZXZlbnQud2lkdGgsXG4gICAgICB4T2Zmc2V0OiBNYXRoLm1heCgwLCBldmVudC54T2Zmc2V0KSxcbiAgICB9LFxuICB9KSlcbn1cbiIsImltcG9ydCBvdmVybGFwIGZyb20gJy4vb3ZlcmxhcCdcblxuZnVuY3Rpb24gZ2V0TWF4SWR4REZTKG5vZGUsIG1heElkeCwgdmlzaXRlZCkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuZnJpZW5kcy5sZW5ndGg7ICsraSkge1xuICAgIGlmICh2aXNpdGVkLmluZGV4T2Yobm9kZS5mcmllbmRzW2ldKSA+IC0xKSBjb250aW51ZVxuICAgIG1heElkeCA9IG1heElkeCA+IG5vZGUuZnJpZW5kc1tpXS5pZHggPyBtYXhJZHggOiBub2RlLmZyaWVuZHNbaV0uaWR4XG4gICAgLy8gVE9ETyA6IHRyYWNlIGl0IGJ5IG5vdCBvYmplY3QgYnV0IGtpbmRhIGluZGV4IG9yIHNvbWV0aGluZyBmb3IgcGVyZm9ybWFuY2VcbiAgICB2aXNpdGVkLnB1c2gobm9kZS5mcmllbmRzW2ldKVxuICAgIGNvbnN0IG5ld0lkeCA9IGdldE1heElkeERGUyhub2RlLmZyaWVuZHNbaV0sIG1heElkeCwgdmlzaXRlZClcbiAgICBtYXhJZHggPSBtYXhJZHggPiBuZXdJZHggPyBtYXhJZHggOiBuZXdJZHhcbiAgfVxuICByZXR1cm4gbWF4SWR4XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICh7XG4gIGV2ZW50cyxcbiAgbWluaW11bVN0YXJ0RGlmZmVyZW5jZSxcbiAgc2xvdE1ldHJpY3MsXG4gIGFjY2Vzc29ycyxcbn0pIHtcbiAgY29uc3Qgc3R5bGVkRXZlbnRzID0gb3ZlcmxhcCh7XG4gICAgZXZlbnRzLFxuICAgIG1pbmltdW1TdGFydERpZmZlcmVuY2UsXG4gICAgc2xvdE1ldHJpY3MsXG4gICAgYWNjZXNzb3JzLFxuICB9KVxuXG4gIHN0eWxlZEV2ZW50cy5zb3J0KChhLCBiKSA9PiB7XG4gICAgYSA9IGEuc3R5bGVcbiAgICBiID0gYi5zdHlsZVxuICAgIGlmIChhLnRvcCAhPT0gYi50b3ApIHJldHVybiBhLnRvcCA+IGIudG9wID8gMSA6IC0xXG4gICAgZWxzZSBpZiAoYS5oZWlnaHQgIT09IGIuaGVpZ2h0KVxuICAgICAgcmV0dXJuIGEudG9wICsgYS5oZWlnaHQgPCBiLnRvcCArIGIuaGVpZ2h0ID8gMSA6IC0xXG4gICAgZWxzZSByZXR1cm4gMFxuICB9KVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3R5bGVkRXZlbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgc3R5bGVkRXZlbnRzW2ldLmZyaWVuZHMgPSBbXVxuICAgIGRlbGV0ZSBzdHlsZWRFdmVudHNbaV0uc3R5bGUubGVmdFxuICAgIGRlbGV0ZSBzdHlsZWRFdmVudHNbaV0uc3R5bGUubGVmdFxuICAgIGRlbGV0ZSBzdHlsZWRFdmVudHNbaV0uaWR4XG4gICAgZGVsZXRlIHN0eWxlZEV2ZW50c1tpXS5zaXplXG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0eWxlZEV2ZW50cy5sZW5ndGggLSAxOyArK2kpIHtcbiAgICBjb25zdCBzZTEgPSBzdHlsZWRFdmVudHNbaV1cbiAgICBjb25zdCB5MSA9IHNlMS5zdHlsZS50b3BcbiAgICBjb25zdCB5MiA9IHNlMS5zdHlsZS50b3AgKyBzZTEuc3R5bGUuaGVpZ2h0XG5cbiAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBzdHlsZWRFdmVudHMubGVuZ3RoOyArK2opIHtcbiAgICAgIGNvbnN0IHNlMiA9IHN0eWxlZEV2ZW50c1tqXVxuICAgICAgY29uc3QgeTMgPSBzZTIuc3R5bGUudG9wXG4gICAgICBjb25zdCB5NCA9IHNlMi5zdHlsZS50b3AgKyBzZTIuc3R5bGUuaGVpZ2h0XG5cbiAgICAgIGlmIChcbiAgICAgICAgKHkzID49IHkxICYmIHk0IDw9IHkyKSB8fFxuICAgICAgICAoeTQgPiB5MSAmJiB5NCA8PSB5MikgfHxcbiAgICAgICAgKHkzID49IHkxICYmIHkzIDwgeTIpXG4gICAgICApIHtcbiAgICAgICAgLy8gVE9ETyA6IGhhc2htYXAgd291bGQgYmUgZWZmZWN0aXZlIGZvciBwZXJmb3JtYW5jZVxuICAgICAgICBzZTEuZnJpZW5kcy5wdXNoKHNlMilcbiAgICAgICAgc2UyLmZyaWVuZHMucHVzaChzZTEpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHlsZWRFdmVudHMubGVuZ3RoOyArK2kpIHtcbiAgICBjb25zdCBzZSA9IHN0eWxlZEV2ZW50c1tpXVxuICAgIGNvbnN0IGJpdG1hcCA9IFtdXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCAxMDA7ICsraikgYml0bWFwLnB1c2goMSkgLy8gMSBtZWFucyBhdmFpbGFibGVcblxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2UuZnJpZW5kcy5sZW5ndGg7ICsrailcbiAgICAgIGlmIChzZS5mcmllbmRzW2pdLmlkeCAhPT0gdW5kZWZpbmVkKSBiaXRtYXBbc2UuZnJpZW5kc1tqXS5pZHhdID0gMCAvLyAwIG1lYW5zIHJlc2VydmVkXG5cbiAgICBzZS5pZHggPSBiaXRtYXAuaW5kZXhPZigxKVxuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHlsZWRFdmVudHMubGVuZ3RoOyArK2kpIHtcbiAgICBsZXQgc2l6ZSA9IDBcblxuICAgIGlmIChzdHlsZWRFdmVudHNbaV0uc2l6ZSkgY29udGludWVcblxuICAgIGNvbnN0IGFsbEZyaWVuZHMgPSBbXVxuICAgIGNvbnN0IG1heElkeCA9IGdldE1heElkeERGUyhzdHlsZWRFdmVudHNbaV0sIDAsIGFsbEZyaWVuZHMpXG4gICAgc2l6ZSA9IDEwMCAvIChtYXhJZHggKyAxKVxuICAgIHN0eWxlZEV2ZW50c1tpXS5zaXplID0gc2l6ZVxuXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBhbGxGcmllbmRzLmxlbmd0aDsgKytqKSBhbGxGcmllbmRzW2pdLnNpemUgPSBzaXplXG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0eWxlZEV2ZW50cy5sZW5ndGg7ICsraSkge1xuICAgIGNvbnN0IGUgPSBzdHlsZWRFdmVudHNbaV1cbiAgICBlLnN0eWxlLmxlZnQgPSBlLmlkeCAqIGUuc2l6ZVxuXG4gICAgLy8gc3RyZXRjaCB0byBtYXhpbXVtXG4gICAgbGV0IG1heElkeCA9IDBcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGUuZnJpZW5kcy5sZW5ndGg7ICsraikge1xuICAgICAgY29uc3QgaWR4ID0gZS5mcmllbmRzW2pdLmlkeFxuICAgICAgbWF4SWR4ID0gbWF4SWR4ID4gaWR4ID8gbWF4SWR4IDogaWR4XG4gICAgfVxuICAgIGlmIChtYXhJZHggPD0gZS5pZHgpIGUuc2l6ZSA9IDEwMCAtIGUuaWR4ICogZS5zaXplXG5cbiAgICAvLyBwYWRkaW5nIGJldHdlZW4gZXZlbnRzXG4gICAgLy8gZm9yIHRoaXMgZmVhdHVyZSwgYHdpZHRoYCBpcyBub3QgcGVyY2VudGFnZSBiYXNlZCB1bml0IGFueW1vcmVcbiAgICAvLyBpdCB3aWxsIGJlIHVzZWQgd2l0aCBjYWxjKClcbiAgICBjb25zdCBwYWRkaW5nID0gZS5pZHggPT09IDAgPyAwIDogM1xuICAgIGUuc3R5bGUud2lkdGggPSBgY2FsYygke2Uuc2l6ZX0lIC0gJHtwYWRkaW5nfXB4KWBcbiAgICBlLnN0eWxlLmhlaWdodCA9IGBjYWxjKCR7ZS5zdHlsZS5oZWlnaHR9JSAtIDJweClgXG4gICAgZS5zdHlsZS54T2Zmc2V0ID0gYGNhbGMoJHtlLnN0eWxlLmxlZnR9JSArICR7cGFkZGluZ31weClgXG4gIH1cblxuICByZXR1cm4gc3R5bGVkRXZlbnRzXG59XG4iLCIvKmVzbGludCBuby11bnVzZWQtdmFyczogXCJvZmZcIiovXG5cbmltcG9ydCBvdmVybGFwIGZyb20gJy4vbGF5b3V0LWFsZ29yaXRobXMvb3ZlcmxhcCdcbmltcG9ydCBub092ZXJsYXAgZnJvbSAnLi9sYXlvdXQtYWxnb3JpdGhtcy9uby1vdmVybGFwJ1xuXG5jb25zdCBEZWZhdWx0QWxnb3JpdGhtcyA9IHtcbiAgb3ZlcmxhcDogb3ZlcmxhcCxcbiAgJ25vLW92ZXJsYXAnOiBub092ZXJsYXAsXG59XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24oYSkge1xuICByZXR1cm4gISEoYSAmJiBhLmNvbnN0cnVjdG9yICYmIGEuY2FsbCAmJiBhLmFwcGx5KVxufVxuXG4vL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0eWxlZEV2ZW50cyh7XG4gIGV2ZW50cyxcbiAgbWluaW11bVN0YXJ0RGlmZmVyZW5jZSxcbiAgc2xvdE1ldHJpY3MsXG4gIGFjY2Vzc29ycyxcbiAgZGF5TGF5b3V0QWxnb3JpdGhtLCAvLyBvbmUgb2YgRGVmYXVsdEFsZ29yaXRobXMga2V5c1xuICAvLyBvciBjdXN0b20gZnVuY3Rpb25cbn0pIHtcbiAgbGV0IGFsZ29yaXRobSA9IGRheUxheW91dEFsZ29yaXRobVxuXG4gIGlmIChkYXlMYXlvdXRBbGdvcml0aG0gaW4gRGVmYXVsdEFsZ29yaXRobXMpXG4gICAgYWxnb3JpdGhtID0gRGVmYXVsdEFsZ29yaXRobXNbZGF5TGF5b3V0QWxnb3JpdGhtXVxuXG4gIGlmICghaXNGdW5jdGlvbihhbGdvcml0aG0pKSB7XG4gICAgLy8gaW52YWxpZCBhbGdvcml0aG1cbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIHJldHVybiBhbGdvcml0aG0uYXBwbHkodGhpcywgYXJndW1lbnRzKVxufVxuIiwiaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IEJhY2tncm91bmRXcmFwcGVyIGZyb20gJy4vQmFja2dyb3VuZFdyYXBwZXInXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRpbWVTbG90R3JvdXAgZXh0ZW5kcyBDb21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgcmVuZGVyU2xvdCxcbiAgICAgIHJlc291cmNlLFxuICAgICAgZ3JvdXAsXG4gICAgICBnZXR0ZXJzLFxuICAgICAgY29tcG9uZW50czogeyB0aW1lU2xvdFdyYXBwZXI6IFdyYXBwZXIgPSBCYWNrZ3JvdW5kV3JhcHBlciB9ID0ge30sXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IGdyb3VwUHJvcHMgPSBnZXR0ZXJzID8gZ2V0dGVycy5zbG90R3JvdXBQcm9wKGdyb3VwKSA6IHt9XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLXRpbWVzbG90LWdyb3VwXCIgey4uLmdyb3VwUHJvcHN9PlxuICAgICAgICB7Z3JvdXAubWFwKCh2YWx1ZSwgaWR4KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2xvdFByb3BzID0gZ2V0dGVycyA/IGdldHRlcnMuc2xvdFByb3AodmFsdWUsIHJlc291cmNlKSA6IHt9XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxXcmFwcGVyIGtleT17aWR4fSB2YWx1ZT17dmFsdWV9IHJlc291cmNlPXtyZXNvdXJjZX0+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICB7Li4uc2xvdFByb3BzfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeCgncmJjLXRpbWUtc2xvdCcsIHNsb3RQcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3JlbmRlclNsb3QgJiYgcmVuZGVyU2xvdCh2YWx1ZSwgaWR4KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L1dyYXBwZXI+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxufVxuXG5UaW1lU2xvdEdyb3VwLnByb3BUeXBlcyA9IHtcbiAgcmVuZGVyU2xvdDogUHJvcFR5cGVzLmZ1bmMsXG4gIGdyb3VwOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgcmVzb3VyY2U6IFByb3BUeXBlcy5hbnksXG4gIGNvbXBvbmVudHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIGdldHRlcnM6IFByb3BUeXBlcy5vYmplY3QsXG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IERheUNvbHVtbldyYXBwZXIgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBzdHlsZSwgaW5uZXJSZWYgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWV9IHN0eWxlPXtzdHlsZX0gcmVmPXtpbm5lclJlZn0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4gKFxuICA8RGF5Q29sdW1uV3JhcHBlciB7Li4ucHJvcHN9IGlubmVyUmVmPXtyZWZ9IC8+XG4pKVxuIiwiaW1wb3J0IFJlYWN0LCB7IGNyZWF0ZVJlZiB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCdcblxuaW1wb3J0IFNlbGVjdGlvbiwgeyBnZXRCb3VuZHNGb3JOb2RlLCBpc0V2ZW50IH0gZnJvbSAnLi9TZWxlY3Rpb24nXG5pbXBvcnQgKiBhcyBUaW1lU2xvdFV0aWxzIGZyb20gJy4vdXRpbHMvVGltZVNsb3RzJ1xuaW1wb3J0IHsgaXNTZWxlY3RlZCB9IGZyb20gJy4vdXRpbHMvc2VsZWN0aW9uJ1xuXG5pbXBvcnQgeyBub3RpZnkgfSBmcm9tICcuL3V0aWxzL2hlbHBlcnMnXG5pbXBvcnQgKiBhcyBEYXlFdmVudExheW91dCBmcm9tICcuL3V0aWxzL0RheUV2ZW50TGF5b3V0J1xuaW1wb3J0IFRpbWVTbG90R3JvdXAgZnJvbSAnLi9UaW1lU2xvdEdyb3VwJ1xuaW1wb3J0IFRpbWVHcmlkRXZlbnQgZnJvbSAnLi9UaW1lR3JpZEV2ZW50J1xuaW1wb3J0IHsgRGF5TGF5b3V0QWxnb3JpdGhtUHJvcFR5cGUgfSBmcm9tICcuL3V0aWxzL3Byb3BUeXBlcydcblxuaW1wb3J0IERheUNvbHVtbldyYXBwZXIgZnJvbSAnLi9EYXlDb2x1bW5XcmFwcGVyJ1xuXG5jbGFzcyBEYXlDb2x1bW4gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0ZSA9IHsgc2VsZWN0aW5nOiBmYWxzZSwgdGltZUluZGljYXRvclBvc2l0aW9uOiBudWxsIH1cbiAgaW50ZXJ2YWxUcmlnZ2VyZWQgPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHtcbiAgICBzdXBlciguLi5hcmdzKVxuXG4gICAgdGhpcy5zbG90TWV0cmljcyA9IFRpbWVTbG90VXRpbHMuZ2V0U2xvdE1ldHJpY3ModGhpcy5wcm9wcylcbiAgICB0aGlzLmNvbnRhaW5lclJlZiA9IGNyZWF0ZVJlZigpXG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLnByb3BzLnNlbGVjdGFibGUgJiYgdGhpcy5fc2VsZWN0YWJsZSgpXG5cbiAgICBpZiAodGhpcy5wcm9wcy5pc05vdykge1xuICAgICAgdGhpcy5zZXRUaW1lSW5kaWNhdG9yUG9zaXRpb25VcGRhdGVJbnRlcnZhbCgpXG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5fdGVhcmRvd25TZWxlY3RhYmxlKClcbiAgICB0aGlzLmNsZWFyVGltZUluZGljYXRvckludGVydmFsKClcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGFibGUgJiYgIXByZXZQcm9wcy5zZWxlY3RhYmxlKSB0aGlzLl9zZWxlY3RhYmxlKClcbiAgICBpZiAoIXRoaXMucHJvcHMuc2VsZWN0YWJsZSAmJiBwcmV2UHJvcHMuc2VsZWN0YWJsZSlcbiAgICAgIHRoaXMuX3RlYXJkb3duU2VsZWN0YWJsZSgpXG5cbiAgICBjb25zdCB7IGdldE5vdywgaXNOb3csIGxvY2FsaXplciwgZGF0ZSwgbWluLCBtYXggfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBnZXROb3dDaGFuZ2VkID0gbG9jYWxpemVyLm5lcShwcmV2UHJvcHMuZ2V0Tm93KCksIGdldE5vdygpLCAnbWludXRlcycpXG5cbiAgICBpZiAocHJldlByb3BzLmlzTm93ICE9PSBpc05vdyB8fCBnZXROb3dDaGFuZ2VkKSB7XG4gICAgICB0aGlzLmNsZWFyVGltZUluZGljYXRvckludGVydmFsKClcblxuICAgICAgaWYgKGlzTm93KSB7XG4gICAgICAgIGNvbnN0IHRhaWwgPVxuICAgICAgICAgICFnZXROb3dDaGFuZ2VkICYmXG4gICAgICAgICAgbG9jYWxpemVyLmVxKHByZXZQcm9wcy5kYXRlLCBkYXRlLCAnbWludXRlcycpICYmXG4gICAgICAgICAgcHJldlN0YXRlLnRpbWVJbmRpY2F0b3JQb3NpdGlvbiA9PT0gdGhpcy5zdGF0ZS50aW1lSW5kaWNhdG9yUG9zaXRpb25cblxuICAgICAgICB0aGlzLnNldFRpbWVJbmRpY2F0b3JQb3NpdGlvblVwZGF0ZUludGVydmFsKHRhaWwpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGlzTm93ICYmXG4gICAgICAobG9jYWxpemVyLm5lcShwcmV2UHJvcHMubWluLCBtaW4sICdtaW51dGVzJykgfHxcbiAgICAgICAgbG9jYWxpemVyLm5lcShwcmV2UHJvcHMubWF4LCBtYXgsICdtaW51dGVzJykpXG4gICAgKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uVGltZUluZGljYXRvcigpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB0YWlsIHtCb29sZWFufSAtIHdoZXRoZXIgYHBvc2l0aW9uVGltZUluZGljYXRvcmAgY2FsbCBzaG91bGQgYmVcbiAgICogICBkZWZlcnJlZCBvciBjYWxsZWQgdXBvbiBzZXR0aW5nIGludGVydmFsIChgdHJ1ZWAgLSBpZiBkZWZlcnJlZCk7XG4gICAqL1xuICBzZXRUaW1lSW5kaWNhdG9yUG9zaXRpb25VcGRhdGVJbnRlcnZhbCh0YWlsID0gZmFsc2UpIHtcbiAgICBpZiAoIXRoaXMuaW50ZXJ2YWxUcmlnZ2VyZWQgJiYgIXRhaWwpIHtcbiAgICAgIHRoaXMucG9zaXRpb25UaW1lSW5kaWNhdG9yKClcbiAgICB9XG5cbiAgICB0aGlzLl90aW1lSW5kaWNhdG9yVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaW50ZXJ2YWxUcmlnZ2VyZWQgPSB0cnVlXG4gICAgICB0aGlzLnBvc2l0aW9uVGltZUluZGljYXRvcigpXG4gICAgICB0aGlzLnNldFRpbWVJbmRpY2F0b3JQb3NpdGlvblVwZGF0ZUludGVydmFsKClcbiAgICB9LCA2MDAwMClcbiAgfVxuXG4gIGNsZWFyVGltZUluZGljYXRvckludGVydmFsKCkge1xuICAgIHRoaXMuaW50ZXJ2YWxUcmlnZ2VyZWQgPSBmYWxzZVxuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5fdGltZUluZGljYXRvclRpbWVvdXQpXG4gIH1cblxuICBwb3NpdGlvblRpbWVJbmRpY2F0b3IoKSB7XG4gICAgY29uc3QgeyBtaW4sIG1heCwgZ2V0Tm93IH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgY3VycmVudCA9IGdldE5vdygpXG5cbiAgICBpZiAoY3VycmVudCA+PSBtaW4gJiYgY3VycmVudCA8PSBtYXgpIHtcbiAgICAgIGNvbnN0IHRvcCA9IHRoaXMuc2xvdE1ldHJpY3MuZ2V0Q3VycmVudFRpbWVQb3NpdGlvbihjdXJyZW50KVxuICAgICAgdGhpcy5pbnRlcnZhbFRyaWdnZXJlZCA9IHRydWVcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyB0aW1lSW5kaWNhdG9yUG9zaXRpb246IHRvcCB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFyVGltZUluZGljYXRvckludGVydmFsKClcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgZGF0ZSxcbiAgICAgIG1heCxcbiAgICAgIHJ0bCxcbiAgICAgIGlzTm93LFxuICAgICAgcmVzb3VyY2UsXG4gICAgICBhY2Nlc3NvcnMsXG4gICAgICBsb2NhbGl6ZXIsXG4gICAgICBnZXR0ZXJzOiB7IGRheVByb3AsIC4uLmdldHRlcnMgfSxcbiAgICAgIGNvbXBvbmVudHM6IHsgZXZlbnRDb250YWluZXJXcmFwcGVyOiBFdmVudENvbnRhaW5lciwgLi4uY29tcG9uZW50cyB9LFxuICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICB0aGlzLnNsb3RNZXRyaWNzID0gdGhpcy5zbG90TWV0cmljcy51cGRhdGUodGhpcy5wcm9wcylcblxuICAgIGxldCB7IHNsb3RNZXRyaWNzIH0gPSB0aGlzXG4gICAgbGV0IHsgc2VsZWN0aW5nLCB0b3AsIGhlaWdodCwgc3RhcnREYXRlLCBlbmREYXRlIH0gPSB0aGlzLnN0YXRlXG5cbiAgICBsZXQgc2VsZWN0RGF0ZXMgPSB7IHN0YXJ0OiBzdGFydERhdGUsIGVuZDogZW5kRGF0ZSB9XG5cbiAgICBjb25zdCB7IGNsYXNzTmFtZSwgc3R5bGUgfSA9IGRheVByb3AobWF4LCByZXNvdXJjZSlcblxuICAgIGNvbnN0IERheUNvbHVtbldyYXBwZXJDb21wb25lbnQgPVxuICAgICAgY29tcG9uZW50cy5kYXlDb2x1bW5XcmFwcGVyIHx8IERheUNvbHVtbldyYXBwZXJcblxuICAgIHJldHVybiAoXG4gICAgICA8RGF5Q29sdW1uV3JhcHBlckNvbXBvbmVudFxuICAgICAgICByZWY9e3RoaXMuY29udGFpbmVyUmVmfVxuICAgICAgICBkYXRlPXtkYXRlfVxuICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xzeChcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgJ3JiYy1kYXktc2xvdCcsXG4gICAgICAgICAgJ3JiYy10aW1lLWNvbHVtbicsXG4gICAgICAgICAgaXNOb3cgJiYgJ3JiYy1ub3cnLFxuICAgICAgICAgIGlzTm93ICYmICdyYmMtdG9kYXknLCAvLyBXSFlcbiAgICAgICAgICBzZWxlY3RpbmcgJiYgJ3JiYy1zbG90LXNlbGVjdGluZydcbiAgICAgICAgKX1cbiAgICAgICAgc2xvdE1ldHJpY3M9e3Nsb3RNZXRyaWNzfVxuICAgICAgICByZXNvdXJjZT17cmVzb3VyY2V9XG4gICAgICA+XG4gICAgICAgIHtzbG90TWV0cmljcy5ncm91cHMubWFwKChncnAsIGlkeCkgPT4gKFxuICAgICAgICAgIDxUaW1lU2xvdEdyb3VwXG4gICAgICAgICAgICBrZXk9e2lkeH1cbiAgICAgICAgICAgIGdyb3VwPXtncnB9XG4gICAgICAgICAgICByZXNvdXJjZT17cmVzb3VyY2V9XG4gICAgICAgICAgICBnZXR0ZXJzPXtnZXR0ZXJzfVxuICAgICAgICAgICAgY29tcG9uZW50cz17Y29tcG9uZW50c31cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgICAgPEV2ZW50Q29udGFpbmVyXG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgcmVzb3VyY2U9e3Jlc291cmNlfVxuICAgICAgICAgIGFjY2Vzc29ycz17YWNjZXNzb3JzfVxuICAgICAgICAgIGdldHRlcnM9e2dldHRlcnN9XG4gICAgICAgICAgY29tcG9uZW50cz17Y29tcG9uZW50c31cbiAgICAgICAgICBzbG90TWV0cmljcz17c2xvdE1ldHJpY3N9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzeCgncmJjLWV2ZW50cy1jb250YWluZXInLCBydGwgJiYgJ3J0bCcpfT5cbiAgICAgICAgICAgIHt0aGlzLnJlbmRlckV2ZW50cyh7XG4gICAgICAgICAgICAgIGV2ZW50czogdGhpcy5wcm9wcy5iYWNrZ3JvdW5kRXZlbnRzLFxuICAgICAgICAgICAgICBpc0JhY2tncm91bmRFdmVudDogdHJ1ZSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAge3RoaXMucmVuZGVyRXZlbnRzKHsgZXZlbnRzOiB0aGlzLnByb3BzLmV2ZW50cyB9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9FdmVudENvbnRhaW5lcj5cblxuICAgICAgICB7c2VsZWN0aW5nICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJiYy1zbG90LXNlbGVjdGlvblwiIHN0eWxlPXt7IHRvcCwgaGVpZ2h0IH19PlxuICAgICAgICAgICAgPHNwYW4+e2xvY2FsaXplci5mb3JtYXQoc2VsZWN0RGF0ZXMsICdzZWxlY3RSYW5nZUZvcm1hdCcpfTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAge2lzTm93ICYmIHRoaXMuaW50ZXJ2YWxUcmlnZ2VyZWQgJiYgKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInJiYy1jdXJyZW50LXRpbWUtaW5kaWNhdG9yXCJcbiAgICAgICAgICAgIHN0eWxlPXt7IHRvcDogYCR7dGhpcy5zdGF0ZS50aW1lSW5kaWNhdG9yUG9zaXRpb259JWAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9EYXlDb2x1bW5XcmFwcGVyQ29tcG9uZW50PlxuICAgIClcbiAgfVxuXG4gIHJlbmRlckV2ZW50cyA9ICh7IGV2ZW50cywgaXNCYWNrZ3JvdW5kRXZlbnQgfSkgPT4ge1xuICAgIGxldCB7XG4gICAgICBydGwsXG4gICAgICBzZWxlY3RlZCxcbiAgICAgIGFjY2Vzc29ycyxcbiAgICAgIGxvY2FsaXplcixcbiAgICAgIGdldHRlcnMsXG4gICAgICBjb21wb25lbnRzLFxuICAgICAgc3RlcCxcbiAgICAgIHRpbWVzbG90cyxcbiAgICAgIGRheUxheW91dEFsZ29yaXRobSxcbiAgICAgIHJlc2l6YWJsZSxcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgY29uc3QgeyBzbG90TWV0cmljcyB9ID0gdGhpc1xuICAgIGNvbnN0IHsgbWVzc2FnZXMgfSA9IGxvY2FsaXplclxuXG4gICAgbGV0IHN0eWxlZEV2ZW50cyA9IERheUV2ZW50TGF5b3V0LmdldFN0eWxlZEV2ZW50cyh7XG4gICAgICBldmVudHMsXG4gICAgICBhY2Nlc3NvcnMsXG4gICAgICBzbG90TWV0cmljcyxcbiAgICAgIG1pbmltdW1TdGFydERpZmZlcmVuY2U6IE1hdGguY2VpbCgoc3RlcCAqIHRpbWVzbG90cykgLyAyKSxcbiAgICAgIGRheUxheW91dEFsZ29yaXRobSxcbiAgICB9KVxuXG4gICAgcmV0dXJuIHN0eWxlZEV2ZW50cy5tYXAoKHsgZXZlbnQsIHN0eWxlIH0sIGlkeCkgPT4ge1xuICAgICAgbGV0IGVuZCA9IGFjY2Vzc29ycy5lbmQoZXZlbnQpXG4gICAgICBsZXQgc3RhcnQgPSBhY2Nlc3NvcnMuc3RhcnQoZXZlbnQpXG4gICAgICBsZXQgZm9ybWF0ID0gJ2V2ZW50VGltZVJhbmdlRm9ybWF0J1xuICAgICAgbGV0IGxhYmVsXG5cbiAgICAgIGNvbnN0IHN0YXJ0c0JlZm9yZURheSA9IHNsb3RNZXRyaWNzLnN0YXJ0c0JlZm9yZURheShzdGFydClcbiAgICAgIGNvbnN0IHN0YXJ0c0FmdGVyRGF5ID0gc2xvdE1ldHJpY3Muc3RhcnRzQWZ0ZXJEYXkoZW5kKVxuXG4gICAgICBpZiAoc3RhcnRzQmVmb3JlRGF5KSBmb3JtYXQgPSAnZXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQnXG4gICAgICBlbHNlIGlmIChzdGFydHNBZnRlckRheSkgZm9ybWF0ID0gJ2V2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQnXG5cbiAgICAgIGlmIChzdGFydHNCZWZvcmVEYXkgJiYgc3RhcnRzQWZ0ZXJEYXkpIGxhYmVsID0gbWVzc2FnZXMuYWxsRGF5XG4gICAgICBlbHNlIGxhYmVsID0gbG9jYWxpemVyLmZvcm1hdCh7IHN0YXJ0LCBlbmQgfSwgZm9ybWF0KVxuXG4gICAgICBsZXQgY29udGludWVzUHJpb3IgPSBzdGFydHNCZWZvcmVEYXkgfHwgc2xvdE1ldHJpY3Muc3RhcnRzQmVmb3JlKHN0YXJ0KVxuICAgICAgbGV0IGNvbnRpbnVlc0FmdGVyID0gc3RhcnRzQWZ0ZXJEYXkgfHwgc2xvdE1ldHJpY3Muc3RhcnRzQWZ0ZXIoZW5kKVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VGltZUdyaWRFdmVudFxuICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICBldmVudD17ZXZlbnR9XG4gICAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICAgIGtleT17J2V2dF8nICsgaWR4fVxuICAgICAgICAgIGdldHRlcnM9e2dldHRlcnN9XG4gICAgICAgICAgcnRsPXtydGx9XG4gICAgICAgICAgY29tcG9uZW50cz17Y29tcG9uZW50c31cbiAgICAgICAgICBjb250aW51ZXNQcmlvcj17Y29udGludWVzUHJpb3J9XG4gICAgICAgICAgY29udGludWVzQWZ0ZXI9e2NvbnRpbnVlc0FmdGVyfVxuICAgICAgICAgIGFjY2Vzc29ycz17YWNjZXNzb3JzfVxuICAgICAgICAgIHJlc291cmNlPXt0aGlzLnByb3BzLnJlc291cmNlfVxuICAgICAgICAgIHNlbGVjdGVkPXtpc1NlbGVjdGVkKGV2ZW50LCBzZWxlY3RlZCl9XG4gICAgICAgICAgb25DbGljaz17KGUpID0+XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3QoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5ldmVudCxcbiAgICAgICAgICAgICAgICAuLi4odGhpcy5wcm9wcy5yZXNvdXJjZSAmJiB7XG4gICAgICAgICAgICAgICAgICBzb3VyY2VSZXNvdXJjZTogdGhpcy5wcm9wcy5yZXNvdXJjZSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAuLi4oaXNCYWNrZ3JvdW5kRXZlbnQgJiYgeyBpc0JhY2tncm91bmRFdmVudDogdHJ1ZSB9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgICBvbkRvdWJsZUNsaWNrPXsoZSkgPT4gdGhpcy5fZG91YmxlQ2xpY2soZXZlbnQsIGUpfVxuICAgICAgICAgIGlzQmFja2dyb3VuZEV2ZW50PXtpc0JhY2tncm91bmRFdmVudH1cbiAgICAgICAgICBvbktleVByZXNzPXsoZSkgPT4gdGhpcy5fa2V5UHJlc3MoZXZlbnQsIGUpfVxuICAgICAgICAgIHJlc2l6YWJsZT17cmVzaXphYmxlfVxuICAgICAgICAvPlxuICAgICAgKVxuICAgIH0pXG4gIH1cblxuICBfc2VsZWN0YWJsZSA9ICgpID0+IHtcbiAgICBsZXQgbm9kZSA9IHRoaXMuY29udGFpbmVyUmVmLmN1cnJlbnRcbiAgICBjb25zdCB7IGxvbmdQcmVzc1RocmVzaG9sZCwgbG9jYWxpemVyIH0gPSB0aGlzLnByb3BzXG4gICAgbGV0IHNlbGVjdG9yID0gKHRoaXMuX3NlbGVjdG9yID0gbmV3IFNlbGVjdGlvbigoKSA9PiBub2RlLCB7XG4gICAgICBsb25nUHJlc3NUaHJlc2hvbGQ6IGxvbmdQcmVzc1RocmVzaG9sZCxcbiAgICB9KSlcblxuICAgIGxldCBtYXliZVNlbGVjdCA9IChib3gpID0+IHtcbiAgICAgIGxldCBvblNlbGVjdGluZyA9IHRoaXMucHJvcHMub25TZWxlY3RpbmdcbiAgICAgIGxldCBjdXJyZW50ID0gdGhpcy5zdGF0ZSB8fCB7fVxuICAgICAgbGV0IHN0YXRlID0gc2VsZWN0aW9uU3RhdGUoYm94KVxuICAgICAgbGV0IHsgc3RhcnREYXRlOiBzdGFydCwgZW5kRGF0ZTogZW5kIH0gPSBzdGF0ZVxuXG4gICAgICBpZiAob25TZWxlY3RpbmcpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChsb2NhbGl6ZXIuZXEoY3VycmVudC5zdGFydERhdGUsIHN0YXJ0LCAnbWludXRlcycpICYmXG4gICAgICAgICAgICBsb2NhbGl6ZXIuZXEoY3VycmVudC5lbmREYXRlLCBlbmQsICdtaW51dGVzJykpIHx8XG4gICAgICAgICAgb25TZWxlY3RpbmcoeyBzdGFydCwgZW5kLCByZXNvdXJjZUlkOiB0aGlzLnByb3BzLnJlc291cmNlIH0pID09PSBmYWxzZVxuICAgICAgICApXG4gICAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5zdGF0ZS5zdGFydCAhPT0gc3RhdGUuc3RhcnQgfHxcbiAgICAgICAgdGhpcy5zdGF0ZS5lbmQgIT09IHN0YXRlLmVuZCB8fFxuICAgICAgICB0aGlzLnN0YXRlLnNlbGVjdGluZyAhPT0gc3RhdGUuc2VsZWN0aW5nXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgc2VsZWN0aW9uU3RhdGUgPSAocG9pbnQpID0+IHtcbiAgICAgIGxldCBjdXJyZW50U2xvdCA9IHRoaXMuc2xvdE1ldHJpY3MuY2xvc2VzdFNsb3RGcm9tUG9pbnQoXG4gICAgICAgIHBvaW50LFxuICAgICAgICBnZXRCb3VuZHNGb3JOb2RlKG5vZGUpXG4gICAgICApXG5cbiAgICAgIGlmICghdGhpcy5zdGF0ZS5zZWxlY3RpbmcpIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbFNsb3QgPSBjdXJyZW50U2xvdFxuICAgICAgfVxuXG4gICAgICBsZXQgaW5pdGlhbFNsb3QgPSB0aGlzLl9pbml0aWFsU2xvdFxuICAgICAgaWYgKGxvY2FsaXplci5sdGUoaW5pdGlhbFNsb3QsIGN1cnJlbnRTbG90KSkge1xuICAgICAgICBjdXJyZW50U2xvdCA9IHRoaXMuc2xvdE1ldHJpY3MubmV4dFNsb3QoY3VycmVudFNsb3QpXG4gICAgICB9IGVsc2UgaWYgKGxvY2FsaXplci5ndChpbml0aWFsU2xvdCwgY3VycmVudFNsb3QpKSB7XG4gICAgICAgIGluaXRpYWxTbG90ID0gdGhpcy5zbG90TWV0cmljcy5uZXh0U2xvdChpbml0aWFsU2xvdClcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2VsZWN0UmFuZ2UgPSB0aGlzLnNsb3RNZXRyaWNzLmdldFJhbmdlKFxuICAgICAgICBsb2NhbGl6ZXIubWluKGluaXRpYWxTbG90LCBjdXJyZW50U2xvdCksXG4gICAgICAgIGxvY2FsaXplci5tYXgoaW5pdGlhbFNsb3QsIGN1cnJlbnRTbG90KVxuICAgICAgKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zZWxlY3RSYW5nZSxcbiAgICAgICAgc2VsZWN0aW5nOiB0cnVlLFxuXG4gICAgICAgIHRvcDogYCR7c2VsZWN0UmFuZ2UudG9wfSVgLFxuICAgICAgICBoZWlnaHQ6IGAke3NlbGVjdFJhbmdlLmhlaWdodH0lYCxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgc2VsZWN0b3JDbGlja3NIYW5kbGVyID0gKGJveCwgYWN0aW9uVHlwZSkgPT4ge1xuICAgICAgaWYgKCFpc0V2ZW50KHRoaXMuY29udGFpbmVyUmVmLmN1cnJlbnQsIGJveCkpIHtcbiAgICAgICAgY29uc3QgeyBzdGFydERhdGUsIGVuZERhdGUgfSA9IHNlbGVjdGlvblN0YXRlKGJveClcbiAgICAgICAgdGhpcy5fc2VsZWN0U2xvdCh7XG4gICAgICAgICAgc3RhcnREYXRlLFxuICAgICAgICAgIGVuZERhdGUsXG4gICAgICAgICAgYWN0aW9uOiBhY3Rpb25UeXBlLFxuICAgICAgICAgIGJveCxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBzZWxlY3Rpbmc6IGZhbHNlIH0pXG4gICAgfVxuXG4gICAgc2VsZWN0b3Iub24oJ3NlbGVjdGluZycsIG1heWJlU2VsZWN0KVxuICAgIHNlbGVjdG9yLm9uKCdzZWxlY3RTdGFydCcsIG1heWJlU2VsZWN0KVxuXG4gICAgc2VsZWN0b3Iub24oJ2JlZm9yZVNlbGVjdCcsIChib3gpID0+IHtcbiAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGFibGUgIT09ICdpZ25vcmVFdmVudHMnKSByZXR1cm5cblxuICAgICAgcmV0dXJuICFpc0V2ZW50KHRoaXMuY29udGFpbmVyUmVmLmN1cnJlbnQsIGJveClcbiAgICB9KVxuXG4gICAgc2VsZWN0b3Iub24oJ2NsaWNrJywgKGJveCkgPT4gc2VsZWN0b3JDbGlja3NIYW5kbGVyKGJveCwgJ2NsaWNrJykpXG5cbiAgICBzZWxlY3Rvci5vbignZG91YmxlQ2xpY2snLCAoYm94KSA9PlxuICAgICAgc2VsZWN0b3JDbGlja3NIYW5kbGVyKGJveCwgJ2RvdWJsZUNsaWNrJylcbiAgICApXG5cbiAgICBzZWxlY3Rvci5vbignc2VsZWN0JywgKGJvdW5kcykgPT4ge1xuICAgICAgaWYgKHRoaXMuc3RhdGUuc2VsZWN0aW5nKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdFNsb3QoeyAuLi50aGlzLnN0YXRlLCBhY3Rpb246ICdzZWxlY3QnLCBib3VuZHMgfSlcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNlbGVjdGluZzogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgc2VsZWN0b3Iub24oJ3Jlc2V0JywgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc3RhdGUuc2VsZWN0aW5nKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzZWxlY3Rpbmc6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIF90ZWFyZG93blNlbGVjdGFibGUgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLl9zZWxlY3RvcikgcmV0dXJuXG4gICAgdGhpcy5fc2VsZWN0b3IudGVhcmRvd24oKVxuICAgIHRoaXMuX3NlbGVjdG9yID0gbnVsbFxuICB9XG5cbiAgX3NlbGVjdFNsb3QgPSAoeyBzdGFydERhdGUsIGVuZERhdGUsIGFjdGlvbiwgYm91bmRzLCBib3ggfSkgPT4ge1xuICAgIGxldCBjdXJyZW50ID0gc3RhcnREYXRlLFxuICAgICAgc2xvdHMgPSBbXVxuXG4gICAgd2hpbGUgKHRoaXMucHJvcHMubG9jYWxpemVyLmx0ZShjdXJyZW50LCBlbmREYXRlKSkge1xuICAgICAgc2xvdHMucHVzaChjdXJyZW50KVxuICAgICAgY3VycmVudCA9IG5ldyBEYXRlKCtjdXJyZW50ICsgdGhpcy5wcm9wcy5zdGVwICogNjAgKiAxMDAwKSAvLyB1c2luZyBEYXRlIGVuc3VyZXMgbm90IHRvIGNyZWF0ZSBhbiBlbmRsZXNzIGxvb3AgdGhlIGRheSBEU1QgYmVnaW5zXG4gICAgfVxuXG4gICAgbm90aWZ5KHRoaXMucHJvcHMub25TZWxlY3RTbG90LCB7XG4gICAgICBzbG90cyxcbiAgICAgIHN0YXJ0OiBzdGFydERhdGUsXG4gICAgICBlbmQ6IGVuZERhdGUsXG4gICAgICByZXNvdXJjZUlkOiB0aGlzLnByb3BzLnJlc291cmNlLFxuICAgICAgYWN0aW9uLFxuICAgICAgYm91bmRzLFxuICAgICAgYm94LFxuICAgIH0pXG4gIH1cblxuICBfc2VsZWN0ID0gKC4uLmFyZ3MpID0+IHtcbiAgICBub3RpZnkodGhpcy5wcm9wcy5vblNlbGVjdEV2ZW50LCBhcmdzKVxuICB9XG5cbiAgX2RvdWJsZUNsaWNrID0gKC4uLmFyZ3MpID0+IHtcbiAgICBub3RpZnkodGhpcy5wcm9wcy5vbkRvdWJsZUNsaWNrRXZlbnQsIGFyZ3MpXG4gIH1cblxuICBfa2V5UHJlc3MgPSAoLi4uYXJncykgPT4ge1xuICAgIG5vdGlmeSh0aGlzLnByb3BzLm9uS2V5UHJlc3NFdmVudCwgYXJncylcbiAgfVxufVxuXG5EYXlDb2x1bW4ucHJvcFR5cGVzID0ge1xuICBldmVudHM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBiYWNrZ3JvdW5kRXZlbnRzOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3RlcDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBkYXRlOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLFxuICBtaW46IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsXG4gIG1heDogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxcbiAgZ2V0Tm93OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBpc05vdzogUHJvcFR5cGVzLmJvb2wsXG5cbiAgcnRsOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVzaXphYmxlOiBQcm9wVHlwZXMuYm9vbCxcblxuICBhY2Nlc3NvcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY29tcG9uZW50czogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnZXR0ZXJzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGxvY2FsaXplcjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuXG4gIHNob3dNdWx0aURheVRpbWVzOiBQcm9wVHlwZXMuYm9vbCxcbiAgY3VsdHVyZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgdGltZXNsb3RzOiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIHNlbGVjdGVkOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzZWxlY3RhYmxlOiBQcm9wVHlwZXMub25lT2YoW3RydWUsIGZhbHNlLCAnaWdub3JlRXZlbnRzJ10pLFxuICBldmVudE9mZnNldDogUHJvcFR5cGVzLm51bWJlcixcbiAgbG9uZ1ByZXNzVGhyZXNob2xkOiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIG9uU2VsZWN0aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3RTbG90OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvblNlbGVjdEV2ZW50OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkRvdWJsZUNsaWNrRXZlbnQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uS2V5UHJlc3NFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBkcmFnVGhyb3VnaEV2ZW50czogUHJvcFR5cGVzLmJvb2wsXG4gIHJlc291cmNlOiBQcm9wVHlwZXMuYW55LFxuXG4gIGRheUxheW91dEFsZ29yaXRobTogRGF5TGF5b3V0QWxnb3JpdGhtUHJvcFR5cGUsXG59XG5cbkRheUNvbHVtbi5kZWZhdWx0UHJvcHMgPSB7XG4gIGRyYWdUaHJvdWdoRXZlbnRzOiB0cnVlLFxuICB0aW1lc2xvdHM6IDIsXG59XG5cbmV4cG9ydCBkZWZhdWx0IERheUNvbHVtblxuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuXG5pbXBvcnQgeyBnZXRTbG90TWV0cmljcyB9IGZyb20gJy4vdXRpbHMvVGltZVNsb3RzJ1xuaW1wb3J0IFRpbWVTbG90R3JvdXAgZnJvbSAnLi9UaW1lU2xvdEdyb3VwJ1xuXG4vKipcbiAqIFNpbmNlIHRoZSBUaW1lR3V0dGVyIG9ubHkgZGlzcGxheXMgdGhlICd0aW1lcycgb2Ygc2xvdHMgaW4gYSBkYXksIGFuZCBpcyBzZXBhcmF0ZVxuICogZnJvbSB0aGUgRGF5IENvbHVtbnMgdGhlbXNlbHZlcywgd2UgY2hlY2sgdG8gc2VlIGlmIHRoZSByYW5nZSBjb250YWlucyBhbiBvZmZzZXQgZGlmZmVyZW5jZVxuICogYW5kLCBpZiBzbywgY2hhbmdlIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCAnZGF0ZScgYnkgYSBkYXkgdG8gcHJvcGVybHkgZGlzcGxheSB0aGUgc2xvdHMgdGltZXNcbiAqIHVzZWQuXG4gKi9cbmZ1bmN0aW9uIGFkanVzdEZvckRTVCh7IG1pbiwgbWF4LCBsb2NhbGl6ZXIgfSkge1xuICBpZiAobG9jYWxpemVyLmdldFRpbWV6b25lT2Zmc2V0KG1pbikgIT09IGxvY2FsaXplci5nZXRUaW1lem9uZU9mZnNldChtYXgpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0OiBsb2NhbGl6ZXIuYWRkKG1pbiwgLTEsICdkYXknKSxcbiAgICAgIGVuZDogbG9jYWxpemVyLmFkZChtYXgsIC0xLCAnZGF5JyksXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHN0YXJ0OiBtaW4sIGVuZDogbWF4IH1cbn1cblxuY29uc3QgVGltZUd1dHRlciA9ICh7XG4gIG1pbixcbiAgbWF4LFxuICB0aW1lc2xvdHMsXG4gIHN0ZXAsXG4gIGxvY2FsaXplcixcbiAgZ2V0Tm93LFxuICByZXNvdXJjZSxcbiAgY29tcG9uZW50cyxcbiAgZ2V0dGVycyxcbiAgZ3V0dGVyUmVmLFxufSkgPT4ge1xuICBjb25zdCB7IHRpbWVHdXR0ZXJXcmFwcGVyOiBUaW1lR3V0dGVyV3JhcHBlciB9ID0gY29tcG9uZW50c1xuICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gYWRqdXN0Rm9yRFNUKHsgbWluLCBtYXgsIGxvY2FsaXplciB9KSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgW21pbj8udG9JU09TdHJpbmcoKSwgbWF4Py50b0lTT1N0cmluZygpLCBsb2NhbGl6ZXJdXG4gIClcbiAgY29uc3QgW3Nsb3RNZXRyaWNzLCBzZXRTbG90TWV0cmljc10gPSB1c2VTdGF0ZShcbiAgICBnZXRTbG90TWV0cmljcyh7XG4gICAgICBtaW46IHN0YXJ0LFxuICAgICAgbWF4OiBlbmQsXG4gICAgICB0aW1lc2xvdHMsXG4gICAgICBzdGVwLFxuICAgICAgbG9jYWxpemVyLFxuICAgIH0pXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzbG90TWV0cmljcykge1xuICAgICAgc2V0U2xvdE1ldHJpY3MoXG4gICAgICAgIHNsb3RNZXRyaWNzLnVwZGF0ZSh7XG4gICAgICAgICAgbWluOiBzdGFydCxcbiAgICAgICAgICBtYXg6IGVuZCxcbiAgICAgICAgICB0aW1lc2xvdHMsXG4gICAgICAgICAgc3RlcCxcbiAgICAgICAgICBsb2NhbGl6ZXIsXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfVxuICAgIC8qKlxuICAgICAqIFdlIGRvbid0IHdhbnQgdGhpcyB0byBmaXJlIHdoZW4gc2xvdE1ldHJpY3MgaXMgdXBkYXRlZCBhcyBpdCB3b3VsZCByZWN1cnNpdmVseSBib21iXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbc3RhcnQ/LnRvSVNPU3RyaW5nKCksIGVuZD8udG9JU09TdHJpbmcoKSwgdGltZXNsb3RzLCBzdGVwXSlcblxuICBjb25zdCByZW5kZXJTbG90ID0gdXNlQ2FsbGJhY2soXG4gICAgKHZhbHVlLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHgpIHJldHVybiBudWxsIC8vIGRvbid0IHJldHVybiB0aGUgZmlyc3QgKDApIGlkeFxuXG4gICAgICBjb25zdCBpc05vdyA9IHNsb3RNZXRyaWNzLmRhdGVJc0luR3JvdXAoZ2V0Tm93KCksIGlkeClcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xzeCgncmJjLWxhYmVsJywgaXNOb3cgJiYgJ3JiYy1ub3cnKX0+XG4gICAgICAgICAge2xvY2FsaXplci5mb3JtYXQodmFsdWUsICd0aW1lR3V0dGVyRm9ybWF0Jyl9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIClcbiAgICB9LFxuICAgIFtzbG90TWV0cmljcywgbG9jYWxpemVyLCBnZXROb3ddXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxUaW1lR3V0dGVyV3JhcHBlciBzbG90TWV0cmljcz17c2xvdE1ldHJpY3N9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYmMtdGltZS1ndXR0ZXIgcmJjLXRpbWUtY29sdW1uXCIgcmVmPXtndXR0ZXJSZWZ9PlxuICAgICAgICB7c2xvdE1ldHJpY3MuZ3JvdXBzLm1hcCgoZ3JwLCBpZHgpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFRpbWVTbG90R3JvdXBcbiAgICAgICAgICAgICAga2V5PXtpZHh9XG4gICAgICAgICAgICAgIGdyb3VwPXtncnB9XG4gICAgICAgICAgICAgIHJlc291cmNlPXtyZXNvdXJjZX1cbiAgICAgICAgICAgICAgY29tcG9uZW50cz17Y29tcG9uZW50c31cbiAgICAgICAgICAgICAgcmVuZGVyU2xvdD17cmVuZGVyU2xvdH1cbiAgICAgICAgICAgICAgZ2V0dGVycz17Z2V0dGVyc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgIDwvVGltZUd1dHRlcldyYXBwZXI+XG4gIClcbn1cblxuVGltZUd1dHRlci5wcm9wVHlwZXMgPSB7XG4gIG1pbjogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxcbiAgbWF4OiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLFxuICB0aW1lc2xvdHM6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgc3RlcDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXROb3c6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNvbXBvbmVudHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZ2V0dGVyczogUHJvcFR5cGVzLm9iamVjdCxcblxuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcmVzb3VyY2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGd1dHRlclJlZjogUHJvcFR5cGVzLmFueSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4gKFxuICA8VGltZUd1dHRlciBndXR0ZXJSZWY9e3JlZn0gey4uLnByb3BzfSAvPlxuKSlcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgUmVzb3VyY2VIZWFkZXIgPSAoeyBsYWJlbCB9KSA9PiB7XG4gIHJldHVybiA8UmVhY3QuRnJhZ21lbnQ+e2xhYmVsfTwvUmVhY3QuRnJhZ21lbnQ+XG59XG5cblJlc291cmNlSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgbGFiZWw6IFByb3BUeXBlcy5ub2RlLFxuICBpbmRleDogUHJvcFR5cGVzLm51bWJlcixcbiAgcmVzb3VyY2U6IFByb3BUeXBlcy5vYmplY3QsXG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlc291cmNlSGVhZGVyXG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4J1xuaW1wb3J0IHNjcm9sbGJhclNpemUgZnJvbSAnZG9tLWhlbHBlcnMvc2Nyb2xsYmFyU2l6ZSdcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IERhdGVDb250ZW50Um93IGZyb20gJy4vRGF0ZUNvbnRlbnRSb3cnXG5pbXBvcnQgSGVhZGVyIGZyb20gJy4vSGVhZGVyJ1xuaW1wb3J0IFJlc291cmNlSGVhZGVyIGZyb20gJy4vUmVzb3VyY2VIZWFkZXInXG5pbXBvcnQgeyBub3RpZnkgfSBmcm9tICcuL3V0aWxzL2hlbHBlcnMnXG5cbmNsYXNzIFRpbWVHcmlkSGVhZGVyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgaGFuZGxlSGVhZGVyQ2xpY2sgPSAoZGF0ZSwgdmlldywgZSkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIG5vdGlmeSh0aGlzLnByb3BzLm9uRHJpbGxEb3duLCBbZGF0ZSwgdmlld10pXG4gIH1cblxuICByZW5kZXJIZWFkZXJDZWxscyhyYW5nZSkge1xuICAgIGxldCB7XG4gICAgICBsb2NhbGl6ZXIsXG4gICAgICBnZXREcmlsbGRvd25WaWV3LFxuICAgICAgZ2V0Tm93LFxuICAgICAgZ2V0dGVyczogeyBkYXlQcm9wIH0sXG4gICAgICBjb21wb25lbnRzOiB7IGhlYWRlcjogSGVhZGVyQ29tcG9uZW50ID0gSGVhZGVyIH0sXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IHRvZGF5ID0gZ2V0Tm93KClcblxuICAgIHJldHVybiByYW5nZS5tYXAoKGRhdGUsIGkpID0+IHtcbiAgICAgIGxldCBkcmlsbGRvd25WaWV3ID0gZ2V0RHJpbGxkb3duVmlldyhkYXRlKVxuICAgICAgbGV0IGxhYmVsID0gbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnZGF5Rm9ybWF0JylcblxuICAgICAgY29uc3QgeyBjbGFzc05hbWUsIHN0eWxlIH0gPSBkYXlQcm9wKGRhdGUpXG5cbiAgICAgIGxldCBoZWFkZXIgPSAoXG4gICAgICAgIDxIZWFkZXJDb21wb25lbnQgZGF0ZT17ZGF0ZX0gbGFiZWw9e2xhYmVsfSBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbiAgICAgIClcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFxuICAgICAgICAgICAgJ3JiYy1oZWFkZXInLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgbG9jYWxpemVyLmlzU2FtZURhdGUoZGF0ZSwgdG9kYXkpICYmICdyYmMtdG9kYXknXG4gICAgICAgICAgKX1cbiAgICAgICAgPlxuICAgICAgICAgIHtkcmlsbGRvd25WaWV3ID8gKFxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicmJjLWJ1dHRvbi1saW5rXCJcbiAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHRoaXMuaGFuZGxlSGVhZGVyQ2xpY2soZGF0ZSwgZHJpbGxkb3duVmlldywgZSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtoZWFkZXJ9XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPHNwYW4+e2hlYWRlcn08L3NwYW4+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApXG4gICAgfSlcbiAgfVxuICByZW5kZXJSb3cgPSAocmVzb3VyY2UpID0+IHtcbiAgICBsZXQge1xuICAgICAgZXZlbnRzLFxuICAgICAgcnRsLFxuICAgICAgc2VsZWN0YWJsZSxcbiAgICAgIGdldE5vdyxcbiAgICAgIHJhbmdlLFxuICAgICAgZ2V0dGVycyxcbiAgICAgIGxvY2FsaXplcixcbiAgICAgIGFjY2Vzc29ycyxcbiAgICAgIGNvbXBvbmVudHMsXG4gICAgICByZXNpemFibGUsXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IHJlc291cmNlSWQgPSBhY2Nlc3NvcnMucmVzb3VyY2VJZChyZXNvdXJjZSlcbiAgICBsZXQgZXZlbnRzVG9EaXNwbGF5ID0gcmVzb3VyY2VcbiAgICAgID8gZXZlbnRzLmZpbHRlcigoZXZlbnQpID0+IGFjY2Vzc29ycy5yZXNvdXJjZShldmVudCkgPT09IHJlc291cmNlSWQpXG4gICAgICA6IGV2ZW50c1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxEYXRlQ29udGVudFJvd1xuICAgICAgICBpc0FsbERheVxuICAgICAgICBydGw9e3J0bH1cbiAgICAgICAgZ2V0Tm93PXtnZXROb3d9XG4gICAgICAgIG1pblJvd3M9ezJ9XG4gICAgICAgIC8vIEFkZCArMSB0byBpbmNsdWRlIHNob3dNb3JlIGJ1dHRvbiByb3cgaW4gdGhlIHJvdyBsaW1pdFxuICAgICAgICBtYXhSb3dzPXt0aGlzLnByb3BzLmFsbERheU1heFJvd3MgKyAxfVxuICAgICAgICByYW5nZT17cmFuZ2V9XG4gICAgICAgIGV2ZW50cz17ZXZlbnRzVG9EaXNwbGF5fVxuICAgICAgICByZXNvdXJjZUlkPXtyZXNvdXJjZUlkfVxuICAgICAgICBjbGFzc05hbWU9XCJyYmMtYWxsZGF5LWNlbGxcIlxuICAgICAgICBzZWxlY3RhYmxlPXtzZWxlY3RhYmxlfVxuICAgICAgICBzZWxlY3RlZD17dGhpcy5wcm9wcy5zZWxlY3RlZH1cbiAgICAgICAgY29tcG9uZW50cz17Y29tcG9uZW50c31cbiAgICAgICAgYWNjZXNzb3JzPXthY2Nlc3NvcnN9XG4gICAgICAgIGdldHRlcnM9e2dldHRlcnN9XG4gICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICBvblNlbGVjdD17dGhpcy5wcm9wcy5vblNlbGVjdEV2ZW50fVxuICAgICAgICBvblNob3dNb3JlPXt0aGlzLnByb3BzLm9uU2hvd01vcmV9XG4gICAgICAgIG9uRG91YmxlQ2xpY2s9e3RoaXMucHJvcHMub25Eb3VibGVDbGlja0V2ZW50fVxuICAgICAgICBvbktleVByZXNzPXt0aGlzLnByb3BzLm9uS2V5UHJlc3NFdmVudH1cbiAgICAgICAgb25TZWxlY3RTbG90PXt0aGlzLnByb3BzLm9uU2VsZWN0U2xvdH1cbiAgICAgICAgbG9uZ1ByZXNzVGhyZXNob2xkPXt0aGlzLnByb3BzLmxvbmdQcmVzc1RocmVzaG9sZH1cbiAgICAgICAgcmVzaXphYmxlPXtyZXNpemFibGV9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBsZXQge1xuICAgICAgd2lkdGgsXG4gICAgICBydGwsXG4gICAgICByZXNvdXJjZXMsXG4gICAgICByYW5nZSxcbiAgICAgIGV2ZW50cyxcbiAgICAgIGdldE5vdyxcbiAgICAgIGFjY2Vzc29ycyxcbiAgICAgIHNlbGVjdGFibGUsXG4gICAgICBjb21wb25lbnRzLFxuICAgICAgZ2V0dGVycyxcbiAgICAgIHNjcm9sbFJlZixcbiAgICAgIGxvY2FsaXplcixcbiAgICAgIGlzT3ZlcmZsb3dpbmcsXG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIHRpbWVHdXR0ZXJIZWFkZXI6IFRpbWVHdXR0ZXJIZWFkZXIsXG4gICAgICAgIHJlc291cmNlSGVhZGVyOiBSZXNvdXJjZUhlYWRlckNvbXBvbmVudCA9IFJlc291cmNlSGVhZGVyLFxuICAgICAgfSxcbiAgICAgIHJlc2l6YWJsZSxcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgbGV0IHN0eWxlID0ge31cbiAgICBpZiAoaXNPdmVyZmxvd2luZykge1xuICAgICAgc3R5bGVbcnRsID8gJ21hcmdpbkxlZnQnIDogJ21hcmdpblJpZ2h0J10gPSBgJHtzY3JvbGxiYXJTaXplKCkgLSAxfXB4YFxuICAgIH1cblxuICAgIGNvbnN0IGdyb3VwZWRFdmVudHMgPSByZXNvdXJjZXMuZ3JvdXBFdmVudHMoZXZlbnRzKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICByZWY9e3Njcm9sbFJlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbHN4KCdyYmMtdGltZS1oZWFkZXInLCBpc092ZXJmbG93aW5nICYmICdyYmMtb3ZlcmZsb3dpbmcnKX1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cInJiYy1sYWJlbCByYmMtdGltZS1oZWFkZXItZ3V0dGVyXCJcbiAgICAgICAgICBzdHlsZT17eyB3aWR0aCwgbWluV2lkdGg6IHdpZHRoLCBtYXhXaWR0aDogd2lkdGggfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtUaW1lR3V0dGVySGVhZGVyICYmIDxUaW1lR3V0dGVySGVhZGVyIC8+fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7cmVzb3VyY2VzLm1hcCgoW2lkLCByZXNvdXJjZV0sIGlkeCkgPT4gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLXRpbWUtaGVhZGVyLWNvbnRlbnRcIiBrZXk9e2lkIHx8IGlkeH0+XG4gICAgICAgICAgICB7cmVzb3VyY2UgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJiYy1yb3cgcmJjLXJvdy1yZXNvdXJjZVwiIGtleT17YHJlc291cmNlXyR7aWR4fWB9PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgPFJlc291cmNlSGVhZGVyQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgIGluZGV4PXtpZHh9XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPXthY2Nlc3NvcnMucmVzb3VyY2VUaXRsZShyZXNvdXJjZSl9XG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlPXtyZXNvdXJjZX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcmJjLXJvdyByYmMtdGltZS1oZWFkZXItY2VsbCR7XG4gICAgICAgICAgICAgICAgcmFuZ2UubGVuZ3RoIDw9IDEgPyAnIHJiYy10aW1lLWhlYWRlci1jZWxsLXNpbmdsZS1kYXknIDogJydcbiAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlckhlYWRlckNlbGxzKHJhbmdlKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPERhdGVDb250ZW50Um93XG4gICAgICAgICAgICAgIGlzQWxsRGF5XG4gICAgICAgICAgICAgIHJ0bD17cnRsfVxuICAgICAgICAgICAgICBnZXROb3c9e2dldE5vd31cbiAgICAgICAgICAgICAgbWluUm93cz17Mn1cbiAgICAgICAgICAgICAgLy8gQWRkICsxIHRvIGluY2x1ZGUgc2hvd01vcmUgYnV0dG9uIHJvdyBpbiB0aGUgcm93IGxpbWl0XG4gICAgICAgICAgICAgIG1heFJvd3M9e3RoaXMucHJvcHMuYWxsRGF5TWF4Um93cyArIDF9XG4gICAgICAgICAgICAgIHJhbmdlPXtyYW5nZX1cbiAgICAgICAgICAgICAgZXZlbnRzPXtncm91cGVkRXZlbnRzLmdldChpZCkgfHwgW119XG4gICAgICAgICAgICAgIHJlc291cmNlSWQ9e3Jlc291cmNlICYmIGlkfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyYmMtYWxsZGF5LWNlbGxcIlxuICAgICAgICAgICAgICBzZWxlY3RhYmxlPXtzZWxlY3RhYmxlfVxuICAgICAgICAgICAgICBzZWxlY3RlZD17dGhpcy5wcm9wcy5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgY29tcG9uZW50cz17Y29tcG9uZW50c31cbiAgICAgICAgICAgICAgYWNjZXNzb3JzPXthY2Nlc3NvcnN9XG4gICAgICAgICAgICAgIGdldHRlcnM9e2dldHRlcnN9XG4gICAgICAgICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy5wcm9wcy5vblNlbGVjdEV2ZW50fVxuICAgICAgICAgICAgICBvblNob3dNb3JlPXt0aGlzLnByb3BzLm9uU2hvd01vcmV9XG4gICAgICAgICAgICAgIG9uRG91YmxlQ2xpY2s9e3RoaXMucHJvcHMub25Eb3VibGVDbGlja0V2ZW50fVxuICAgICAgICAgICAgICBvbktleURvd249e3RoaXMucHJvcHMub25LZXlQcmVzc0V2ZW50fVxuICAgICAgICAgICAgICBvblNlbGVjdFNsb3Q9e3RoaXMucHJvcHMub25TZWxlY3RTbG90fVxuICAgICAgICAgICAgICBsb25nUHJlc3NUaHJlc2hvbGQ9e3RoaXMucHJvcHMubG9uZ1ByZXNzVGhyZXNob2xkfVxuICAgICAgICAgICAgICByZXNpemFibGU9e3Jlc2l6YWJsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkpfVxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG59XG5cblRpbWVHcmlkSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgcmFuZ2U6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBldmVudHM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICByZXNvdXJjZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIGdldE5vdzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgaXNPdmVyZmxvd2luZzogUHJvcFR5cGVzLmJvb2wsXG5cbiAgcnRsOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVzaXphYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGFjY2Vzc29yczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjb21wb25lbnRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGdldHRlcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcblxuICBzZWxlY3RlZDogUHJvcFR5cGVzLm9iamVjdCxcbiAgc2VsZWN0YWJsZTogUHJvcFR5cGVzLm9uZU9mKFt0cnVlLCBmYWxzZSwgJ2lnbm9yZUV2ZW50cyddKSxcbiAgbG9uZ1ByZXNzVGhyZXNob2xkOiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIGFsbERheU1heFJvd3M6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgb25TZWxlY3RTbG90OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3RFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRG91YmxlQ2xpY2tFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uS2V5UHJlc3NFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRHJpbGxEb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TaG93TW9yZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGdldERyaWxsZG93blZpZXc6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHNjcm9sbFJlZjogUHJvcFR5cGVzLmFueSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgVGltZUdyaWRIZWFkZXJcbiIsImV4cG9ydCBjb25zdCBOT05FID0ge31cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmVzb3VyY2VzKHJlc291cmNlcywgYWNjZXNzb3JzKSB7XG4gIHJldHVybiB7XG4gICAgbWFwKGZuKSB7XG4gICAgICBpZiAoIXJlc291cmNlcykgcmV0dXJuIFtmbihbTk9ORSwgbnVsbF0sIDApXVxuICAgICAgcmV0dXJuIHJlc291cmNlcy5tYXAoKHJlc291cmNlLCBpZHgpID0+XG4gICAgICAgIGZuKFthY2Nlc3NvcnMucmVzb3VyY2VJZChyZXNvdXJjZSksIHJlc291cmNlXSwgaWR4KVxuICAgICAgKVxuICAgIH0sXG5cbiAgICBncm91cEV2ZW50cyhldmVudHMpIHtcbiAgICAgIGNvbnN0IGV2ZW50c0J5UmVzb3VyY2UgPSBuZXcgTWFwKClcblxuICAgICAgaWYgKCFyZXNvdXJjZXMpIHtcbiAgICAgICAgLy8gUmV0dXJuIGFsbCBldmVudHMgaWYgcmVzb3VyY2VzIGFyZSBub3QgcHJvdmlkZWRcbiAgICAgICAgZXZlbnRzQnlSZXNvdXJjZS5zZXQoTk9ORSwgZXZlbnRzKVxuICAgICAgICByZXR1cm4gZXZlbnRzQnlSZXNvdXJjZVxuICAgICAgfVxuXG4gICAgICBldmVudHMuZm9yRWFjaCgoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBhY2Nlc3NvcnMucmVzb3VyY2UoZXZlbnQpIHx8IE5PTkVcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaWQpKSB7XG4gICAgICAgICAgaWQuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc291cmNlRXZlbnRzID0gZXZlbnRzQnlSZXNvdXJjZS5nZXQoaXRlbSkgfHwgW11cbiAgICAgICAgICAgIHJlc291cmNlRXZlbnRzLnB1c2goZXZlbnQpXG4gICAgICAgICAgICBldmVudHNCeVJlc291cmNlLnNldChpdGVtLCByZXNvdXJjZUV2ZW50cylcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCByZXNvdXJjZUV2ZW50cyA9IGV2ZW50c0J5UmVzb3VyY2UuZ2V0KGlkKSB8fCBbXVxuICAgICAgICAgIHJlc291cmNlRXZlbnRzLnB1c2goZXZlbnQpXG4gICAgICAgICAgZXZlbnRzQnlSZXNvdXJjZS5zZXQoaWQsIHJlc291cmNlRXZlbnRzKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgcmV0dXJuIGV2ZW50c0J5UmVzb3VyY2VcbiAgICB9LFxuICB9XG59XG4iLCJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50LCBjcmVhdGVSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnXG5pbXBvcnQgKiBhcyBhbmltYXRpb25GcmFtZSBmcm9tICdkb20taGVscGVycy9hbmltYXRpb25GcmFtZSdcbmltcG9ydCBtZW1vaXplIGZyb20gJ21lbW9pemUtb25lJ1xuXG5pbXBvcnQgRGF5Q29sdW1uIGZyb20gJy4vRGF5Q29sdW1uJ1xuaW1wb3J0IFRpbWVHdXR0ZXIgZnJvbSAnLi9UaW1lR3V0dGVyJ1xuaW1wb3J0IFRpbWVHcmlkSGVhZGVyIGZyb20gJy4vVGltZUdyaWRIZWFkZXInXG5pbXBvcnQgUG9wT3ZlcmxheSBmcm9tICcuL1BvcE92ZXJsYXknXG5cbmltcG9ydCBnZXRXaWR0aCBmcm9tICdkb20taGVscGVycy93aWR0aCdcbmltcG9ydCBnZXRQb3NpdGlvbiBmcm9tICdkb20taGVscGVycy9wb3NpdGlvbidcbmltcG9ydCB7IHZpZXdzIH0gZnJvbSAnLi91dGlscy9jb25zdGFudHMnXG5pbXBvcnQgeyBpblJhbmdlLCBzb3J0RXZlbnRzIH0gZnJvbSAnLi91dGlscy9ldmVudExldmVscydcbmltcG9ydCB7IG5vdGlmeSB9IGZyb20gJy4vdXRpbHMvaGVscGVycydcbmltcG9ydCBSZXNvdXJjZXMgZnJvbSAnLi91dGlscy9SZXNvdXJjZXMnXG5pbXBvcnQgeyBEYXlMYXlvdXRBbGdvcml0aG1Qcm9wVHlwZSB9IGZyb20gJy4vdXRpbHMvcHJvcFR5cGVzJ1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUaW1lR3JpZCBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpXG5cbiAgICB0aGlzLnN0YXRlID0geyBndXR0ZXJXaWR0aDogdW5kZWZpbmVkLCBpc092ZXJmbG93aW5nOiBudWxsIH1cblxuICAgIHRoaXMuc2Nyb2xsUmVmID0gUmVhY3QuY3JlYXRlUmVmKClcbiAgICB0aGlzLmNvbnRlbnRSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKVxuICAgIHRoaXMuY29udGFpbmVyUmVmID0gUmVhY3QuY3JlYXRlUmVmKClcbiAgICB0aGlzLl9zY3JvbGxSYXRpbyA9IG51bGxcbiAgICB0aGlzLmd1dHRlclJlZiA9IGNyZWF0ZVJlZigpXG4gIH1cblxuICBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSgpIHtcbiAgICB0aGlzLmNoZWNrT3ZlcmZsb3coKVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy53aWR0aCA9PSBudWxsKSB7XG4gICAgICB0aGlzLm1lYXN1cmVHdXR0ZXIoKVxuICAgIH1cblxuICAgIHRoaXMuY2FsY3VsYXRlU2Nyb2xsKClcbiAgICB0aGlzLmFwcGx5U2Nyb2xsKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmhhbmRsZVJlc2l6ZSlcbiAgfVxuXG4gIGhhbmRsZVNjcm9sbCA9IChlKSA9PiB7XG4gICAgaWYgKHRoaXMuc2Nyb2xsUmVmLmN1cnJlbnQpIHtcbiAgICAgIHRoaXMuc2Nyb2xsUmVmLmN1cnJlbnQuc2Nyb2xsTGVmdCA9IGUudGFyZ2V0LnNjcm9sbExlZnRcbiAgICB9XG4gIH1cblxuICBoYW5kbGVSZXNpemUgPSAoKSA9PiB7XG4gICAgYW5pbWF0aW9uRnJhbWUuY2FuY2VsKHRoaXMucmFmSGFuZGxlKVxuICAgIHRoaXMucmFmSGFuZGxlID0gYW5pbWF0aW9uRnJhbWUucmVxdWVzdCh0aGlzLmNoZWNrT3ZlcmZsb3cpXG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5oYW5kbGVSZXNpemUpXG5cbiAgICBhbmltYXRpb25GcmFtZS5jYW5jZWwodGhpcy5yYWZIYW5kbGUpXG5cbiAgICBpZiAodGhpcy5tZWFzdXJlR3V0dGVyQW5pbWF0aW9uRnJhbWVSZXF1ZXN0KSB7XG4gICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5tZWFzdXJlR3V0dGVyQW5pbWF0aW9uRnJhbWVSZXF1ZXN0KVxuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICB0aGlzLmFwcGx5U2Nyb2xsKClcbiAgfVxuXG4gIGhhbmRsZUtleVByZXNzRXZlbnQgPSAoLi4uYXJncykgPT4ge1xuICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKVxuICAgIG5vdGlmeSh0aGlzLnByb3BzLm9uS2V5UHJlc3NFdmVudCwgYXJncylcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdEV2ZW50ID0gKC4uLmFyZ3MpID0+IHtcbiAgICAvL2NhbmNlbCBhbnkgcGVuZGluZyBzZWxlY3Rpb25zIHNvIG9ubHkgdGhlIGV2ZW50IGNsaWNrIGdvZXMgdGhyb3VnaC5cbiAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKClcbiAgICBub3RpZnkodGhpcy5wcm9wcy5vblNlbGVjdEV2ZW50LCBhcmdzKVxuICB9XG5cbiAgaGFuZGxlRG91YmxlQ2xpY2tFdmVudCA9ICguLi5hcmdzKSA9PiB7XG4gICAgdGhpcy5jbGVhclNlbGVjdGlvbigpXG4gICAgbm90aWZ5KHRoaXMucHJvcHMub25Eb3VibGVDbGlja0V2ZW50LCBhcmdzKVxuICB9XG5cbiAgaGFuZGxlU2hvd01vcmUgPSAoZXZlbnRzLCBkYXRlLCBjZWxsLCBzbG90LCB0YXJnZXQpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBwb3B1cCxcbiAgICAgIG9uRHJpbGxEb3duLFxuICAgICAgb25TaG93TW9yZSxcbiAgICAgIGdldERyaWxsZG93blZpZXcsXG4gICAgICBkb1Nob3dNb3JlRHJpbGxEb3duLFxuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgdGhpcy5jbGVhclNlbGVjdGlvbigpXG5cbiAgICBpZiAocG9wdXApIHtcbiAgICAgIGxldCBwb3NpdGlvbiA9IGdldFBvc2l0aW9uKGNlbGwsIHRoaXMuY29udGFpbmVyUmVmLmN1cnJlbnQpXG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBvdmVybGF5OiB7XG4gICAgICAgICAgZGF0ZSxcbiAgICAgICAgICBldmVudHMsXG4gICAgICAgICAgcG9zaXRpb246IHsgLi4ucG9zaXRpb24sIHdpZHRoOiAnMjAwcHgnIH0sXG4gICAgICAgICAgdGFyZ2V0LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKGRvU2hvd01vcmVEcmlsbERvd24pIHtcbiAgICAgIG5vdGlmeShvbkRyaWxsRG93biwgW2RhdGUsIGdldERyaWxsZG93blZpZXcoZGF0ZSkgfHwgdmlld3MuREFZXSlcbiAgICB9XG5cbiAgICBub3RpZnkob25TaG93TW9yZSwgW2V2ZW50cywgZGF0ZSwgc2xvdF0pXG4gIH1cblxuICBoYW5kbGVTZWxlY3RBbGxEYXlTbG90ID0gKHNsb3RzLCBzbG90SW5mbykgPT4ge1xuICAgIGNvbnN0IHsgb25TZWxlY3RTbG90IH0gPSB0aGlzLnByb3BzXG5cbiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKHNsb3RzWzBdKVxuICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKHNsb3RzW3Nsb3RzLmxlbmd0aCAtIDFdKVxuICAgIGVuZC5zZXREYXRlKHNsb3RzW3Nsb3RzLmxlbmd0aCAtIDFdLmdldERhdGUoKSArIDEpXG5cbiAgICBub3RpZnkob25TZWxlY3RTbG90LCB7XG4gICAgICBzbG90cyxcbiAgICAgIHN0YXJ0LFxuICAgICAgZW5kLFxuICAgICAgYWN0aW9uOiBzbG90SW5mby5hY3Rpb24sXG4gICAgICByZXNvdXJjZUlkOiBzbG90SW5mby5yZXNvdXJjZUlkLFxuICAgIH0pXG4gIH1cblxuICByZW5kZXJFdmVudHMocmFuZ2UsIGV2ZW50cywgYmFja2dyb3VuZEV2ZW50cywgbm93KSB7XG4gICAgbGV0IHsgbWluLCBtYXgsIGNvbXBvbmVudHMsIGFjY2Vzc29ycywgbG9jYWxpemVyLCBkYXlMYXlvdXRBbGdvcml0aG0gfSA9XG4gICAgICB0aGlzLnByb3BzXG5cbiAgICBjb25zdCByZXNvdXJjZXMgPSB0aGlzLm1lbW9pemVkUmVzb3VyY2VzKHRoaXMucHJvcHMucmVzb3VyY2VzLCBhY2Nlc3NvcnMpXG4gICAgY29uc3QgZ3JvdXBlZEV2ZW50cyA9IHJlc291cmNlcy5ncm91cEV2ZW50cyhldmVudHMpXG4gICAgY29uc3QgZ3JvdXBlZEJhY2tncm91bmRFdmVudHMgPSByZXNvdXJjZXMuZ3JvdXBFdmVudHMoYmFja2dyb3VuZEV2ZW50cylcblxuICAgIHJldHVybiByZXNvdXJjZXMubWFwKChbaWQsIHJlc291cmNlXSwgaSkgPT5cbiAgICAgIHJhbmdlLm1hcCgoZGF0ZSwgamopID0+IHtcbiAgICAgICAgbGV0IGRheXNFdmVudHMgPSAoZ3JvdXBlZEV2ZW50cy5nZXQoaWQpIHx8IFtdKS5maWx0ZXIoKGV2ZW50KSA9PlxuICAgICAgICAgIGxvY2FsaXplci5pblJhbmdlKFxuICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgIGFjY2Vzc29ycy5zdGFydChldmVudCksXG4gICAgICAgICAgICBhY2Nlc3NvcnMuZW5kKGV2ZW50KSxcbiAgICAgICAgICAgICdkYXknXG4gICAgICAgICAgKVxuICAgICAgICApXG5cbiAgICAgICAgbGV0IGRheXNCYWNrZ3JvdW5kRXZlbnRzID0gKFxuICAgICAgICAgIGdyb3VwZWRCYWNrZ3JvdW5kRXZlbnRzLmdldChpZCkgfHwgW11cbiAgICAgICAgKS5maWx0ZXIoKGV2ZW50KSA9PlxuICAgICAgICAgIGxvY2FsaXplci5pblJhbmdlKFxuICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgIGFjY2Vzc29ycy5zdGFydChldmVudCksXG4gICAgICAgICAgICBhY2Nlc3NvcnMuZW5kKGV2ZW50KSxcbiAgICAgICAgICAgICdkYXknXG4gICAgICAgICAgKVxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8RGF5Q29sdW1uXG4gICAgICAgICAgICB7Li4udGhpcy5wcm9wc31cbiAgICAgICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICAgICAgbWluPXtsb2NhbGl6ZXIubWVyZ2UoZGF0ZSwgbWluKX1cbiAgICAgICAgICAgIG1heD17bG9jYWxpemVyLm1lcmdlKGRhdGUsIG1heCl9XG4gICAgICAgICAgICByZXNvdXJjZT17cmVzb3VyY2UgJiYgaWR9XG4gICAgICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICAgICAgaXNOb3c9e2xvY2FsaXplci5pc1NhbWVEYXRlKGRhdGUsIG5vdyl9XG4gICAgICAgICAgICBrZXk9e2kgKyAnLScgKyBqan1cbiAgICAgICAgICAgIGRhdGU9e2RhdGV9XG4gICAgICAgICAgICBldmVudHM9e2RheXNFdmVudHN9XG4gICAgICAgICAgICBiYWNrZ3JvdW5kRXZlbnRzPXtkYXlzQmFja2dyb3VuZEV2ZW50c31cbiAgICAgICAgICAgIGRheUxheW91dEFsZ29yaXRobT17ZGF5TGF5b3V0QWxnb3JpdGhtfVxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGxldCB7XG4gICAgICBldmVudHMsXG4gICAgICBiYWNrZ3JvdW5kRXZlbnRzLFxuICAgICAgcmFuZ2UsXG4gICAgICB3aWR0aCxcbiAgICAgIHJ0bCxcbiAgICAgIHNlbGVjdGVkLFxuICAgICAgZ2V0Tm93LFxuICAgICAgcmVzb3VyY2VzLFxuICAgICAgY29tcG9uZW50cyxcbiAgICAgIGFjY2Vzc29ycyxcbiAgICAgIGdldHRlcnMsXG4gICAgICBsb2NhbGl6ZXIsXG4gICAgICBtaW4sXG4gICAgICBtYXgsXG4gICAgICBzaG93TXVsdGlEYXlUaW1lcyxcbiAgICAgIGxvbmdQcmVzc1RocmVzaG9sZCxcbiAgICAgIHJlc2l6YWJsZSxcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgd2lkdGggPSB3aWR0aCB8fCB0aGlzLnN0YXRlLmd1dHRlcldpZHRoXG5cbiAgICBsZXQgc3RhcnQgPSByYW5nZVswXSxcbiAgICAgIGVuZCA9IHJhbmdlW3JhbmdlLmxlbmd0aCAtIDFdXG5cbiAgICB0aGlzLnNsb3RzID0gcmFuZ2UubGVuZ3RoXG5cbiAgICBsZXQgYWxsRGF5RXZlbnRzID0gW10sXG4gICAgICByYW5nZUV2ZW50cyA9IFtdLFxuICAgICAgcmFuZ2VCYWNrZ3JvdW5kRXZlbnRzID0gW11cblxuICAgIGV2ZW50cy5mb3JFYWNoKChldmVudCkgPT4ge1xuICAgICAgaWYgKGluUmFuZ2UoZXZlbnQsIHN0YXJ0LCBlbmQsIGFjY2Vzc29ycywgbG9jYWxpemVyKSkge1xuICAgICAgICBsZXQgZVN0YXJ0ID0gYWNjZXNzb3JzLnN0YXJ0KGV2ZW50KSxcbiAgICAgICAgICBlRW5kID0gYWNjZXNzb3JzLmVuZChldmVudClcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgYWNjZXNzb3JzLmFsbERheShldmVudCkgfHxcbiAgICAgICAgICBsb2NhbGl6ZXIuc3RhcnRBbmRFbmRBcmVEYXRlT25seShlU3RhcnQsIGVFbmQpIHx8XG4gICAgICAgICAgKCFzaG93TXVsdGlEYXlUaW1lcyAmJiAhbG9jYWxpemVyLmlzU2FtZURhdGUoZVN0YXJ0LCBlRW5kKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgYWxsRGF5RXZlbnRzLnB1c2goZXZlbnQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmFuZ2VFdmVudHMucHVzaChldmVudClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBiYWNrZ3JvdW5kRXZlbnRzLmZvckVhY2goKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoaW5SYW5nZShldmVudCwgc3RhcnQsIGVuZCwgYWNjZXNzb3JzLCBsb2NhbGl6ZXIpKSB7XG4gICAgICAgIHJhbmdlQmFja2dyb3VuZEV2ZW50cy5wdXNoKGV2ZW50KVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBhbGxEYXlFdmVudHMuc29ydCgoYSwgYikgPT4gc29ydEV2ZW50cyhhLCBiLCBhY2Nlc3NvcnMsIGxvY2FsaXplcikpXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2Nsc3goXG4gICAgICAgICAgJ3JiYy10aW1lLXZpZXcnLFxuICAgICAgICAgIHJlc291cmNlcyAmJiAncmJjLXRpbWUtdmlldy1yZXNvdXJjZXMnXG4gICAgICAgICl9XG4gICAgICAgIHJlZj17dGhpcy5jb250YWluZXJSZWZ9XG4gICAgICA+XG4gICAgICAgIDxUaW1lR3JpZEhlYWRlclxuICAgICAgICAgIHJhbmdlPXtyYW5nZX1cbiAgICAgICAgICBldmVudHM9e2FsbERheUV2ZW50c31cbiAgICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgICAgcnRsPXtydGx9XG4gICAgICAgICAgZ2V0Tm93PXtnZXROb3d9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgICAgIGFsbERheU1heFJvd3M9e1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5zaG93QWxsRXZlbnRzXG4gICAgICAgICAgICAgID8gSW5maW5pdHlcbiAgICAgICAgICAgICAgOiB0aGlzLnByb3BzLmFsbERheU1heFJvd3MgPz8gSW5maW5pdHlcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzb3VyY2VzPXt0aGlzLm1lbW9pemVkUmVzb3VyY2VzKHJlc291cmNlcywgYWNjZXNzb3JzKX1cbiAgICAgICAgICBzZWxlY3RhYmxlPXt0aGlzLnByb3BzLnNlbGVjdGFibGV9XG4gICAgICAgICAgYWNjZXNzb3JzPXthY2Nlc3NvcnN9XG4gICAgICAgICAgZ2V0dGVycz17Z2V0dGVyc31cbiAgICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICAgIHNjcm9sbFJlZj17dGhpcy5zY3JvbGxSZWZ9XG4gICAgICAgICAgaXNPdmVyZmxvd2luZz17dGhpcy5zdGF0ZS5pc092ZXJmbG93aW5nfVxuICAgICAgICAgIGxvbmdQcmVzc1RocmVzaG9sZD17bG9uZ1ByZXNzVGhyZXNob2xkfVxuICAgICAgICAgIG9uU2VsZWN0U2xvdD17dGhpcy5oYW5kbGVTZWxlY3RBbGxEYXlTbG90fVxuICAgICAgICAgIG9uU2VsZWN0RXZlbnQ9e3RoaXMuaGFuZGxlU2VsZWN0RXZlbnR9XG4gICAgICAgICAgb25TaG93TW9yZT17dGhpcy5oYW5kbGVTaG93TW9yZX1cbiAgICAgICAgICBvbkRvdWJsZUNsaWNrRXZlbnQ9e3RoaXMucHJvcHMub25Eb3VibGVDbGlja0V2ZW50fVxuICAgICAgICAgIG9uS2V5UHJlc3NFdmVudD17dGhpcy5wcm9wcy5vbktleVByZXNzRXZlbnR9XG4gICAgICAgICAgb25EcmlsbERvd249e3RoaXMucHJvcHMub25EcmlsbERvd259XG4gICAgICAgICAgZ2V0RHJpbGxkb3duVmlldz17dGhpcy5wcm9wcy5nZXREcmlsbGRvd25WaWV3fVxuICAgICAgICAgIHJlc2l6YWJsZT17cmVzaXphYmxlfVxuICAgICAgICAvPlxuICAgICAgICB7dGhpcy5wcm9wcy5wb3B1cCAmJiB0aGlzLnJlbmRlck92ZXJsYXkoKX1cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHJlZj17dGhpcy5jb250ZW50UmVmfVxuICAgICAgICAgIGNsYXNzTmFtZT1cInJiYy10aW1lLWNvbnRlbnRcIlxuICAgICAgICAgIG9uU2Nyb2xsPXt0aGlzLmhhbmRsZVNjcm9sbH1cbiAgICAgICAgPlxuICAgICAgICAgIDxUaW1lR3V0dGVyXG4gICAgICAgICAgICBkYXRlPXtzdGFydH1cbiAgICAgICAgICAgIHJlZj17dGhpcy5ndXR0ZXJSZWZ9XG4gICAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICAgIG1pbj17bG9jYWxpemVyLm1lcmdlKHN0YXJ0LCBtaW4pfVxuICAgICAgICAgICAgbWF4PXtsb2NhbGl6ZXIubWVyZ2Uoc3RhcnQsIG1heCl9XG4gICAgICAgICAgICBzdGVwPXt0aGlzLnByb3BzLnN0ZXB9XG4gICAgICAgICAgICBnZXROb3c9e3RoaXMucHJvcHMuZ2V0Tm93fVxuICAgICAgICAgICAgdGltZXNsb3RzPXt0aGlzLnByb3BzLnRpbWVzbG90c31cbiAgICAgICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJyYmMtdGltZS1ndXR0ZXJcIlxuICAgICAgICAgICAgZ2V0dGVycz17Z2V0dGVyc31cbiAgICAgICAgICAvPlxuICAgICAgICAgIHt0aGlzLnJlbmRlckV2ZW50cyhcbiAgICAgICAgICAgIHJhbmdlLFxuICAgICAgICAgICAgcmFuZ2VFdmVudHMsXG4gICAgICAgICAgICByYW5nZUJhY2tncm91bmRFdmVudHMsXG4gICAgICAgICAgICBnZXROb3coKVxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgcmVuZGVyT3ZlcmxheSgpIHtcbiAgICBsZXQgb3ZlcmxheSA9IHRoaXMuc3RhdGU/Lm92ZXJsYXkgPz8ge31cbiAgICBsZXQge1xuICAgICAgYWNjZXNzb3JzLFxuICAgICAgbG9jYWxpemVyLFxuICAgICAgY29tcG9uZW50cyxcbiAgICAgIGdldHRlcnMsXG4gICAgICBzZWxlY3RlZCxcbiAgICAgIHBvcHVwT2Zmc2V0LFxuICAgICAgaGFuZGxlRHJhZ1N0YXJ0LFxuICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICBjb25zdCBvbkhpZGUgPSAoKSA9PiB0aGlzLnNldFN0YXRlKHsgb3ZlcmxheTogbnVsbCB9KVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxQb3BPdmVybGF5XG4gICAgICAgIG92ZXJsYXk9e292ZXJsYXl9XG4gICAgICAgIGFjY2Vzc29ycz17YWNjZXNzb3JzfVxuICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgY29tcG9uZW50cz17Y29tcG9uZW50c31cbiAgICAgICAgZ2V0dGVycz17Z2V0dGVyc31cbiAgICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgICBwb3B1cE9mZnNldD17cG9wdXBPZmZzZXR9XG4gICAgICAgIHJlZj17dGhpcy5jb250YWluZXJSZWZ9XG4gICAgICAgIGhhbmRsZUtleVByZXNzRXZlbnQ9e3RoaXMuaGFuZGxlS2V5UHJlc3NFdmVudH1cbiAgICAgICAgaGFuZGxlU2VsZWN0RXZlbnQ9e3RoaXMuaGFuZGxlU2VsZWN0RXZlbnR9XG4gICAgICAgIGhhbmRsZURvdWJsZUNsaWNrRXZlbnQ9e3RoaXMuaGFuZGxlRG91YmxlQ2xpY2tFdmVudH1cbiAgICAgICAgaGFuZGxlRHJhZ1N0YXJ0PXtoYW5kbGVEcmFnU3RhcnR9XG4gICAgICAgIHNob3c9eyEhb3ZlcmxheS5wb3NpdGlvbn1cbiAgICAgICAgb3ZlcmxheURpc3BsYXk9e3RoaXMub3ZlcmxheURpc3BsYXl9XG4gICAgICAgIG9uSGlkZT17b25IaWRlfVxuICAgICAgLz5cbiAgICApXG4gIH1cblxuICBvdmVybGF5RGlzcGxheSA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIG92ZXJsYXk6IG51bGwsXG4gICAgfSlcbiAgfVxuXG4gIGNsZWFyU2VsZWN0aW9uKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9zZWxlY3RUaW1lcilcbiAgICB0aGlzLl9wZW5kaW5nU2VsZWN0aW9uID0gW11cbiAgfVxuXG4gIG1lYXN1cmVHdXR0ZXIoKSB7XG4gICAgaWYgKHRoaXMubWVhc3VyZUd1dHRlckFuaW1hdGlvbkZyYW1lUmVxdWVzdCkge1xuICAgICAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMubWVhc3VyZUd1dHRlckFuaW1hdGlvbkZyYW1lUmVxdWVzdClcbiAgICB9XG4gICAgdGhpcy5tZWFzdXJlR3V0dGVyQW5pbWF0aW9uRnJhbWVSZXF1ZXN0ID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmd1dHRlclJlZj8uY3VycmVudFxuICAgICAgICAgID8gZ2V0V2lkdGgodGhpcy5ndXR0ZXJSZWYuY3VycmVudClcbiAgICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgICAgIGlmICh3aWR0aCAmJiB0aGlzLnN0YXRlLmd1dHRlcldpZHRoICE9PSB3aWR0aCkge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBndXR0ZXJXaWR0aDogd2lkdGggfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIGFwcGx5U2Nyb2xsKCkge1xuICAgIC8vIElmIGF1dG8tc2Nyb2xsIGlzIGRpc2FibGVkLCB3ZSBkb24ndCBhY3R1YWxseSBhcHBseSB0aGUgc2Nyb2xsXG4gICAgaWYgKHRoaXMuX3Njcm9sbFJhdGlvICE9IG51bGwgJiYgdGhpcy5wcm9wcy5lbmFibGVBdXRvU2Nyb2xsID09PSB0cnVlKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5jb250ZW50UmVmLmN1cnJlbnRcbiAgICAgIGNvbnRlbnQuc2Nyb2xsVG9wID0gY29udGVudC5zY3JvbGxIZWlnaHQgKiB0aGlzLl9zY3JvbGxSYXRpb1xuICAgICAgLy8gT25seSBkbyB0aGlzIG9uY2VcbiAgICAgIHRoaXMuX3Njcm9sbFJhdGlvID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGNhbGN1bGF0ZVNjcm9sbChwcm9wcyA9IHRoaXMucHJvcHMpIHtcbiAgICBjb25zdCB7IG1pbiwgbWF4LCBzY3JvbGxUb1RpbWUsIGxvY2FsaXplciB9ID0gcHJvcHNcblxuICAgIGNvbnN0IGRpZmZNaWxsaXMgPSBsb2NhbGl6ZXIuZGlmZihcbiAgICAgIGxvY2FsaXplci5tZXJnZShzY3JvbGxUb1RpbWUsIG1pbiksXG4gICAgICBzY3JvbGxUb1RpbWUsXG4gICAgICAnbWlsbGlzZWNvbmRzJ1xuICAgIClcbiAgICBjb25zdCB0b3RhbE1pbGxpcyA9IGxvY2FsaXplci5kaWZmKG1pbiwgbWF4LCAnbWlsbGlzZWNvbmRzJylcblxuICAgIHRoaXMuX3Njcm9sbFJhdGlvID0gZGlmZk1pbGxpcyAvIHRvdGFsTWlsbGlzXG4gIH1cblxuICBjaGVja092ZXJmbG93ID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLl91cGRhdGluZ092ZXJmbG93KSByZXR1cm5cblxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmNvbnRlbnRSZWYuY3VycmVudFxuXG4gICAgaWYgKCFjb250ZW50Py5zY3JvbGxIZWlnaHQpIHJldHVyblxuICAgIGxldCBpc092ZXJmbG93aW5nID0gY29udGVudC5zY3JvbGxIZWlnaHQgPiBjb250ZW50LmNsaWVudEhlaWdodFxuXG4gICAgaWYgKHRoaXMuc3RhdGUuaXNPdmVyZmxvd2luZyAhPT0gaXNPdmVyZmxvd2luZykge1xuICAgICAgdGhpcy5fdXBkYXRpbmdPdmVyZmxvdyA9IHRydWVcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBpc092ZXJmbG93aW5nIH0sICgpID0+IHtcbiAgICAgICAgdGhpcy5fdXBkYXRpbmdPdmVyZmxvdyA9IGZhbHNlXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIG1lbW9pemVkUmVzb3VyY2VzID0gbWVtb2l6ZSgocmVzb3VyY2VzLCBhY2Nlc3NvcnMpID0+XG4gICAgUmVzb3VyY2VzKHJlc291cmNlcywgYWNjZXNzb3JzKVxuICApXG59XG5cblRpbWVHcmlkLnByb3BUeXBlcyA9IHtcbiAgZXZlbnRzOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgYmFja2dyb3VuZEV2ZW50czogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIHJlc291cmNlczogUHJvcFR5cGVzLmFycmF5LFxuXG4gIHN0ZXA6IFByb3BUeXBlcy5udW1iZXIsXG4gIHRpbWVzbG90czogUHJvcFR5cGVzLm51bWJlcixcbiAgcmFuZ2U6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpKSxcbiAgbWluOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLFxuICBtYXg6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsXG4gIGdldE5vdzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcblxuICBzY3JvbGxUb1RpbWU6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsXG4gIGVuYWJsZUF1dG9TY3JvbGw6IFByb3BUeXBlcy5ib29sLFxuICBzaG93TXVsdGlEYXlUaW1lczogUHJvcFR5cGVzLmJvb2wsXG5cbiAgcnRsOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVzaXphYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgYWNjZXNzb3JzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNvbXBvbmVudHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZ2V0dGVyczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcblxuICBhbGxEYXlNYXhSb3dzOiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIHNlbGVjdGVkOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzZWxlY3RhYmxlOiBQcm9wVHlwZXMub25lT2YoW3RydWUsIGZhbHNlLCAnaWdub3JlRXZlbnRzJ10pLFxuICBsb25nUHJlc3NUaHJlc2hvbGQ6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgb25OYXZpZ2F0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VsZWN0U2xvdDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VsZWN0RW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3RTdGFydDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VsZWN0RXZlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNob3dNb3JlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Eb3VibGVDbGlja0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25LZXlQcmVzc0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25EcmlsbERvd246IFByb3BUeXBlcy5mdW5jLFxuICBnZXREcmlsbGRvd25WaWV3OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuXG4gIGRheUxheW91dEFsZ29yaXRobTogRGF5TGF5b3V0QWxnb3JpdGhtUHJvcFR5cGUsXG5cbiAgc2hvd0FsbEV2ZW50czogUHJvcFR5cGVzLmJvb2wsXG4gIGRvU2hvd01vcmVEcmlsbERvd246IFByb3BUeXBlcy5ib29sLFxuXG4gIHBvcHVwOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGFuZGxlRHJhZ1N0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcblxuICBwb3B1cE9mZnNldDogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgUHJvcFR5cGVzLm51bWJlcixcbiAgICBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgeDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIHk6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgfSksXG4gIF0pLFxufVxuXG5UaW1lR3JpZC5kZWZhdWx0UHJvcHMgPSB7XG4gIHN0ZXA6IDMwLFxuICB0aW1lc2xvdHM6IDIsXG59XG4iLCJpbXBvcnQgY2xzeCBmcm9tICdjbHN4J1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5mdW5jdGlvbiBzdHJpbmdpZnlQZXJjZW50KHYpIHtcbiAgcmV0dXJuIHR5cGVvZiB2ID09PSAnc3RyaW5nJyA/IHYgOiB2ICsgJyUnXG59XG5cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3Byb3AtdHlwZXMgKi9cbmZ1bmN0aW9uIFRpbWVHcmlkRXZlbnQocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIHN0eWxlLFxuICAgIGNsYXNzTmFtZSxcbiAgICBldmVudCxcbiAgICBhY2Nlc3NvcnMsXG4gICAgcnRsLFxuICAgIHNlbGVjdGVkLFxuICAgIGxhYmVsLFxuICAgIGNvbnRpbnVlc1ByaW9yLFxuICAgIGNvbnRpbnVlc0FmdGVyLFxuICAgIGdldHRlcnMsXG4gICAgb25DbGljayxcbiAgICBvbkRvdWJsZUNsaWNrLFxuICAgIGlzQmFja2dyb3VuZEV2ZW50LFxuICAgIG9uS2V5UHJlc3MsXG4gICAgY29tcG9uZW50czogeyBldmVudDogRXZlbnQsIGV2ZW50V3JhcHBlcjogRXZlbnRXcmFwcGVyIH0sXG4gIH0gPSBwcm9wc1xuICBsZXQgdGl0bGUgPSBhY2Nlc3NvcnMudGl0bGUoZXZlbnQpXG4gIGxldCB0b29sdGlwID0gYWNjZXNzb3JzLnRvb2x0aXAoZXZlbnQpXG4gIGxldCBlbmQgPSBhY2Nlc3NvcnMuZW5kKGV2ZW50KVxuICBsZXQgc3RhcnQgPSBhY2Nlc3NvcnMuc3RhcnQoZXZlbnQpXG5cbiAgbGV0IHVzZXJQcm9wcyA9IGdldHRlcnMuZXZlbnRQcm9wKGV2ZW50LCBzdGFydCwgZW5kLCBzZWxlY3RlZClcblxuICBjb25zdCBpbm5lciA9IFtcbiAgICA8ZGl2IGtleT1cIjFcIiBjbGFzc05hbWU9XCJyYmMtZXZlbnQtbGFiZWxcIj5cbiAgICAgIHtsYWJlbH1cbiAgICA8L2Rpdj4sXG4gICAgPGRpdiBrZXk9XCIyXCIgY2xhc3NOYW1lPVwicmJjLWV2ZW50LWNvbnRlbnRcIj5cbiAgICAgIHtFdmVudCA/IDxFdmVudCBldmVudD17ZXZlbnR9IHRpdGxlPXt0aXRsZX0gLz4gOiB0aXRsZX1cbiAgICA8L2Rpdj4sXG4gIF1cblxuICBjb25zdCB7IGhlaWdodCwgdG9wLCB3aWR0aCwgeE9mZnNldCB9ID0gc3R5bGVcblxuICBjb25zdCBldmVudFN0eWxlID0ge1xuICAgIC4uLnVzZXJQcm9wcy5zdHlsZSxcbiAgICB0b3A6IHN0cmluZ2lmeVBlcmNlbnQodG9wKSxcbiAgICBoZWlnaHQ6IHN0cmluZ2lmeVBlcmNlbnQoaGVpZ2h0KSxcbiAgICB3aWR0aDogc3RyaW5naWZ5UGVyY2VudCh3aWR0aCksXG4gICAgW3J0bCA/ICdyaWdodCcgOiAnbGVmdCddOiBzdHJpbmdpZnlQZXJjZW50KHhPZmZzZXQpLFxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8RXZlbnRXcmFwcGVyIHR5cGU9XCJ0aW1lXCIgey4uLnByb3BzfT5cbiAgICAgIDxkaXZcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBvbkRvdWJsZUNsaWNrPXtvbkRvdWJsZUNsaWNrfVxuICAgICAgICBzdHlsZT17ZXZlbnRTdHlsZX1cbiAgICAgICAgb25LZXlEb3duPXtvbktleVByZXNzfVxuICAgICAgICB0aXRsZT17XG4gICAgICAgICAgdG9vbHRpcFxuICAgICAgICAgICAgPyAodHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJyA/IGxhYmVsICsgJzogJyA6ICcnKSArIHRvb2x0aXBcbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFxuICAgICAgICAgIGlzQmFja2dyb3VuZEV2ZW50ID8gJ3JiYy1iYWNrZ3JvdW5kLWV2ZW50JyA6ICdyYmMtZXZlbnQnLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICB1c2VyUHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgICdyYmMtc2VsZWN0ZWQnOiBzZWxlY3RlZCxcbiAgICAgICAgICAgICdyYmMtZXZlbnQtY29udGludWVzLWVhcmxpZXInOiBjb250aW51ZXNQcmlvcixcbiAgICAgICAgICAgICdyYmMtZXZlbnQtY29udGludWVzLWxhdGVyJzogY29udGludWVzQWZ0ZXIsXG4gICAgICAgICAgfVxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICB7aW5uZXJ9XG4gICAgICA8L2Rpdj5cbiAgICA8L0V2ZW50V3JhcHBlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBUaW1lR3JpZEV2ZW50XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBjb25zdCBEbkRDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCgpXG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4J1xuaW1wb3J0IHsgYWNjZXNzb3IgYXMgZ2V0IH0gZnJvbSAnLi4vLi4vdXRpbHMvYWNjZXNzb3JzJ1xuaW1wb3J0IHsgRG5EQ29udGV4dCB9IGZyb20gJy4vRG5EQ29udGV4dCdcblxuY2xhc3MgRXZlbnRXcmFwcGVyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIGNvbnRleHRUeXBlID0gRG5EQ29udGV4dFxuXG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgdHlwZTogUHJvcFR5cGVzLm9uZU9mKFsnZGF0ZScsICd0aW1lJ10pLFxuICAgIGV2ZW50OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG5cbiAgICBkcmFnZ2FibGU6IFByb3BUeXBlcy5ib29sLFxuICAgIGFsbERheTogUHJvcFR5cGVzLmJvb2wsXG4gICAgaXNSb3c6IFByb3BUeXBlcy5ib29sLFxuICAgIGNvbnRpbnVlc1ByaW9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjb250aW51ZXNBZnRlcjogUHJvcFR5cGVzLmJvb2wsXG4gICAgaXNEcmFnZ2luZzogUHJvcFR5cGVzLmJvb2wsXG4gICAgaXNSZXNpemluZzogUHJvcFR5cGVzLmJvb2wsXG4gICAgcmVzb3VyY2U6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgcmVzaXphYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgfVxuXG4gIGhhbmRsZVJlc2l6ZVVwID0gKGUpID0+IHtcbiAgICBpZiAoZS5idXR0b24gIT09IDApIHJldHVyblxuICAgIHRoaXMuY29udGV4dC5kcmFnZ2FibGUub25CZWdpbkFjdGlvbih0aGlzLnByb3BzLmV2ZW50LCAncmVzaXplJywgJ1VQJylcbiAgfVxuICBoYW5kbGVSZXNpemVEb3duID0gKGUpID0+IHtcbiAgICBpZiAoZS5idXR0b24gIT09IDApIHJldHVyblxuICAgIHRoaXMuY29udGV4dC5kcmFnZ2FibGUub25CZWdpbkFjdGlvbih0aGlzLnByb3BzLmV2ZW50LCAncmVzaXplJywgJ0RPV04nKVxuICB9XG4gIGhhbmRsZVJlc2l6ZUxlZnQgPSAoZSkgPT4ge1xuICAgIGlmIChlLmJ1dHRvbiAhPT0gMCkgcmV0dXJuXG4gICAgdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5vbkJlZ2luQWN0aW9uKHRoaXMucHJvcHMuZXZlbnQsICdyZXNpemUnLCAnTEVGVCcpXG4gIH1cbiAgaGFuZGxlUmVzaXplUmlnaHQgPSAoZSkgPT4ge1xuICAgIGlmIChlLmJ1dHRvbiAhPT0gMCkgcmV0dXJuXG4gICAgdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5vbkJlZ2luQWN0aW9uKHRoaXMucHJvcHMuZXZlbnQsICdyZXNpemUnLCAnUklHSFQnKVxuICB9XG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcgPSAoZSkgPT4ge1xuICAgIGlmIChlLmJ1dHRvbiAhPT0gMCkgcmV0dXJuXG4gICAgLy8gaGFjazogYmVjYXVzZSBvZiB0aGUgd2F5IHRoZSBhbmNob3JzIGFyZSBhcnJhbmdlZCBpbiB0aGUgRE9NLCByZXNpemVcbiAgICAvLyBhbmNob3IgZXZlbnRzIHdpbGwgYnViYmxlIHVwIHRvIHRoZSBtb3ZlIGFuY2hvciBsaXN0ZW5lci4gRG9uJ3Qgc3RhcnRcbiAgICAvLyBtb3ZlIG9wZXJhdGlvbnMgd2hlbiB3ZSdyZSBvbiBhIHJlc2l6ZSBhbmNob3IuXG4gICAgY29uc3QgaXNSZXNpemVIYW5kbGUgPSBlLnRhcmdldFxuICAgICAgLmdldEF0dHJpYnV0ZSgnY2xhc3MnKVxuICAgICAgPy5pbmNsdWRlcygncmJjLWFkZG9ucy1kbmQtcmVzaXplJylcbiAgICBpZiAoIWlzUmVzaXplSGFuZGxlKSB7XG4gICAgICBsZXQgZXh0ZW5kZWRFdmVudCA9IHsuLi50aGlzLnByb3BzLmV2ZW50fVxuICAgICAgZXh0ZW5kZWRFdmVudC5zb3VyY2VSZXNvdXJjZSA9IHRoaXMucHJvcHMucmVzb3VyY2VcbiAgICAgIHRoaXMuY29udGV4dC5kcmFnZ2FibGUub25CZWdpbkFjdGlvbih0aGlzLnByb3BzLmV2ZW50LCAnbW92ZScpXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyQW5jaG9yKGRpcmVjdGlvbikge1xuICAgIGNvbnN0IGNscyA9IGRpcmVjdGlvbiA9PT0gJ1VwJyB8fCBkaXJlY3Rpb24gPT09ICdEb3duJyA/ICducycgOiAnZXcnXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtgcmJjLWFkZG9ucy1kbmQtcmVzaXplLSR7Y2xzfS1hbmNob3JgfVxuICAgICAgICBvbk1vdXNlRG93bj17dGhpc1tgaGFuZGxlUmVzaXplJHtkaXJlY3Rpb259YF19XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgcmJjLWFkZG9ucy1kbmQtcmVzaXplLSR7Y2xzfS1pY29uYH0gLz5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGV2ZW50LCB0eXBlLCBjb250aW51ZXNQcmlvciwgY29udGludWVzQWZ0ZXIsIHJlc2l6YWJsZSB9ID1cbiAgICAgIHRoaXMucHJvcHNcblxuICAgIGxldCB7IGNoaWxkcmVuIH0gPSB0aGlzLnByb3BzXG5cbiAgICBpZiAoZXZlbnQuX19pc1ByZXZpZXcpXG4gICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICAgIGNsYXNzTmFtZTogY2xzeChcbiAgICAgICAgICBjaGlsZHJlbi5wcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgJ3JiYy1hZGRvbnMtZG5kLWRyYWctcHJldmlldydcbiAgICAgICAgKSxcbiAgICAgIH0pXG5cbiAgICBjb25zdCB7IGRyYWdnYWJsZSB9ID0gdGhpcy5jb250ZXh0XG4gICAgY29uc3QgeyBkcmFnZ2FibGVBY2Nlc3NvciwgcmVzaXphYmxlQWNjZXNzb3IgfSA9IGRyYWdnYWJsZVxuXG4gICAgY29uc3QgaXNEcmFnZ2FibGUgPSBkcmFnZ2FibGVBY2Nlc3NvclxuICAgICAgPyAhIWdldChldmVudCwgZHJhZ2dhYmxlQWNjZXNzb3IpXG4gICAgICA6IHRydWVcblxuICAgIC8qIEV2ZW50IGlzIG5vdCBkcmFnZ2FibGUsIG5vIG5lZWQgdG8gd3JhcCBpdCAqL1xuICAgIGlmICghaXNEcmFnZ2FibGUpIHtcbiAgICAgIHJldHVybiBjaGlsZHJlblxuICAgIH1cblxuICAgIC8qXG4gICAgICogVGhlIHJlc2l6YWJpbGl0eSBvZiBldmVudHMgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZXkgYXJlXG4gICAgICogYWxsRGF5IGV2ZW50cyBhbmQgaG93IHRoZXkgYXJlIGRpc3BsYXllZC5cbiAgICAgKlxuICAgICAqIDEuIElmIHRoZSBldmVudCBpcyBiZWluZyBzaG93biBpbiBhbiBldmVudCByb3cgKGJlY2F1c2VcbiAgICAgKiBpdCBpcyBhbiBhbGxEYXkgZXZlbnQgc2hvd24gaW4gdGhlIGhlYWRlciByb3cgb3IgYmVjYXVzZSBhc1xuICAgICAqIGluIG1vbnRoIHZpZXcgdGhlIHZpZXcgaXMgc2hvd2luZyBhbGwgZXZlbnRzIGFzIHJvd3MpIHRoZW4gd2VcbiAgICAgKiBhbGxvdyBlYXN0LXdlc3QgcmVzaXppbmcuXG4gICAgICpcbiAgICAgKiAyLiBPdGhlcndpc2UgdGhlIGV2ZW50IGlzIGJlaW5nIGRpc3BsYXllZFxuICAgICAqIG5vcm1hbGx5LCB3ZSBjYW4gZHJhZyBpdCBub3J0aC1zb3V0aCB0byByZXNpemUgdGhlIHRpbWVzLlxuICAgICAqXG4gICAgICogU2VlIGBEcm9wV3JhcHBlcnNgIGZvciBoYW5kbGluZyBvZiB0aGUgZHJvcCBvZiBzdWNoIGV2ZW50cy5cbiAgICAgKlxuICAgICAqIE5vdHdpdGhzdGFuZGluZyB0aGUgYWJvdmUsIHdlIG5ldmVyIHNob3cgZHJhZyBhbmNob3JzIGZvclxuICAgICAqIGV2ZW50cyB3aGljaCBjb250aW51ZSBiZXlvbmQgY3VycmVudCBjb21wb25lbnQuIFRoaXMgaGFwcGVuc1xuICAgICAqIGluIHRoZSBtaWRkbGUgb2YgZXZlbnRzIHdoZW4gc2hvd011bHRpRGF5IGlzIHRydWUsIGFuZCB0b1xuICAgICAqIGV2ZW50cyBhdCB0aGUgZWRnZXMgb2YgdGhlIGNhbGVuZGFyJ3MgbWluL21heCBsb2NhdGlvbi5cbiAgICAgKi9cbiAgICBjb25zdCBpc1Jlc2l6YWJsZSA9XG4gICAgICByZXNpemFibGUgJiYgKHJlc2l6YWJsZUFjY2Vzc29yID8gISFnZXQoZXZlbnQsIHJlc2l6YWJsZUFjY2Vzc29yKSA6IHRydWUpXG5cbiAgICBpZiAoaXNSZXNpemFibGUgfHwgaXNEcmFnZ2FibGUpIHtcbiAgICAgIC8qXG4gICAgICAgKiBwcm9wcy5jaGlsZHJlbiBpcyB0aGUgc2luZ3VsYXIgPEV2ZW50PiBjb21wb25lbnQuXG4gICAgICAgKiBCaWdDYWxlbmRhciBwb3NpdGlvbnMgdGhlIEV2ZW50IGFib2x1dGVseSBhbmQgd2VcbiAgICAgICAqIG5lZWQgdGhlIGFuY2hvcnMgdG8gYmUgcGFydCBvZiB0aGF0IHBvc2l0aW9uaW5nLlxuICAgICAgICogU28gd2UgaW5zZXJ0IHRoZSBhbmNob3JzIGluc2lkZSB0aGUgRXZlbnQncyBjaGlsZHJlblxuICAgICAgICogcmF0aGVyIHRoYW4gd3JhcCB0aGUgRXZlbnQgaGVyZSBhcyB0aGUgbGF0dGVyIGFwcHJvYWNoXG4gICAgICAgKiB3b3VsZCBsb3NlIHRoZSBwb3NpdGlvbmluZy5cbiAgICAgICAqL1xuICAgICAgY29uc3QgbmV3UHJvcHMgPSB7XG4gICAgICAgIG9uTW91c2VEb3duOiB0aGlzLmhhbmRsZVN0YXJ0RHJhZ2dpbmcsXG4gICAgICAgIG9uVG91Y2hTdGFydDogdGhpcy5oYW5kbGVTdGFydERyYWdnaW5nLFxuICAgICAgfVxuXG4gICAgICBpZiAoaXNSZXNpemFibGUpIHtcbiAgICAgICAgLy8gcmVwbGFjZSBvcmlnaW5hbCBldmVudCBjaGlsZCB3aXRoIGFuY2hvci1lbWJlbGxpc2hlZCBjaGlsZFxuICAgICAgICBsZXQgU3RhcnRBbmNob3IgPSBudWxsXG4gICAgICAgIGxldCBFbmRBbmNob3IgPSBudWxsXG5cbiAgICAgICAgaWYgKHR5cGUgPT09ICdkYXRlJykge1xuICAgICAgICAgIFN0YXJ0QW5jaG9yID0gIWNvbnRpbnVlc1ByaW9yICYmIHRoaXMucmVuZGVyQW5jaG9yKCdMZWZ0JylcbiAgICAgICAgICBFbmRBbmNob3IgPSAhY29udGludWVzQWZ0ZXIgJiYgdGhpcy5yZW5kZXJBbmNob3IoJ1JpZ2h0JylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBTdGFydEFuY2hvciA9ICFjb250aW51ZXNQcmlvciAmJiB0aGlzLnJlbmRlckFuY2hvcignVXAnKVxuICAgICAgICAgIEVuZEFuY2hvciA9ICFjb250aW51ZXNBZnRlciAmJiB0aGlzLnJlbmRlckFuY2hvcignRG93bicpXG4gICAgICAgIH1cblxuICAgICAgICBuZXdQcm9wcy5jaGlsZHJlbiA9IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJiYy1hZGRvbnMtZG5kLXJlc2l6YWJsZVwiPlxuICAgICAgICAgICAge1N0YXJ0QW5jaG9yfVxuICAgICAgICAgICAge2NoaWxkcmVuLnByb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAge0VuZEFuY2hvcn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGRyYWdnYWJsZS5kcmFnQW5kRHJvcEFjdGlvbi5pbnRlcmFjdGluZyAmJiAvLyBpZiBhbiBldmVudCBpcyBiZWluZyBkcmFnZ2VkIHJpZ2h0IG5vd1xuICAgICAgICBkcmFnZ2FibGUuZHJhZ0FuZERyb3BBY3Rpb24uZXZlbnQgPT09IGV2ZW50IC8vIGFuZCBpdCdzIHRoZSBjdXJyZW50IGV2ZW50XG4gICAgICApIHtcbiAgICAgICAgLy8gYWRkIGEgbmV3IGNsYXNzIHRvIGl0XG4gICAgICAgIG5ld1Byb3BzLmNsYXNzTmFtZSA9IGNsc3goXG4gICAgICAgICAgY2hpbGRyZW4ucHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgICdyYmMtYWRkb25zLWRuZC1kcmFnZ2VkLWV2ZW50J1xuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIGNoaWxkcmVuID0gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCBuZXdQcm9wcylcbiAgICB9XG5cbiAgICByZXR1cm4gY2hpbGRyZW5cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBFdmVudFdyYXBwZXJcbiIsImltcG9ydCB7IHdyYXBBY2Nlc3NvciB9IGZyb20gJy4uLy4uL3V0aWxzL2FjY2Vzc29ycydcbmltcG9ydCB7IGNyZWF0ZUZhY3RvcnkgfSBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGNvbnN0IGRyYWdBY2Nlc3NvcnMgPSB7XG4gIHN0YXJ0OiB3cmFwQWNjZXNzb3IoKGUpID0+IGUuc3RhcnQpLFxuICBlbmQ6IHdyYXBBY2Nlc3NvcigoZSkgPT4gZS5lbmQpLFxufVxuXG5mdW5jdGlvbiBuZXN0KC4uLkNvbXBvbmVudHMpIHtcbiAgY29uc3QgZmFjdG9yaWVzID0gQ29tcG9uZW50cy5maWx0ZXIoQm9vbGVhbikubWFwKGNyZWF0ZUZhY3RvcnkpXG4gIGNvbnN0IE5lc3QgPSAoeyBjaGlsZHJlbiwgLi4ucHJvcHMgfSkgPT5cbiAgICBmYWN0b3JpZXMucmVkdWNlUmlnaHQoKGNoaWxkLCBmYWN0b3J5KSA9PiBmYWN0b3J5KHByb3BzLCBjaGlsZCksIGNoaWxkcmVuKVxuXG4gIHJldHVybiBOZXN0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUNvbXBvbmVudHMoY29tcG9uZW50cyA9IHt9LCBhZGRvbnMpIHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGFkZG9ucylcbiAgY29uc3QgcmVzdWx0ID0geyAuLi5jb21wb25lbnRzIH1cblxuICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgIHJlc3VsdFtrZXldID0gY29tcG9uZW50c1trZXldXG4gICAgICA/IG5lc3QoY29tcG9uZW50c1trZXldLCBhZGRvbnNba2V5XSlcbiAgICAgIDogYWRkb25zW2tleV1cbiAgfSlcbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9pbnRJbkNvbHVtbihib3VuZHMsIHBvaW50KSB7XG4gIGNvbnN0IHsgbGVmdCwgcmlnaHQsIHRvcCB9ID0gYm91bmRzXG4gIGNvbnN0IHsgeCwgeSB9ID0gcG9pbnRcbiAgcmV0dXJuIHggPCByaWdodCArIDEwICYmIHggPiBsZWZ0ICYmIHkgPiB0b3Bcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZW50VGltZXMoZXZlbnQsIGFjY2Vzc29ycywgbG9jYWxpemVyKSB7XG4gIGxldCBzdGFydCA9IGFjY2Vzc29ycy5zdGFydChldmVudClcbiAgbGV0IGVuZCA9IGFjY2Vzc29ycy5lbmQoZXZlbnQpXG5cbiAgY29uc3QgaXNaZXJvRHVyYXRpb24gPVxuICAgIGxvY2FsaXplci5lcShzdGFydCwgZW5kLCAnbWludXRlcycpICYmXG4gICAgbG9jYWxpemVyLmRpZmYoc3RhcnQsIGVuZCwgJ21pbnV0ZXMnKSA9PT0gMFxuICAvLyBtYWtlIHplcm8gZHVyYXRpb24gbWlkbmlnaHQgZXZlbnRzIGF0IGxlYXN0IG9uZSBkYXkgbG9uZ1xuICBpZiAoaXNaZXJvRHVyYXRpb24pIGVuZCA9IGxvY2FsaXplci5hZGQoZW5kLCAxLCAnZGF5JylcbiAgY29uc3QgZHVyYXRpb24gPSBsb2NhbGl6ZXIuZGlmZihzdGFydCwgZW5kLCAnbWlsbGlzZWNvbmRzJylcbiAgcmV0dXJuIHsgc3RhcnQsIGVuZCwgZHVyYXRpb24gfVxufVxuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgRG5EQ29udGV4dCB9IGZyb20gJy4vRG5EQ29udGV4dCdcbmltcG9ydCB7IHNjcm9sbFBhcmVudCwgc2Nyb2xsVG9wIH0gZnJvbSAnZG9tLWhlbHBlcnMnXG5pbXBvcnQgcXNhIGZyb20gJ2RvbS1oZWxwZXJzL2Nqcy9xdWVyeVNlbGVjdG9yQWxsJ1xuXG5pbXBvcnQgU2VsZWN0aW9uLCB7XG4gIGdldEJvdW5kc0Zvck5vZGUsXG4gIGdldEV2ZW50Tm9kZUZyb21Qb2ludCxcbn0gZnJvbSAnLi4vLi4vU2VsZWN0aW9uJ1xuaW1wb3J0IFRpbWVHcmlkRXZlbnQgZnJvbSAnLi4vLi4vVGltZUdyaWRFdmVudCdcbmltcG9ydCB7IGRyYWdBY2Nlc3NvcnMsIGV2ZW50VGltZXMsIHBvaW50SW5Db2x1bW4gfSBmcm9tICcuL2NvbW1vbidcblxuY2xhc3MgRXZlbnRDb250YWluZXJXcmFwcGVyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBhY2Nlc3NvcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBjb21wb25lbnRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgZ2V0dGVyczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGxvY2FsaXplcjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIHNsb3RNZXRyaWNzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgcmVzb3VyY2U6IFByb3BUeXBlcy5hbnksXG4gIH1cblxuICBzdGF0aWMgY29udGV4dFR5cGUgPSBEbkRDb250ZXh0XG5cbiAgY29uc3RydWN0b3IoLi4uYXJncykge1xuICAgIHN1cGVyKC4uLmFyZ3MpXG4gICAgdGhpcy5zdGF0ZSA9IHt9XG4gICAgdGhpcy5yZWYgPSBSZWFjdC5jcmVhdGVSZWYoKVxuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5fc2VsZWN0YWJsZSgpXG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLl90ZWFyZG93blNlbGVjdGFibGUoKVxuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUuZXZlbnQpXG4gICAgICB0aGlzLnNldFN0YXRlKHsgZXZlbnQ6IG51bGwsIHRvcDogbnVsbCwgaGVpZ2h0OiBudWxsIH0pXG4gIH1cblxuICB1cGRhdGUoZXZlbnQsIHsgc3RhcnREYXRlLCBlbmREYXRlLCB0b3AsIGhlaWdodCB9KSB7XG4gICAgY29uc3QgeyBldmVudDogbGFzdEV2ZW50IH0gPSB0aGlzLnN0YXRlXG4gICAgaWYgKFxuICAgICAgbGFzdEV2ZW50ICYmXG4gICAgICBzdGFydERhdGUgPT09IGxhc3RFdmVudC5zdGFydCAmJlxuICAgICAgZW5kRGF0ZSA9PT0gbGFzdEV2ZW50LmVuZFxuICAgICkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICB0b3AsXG4gICAgICBoZWlnaHQsXG4gICAgICBldmVudDogeyAuLi5ldmVudCwgc3RhcnQ6IHN0YXJ0RGF0ZSwgZW5kOiBlbmREYXRlIH0sXG4gICAgfSlcbiAgfVxuXG4gIGhhbmRsZU1vdmUgPSAocG9pbnQsIGJvdW5kcykgPT4ge1xuICAgIGlmICghcG9pbnRJbkNvbHVtbihib3VuZHMsIHBvaW50KSkgcmV0dXJuIHRoaXMucmVzZXQoKVxuICAgIGNvbnN0IHsgZXZlbnQgfSA9IHRoaXMuY29udGV4dC5kcmFnZ2FibGUuZHJhZ0FuZERyb3BBY3Rpb25cbiAgICBjb25zdCB7IGFjY2Vzc29ycywgc2xvdE1ldHJpY3MgfSA9IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IG5ld1Nsb3QgPSBzbG90TWV0cmljcy5jbG9zZXN0U2xvdEZyb21Qb2ludChcbiAgICAgIHsgeTogcG9pbnQueSAtIHRoaXMuZXZlbnRPZmZzZXRUb3AsIHg6IHBvaW50LnggfSxcbiAgICAgIGJvdW5kc1xuICAgIClcblxuICAgIGNvbnN0IHsgZHVyYXRpb24gfSA9IGV2ZW50VGltZXMoZXZlbnQsIGFjY2Vzc29ycywgdGhpcy5wcm9wcy5sb2NhbGl6ZXIpXG4gICAgbGV0IG5ld0VuZCA9IHRoaXMucHJvcHMubG9jYWxpemVyLmFkZChuZXdTbG90LCBkdXJhdGlvbiwgJ21pbGxpc2Vjb25kcycpXG4gICAgdGhpcy51cGRhdGUoZXZlbnQsIHNsb3RNZXRyaWNzLmdldFJhbmdlKG5ld1Nsb3QsIG5ld0VuZCwgZmFsc2UsIHRydWUpKVxuICB9XG5cbiAgaGFuZGxlUmVzaXplKHBvaW50LCBib3VuZHMpIHtcbiAgICBjb25zdCB7IGFjY2Vzc29ycywgc2xvdE1ldHJpY3MsIGxvY2FsaXplciB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHsgZXZlbnQsIGRpcmVjdGlvbiB9ID0gdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5kcmFnQW5kRHJvcEFjdGlvblxuICAgIGNvbnN0IG5ld1RpbWUgPSBzbG90TWV0cmljcy5jbG9zZXN0U2xvdEZyb21Qb2ludChwb2ludCwgYm91bmRzKVxuXG4gICAgbGV0IHsgc3RhcnQsIGVuZCB9ID0gZXZlbnRUaW1lcyhldmVudCwgYWNjZXNzb3JzLCBsb2NhbGl6ZXIpXG4gICAgbGV0IG5ld1JhbmdlXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ1VQJykge1xuICAgICAgY29uc3QgbmV3U3RhcnQgPSBsb2NhbGl6ZXIubWluKFxuICAgICAgICBuZXdUaW1lLFxuICAgICAgICBzbG90TWV0cmljcy5jbG9zZXN0U2xvdEZyb21EYXRlKGVuZCwgLTEpXG4gICAgICApXG4gICAgICAvLyBHZXQgdGhlIG5ldyByYW5nZSBiYXNlZCBvbiB0aGUgbmV3IHN0YXJ0XG4gICAgICAvLyBidXQgZG9uJ3Qgb3ZlcndyaXRlIHRoZSBlbmQgZGF0ZSBhcyBpdCBjb3VsZCBiZSBvdXRzaWRlIHRoaXMgZGF5IGJvdW5kYXJ5LlxuICAgICAgbmV3UmFuZ2UgPSBzbG90TWV0cmljcy5nZXRSYW5nZShuZXdTdGFydCwgZW5kKVxuICAgICAgbmV3UmFuZ2UgPSB7XG4gICAgICAgIC4uLm5ld1JhbmdlLFxuICAgICAgICBlbmREYXRlOiBlbmQsXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdET1dOJykge1xuICAgICAgLy8gR2V0IHRoZSBuZXcgcmFuZ2UgYmFzZWQgb24gdGhlIG5ldyBlbmRcbiAgICAgIC8vIGJ1dCBkb24ndCBvdmVyd3JpdGUgdGhlIHN0YXJ0IGRhdGUgYXMgaXQgY291bGQgYmUgb3V0c2lkZSB0aGlzIGRheSBib3VuZGFyeS5cbiAgICAgIGNvbnN0IG5ld0VuZCA9IGxvY2FsaXplci5tYXgoXG4gICAgICAgIG5ld1RpbWUsXG4gICAgICAgIHNsb3RNZXRyaWNzLmNsb3Nlc3RTbG90RnJvbURhdGUoc3RhcnQpXG4gICAgICApXG4gICAgICBuZXdSYW5nZSA9IHNsb3RNZXRyaWNzLmdldFJhbmdlKHN0YXJ0LCBuZXdFbmQpXG4gICAgICBuZXdSYW5nZSA9IHtcbiAgICAgICAgLi4ubmV3UmFuZ2UsXG4gICAgICAgIHN0YXJ0RGF0ZTogc3RhcnQsXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGUoZXZlbnQsIG5ld1JhbmdlKVxuICB9XG5cbiAgaGFuZGxlRHJvcEZyb21PdXRzaWRlID0gKHBvaW50LCBib3VuZGFyeUJveCkgPT4ge1xuICAgIGNvbnN0IHsgc2xvdE1ldHJpY3MsIHJlc291cmNlIH0gPSB0aGlzLnByb3BzXG5cbiAgICBsZXQgc3RhcnQgPSBzbG90TWV0cmljcy5jbG9zZXN0U2xvdEZyb21Qb2ludChcbiAgICAgIHsgeTogcG9pbnQueSwgeDogcG9pbnQueCB9LFxuICAgICAgYm91bmRhcnlCb3hcbiAgICApXG5cbiAgICB0aGlzLmNvbnRleHQuZHJhZ2dhYmxlLm9uRHJvcEZyb21PdXRzaWRlKHtcbiAgICAgIHN0YXJ0LFxuICAgICAgZW5kOiBzbG90TWV0cmljcy5uZXh0U2xvdChzdGFydCksXG4gICAgICBhbGxEYXk6IGZhbHNlLFxuICAgICAgcmVzb3VyY2UsXG4gICAgfSlcbiAgfVxuXG4gIHVwZGF0ZVBhcmVudFNjcm9sbCA9IChwYXJlbnQsIG5vZGUpID0+IHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGRyYWdnZWRFbCA9IHFzYShub2RlLCAnLnJiYy1hZGRvbnMtZG5kLWRyYWctcHJldmlldycpWzBdXG4gICAgICBpZiAoZHJhZ2dlZEVsKSB7XG4gICAgICAgIGlmIChkcmFnZ2VkRWwub2Zmc2V0VG9wIDwgcGFyZW50LnNjcm9sbFRvcCkge1xuICAgICAgICAgIHNjcm9sbFRvcChwYXJlbnQsIE1hdGgubWF4KGRyYWdnZWRFbC5vZmZzZXRUb3AsIDApKVxuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGRyYWdnZWRFbC5vZmZzZXRUb3AgKyBkcmFnZ2VkRWwub2Zmc2V0SGVpZ2h0ID5cbiAgICAgICAgICBwYXJlbnQuc2Nyb2xsVG9wICsgcGFyZW50LmNsaWVudEhlaWdodFxuICAgICAgICApIHtcbiAgICAgICAgICBzY3JvbGxUb3AoXG4gICAgICAgICAgICBwYXJlbnQsXG4gICAgICAgICAgICBNYXRoLm1pbihcbiAgICAgICAgICAgICAgZHJhZ2dlZEVsLm9mZnNldFRvcCAtXG4gICAgICAgICAgICAgICAgcGFyZW50Lm9mZnNldEhlaWdodCArXG4gICAgICAgICAgICAgICAgZHJhZ2dlZEVsLm9mZnNldEhlaWdodCxcbiAgICAgICAgICAgICAgcGFyZW50LnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBfc2VsZWN0YWJsZSA9ICgpID0+IHtcbiAgICBsZXQgd3JhcHBlciA9IHRoaXMucmVmLmN1cnJlbnRcbiAgICBsZXQgbm9kZSA9IHdyYXBwZXIuY2hpbGRyZW5bMF1cbiAgICBsZXQgaXNCZWluZ0RyYWdnZWQgPSBmYWxzZVxuICAgIGxldCBzZWxlY3RvciA9ICh0aGlzLl9zZWxlY3RvciA9IG5ldyBTZWxlY3Rpb24oKCkgPT5cbiAgICAgIHdyYXBwZXIuY2xvc2VzdCgnLnJiYy10aW1lLXZpZXcnKVxuICAgICkpXG4gICAgbGV0IHBhcmVudCA9IHNjcm9sbFBhcmVudCh3cmFwcGVyKVxuXG4gICAgc2VsZWN0b3Iub24oJ2JlZm9yZVNlbGVjdCcsIChwb2ludCkgPT4ge1xuICAgICAgY29uc3QgeyBkcmFnQW5kRHJvcEFjdGlvbiB9ID0gdGhpcy5jb250ZXh0LmRyYWdnYWJsZVxuXG4gICAgICBpZiAoIWRyYWdBbmREcm9wQWN0aW9uLmFjdGlvbikgcmV0dXJuIGZhbHNlXG4gICAgICBpZiAoZHJhZ0FuZERyb3BBY3Rpb24uYWN0aW9uID09PSAncmVzaXplJykge1xuICAgICAgICByZXR1cm4gcG9pbnRJbkNvbHVtbihnZXRCb3VuZHNGb3JOb2RlKG5vZGUpLCBwb2ludClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXZlbnROb2RlID0gZ2V0RXZlbnROb2RlRnJvbVBvaW50KG5vZGUsIHBvaW50KVxuICAgICAgaWYgKCFldmVudE5vZGUpIHJldHVybiBmYWxzZVxuXG4gICAgICAvLyBldmVudE9mZnNldFRvcCBpcyBkaXN0YW5jZSBmcm9tIHRoZSB0b3Agb2YgdGhlIGV2ZW50IHRvIHRoZSBpbml0aWFsXG4gICAgICAvLyBtb3VzZURvd24gcG9zaXRpb24uIFdlIG5lZWQgdGhpcyBsYXRlciB0byBjb21wdXRlIHRoZSBuZXcgdG9wIG9mIHRoZVxuICAgICAgLy8gZXZlbnQgZHVyaW5nIG1vdmUgb3BlcmF0aW9ucywgc2luY2UgdGhlIGZpbmFsIGxvY2F0aW9uIGlzIHJlYWxseSBhXG4gICAgICAvLyBkZWx0YSBmcm9tIHRoaXMgcG9pbnQuIG5vdGU6IGlmIHdlIHdhbnQgdG8gRFJZIHRoaXMgd2l0aCBXZWVrV3JhcHBlcixcbiAgICAgIC8vIHByb2JhYmx5IGJldHRlciBqdXN0IHRvIGNhcHR1cmUgdGhlIG1vdXNlRG93biBwb2ludCBoZXJlIGFuZCBkbyB0aGVcbiAgICAgIC8vIHBsYWNlbWVudCBjb21wdXRhdGlvbiBpbiBoYW5kbGVNb3ZlKCkuLi5cbiAgICAgIHRoaXMuZXZlbnRPZmZzZXRUb3AgPSBwb2ludC55IC0gZ2V0Qm91bmRzRm9yTm9kZShldmVudE5vZGUpLnRvcFxuICAgIH0pXG5cbiAgICBzZWxlY3Rvci5vbignc2VsZWN0aW5nJywgKGJveCkgPT4ge1xuICAgICAgY29uc3QgYm91bmRzID0gZ2V0Qm91bmRzRm9yTm9kZShub2RlKVxuICAgICAgY29uc3QgeyBkcmFnQW5kRHJvcEFjdGlvbiB9ID0gdGhpcy5jb250ZXh0LmRyYWdnYWJsZVxuXG4gICAgICBpZiAoZHJhZ0FuZERyb3BBY3Rpb24uYWN0aW9uID09PSAnbW92ZScpIHtcbiAgICAgICAgdGhpcy51cGRhdGVQYXJlbnRTY3JvbGwocGFyZW50LCBub2RlKVxuICAgICAgICB0aGlzLmhhbmRsZU1vdmUoYm94LCBib3VuZHMpXG4gICAgICB9XG4gICAgICBpZiAoZHJhZ0FuZERyb3BBY3Rpb24uYWN0aW9uID09PSAncmVzaXplJykge1xuICAgICAgICB0aGlzLnVwZGF0ZVBhcmVudFNjcm9sbChwYXJlbnQsIG5vZGUpXG4gICAgICAgIHRoaXMuaGFuZGxlUmVzaXplKGJveCwgYm91bmRzKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBzZWxlY3Rvci5vbignZHJvcEZyb21PdXRzaWRlJywgKHBvaW50KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuY29udGV4dC5kcmFnZ2FibGUub25Ecm9wRnJvbU91dHNpZGUpIHJldHVyblxuICAgICAgY29uc3QgYm91bmRzID0gZ2V0Qm91bmRzRm9yTm9kZShub2RlKVxuICAgICAgaWYgKCFwb2ludEluQ29sdW1uKGJvdW5kcywgcG9pbnQpKSByZXR1cm5cbiAgICAgIHRoaXMuaGFuZGxlRHJvcEZyb21PdXRzaWRlKHBvaW50LCBib3VuZHMpXG4gICAgfSlcblxuICAgIHNlbGVjdG9yLm9uKCdkcmFnT3ZlcicsIChwb2ludCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmNvbnRleHQuZHJhZ2dhYmxlLmRyYWdGcm9tT3V0c2lkZUl0ZW0pIHJldHVyblxuICAgICAgY29uc3QgYm91bmRzID0gZ2V0Qm91bmRzRm9yTm9kZShub2RlKVxuICAgICAgdGhpcy5oYW5kbGVEcm9wRnJvbU91dHNpZGUocG9pbnQsIGJvdW5kcylcbiAgICB9KVxuXG4gICAgc2VsZWN0b3Iub24oJ3NlbGVjdFN0YXJ0JywgKCkgPT4ge1xuICAgICAgaXNCZWluZ0RyYWdnZWQgPSB0cnVlXG4gICAgICB0aGlzLmNvbnRleHQuZHJhZ2dhYmxlLm9uU3RhcnQoKVxuICAgIH0pXG5cbiAgICBzZWxlY3Rvci5vbignc2VsZWN0JywgKHBvaW50KSA9PiB7XG4gICAgICBjb25zdCBib3VuZHMgPSBnZXRCb3VuZHNGb3JOb2RlKG5vZGUpXG4gICAgICBpc0JlaW5nRHJhZ2dlZCA9IGZhbHNlXG4gICAgICBjb25zdCB7IGRyYWdBbmREcm9wQWN0aW9uIH0gPSB0aGlzLmNvbnRleHQuZHJhZ2dhYmxlXG4gICAgICBpZiAoZHJhZ0FuZERyb3BBY3Rpb24uYWN0aW9uID09PSAncmVzaXplJykge1xuICAgICAgICB0aGlzLmhhbmRsZUludGVyYWN0aW9uRW5kKClcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuc3RhdGUuZXZlbnQgfHwgIXBvaW50SW5Db2x1bW4oYm91bmRzLCBwb2ludCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhhbmRsZUludGVyYWN0aW9uRW5kKClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgc2VsZWN0b3Iub24oJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgaWYgKGlzQmVpbmdEcmFnZ2VkKSB0aGlzLnJlc2V0KClcbiAgICAgIHRoaXMuY29udGV4dC5kcmFnZ2FibGUub25FbmQobnVsbClcbiAgICB9KVxuICAgIHNlbGVjdG9yLm9uKCdyZXNldCcsICgpID0+IHtcbiAgICAgIHRoaXMucmVzZXQoKVxuICAgICAgdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5vbkVuZChudWxsKVxuICAgIH0pXG4gIH1cblxuICBoYW5kbGVJbnRlcmFjdGlvbkVuZCA9ICgpID0+IHtcbiAgICBjb25zdCB7IHJlc291cmNlIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgeyBldmVudCB9ID0gdGhpcy5zdGF0ZVxuICAgIHRoaXMucmVzZXQoKVxuXG4gICAgdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5vbkVuZCh7XG4gICAgICBzdGFydDogZXZlbnQuc3RhcnQsXG4gICAgICBlbmQ6IGV2ZW50LmVuZCxcbiAgICAgIHJlc291cmNlSWQ6IHJlc291cmNlLFxuICAgIH0pXG4gIH1cblxuICBfdGVhcmRvd25TZWxlY3RhYmxlID0gKCkgPT4ge1xuICAgIGlmICghdGhpcy5fc2VsZWN0b3IpIHJldHVyblxuICAgIHRoaXMuX3NlbGVjdG9yLnRlYXJkb3duKClcbiAgICB0aGlzLl9zZWxlY3RvciA9IG51bGxcbiAgfVxuXG4gIHJlbmRlckNvbnRlbnQoKSB7XG4gICAgY29uc3QgeyBjaGlsZHJlbiwgYWNjZXNzb3JzLCBjb21wb25lbnRzLCBnZXR0ZXJzLCBzbG90TWV0cmljcywgbG9jYWxpemVyIH0gPVxuICAgICAgdGhpcy5wcm9wc1xuXG4gICAgbGV0IHsgZXZlbnQsIHRvcCwgaGVpZ2h0IH0gPSB0aGlzLnN0YXRlXG4gICAgaWYgKCFldmVudCkgcmV0dXJuIGNoaWxkcmVuXG5cbiAgICBjb25zdCBldmVudHMgPSBjaGlsZHJlbi5wcm9wcy5jaGlsZHJlblxuICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gZXZlbnRcblxuICAgIGxldCBsYWJlbFxuICAgIGxldCBmb3JtYXQgPSAnZXZlbnRUaW1lUmFuZ2VGb3JtYXQnXG5cbiAgICBjb25zdCBzdGFydHNCZWZvcmVEYXkgPSBzbG90TWV0cmljcy5zdGFydHNCZWZvcmVEYXkoc3RhcnQpXG4gICAgY29uc3Qgc3RhcnRzQWZ0ZXJEYXkgPSBzbG90TWV0cmljcy5zdGFydHNBZnRlckRheShlbmQpXG5cbiAgICBpZiAoc3RhcnRzQmVmb3JlRGF5KSBmb3JtYXQgPSAnZXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQnXG4gICAgZWxzZSBpZiAoc3RhcnRzQWZ0ZXJEYXkpIGZvcm1hdCA9ICdldmVudFRpbWVSYW5nZVN0YXJ0Rm9ybWF0J1xuXG4gICAgaWYgKHN0YXJ0c0JlZm9yZURheSAmJiBzdGFydHNBZnRlckRheSkgbGFiZWwgPSBsb2NhbGl6ZXIubWVzc2FnZXMuYWxsRGF5XG4gICAgZWxzZSBsYWJlbCA9IGxvY2FsaXplci5mb3JtYXQoeyBzdGFydCwgZW5kIH0sIGZvcm1hdClcblxuICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICAgIGNoaWxkcmVuOiAoXG4gICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICB7ZXZlbnRzfVxuXG4gICAgICAgICAge2V2ZW50ICYmIChcbiAgICAgICAgICAgIDxUaW1lR3JpZEV2ZW50XG4gICAgICAgICAgICAgIGV2ZW50PXtldmVudH1cbiAgICAgICAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyYmMtYWRkb25zLWRuZC1kcmFnLXByZXZpZXdcIlxuICAgICAgICAgICAgICBzdHlsZT17eyB0b3AsIGhlaWdodCwgd2lkdGg6IDEwMCB9fVxuICAgICAgICAgICAgICBnZXR0ZXJzPXtnZXR0ZXJzfVxuICAgICAgICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICAgICAgICBhY2Nlc3NvcnM9e3sgLi4uYWNjZXNzb3JzLCAuLi5kcmFnQWNjZXNzb3JzIH19XG4gICAgICAgICAgICAgIGNvbnRpbnVlc1ByaW9yPXtzdGFydHNCZWZvcmVEYXl9XG4gICAgICAgICAgICAgIGNvbnRpbnVlc0FmdGVyPXtzdGFydHNBZnRlckRheX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICksXG4gICAgfSlcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gPGRpdiByZWY9e3RoaXMucmVmfT57dGhpcy5yZW5kZXJDb250ZW50KCl9PC9kaXY+XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRXZlbnRDb250YWluZXJXcmFwcGVyXG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgRXZlbnRSb3cgZnJvbSAnLi4vLi4vRXZlbnRSb3cnXG5pbXBvcnQgU2VsZWN0aW9uLCB7IGdldEJvdW5kc0Zvck5vZGUgfSBmcm9tICcuLi8uLi9TZWxlY3Rpb24nXG5pbXBvcnQgeyBldmVudFNlZ21lbnRzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZXZlbnRMZXZlbHMnXG5pbXBvcnQgeyBnZXRTbG90QXRYLCBwb2ludEluQm94IH0gZnJvbSAnLi4vLi4vdXRpbHMvc2VsZWN0aW9uJ1xuaW1wb3J0IHsgZHJhZ0FjY2Vzc29ycywgZXZlbnRUaW1lcyB9IGZyb20gJy4vY29tbW9uJ1xuaW1wb3J0IHsgRG5EQ29udGV4dCB9IGZyb20gJy4vRG5EQ29udGV4dCdcblxuY2xhc3MgV2Vla1dyYXBwZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGlzQWxsRGF5OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBzbG90TWV0cmljczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGFjY2Vzc29yczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGdldHRlcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBjb21wb25lbnRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgcmVzb3VyY2VJZDogUHJvcFR5cGVzLmFueSxcbiAgICBydGw6IFByb3BUeXBlcy5ib29sLFxuICAgIGxvY2FsaXplcjogUHJvcFR5cGVzLmFueSxcbiAgfVxuXG4gIHN0YXRpYyBjb250ZXh0VHlwZSA9IERuRENvbnRleHRcblxuICBjb25zdHJ1Y3RvciguLi5hcmdzKSB7XG4gICAgc3VwZXIoLi4uYXJncylcbiAgICB0aGlzLnN0YXRlID0ge31cbiAgICB0aGlzLnJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpXG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLl9zZWxlY3RhYmxlKClcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuX3RlYXJkb3duU2VsZWN0YWJsZSgpXG4gIH1cblxuICByZXNldCgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5zZWdtZW50KSB0aGlzLnNldFN0YXRlKHsgc2VnbWVudDogbnVsbCB9KVxuICB9XG5cbiAgdXBkYXRlKGV2ZW50LCBzdGFydCwgZW5kKSB7XG4gICAgY29uc3Qgc2VnbWVudCA9IGV2ZW50U2VnbWVudHMoXG4gICAgICB7IC4uLmV2ZW50LCBlbmQsIHN0YXJ0LCBfX2lzUHJldmlldzogdHJ1ZSB9LFxuICAgICAgdGhpcy5wcm9wcy5zbG90TWV0cmljcy5yYW5nZSxcbiAgICAgIGRyYWdBY2Nlc3NvcnMsXG4gICAgICB0aGlzLnByb3BzLmxvY2FsaXplclxuICAgIClcblxuICAgIGNvbnN0IHsgc2VnbWVudDogbGFzdFNlZ21lbnQgfSA9IHRoaXMuc3RhdGVcbiAgICBpZiAoXG4gICAgICBsYXN0U2VnbWVudCAmJlxuICAgICAgc2VnbWVudC5zcGFuID09PSBsYXN0U2VnbWVudC5zcGFuICYmXG4gICAgICBzZWdtZW50LmxlZnQgPT09IGxhc3RTZWdtZW50LmxlZnQgJiZcbiAgICAgIHNlZ21lbnQucmlnaHQgPT09IGxhc3RTZWdtZW50LnJpZ2h0XG4gICAgKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHNlZ21lbnQgfSlcbiAgfVxuXG4gIGhhbmRsZU1vdmUgPSAocG9pbnQsIGJvdW5kcywgZHJhZ2dlZEV2ZW50KSA9PiB7XG4gICAgaWYgKCFwb2ludEluQm94KGJvdW5kcywgcG9pbnQpKSByZXR1cm4gdGhpcy5yZXNldCgpXG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLmNvbnRleHQuZHJhZ2dhYmxlLmRyYWdBbmREcm9wQWN0aW9uLmV2ZW50IHx8IGRyYWdnZWRFdmVudFxuICAgIGNvbnN0IHsgYWNjZXNzb3JzLCBzbG90TWV0cmljcywgcnRsLCBsb2NhbGl6ZXIgfSA9IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IHNsb3QgPSBnZXRTbG90QXRYKGJvdW5kcywgcG9pbnQueCwgcnRsLCBzbG90TWV0cmljcy5zbG90cylcblxuICAgIGNvbnN0IGRhdGUgPSBzbG90TWV0cmljcy5nZXREYXRlRm9yU2xvdChzbG90KVxuXG4gICAgLy8gQWRqdXN0IHRoZSBkYXRlcywgYnV0IG1haW50YWluIHRoZSB0aW1lcyB3aGVuIG1vdmluZ1xuICAgIGxldCB7IHN0YXJ0LCBkdXJhdGlvbiB9ID0gZXZlbnRUaW1lcyhldmVudCwgYWNjZXNzb3JzLCBsb2NhbGl6ZXIpXG4gICAgc3RhcnQgPSBsb2NhbGl6ZXIubWVyZ2UoZGF0ZSwgc3RhcnQpXG4gICAgY29uc3QgZW5kID0gbG9jYWxpemVyLmFkZChzdGFydCwgZHVyYXRpb24sICdtaWxsaXNlY29uZHMnKVxuICAgIC8vIExBVEVSOiB3aGVuIGRyYWdnaW5nIGEgbXVsdGktcm93IGV2ZW50LCBvbmx5IHRoZSBmaXJzdCByb3cgaXMgYW5pbWF0aW5nXG4gICAgdGhpcy51cGRhdGUoZXZlbnQsIHN0YXJ0LCBlbmQpXG4gIH1cblxuICBoYW5kbGVEcm9wRnJvbU91dHNpZGUgPSAocG9pbnQsIGJvdW5kcykgPT4ge1xuICAgIGlmICghdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5vbkRyb3BGcm9tT3V0c2lkZSkgcmV0dXJuXG4gICAgY29uc3QgeyBzbG90TWV0cmljcywgcnRsLCBsb2NhbGl6ZXIgfSA9IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IHNsb3QgPSBnZXRTbG90QXRYKGJvdW5kcywgcG9pbnQueCwgcnRsLCBzbG90TWV0cmljcy5zbG90cylcbiAgICBjb25zdCBzdGFydCA9IHNsb3RNZXRyaWNzLmdldERhdGVGb3JTbG90KHNsb3QpXG5cbiAgICB0aGlzLmNvbnRleHQuZHJhZ2dhYmxlLm9uRHJvcEZyb21PdXRzaWRlKHtcbiAgICAgIHN0YXJ0LFxuICAgICAgZW5kOiBsb2NhbGl6ZXIuYWRkKHN0YXJ0LCAxLCAnZGF5JyksXG4gICAgICBhbGxEYXk6IGZhbHNlLFxuICAgIH0pXG4gIH1cblxuICBoYW5kbGVEcmFnT3ZlckZyb21PdXRzaWRlID0gKHBvaW50LCBub2RlKSA9PiB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQuZHJhZ2dhYmxlLmRyYWdGcm9tT3V0c2lkZUl0ZW0pIHJldHVyblxuICAgIHRoaXMuaGFuZGxlTW92ZShwb2ludCwgbm9kZSwgdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5kcmFnRnJvbU91dHNpZGVJdGVtKCkpXG4gIH1cblxuICBoYW5kbGVSZXNpemUocG9pbnQsIGJvdW5kcykge1xuICAgIGNvbnN0IHsgZXZlbnQsIGRpcmVjdGlvbiB9ID0gdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5kcmFnQW5kRHJvcEFjdGlvblxuICAgIGNvbnN0IHsgYWNjZXNzb3JzLCBzbG90TWV0cmljcywgcnRsLCBsb2NhbGl6ZXIgfSA9IHRoaXMucHJvcHNcblxuICAgIGxldCB7IHN0YXJ0LCBlbmQgfSA9IGV2ZW50VGltZXMoZXZlbnQsIGFjY2Vzc29ycywgbG9jYWxpemVyKVxuXG4gICAgY29uc3Qgc2xvdCA9IGdldFNsb3RBdFgoYm91bmRzLCBwb2ludC54LCBydGwsIHNsb3RNZXRyaWNzLnNsb3RzKVxuICAgIGNvbnN0IGRhdGUgPSBzbG90TWV0cmljcy5nZXREYXRlRm9yU2xvdChzbG90KVxuICAgIGNvbnN0IGN1cnNvckluUm93ID0gcG9pbnRJbkJveChib3VuZHMsIHBvaW50KVxuXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ1JJR0hUJykge1xuICAgICAgaWYgKGN1cnNvckluUm93KSB7XG4gICAgICAgIGlmIChzbG90TWV0cmljcy5sYXN0IDwgc3RhcnQpIHJldHVybiB0aGlzLnJlc2V0KClcbiAgICAgICAgaWYgKGxvY2FsaXplci5lcShsb2NhbGl6ZXIuc3RhcnRPZihlbmQsICdkYXknKSwgZW5kKSlcbiAgICAgICAgICBlbmQgPSBsb2NhbGl6ZXIuYWRkKGRhdGUsIDEsICdkYXknKVxuICAgICAgICBlbHNlIGVuZCA9IGRhdGVcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGxvY2FsaXplci5pblJhbmdlKHN0YXJ0LCBzbG90TWV0cmljcy5maXJzdCwgc2xvdE1ldHJpY3MubGFzdCkgfHxcbiAgICAgICAgKGJvdW5kcy5ib3R0b20gPCBwb2ludC55ICYmICtzbG90TWV0cmljcy5maXJzdCA+ICtzdGFydClcbiAgICAgICkge1xuICAgICAgICBlbmQgPSBsb2NhbGl6ZXIuYWRkKHNsb3RNZXRyaWNzLmxhc3QsIDEsICdtaWxsaXNlY29uZHMnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNlZ21lbnQ6IG51bGwgfSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBvcmlnaW5hbEVuZCA9IGFjY2Vzc29ycy5lbmQoZXZlbnQpXG4gICAgICBlbmQgPSBsb2NhbGl6ZXIubWVyZ2UoZW5kLCBvcmlnaW5hbEVuZClcbiAgICAgIGlmIChsb2NhbGl6ZXIubHQoZW5kLCBzdGFydCkpIHtcbiAgICAgICAgZW5kID0gb3JpZ2luYWxFbmRcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ0xFRlQnKSB7XG4gICAgICBpZiAoY3Vyc29ySW5Sb3cpIHtcbiAgICAgICAgaWYgKHNsb3RNZXRyaWNzLmZpcnN0ID4gZW5kKSByZXR1cm4gdGhpcy5yZXNldCgpXG4gICAgICAgIHN0YXJ0ID0gZGF0ZVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgbG9jYWxpemVyLmluUmFuZ2UoZW5kLCBzbG90TWV0cmljcy5maXJzdCwgc2xvdE1ldHJpY3MubGFzdCkgfHxcbiAgICAgICAgKGJvdW5kcy50b3AgPiBwb2ludC55ICYmIGxvY2FsaXplci5sdChzbG90TWV0cmljcy5sYXN0LCBlbmQpKVxuICAgICAgKSB7XG4gICAgICAgIHN0YXJ0ID0gbG9jYWxpemVyLmFkZChzbG90TWV0cmljcy5maXJzdCwgLTEsICdtaWxsaXNlY29uZHMnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZXNldCgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY29uc3Qgb3JpZ2luYWxTdGFydCA9IGFjY2Vzc29ycy5zdGFydChldmVudClcbiAgICAgIHN0YXJ0ID0gbG9jYWxpemVyLm1lcmdlKHN0YXJ0LCBvcmlnaW5hbFN0YXJ0KVxuICAgICAgaWYgKGxvY2FsaXplci5ndChzdGFydCwgZW5kKSkge1xuICAgICAgICBzdGFydCA9IG9yaWdpbmFsU3RhcnRcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZShldmVudCwgc3RhcnQsIGVuZClcbiAgfVxuXG4gIF9zZWxlY3RhYmxlID0gKCkgPT4ge1xuICAgIGxldCBub2RlID0gdGhpcy5yZWYuY3VycmVudC5jbG9zZXN0KCcucmJjLW1vbnRoLXJvdywgLnJiYy1hbGxkYXktY2VsbCcpXG4gICAgbGV0IGNvbnRhaW5lciA9IG5vZGUuY2xvc2VzdCgnLnJiYy1tb250aC12aWV3LCAucmJjLXRpbWUtdmlldycpXG4gICAgbGV0IGlzTW9udGhSb3cgPSBub2RlLmNsYXNzTGlzdC5jb250YWlucygncmJjLW1vbnRoLXJvdycpXG5cbiAgICAvLyBWYWxpZCBjb250YWluZXIgY2hlY2sgb25seSBuZWNlc3NhcnkgaW4gVGltZUdyaWQgdmlld3NcbiAgICBsZXQgc2VsZWN0b3IgPSAodGhpcy5fc2VsZWN0b3IgPSBuZXcgU2VsZWN0aW9uKCgpID0+IGNvbnRhaW5lciwge1xuICAgICAgdmFsaWRDb250YWluZXJzOiBbXG4gICAgICAgIC4uLighaXNNb250aFJvdyA/IFsnLnJiYy1kYXktc2xvdCcsICcucmJjLWFsbGRheS1jZWxsJ10gOiBbXSksXG4gICAgICBdLFxuICAgIH0pKVxuXG4gICAgc2VsZWN0b3Iub24oJ2JlZm9yZVNlbGVjdCcsIChwb2ludCkgPT4ge1xuICAgICAgY29uc3QgeyBpc0FsbERheSB9ID0gdGhpcy5wcm9wc1xuICAgICAgY29uc3QgeyBhY3Rpb24gfSA9IHRoaXMuY29udGV4dC5kcmFnZ2FibGUuZHJhZ0FuZERyb3BBY3Rpb25cbiAgICAgIGNvbnN0IGJvdW5kcyA9IGdldEJvdW5kc0Zvck5vZGUobm9kZSlcbiAgICAgIGNvbnN0IGlzSW5Cb3ggPSBwb2ludEluQm94KGJvdW5kcywgcG9pbnQpXG4gICAgICByZXR1cm4gKFxuICAgICAgICBhY3Rpb24gPT09ICdtb3ZlJyB8fCAoYWN0aW9uID09PSAncmVzaXplJyAmJiAoIWlzQWxsRGF5IHx8IGlzSW5Cb3gpKVxuICAgICAgKVxuICAgIH0pXG5cbiAgICBzZWxlY3Rvci5vbignc2VsZWN0aW5nJywgKGJveCkgPT4ge1xuICAgICAgY29uc3QgYm91bmRzID0gZ2V0Qm91bmRzRm9yTm9kZShub2RlKVxuICAgICAgY29uc3QgeyBkcmFnQW5kRHJvcEFjdGlvbiB9ID0gdGhpcy5jb250ZXh0LmRyYWdnYWJsZVxuICAgICAgaWYgKGRyYWdBbmREcm9wQWN0aW9uLmFjdGlvbiA9PT0gJ21vdmUnKSB0aGlzLmhhbmRsZU1vdmUoYm94LCBib3VuZHMpXG4gICAgICBpZiAoZHJhZ0FuZERyb3BBY3Rpb24uYWN0aW9uID09PSAncmVzaXplJykgdGhpcy5oYW5kbGVSZXNpemUoYm94LCBib3VuZHMpXG4gICAgfSlcblxuICAgIHNlbGVjdG9yLm9uKCdzZWxlY3RTdGFydCcsICgpID0+IHRoaXMuY29udGV4dC5kcmFnZ2FibGUub25TdGFydCgpKVxuXG4gICAgc2VsZWN0b3Iub24oJ3NlbGVjdCcsIChwb2ludCkgPT4ge1xuICAgICAgY29uc3QgYm91bmRzID0gZ2V0Qm91bmRzRm9yTm9kZShub2RlKVxuICAgICAgaWYgKCF0aGlzLnN0YXRlLnNlZ21lbnQpIHJldHVyblxuICAgICAgaWYgKCFwb2ludEluQm94KGJvdW5kcywgcG9pbnQpKSB7XG4gICAgICAgIHRoaXMucmVzZXQoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oYW5kbGVJbnRlcmFjdGlvbkVuZCgpXG4gICAgICB9XG4gICAgfSlcblxuICAgIHNlbGVjdG9yLm9uKCdkcm9wRnJvbU91dHNpZGUnLCAocG9pbnQpID0+IHtcbiAgICAgIGlmICghdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5vbkRyb3BGcm9tT3V0c2lkZSkgcmV0dXJuXG4gICAgICBjb25zdCBib3VuZHMgPSBnZXRCb3VuZHNGb3JOb2RlKG5vZGUpXG4gICAgICBpZiAoIXBvaW50SW5Cb3goYm91bmRzLCBwb2ludCkpIHJldHVyblxuICAgICAgdGhpcy5oYW5kbGVEcm9wRnJvbU91dHNpZGUocG9pbnQsIGJvdW5kcylcbiAgICB9KVxuXG4gICAgc2VsZWN0b3Iub24oJ2RyYWdPdmVyRnJvbU91dHNpZGUnLCAocG9pbnQpID0+IHtcbiAgICAgIGlmICghdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5kcmFnRnJvbU91dHNpZGVJdGVtKSByZXR1cm5cbiAgICAgIGNvbnN0IGJvdW5kcyA9IGdldEJvdW5kc0Zvck5vZGUobm9kZSlcblxuICAgICAgdGhpcy5oYW5kbGVEcmFnT3ZlckZyb21PdXRzaWRlKHBvaW50LCBib3VuZHMpXG4gICAgfSlcblxuICAgIHNlbGVjdG9yLm9uKCdjbGljaycsICgpID0+IHRoaXMuY29udGV4dC5kcmFnZ2FibGUub25FbmQobnVsbCkpXG5cbiAgICBzZWxlY3Rvci5vbigncmVzZXQnLCAoKSA9PiB7XG4gICAgICB0aGlzLnJlc2V0KClcbiAgICAgIHRoaXMuY29udGV4dC5kcmFnZ2FibGUub25FbmQobnVsbClcbiAgICB9KVxuICB9XG5cbiAgaGFuZGxlSW50ZXJhY3Rpb25FbmQgPSAoKSA9PiB7XG4gICAgY29uc3QgeyByZXNvdXJjZUlkLCBpc0FsbERheSB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHsgZXZlbnQgfSA9IHRoaXMuc3RhdGUuc2VnbWVudFxuXG4gICAgdGhpcy5yZXNldCgpXG5cbiAgICB0aGlzLmNvbnRleHQuZHJhZ2dhYmxlLm9uRW5kKHtcbiAgICAgIHN0YXJ0OiBldmVudC5zdGFydCxcbiAgICAgIGVuZDogZXZlbnQuZW5kLFxuICAgICAgcmVzb3VyY2VJZCxcbiAgICAgIGlzQWxsRGF5LFxuICAgIH0pXG4gIH1cblxuICBfdGVhcmRvd25TZWxlY3RhYmxlID0gKCkgPT4ge1xuICAgIGlmICghdGhpcy5fc2VsZWN0b3IpIHJldHVyblxuICAgIHRoaXMuX3NlbGVjdG9yLnRlYXJkb3duKClcbiAgICB0aGlzLl9zZWxlY3RvciA9IG51bGxcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGNoaWxkcmVuLCBhY2Nlc3NvcnMgfSA9IHRoaXMucHJvcHNcblxuICAgIGxldCB7IHNlZ21lbnQgfSA9IHRoaXMuc3RhdGVcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IHJlZj17dGhpcy5yZWZ9IGNsYXNzTmFtZT1cInJiYy1hZGRvbnMtZG5kLXJvdy1ib2R5XCI+XG4gICAgICAgIHtjaGlsZHJlbn1cblxuICAgICAgICB7c2VnbWVudCAmJiAoXG4gICAgICAgICAgPEV2ZW50Um93XG4gICAgICAgICAgICB7Li4udGhpcy5wcm9wc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtudWxsfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwicmJjLWFkZG9ucy1kbmQtZHJhZy1yb3dcIlxuICAgICAgICAgICAgc2VnbWVudHM9e1tzZWdtZW50XX1cbiAgICAgICAgICAgIGFjY2Vzc29ycz17e1xuICAgICAgICAgICAgICAuLi5hY2Nlc3NvcnMsXG4gICAgICAgICAgICAgIC4uLmRyYWdBY2Nlc3NvcnMsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgV2Vla1dyYXBwZXJcbiIsImltcG9ydCB3aXRoRHJhZ0FuZERyb3AgZnJvbSAnLi93aXRoRHJhZ0FuZERyb3AnXG5leHBvcnQgZGVmYXVsdCB3aXRoRHJhZ0FuZERyb3BcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnXG5cbmltcG9ydCB7IGFjY2Vzc29yIH0gZnJvbSAnLi4vLi4vdXRpbHMvcHJvcFR5cGVzJ1xuaW1wb3J0IEV2ZW50V3JhcHBlciBmcm9tICcuL0V2ZW50V3JhcHBlcidcbmltcG9ydCBFdmVudENvbnRhaW5lcldyYXBwZXIgZnJvbSAnLi9FdmVudENvbnRhaW5lcldyYXBwZXInXG5pbXBvcnQgV2Vla1dyYXBwZXIgZnJvbSAnLi9XZWVrV3JhcHBlcidcbmltcG9ydCB7IG1lcmdlQ29tcG9uZW50cyB9IGZyb20gJy4vY29tbW9uJ1xuaW1wb3J0IHsgRG5EQ29udGV4dCB9IGZyb20gJy4vRG5EQ29udGV4dCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gd2l0aERyYWdBbmREcm9wKENhbGVuZGFyKSB7XG4gIGNsYXNzIERyYWdBbmREcm9wQ2FsZW5kYXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgICAuLi5DYWxlbmRhci5wcm9wVHlwZXMsXG5cbiAgICAgIG9uRXZlbnREcm9wOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIG9uRXZlbnRSZXNpemU6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgb25EcmFnU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgb25EcmFnT3ZlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBvbkRyb3BGcm9tT3V0c2lkZTogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAgIGRyYWdGcm9tT3V0c2lkZUl0ZW06IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgICBkcmFnZ2FibGVBY2Nlc3NvcjogYWNjZXNzb3IsXG4gICAgICByZXNpemFibGVBY2Nlc3NvcjogYWNjZXNzb3IsXG5cbiAgICAgIHNlbGVjdGFibGU6IFByb3BUeXBlcy5vbmVPZihbdHJ1ZSwgZmFsc2UsICdpZ25vcmVFdmVudHMnXSksXG4gICAgICByZXNpemFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgIH1cblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICAuLi5DYWxlbmRhci5kZWZhdWx0UHJvcHMsXG4gICAgICBkcmFnZ2FibGVBY2Nlc3NvcjogbnVsbCxcbiAgICAgIHJlc2l6YWJsZUFjY2Vzc29yOiBudWxsLFxuICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHtcbiAgICAgIHN1cGVyKC4uLmFyZ3MpXG5cbiAgICAgIHRoaXMuc3RhdGUgPSB7IGludGVyYWN0aW5nOiBmYWxzZSB9XG4gICAgfVxuXG4gICAgZ2V0RG5EQ29udGV4dFZhbHVlKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZHJhZ2dhYmxlOiB7XG4gICAgICAgICAgb25TdGFydDogdGhpcy5oYW5kbGVJbnRlcmFjdGlvblN0YXJ0LFxuICAgICAgICAgIG9uRW5kOiB0aGlzLmhhbmRsZUludGVyYWN0aW9uRW5kLFxuICAgICAgICAgIG9uQmVnaW5BY3Rpb246IHRoaXMuaGFuZGxlQmVnaW5BY3Rpb24sXG4gICAgICAgICAgb25Ecm9wRnJvbU91dHNpZGU6IHRoaXMucHJvcHMub25Ecm9wRnJvbU91dHNpZGUsXG4gICAgICAgICAgZHJhZ0Zyb21PdXRzaWRlSXRlbTogdGhpcy5wcm9wcy5kcmFnRnJvbU91dHNpZGVJdGVtLFxuICAgICAgICAgIGRyYWdnYWJsZUFjY2Vzc29yOiB0aGlzLnByb3BzLmRyYWdnYWJsZUFjY2Vzc29yLFxuICAgICAgICAgIHJlc2l6YWJsZUFjY2Vzc29yOiB0aGlzLnByb3BzLnJlc2l6YWJsZUFjY2Vzc29yLFxuICAgICAgICAgIGRyYWdBbmREcm9wQWN0aW9uOiB0aGlzLnN0YXRlLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH1cblxuICAgIGRlZmF1bHRPbkRyYWdPdmVyID0gKGV2ZW50KSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgfVxuXG4gICAgaGFuZGxlQmVnaW5BY3Rpb24gPSAoZXZlbnQsIGFjdGlvbiwgZGlyZWN0aW9uKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgZXZlbnQsIGFjdGlvbiwgZGlyZWN0aW9uIH0pXG4gICAgICBjb25zdCB7IG9uRHJhZ1N0YXJ0IH0gPSB0aGlzLnByb3BzXG4gICAgICBpZiAob25EcmFnU3RhcnQpIG9uRHJhZ1N0YXJ0KHsgZXZlbnQsIGFjdGlvbiwgZGlyZWN0aW9uIH0pXG4gICAgfVxuXG4gICAgaGFuZGxlSW50ZXJhY3Rpb25TdGFydCA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLnN0YXRlLmludGVyYWN0aW5nID09PSBmYWxzZSkgdGhpcy5zZXRTdGF0ZSh7IGludGVyYWN0aW5nOiB0cnVlIH0pXG4gICAgfVxuXG4gICAgaGFuZGxlSW50ZXJhY3Rpb25FbmQgPSAoaW50ZXJhY3Rpb25JbmZvKSA9PiB7XG4gICAgICBjb25zdCB7IGFjdGlvbiwgZXZlbnQgfSA9IHRoaXMuc3RhdGVcbiAgICAgIGlmICghYWN0aW9uKSByZXR1cm5cblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGFjdGlvbjogbnVsbCxcbiAgICAgICAgZXZlbnQ6IG51bGwsXG4gICAgICAgIGludGVyYWN0aW5nOiBmYWxzZSxcbiAgICAgICAgZGlyZWN0aW9uOiBudWxsLFxuICAgICAgfSlcblxuICAgICAgaWYgKGludGVyYWN0aW9uSW5mbyA9PSBudWxsKSByZXR1cm5cblxuICAgICAgaW50ZXJhY3Rpb25JbmZvLmV2ZW50ID0gZXZlbnRcbiAgICAgIGNvbnN0IHsgb25FdmVudERyb3AsIG9uRXZlbnRSZXNpemUgfSA9IHRoaXMucHJvcHNcbiAgICAgIGlmIChhY3Rpb24gPT09ICdtb3ZlJyAmJiBvbkV2ZW50RHJvcCkgb25FdmVudERyb3AoaW50ZXJhY3Rpb25JbmZvKVxuICAgICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc2l6ZScgJiYgb25FdmVudFJlc2l6ZSkgb25FdmVudFJlc2l6ZShpbnRlcmFjdGlvbkluZm8pXG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3QgeyBzZWxlY3RhYmxlLCBlbGVtZW50UHJvcHMsIGNvbXBvbmVudHMsIC4uLnByb3BzIH0gPSB0aGlzLnByb3BzXG4gICAgICBjb25zdCB7IGludGVyYWN0aW5nIH0gPSB0aGlzLnN0YXRlXG5cbiAgICAgIGRlbGV0ZSBwcm9wcy5vbkV2ZW50RHJvcFxuICAgICAgZGVsZXRlIHByb3BzLm9uRXZlbnRSZXNpemVcbiAgICAgIHByb3BzLnNlbGVjdGFibGUgPSBzZWxlY3RhYmxlID8gJ2lnbm9yZUV2ZW50cycgOiBmYWxzZVxuXG4gICAgICB0aGlzLmNvbXBvbmVudHMgPSBtZXJnZUNvbXBvbmVudHMoY29tcG9uZW50cywge1xuICAgICAgICBldmVudFdyYXBwZXI6IEV2ZW50V3JhcHBlcixcbiAgICAgICAgZXZlbnRDb250YWluZXJXcmFwcGVyOiBFdmVudENvbnRhaW5lcldyYXBwZXIsXG4gICAgICAgIHdlZWtXcmFwcGVyOiBXZWVrV3JhcHBlcixcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IGVsZW1lbnRQcm9wc1dpdGhEcm9wRnJvbU91dHNpZGUgPSB0aGlzLnByb3BzLm9uRHJvcEZyb21PdXRzaWRlXG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4uZWxlbWVudFByb3BzLFxuICAgICAgICAgICAgb25EcmFnT3ZlcjogdGhpcy5wcm9wcy5vbkRyYWdPdmVyIHx8IHRoaXMuZGVmYXVsdE9uRHJhZ092ZXIsXG4gICAgICAgICAgfVxuICAgICAgICA6IGVsZW1lbnRQcm9wc1xuXG4gICAgICBwcm9wcy5jbGFzc05hbWUgPSBjbHN4KFxuICAgICAgICBwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICdyYmMtYWRkb25zLWRuZCcsXG4gICAgICAgICEhaW50ZXJhY3RpbmcgJiYgJ3JiYy1hZGRvbnMtZG5kLWlzLWRyYWdnaW5nJ1xuICAgICAgKVxuXG4gICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXREbkRDb250ZXh0VmFsdWUoKVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPERuRENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHR9PlxuICAgICAgICAgIDxDYWxlbmRhclxuICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgZWxlbWVudFByb3BzPXtlbGVtZW50UHJvcHNXaXRoRHJvcEZyb21PdXRzaWRlfVxuICAgICAgICAgICAgY29tcG9uZW50cz17dGhpcy5jb21wb25lbnRzfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRG5EQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gRHJhZ0FuZERyb3BDYWxlbmRhclxufVxuIiwiaW1wb3J0IE5vb3BXcmFwcGVyIGZyb20gJy4vTm9vcFdyYXBwZXInXG5cbmV4cG9ydCBkZWZhdWx0IE5vb3BXcmFwcGVyXG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgaW52YXJpYW50IGZyb20gJ2ludmFyaWFudCdcbmltcG9ydCB7XG4gIG1lcmdlLFxuICBpblJhbmdlLFxuICBsdCxcbiAgbHRlLFxuICBndCxcbiAgZ3RlLFxuICBlcSxcbiAgbmVxLFxuICBzdGFydE9mLFxuICBlbmRPZixcbiAgYWRkLFxuICByYW5nZSxcbiAgZGlmZixcbiAgZHVyYXRpb24sXG4gIGNlaWwsXG4gIG1pbixcbiAgbWF4LFxuICBmaXJzdFZpc2libGVEYXksXG4gIGxhc3RWaXNpYmxlRGF5LFxuICB2aXNpYmxlRGF5cyxcbiAgbWludXRlcyxcbiAgaXNKdXN0RGF0ZSxcbn0gZnJvbSAnLi91dGlscy9kYXRlcydcblxuY29uc3QgbG9jYWxlUHJvcFR5cGUgPSBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuZnVuY10pXG5cbmZ1bmN0aW9uIF9mb3JtYXQobG9jYWxpemVyLCBmb3JtYXR0ZXIsIHZhbHVlLCBmb3JtYXQsIGN1bHR1cmUpIHtcbiAgbGV0IHJlc3VsdCA9XG4gICAgdHlwZW9mIGZvcm1hdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyBmb3JtYXQodmFsdWUsIGN1bHR1cmUsIGxvY2FsaXplcilcbiAgICAgIDogZm9ybWF0dGVyLmNhbGwobG9jYWxpemVyLCB2YWx1ZSwgZm9ybWF0LCBjdWx0dXJlKVxuXG4gIGludmFyaWFudChcbiAgICByZXN1bHQgPT0gbnVsbCB8fCB0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyxcbiAgICAnYGxvY2FsaXplciBmb3JtYXQoLi4pYCBtdXN0IHJldHVybiBhIHN0cmluZywgbnVsbCwgb3IgdW5kZWZpbmVkJ1xuICApXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG4vKipcbiAqIFRoaXMgZGF0ZSBjb252ZXJzaW9uIHdhcyBtb3ZlZCBvdXQgb2YgVGltZVNsb3RzLmpzLCB0b1xuICogYWxsb3cgZm9yIGxvY2FsaXplciBvdmVycmlkZVxuICogQHBhcmFtIHtEYXRlfSBkdCAtIFRoZSBkYXRlIHRvIHN0YXJ0IGZyb21cbiAqIEBwYXJhbSB7TnVtYmVyfSBtaW51dGVzRnJvbU1pZG5pZ2h0XG4gKiBAcGFyYW0ge051bWJlcn0gb2Zmc2V0XG4gKiBAcmV0dXJucyB7RGF0ZX1cbiAqL1xuZnVuY3Rpb24gZ2V0U2xvdERhdGUoZHQsIG1pbnV0ZXNGcm9tTWlkbmlnaHQsIG9mZnNldCkge1xuICByZXR1cm4gbmV3IERhdGUoXG4gICAgZHQuZ2V0RnVsbFllYXIoKSxcbiAgICBkdC5nZXRNb250aCgpLFxuICAgIGR0LmdldERhdGUoKSxcbiAgICAwLFxuICAgIG1pbnV0ZXNGcm9tTWlkbmlnaHQgKyBvZmZzZXQsXG4gICAgMCxcbiAgICAwXG4gIClcbn1cblxuZnVuY3Rpb24gZ2V0RHN0T2Zmc2V0KHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIHN0YXJ0LmdldFRpbWV6b25lT2Zmc2V0KCkgLSBlbmQuZ2V0VGltZXpvbmVPZmZzZXQoKVxufVxuXG4vLyBpZiB0aGUgc3RhcnQgaXMgb24gYSBEU1QtY2hhbmdpbmcgZGF5IGJ1dCAqYWZ0ZXIqIHRoZSBtb21lbnQgb2YgRFNUXG4vLyB0cmFuc2l0aW9uIHdlIG5lZWQgdG8gYWRkIHRob3NlIGV4dHJhIG1pbnV0ZXMgdG8gb3VyIG1pbnV0ZXNGcm9tTWlkbmlnaHRcbmZ1bmN0aW9uIGdldFRvdGFsTWluKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIGRpZmYoc3RhcnQsIGVuZCwgJ21pbnV0ZXMnKSArIGdldERzdE9mZnNldChzdGFydCwgZW5kKVxufVxuXG5mdW5jdGlvbiBnZXRNaW51dGVzRnJvbU1pZG5pZ2h0KHN0YXJ0KSB7XG4gIGNvbnN0IGRheXN0YXJ0ID0gc3RhcnRPZihzdGFydCwgJ2RheScpXG4gIHJldHVybiBkaWZmKGRheXN0YXJ0LCBzdGFydCwgJ21pbnV0ZXMnKSArIGdldERzdE9mZnNldChkYXlzdGFydCwgc3RhcnQpXG59XG5cbi8vIFRoZXNlIHR3byBhcmUgdXNlZCBieSBEYXRlU2xvdE1ldHJpY3NcbmZ1bmN0aW9uIGNvbnRpbnVlc1ByaW9yKHN0YXJ0LCBmaXJzdCkge1xuICByZXR1cm4gbHQoc3RhcnQsIGZpcnN0LCAnZGF5Jylcbn1cblxuZnVuY3Rpb24gY29udGludWVzQWZ0ZXIoc3RhcnQsIGVuZCwgbGFzdCkge1xuICBjb25zdCBzaW5nbGVEYXlEdXJhdGlvbiA9IGVxKHN0YXJ0LCBlbmQsICdtaW51dGVzJylcbiAgcmV0dXJuIHNpbmdsZURheUR1cmF0aW9uXG4gICAgPyBndGUoZW5kLCBsYXN0LCAnbWludXRlcycpXG4gICAgOiBndChlbmQsIGxhc3QsICdtaW51dGVzJylcbn1cblxuZnVuY3Rpb24gZGF5U3BhbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiBkdXJhdGlvbihzdGFydCwgZW5kLCAnZGF5Jylcbn1cblxuLy8gVGhlc2UgdHdvIGFyZSB1c2VkIGJ5IGV2ZW50TGV2ZWxzXG5mdW5jdGlvbiBzb3J0RXZlbnRzKHtcbiAgZXZ0QTogeyBzdGFydDogYVN0YXJ0LCBlbmQ6IGFFbmQsIGFsbERheTogYUFsbERheSB9LFxuICBldnRCOiB7IHN0YXJ0OiBiU3RhcnQsIGVuZDogYkVuZCwgYWxsRGF5OiBiQWxsRGF5IH0sXG59KSB7XG4gIGxldCBzdGFydFNvcnQgPSArc3RhcnRPZihhU3RhcnQsICdkYXknKSAtICtzdGFydE9mKGJTdGFydCwgJ2RheScpXG5cbiAgbGV0IGR1ckEgPSBkYXlTcGFuKGFTdGFydCwgYUVuZClcblxuICBsZXQgZHVyQiA9IGRheVNwYW4oYlN0YXJ0LCBiRW5kKVxuXG4gIHJldHVybiAoXG4gICAgc3RhcnRTb3J0IHx8IC8vIHNvcnQgYnkgc3RhcnQgRGF5IGZpcnN0XG4gICAgZHVyQiAtIGR1ckEgfHwgLy8gZXZlbnRzIHNwYW5uaW5nIG11bHRpcGxlIGRheXMgZ28gZmlyc3RcbiAgICAhIWJBbGxEYXkgLSAhIWFBbGxEYXkgfHwgLy8gdGhlbiBhbGxEYXkgc2luZ2xlIGRheSBldmVudHNcbiAgICArYVN0YXJ0IC0gK2JTdGFydCB8fCAvLyB0aGVuIHNvcnQgYnkgc3RhcnQgdGltZVxuICAgICthRW5kIC0gK2JFbmQgLy8gdGhlbiBzb3J0IGJ5IGVuZCB0aW1lXG4gIClcbn1cblxuZnVuY3Rpb24gaW5FdmVudFJhbmdlKHtcbiAgZXZlbnQ6IHsgc3RhcnQsIGVuZCB9LFxuICByYW5nZTogeyBzdGFydDogcmFuZ2VTdGFydCwgZW5kOiByYW5nZUVuZCB9LFxufSkge1xuICBsZXQgZVN0YXJ0ID0gc3RhcnRPZihzdGFydCwgJ2RheScpXG5cbiAgbGV0IHN0YXJ0c0JlZm9yZUVuZCA9IGx0ZShlU3RhcnQsIHJhbmdlRW5kLCAnZGF5JylcbiAgLy8gd2hlbiB0aGUgZXZlbnQgaXMgemVybyBkdXJhdGlvbiB3ZSBuZWVkIHRvIGhhbmRsZSBhIGJpdCBkaWZmZXJlbnRseVxuICBjb25zdCBzYW1lTWluID0gbmVxKGVTdGFydCwgZW5kLCAnbWludXRlcycpXG4gIGxldCBlbmRzQWZ0ZXJTdGFydCA9IHNhbWVNaW5cbiAgICA/IGd0KGVuZCwgcmFuZ2VTdGFydCwgJ21pbnV0ZXMnKVxuICAgIDogZ3RlKGVuZCwgcmFuZ2VTdGFydCwgJ21pbnV0ZXMnKVxuICByZXR1cm4gc3RhcnRzQmVmb3JlRW5kICYmIGVuZHNBZnRlclN0YXJ0XG59XG5cbi8vIG90aGVyIGxvY2FsaXplcnMgdHJlYXRzICdkYXknIGFuZCAnZGF0ZScgZXF1YWxpdHkgdmVyeSBkaWZmZXJlbnRseSwgc28gd2Vcbi8vIGFic3RyYWN0IHRoZSBjaGFuZ2UgdGhlICdsb2NhbGl6ZXIuZXEoZGF0ZTEsIGRhdGUyLCAnZGF5JykgaW50byB0aGlzXG4vLyBuZXcgbWV0aG9kLCB3aGVyZSB0aGV5IGNhbiBiZSB0cmVhdGVkIGNvcnJlY3RseSBieSB0aGUgbG9jYWxpemVyIG92ZXJyaWRlc1xuZnVuY3Rpb24gaXNTYW1lRGF0ZShkYXRlMSwgZGF0ZTIpIHtcbiAgcmV0dXJuIGVxKGRhdGUxLCBkYXRlMiwgJ2RheScpXG59XG5cbmZ1bmN0aW9uIHN0YXJ0QW5kRW5kQXJlRGF0ZU9ubHkoc3RhcnQsIGVuZCkge1xuICByZXR1cm4gaXNKdXN0RGF0ZShzdGFydCkgJiYgaXNKdXN0RGF0ZShlbmQpXG59XG5cbmV4cG9ydCBjbGFzcyBEYXRlTG9jYWxpemVyIHtcbiAgY29uc3RydWN0b3Ioc3BlYykge1xuICAgIGludmFyaWFudChcbiAgICAgIHR5cGVvZiBzcGVjLmZvcm1hdCA9PT0gJ2Z1bmN0aW9uJyxcbiAgICAgICdkYXRlIGxvY2FsaXplciBgZm9ybWF0KC4uKWAgbXVzdCBiZSBhIGZ1bmN0aW9uJ1xuICAgIClcbiAgICBpbnZhcmlhbnQoXG4gICAgICB0eXBlb2Ygc3BlYy5maXJzdE9mV2VlayA9PT0gJ2Z1bmN0aW9uJyxcbiAgICAgICdkYXRlIGxvY2FsaXplciBgZmlyc3RPZldlZWsoLi4pYCBtdXN0IGJlIGEgZnVuY3Rpb24nXG4gICAgKVxuXG4gICAgdGhpcy5wcm9wVHlwZSA9IHNwZWMucHJvcFR5cGUgfHwgbG9jYWxlUHJvcFR5cGVcblxuICAgIHRoaXMuZm9ybWF0cyA9IHNwZWMuZm9ybWF0c1xuICAgIHRoaXMuZm9ybWF0ID0gKC4uLmFyZ3MpID0+IF9mb3JtYXQodGhpcywgc3BlYy5mb3JtYXQsIC4uLmFyZ3MpXG4gICAgLy8gVGhlc2UgZGF0ZSBhcml0aG1ldGljIG1ldGhvZHMgY2FuIGJlIG92ZXJyaWRlbiBieSB0aGUgbG9jYWxpemVyXG4gICAgdGhpcy5zdGFydE9mV2VlayA9IHNwZWMuZmlyc3RPZldlZWtcbiAgICB0aGlzLm1lcmdlID0gc3BlYy5tZXJnZSB8fCBtZXJnZVxuICAgIHRoaXMuaW5SYW5nZSA9IHNwZWMuaW5SYW5nZSB8fCBpblJhbmdlXG4gICAgdGhpcy5sdCA9IHNwZWMubHQgfHwgbHRcbiAgICB0aGlzLmx0ZSA9IHNwZWMubHRlIHx8IGx0ZVxuICAgIHRoaXMuZ3QgPSBzcGVjLmd0IHx8IGd0XG4gICAgdGhpcy5ndGUgPSBzcGVjLmd0ZSB8fCBndGVcbiAgICB0aGlzLmVxID0gc3BlYy5lcSB8fCBlcVxuICAgIHRoaXMubmVxID0gc3BlYy5uZXEgfHwgbmVxXG4gICAgdGhpcy5zdGFydE9mID0gc3BlYy5zdGFydE9mIHx8IHN0YXJ0T2ZcbiAgICB0aGlzLmVuZE9mID0gc3BlYy5lbmRPZiB8fCBlbmRPZlxuICAgIHRoaXMuYWRkID0gc3BlYy5hZGQgfHwgYWRkXG4gICAgdGhpcy5yYW5nZSA9IHNwZWMucmFuZ2UgfHwgcmFuZ2VcbiAgICB0aGlzLmRpZmYgPSBzcGVjLmRpZmYgfHwgZGlmZlxuICAgIHRoaXMuY2VpbCA9IHNwZWMuY2VpbCB8fCBjZWlsXG4gICAgdGhpcy5taW4gPSBzcGVjLm1pbiB8fCBtaW5cbiAgICB0aGlzLm1heCA9IHNwZWMubWF4IHx8IG1heFxuICAgIHRoaXMubWludXRlcyA9IHNwZWMubWludXRlcyB8fCBtaW51dGVzXG4gICAgdGhpcy5kYXlTcGFuID0gc3BlYy5kYXlTcGFuIHx8IGRheVNwYW5cbiAgICB0aGlzLmZpcnN0VmlzaWJsZURheSA9IHNwZWMuZmlyc3RWaXNpYmxlRGF5IHx8IGZpcnN0VmlzaWJsZURheVxuICAgIHRoaXMubGFzdFZpc2libGVEYXkgPSBzcGVjLmxhc3RWaXNpYmxlRGF5IHx8IGxhc3RWaXNpYmxlRGF5XG4gICAgdGhpcy52aXNpYmxlRGF5cyA9IHNwZWMudmlzaWJsZURheXMgfHwgdmlzaWJsZURheXNcblxuICAgIHRoaXMuZ2V0U2xvdERhdGUgPSBzcGVjLmdldFNsb3REYXRlIHx8IGdldFNsb3REYXRlXG4gICAgdGhpcy5nZXRUaW1lem9uZU9mZnNldCA9XG4gICAgICBzcGVjLmdldFRpbWV6b25lT2Zmc2V0IHx8ICgodmFsdWUpID0+IHZhbHVlLmdldFRpbWV6b25lT2Zmc2V0KCkpXG4gICAgdGhpcy5nZXREc3RPZmZzZXQgPSBzcGVjLmdldERzdE9mZnNldCB8fCBnZXREc3RPZmZzZXRcbiAgICB0aGlzLmdldFRvdGFsTWluID0gc3BlYy5nZXRUb3RhbE1pbiB8fCBnZXRUb3RhbE1pblxuICAgIHRoaXMuZ2V0TWludXRlc0Zyb21NaWRuaWdodCA9XG4gICAgICBzcGVjLmdldE1pbnV0ZXNGcm9tTWlkbmlnaHQgfHwgZ2V0TWludXRlc0Zyb21NaWRuaWdodFxuICAgIHRoaXMuY29udGludWVzUHJpb3IgPSBzcGVjLmNvbnRpbnVlc1ByaW9yIHx8IGNvbnRpbnVlc1ByaW9yXG4gICAgdGhpcy5jb250aW51ZXNBZnRlciA9IHNwZWMuY29udGludWVzQWZ0ZXIgfHwgY29udGludWVzQWZ0ZXJcbiAgICB0aGlzLnNvcnRFdmVudHMgPSBzcGVjLnNvcnRFdmVudHMgfHwgc29ydEV2ZW50c1xuICAgIHRoaXMuaW5FdmVudFJhbmdlID0gc3BlYy5pbkV2ZW50UmFuZ2UgfHwgaW5FdmVudFJhbmdlXG4gICAgdGhpcy5pc1NhbWVEYXRlID0gc3BlYy5pc1NhbWVEYXRlIHx8IGlzU2FtZURhdGVcbiAgICB0aGlzLnN0YXJ0QW5kRW5kQXJlRGF0ZU9ubHkgPVxuICAgICAgc3BlYy5zdGFydEFuZEVuZEFyZURhdGVPbmx5IHx8IHN0YXJ0QW5kRW5kQXJlRGF0ZU9ubHlcbiAgICB0aGlzLnNlZ21lbnRPZmZzZXQgPSBzcGVjLmJyb3dzZXJUWk9mZnNldCA/IHNwZWMuYnJvd3NlclRaT2Zmc2V0KCkgOiAwXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlV2l0aERlZmF1bHRzKFxuICBsb2NhbGl6ZXIsXG4gIGN1bHR1cmUsXG4gIGZvcm1hdE92ZXJyaWRlcyxcbiAgbWVzc2FnZXNcbikge1xuICBjb25zdCBmb3JtYXRzID0ge1xuICAgIC4uLmxvY2FsaXplci5mb3JtYXRzLFxuICAgIC4uLmZvcm1hdE92ZXJyaWRlcyxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ubG9jYWxpemVyLFxuICAgIG1lc3NhZ2VzLFxuICAgIHN0YXJ0T2ZXZWVrOiAoKSA9PiBsb2NhbGl6ZXIuc3RhcnRPZldlZWsoY3VsdHVyZSksXG4gICAgZm9ybWF0OiAodmFsdWUsIGZvcm1hdCkgPT5cbiAgICAgIGxvY2FsaXplci5mb3JtYXQodmFsdWUsIGZvcm1hdHNbZm9ybWF0XSB8fCBmb3JtYXQsIGN1bHR1cmUpLFxuICB9XG59XG4iLCJsZXQgZGVmYXVsdE1lc3NhZ2VzID0ge1xuICBkYXRlOiAnRGF0ZScsXG4gIHRpbWU6ICdUaW1lJyxcbiAgZXZlbnQ6ICdFdmVudCcsXG4gIGFsbERheTogJ0FsbCBEYXknLFxuICB3ZWVrOiAnV2VlaycsXG4gIHdvcmtfd2VlazogJ1dvcmsgV2VlaycsXG4gIGRheTogJ0RheScsXG4gIG1vbnRoOiAnTW9udGgnLFxuICBwcmV2aW91czogJ0JhY2snLFxuICBuZXh0OiAnTmV4dCcsXG4gIHllc3RlcmRheTogJ1llc3RlcmRheScsXG4gIHRvbW9ycm93OiAnVG9tb3Jyb3cnLFxuICB0b2RheTogJ1RvZGF5JyxcbiAgYWdlbmRhOiAnQWdlbmRhJyxcblxuICBub0V2ZW50c0luUmFuZ2U6ICdUaGVyZSBhcmUgbm8gZXZlbnRzIGluIHRoaXMgcmFuZ2UuJyxcblxuICBzaG93TW9yZTogKHRvdGFsKSA9PiBgKyR7dG90YWx9IG1vcmVgLFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXNzYWdlcyhtc2dzKSB7XG4gIHJldHVybiB7XG4gICAgLi4uZGVmYXVsdE1lc3NhZ2VzLFxuICAgIC4uLm1zZ3MsXG4gIH1cbn1cbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgRGF0ZUhlYWRlciA9ICh7IGxhYmVsLCBkcmlsbGRvd25WaWV3LCBvbkRyaWxsRG93biB9KSA9PiB7XG4gIGlmICghZHJpbGxkb3duVmlldykge1xuICAgIHJldHVybiA8c3Bhbj57bGFiZWx9PC9zcGFuPlxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzTmFtZT1cInJiYy1idXR0b24tbGlua1wiXG4gICAgICBvbkNsaWNrPXtvbkRyaWxsRG93bn1cbiAgICAgIHJvbGU9XCJjZWxsXCJcbiAgICA+XG4gICAgICB7bGFiZWx9XG4gICAgPC9idXR0b24+XG4gIClcbn1cblxuRGF0ZUhlYWRlci5wcm9wVHlwZXMgPSB7XG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZSxcbiAgZGF0ZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG4gIGRyaWxsZG93blZpZXc6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uRHJpbGxEb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgaXNPZmZSYW5nZTogUHJvcFR5cGVzLmJvb2wsXG59XG5cbmV4cG9ydCBkZWZhdWx0IERhdGVIZWFkZXJcbiIsImltcG9ydCBSZWFjdCwgeyBjcmVhdGVSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnXG5cbmltcG9ydCBjaHVuayBmcm9tICdsb2Rhc2gvY2h1bmsnXG5cbmltcG9ydCB7IG5hdmlnYXRlLCB2aWV3cyB9IGZyb20gJy4vdXRpbHMvY29uc3RhbnRzJ1xuaW1wb3J0IHsgbm90aWZ5IH0gZnJvbSAnLi91dGlscy9oZWxwZXJzJ1xuaW1wb3J0IGdldFBvc2l0aW9uIGZyb20gJ2RvbS1oZWxwZXJzL3Bvc2l0aW9uJ1xuaW1wb3J0ICogYXMgYW5pbWF0aW9uRnJhbWUgZnJvbSAnZG9tLWhlbHBlcnMvYW5pbWF0aW9uRnJhbWUnXG5cbi8qIGltcG9ydCBQb3B1cCBmcm9tICcuL1BvcHVwJ1xuaW1wb3J0IE92ZXJsYXkgZnJvbSAncmVhY3Qtb3ZlcmxheXMvT3ZlcmxheScgKi9cbmltcG9ydCBQb3BPdmVybGF5IGZyb20gJy4vUG9wT3ZlcmxheSdcbmltcG9ydCBEYXRlQ29udGVudFJvdyBmcm9tICcuL0RhdGVDb250ZW50Um93J1xuaW1wb3J0IEhlYWRlciBmcm9tICcuL0hlYWRlcidcbmltcG9ydCBEYXRlSGVhZGVyIGZyb20gJy4vRGF0ZUhlYWRlcidcblxuaW1wb3J0IHsgaW5SYW5nZSwgc29ydFdlZWtFdmVudHMgfSBmcm9tICcuL3V0aWxzL2V2ZW50TGV2ZWxzJ1xuXG5sZXQgZXZlbnRzRm9yV2VlayA9IChldnRzLCBzdGFydCwgZW5kLCBhY2Nlc3NvcnMsIGxvY2FsaXplcikgPT5cbiAgZXZ0cy5maWx0ZXIoKGUpID0+IGluUmFuZ2UoZSwgc3RhcnQsIGVuZCwgYWNjZXNzb3JzLCBsb2NhbGl6ZXIpKVxuXG5jbGFzcyBNb250aFZpZXcgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3RvciguLi5hcmdzKSB7XG4gICAgc3VwZXIoLi4uYXJncylcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICByb3dMaW1pdDogNSxcbiAgICAgIG5lZWRMaW1pdE1lYXN1cmU6IHRydWUsXG4gICAgICBkYXRlOiBudWxsLFxuICAgIH1cbiAgICB0aGlzLmNvbnRhaW5lclJlZiA9IGNyZWF0ZVJlZigpXG4gICAgdGhpcy5zbG90Um93UmVmID0gY3JlYXRlUmVmKClcblxuICAgIHRoaXMuX2JnUm93cyA9IFtdXG4gICAgdGhpcy5fcGVuZGluZ1NlbGVjdGlvbiA9IFtdXG4gIH1cblxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKHsgZGF0ZSwgbG9jYWxpemVyIH0sIHN0YXRlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGUsXG4gICAgICBuZWVkTGltaXRNZWFzdXJlOiBsb2NhbGl6ZXIubmVxKGRhdGUsIHN0YXRlLmRhdGUsICdtb250aCcpLFxuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGxldCBydW5uaW5nXG5cbiAgICBpZiAodGhpcy5zdGF0ZS5uZWVkTGltaXRNZWFzdXJlKSB0aGlzLm1lYXN1cmVSb3dMaW1pdCh0aGlzLnByb3BzKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAncmVzaXplJyxcbiAgICAgICh0aGlzLl9yZXNpemVMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFydW5uaW5nKSB7XG4gICAgICAgICAgYW5pbWF0aW9uRnJhbWUucmVxdWVzdCgoKSA9PiB7XG4gICAgICAgICAgICBydW5uaW5nID0gZmFsc2VcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBuZWVkTGltaXRNZWFzdXJlOiB0cnVlIH0pIC8vZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgZmFsc2VcbiAgICApXG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUubmVlZExpbWl0TWVhc3VyZSkgdGhpcy5tZWFzdXJlUm93TGltaXQodGhpcy5wcm9wcylcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl9yZXNpemVMaXN0ZW5lciwgZmFsc2UpXG4gIH1cblxuICBnZXRDb250YWluZXIgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVyUmVmLmN1cnJlbnRcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBsZXQgeyBkYXRlLCBsb2NhbGl6ZXIsIGNsYXNzTmFtZSB9ID0gdGhpcy5wcm9wcyxcbiAgICAgIG1vbnRoID0gbG9jYWxpemVyLnZpc2libGVEYXlzKGRhdGUsIGxvY2FsaXplciksXG4gICAgICB3ZWVrcyA9IGNodW5rKG1vbnRoLCA3KVxuXG4gICAgdGhpcy5fd2Vla0NvdW50ID0gd2Vla3MubGVuZ3RoXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2Nsc3goJ3JiYy1tb250aC12aWV3JywgY2xhc3NOYW1lKX1cbiAgICAgICAgcm9sZT1cInRhYmxlXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIk1vbnRoIFZpZXdcIlxuICAgICAgICByZWY9e3RoaXMuY29udGFpbmVyUmVmfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJiYy1yb3cgcmJjLW1vbnRoLWhlYWRlclwiIHJvbGU9XCJyb3dcIj5cbiAgICAgICAgICB7dGhpcy5yZW5kZXJIZWFkZXJzKHdlZWtzWzBdKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHt3ZWVrcy5tYXAodGhpcy5yZW5kZXJXZWVrKX1cbiAgICAgICAge3RoaXMucHJvcHMucG9wdXAgJiYgdGhpcy5yZW5kZXJPdmVybGF5KCl9XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cblxuICByZW5kZXJXZWVrID0gKHdlZWssIHdlZWtJZHgpID0+IHtcbiAgICBsZXQge1xuICAgICAgZXZlbnRzLFxuICAgICAgY29tcG9uZW50cyxcbiAgICAgIHNlbGVjdGFibGUsXG4gICAgICBnZXROb3csXG4gICAgICBzZWxlY3RlZCxcbiAgICAgIGRhdGUsXG4gICAgICBsb2NhbGl6ZXIsXG4gICAgICBsb25nUHJlc3NUaHJlc2hvbGQsXG4gICAgICBhY2Nlc3NvcnMsXG4gICAgICBnZXR0ZXJzLFxuICAgICAgc2hvd0FsbEV2ZW50cyxcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgY29uc3QgeyBuZWVkTGltaXRNZWFzdXJlLCByb3dMaW1pdCB9ID0gdGhpcy5zdGF0ZVxuXG4gICAgLy8gbGV0J3Mgbm90IG11dGF0ZSBwcm9wc1xuICAgIGNvbnN0IHdlZWtzRXZlbnRzID0gZXZlbnRzRm9yV2VlayhcbiAgICAgIFsuLi5ldmVudHNdLFxuICAgICAgd2Vla1swXSxcbiAgICAgIHdlZWtbd2Vlay5sZW5ndGggLSAxXSxcbiAgICAgIGFjY2Vzc29ycyxcbiAgICAgIGxvY2FsaXplclxuICAgIClcblxuICAgIGNvbnN0IHNvcnRlZCA9IHNvcnRXZWVrRXZlbnRzKHdlZWtzRXZlbnRzLCBhY2Nlc3NvcnMsIGxvY2FsaXplcilcblxuICAgIHJldHVybiAoXG4gICAgICA8RGF0ZUNvbnRlbnRSb3dcbiAgICAgICAga2V5PXt3ZWVrSWR4fVxuICAgICAgICByZWY9e3dlZWtJZHggPT09IDAgPyB0aGlzLnNsb3RSb3dSZWYgOiB1bmRlZmluZWR9XG4gICAgICAgIGNvbnRhaW5lcj17dGhpcy5nZXRDb250YWluZXJ9XG4gICAgICAgIGNsYXNzTmFtZT1cInJiYy1tb250aC1yb3dcIlxuICAgICAgICBnZXROb3c9e2dldE5vd31cbiAgICAgICAgZGF0ZT17ZGF0ZX1cbiAgICAgICAgcmFuZ2U9e3dlZWt9XG4gICAgICAgIGV2ZW50cz17c29ydGVkfVxuICAgICAgICBtYXhSb3dzPXtzaG93QWxsRXZlbnRzID8gSW5maW5pdHkgOiByb3dMaW1pdH1cbiAgICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgICBzZWxlY3RhYmxlPXtzZWxlY3RhYmxlfVxuICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICBhY2Nlc3NvcnM9e2FjY2Vzc29yc31cbiAgICAgICAgZ2V0dGVycz17Z2V0dGVyc31cbiAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgIHJlbmRlckhlYWRlcj17dGhpcy5yZWFkZXJEYXRlSGVhZGluZ31cbiAgICAgICAgcmVuZGVyRm9yTWVhc3VyZT17bmVlZExpbWl0TWVhc3VyZX1cbiAgICAgICAgb25TaG93TW9yZT17dGhpcy5oYW5kbGVTaG93TW9yZX1cbiAgICAgICAgb25TZWxlY3Q9e3RoaXMuaGFuZGxlU2VsZWN0RXZlbnR9XG4gICAgICAgIG9uRG91YmxlQ2xpY2s9e3RoaXMuaGFuZGxlRG91YmxlQ2xpY2tFdmVudH1cbiAgICAgICAgb25LZXlQcmVzcz17dGhpcy5oYW5kbGVLZXlQcmVzc0V2ZW50fVxuICAgICAgICBvblNlbGVjdFNsb3Q9e3RoaXMuaGFuZGxlU2VsZWN0U2xvdH1cbiAgICAgICAgbG9uZ1ByZXNzVGhyZXNob2xkPXtsb25nUHJlc3NUaHJlc2hvbGR9XG4gICAgICAgIHJ0bD17dGhpcy5wcm9wcy5ydGx9XG4gICAgICAgIHJlc2l6YWJsZT17dGhpcy5wcm9wcy5yZXNpemFibGV9XG4gICAgICAgIHNob3dBbGxFdmVudHM9e3Nob3dBbGxFdmVudHN9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIHJlYWRlckRhdGVIZWFkaW5nID0gKHsgZGF0ZSwgY2xhc3NOYW1lLCAuLi5wcm9wcyB9KSA9PiB7XG4gICAgbGV0IHsgZGF0ZTogY3VycmVudERhdGUsIGdldERyaWxsZG93blZpZXcsIGxvY2FsaXplciB9ID0gdGhpcy5wcm9wc1xuICAgIGxldCBpc09mZlJhbmdlID0gbG9jYWxpemVyLm5lcShkYXRlLCBjdXJyZW50RGF0ZSwgJ21vbnRoJylcbiAgICBsZXQgaXNDdXJyZW50ID0gbG9jYWxpemVyLmlzU2FtZURhdGUoZGF0ZSwgY3VycmVudERhdGUpXG4gICAgbGV0IGRyaWxsZG93blZpZXcgPSBnZXREcmlsbGRvd25WaWV3KGRhdGUpXG4gICAgbGV0IGxhYmVsID0gbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnZGF0ZUZvcm1hdCcpXG4gICAgbGV0IERhdGVIZWFkZXJDb21wb25lbnQgPSB0aGlzLnByb3BzLmNvbXBvbmVudHMuZGF0ZUhlYWRlciB8fCBEYXRlSGVhZGVyXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xzeChcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgaXNPZmZSYW5nZSAmJiAncmJjLW9mZi1yYW5nZScsXG4gICAgICAgICAgaXNDdXJyZW50ICYmICdyYmMtY3VycmVudCdcbiAgICAgICAgKX1cbiAgICAgICAgcm9sZT1cImNlbGxcIlxuICAgICAgPlxuICAgICAgICA8RGF0ZUhlYWRlckNvbXBvbmVudFxuICAgICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgICBkYXRlPXtkYXRlfVxuICAgICAgICAgIGRyaWxsZG93blZpZXc9e2RyaWxsZG93blZpZXd9XG4gICAgICAgICAgaXNPZmZSYW5nZT17aXNPZmZSYW5nZX1cbiAgICAgICAgICBvbkRyaWxsRG93bj17KGUpID0+IHRoaXMuaGFuZGxlSGVhZGluZ0NsaWNrKGRhdGUsIGRyaWxsZG93blZpZXcsIGUpfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgcmVuZGVySGVhZGVycyhyb3cpIHtcbiAgICBsZXQgeyBsb2NhbGl6ZXIsIGNvbXBvbmVudHMgfSA9IHRoaXMucHJvcHNcbiAgICBsZXQgZmlyc3QgPSByb3dbMF1cbiAgICBsZXQgbGFzdCA9IHJvd1tyb3cubGVuZ3RoIC0gMV1cbiAgICBsZXQgSGVhZGVyQ29tcG9uZW50ID0gY29tcG9uZW50cy5oZWFkZXIgfHwgSGVhZGVyXG5cbiAgICByZXR1cm4gbG9jYWxpemVyLnJhbmdlKGZpcnN0LCBsYXN0LCAnZGF5JykubWFwKChkYXksIGlkeCkgPT4gKFxuICAgICAgPGRpdiBrZXk9eydoZWFkZXJfJyArIGlkeH0gY2xhc3NOYW1lPVwicmJjLWhlYWRlclwiPlxuICAgICAgICA8SGVhZGVyQ29tcG9uZW50XG4gICAgICAgICAgZGF0ZT17ZGF5fVxuICAgICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICAgIGxhYmVsPXtsb2NhbGl6ZXIuZm9ybWF0KGRheSwgJ3dlZWtkYXlGb3JtYXQnKX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICkpXG4gIH1cblxuICByZW5kZXJPdmVybGF5KCkge1xuICAgIGxldCBvdmVybGF5ID0gdGhpcy5zdGF0ZT8ub3ZlcmxheSA/PyB7fVxuICAgIGxldCB7XG4gICAgICBhY2Nlc3NvcnMsXG4gICAgICBsb2NhbGl6ZXIsXG4gICAgICBjb21wb25lbnRzLFxuICAgICAgZ2V0dGVycyxcbiAgICAgIHNlbGVjdGVkLFxuICAgICAgcG9wdXBPZmZzZXQsXG4gICAgICBoYW5kbGVEcmFnU3RhcnQsXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IG9uSGlkZSA9ICgpID0+IHRoaXMuc2V0U3RhdGUoeyBvdmVybGF5OiBudWxsIH0pXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFBvcE92ZXJsYXlcbiAgICAgICAgb3ZlcmxheT17b3ZlcmxheX1cbiAgICAgICAgYWNjZXNzb3JzPXthY2Nlc3NvcnN9XG4gICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICBnZXR0ZXJzPXtnZXR0ZXJzfVxuICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWR9XG4gICAgICAgIHBvcHVwT2Zmc2V0PXtwb3B1cE9mZnNldH1cbiAgICAgICAgcmVmPXt0aGlzLmNvbnRhaW5lclJlZn1cbiAgICAgICAgaGFuZGxlS2V5UHJlc3NFdmVudD17dGhpcy5oYW5kbGVLZXlQcmVzc0V2ZW50fVxuICAgICAgICBoYW5kbGVTZWxlY3RFdmVudD17dGhpcy5oYW5kbGVTZWxlY3RFdmVudH1cbiAgICAgICAgaGFuZGxlRG91YmxlQ2xpY2tFdmVudD17dGhpcy5oYW5kbGVEb3VibGVDbGlja0V2ZW50fVxuICAgICAgICBoYW5kbGVEcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgc2hvdz17ISFvdmVybGF5LnBvc2l0aW9ufVxuICAgICAgICBvdmVybGF5RGlzcGxheT17dGhpcy5vdmVybGF5RGlzcGxheX1cbiAgICAgICAgb25IaWRlPXtvbkhpZGV9XG4gICAgICAvPlxuICAgIClcblxuICAgIC8qIHJldHVybiAoXG4gICAgICA8T3ZlcmxheVxuICAgICAgICByb290Q2xvc2VcbiAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgc2hvdz17ISFvdmVybGF5LnBvc2l0aW9ufVxuICAgICAgICBvbkhpZGU9eygpID0+IHRoaXMuc2V0U3RhdGUoeyBvdmVybGF5OiBudWxsIH0pfVxuICAgICAgICB0YXJnZXQ9eygpID0+IG92ZXJsYXkudGFyZ2V0fVxuICAgICAgPlxuICAgICAgICB7KHsgcHJvcHMgfSkgPT4gKFxuICAgICAgICAgIDxQb3B1cFxuICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgcG9wdXBPZmZzZXQ9e3BvcHVwT2Zmc2V0fVxuICAgICAgICAgICAgYWNjZXNzb3JzPXthY2Nlc3NvcnN9XG4gICAgICAgICAgICBnZXR0ZXJzPXtnZXR0ZXJzfVxuICAgICAgICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgICAgICAgY29tcG9uZW50cz17Y29tcG9uZW50c31cbiAgICAgICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICAgICAgcG9zaXRpb249e292ZXJsYXkucG9zaXRpb259XG4gICAgICAgICAgICBzaG93PXt0aGlzLm92ZXJsYXlEaXNwbGF5fVxuICAgICAgICAgICAgZXZlbnRzPXtvdmVybGF5LmV2ZW50c31cbiAgICAgICAgICAgIHNsb3RTdGFydD17b3ZlcmxheS5kYXRlfVxuICAgICAgICAgICAgc2xvdEVuZD17b3ZlcmxheS5lbmR9XG4gICAgICAgICAgICBvblNlbGVjdD17dGhpcy5oYW5kbGVTZWxlY3RFdmVudH1cbiAgICAgICAgICAgIG9uRG91YmxlQ2xpY2s9e3RoaXMuaGFuZGxlRG91YmxlQ2xpY2tFdmVudH1cbiAgICAgICAgICAgIG9uS2V5UHJlc3M9e3RoaXMuaGFuZGxlS2V5UHJlc3NFdmVudH1cbiAgICAgICAgICAgIGhhbmRsZURyYWdTdGFydD17dGhpcy5wcm9wcy5oYW5kbGVEcmFnU3RhcnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvT3ZlcmxheT5cbiAgICApICovXG4gIH1cblxuICBtZWFzdXJlUm93TGltaXQoKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBuZWVkTGltaXRNZWFzdXJlOiBmYWxzZSxcbiAgICAgIHJvd0xpbWl0OiB0aGlzLnNsb3RSb3dSZWYuY3VycmVudC5nZXRSb3dMaW1pdCgpLFxuICAgIH0pXG4gIH1cblxuICBoYW5kbGVTZWxlY3RTbG90ID0gKHJhbmdlLCBzbG90SW5mbykgPT4ge1xuICAgIHRoaXMuX3BlbmRpbmdTZWxlY3Rpb24gPSB0aGlzLl9wZW5kaW5nU2VsZWN0aW9uLmNvbmNhdChyYW5nZSlcblxuICAgIGNsZWFyVGltZW91dCh0aGlzLl9zZWxlY3RUaW1lcilcbiAgICB0aGlzLl9zZWxlY3RUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZWxlY3REYXRlcyhzbG90SW5mbykpXG4gIH1cblxuICBoYW5kbGVIZWFkaW5nQ2xpY2sgPSAoZGF0ZSwgdmlldywgZSkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKVxuICAgIG5vdGlmeSh0aGlzLnByb3BzLm9uRHJpbGxEb3duLCBbZGF0ZSwgdmlld10pXG4gIH1cblxuICBoYW5kbGVTZWxlY3RFdmVudCA9ICguLi5hcmdzKSA9PiB7XG4gICAgdGhpcy5jbGVhclNlbGVjdGlvbigpXG4gICAgbm90aWZ5KHRoaXMucHJvcHMub25TZWxlY3RFdmVudCwgYXJncylcbiAgfVxuXG4gIGhhbmRsZURvdWJsZUNsaWNrRXZlbnQgPSAoLi4uYXJncykgPT4ge1xuICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKVxuICAgIG5vdGlmeSh0aGlzLnByb3BzLm9uRG91YmxlQ2xpY2tFdmVudCwgYXJncylcbiAgfVxuXG4gIGhhbmRsZUtleVByZXNzRXZlbnQgPSAoLi4uYXJncykgPT4ge1xuICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKVxuICAgIG5vdGlmeSh0aGlzLnByb3BzLm9uS2V5UHJlc3NFdmVudCwgYXJncylcbiAgfVxuXG4gIGhhbmRsZVNob3dNb3JlID0gKGV2ZW50cywgZGF0ZSwgY2VsbCwgc2xvdCwgdGFyZ2V0KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgcG9wdXAsXG4gICAgICBvbkRyaWxsRG93bixcbiAgICAgIG9uU2hvd01vcmUsXG4gICAgICBnZXREcmlsbGRvd25WaWV3LFxuICAgICAgZG9TaG93TW9yZURyaWxsRG93bixcbiAgICB9ID0gdGhpcy5wcm9wc1xuICAgIC8vY2FuY2VsIGFueSBwZW5kaW5nIHNlbGVjdGlvbnMgc28gb25seSB0aGUgZXZlbnQgY2xpY2sgZ29lcyB0aHJvdWdoLlxuICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKVxuXG4gICAgaWYgKHBvcHVwKSB7XG4gICAgICBsZXQgcG9zaXRpb24gPSBnZXRQb3NpdGlvbihjZWxsLCB0aGlzLmNvbnRhaW5lclJlZi5jdXJyZW50KVxuXG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgb3ZlcmxheTogeyBkYXRlLCBldmVudHMsIHBvc2l0aW9uLCB0YXJnZXQgfSxcbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmIChkb1Nob3dNb3JlRHJpbGxEb3duKSB7XG4gICAgICBub3RpZnkob25EcmlsbERvd24sIFtkYXRlLCBnZXREcmlsbGRvd25WaWV3KGRhdGUpIHx8IHZpZXdzLkRBWV0pXG4gICAgfVxuXG4gICAgbm90aWZ5KG9uU2hvd01vcmUsIFtldmVudHMsIGRhdGUsIHNsb3RdKVxuICB9XG5cbiAgb3ZlcmxheURpc3BsYXkgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBvdmVybGF5OiBudWxsLFxuICAgIH0pXG4gIH1cblxuICBzZWxlY3REYXRlcyhzbG90SW5mbykge1xuICAgIGxldCBzbG90cyA9IHRoaXMuX3BlbmRpbmdTZWxlY3Rpb24uc2xpY2UoKVxuXG4gICAgdGhpcy5fcGVuZGluZ1NlbGVjdGlvbiA9IFtdXG5cbiAgICBzbG90cy5zb3J0KChhLCBiKSA9PiArYSAtICtiKVxuXG4gICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShzbG90c1swXSlcbiAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZShzbG90c1tzbG90cy5sZW5ndGggLSAxXSlcbiAgICBlbmQuc2V0RGF0ZShzbG90c1tzbG90cy5sZW5ndGggLSAxXS5nZXREYXRlKCkgKyAxKVxuXG4gICAgbm90aWZ5KHRoaXMucHJvcHMub25TZWxlY3RTbG90LCB7XG4gICAgICBzbG90cyxcbiAgICAgIHN0YXJ0LFxuICAgICAgZW5kLFxuICAgICAgYWN0aW9uOiBzbG90SW5mby5hY3Rpb24sXG4gICAgICBib3VuZHM6IHNsb3RJbmZvLmJvdW5kcyxcbiAgICAgIGJveDogc2xvdEluZm8uYm94LFxuICAgIH0pXG4gIH1cblxuICBjbGVhclNlbGVjdGlvbigpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fc2VsZWN0VGltZXIpXG4gICAgdGhpcy5fcGVuZGluZ1NlbGVjdGlvbiA9IFtdXG4gIH1cbn1cblxuTW9udGhWaWV3LnByb3BUeXBlcyA9IHtcbiAgZXZlbnRzOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgZGF0ZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG5cbiAgbWluOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcbiAgbWF4OiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcblxuICBzdGVwOiBQcm9wVHlwZXMubnVtYmVyLFxuICBnZXROb3c6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cbiAgc2Nyb2xsVG9UaW1lOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcbiAgZW5hYmxlQXV0b1Njcm9sbDogUHJvcFR5cGVzLmJvb2wsXG4gIHJ0bDogUHJvcFR5cGVzLmJvb2wsXG4gIHJlc2l6YWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIGFjY2Vzc29yczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjb21wb25lbnRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGdldHRlcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG5cbiAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHNlbGVjdGFibGU6IFByb3BUeXBlcy5vbmVPZihbdHJ1ZSwgZmFsc2UsICdpZ25vcmVFdmVudHMnXSksXG4gIGxvbmdQcmVzc1RocmVzaG9sZDogUHJvcFR5cGVzLm51bWJlcixcblxuICBvbk5hdmlnYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3RTbG90OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3RFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRG91YmxlQ2xpY2tFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uS2V5UHJlc3NFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2hvd01vcmU6IFByb3BUeXBlcy5mdW5jLFxuICBzaG93QWxsRXZlbnRzOiBQcm9wVHlwZXMuYm9vbCxcbiAgZG9TaG93TW9yZURyaWxsRG93bjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uRHJpbGxEb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgZ2V0RHJpbGxkb3duVmlldzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcblxuICBwb3B1cDogUHJvcFR5cGVzLmJvb2wsXG4gIGhhbmRsZURyYWdTdGFydDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgcG9wdXBPZmZzZXQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5udW1iZXIsXG4gICAgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHg6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICB5OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIH0pLFxuICBdKSxcbn1cblxuTW9udGhWaWV3LnJhbmdlID0gKGRhdGUsIHsgbG9jYWxpemVyIH0pID0+IHtcbiAgbGV0IHN0YXJ0ID0gbG9jYWxpemVyLmZpcnN0VmlzaWJsZURheShkYXRlLCBsb2NhbGl6ZXIpXG4gIGxldCBlbmQgPSBsb2NhbGl6ZXIubGFzdFZpc2libGVEYXkoZGF0ZSwgbG9jYWxpemVyKVxuICByZXR1cm4geyBzdGFydCwgZW5kIH1cbn1cblxuTW9udGhWaWV3Lm5hdmlnYXRlID0gKGRhdGUsIGFjdGlvbiwgeyBsb2NhbGl6ZXIgfSkgPT4ge1xuICBzd2l0Y2ggKGFjdGlvbikge1xuICAgIGNhc2UgbmF2aWdhdGUuUFJFVklPVVM6XG4gICAgICByZXR1cm4gbG9jYWxpemVyLmFkZChkYXRlLCAtMSwgJ21vbnRoJylcblxuICAgIGNhc2UgbmF2aWdhdGUuTkVYVDpcbiAgICAgIHJldHVybiBsb2NhbGl6ZXIuYWRkKGRhdGUsIDEsICdtb250aCcpXG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRhdGVcbiAgfVxufVxuXG5Nb250aFZpZXcudGl0bGUgPSAoZGF0ZSwgeyBsb2NhbGl6ZXIgfSkgPT5cbiAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnbW9udGhIZWFkZXJGb3JtYXQnKVxuXG5leHBvcnQgZGVmYXVsdCBNb250aFZpZXdcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgbmF2aWdhdGUgfSBmcm9tICcuL3V0aWxzL2NvbnN0YW50cydcbmltcG9ydCB7IERheUxheW91dEFsZ29yaXRobVByb3BUeXBlIH0gZnJvbSAnLi91dGlscy9wcm9wVHlwZXMnXG5cbmltcG9ydCBUaW1lR3JpZCBmcm9tICcuL1RpbWVHcmlkJ1xuXG5jbGFzcyBEYXkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgLyoqXG4gICAgICogVGhpcyBhbGxvd3MgdXMgdG8gZGVmYXVsdCBtaW4sIG1heCwgYW5kIHNjcm9sbFRvVGltZVxuICAgICAqIHVzaW5nIG91ciBsb2NhbGl6ZXIuIFRoaXMgaXMgbmVjZXNzYXJ5IHVudGlsIHN1Y2ggdGltZVxuICAgICAqIGFzIFRPRE86IFRpbWVHcmlkIGlzIGNvbnZlcnRlZCB0byBhIGZ1bmN0aW9uYWwgY29tcG9uZW50LlxuICAgICAqL1xuICAgIGxldCB7XG4gICAgICBkYXRlLFxuICAgICAgbG9jYWxpemVyLFxuICAgICAgbWluID0gbG9jYWxpemVyLnN0YXJ0T2YobmV3IERhdGUoKSwgJ2RheScpLFxuICAgICAgbWF4ID0gbG9jYWxpemVyLmVuZE9mKG5ldyBEYXRlKCksICdkYXknKSxcbiAgICAgIHNjcm9sbFRvVGltZSA9IGxvY2FsaXplci5zdGFydE9mKG5ldyBEYXRlKCksICdkYXknKSxcbiAgICAgIGVuYWJsZUF1dG9TY3JvbGwgPSB0cnVlLFxuICAgICAgLi4ucHJvcHNcbiAgICB9ID0gdGhpcy5wcm9wc1xuICAgIGxldCByYW5nZSA9IERheS5yYW5nZShkYXRlLCB7IGxvY2FsaXplcjogbG9jYWxpemVyIH0pXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFRpbWVHcmlkXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgcmFuZ2U9e3JhbmdlfVxuICAgICAgICBldmVudE9mZnNldD17MTB9XG4gICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICBtaW49e21pbn1cbiAgICAgICAgbWF4PXttYXh9XG4gICAgICAgIHNjcm9sbFRvVGltZT17c2Nyb2xsVG9UaW1lfVxuICAgICAgICBlbmFibGVBdXRvU2Nyb2xsPXtlbmFibGVBdXRvU2Nyb2xsfVxuICAgICAgLz5cbiAgICApXG4gIH1cbn1cblxuRGF5LnByb3BUeXBlcyA9IHtcbiAgZGF0ZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxcblxuICBldmVudHM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBiYWNrZ3JvdW5kRXZlbnRzOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgcmVzb3VyY2VzOiBQcm9wVHlwZXMuYXJyYXksXG5cbiAgc3RlcDogUHJvcFR5cGVzLm51bWJlcixcbiAgdGltZXNsb3RzOiBQcm9wVHlwZXMubnVtYmVyLFxuICByYW5nZTogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSkpLFxuICBtaW46IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICBtYXg6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICBnZXROb3c6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cbiAgc2Nyb2xsVG9UaW1lOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcbiAgZW5hYmxlQXV0b1Njcm9sbDogUHJvcFR5cGVzLmJvb2wsXG4gIHNob3dNdWx0aURheVRpbWVzOiBQcm9wVHlwZXMuYm9vbCxcblxuICBydGw6IFByb3BUeXBlcy5ib29sLFxuICByZXNpemFibGU6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlcixcblxuICBhY2Nlc3NvcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY29tcG9uZW50czogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnZXR0ZXJzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGxvY2FsaXplcjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuXG4gIGFsbERheU1heFJvd3M6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHNlbGVjdGFibGU6IFByb3BUeXBlcy5vbmVPZihbdHJ1ZSwgZmFsc2UsICdpZ25vcmVFdmVudHMnXSksXG4gIGxvbmdQcmVzc1RocmVzaG9sZDogUHJvcFR5cGVzLm51bWJlcixcblxuICBvbk5hdmlnYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3RTbG90OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3RFbmQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdFN0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3RFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRG91YmxlQ2xpY2tFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uS2V5UHJlc3NFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2hvd01vcmU6IFByb3BUeXBlcy5mdW5jLFxuICBvbkRyaWxsRG93bjogUHJvcFR5cGVzLmZ1bmMsXG4gIGdldERyaWxsZG93blZpZXc6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cbiAgZGF5TGF5b3V0QWxnb3JpdGhtOiBEYXlMYXlvdXRBbGdvcml0aG1Qcm9wVHlwZSxcblxuICBzaG93QWxsRXZlbnRzOiBQcm9wVHlwZXMuYm9vbCxcbiAgZG9TaG93TW9yZURyaWxsRG93bjogUHJvcFR5cGVzLmJvb2wsXG5cbiAgcG9wdXA6IFByb3BUeXBlcy5ib29sLFxuICBoYW5kbGVEcmFnU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIHBvcHVwT2Zmc2V0OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICBQcm9wVHlwZXMubnVtYmVyLFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICB4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgeTogUHJvcFR5cGVzLm51bWJlcixcbiAgICB9KSxcbiAgXSksXG59XG5cbkRheS5yYW5nZSA9IChkYXRlLCB7IGxvY2FsaXplciB9KSA9PiB7XG4gIHJldHVybiBbbG9jYWxpemVyLnN0YXJ0T2YoZGF0ZSwgJ2RheScpXVxufVxuXG5EYXkubmF2aWdhdGUgPSAoZGF0ZSwgYWN0aW9uLCB7IGxvY2FsaXplciB9KSA9PiB7XG4gIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgY2FzZSBuYXZpZ2F0ZS5QUkVWSU9VUzpcbiAgICAgIHJldHVybiBsb2NhbGl6ZXIuYWRkKGRhdGUsIC0xLCAnZGF5JylcblxuICAgIGNhc2UgbmF2aWdhdGUuTkVYVDpcbiAgICAgIHJldHVybiBsb2NhbGl6ZXIuYWRkKGRhdGUsIDEsICdkYXknKVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkYXRlXG4gIH1cbn1cblxuRGF5LnRpdGxlID0gKGRhdGUsIHsgbG9jYWxpemVyIH0pID0+IGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2RheUhlYWRlckZvcm1hdCcpXG5cbmV4cG9ydCBkZWZhdWx0IERheVxuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBuYXZpZ2F0ZSB9IGZyb20gJy4vdXRpbHMvY29uc3RhbnRzJ1xuaW1wb3J0IHsgRGF5TGF5b3V0QWxnb3JpdGhtUHJvcFR5cGUgfSBmcm9tICcuL3V0aWxzL3Byb3BUeXBlcydcblxuaW1wb3J0IFRpbWVHcmlkIGZyb20gJy4vVGltZUdyaWQnXG5cbmNsYXNzIFdlZWsgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgLyoqXG4gICAgICogVGhpcyBhbGxvd3MgdXMgdG8gZGVmYXVsdCBtaW4sIG1heCwgYW5kIHNjcm9sbFRvVGltZVxuICAgICAqIHVzaW5nIG91ciBsb2NhbGl6ZXIuIFRoaXMgaXMgbmVjZXNzYXJ5IHVudGlsIHN1Y2ggdGltZVxuICAgICAqIGFzIFRpbWVHcmlkIGlzIGNvbnZlcnRlZCB0byBhIGZ1bmN0aW9uYWwgY29tcG9uZW50LlxuICAgICAqL1xuICAgIGxldCB7XG4gICAgICBkYXRlLFxuICAgICAgbG9jYWxpemVyLFxuICAgICAgbWluID0gbG9jYWxpemVyLnN0YXJ0T2YobmV3IERhdGUoKSwgJ2RheScpLFxuICAgICAgbWF4ID0gbG9jYWxpemVyLmVuZE9mKG5ldyBEYXRlKCksICdkYXknKSxcbiAgICAgIHNjcm9sbFRvVGltZSA9IGxvY2FsaXplci5zdGFydE9mKG5ldyBEYXRlKCksICdkYXknKSxcbiAgICAgIGVuYWJsZUF1dG9TY3JvbGwgPSB0cnVlLFxuICAgICAgLi4ucHJvcHNcbiAgICB9ID0gdGhpcy5wcm9wc1xuICAgIGxldCByYW5nZSA9IFdlZWsucmFuZ2UoZGF0ZSwgdGhpcy5wcm9wcylcblxuICAgIHJldHVybiAoXG4gICAgICA8VGltZUdyaWRcbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgICByYW5nZT17cmFuZ2V9XG4gICAgICAgIGV2ZW50T2Zmc2V0PXsxNX1cbiAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgIG1pbj17bWlufVxuICAgICAgICBtYXg9e21heH1cbiAgICAgICAgc2Nyb2xsVG9UaW1lPXtzY3JvbGxUb1RpbWV9XG4gICAgICAgIGVuYWJsZUF1dG9TY3JvbGw9e2VuYWJsZUF1dG9TY3JvbGx9XG4gICAgICAvPlxuICAgIClcbiAgfVxufVxuXG5XZWVrLnByb3BUeXBlcyA9IHtcbiAgZGF0ZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxcblxuICBldmVudHM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBiYWNrZ3JvdW5kRXZlbnRzOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgcmVzb3VyY2VzOiBQcm9wVHlwZXMuYXJyYXksXG5cbiAgc3RlcDogUHJvcFR5cGVzLm51bWJlcixcbiAgdGltZXNsb3RzOiBQcm9wVHlwZXMubnVtYmVyLFxuICByYW5nZTogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSkpLFxuICBtaW46IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICBtYXg6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICBnZXROb3c6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cbiAgc2Nyb2xsVG9UaW1lOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcbiAgZW5hYmxlQXV0b1Njcm9sbDogUHJvcFR5cGVzLmJvb2wsXG4gIHNob3dNdWx0aURheVRpbWVzOiBQcm9wVHlwZXMuYm9vbCxcblxuICBydGw6IFByb3BUeXBlcy5ib29sLFxuICByZXNpemFibGU6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlcixcblxuICBhY2Nlc3NvcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY29tcG9uZW50czogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnZXR0ZXJzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGxvY2FsaXplcjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuXG4gIGFsbERheU1heFJvd3M6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHNlbGVjdGFibGU6IFByb3BUeXBlcy5vbmVPZihbdHJ1ZSwgZmFsc2UsICdpZ25vcmVFdmVudHMnXSksXG4gIGxvbmdQcmVzc1RocmVzaG9sZDogUHJvcFR5cGVzLm51bWJlcixcblxuICBvbk5hdmlnYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3RTbG90OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3RFbmQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdFN0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3RFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRG91YmxlQ2xpY2tFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uS2V5UHJlc3NFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2hvd01vcmU6IFByb3BUeXBlcy5mdW5jLFxuICBvbkRyaWxsRG93bjogUHJvcFR5cGVzLmZ1bmMsXG4gIGdldERyaWxsZG93blZpZXc6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cbiAgZGF5TGF5b3V0QWxnb3JpdGhtOiBEYXlMYXlvdXRBbGdvcml0aG1Qcm9wVHlwZSxcblxuICBzaG93QWxsRXZlbnRzOiBQcm9wVHlwZXMuYm9vbCxcbiAgZG9TaG93TW9yZURyaWxsRG93bjogUHJvcFR5cGVzLmJvb2wsXG5cbiAgcG9wdXA6IFByb3BUeXBlcy5ib29sLFxuICBoYW5kbGVEcmFnU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIHBvcHVwT2Zmc2V0OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICBQcm9wVHlwZXMubnVtYmVyLFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICB4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgeTogUHJvcFR5cGVzLm51bWJlcixcbiAgICB9KSxcbiAgXSksXG59XG5cbldlZWsuZGVmYXVsdFByb3BzID0gVGltZUdyaWQuZGVmYXVsdFByb3BzXG5cbldlZWsubmF2aWdhdGUgPSAoZGF0ZSwgYWN0aW9uLCB7IGxvY2FsaXplciB9KSA9PiB7XG4gIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgY2FzZSBuYXZpZ2F0ZS5QUkVWSU9VUzpcbiAgICAgIHJldHVybiBsb2NhbGl6ZXIuYWRkKGRhdGUsIC0xLCAnd2VlaycpXG5cbiAgICBjYXNlIG5hdmlnYXRlLk5FWFQ6XG4gICAgICByZXR1cm4gbG9jYWxpemVyLmFkZChkYXRlLCAxLCAnd2VlaycpXG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRhdGVcbiAgfVxufVxuXG5XZWVrLnJhbmdlID0gKGRhdGUsIHsgbG9jYWxpemVyIH0pID0+IHtcbiAgbGV0IGZpcnN0T2ZXZWVrID0gbG9jYWxpemVyLnN0YXJ0T2ZXZWVrKClcbiAgbGV0IHN0YXJ0ID0gbG9jYWxpemVyLnN0YXJ0T2YoZGF0ZSwgJ3dlZWsnLCBmaXJzdE9mV2VlaylcbiAgbGV0IGVuZCA9IGxvY2FsaXplci5lbmRPZihkYXRlLCAnd2VlaycsIGZpcnN0T2ZXZWVrKVxuXG4gIHJldHVybiBsb2NhbGl6ZXIucmFuZ2Uoc3RhcnQsIGVuZClcbn1cblxuV2Vlay50aXRsZSA9IChkYXRlLCB7IGxvY2FsaXplciB9KSA9PiB7XG4gIGxldCBbc3RhcnQsIC4uLnJlc3RdID0gV2Vlay5yYW5nZShkYXRlLCB7IGxvY2FsaXplciB9KVxuICByZXR1cm4gbG9jYWxpemVyLmZvcm1hdCh7IHN0YXJ0LCBlbmQ6IHJlc3QucG9wKCkgfSwgJ2RheVJhbmdlSGVhZGVyRm9ybWF0Jylcbn1cblxuZXhwb3J0IGRlZmF1bHQgV2Vla1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgV2VlayBmcm9tICcuL1dlZWsnXG5pbXBvcnQgVGltZUdyaWQgZnJvbSAnLi9UaW1lR3JpZCdcblxuZnVuY3Rpb24gd29ya1dlZWtSYW5nZShkYXRlLCBvcHRpb25zKSB7XG4gIHJldHVybiBXZWVrLnJhbmdlKGRhdGUsIG9wdGlvbnMpLmZpbHRlcihcbiAgICAoZCkgPT4gWzYsIDBdLmluZGV4T2YoZC5nZXREYXkoKSkgPT09IC0xXG4gIClcbn1cblxuY2xhc3MgV29ya1dlZWsgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgLyoqXG4gICAgICogVGhpcyBhbGxvd3MgdXMgdG8gZGVmYXVsdCBtaW4sIG1heCwgYW5kIHNjcm9sbFRvVGltZVxuICAgICAqIHVzaW5nIG91ciBsb2NhbGl6ZXIuIFRoaXMgaXMgbmVjZXNzYXJ5IHVudGlsIHN1Y2ggdGltZVxuICAgICAqIGFzIFRpbWVHcmlkIGlzIGNvbnZlcnRlZCB0byBhIGZ1bmN0aW9uYWwgY29tcG9uZW50LlxuICAgICAqL1xuICAgIGxldCB7XG4gICAgICBkYXRlLFxuICAgICAgbG9jYWxpemVyLFxuICAgICAgbWluID0gbG9jYWxpemVyLnN0YXJ0T2YobmV3IERhdGUoKSwgJ2RheScpLFxuICAgICAgbWF4ID0gbG9jYWxpemVyLmVuZE9mKG5ldyBEYXRlKCksICdkYXknKSxcbiAgICAgIHNjcm9sbFRvVGltZSA9IGxvY2FsaXplci5zdGFydE9mKG5ldyBEYXRlKCksICdkYXknKSxcbiAgICAgIGVuYWJsZUF1dG9TY3JvbGwgPSB0cnVlLFxuICAgICAgLi4ucHJvcHNcbiAgICB9ID0gdGhpcy5wcm9wc1xuICAgIGxldCByYW5nZSA9IHdvcmtXZWVrUmFuZ2UoZGF0ZSwgdGhpcy5wcm9wcylcbiAgICByZXR1cm4gKFxuICAgICAgPFRpbWVHcmlkXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgcmFuZ2U9e3JhbmdlfVxuICAgICAgICBldmVudE9mZnNldD17MTV9XG4gICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICBtaW49e21pbn1cbiAgICAgICAgbWF4PXttYXh9XG4gICAgICAgIHNjcm9sbFRvVGltZT17c2Nyb2xsVG9UaW1lfVxuICAgICAgICBlbmFibGVBdXRvU2Nyb2xsPXtlbmFibGVBdXRvU2Nyb2xsfVxuICAgICAgLz5cbiAgICApXG4gIH1cbn1cblxuV29ya1dlZWsucHJvcFR5cGVzID0ge1xuICBkYXRlOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLFxuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5hbnksXG4gIG1pbjogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG4gIG1heDogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG4gIHNjcm9sbFRvVGltZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG4gIGVuYWJsZUF1dG9TY3JvbGw6IFByb3BUeXBlcy5ib29sLFxufVxuXG5Xb3JrV2Vlay5kZWZhdWx0UHJvcHMgPSBUaW1lR3JpZC5kZWZhdWx0UHJvcHNcblxuV29ya1dlZWsucmFuZ2UgPSB3b3JrV2Vla1JhbmdlXG5cbldvcmtXZWVrLm5hdmlnYXRlID0gV2Vlay5uYXZpZ2F0ZVxuXG5Xb3JrV2Vlay50aXRsZSA9IChkYXRlLCB7IGxvY2FsaXplciB9KSA9PiB7XG4gIGxldCBbc3RhcnQsIC4uLnJlc3RdID0gd29ya1dlZWtSYW5nZShkYXRlLCB7IGxvY2FsaXplciB9KVxuXG4gIHJldHVybiBsb2NhbGl6ZXIuZm9ybWF0KHsgc3RhcnQsIGVuZDogcmVzdC5wb3AoKSB9LCAnZGF5UmFuZ2VIZWFkZXJGb3JtYXQnKVxufVxuXG5leHBvcnQgZGVmYXVsdCBXb3JrV2Vla1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgYWRkQ2xhc3MgZnJvbSAnZG9tLWhlbHBlcnMvYWRkQ2xhc3MnXG5pbXBvcnQgcmVtb3ZlQ2xhc3MgZnJvbSAnZG9tLWhlbHBlcnMvcmVtb3ZlQ2xhc3MnXG5pbXBvcnQgZ2V0V2lkdGggZnJvbSAnZG9tLWhlbHBlcnMvd2lkdGgnXG5pbXBvcnQgc2Nyb2xsYmFyU2l6ZSBmcm9tICdkb20taGVscGVycy9zY3JvbGxiYXJTaXplJ1xuXG5pbXBvcnQgeyBuYXZpZ2F0ZSB9IGZyb20gJy4vdXRpbHMvY29uc3RhbnRzJ1xuaW1wb3J0IHsgaW5SYW5nZSB9IGZyb20gJy4vdXRpbHMvZXZlbnRMZXZlbHMnXG5pbXBvcnQgeyBpc1NlbGVjdGVkIH0gZnJvbSAnLi91dGlscy9zZWxlY3Rpb24nXG5cbmNvbnN0IERFRkFVTFRfTEVOR1RIID0gMzA7XG5mdW5jdGlvbiBBZ2VuZGEoe1xuICBhY2Nlc3NvcnMsXG4gIGNvbXBvbmVudHMsXG4gIGRhdGUsXG4gIGV2ZW50cyxcbiAgZ2V0dGVycyxcbiAgbGVuZ3RoID0gREVGQVVMVF9MRU5HVEgsXG4gIGxvY2FsaXplcixcbiAgb25Eb3VibGVDbGlja0V2ZW50LFxuICBvblNlbGVjdEV2ZW50LFxuICBzZWxlY3RlZCxcbn0pIHtcbiAgY29uc3QgaGVhZGVyUmVmID0gdXNlUmVmKG51bGwpXG4gIGNvbnN0IGRhdGVDb2xSZWYgPSB1c2VSZWYobnVsbClcbiAgY29uc3QgdGltZUNvbFJlZiA9IHVzZVJlZihudWxsKVxuICBjb25zdCBjb250ZW50UmVmID0gdXNlUmVmKG51bGwpXG4gIGNvbnN0IHRib2R5UmVmID0gdXNlUmVmKG51bGwpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBfYWRqdXN0SGVhZGVyKClcbiAgfSlcblxuICBjb25zdCByZW5kZXJEYXkgPSAoZGF5LCBldmVudHMsIGRheUtleSkgPT4ge1xuICAgIGNvbnN0IHsgZXZlbnQ6IEV2ZW50LCBkYXRlOiBBZ2VuZGFEYXRlIH0gPSBjb21wb25lbnRzXG5cbiAgICBldmVudHMgPSBldmVudHMuZmlsdGVyKChlKSA9PlxuICAgICAgaW5SYW5nZShcbiAgICAgICAgZSxcbiAgICAgICAgbG9jYWxpemVyLnN0YXJ0T2YoZGF5LCAnZGF5JyksXG4gICAgICAgIGxvY2FsaXplci5lbmRPZihkYXksICdkYXknKSxcbiAgICAgICAgYWNjZXNzb3JzLFxuICAgICAgICBsb2NhbGl6ZXJcbiAgICAgIClcbiAgICApXG5cbiAgICByZXR1cm4gZXZlbnRzLm1hcCgoZXZlbnQsIGlkeCkgPT4ge1xuICAgICAgbGV0IHRpdGxlID0gYWNjZXNzb3JzLnRpdGxlKGV2ZW50KVxuICAgICAgbGV0IGVuZCA9IGFjY2Vzc29ycy5lbmQoZXZlbnQpXG4gICAgICBsZXQgc3RhcnQgPSBhY2Nlc3NvcnMuc3RhcnQoZXZlbnQpXG5cbiAgICAgIGNvbnN0IHVzZXJQcm9wcyA9IGdldHRlcnMuZXZlbnRQcm9wKFxuICAgICAgICBldmVudCxcbiAgICAgICAgc3RhcnQsXG4gICAgICAgIGVuZCxcbiAgICAgICAgaXNTZWxlY3RlZChldmVudCwgc2VsZWN0ZWQpXG4gICAgICApXG5cbiAgICAgIGxldCBkYXRlTGFiZWwgPSBpZHggPT09IDAgJiYgbG9jYWxpemVyLmZvcm1hdChkYXksICdhZ2VuZGFEYXRlRm9ybWF0JylcbiAgICAgIGxldCBmaXJzdCA9XG4gICAgICAgIGlkeCA9PT0gMCA/IChcbiAgICAgICAgICA8dGQgcm93U3Bhbj17ZXZlbnRzLmxlbmd0aH0gY2xhc3NOYW1lPVwicmJjLWFnZW5kYS1kYXRlLWNlbGxcIj5cbiAgICAgICAgICAgIHtBZ2VuZGFEYXRlID8gKFxuICAgICAgICAgICAgICA8QWdlbmRhRGF0ZSBkYXk9e2RheX0gbGFiZWw9e2RhdGVMYWJlbH0gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIGRhdGVMYWJlbFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgIClcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPHRyXG4gICAgICAgICAga2V5PXtkYXlLZXkgKyAnXycgKyBpZHh9XG4gICAgICAgICAgY2xhc3NOYW1lPXt1c2VyUHJvcHMuY2xhc3NOYW1lfVxuICAgICAgICAgIHN0eWxlPXt1c2VyUHJvcHMuc3R5bGV9XG4gICAgICAgID5cbiAgICAgICAgICB7Zmlyc3R9XG4gICAgICAgICAgPHRkIGNsYXNzTmFtZT1cInJiYy1hZ2VuZGEtdGltZS1jZWxsXCI+e3RpbWVSYW5nZUxhYmVsKGRheSwgZXZlbnQpfTwvdGQ+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJyYmMtYWdlbmRhLWV2ZW50LWNlbGxcIlxuICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uU2VsZWN0RXZlbnQgJiYgb25TZWxlY3RFdmVudChldmVudCwgZSl9XG4gICAgICAgICAgICBvbkRvdWJsZUNsaWNrPXsoZSkgPT5cbiAgICAgICAgICAgICAgb25Eb3VibGVDbGlja0V2ZW50ICYmIG9uRG91YmxlQ2xpY2tFdmVudChldmVudCwgZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7RXZlbnQgPyA8RXZlbnQgZXZlbnQ9e2V2ZW50fSB0aXRsZT17dGl0bGV9IC8+IDogdGl0bGV9XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIClcbiAgICB9LCBbXSlcbiAgfVxuXG4gIGNvbnN0IHRpbWVSYW5nZUxhYmVsID0gKGRheSwgZXZlbnQpID0+IHtcbiAgICBsZXQgbGFiZWxDbGFzcyA9ICcnLFxuICAgICAgVGltZUNvbXBvbmVudCA9IGNvbXBvbmVudHMudGltZSxcbiAgICAgIGxhYmVsID0gbG9jYWxpemVyLm1lc3NhZ2VzLmFsbERheVxuXG4gICAgbGV0IGVuZCA9IGFjY2Vzc29ycy5lbmQoZXZlbnQpXG4gICAgbGV0IHN0YXJ0ID0gYWNjZXNzb3JzLnN0YXJ0KGV2ZW50KVxuXG4gICAgaWYgKCFhY2Nlc3NvcnMuYWxsRGF5KGV2ZW50KSkge1xuICAgICAgaWYgKGxvY2FsaXplci5lcShzdGFydCwgZW5kKSkge1xuICAgICAgICBsYWJlbCA9IGxvY2FsaXplci5mb3JtYXQoc3RhcnQsICdhZ2VuZGFUaW1lRm9ybWF0JylcbiAgICAgIH0gZWxzZSBpZiAobG9jYWxpemVyLmlzU2FtZURhdGUoc3RhcnQsIGVuZCkpIHtcbiAgICAgICAgbGFiZWwgPSBsb2NhbGl6ZXIuZm9ybWF0KHsgc3RhcnQsIGVuZCB9LCAnYWdlbmRhVGltZVJhbmdlRm9ybWF0JylcbiAgICAgIH0gZWxzZSBpZiAobG9jYWxpemVyLmlzU2FtZURhdGUoZGF5LCBzdGFydCkpIHtcbiAgICAgICAgbGFiZWwgPSBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCAnYWdlbmRhVGltZUZvcm1hdCcpXG4gICAgICB9IGVsc2UgaWYgKGxvY2FsaXplci5pc1NhbWVEYXRlKGRheSwgZW5kKSkge1xuICAgICAgICBsYWJlbCA9IGxvY2FsaXplci5mb3JtYXQoZW5kLCAnYWdlbmRhVGltZUZvcm1hdCcpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxvY2FsaXplci5ndChkYXksIHN0YXJ0LCAnZGF5JykpIGxhYmVsQ2xhc3MgPSAncmJjLWNvbnRpbnVlcy1wcmlvcidcbiAgICBpZiAobG9jYWxpemVyLmx0KGRheSwgZW5kLCAnZGF5JykpIGxhYmVsQ2xhc3MgKz0gJyByYmMtY29udGludWVzLWFmdGVyJ1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17bGFiZWxDbGFzcy50cmltKCl9PlxuICAgICAgICB7VGltZUNvbXBvbmVudCA/IChcbiAgICAgICAgICA8VGltZUNvbXBvbmVudCBldmVudD17ZXZlbnR9IGRheT17ZGF5fSBsYWJlbD17bGFiZWx9IC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgbGFiZWxcbiAgICAgICAgKX1cbiAgICAgIDwvc3Bhbj5cbiAgICApXG4gIH1cblxuICBjb25zdCBfYWRqdXN0SGVhZGVyID0gKCkgPT4ge1xuICAgIGlmICghdGJvZHlSZWYuY3VycmVudCkgcmV0dXJuXG5cbiAgICBsZXQgaGVhZGVyID0gaGVhZGVyUmVmLmN1cnJlbnRcbiAgICBsZXQgZmlyc3RSb3cgPSB0Ym9keVJlZi5jdXJyZW50LmZpcnN0Q2hpbGRcblxuICAgIGlmICghZmlyc3RSb3cpIHJldHVyblxuXG4gICAgbGV0IGlzT3ZlcmZsb3dpbmcgPVxuICAgICAgY29udGVudFJlZi5jdXJyZW50LnNjcm9sbEhlaWdodCA+IGNvbnRlbnRSZWYuY3VycmVudC5jbGllbnRIZWlnaHRcblxuICAgIGxldCBfd2lkdGhzID0gW11cbiAgICBsZXQgd2lkdGhzID0gX3dpZHRoc1xuXG4gICAgX3dpZHRocyA9IFtnZXRXaWR0aChmaXJzdFJvdy5jaGlsZHJlblswXSksIGdldFdpZHRoKGZpcnN0Um93LmNoaWxkcmVuWzFdKV1cblxuICAgIGlmICh3aWR0aHNbMF0gIT09IF93aWR0aHNbMF0gfHwgd2lkdGhzWzFdICE9PSBfd2lkdGhzWzFdKSB7XG4gICAgICBkYXRlQ29sUmVmLmN1cnJlbnQuc3R5bGUud2lkdGggPSBfd2lkdGhzWzBdICsgJ3B4J1xuICAgICAgdGltZUNvbFJlZi5jdXJyZW50LnN0eWxlLndpZHRoID0gX3dpZHRoc1sxXSArICdweCdcbiAgICB9XG5cbiAgICBpZiAoaXNPdmVyZmxvd2luZykge1xuICAgICAgYWRkQ2xhc3MoaGVhZGVyLCAncmJjLWhlYWRlci1vdmVyZmxvd2luZycpXG4gICAgICBoZWFkZXIuc3R5bGUubWFyZ2luUmlnaHQgPSBzY3JvbGxiYXJTaXplKCkgKyAncHgnXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZUNsYXNzKGhlYWRlciwgJ3JiYy1oZWFkZXItb3ZlcmZsb3dpbmcnKVxuICAgIH1cbiAgfVxuXG4gIGxldCB7IG1lc3NhZ2VzIH0gPSBsb2NhbGl6ZXJcbiAgbGV0IGVuZCA9IGxvY2FsaXplci5hZGQoZGF0ZSwgbGVuZ3RoLCAnZGF5JylcblxuICBsZXQgcmFuZ2UgPSBsb2NhbGl6ZXIucmFuZ2UoZGF0ZSwgZW5kLCAnZGF5JylcblxuICBldmVudHMgPSBldmVudHMuZmlsdGVyKChldmVudCkgPT5cbiAgICBpblJhbmdlKFxuICAgICAgZXZlbnQsXG4gICAgICBsb2NhbGl6ZXIuc3RhcnRPZihkYXRlLCAnZGF5JyksXG4gICAgICBsb2NhbGl6ZXIuZW5kT2YoZW5kLCAnZGF5JyksXG4gICAgICBhY2Nlc3NvcnMsXG4gICAgICBsb2NhbGl6ZXJcbiAgICApXG4gIClcblxuICBldmVudHMuc29ydCgoYSwgYikgPT4gK2FjY2Vzc29ycy5zdGFydChhKSAtICthY2Nlc3NvcnMuc3RhcnQoYikpXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJiYy1hZ2VuZGEtdmlld1wiPlxuICAgICAge2V2ZW50cy5sZW5ndGggIT09IDAgPyAoXG4gICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICA8dGFibGUgcmVmPXtoZWFkZXJSZWZ9IGNsYXNzTmFtZT1cInJiYy1hZ2VuZGEtdGFibGVcIj5cbiAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0aCBjbGFzc05hbWU9XCJyYmMtaGVhZGVyXCIgcmVmPXtkYXRlQ29sUmVmfT5cbiAgICAgICAgICAgICAgICAgIHttZXNzYWdlcy5kYXRlfVxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzTmFtZT1cInJiYy1oZWFkZXJcIiByZWY9e3RpbWVDb2xSZWZ9PlxuICAgICAgICAgICAgICAgICAge21lc3NhZ2VzLnRpbWV9XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICA8dGggY2xhc3NOYW1lPVwicmJjLWhlYWRlclwiPnttZXNzYWdlcy5ldmVudH08L3RoPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLWFnZW5kYS1jb250ZW50XCIgcmVmPXtjb250ZW50UmVmfT5cbiAgICAgICAgICAgIDx0YWJsZSBjbGFzc05hbWU9XCJyYmMtYWdlbmRhLXRhYmxlXCI+XG4gICAgICAgICAgICAgIDx0Ym9keSByZWY9e3Rib2R5UmVmfT5cbiAgICAgICAgICAgICAgICB7cmFuZ2UubWFwKChkYXksIGlkeCkgPT4gcmVuZGVyRGF5KGRheSwgZXZlbnRzLCBpZHgpKX1cbiAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICApIDogKFxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJyYmMtYWdlbmRhLWVtcHR5XCI+e21lc3NhZ2VzLm5vRXZlbnRzSW5SYW5nZX08L3NwYW4+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApXG59XG5cbkFnZW5kYS5wcm9wVHlwZXMgPSB7XG4gIGFjY2Vzc29yczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjb21wb25lbnRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGRhdGU6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICBldmVudHM6IFByb3BUeXBlcy5hcnJheSxcbiAgZ2V0dGVyczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBsZW5ndGg6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIG9uU2VsZWN0RXZlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvbkRvdWJsZUNsaWNrRXZlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICBzZWxlY3RlZDogUHJvcFR5cGVzLm9iamVjdCxcbn1cblxuQWdlbmRhLnJhbmdlID0gKHN0YXJ0LCB7IGxlbmd0aCA9IERFRkFVTFRfTEVOR1RILCBsb2NhbGl6ZXIgfSkgPT4ge1xuICBsZXQgZW5kID0gbG9jYWxpemVyLmFkZChzdGFydCwgbGVuZ3RoLCAnZGF5JylcbiAgcmV0dXJuIHsgc3RhcnQsIGVuZCB9XG59XG5cbkFnZW5kYS5uYXZpZ2F0ZSA9IChcbiAgZGF0ZSxcbiAgYWN0aW9uLFxuICB7IGxlbmd0aCA9IERFRkFVTFRfTEVOR1RILCBsb2NhbGl6ZXIgfVxuKSA9PiB7XG4gIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgY2FzZSBuYXZpZ2F0ZS5QUkVWSU9VUzpcbiAgICAgIHJldHVybiBsb2NhbGl6ZXIuYWRkKGRhdGUsIC1sZW5ndGgsICdkYXknKVxuXG4gICAgY2FzZSBuYXZpZ2F0ZS5ORVhUOlxuICAgICAgcmV0dXJuIGxvY2FsaXplci5hZGQoZGF0ZSwgbGVuZ3RoLCAnZGF5JylcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZGF0ZVxuICB9XG59XG5cbkFnZW5kYS50aXRsZSA9IChzdGFydCwgeyBsZW5ndGggPSBERUZBVUxUX0xFTkdUSCwgbG9jYWxpemVyIH0pID0+IHtcbiAgbGV0IGVuZCA9IGxvY2FsaXplci5hZGQoc3RhcnQsIGxlbmd0aCwgJ2RheScpXG4gIHJldHVybiBsb2NhbGl6ZXIuZm9ybWF0KHsgc3RhcnQsIGVuZCB9LCAnYWdlbmRhSGVhZGVyRm9ybWF0Jylcbn1cblxuZXhwb3J0IGRlZmF1bHQgQWdlbmRhXG4iLCJpbXBvcnQgeyB2aWV3cyB9IGZyb20gJy4vdXRpbHMvY29uc3RhbnRzJ1xuaW1wb3J0IE1vbnRoIGZyb20gJy4vTW9udGgnXG5pbXBvcnQgRGF5IGZyb20gJy4vRGF5J1xuaW1wb3J0IFdlZWsgZnJvbSAnLi9XZWVrJ1xuaW1wb3J0IFdvcmtXZWVrIGZyb20gJy4vV29ya1dlZWsnXG5pbXBvcnQgQWdlbmRhIGZyb20gJy4vQWdlbmRhJ1xuXG5jb25zdCBWSUVXUyA9IHtcbiAgW3ZpZXdzLk1PTlRIXTogTW9udGgsXG4gIFt2aWV3cy5XRUVLXTogV2VlayxcbiAgW3ZpZXdzLldPUktfV0VFS106IFdvcmtXZWVrLFxuICBbdmlld3MuREFZXTogRGF5LFxuICBbdmlld3MuQUdFTkRBXTogQWdlbmRhLFxufVxuXG5leHBvcnQgZGVmYXVsdCBWSUVXU1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCdcbmltcG9ydCB7IG5hdmlnYXRlIH0gZnJvbSAnLi91dGlscy9jb25zdGFudHMnXG5cbmNsYXNzIFRvb2xiYXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgbGV0IHtcbiAgICAgIGxvY2FsaXplcjogeyBtZXNzYWdlcyB9LFxuICAgICAgbGFiZWwsXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJiYy10b29sYmFyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInJiYy1idG4tZ3JvdXBcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMubmF2aWdhdGUuYmluZChudWxsLCBuYXZpZ2F0ZS5UT0RBWSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge21lc3NhZ2VzLnRvZGF5fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgb25DbGljaz17dGhpcy5uYXZpZ2F0ZS5iaW5kKG51bGwsIG5hdmlnYXRlLlBSRVZJT1VTKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bWVzc2FnZXMucHJldmlvdXN9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm5hdmlnYXRlLmJpbmQobnVsbCwgbmF2aWdhdGUuTkVYVCl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge21lc3NhZ2VzLm5leHR9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJyYmMtdG9vbGJhci1sYWJlbFwiPntsYWJlbH08L3NwYW4+XG5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicmJjLWJ0bi1ncm91cFwiPnt0aGlzLnZpZXdOYW1lc0dyb3VwKG1lc3NhZ2VzKX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cblxuICBuYXZpZ2F0ZSA9IChhY3Rpb24pID0+IHtcbiAgICB0aGlzLnByb3BzLm9uTmF2aWdhdGUoYWN0aW9uKVxuICB9XG5cbiAgdmlldyA9ICh2aWV3KSA9PiB7XG4gICAgdGhpcy5wcm9wcy5vblZpZXcodmlldylcbiAgfVxuXG4gIHZpZXdOYW1lc0dyb3VwKG1lc3NhZ2VzKSB7XG4gICAgbGV0IHZpZXdOYW1lcyA9IHRoaXMucHJvcHMudmlld3NcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5wcm9wcy52aWV3XG5cbiAgICBpZiAodmlld05hbWVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiB2aWV3TmFtZXMubWFwKChuYW1lKSA9PiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KHsgJ3JiYy1hY3RpdmUnOiB2aWV3ID09PSBuYW1lIH0pfVxuICAgICAgICAgIG9uQ2xpY2s9e3RoaXMudmlldy5iaW5kKG51bGwsIG5hbWUpfVxuICAgICAgICA+XG4gICAgICAgICAge21lc3NhZ2VzW25hbWVdfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICkpXG4gICAgfVxuICB9XG59XG5cblRvb2xiYXIucHJvcFR5cGVzID0ge1xuICB2aWV3OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHZpZXdzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKS5pc1JlcXVpcmVkLFxuICBsYWJlbDogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBvbk5hdmlnYXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvblZpZXc6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59XG5cbmV4cG9ydCBkZWZhdWx0IFRvb2xiYXJcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVuY29udHJvbGxhYmxlIH0gZnJvbSAndW5jb250cm9sbGFibGUnXG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4J1xuaW1wb3J0IHtcbiAgYWNjZXNzb3IsXG4gIGRhdGVGb3JtYXQsXG4gIGRhdGVSYW5nZUZvcm1hdCxcbiAgRGF5TGF5b3V0QWxnb3JpdGhtUHJvcFR5cGUsXG4gIHZpZXdzIGFzIGNvbXBvbmVudFZpZXdzLFxufSBmcm9tICcuL3V0aWxzL3Byb3BUeXBlcydcblxuaW1wb3J0IHsgbm90aWZ5IH0gZnJvbSAnLi91dGlscy9oZWxwZXJzJ1xuaW1wb3J0IHsgbmF2aWdhdGUsIHZpZXdzIH0gZnJvbSAnLi91dGlscy9jb25zdGFudHMnXG5pbXBvcnQgeyBtZXJnZVdpdGhEZWZhdWx0cyB9IGZyb20gJy4vbG9jYWxpemVyJ1xuaW1wb3J0IG1lc3NhZ2UgZnJvbSAnLi91dGlscy9tZXNzYWdlcydcbmltcG9ydCBtb3ZlRGF0ZSBmcm9tICcuL3V0aWxzL21vdmUnXG5pbXBvcnQgVklFV1MgZnJvbSAnLi9WaWV3cydcbmltcG9ydCBUb29sYmFyIGZyb20gJy4vVG9vbGJhcidcbmltcG9ydCBOb29wV3JhcHBlciBmcm9tICcuL05vb3BXcmFwcGVyJ1xuXG5pbXBvcnQgb21pdCBmcm9tICdsb2Rhc2gvb21pdCdcbmltcG9ydCBkZWZhdWx0cyBmcm9tICdsb2Rhc2gvZGVmYXVsdHMnXG5pbXBvcnQgdHJhbnNmb3JtIGZyb20gJ2xvZGFzaC90cmFuc2Zvcm0nXG5pbXBvcnQgbWFwVmFsdWVzIGZyb20gJ2xvZGFzaC9tYXBWYWx1ZXMnXG5pbXBvcnQgeyB3cmFwQWNjZXNzb3IgfSBmcm9tICcuL3V0aWxzL2FjY2Vzc29ycydcblxuZnVuY3Rpb24gdmlld05hbWVzKF92aWV3cykge1xuICBpZiAoQXJyYXkuaXNBcnJheShfdmlld3MpKSB7XG4gICAgcmV0dXJuIF92aWV3c1xuICB9XG4gIGNvbnN0IHZpZXdzID0gW11cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoX3ZpZXdzKSkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdmlld3MucHVzaChrZXkpXG4gICAgfVxuICB9XG4gIHJldHVybiB2aWV3c1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkVmlldyh2aWV3LCB7IHZpZXdzOiBfdmlld3MgfSkge1xuICBsZXQgbmFtZXMgPSB2aWV3TmFtZXMoX3ZpZXdzKVxuICByZXR1cm4gbmFtZXMuaW5kZXhPZih2aWV3KSAhPT0gLTFcbn1cblxuY2xhc3MgQ2FsZW5kYXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIC8qKlxuICAgICAqIFRoZSBsb2NhbGl6ZXIgdXNlZCBmb3IgZm9ybWF0dGluZyBkYXRlcyBhbmQgdGltZXMgYWNjb3JkaW5nIHRvIHRoZSBgZm9ybWF0YCBhbmQgYGN1bHR1cmVgXG4gICAgICpcbiAgICAgKiBnbG9iYWxpemVcbiAgICAgKiBgYGBqc1xuICAgICAqIGltcG9ydCB7Z2xvYmFsaXplTG9jYWxpemVyfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG4gICAgICogaW1wb3J0IGdsb2JhbGl6ZSBmcm9tICdnbG9iYWxpemUnXG4gICAgICpcbiAgICAgKiBjb25zdCBsb2NhbGl6ZXIgPSBnbG9iYWxpemVMb2NhbGl6ZXIoZ2xvYmFsaXplKVxuICAgICAqIGBgYFxuICAgICAqIG1vbWVudFxuICAgICAqIGBganNcbiAgICAgKiBpbXBvcnQge21vbWVudExvY2FsaXplcn0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuICAgICAqIGltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuICAgICAqIC8vIGFuZCwgZm9yIG9wdGlvbmFsIHRpbWUgem9uZSBzdXBwb3J0XG4gICAgICogaW1wb3J0ICdtb21lbnQtdGltZXpvbmUnXG4gICAgICpcbiAgICAgKiBtb21lbnQudHouc2V0RGVmYXVsdCgnQW1lcmljYS9Mb3NfQW5nZWxlcycpXG4gICAgICogLy8gZW5kIG9wdGlvbmFsIHRpbWUgem9uZSBzdXBwb3J0XG4gICAgICpcbiAgICAgKiBjb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogTHV4b25cbiAgICAgKiBgYGBqc1xuICAgICAqIGltcG9ydCB7bHV4b25Mb2NhbGl6ZXJ9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbiAgICAgKiBpbXBvcnQge0RhdGVUaW1lLCBTZXR0aW5nc30gZnJvbSAnbHV4b24nXG4gICAgICogLy8gb25seSB1c2UgYFNldHRpbmdzYCBpZiB5b3UgcmVxdWlyZSBvcHRpb25hbCB0aW1lIHpvbmUgc3VwcG9ydFxuICAgICAqIFNldHRpbmdzLmRlZmF1bHRab25lID0gJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnXG4gICAgICogLy8gZW5kIG9wdGlvbmFsIHRpbWUgem9uZSBzdXBwb3J0XG4gICAgICpcbiAgICAgKiAvLyBMdXhvbiB1c2VzIHRoZSBJbnRsIEFQSSwgd2hpY2ggY3VycmVudGx5IGRvZXMgbm90IGNvbnRhaW4gYHdlZWtJbmZvYFxuICAgICAqIC8vIHRvIGRldGVybWluZSB3aGljaCB3ZWVrZGF5IGlzIHRoZSBzdGFydCBvZiB0aGUgd2VlayBieSBgY3VsdHVyZWAuXG4gICAgICogLy8gVGhlIGBsdXhvbkxvY2FsaXplcmAgZGVmYXVsdHMgdGhpcyB0byBTdW5kYXksIHdoaWNoIGRpZmZlcnMgZnJvbVxuICAgICAqIC8vIHRoZSBMdXhvbiBkZWZhdWx0IG9mIE1vbmRheS4gVGhlIGxvY2FsaXplciByZXF1aXJlcyB0aGlzIG9wdGlvblxuICAgICAqIC8vIHRvIGNoYW5nZSB0aGUgZGlzcGxheSwgYW5kIHRoZSBkYXRlIG1hdGggZm9yIGRldGVybWluaW5nIHRoZVxuICAgICAqIC8vIHN0YXJ0IG9mIGEgd2Vlay4gTHV4b24gdXNlcyBub24temVybyBiYXNlZCB2YWx1ZXMgZm9yIGB3ZWVrZGF5YC5cbiAgICAgKiBjb25zdCBsb2NhbGl6ZXIgPSBsdXhvbkxvY2FsaXplcihEYXRlVGltZSwge2ZpcnN0RGF5T2ZXZWVrOiA3fSlcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcblxuICAgIC8qKlxuICAgICAqIFByb3BzIHBhc3NlZCB0byBtYWluIGNhbGVuZGFyIGA8ZGl2PmAuXG4gICAgICpcbiAgICAgKi9cbiAgICBlbGVtZW50UHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG5cbiAgICAvKipcbiAgICAgKiBUaGUgY3VycmVudCBkYXRlIHZhbHVlIG9mIHRoZSBjYWxlbmRhci4gRGV0ZXJtaW5lcyB0aGUgdmlzaWJsZSB2aWV3IHJhbmdlLlxuICAgICAqIElmIGBkYXRlYCBpcyBvbWl0dGVkIHRoZW4gdGhlIHJlc3VsdCBvZiBgZ2V0Tm93YCBpcyB1c2VkOyBvdGhlcndpc2UgdGhlXG4gICAgICogY3VycmVudCBkYXRlIGlzIHVzZWQuXG4gICAgICpcbiAgICAgKiBAY29udHJvbGxhYmxlIG9uTmF2aWdhdGVcbiAgICAgKi9cbiAgICBkYXRlOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcblxuICAgIC8qKlxuICAgICAqIFRoZSBjdXJyZW50IHZpZXcgb2YgdGhlIGNhbGVuZGFyLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ21vbnRoJ1xuICAgICAqIEBjb250cm9sbGFibGUgb25WaWV3XG4gICAgICovXG4gICAgdmlldzogUHJvcFR5cGVzLnN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIFRoZSBpbml0aWFsIHZpZXcgc2V0IGZvciB0aGUgQ2FsZW5kYXIuXG4gICAgICogQHR5cGUgQ2FsZW5kYXIuVmlld3MgKCdtb250aCd8J3dlZWsnfCd3b3JrX3dlZWsnfCdkYXknfCdhZ2VuZGEnKVxuICAgICAqIEBkZWZhdWx0ICdtb250aCdcbiAgICAgKi9cbiAgICBkZWZhdWx0VmlldzogUHJvcFR5cGVzLnN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIGV2ZW50IG9iamVjdHMgdG8gZGlzcGxheSBvbiB0aGUgY2FsZW5kYXIuIEV2ZW50cyBvYmplY3RzXG4gICAgICogY2FuIGJlIGFueSBzaGFwZSwgYXMgbG9uZyBhcyB0aGUgQ2FsZW5kYXIga25vd3MgaG93IHRvIHJldHJpZXZlIHRoZVxuICAgICAqIGZvbGxvd2luZyBkZXRhaWxzIG9mIHRoZSBldmVudDpcbiAgICAgKlxuICAgICAqICAtIHN0YXJ0IHRpbWVcbiAgICAgKiAgLSBlbmQgdGltZVxuICAgICAqICAtIHRpdGxlXG4gICAgICogIC0gd2hldGhlciBpdHMgYW4gXCJhbGwgZGF5XCIgZXZlbnQgb3Igbm90XG4gICAgICogIC0gYW55IHJlc291cmNlIHRoZSBldmVudCBtYXkgYmUgcmVsYXRlZCB0b1xuICAgICAqXG4gICAgICogRWFjaCBvZiB0aGVzZSBwcm9wZXJ0aWVzIGNhbiBiZSBjdXN0b21pemVkIG9yIGdlbmVyYXRlZCBkeW5hbWljYWxseSBieVxuICAgICAqIHNldHRpbmcgdGhlIHZhcmlvdXMgXCJhY2Nlc3NvclwiIHByb3BzLiBXaXRob3V0IGFueSBjb25maWd1cmF0aW9uIHRoZSBkZWZhdWx0XG4gICAgICogZXZlbnQgc2hvdWxkIGxvb2sgbGlrZTpcbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogRXZlbnQge1xuICAgICAqICAgdGl0bGU6IHN0cmluZyxcbiAgICAgKiAgIHN0YXJ0OiBEYXRlLFxuICAgICAqICAgZW5kOiBEYXRlLFxuICAgICAqICAgYWxsRGF5PzogYm9vbGVhblxuICAgICAqICAgcmVzb3VyY2U/OiBhbnksXG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGV2ZW50czogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9iamVjdCksXG5cbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiBiYWNrZ3JvdW5kIGV2ZW50IG9iamVjdHMgdG8gZGlzcGxheSBvbiB0aGUgY2FsZW5kYXIuIEJhY2tncm91bmRcbiAgICAgKiBFdmVudHMgYmVoYXZlIHNpbWlsYXJseSB0byBFdmVudHMgYnV0IGFyZSBub3QgZmFjdG9yZWQgaW50byBFdmVudCBvdmVybGFwIGxvZ2ljLFxuICAgICAqIGFsbG93aW5nIHRoZW0gdG8gc2l0IGJlaGluZCBhbnkgRXZlbnRzIHRoYXQgbWF5IG9jY3VyIGR1cmluZyB0aGUgc2FtZSBwZXJpb2QuXG4gICAgICogQmFja2dyb3VuZCBFdmVudHMgb2JqZWN0cyBjYW4gYmUgYW55IHNoYXBlLCBhcyBsb25nIGFzIHRoZSBDYWxlbmRhciBrbm93cyBob3cgdG9cbiAgICAgKiByZXRyaWV2ZSB0aGUgZm9sbG93aW5nIGRldGFpbHMgb2YgdGhlIGV2ZW50OlxuICAgICAqXG4gICAgICogIC0gc3RhcnQgdGltZVxuICAgICAqICAtIGVuZCB0aW1lXG4gICAgICpcbiAgICAgKiBFYWNoIG9mIHRoZXNlIHByb3BlcnRpZXMgY2FuIGJlIGN1c3RvbWl6ZWQgb3IgZ2VuZXJhdGVkIGR5bmFtaWNhbGx5IGJ5XG4gICAgICogc2V0dGluZyB0aGUgdmFyaW91cyBcImFjY2Vzc29yXCIgcHJvcHMuIFdpdGhvdXQgYW55IGNvbmZpZ3VyYXRpb24gdGhlIGRlZmF1bHRcbiAgICAgKiBldmVudCBzaG91bGQgbG9vayBsaWtlOlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBCYWNrZ3JvdW5kRXZlbnQge1xuICAgICAqICAgc3RhcnQ6IERhdGUsXG4gICAgICogICBlbmQ6IERhdGUsXG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGJhY2tncm91bmRFdmVudHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vYmplY3QpLFxuXG4gICAgLyoqXG4gICAgICogQWNjZXNzb3IgZm9yIHRoZSBldmVudCB0aXRsZSwgdXNlZCB0byBkaXNwbGF5IGV2ZW50IGluZm9ybWF0aW9uLiBTaG91bGRcbiAgICAgKiByZXNvbHZlIHRvIGEgYHJlbmRlcmFibGVgIHZhbHVlLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBzdHJpbmcgfCAoZXZlbnQ6IE9iamVjdCkgPT4gc3RyaW5nXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAdHlwZSB7KGZ1bmN8c3RyaW5nKX1cbiAgICAgKi9cbiAgICB0aXRsZUFjY2Vzc29yOiBhY2Nlc3NvcixcblxuICAgIC8qKlxuICAgICAqIEFjY2Vzc29yIGZvciB0aGUgZXZlbnQgdG9vbHRpcC4gU2hvdWxkXG4gICAgICogcmVzb2x2ZSB0byBhIGByZW5kZXJhYmxlYCB2YWx1ZS4gUmVtb3ZlcyB0aGUgdG9vbHRpcCBpZiBudWxsLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBzdHJpbmcgfCAoZXZlbnQ6IE9iamVjdCkgPT4gc3RyaW5nXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAdHlwZSB7KGZ1bmN8c3RyaW5nKX1cbiAgICAgKi9cbiAgICB0b29sdGlwQWNjZXNzb3I6IGFjY2Vzc29yLFxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBldmVudCBzaG91bGQgYmUgY29uc2lkZXJlZCBhbiBcImFsbCBkYXlcIiBldmVudCBhbmQgaWdub3JlIHRpbWUuXG4gICAgICogTXVzdCByZXNvbHZlIHRvIGEgYGJvb2xlYW5gIHZhbHVlLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBzdHJpbmcgfCAoZXZlbnQ6IE9iamVjdCkgPT4gYm9vbGVhblxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHR5cGUgeyhmdW5jfHN0cmluZyl9XG4gICAgICovXG4gICAgYWxsRGF5QWNjZXNzb3I6IGFjY2Vzc29yLFxuXG4gICAgLyoqXG4gICAgICogVGhlIHN0YXJ0IGRhdGUvdGltZSBvZiB0aGUgZXZlbnQuIE11c3QgcmVzb2x2ZSB0byBhIEphdmFTY3JpcHQgYERhdGVgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogc3RyaW5nIHwgKGV2ZW50OiBPYmplY3QpID0+IERhdGVcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEB0eXBlIHsoZnVuY3xzdHJpbmcpfVxuICAgICAqL1xuICAgIHN0YXJ0QWNjZXNzb3I6IGFjY2Vzc29yLFxuXG4gICAgLyoqXG4gICAgICogVGhlIGVuZCBkYXRlL3RpbWUgb2YgdGhlIGV2ZW50LiBNdXN0IHJlc29sdmUgdG8gYSBKYXZhU2NyaXB0IGBEYXRlYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIHN0cmluZyB8IChldmVudDogT2JqZWN0KSA9PiBEYXRlXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAdHlwZSB7KGZ1bmN8c3RyaW5nKX1cbiAgICAgKi9cbiAgICBlbmRBY2Nlc3NvcjogYWNjZXNzb3IsXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBpZCBvZiB0aGUgYHJlc291cmNlYCB0aGF0IHRoZSBldmVudCBpcyBhIG1lbWJlciBvZi4gVGhpc1xuICAgICAqIGlkIHNob3VsZCBtYXRjaCBhdCBsZWFzdCBvbmUgcmVzb3VyY2UgaW4gdGhlIGByZXNvdXJjZXNgIGFycmF5LlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBzdHJpbmcgfCAoZXZlbnQ6IE9iamVjdCkgPT4gRGF0ZVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHR5cGUgeyhmdW5jfHN0cmluZyl9XG4gICAgICovXG4gICAgcmVzb3VyY2VBY2Nlc3NvcjogYWNjZXNzb3IsXG5cbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiByZXNvdXJjZSBvYmplY3RzIHRoYXQgbWFwIGV2ZW50cyB0byBhIHNwZWNpZmljIHJlc291cmNlLlxuICAgICAqIFJlc291cmNlIG9iamVjdHMsIGxpa2UgZXZlbnRzLCBjYW4gYmUgYW55IHNoYXBlIG9yIGhhdmUgYW55IHByb3BlcnRpZXMsXG4gICAgICogYnV0IHNob3VsZCBiZSB1bmlxdWx5IGlkZW50aWZpYWJsZSB2aWEgdGhlIGByZXNvdXJjZUlkQWNjZXNzb3JgLCBhc1xuICAgICAqIHdlbGwgYXMgYSBcInRpdGxlXCIgb3IgbmFtZSBhcyBwcm92aWRlZCBieSB0aGUgYHJlc291cmNlVGl0bGVBY2Nlc3NvcmAgcHJvcC5cbiAgICAgKi9cbiAgICByZXNvdXJjZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vYmplY3QpLFxuXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgYSB1bmlxdWUgaWRlbnRpZmllciwgb3IgYW4gYXJyYXkgb2YgdW5pcXVlIGlkZW50aWZpZXJzLCBmb3IgZWFjaCByZXNvdXJjZSBpbiB0aGUgYHJlc291cmNlc2AgYXJyYXlcbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogc3RyaW5nIHwgKHJlc291cmNlOiBPYmplY3QpID0+IGFueVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHR5cGUgeyhmdW5jfHN0cmluZyl9XG4gICAgICovXG4gICAgcmVzb3VyY2VJZEFjY2Vzc29yOiBhY2Nlc3NvcixcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIGEgaHVtYW4gcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJlc291cmNlIG9iamVjdCwgdXNlZCBpbiBoZWFkZXJzLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBzdHJpbmcgfCAocmVzb3VyY2U6IE9iamVjdCkgPT4gYW55XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAdHlwZSB7KGZ1bmN8c3RyaW5nKX1cbiAgICAgKi9cbiAgICByZXNvdXJjZVRpdGxlQWNjZXNzb3I6IGFjY2Vzc29yLFxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyB0aGUgY3VycmVudCBkYXRlL3RpbWUgd2hpY2ggaXMgaGlnaGxpZ2h0ZWQgaW4gdGhlIHZpZXdzLlxuICAgICAqXG4gICAgICogVGhlIHZhbHVlIGFmZmVjdHMgd2hpY2ggZGF5IGlzIHNoYWRlZCBhbmQgd2hpY2ggdGltZSBpcyBzaG93biBhc1xuICAgICAqIHRoZSBjdXJyZW50IHRpbWUuIEl0IGFsc28gYWZmZWN0cyB0aGUgZGF0ZSB1c2VkIGJ5IHRoZSBUb2RheSBidXR0b24gaW5cbiAgICAgKiB0aGUgdG9vbGJhci5cbiAgICAgKlxuICAgICAqIFByb3ZpZGluZyBhIHZhbHVlIGhlcmUgY2FuIGJlIHVzZWZ1bCB3aGVuIHlvdSBhcmUgaW1wbGVtZW50aW5nIHRpbWUgem9uZXNcbiAgICAgKiB1c2luZyB0aGUgYHN0YXJ0QWNjZXNzb3JgIGFuZCBgZW5kQWNjZXNzb3JgIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7ZnVuY31cbiAgICAgKiBAZGVmYXVsdCAoKSA9PiBuZXcgRGF0ZSgpXG4gICAgICovXG4gICAgZ2V0Tm93OiBQcm9wVHlwZXMuZnVuYyxcblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIGBkYXRlYCB2YWx1ZSBjaGFuZ2VzLlxuICAgICAqXG4gICAgICogQGNvbnRyb2xsYWJsZSBkYXRlXG4gICAgICovXG4gICAgb25OYXZpZ2F0ZTogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayBmaXJlZCB3aGVuIHRoZSBgdmlld2AgdmFsdWUgY2hhbmdlcy5cbiAgICAgKlxuICAgICAqIEBjb250cm9sbGFibGUgdmlld1xuICAgICAqL1xuICAgIG9uVmlldzogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayBmaXJlZCB3aGVuIGRhdGUgaGVhZGVyLCBvciB0aGUgdHJ1bmNhdGVkIGV2ZW50cyBsaW5rcyBhcmUgY2xpY2tlZFxuICAgICAqXG4gICAgICovXG4gICAgb25EcmlsbERvd246IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIChkYXRlczogRGF0ZVtdIHwgeyBzdGFydDogRGF0ZTsgZW5kOiBEYXRlIH0sIHZpZXc6ICdtb250aCd8J3dlZWsnfCd3b3JrX3dlZWsnfCdkYXknfCdhZ2VuZGEnfHVuZGVmaW5lZCkgPT4gdm9pZFxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgdmlzaWJsZSBkYXRlIHJhbmdlIGNoYW5nZXMuIFJldHVybnMgYW4gQXJyYXkgb2YgZGF0ZXNcbiAgICAgKiBvciBhbiBvYmplY3Qgd2l0aCBzdGFydCBhbmQgZW5kIGRhdGVzIGZvciBCVUlMVElOIHZpZXdzLiBPcHRpb25hbGx5IG5ldyBgdmlld2BcbiAgICAgKiB3aWxsIGJlIHJldHVybmVkIHdoZW4gY2FsbGJhY2sgY2FsbGVkIGFmdGVyIHZpZXcgY2hhbmdlLlxuICAgICAqXG4gICAgICogQ3VzdG9tIHZpZXdzIG1heSByZXR1cm4gc29tZXRoaW5nIGRpZmZlcmVudC5cbiAgICAgKi9cbiAgICBvblJhbmdlQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcblxuICAgIC8qKlxuICAgICAqIEEgY2FsbGJhY2sgZmlyZWQgd2hlbiBhIGRhdGUgc2VsZWN0aW9uIGlzIG1hZGUuIE9ubHkgZmlyZXMgd2hlbiBgc2VsZWN0YWJsZWAgaXMgYHRydWVgLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiAoXG4gICAgICogICBzbG90SW5mbzoge1xuICAgICAqICAgICBzdGFydDogRGF0ZSxcbiAgICAgKiAgICAgZW5kOiBEYXRlLFxuICAgICAqICAgICByZXNvdXJjZUlkOiAgKG51bWJlcnxzdHJpbmcpLFxuICAgICAqICAgICBzbG90czogQXJyYXk8RGF0ZT4sXG4gICAgICogICAgIGFjdGlvbjogXCJzZWxlY3RcIiB8IFwiY2xpY2tcIiB8IFwiZG91YmxlQ2xpY2tcIixcbiAgICAgKiAgICAgYm91bmRzOiA/eyAvLyBGb3IgXCJzZWxlY3RcIiBhY3Rpb25cbiAgICAgKiAgICAgICB4OiBudW1iZXIsXG4gICAgICogICAgICAgeTogbnVtYmVyLFxuICAgICAqICAgICAgIHRvcDogbnVtYmVyLFxuICAgICAqICAgICAgIHJpZ2h0OiBudW1iZXIsXG4gICAgICogICAgICAgbGVmdDogbnVtYmVyLFxuICAgICAqICAgICAgIGJvdHRvbTogbnVtYmVyLFxuICAgICAqICAgICB9LFxuICAgICAqICAgICBib3g6ID97IC8vIEZvciBcImNsaWNrXCIgb3IgXCJkb3VibGVDbGlja1wiIGFjdGlvbnNcbiAgICAgKiAgICAgICBjbGllbnRYOiBudW1iZXIsXG4gICAgICogICAgICAgY2xpZW50WTogbnVtYmVyLFxuICAgICAqICAgICAgIHg6IG51bWJlcixcbiAgICAgKiAgICAgICB5OiBudW1iZXIsXG4gICAgICogICAgIH0sXG4gICAgICogICB9XG4gICAgICogKSA9PiBhbnlcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBvblNlbGVjdFNsb3Q6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIHNlbGVjdGVkLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiAoZXZlbnQ6IE9iamVjdCwgZTogU3ludGhldGljRXZlbnQpID0+IGFueVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQGNvbnRyb2xsYWJsZSBzZWxlY3RlZFxuICAgICAqL1xuICAgIG9uU2VsZWN0RXZlbnQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGNsaWNrZWQgdHdpY2UuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIChldmVudDogT2JqZWN0LCBlOiBTeW50aGV0aWNFdmVudCkgPT4gdm9pZFxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIG9uRG91YmxlQ2xpY2tFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayBmaXJlZCB3aGVuIGEgZm9jdXNlZCBjYWxlbmRhciBldmVudCByZWNlaXZlcyBhIGtleSBwcmVzcy5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogKGV2ZW50OiBPYmplY3QsIGU6IFN5bnRoZXRpY0V2ZW50KSA9PiB2b2lkXG4gICAgICogYGBgXG4gICAgICovXG4gICAgb25LZXlQcmVzc0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gZHJhZ2dpbmcgYSBzZWxlY3Rpb24gaW4gdGhlIFRpbWUgdmlld3MuXG4gICAgICpcbiAgICAgKiBSZXR1cm5pbmcgYGZhbHNlYCBmcm9tIHRoZSBoYW5kbGVyIHdpbGwgcHJldmVudCBhIHNlbGVjdGlvbi5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogKHJhbmdlOiB7IHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUsIHJlc291cmNlSWQ6IChudW1iZXJ8c3RyaW5nKSB9KSA9PiA/Ym9vbGVhblxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIG9uU2VsZWN0aW5nOiBQcm9wVHlwZXMuZnVuYyxcblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gYSAre2NvdW50fSBtb3JlIGlzIGNsaWNrZWRcbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogKGV2ZW50czogT2JqZWN0LCBkYXRlOiBEYXRlKSA9PiBhbnlcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBvblNob3dNb3JlOiBQcm9wVHlwZXMuZnVuYyxcblxuICAgIC8qKlxuICAgICAqIERpc3BsYXlzIGFsbCBldmVudHMgb24gdGhlIG1vbnRoIHZpZXcgaW5zdGVhZCBvZlxuICAgICAqIGhhdmluZyBzb21lIGhpZGRlbiBiZWhpbmQgK3tjb3VudH0gbW9yZS4gVGhpcyB3aWxsXG4gICAgICogY2F1c2UgdGhlIHJvd3MgaW4gdGhlIG1vbnRoIHZpZXcgdG8gYmUgc2Nyb2xsYWJsZSBpZlxuICAgICAqIHRoZSBudW1iZXIgb2YgZXZlbnRzIGV4Y2VlZCB0aGUgaGVpZ2h0IG9mIHRoZSByb3cuXG4gICAgICovXG4gICAgc2hvd0FsbEV2ZW50czogUHJvcFR5cGVzLmJvb2wsXG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2VsZWN0ZWQgZXZlbnQsIGlmIGFueS5cbiAgICAgKi9cbiAgICBzZWxlY3RlZDogUHJvcFR5cGVzLm9iamVjdCxcblxuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIGJ1aWx0LWluIHZpZXcgbmFtZXMgdG8gYWxsb3cgdGhlIGNhbGVuZGFyIHRvIGRpc3BsYXkuXG4gICAgICogYWNjZXB0cyBlaXRoZXIgYW4gYXJyYXkgb2YgYnVpbHRpbiB2aWV3IG5hbWVzLFxuICAgICAqXG4gICAgICogYGBganN4XG4gICAgICogdmlld3M9e1snbW9udGgnLCAnZGF5JywgJ2FnZW5kYSddfVxuICAgICAqIGBgYFxuICAgICAqIG9yIGFuIG9iamVjdCBoYXNoIG9mIHRoZSB2aWV3IG5hbWUgYW5kIHRoZSBjb21wb25lbnQgKG9yIGJvb2xlYW4gZm9yIGJ1aWx0aW4pLlxuICAgICAqXG4gICAgICogYGBganN4XG4gICAgICogdmlld3M9e3tcbiAgICAgKiAgIG1vbnRoOiB0cnVlLFxuICAgICAqICAgd2VlazogZmFsc2UsXG4gICAgICogICBteXdlZWs6IFdvcmtXZWVrVmlld0NvbXBvbmVudCxcbiAgICAgKiB9fVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQ3VzdG9tIHZpZXdzIGNhbiBiZSBhbnkgUmVhY3QgY29tcG9uZW50LCB0aGF0IGltcGxlbWVudHMgdGhlIGZvbGxvd2luZ1xuICAgICAqIGludGVyZmFjZTpcbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogaW50ZXJmYWNlIFZpZXcge1xuICAgICAqICAgc3RhdGljIHRpdGxlKGRhdGU6IERhdGUsIHsgZm9ybWF0czogRGF0ZUZvcm1hdFtdLCBjdWx0dXJlOiBzdHJpbmc/LCAuLi5wcm9wcyB9KTogc3RyaW5nXG4gICAgICogICBzdGF0aWMgbmF2aWdhdGUoZGF0ZTogRGF0ZSwgYWN0aW9uOiAnUFJFVicgfCAnTkVYVCcgfCAnREFURScpOiBEYXRlXG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHR5cGUgVmlld3MgKCdtb250aCd8J3dlZWsnfCd3b3JrX3dlZWsnfCdkYXknfCdhZ2VuZGEnKVxuICAgICAqIEBWaWV3XG4gICAgIFsnbW9udGgnLCAnd2VlaycsICdkYXknLCAnYWdlbmRhJ11cbiAgICAgKi9cbiAgICB2aWV3czogY29tcG9uZW50Vmlld3MsXG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGRyaWxsIGRvd24gc2hvdWxkIG9jY3VyIHdoZW4gY2xpY2tpbmcgb24gdGhlIFwiK194XyBtb3JlXCIgbGluay5cbiAgICAgKiBJZiBgcG9wdXBgIGlzIGZhbHNlLCBhbmQgYGRvU2hvd01vcmVEcmlsbERvd25gIGlzIHRydWUsIHRoZSBkcmlsbCBkb3duIHdpbGwgb2NjdXIgYXMgdXN1YWwuXG4gICAgICogSWYgYHBvcHVwYCBpcyBmYWxzZSwgYW5kIGBkb1Nob3dNb3JlRHJpbGxEb3duYCBpcyBmYWxzZSwgdGhlIGRyaWxsIGRvd24gd2lsbCBub3Qgb2NjdXIgYW5kIHRoZSBgb25TaG93TW9yZWAgZnVuY3Rpb24gd2lsbCB0cmlnZ2VyLlxuICAgICAqL1xuICAgIGRvU2hvd01vcmVEcmlsbERvd246IFByb3BUeXBlcy5ib29sLFxuXG4gICAgLyoqXG4gICAgICogVGhlIHN0cmluZyBuYW1lIG9mIHRoZSBkZXN0aW5hdGlvbiB2aWV3IGZvciBkcmlsbC1kb3duIGFjdGlvbnMsIHN1Y2hcbiAgICAgKiBhcyBjbGlja2luZyBhIGRhdGUgaGVhZGVyLCBvciB0aGUgdHJ1bmNhdGVkIGV2ZW50cyBsaW5rcy4gSWZcbiAgICAgKiBgZ2V0RHJpbGxkb3duVmlld2AgaXMgYWxzbyBzcGVjaWZpZWQgaXQgd2lsbCBiZSB1c2VkIGluc3RlYWQuXG4gICAgICpcbiAgICAgKiBTZXQgdG8gYG51bGxgIHRvIGRpc2FibGUgZHJpbGwtZG93biBhY3Rpb25zLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiA8Q2FsZW5kYXJcbiAgICAgKiAgIGRyaWxsZG93blZpZXc9XCJhZ2VuZGFcIlxuICAgICAqIC8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgZHJpbGxkb3duVmlldzogUHJvcFR5cGVzLnN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIGBkcmlsbGRvd25WaWV3YCwgYnV0IGFjY2VwdHMgYSBmdW5jdGlvblxuICAgICAqIHRoYXQgY2FuIHJldHVybiBhIHZpZXcgbmFtZS4gSXQncyB1c2VmdWwgZm9yIGN1c3RvbWl6aW5nIHRoZSBkcmlsbC1kb3duXG4gICAgICogYWN0aW9ucyBkZXBlbmRpbmcgb24gdGhlIHRhcmdldCBkYXRlIGFuZCB0cmlnZ2VyaW5nIHZpZXcuXG4gICAgICpcbiAgICAgKiBSZXR1cm4gYG51bGxgIHRvIGRpc2FibGUgZHJpbGwtZG93biBhY3Rpb25zLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiA8Q2FsZW5kYXJcbiAgICAgKiAgIGdldERyaWxsZG93blZpZXc9eyh0YXJnZXREYXRlLCBjdXJyZW50Vmlld05hbWUsIGNvbmZpZ3VyZWRWaWV3TmFtZXMpID0+XG4gICAgICogICAgIGlmIChjdXJyZW50Vmlld05hbWUgPT09ICdtb250aCcgJiYgY29uZmlndXJlZFZpZXdOYW1lcy5pbmNsdWRlcygnd2VlaycpKVxuICAgICAqICAgICAgIHJldHVybiAnd2VlaydcbiAgICAgKlxuICAgICAqICAgICByZXR1cm4gbnVsbDtcbiAgICAgKiAgIH19XG4gICAgICogLz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBnZXREcmlsbGRvd25WaWV3OiBQcm9wVHlwZXMuZnVuYyxcblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgdGhlIGVuZCBkYXRlIGZyb20gZGF0ZSBwcm9wIGluIHRoZSBhZ2VuZGEgdmlld1xuICAgICAqIGRhdGUgcHJvcCArIGxlbmd0aCAoaW4gbnVtYmVyIG9mIGRheXMpID0gZW5kIGRhdGVcbiAgICAgKi9cbiAgICBsZW5ndGg6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRvb2xiYXIgaXMgZGlzcGxheWVkXG4gICAgICovXG4gICAgdG9vbGJhcjogUHJvcFR5cGVzLmJvb2wsXG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRydW5jYXRlZCBldmVudHMgaW4gYW4gb3ZlcmxheSB3aGVuIHlvdSBjbGljayB0aGUgXCIrX3hfIG1vcmVcIiBsaW5rLlxuICAgICAqL1xuICAgIHBvcHVwOiBQcm9wVHlwZXMuYm9vbCxcblxuICAgIC8qKlxuICAgICAqIERpc3RhbmNlIGluIHBpeGVscywgZnJvbSB0aGUgZWRnZXMgb2YgdGhlIHZpZXdwb3J0LCB0aGUgXCJzaG93IG1vcmVcIiBvdmVybGF5IHNob3VsZCBiZSBwb3NpdGlvbmVkLlxuICAgICAqXG4gICAgICogYGBganN4XG4gICAgICogPENhbGVuZGFyIHBvcHVwT2Zmc2V0PXszMH0vPlxuICAgICAqIDxDYWxlbmRhciBwb3B1cE9mZnNldD17e3g6IDMwLCB5OiAyMH19Lz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwb3B1cE9mZnNldDogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgICBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgUHJvcFR5cGVzLnNoYXBlKHsgeDogUHJvcFR5cGVzLm51bWJlciwgeTogUHJvcFR5cGVzLm51bWJlciB9KSxcbiAgICBdKSxcblxuICAgIC8qKlxuICAgICAqIEFsbG93cyBtb3VzZSBzZWxlY3Rpb24gb2YgcmFuZ2VzIG9mIGRhdGVzL3RpbWVzLlxuICAgICAqXG4gICAgICogVGhlICdpZ25vcmVFdmVudHMnIG9wdGlvbiBwcmV2ZW50cyBzZWxlY3Rpb24gY29kZSBmcm9tIHJ1bm5pbmcgd2hlbiBhXG4gICAgICogZHJhZyBiZWdpbnMgb3ZlciBhbiBldmVudC4gVXNlZnVsIHdoZW4geW91IHdhbnQgY3VzdG9tIGV2ZW50IGNsaWNrIG9yIGRyYWdcbiAgICAgKiBsb2dpY1xuICAgICAqL1xuICAgIHNlbGVjdGFibGU6IFByb3BUeXBlcy5vbmVPZihbdHJ1ZSwgZmFsc2UsICdpZ25vcmVFdmVudHMnXSksXG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhlIHVzZXIgbXVzdCBwcmVzcyBhbmQgaG9sZCBvbiB0aGUgc2NyZWVuIGZvciBhIHRvdWNoXG4gICAgICogdG8gYmUgY29uc2lkZXJlZCBhIFwibG9uZyBwcmVzcy5cIiBMb25nIHByZXNzZXMgYXJlIHVzZWQgZm9yIHRpbWUgc2xvdCBzZWxlY3Rpb24gb24gdG91Y2hcbiAgICAgKiBkZXZpY2VzLlxuICAgICAqXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKiBAZGVmYXVsdCAyNTBcbiAgICAgKi9cbiAgICBsb25nUHJlc3NUaHJlc2hvbGQ6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHRoZSBzZWxlY3RhYmxlIHRpbWUgaW5jcmVtZW50cyBpbiB3ZWVrIGFuZCBkYXkgdmlld3MsIGluIG1pbnV0ZXMuXG4gICAgICovXG4gICAgc3RlcDogUHJvcFR5cGVzLm51bWJlcixcblxuICAgIC8qKlxuICAgICAqIFRoZSBudW1iZXIgb2Ygc2xvdHMgcGVyIFwic2VjdGlvblwiIGluIHRoZSB0aW1lIGdyaWQgdmlld3MuIEFkanVzdCB3aXRoIGBzdGVwYFxuICAgICAqIHRvIGNoYW5nZSB0aGUgZGVmYXVsdCBvZiAxIGhvdXIgbG9uZyBncm91cHMsIHdpdGggMzAgbWludXRlIHNsb3RzLlxuICAgICAqL1xuICAgIHRpbWVzbG90czogUHJvcFR5cGVzLm51bWJlcixcblxuICAgIC8qKlxuICAgICAqU3dpdGNoIHRoZSBjYWxlbmRhciB0byBhIGByaWdodC10by1sZWZ0YCByZWFkIGRpcmVjdGlvbi5cbiAgICAgKi9cbiAgICBydGw6IFByb3BUeXBlcy5ib29sLFxuXG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxseSBwcm92aWRlIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIG9iamVjdCBvZiBjbGFzc05hbWUgb3Igc3R5bGUgcHJvcHNcbiAgICAgKiB0byBiZSBhcHBsaWVkIHRvIHRoZSB0aGUgZXZlbnQgbm9kZS5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogKFxuICAgICAqIFx0ZXZlbnQ6IE9iamVjdCxcbiAgICAgKiBcdHN0YXJ0OiBEYXRlLFxuICAgICAqIFx0ZW5kOiBEYXRlLFxuICAgICAqIFx0aXNTZWxlY3RlZDogYm9vbGVhblxuICAgICAqICkgPT4geyBjbGFzc05hbWU/OiBzdHJpbmcsIHN0eWxlPzogT2JqZWN0IH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBldmVudFByb3BHZXR0ZXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxseSBwcm92aWRlIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIG9iamVjdCBvZiBjbGFzc05hbWUgb3Igc3R5bGUgcHJvcHNcbiAgICAgKiB0byBiZSBhcHBsaWVkIHRvIHRoZSB0aW1lLXNsb3Qgbm9kZS4gQ2F1dGlvbiEgU3R5bGVzIHRoYXQgY2hhbmdlIGxheW91dCBvclxuICAgICAqIHBvc2l0aW9uIG1heSBicmVhayB0aGUgY2FsZW5kYXIgaW4gdW5leHBlY3RlZCB3YXlzLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiAoZGF0ZTogRGF0ZSwgcmVzb3VyY2VJZDogKG51bWJlcnxzdHJpbmcpKSA9PiB7IGNsYXNzTmFtZT86IHN0cmluZywgc3R5bGU/OiBPYmplY3QgfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHNsb3RQcm9wR2V0dGVyOiBQcm9wVHlwZXMuZnVuYyxcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsbHkgcHJvdmlkZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBvYmplY3Qgb2YgcHJvcHMgdG8gYmUgYXBwbGllZFxuICAgICAqIHRvIHRoZSB0aW1lLXNsb3QgZ3JvdXAgbm9kZS4gVXNlZnVsIHRvIGR5bmFtaWNhbGx5IGNoYW5nZSB0aGUgc2l6aW5nIG9mIHRpbWUgbm9kZXMuXG4gICAgICogYGBganNcbiAgICAgKiAoZ3JvdXA6IERhdGVbXSkgPT4geyBzdHlsZT86IE9iamVjdCB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgc2xvdEdyb3VwUHJvcEdldHRlcjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25hbGx5IHByb3ZpZGUgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gb2JqZWN0IG9mIGNsYXNzTmFtZSBvciBzdHlsZSBwcm9wc1xuICAgICAqIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHRoZSBkYXkgYmFja2dyb3VuZC4gQ2F1dGlvbiEgU3R5bGVzIHRoYXQgY2hhbmdlIGxheW91dCBvclxuICAgICAqIHBvc2l0aW9uIG1heSBicmVhayB0aGUgY2FsZW5kYXIgaW4gdW5leHBlY3RlZCB3YXlzLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiAoZGF0ZTogRGF0ZSkgPT4geyBjbGFzc05hbWU/OiBzdHJpbmcsIHN0eWxlPzogT2JqZWN0IH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBkYXlQcm9wR2V0dGVyOiBQcm9wVHlwZXMuZnVuYyxcblxuICAgIC8qKlxuICAgICAqIFN1cHBvcnQgdG8gc2hvdyBtdWx0aS1kYXkgZXZlbnRzIHdpdGggc3BlY2lmaWMgc3RhcnQgYW5kIGVuZCB0aW1lcyBpbiB0aGVcbiAgICAgKiBtYWluIHRpbWUgZ3JpZCAocmF0aGVyIHRoYW4gaW4gdGhlIGFsbCBkYXkgaGVhZGVyKS5cbiAgICAgKlxuICAgICAqICoqTm90ZTogVGhpcyBtYXkgY2F1c2UgY2FsZW5kYXJzIHdpdGggc2V2ZXJhbCBldmVudHMgdG8gbG9vayB2ZXJ5IGJ1c3kgaW5cbiAgICAgKiB0aGUgd2VlayBhbmQgZGF5IHZpZXdzLioqXG4gICAgICovXG4gICAgc2hvd011bHRpRGF5VGltZXM6IFByb3BUeXBlcy5ib29sLFxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBhIG1heGltdW0gYW1vdW50IG9mIHJvd3Mgb2YgZXZlbnRzIHRvIGRpc3BsYXkgaW4gdGhlIGFsbCBkYXlcbiAgICAgKiBzZWN0aW9uIGZvciBXZWVrIGFuZCBEYXkgdmlld3MsIHdpbGwgZGlzcGxheSBgc2hvd01vcmVgIGJ1dHRvbiBpZlxuICAgICAqIGV2ZW50cyBleGNlZGUgdGhpcyBudW1iZXIuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byBgSW5maW5pdHlgXG4gICAgICovXG4gICAgYWxsRGF5TWF4Um93czogUHJvcFR5cGVzLm51bWJlcixcblxuICAgIC8qKlxuICAgICAqIENvbnN0cmFpbnMgdGhlIG1pbmltdW0gX3RpbWVfIG9mIHRoZSBEYXkgYW5kIFdlZWsgdmlld3MuXG4gICAgICovXG4gICAgbWluOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcblxuICAgIC8qKlxuICAgICAqIENvbnN0cmFpbnMgdGhlIG1heGltdW0gX3RpbWVfIG9mIHRoZSBEYXkgYW5kIFdlZWsgdmlld3MuXG4gICAgICovXG4gICAgbWF4OiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgaG93IGZhciBkb3duIHRoZSBzY3JvbGwgcGFuZSBpcyBpbml0aWFsbHkgc2Nyb2xsZWQgZG93bi5cbiAgICAgKi9cbiAgICBzY3JvbGxUb1RpbWU6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzY3JvbGwgcGFuZSBpcyBhdXRvbWF0aWNhbGx5IHNjcm9sbGVkIGRvd24gb3Igbm90LlxuICAgICAqL1xuICAgIGVuYWJsZUF1dG9TY3JvbGw6IFByb3BUeXBlcy5ib29sLFxuXG4gICAgLyoqXG4gICAgICogU3BlY2lmeSBhIHNwZWNpZmljIGN1bHR1cmUgY29kZSBmb3IgdGhlIENhbGVuZGFyLlxuICAgICAqXG4gICAgICogKipOb3RlOiBpdCdzIGdlbmVyYWxseSBiZXR0ZXIgdG8gaGFuZGxlIHRoaXMgZ2xvYmFsbHkgdmlhIHlvdXIgaTE4biBsaWJyYXJ5LioqXG4gICAgICovXG4gICAgY3VsdHVyZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIExvY2FsaXplciBzcGVjaWZpYyBmb3JtYXRzLCB0ZWxsIHRoZSBDYWxlbmRhciBob3cgdG8gZm9ybWF0IGFuZCBkaXNwbGF5IGRhdGVzLlxuICAgICAqXG4gICAgICogYGZvcm1hdGAgdHlwZXMgYXJlIGRlcGVuZGVudCBvbiB0aGUgY29uZmlndXJlZCBsb2NhbGl6ZXI7IE1vbWVudCwgTHV4b24gYW5kIEdsb2JhbGl6ZVxuICAgICAqIGFjY2VwdCBzdHJpbmdzIG9mIHRva2VucyBhY2NvcmRpbmcgdG8gdGhlaXIgb3duIHNwZWNpZmljYXRpb24sIHN1Y2ggYXM6IGAnREQgbW0geXl5eSdgLlxuICAgICAqXG4gICAgICogYGBganN4XG4gICAgICogbGV0IGZvcm1hdHMgPSB7XG4gICAgICogICBkYXRlRm9ybWF0OiAnZGQnLFxuICAgICAqXG4gICAgICogICBkYXlGb3JtYXQ6IChkYXRlLCAsIGxvY2FsaXplcikgPT5cbiAgICAgKiAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnREREJywgY3VsdHVyZSksXG4gICAgICpcbiAgICAgKiAgIGRheVJhbmdlSGVhZGVyRm9ybWF0OiAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cbiAgICAgKiAgICAgbG9jYWxpemVyLmZvcm1hdChzdGFydCwgeyBkYXRlOiAnc2hvcnQnIH0sIGN1bHR1cmUpICsgJyDigJMgJyArXG4gICAgICogICAgIGxvY2FsaXplci5mb3JtYXQoZW5kLCB7IGRhdGU6ICdzaG9ydCcgfSwgY3VsdHVyZSlcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiA8Q2FsZW5kYXIgZm9ybWF0cz17Zm9ybWF0c30gLz5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEFsbCBsb2NhbGl6ZXJzIGFjY2VwdCBhIGZ1bmN0aW9uIG9mXG4gICAgICogdGhlIGZvcm0gYChkYXRlOiBEYXRlLCBjdWx0dXJlOiA/c3RyaW5nLCBsb2NhbGl6ZXI6IExvY2FsaXplcikgLT4gc3RyaW5nYFxuICAgICAqL1xuICAgIGZvcm1hdHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdCBmb3IgdGhlIGRheSBvZiB0aGUgbW9udGggaGVhZGluZyBpbiB0aGUgTW9udGggdmlldy5cbiAgICAgICAqIGUuZy4gXCIwMVwiLCBcIjAyXCIsIFwiMDNcIiwgZXRjXG4gICAgICAgKi9cbiAgICAgIGRhdGVGb3JtYXQsXG5cbiAgICAgIC8qKlxuICAgICAgICogQSBkYXkgb2YgdGhlIHdlZWsgZm9ybWF0IGZvciBXZWVrIGFuZCBEYXkgaGVhZGluZ3MsXG4gICAgICAgKiBlLmcuIFwiV2VkIDAxLzA0XCJcbiAgICAgICAqXG4gICAgICAgKi9cbiAgICAgIGRheUZvcm1hdDogZGF0ZUZvcm1hdCxcblxuICAgICAgLyoqXG4gICAgICAgKiBXZWVrIGRheSBuYW1lIGZvcm1hdCBmb3IgdGhlIE1vbnRoIHdlZWsgZGF5IGhlYWRpbmdzLFxuICAgICAgICogZS5nOiBcIlN1blwiLCBcIk1vblwiLCBcIlR1ZVwiLCBldGNcbiAgICAgICAqXG4gICAgICAgKi9cbiAgICAgIHdlZWtkYXlGb3JtYXQ6IGRhdGVGb3JtYXQsXG5cbiAgICAgIC8qKlxuICAgICAgICogVGhlIHRpbWVzdGFtcCBjZWxsIGZvcm1hdHMgaW4gV2VlayBhbmQgVGltZSB2aWV3cywgZS5nLiBcIjQ6MDAgQU1cIlxuICAgICAgICovXG4gICAgICB0aW1lR3V0dGVyRm9ybWF0OiBkYXRlRm9ybWF0LFxuXG4gICAgICAvKipcbiAgICAgICAqIFRvb2xiYXIgaGVhZGVyIGZvcm1hdCBmb3IgdGhlIE1vbnRoIHZpZXcsIGUuZyBcIjIwMTUgQXByaWxcIlxuICAgICAgICpcbiAgICAgICAqL1xuICAgICAgbW9udGhIZWFkZXJGb3JtYXQ6IGRhdGVGb3JtYXQsXG5cbiAgICAgIC8qKlxuICAgICAgICogVG9vbGJhciBoZWFkZXIgZm9ybWF0IGZvciB0aGUgV2VlayB2aWV3cywgZS5nLiBcIk1hciAyOSAtIEFwciAwNFwiXG4gICAgICAgKi9cbiAgICAgIGRheVJhbmdlSGVhZGVyRm9ybWF0OiBkYXRlUmFuZ2VGb3JtYXQsXG5cbiAgICAgIC8qKlxuICAgICAgICogVG9vbGJhciBoZWFkZXIgZm9ybWF0IGZvciB0aGUgRGF5IHZpZXcsIGUuZy4gXCJXZWRuZXNkYXkgQXByIDAxXCJcbiAgICAgICAqL1xuICAgICAgZGF5SGVhZGVyRm9ybWF0OiBkYXRlRm9ybWF0LFxuXG4gICAgICAvKipcbiAgICAgICAqIFRvb2xiYXIgaGVhZGVyIGZvcm1hdCBmb3IgdGhlIEFnZW5kYSB2aWV3LCBlLmcuIFwiNC8xLzIwMTUg4oCTIDUvMS8yMDE1XCJcbiAgICAgICAqL1xuICAgICAgYWdlbmRhSGVhZGVyRm9ybWF0OiBkYXRlUmFuZ2VGb3JtYXQsXG5cbiAgICAgIC8qKlxuICAgICAgICogQSB0aW1lIHJhbmdlIGZvcm1hdCBmb3Igc2VsZWN0aW5nIHRpbWUgc2xvdHMsIGUuZyBcIjg6MDBhbSDigJMgMjowMHBtXCJcbiAgICAgICAqL1xuICAgICAgc2VsZWN0UmFuZ2VGb3JtYXQ6IGRhdGVSYW5nZUZvcm1hdCxcblxuICAgICAgYWdlbmRhRGF0ZUZvcm1hdDogZGF0ZUZvcm1hdCxcbiAgICAgIGFnZW5kYVRpbWVGb3JtYXQ6IGRhdGVGb3JtYXQsXG4gICAgICBhZ2VuZGFUaW1lUmFuZ2VGb3JtYXQ6IGRhdGVSYW5nZUZvcm1hdCxcblxuICAgICAgLyoqXG4gICAgICAgKiBUaW1lIHJhbmdlIGRpc3BsYXllZCBvbiBldmVudHMuXG4gICAgICAgKi9cbiAgICAgIGV2ZW50VGltZVJhbmdlRm9ybWF0OiBkYXRlUmFuZ2VGb3JtYXQsXG5cbiAgICAgIC8qKlxuICAgICAgICogQW4gb3B0aW9uYWwgZXZlbnQgdGltZSByYW5nZSBmb3IgZXZlbnRzIHRoYXQgY29udGludWUgb250byBhbm90aGVyIGRheVxuICAgICAgICovXG4gICAgICBldmVudFRpbWVSYW5nZVN0YXJ0Rm9ybWF0OiBkYXRlRm9ybWF0LFxuXG4gICAgICAvKipcbiAgICAgICAqIEFuIG9wdGlvbmFsIGV2ZW50IHRpbWUgcmFuZ2UgZm9yIGV2ZW50cyB0aGF0IGNvbnRpbnVlIGZyb20gYW5vdGhlciBkYXlcbiAgICAgICAqL1xuICAgICAgZXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQ6IGRhdGVGb3JtYXQsXG4gICAgfSksXG5cbiAgICAvKipcbiAgICAgKiBDdXN0b21pemUgaG93IGRpZmZlcmVudCBzZWN0aW9ucyBvZiB0aGUgY2FsZW5kYXIgcmVuZGVyIGJ5IHByb3ZpZGluZyBjdXN0b20gQ29tcG9uZW50cy5cbiAgICAgKiBJbiBwYXJ0aWN1bGFyIHRoZSBgRXZlbnRgIGNvbXBvbmVudCBjYW4gYmUgc3BlY2lmaWVkIGZvciB0aGUgZW50aXJlIGNhbGVuZGFyLCBvciB5b3UgY2FuXG4gICAgICogcHJvdmlkZSBhbiBpbmRpdmlkdWFsIGNvbXBvbmVudCBmb3IgZWFjaCB2aWV3IHR5cGUuXG4gICAgICpcbiAgICAgKiBgYGBqc3hcbiAgICAgKiBsZXQgY29tcG9uZW50cyA9IHtcbiAgICAgKiAgIGV2ZW50OiBNeUV2ZW50LCAvLyB1c2VkIGJ5IGVhY2ggdmlldyAoTW9udGgsIERheSwgV2VlaylcbiAgICAgKiAgIGV2ZW50V3JhcHBlcjogTXlFdmVudFdyYXBwZXIsXG4gICAgICogICBldmVudENvbnRhaW5lcldyYXBwZXI6IE15RXZlbnRDb250YWluZXJXcmFwcGVyLFxuICAgICAqICAgZGF0ZUNlbGxXcmFwcGVyOiBNeURhdGVDZWxsV3JhcHBlcixcbiAgICAgKiAgIHRpbWVTbG90V3JhcHBlcjogTXlUaW1lU2xvdFdyYXBwZXIsXG4gICAgICogICB0aW1lR3V0dGVySGVhZGVyOiBNeVRpbWVHdXR0ZXJXcmFwcGVyLFxuICAgICAqICAgdGltZUd1dHRlcldyYXBwZXI6IE15VGltZUd1dHRlcldyYXBwZXIsXG4gICAgICogICByZXNvdXJjZUhlYWRlcjogTXlSZXNvdXJjZUhlYWRlcixcbiAgICAgKiAgIHRvb2xiYXI6IE15VG9vbGJhcixcbiAgICAgKiAgIGFnZW5kYToge1xuICAgICAqICAgXHQgZXZlbnQ6IE15QWdlbmRhRXZlbnQsIC8vIHdpdGggdGhlIGFnZW5kYSB2aWV3IHVzZSBhIGRpZmZlcmVudCBjb21wb25lbnQgdG8gcmVuZGVyIGV2ZW50c1xuICAgICAqICAgICB0aW1lOiBNeUFnZW5kYVRpbWUsXG4gICAgICogICAgIGRhdGU6IE15QWdlbmRhRGF0ZSxcbiAgICAgKiAgIH0sXG4gICAgICogICBkYXk6IHtcbiAgICAgKiAgICAgaGVhZGVyOiBNeURheUhlYWRlcixcbiAgICAgKiAgICAgZXZlbnQ6IE15RGF5RXZlbnQsXG4gICAgICogICB9LFxuICAgICAqICAgd2Vlazoge1xuICAgICAqICAgICBoZWFkZXI6IE15V2Vla0hlYWRlcixcbiAgICAgKiAgICAgZXZlbnQ6IE15V2Vla0V2ZW50LFxuICAgICAqICAgfSxcbiAgICAgKiAgIG1vbnRoOiB7XG4gICAgICogICAgIGhlYWRlcjogTXlNb250aEhlYWRlcixcbiAgICAgKiAgICAgZGF0ZUhlYWRlcjogTXlNb250aERhdGVIZWFkZXIsXG4gICAgICogICAgIGV2ZW50OiBNeU1vbnRoRXZlbnQsXG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqIDxDYWxlbmRhciBjb21wb25lbnRzPXtjb21wb25lbnRzfSAvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGNvbXBvbmVudHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBldmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgICAgZXZlbnRXcmFwcGVyOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgICBldmVudENvbnRhaW5lcldyYXBwZXI6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICAgIGRhdGVDZWxsV3JhcHBlcjogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgICAgZGF5Q29sdW1uV3JhcHBlcjogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgICAgdGltZVNsb3RXcmFwcGVyOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgICB0aW1lR3V0dGVySGVhZGVyOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgICB0aW1lR3V0dGVyV3JhcHBlcjogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgICAgcmVzb3VyY2VIZWFkZXI6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcblxuICAgICAgdG9vbGJhcjogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuXG4gICAgICBhZ2VuZGE6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgIGRhdGU6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICAgICAgdGltZTogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgICAgICBldmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgICAgfSksXG5cbiAgICAgIGRheTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgaGVhZGVyOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgICAgIGV2ZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgICB9KSxcbiAgICAgIHdlZWs6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgIGhlYWRlcjogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgICAgICBldmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgICAgfSksXG4gICAgICBtb250aDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgaGVhZGVyOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgICAgIGRhdGVIZWFkZXI6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICAgICAgZXZlbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICAgIH0pLFxuICAgIH0pLFxuXG4gICAgLyoqXG4gICAgICogU3RyaW5nIG1lc3NhZ2VzIHVzZWQgdGhyb3VnaG91dCB0aGUgY29tcG9uZW50LCBvdmVycmlkZSB0byBwcm92aWRlIGxvY2FsaXphdGlvbnNcbiAgICAgKlxuICAgICAqIGBgYGpzeFxuICAgICAqIGNvbnN0IG1lc3NhZ2VzID0ge1xuICAgICAqICAgZGF0ZTogJ0RhdGUnLFxuICAgICAqICAgdGltZTogJ1RpbWUnLFxuICAgICAqICAgZXZlbnQ6ICdFdmVudCcsXG4gICAgICogICBhbGxEYXk6ICdBbGwgRGF5JyxcbiAgICAgKiAgIHdlZWs6ICdXZWVrJyxcbiAgICAgKiAgIHdvcmtfd2VlazogJ1dvcmsgV2VlaycsXG4gICAgICogICBkYXk6ICdEYXknLFxuICAgICAqICAgbW9udGg6ICdNb250aCcsXG4gICAgICogICBwcmV2aW91czogJ0JhY2snLFxuICAgICAqICAgbmV4dDogJ05leHQnLFxuICAgICAqICAgeWVzdGVyZGF5OiAnWWVzdGVyZGF5JyxcbiAgICAgKiAgIHRvbW9ycm93OiAnVG9tb3Jyb3cnLFxuICAgICAqICAgdG9kYXk6ICdUb2RheScsXG4gICAgICogICBhZ2VuZGE6ICdBZ2VuZGEnLFxuICAgICAqXG4gICAgICogICBub0V2ZW50c0luUmFuZ2U6ICdUaGVyZSBhcmUgbm8gZXZlbnRzIGluIHRoaXMgcmFuZ2UuJyxcbiAgICAgKlxuICAgICAqICAgc2hvd01vcmU6IHRvdGFsID0+IGArICR7dG90YWx9IG1vcmVgLFxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIDxDYWxlbmRhciBtZXNzYWdlcz17bWVzc2FnZXN9IC8+XG4gICAgICogYGBgXG4gICAgICovXG5cbiAgICBtZXNzYWdlczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGFsbERheTogUHJvcFR5cGVzLm5vZGUsXG4gICAgICBwcmV2aW91czogUHJvcFR5cGVzLm5vZGUsXG4gICAgICBuZXh0OiBQcm9wVHlwZXMubm9kZSxcbiAgICAgIHRvZGF5OiBQcm9wVHlwZXMubm9kZSxcbiAgICAgIG1vbnRoOiBQcm9wVHlwZXMubm9kZSxcbiAgICAgIHdlZWs6IFByb3BUeXBlcy5ub2RlLFxuICAgICAgZGF5OiBQcm9wVHlwZXMubm9kZSxcbiAgICAgIGFnZW5kYTogUHJvcFR5cGVzLm5vZGUsXG4gICAgICBkYXRlOiBQcm9wVHlwZXMubm9kZSxcbiAgICAgIHRpbWU6IFByb3BUeXBlcy5ub2RlLFxuICAgICAgZXZlbnQ6IFByb3BUeXBlcy5ub2RlLFxuICAgICAgbm9FdmVudHNJblJhbmdlOiBQcm9wVHlwZXMubm9kZSxcbiAgICAgIHNob3dNb3JlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICB9KSxcblxuICAgIC8qKlxuICAgICAqIEEgZGF5IGV2ZW50IGxheW91dChhcnJhbmdlbWVudCkgYWxnb3JpdGhtLlxuICAgICAqXG4gICAgICogYG92ZXJsYXBgIGFsbG93cyBldmVudHMgdG8gYmUgb3ZlcmxhcHBlZC5cbiAgICAgKlxuICAgICAqIGBuby1vdmVybGFwYCByZXNpemVzIGV2ZW50cyB0byBhdm9pZCBvdmVybGFwLlxuICAgICAqXG4gICAgICogb3IgY3VzdG9tIGBGdW5jdGlvbihldmVudHMsIG1pbmltdW1TdGFydERpZmZlcmVuY2UsIHNsb3RNZXRyaWNzLCBhY2Nlc3NvcnMpYFxuICAgICAqL1xuICAgIGRheUxheW91dEFsZ29yaXRobTogRGF5TGF5b3V0QWxnb3JpdGhtUHJvcFR5cGUsXG4gIH1cblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGV2ZW50czogW10sXG4gICAgYmFja2dyb3VuZEV2ZW50czogW10sXG4gICAgZWxlbWVudFByb3BzOiB7fSxcbiAgICBwb3B1cDogZmFsc2UsXG4gICAgdG9vbGJhcjogdHJ1ZSxcbiAgICB2aWV3OiB2aWV3cy5NT05USCxcbiAgICB2aWV3czogW3ZpZXdzLk1PTlRILCB2aWV3cy5XRUVLLCB2aWV3cy5EQVksIHZpZXdzLkFHRU5EQV0sXG4gICAgc3RlcDogMzAsXG4gICAgbGVuZ3RoOiAzMCxcbiAgICBhbGxEYXlNYXhSb3dzOiBJbmZpbml0eSxcblxuICAgIGRvU2hvd01vcmVEcmlsbERvd246IHRydWUsXG4gICAgZHJpbGxkb3duVmlldzogdmlld3MuREFZLFxuXG4gICAgdGl0bGVBY2Nlc3NvcjogJ3RpdGxlJyxcbiAgICB0b29sdGlwQWNjZXNzb3I6ICd0aXRsZScsXG4gICAgYWxsRGF5QWNjZXNzb3I6ICdhbGxEYXknLFxuICAgIHN0YXJ0QWNjZXNzb3I6ICdzdGFydCcsXG4gICAgZW5kQWNjZXNzb3I6ICdlbmQnLFxuICAgIHJlc291cmNlQWNjZXNzb3I6ICdyZXNvdXJjZUlkJyxcblxuICAgIHJlc291cmNlSWRBY2Nlc3NvcjogJ2lkJyxcbiAgICByZXNvdXJjZVRpdGxlQWNjZXNzb3I6ICd0aXRsZScsXG5cbiAgICBsb25nUHJlc3NUaHJlc2hvbGQ6IDI1MCxcbiAgICBnZXROb3c6ICgpID0+IG5ldyBEYXRlKCksXG4gICAgZGF5TGF5b3V0QWxnb3JpdGhtOiAnb3ZlcmxhcCcsXG4gIH1cblxuICBjb25zdHJ1Y3RvciguLi5hcmdzKSB7XG4gICAgc3VwZXIoLi4uYXJncylcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBjb250ZXh0OiBDYWxlbmRhci5nZXRDb250ZXh0KHRoaXMucHJvcHMpLFxuICAgIH1cbiAgfVxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5leHRQcm9wcykge1xuICAgIHJldHVybiB7IGNvbnRleHQ6IENhbGVuZGFyLmdldENvbnRleHQobmV4dFByb3BzKSB9XG4gIH1cblxuICBzdGF0aWMgZ2V0Q29udGV4dCh7XG4gICAgc3RhcnRBY2Nlc3NvcixcbiAgICBlbmRBY2Nlc3NvcixcbiAgICBhbGxEYXlBY2Nlc3NvcixcbiAgICB0b29sdGlwQWNjZXNzb3IsXG4gICAgdGl0bGVBY2Nlc3NvcixcbiAgICByZXNvdXJjZUFjY2Vzc29yLFxuICAgIHJlc291cmNlSWRBY2Nlc3NvcixcbiAgICByZXNvdXJjZVRpdGxlQWNjZXNzb3IsXG4gICAgZXZlbnRQcm9wR2V0dGVyLFxuICAgIGJhY2tncm91bmRFdmVudFByb3BHZXR0ZXIsXG4gICAgc2xvdFByb3BHZXR0ZXIsXG4gICAgc2xvdEdyb3VwUHJvcEdldHRlcixcbiAgICBkYXlQcm9wR2V0dGVyLFxuICAgIHZpZXcsXG4gICAgdmlld3MsXG4gICAgbG9jYWxpemVyLFxuICAgIGN1bHR1cmUsXG4gICAgbWVzc2FnZXMgPSB7fSxcbiAgICBjb21wb25lbnRzID0ge30sXG4gICAgZm9ybWF0cyA9IHt9LFxuICB9KSB7XG4gICAgbGV0IG5hbWVzID0gdmlld05hbWVzKHZpZXdzKVxuICAgIGNvbnN0IG1zZ3MgPSBtZXNzYWdlKG1lc3NhZ2VzKVxuICAgIHJldHVybiB7XG4gICAgICB2aWV3TmFtZXM6IG5hbWVzLFxuICAgICAgbG9jYWxpemVyOiBtZXJnZVdpdGhEZWZhdWx0cyhsb2NhbGl6ZXIsIGN1bHR1cmUsIGZvcm1hdHMsIG1zZ3MpLFxuICAgICAgZ2V0dGVyczoge1xuICAgICAgICBldmVudFByb3A6ICguLi5hcmdzKSA9PlxuICAgICAgICAgIChldmVudFByb3BHZXR0ZXIgJiYgZXZlbnRQcm9wR2V0dGVyKC4uLmFyZ3MpKSB8fCB7fSxcbiAgICAgICAgYmFja2dyb3VuZEV2ZW50UHJvcDogKC4uLmFyZ3MpID0+XG4gICAgICAgICAgKGJhY2tncm91bmRFdmVudFByb3BHZXR0ZXIgJiYgYmFja2dyb3VuZEV2ZW50UHJvcEdldHRlciguLi5hcmdzKSkgfHxcbiAgICAgICAgICB7fSxcbiAgICAgICAgc2xvdFByb3A6ICguLi5hcmdzKSA9PlxuICAgICAgICAgIChzbG90UHJvcEdldHRlciAmJiBzbG90UHJvcEdldHRlciguLi5hcmdzKSkgfHwge30sXG4gICAgICAgIHNsb3RHcm91cFByb3A6ICguLi5hcmdzKSA9PlxuICAgICAgICAgIChzbG90R3JvdXBQcm9wR2V0dGVyICYmIHNsb3RHcm91cFByb3BHZXR0ZXIoLi4uYXJncykpIHx8IHt9LFxuICAgICAgICBkYXlQcm9wOiAoLi4uYXJncykgPT4gKGRheVByb3BHZXR0ZXIgJiYgZGF5UHJvcEdldHRlciguLi5hcmdzKSkgfHwge30sXG4gICAgICB9LFxuICAgICAgY29tcG9uZW50czogZGVmYXVsdHMoY29tcG9uZW50c1t2aWV3XSB8fCB7fSwgb21pdChjb21wb25lbnRzLCBuYW1lcyksIHtcbiAgICAgICAgZXZlbnRXcmFwcGVyOiBOb29wV3JhcHBlcixcbiAgICAgICAgYmFja2dyb3VuZEV2ZW50V3JhcHBlcjogTm9vcFdyYXBwZXIsXG4gICAgICAgIGV2ZW50Q29udGFpbmVyV3JhcHBlcjogTm9vcFdyYXBwZXIsXG4gICAgICAgIGRhdGVDZWxsV3JhcHBlcjogTm9vcFdyYXBwZXIsXG4gICAgICAgIHdlZWtXcmFwcGVyOiBOb29wV3JhcHBlcixcbiAgICAgICAgdGltZVNsb3RXcmFwcGVyOiBOb29wV3JhcHBlcixcbiAgICAgICAgdGltZUd1dHRlcldyYXBwZXI6IE5vb3BXcmFwcGVyLFxuICAgICAgfSksXG4gICAgICBhY2Nlc3NvcnM6IHtcbiAgICAgICAgc3RhcnQ6IHdyYXBBY2Nlc3NvcihzdGFydEFjY2Vzc29yKSxcbiAgICAgICAgZW5kOiB3cmFwQWNjZXNzb3IoZW5kQWNjZXNzb3IpLFxuICAgICAgICBhbGxEYXk6IHdyYXBBY2Nlc3NvcihhbGxEYXlBY2Nlc3NvciksXG4gICAgICAgIHRvb2x0aXA6IHdyYXBBY2Nlc3Nvcih0b29sdGlwQWNjZXNzb3IpLFxuICAgICAgICB0aXRsZTogd3JhcEFjY2Vzc29yKHRpdGxlQWNjZXNzb3IpLFxuICAgICAgICByZXNvdXJjZTogd3JhcEFjY2Vzc29yKHJlc291cmNlQWNjZXNzb3IpLFxuICAgICAgICByZXNvdXJjZUlkOiB3cmFwQWNjZXNzb3IocmVzb3VyY2VJZEFjY2Vzc29yKSxcbiAgICAgICAgcmVzb3VyY2VUaXRsZTogd3JhcEFjY2Vzc29yKHJlc291cmNlVGl0bGVBY2Nlc3NvciksXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIGdldFZpZXdzID0gKCkgPT4ge1xuICAgIGNvbnN0IHZpZXdzID0gdGhpcy5wcm9wcy52aWV3c1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmlld3MpKSB7XG4gICAgICByZXR1cm4gdHJhbnNmb3JtKHZpZXdzLCAob2JqLCBuYW1lKSA9PiAob2JqW25hbWVdID0gVklFV1NbbmFtZV0pLCB7fSlcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZpZXdzID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIG1hcFZhbHVlcyh2aWV3cywgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgICAgcmV0dXJuIFZJRVdTW2tleV1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gVklFV1NcbiAgfVxuXG4gIGdldFZpZXcgPSAoKSA9PiB7XG4gICAgY29uc3Qgdmlld3MgPSB0aGlzLmdldFZpZXdzKClcblxuICAgIHJldHVybiB2aWV3c1t0aGlzLnByb3BzLnZpZXddXG4gIH1cblxuICBnZXREcmlsbGRvd25WaWV3ID0gKGRhdGUpID0+IHtcbiAgICBjb25zdCB7IHZpZXcsIGRyaWxsZG93blZpZXcsIGdldERyaWxsZG93blZpZXcgfSA9IHRoaXMucHJvcHNcblxuICAgIGlmICghZ2V0RHJpbGxkb3duVmlldykgcmV0dXJuIGRyaWxsZG93blZpZXdcblxuICAgIHJldHVybiBnZXREcmlsbGRvd25WaWV3KGRhdGUsIHZpZXcsIE9iamVjdC5rZXlzKHRoaXMuZ2V0Vmlld3MoKSkpXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgbGV0IHtcbiAgICAgIHZpZXcsXG4gICAgICB0b29sYmFyLFxuICAgICAgZXZlbnRzLFxuICAgICAgYmFja2dyb3VuZEV2ZW50cyxcbiAgICAgIHN0eWxlLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgZWxlbWVudFByb3BzLFxuICAgICAgZGF0ZTogY3VycmVudCxcbiAgICAgIGdldE5vdyxcbiAgICAgIGxlbmd0aCxcbiAgICAgIHNob3dNdWx0aURheVRpbWVzLFxuICAgICAgb25TaG93TW9yZSxcbiAgICAgIGRvU2hvd01vcmVEcmlsbERvd24sXG4gICAgICBjb21wb25lbnRzOiBfMCxcbiAgICAgIGZvcm1hdHM6IF8xLFxuICAgICAgbWVzc2FnZXM6IF8yLFxuICAgICAgY3VsdHVyZTogXzMsXG4gICAgICAuLi5wcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICBjdXJyZW50ID0gY3VycmVudCB8fCBnZXROb3coKVxuXG4gICAgbGV0IFZpZXcgPSB0aGlzLmdldFZpZXcoKVxuICAgIGNvbnN0IHsgYWNjZXNzb3JzLCBjb21wb25lbnRzLCBnZXR0ZXJzLCBsb2NhbGl6ZXIsIHZpZXdOYW1lcyB9ID1cbiAgICAgIHRoaXMuc3RhdGUuY29udGV4dFxuXG4gICAgbGV0IENhbFRvb2xiYXIgPSBjb21wb25lbnRzLnRvb2xiYXIgfHwgVG9vbGJhclxuICAgIGNvbnN0IGxhYmVsID0gVmlldy50aXRsZShjdXJyZW50LCB7IGxvY2FsaXplciwgbGVuZ3RoIH0pXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICB7Li4uZWxlbWVudFByb3BzfVxuICAgICAgICBjbGFzc05hbWU9e2Nsc3goY2xhc3NOYW1lLCAncmJjLWNhbGVuZGFyJywgcHJvcHMucnRsICYmICdyYmMtcnRsJyl9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgID5cbiAgICAgICAge3Rvb2xiYXIgJiYgKFxuICAgICAgICAgIDxDYWxUb29sYmFyXG4gICAgICAgICAgICBkYXRlPXtjdXJyZW50fVxuICAgICAgICAgICAgdmlldz17dmlld31cbiAgICAgICAgICAgIHZpZXdzPXt2aWV3TmFtZXN9XG4gICAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgICBvblZpZXc9e3RoaXMuaGFuZGxlVmlld0NoYW5nZX1cbiAgICAgICAgICAgIG9uTmF2aWdhdGU9e3RoaXMuaGFuZGxlTmF2aWdhdGV9XG4gICAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8Vmlld1xuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICBldmVudHM9e2V2ZW50c31cbiAgICAgICAgICBiYWNrZ3JvdW5kRXZlbnRzPXtiYWNrZ3JvdW5kRXZlbnRzfVxuICAgICAgICAgIGRhdGU9e2N1cnJlbnR9XG4gICAgICAgICAgZ2V0Tm93PXtnZXROb3d9XG4gICAgICAgICAgbGVuZ3RoPXtsZW5ndGh9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgZ2V0dGVycz17Z2V0dGVyc31cbiAgICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICAgIGFjY2Vzc29ycz17YWNjZXNzb3JzfVxuICAgICAgICAgIHNob3dNdWx0aURheVRpbWVzPXtzaG93TXVsdGlEYXlUaW1lc31cbiAgICAgICAgICBnZXREcmlsbGRvd25WaWV3PXt0aGlzLmdldERyaWxsZG93blZpZXd9XG4gICAgICAgICAgb25OYXZpZ2F0ZT17dGhpcy5oYW5kbGVOYXZpZ2F0ZX1cbiAgICAgICAgICBvbkRyaWxsRG93bj17dGhpcy5oYW5kbGVEcmlsbERvd259XG4gICAgICAgICAgb25TZWxlY3RFdmVudD17dGhpcy5oYW5kbGVTZWxlY3RFdmVudH1cbiAgICAgICAgICBvbkRvdWJsZUNsaWNrRXZlbnQ9e3RoaXMuaGFuZGxlRG91YmxlQ2xpY2tFdmVudH1cbiAgICAgICAgICBvbktleVByZXNzRXZlbnQ9e3RoaXMuaGFuZGxlS2V5UHJlc3NFdmVudH1cbiAgICAgICAgICBvblNlbGVjdFNsb3Q9e3RoaXMuaGFuZGxlU2VsZWN0U2xvdH1cbiAgICAgICAgICBvblNob3dNb3JlPXtvblNob3dNb3JlfVxuICAgICAgICAgIGRvU2hvd01vcmVEcmlsbERvd249e2RvU2hvd01vcmVEcmlsbERvd259XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGRhdGVcbiAgICogQHBhcmFtIHZpZXdDb21wb25lbnRcbiAgICogQHBhcmFtIHsnbW9udGgnfCd3ZWVrJ3wnd29ya193ZWVrJ3wnZGF5J3wnYWdlbmRhJ30gW3ZpZXddIC0gb3B0aW9uYWxcbiAgICogcGFyYW1ldGVyLiBJdCBhcHBlYXJzIHdoZW4gcmFuZ2UgY2hhbmdlIG9uIHZpZXcgY2hhbmdpbmcuIEl0IGNvdWxkIGJlIGhhbmR5XG4gICAqIHdoZW4geW91IG5lZWQgdG8gaGF2ZSBib3RoOiByYW5nZSBhbmQgdmlldyB0eXBlIGF0IG9uY2UsIGkuZS4gZm9yIG1hbmFnZSByYmNcbiAgICogc3RhdGUgdmlhIHVybFxuICAgKi9cbiAgaGFuZGxlUmFuZ2VDaGFuZ2UgPSAoZGF0ZSwgdmlld0NvbXBvbmVudCwgdmlldykgPT4ge1xuICAgIGxldCB7IG9uUmFuZ2VDaGFuZ2UsIGxvY2FsaXplciB9ID0gdGhpcy5wcm9wc1xuXG4gICAgaWYgKG9uUmFuZ2VDaGFuZ2UpIHtcbiAgICAgIGlmICh2aWV3Q29tcG9uZW50LnJhbmdlKSB7XG4gICAgICAgIG9uUmFuZ2VDaGFuZ2Uodmlld0NvbXBvbmVudC5yYW5nZShkYXRlLCB7IGxvY2FsaXplciB9KSwgdmlldylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignb25SYW5nZUNoYW5nZSBwcm9wIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgdmlldycpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVOYXZpZ2F0ZSA9IChhY3Rpb24sIG5ld0RhdGUpID0+IHtcbiAgICBsZXQgeyB2aWV3LCBkYXRlLCBnZXROb3csIG9uTmF2aWdhdGUsIC4uLnByb3BzIH0gPSB0aGlzLnByb3BzXG4gICAgbGV0IFZpZXdDb21wb25lbnQgPSB0aGlzLmdldFZpZXcoKVxuICAgIGxldCB0b2RheSA9IGdldE5vdygpXG5cbiAgICBkYXRlID0gbW92ZURhdGUoVmlld0NvbXBvbmVudCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBhY3Rpb24sXG4gICAgICBkYXRlOiBuZXdEYXRlIHx8IGRhdGUgfHwgdG9kYXksXG4gICAgICB0b2RheSxcbiAgICB9KVxuXG4gICAgb25OYXZpZ2F0ZShkYXRlLCB2aWV3LCBhY3Rpb24pXG4gICAgdGhpcy5oYW5kbGVSYW5nZUNoYW5nZShkYXRlLCBWaWV3Q29tcG9uZW50KVxuICB9XG5cbiAgaGFuZGxlVmlld0NoYW5nZSA9ICh2aWV3KSA9PiB7XG4gICAgaWYgKHZpZXcgIT09IHRoaXMucHJvcHMudmlldyAmJiBpc1ZhbGlkVmlldyh2aWV3LCB0aGlzLnByb3BzKSkge1xuICAgICAgdGhpcy5wcm9wcy5vblZpZXcodmlldylcbiAgICB9XG5cbiAgICBsZXQgdmlld3MgPSB0aGlzLmdldFZpZXdzKClcbiAgICB0aGlzLmhhbmRsZVJhbmdlQ2hhbmdlKFxuICAgICAgdGhpcy5wcm9wcy5kYXRlIHx8IHRoaXMucHJvcHMuZ2V0Tm93KCksXG4gICAgICB2aWV3c1t2aWV3XSxcbiAgICAgIHZpZXdcbiAgICApXG4gIH1cblxuICBoYW5kbGVTZWxlY3RFdmVudCA9ICguLi5hcmdzKSA9PiB7XG4gICAgbm90aWZ5KHRoaXMucHJvcHMub25TZWxlY3RFdmVudCwgYXJncylcbiAgfVxuXG4gIGhhbmRsZURvdWJsZUNsaWNrRXZlbnQgPSAoLi4uYXJncykgPT4ge1xuICAgIG5vdGlmeSh0aGlzLnByb3BzLm9uRG91YmxlQ2xpY2tFdmVudCwgYXJncylcbiAgfVxuXG4gIGhhbmRsZUtleVByZXNzRXZlbnQgPSAoLi4uYXJncykgPT4ge1xuICAgIG5vdGlmeSh0aGlzLnByb3BzLm9uS2V5UHJlc3NFdmVudCwgYXJncylcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdFNsb3QgPSAoc2xvdEluZm8pID0+IHtcbiAgICBub3RpZnkodGhpcy5wcm9wcy5vblNlbGVjdFNsb3QsIHNsb3RJbmZvKVxuICB9XG5cbiAgaGFuZGxlRHJpbGxEb3duID0gKGRhdGUsIHZpZXcpID0+IHtcbiAgICBjb25zdCB7IG9uRHJpbGxEb3duIH0gPSB0aGlzLnByb3BzXG4gICAgaWYgKG9uRHJpbGxEb3duKSB7XG4gICAgICBvbkRyaWxsRG93bihkYXRlLCB2aWV3LCB0aGlzLmRyaWxsZG93blZpZXcpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKHZpZXcpIHRoaXMuaGFuZGxlVmlld0NoYW5nZSh2aWV3KVxuXG4gICAgdGhpcy5oYW5kbGVOYXZpZ2F0ZShuYXZpZ2F0ZS5EQVRFLCBkYXRlKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVuY29udHJvbGxhYmxlKENhbGVuZGFyLCB7XG4gIHZpZXc6ICdvblZpZXcnLFxuICBkYXRlOiAnb25OYXZpZ2F0ZScsXG4gIHNlbGVjdGVkOiAnb25TZWxlY3RFdmVudCcsXG59KVxuIiwiaW1wb3J0IGludmFyaWFudCBmcm9tICdpbnZhcmlhbnQnXG5pbXBvcnQgeyBuYXZpZ2F0ZSB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IFZJRVdTIGZyb20gJy4uL1ZpZXdzJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtb3ZlRGF0ZShWaWV3LCB7IGFjdGlvbiwgZGF0ZSwgdG9kYXksIC4uLnByb3BzIH0pIHtcbiAgVmlldyA9IHR5cGVvZiBWaWV3ID09PSAnc3RyaW5nJyA/IFZJRVdTW1ZpZXddIDogVmlld1xuXG4gIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgY2FzZSBuYXZpZ2F0ZS5UT0RBWTpcbiAgICAgIGRhdGUgPSB0b2RheSB8fCBuZXcgRGF0ZSgpXG4gICAgICBicmVha1xuICAgIGNhc2UgbmF2aWdhdGUuREFURTpcbiAgICAgIGJyZWFrXG4gICAgZGVmYXVsdDpcbiAgICAgIGludmFyaWFudChcbiAgICAgICAgVmlldyAmJiB0eXBlb2YgVmlldy5uYXZpZ2F0ZSA9PT0gJ2Z1bmN0aW9uJyxcbiAgICAgICAgJ0NhbGVuZGFyIFZpZXcgY29tcG9uZW50cyBtdXN0IGltcGxlbWVudCBhIHN0YXRpYyBgLm5hdmlnYXRlKGRhdGUsIGFjdGlvbilgIG1ldGhvZC5zJ1xuICAgICAgKVxuICAgICAgZGF0ZSA9IFZpZXcubmF2aWdhdGUoZGF0ZSwgYWN0aW9uLCBwcm9wcylcbiAgfVxuICByZXR1cm4gZGF0ZVxufVxuIiwiaW1wb3J0IHsgRGF0ZUxvY2FsaXplciB9IGZyb20gJy4uL2xvY2FsaXplcidcblxuY29uc3Qgd2Vla1JhbmdlRm9ybWF0ID0gKHsgc3RhcnQsIGVuZCB9LCBjdWx0dXJlLCBsb2NhbCkgPT5cbiAgbG9jYWwuZm9ybWF0KHN0YXJ0LCAnTU1NTSBERCcsIGN1bHR1cmUpICtcbiAgJyDigJMgJyArXG4gIC8vIHVwZGF0ZWQgdG8gdXNlIHRoaXMgbG9jYWxpemVyICdlcSgpJyBtZXRob2RcbiAgbG9jYWwuZm9ybWF0KGVuZCwgbG9jYWwuZXEoc3RhcnQsIGVuZCwgJ21vbnRoJykgPyAnREQnIDogJ01NTU0gREQnLCBjdWx0dXJlKVxuXG5jb25zdCBkYXRlUmFuZ2VGb3JtYXQgPSAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBsb2NhbC5mb3JtYXQoc3RhcnQsICdMJywgY3VsdHVyZSkgKyAnIOKAkyAnICsgbG9jYWwuZm9ybWF0KGVuZCwgJ0wnLCBjdWx0dXJlKVxuXG5jb25zdCB0aW1lUmFuZ2VGb3JtYXQgPSAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBsb2NhbC5mb3JtYXQoc3RhcnQsICdMVCcsIGN1bHR1cmUpICsgJyDigJMgJyArIGxvY2FsLmZvcm1hdChlbmQsICdMVCcsIGN1bHR1cmUpXG5cbmNvbnN0IHRpbWVSYW5nZVN0YXJ0Rm9ybWF0ID0gKHsgc3RhcnQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGxvY2FsLmZvcm1hdChzdGFydCwgJ0xUJywgY3VsdHVyZSkgKyAnIOKAkyAnXG5cbmNvbnN0IHRpbWVSYW5nZUVuZEZvcm1hdCA9ICh7IGVuZCB9LCBjdWx0dXJlLCBsb2NhbCkgPT5cbiAgJyDigJMgJyArIGxvY2FsLmZvcm1hdChlbmQsICdMVCcsIGN1bHR1cmUpXG5cbmV4cG9ydCBjb25zdCBmb3JtYXRzID0ge1xuICBkYXRlRm9ybWF0OiAnREQnLFxuICBkYXlGb3JtYXQ6ICdERCBkZGQnLFxuICB3ZWVrZGF5Rm9ybWF0OiAnZGRkJyxcblxuICBzZWxlY3RSYW5nZUZvcm1hdDogdGltZVJhbmdlRm9ybWF0LFxuICBldmVudFRpbWVSYW5nZUZvcm1hdDogdGltZVJhbmdlRm9ybWF0LFxuICBldmVudFRpbWVSYW5nZVN0YXJ0Rm9ybWF0OiB0aW1lUmFuZ2VTdGFydEZvcm1hdCxcbiAgZXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQ6IHRpbWVSYW5nZUVuZEZvcm1hdCxcblxuICB0aW1lR3V0dGVyRm9ybWF0OiAnTFQnLFxuXG4gIG1vbnRoSGVhZGVyRm9ybWF0OiAnTU1NTSBZWVlZJyxcbiAgZGF5SGVhZGVyRm9ybWF0OiAnZGRkZCBNTU0gREQnLFxuICBkYXlSYW5nZUhlYWRlckZvcm1hdDogd2Vla1JhbmdlRm9ybWF0LFxuICBhZ2VuZGFIZWFkZXJGb3JtYXQ6IGRhdGVSYW5nZUZvcm1hdCxcblxuICBhZ2VuZGFEYXRlRm9ybWF0OiAnZGRkIE1NTSBERCcsXG4gIGFnZW5kYVRpbWVGb3JtYXQ6ICdMVCcsXG4gIGFnZW5kYVRpbWVSYW5nZUZvcm1hdDogdGltZVJhbmdlRm9ybWF0LFxufVxuXG5mdW5jdGlvbiBmaXhVbml0KHVuaXQpIHtcbiAgbGV0IGRhdGVQYXJ0ID0gdW5pdCA/IHVuaXQudG9Mb3dlckNhc2UoKSA6IHVuaXRcbiAgaWYgKGRhdGVQYXJ0ID09PSAnRnVsbFllYXInKSB7XG4gICAgZGF0ZVBhcnQgPSAneWVhcidcbiAgfSBlbHNlIGlmICghZGF0ZVBhcnQpIHtcbiAgICBkYXRlUGFydCA9IHVuZGVmaW5lZFxuICB9XG4gIHJldHVybiBkYXRlUGFydFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAobW9tZW50KSB7XG4gIGNvbnN0IGxvY2FsZSA9IChtLCBjKSA9PiAoYyA/IG0ubG9jYWxlKGMpIDogbSlcblxuICBmdW5jdGlvbiBnZXRUaW1lem9uZU9mZnNldChkYXRlKSB7XG4gICAgLy8gZW5zdXJlcyB0aGlzIGdldHMgY2FzdCB0byB0aW1lem9uZVxuICAgIHJldHVybiBtb21lbnQoZGF0ZSkudG9EYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0RHN0T2Zmc2V0KHN0YXJ0LCBlbmQpIHtcbiAgICAvLyBjb252ZXJ0IHRvIG1vbWVudCwgaW4gY2FzZVxuICAgIC8vIENhbGN1bGF0ZSB0aGUgb2Zmc2V0IGluIHRoZSB0aW1lem9uZSBvZiB0aGUgRXZlbnRzIChsb2NhbClcbiAgICAvLyBub3QgaW4gdGhlIHRpbWV6b25lIG9mIHRoZSBjYWxlbmRhciAobW9tZW50LnR6KVxuICAgIGNvbnN0IHN0ID0gbW9tZW50KHN0YXJ0KS5sb2NhbCgpXG4gICAgY29uc3QgZWQgPSBtb21lbnQoZW5kKS5sb2NhbCgpXG4gICAgLy8gaWYgbm90IHVzaW5nIG1vbWVudCB0aW1lem9uZVxuICAgIGlmICghbW9tZW50LnR6KSB7XG4gICAgICByZXR1cm4gc3QudG9EYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGVkLnRvRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KClcbiAgICB9XG4gICAgLyoqXG4gICAgICogSWYgdXNpbmcgbW9tZW50LXRpbWV6b25lLCBhbmQgYSB0aW1lem9uZSBoYXMgYmVlbiBhcHBsaWVkLCB0aGVuXG4gICAgICogdXNlIHRoaXMgdG8gZ2V0IHRoZSBwcm9wZXIgdGltZXpvbmUgb2Zmc2V0LCBvdGhlcndpc2UgZGVmYXVsdFxuICAgICAqIHRoZSB0aW1lem9uZSB0byB0aGUgYnJvd3NlciBsb2NhbFxuICAgICAqL1xuICAgIGNvbnN0IHR6TmFtZSA9IHN0Py5fej8ubmFtZSA/PyBtb21lbnQudHouZ3Vlc3MoKVxuICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gbW9tZW50LnR6LnpvbmUodHpOYW1lKS51dGNPZmZzZXQoK3N0KVxuICAgIGNvbnN0IGVuZE9mZnNldCA9IG1vbWVudC50ei56b25lKHR6TmFtZSkudXRjT2Zmc2V0KCtlZClcbiAgICByZXR1cm4gc3RhcnRPZmZzZXQgLSBlbmRPZmZzZXRcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldERheVN0YXJ0RHN0T2Zmc2V0KHN0YXJ0KSB7XG4gICAgY29uc3QgZGF5U3RhcnQgPSBtb21lbnQoc3RhcnQpLnN0YXJ0T2YoJ2RheScpXG4gICAgcmV0dXJuIGdldERzdE9mZnNldChkYXlTdGFydCwgc3RhcnQpXG4gIH1cblxuICAvKioqIEJFR0lOIGxvY2FsaXplZCBkYXRlIGFyaXRobWV0aWMgbWV0aG9kcyB3aXRoIG1vbWVudCAqKiovXG4gIGZ1bmN0aW9uIGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICBjb25zdCBkdEEgPSBkYXRlUGFydCA/IG1vbWVudChhKS5zdGFydE9mKGRhdGVQYXJ0KSA6IG1vbWVudChhKVxuICAgIGNvbnN0IGR0QiA9IGRhdGVQYXJ0ID8gbW9tZW50KGIpLnN0YXJ0T2YoZGF0ZVBhcnQpIDogbW9tZW50KGIpXG4gICAgcmV0dXJuIFtkdEEsIGR0QiwgZGF0ZVBhcnRdXG4gIH1cblxuICBmdW5jdGlvbiBzdGFydE9mKGRhdGUgPSBudWxsLCB1bml0KSB7XG4gICAgY29uc3QgZGF0ZVBhcnQgPSBmaXhVbml0KHVuaXQpXG4gICAgaWYgKGRhdGVQYXJ0KSB7XG4gICAgICByZXR1cm4gbW9tZW50KGRhdGUpLnN0YXJ0T2YoZGF0ZVBhcnQpLnRvRGF0ZSgpXG4gICAgfVxuICAgIHJldHVybiBtb21lbnQoZGF0ZSkudG9EYXRlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGVuZE9mKGRhdGUgPSBudWxsLCB1bml0KSB7XG4gICAgY29uc3QgZGF0ZVBhcnQgPSBmaXhVbml0KHVuaXQpXG4gICAgaWYgKGRhdGVQYXJ0KSB7XG4gICAgICByZXR1cm4gbW9tZW50KGRhdGUpLmVuZE9mKGRhdGVQYXJ0KS50b0RhdGUoKVxuICAgIH1cbiAgICByZXR1cm4gbW9tZW50KGRhdGUpLnRvRGF0ZSgpXG4gIH1cblxuICAvLyBtb21lbnQgY29tcGFyaXNvbiBvcGVyYXRpb25zICphbHdheXMqIGNvbnZlcnQgYm90aCBzaWRlcyB0byBtb21lbnQgb2JqZWN0c1xuICAvLyBwcmlvciB0byBydW5uaW5nIHRoZSBjb21wYXJpc29uc1xuICBmdW5jdGlvbiBlcShhLCBiLCB1bml0KSB7XG4gICAgY29uc3QgW2R0QSwgZHRCLCBkYXRlUGFydF0gPSBkZWZpbmVDb21wYXJhdG9ycyhhLCBiLCB1bml0KVxuICAgIHJldHVybiBkdEEuaXNTYW1lKGR0QiwgZGF0ZVBhcnQpXG4gIH1cblxuICBmdW5jdGlvbiBuZXEoYSwgYiwgdW5pdCkge1xuICAgIHJldHVybiAhZXEoYSwgYiwgdW5pdClcbiAgfVxuXG4gIGZ1bmN0aW9uIGd0KGEsIGIsIHVuaXQpIHtcbiAgICBjb25zdCBbZHRBLCBkdEIsIGRhdGVQYXJ0XSA9IGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpXG4gICAgcmV0dXJuIGR0QS5pc0FmdGVyKGR0QiwgZGF0ZVBhcnQpXG4gIH1cblxuICBmdW5jdGlvbiBsdChhLCBiLCB1bml0KSB7XG4gICAgY29uc3QgW2R0QSwgZHRCLCBkYXRlUGFydF0gPSBkZWZpbmVDb21wYXJhdG9ycyhhLCBiLCB1bml0KVxuICAgIHJldHVybiBkdEEuaXNCZWZvcmUoZHRCLCBkYXRlUGFydClcbiAgfVxuXG4gIGZ1bmN0aW9uIGd0ZShhLCBiLCB1bml0KSB7XG4gICAgY29uc3QgW2R0QSwgZHRCLCBkYXRlUGFydF0gPSBkZWZpbmVDb21wYXJhdG9ycyhhLCBiLCB1bml0KVxuICAgIHJldHVybiBkdEEuaXNTYW1lT3JCZWZvcmUoZHRCLCBkYXRlUGFydClcbiAgfVxuXG4gIGZ1bmN0aW9uIGx0ZShhLCBiLCB1bml0KSB7XG4gICAgY29uc3QgW2R0QSwgZHRCLCBkYXRlUGFydF0gPSBkZWZpbmVDb21wYXJhdG9ycyhhLCBiLCB1bml0KVxuICAgIHJldHVybiBkdEEuaXNTYW1lT3JCZWZvcmUoZHRCLCBkYXRlUGFydClcbiAgfVxuXG4gIGZ1bmN0aW9uIGluUmFuZ2UoZGF5LCBtaW4sIG1heCwgdW5pdCA9ICdkYXknKSB7XG4gICAgY29uc3QgZGF0ZVBhcnQgPSBmaXhVbml0KHVuaXQpXG4gICAgY29uc3QgbURheSA9IG1vbWVudChkYXkpXG4gICAgY29uc3QgbU1pbiA9IG1vbWVudChtaW4pXG4gICAgY29uc3QgbU1heCA9IG1vbWVudChtYXgpXG4gICAgcmV0dXJuIG1EYXkuaXNCZXR3ZWVuKG1NaW4sIG1NYXgsIGRhdGVQYXJ0LCAnW10nKVxuICB9XG5cbiAgZnVuY3Rpb24gbWluKGRhdGVBLCBkYXRlQikge1xuICAgIGNvbnN0IGR0QSA9IG1vbWVudChkYXRlQSlcbiAgICBjb25zdCBkdEIgPSBtb21lbnQoZGF0ZUIpXG4gICAgY29uc3QgbWluRHQgPSBtb21lbnQubWluKGR0QSwgZHRCKVxuICAgIHJldHVybiBtaW5EdC50b0RhdGUoKVxuICB9XG5cbiAgZnVuY3Rpb24gbWF4KGRhdGVBLCBkYXRlQikge1xuICAgIGNvbnN0IGR0QSA9IG1vbWVudChkYXRlQSlcbiAgICBjb25zdCBkdEIgPSBtb21lbnQoZGF0ZUIpXG4gICAgY29uc3QgbWF4RHQgPSBtb21lbnQubWF4KGR0QSwgZHRCKVxuICAgIHJldHVybiBtYXhEdC50b0RhdGUoKVxuICB9XG5cbiAgZnVuY3Rpb24gbWVyZ2UoZGF0ZSwgdGltZSkge1xuICAgIGlmICghZGF0ZSAmJiAhdGltZSkgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHRtID0gbW9tZW50KHRpbWUpLmZvcm1hdCgnSEg6bW06c3MnKVxuICAgIGNvbnN0IGR0ID0gbW9tZW50KGRhdGUpLnN0YXJ0T2YoJ2RheScpLmZvcm1hdCgnTU0vREQvWVlZWScpXG4gICAgLy8gV2UgZG8gaXQgdGhpcyB3YXkgdG8gYXZvaWQgaXNzdWVzIHdoZW4gdGltZXpvbmUgc3dpdGNoaW5nXG4gICAgcmV0dXJuIG1vbWVudChgJHtkdH0gJHt0bX1gLCAnTU0vREQvWVlZWSBISDptbTpzcycpLnRvRGF0ZSgpXG4gIH1cblxuICBmdW5jdGlvbiBhZGQoZGF0ZSwgYWRkZXIsIHVuaXQpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICByZXR1cm4gbW9tZW50KGRhdGUpLmFkZChhZGRlciwgZGF0ZVBhcnQpLnRvRGF0ZSgpXG4gIH1cblxuICBmdW5jdGlvbiByYW5nZShzdGFydCwgZW5kLCB1bml0ID0gJ2RheScpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICAvLyBiZWNhdXNlIHRoZSBhZGQgbWV0aG9kIHdpbGwgcHV0IHRoZXNlIGluIHR6LCB3ZSBoYXZlIHRvIHN0YXJ0IHRoYXQgd2F5XG4gICAgbGV0IGN1cnJlbnQgPSBtb21lbnQoc3RhcnQpLnRvRGF0ZSgpXG4gICAgY29uc3QgZGF5cyA9IFtdXG5cbiAgICB3aGlsZSAobHRlKGN1cnJlbnQsIGVuZCkpIHtcbiAgICAgIGRheXMucHVzaChjdXJyZW50KVxuICAgICAgY3VycmVudCA9IGFkZChjdXJyZW50LCAxLCBkYXRlUGFydClcbiAgICB9XG5cbiAgICByZXR1cm4gZGF5c1xuICB9XG5cbiAgZnVuY3Rpb24gY2VpbChkYXRlLCB1bml0KSB7XG4gICAgY29uc3QgZGF0ZVBhcnQgPSBmaXhVbml0KHVuaXQpXG4gICAgY29uc3QgZmxvb3IgPSBzdGFydE9mKGRhdGUsIGRhdGVQYXJ0KVxuXG4gICAgcmV0dXJuIGVxKGZsb29yLCBkYXRlKSA/IGZsb29yIDogYWRkKGZsb29yLCAxLCBkYXRlUGFydClcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpZmYoYSwgYiwgdW5pdCA9ICdkYXknKSB7XG4gICAgY29uc3QgZGF0ZVBhcnQgPSBmaXhVbml0KHVuaXQpXG4gICAgLy8gZG9uJ3QgdXNlICdkZWZpbmVDb21wYXJhdG9ycycgaGVyZSwgYXMgd2UgZG9uJ3Qgd2FudCB0byBtdXRhdGUgdGhlIHZhbHVlc1xuICAgIGNvbnN0IGR0QSA9IG1vbWVudChhKVxuICAgIGNvbnN0IGR0QiA9IG1vbWVudChiKVxuICAgIHJldHVybiBkdEIuZGlmZihkdEEsIGRhdGVQYXJ0KVxuICB9XG5cbiAgZnVuY3Rpb24gbWludXRlcyhkYXRlKSB7XG4gICAgY29uc3QgZHQgPSBtb21lbnQoZGF0ZSlcbiAgICByZXR1cm4gZHQubWludXRlcygpXG4gIH1cblxuICBmdW5jdGlvbiBmaXJzdE9mV2VlayhjdWx0dXJlKSB7XG4gICAgY29uc3QgZGF0YSA9IGN1bHR1cmUgPyBtb21lbnQubG9jYWxlRGF0YShjdWx0dXJlKSA6IG1vbWVudC5sb2NhbGVEYXRhKClcbiAgICByZXR1cm4gZGF0YSA/IGRhdGEuZmlyc3REYXlPZldlZWsoKSA6IDBcbiAgfVxuXG4gIGZ1bmN0aW9uIGZpcnN0VmlzaWJsZURheShkYXRlKSB7XG4gICAgcmV0dXJuIG1vbWVudChkYXRlKS5zdGFydE9mKCdtb250aCcpLnN0YXJ0T2YoJ3dlZWsnKS50b0RhdGUoKVxuICB9XG5cbiAgZnVuY3Rpb24gbGFzdFZpc2libGVEYXkoZGF0ZSkge1xuICAgIHJldHVybiBtb21lbnQoZGF0ZSkuZW5kT2YoJ21vbnRoJykuZW5kT2YoJ3dlZWsnKS50b0RhdGUoKVxuICB9XG5cbiAgZnVuY3Rpb24gdmlzaWJsZURheXMoZGF0ZSkge1xuICAgIGxldCBjdXJyZW50ID0gZmlyc3RWaXNpYmxlRGF5KGRhdGUpXG4gICAgY29uc3QgbGFzdCA9IGxhc3RWaXNpYmxlRGF5KGRhdGUpXG4gICAgY29uc3QgZGF5cyA9IFtdXG5cbiAgICB3aGlsZSAobHRlKGN1cnJlbnQsIGxhc3QpKSB7XG4gICAgICBkYXlzLnB1c2goY3VycmVudClcbiAgICAgIGN1cnJlbnQgPSBhZGQoY3VycmVudCwgMSwgJ2QnKVxuICAgIH1cblxuICAgIHJldHVybiBkYXlzXG4gIH1cbiAgLyoqKiBFTkQgbG9jYWxpemVkIGRhdGUgYXJpdGhtZXRpYyBtZXRob2RzIHdpdGggbW9tZW50ICoqKi9cblxuICAvKipcbiAgICogTW92ZWQgZnJvbSBUaW1lU2xvdHMuanMsIHRoaXMgbWV0aG9kIG92ZXJyaWRlcyB0aGUgbWV0aG9kIG9mIHRoZSBzYW1lIG5hbWVcbiAgICogaW4gdGhlIGxvY2FsaXplci5qcywgdXNpbmcgbW9tZW50IHRvIGNvbnN0cnVjdCB0aGUganMgRGF0ZVxuICAgKiBAcGFyYW0ge0RhdGV9IGR0IC0gZGF0ZSB0byBzdGFydCB3aXRoXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBtaW51dGVzRnJvbU1pZG5pZ2h0XG4gICAqIEBwYXJhbSB7TnVtYmVyfSBvZmZzZXRcbiAgICogQHJldHVybnMge0RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBnZXRTbG90RGF0ZShkdCwgbWludXRlc0Zyb21NaWRuaWdodCwgb2Zmc2V0KSB7XG4gICAgcmV0dXJuIG1vbWVudChkdClcbiAgICAgIC5zdGFydE9mKCdkYXknKVxuICAgICAgLm1pbnV0ZShtaW51dGVzRnJvbU1pZG5pZ2h0ICsgb2Zmc2V0KVxuICAgICAgLnRvRGF0ZSgpXG4gIH1cblxuICAvLyBtb21lbnQgd2lsbCBhdXRvbWF0aWNhbGx5IGhhbmRsZSBEU1QgZGlmZmVyZW5jZXMgaW4gaXQncyBjYWxjdWxhdGlvbnNcbiAgZnVuY3Rpb24gZ2V0VG90YWxNaW4oc3RhcnQsIGVuZCkge1xuICAgIHJldHVybiBkaWZmKHN0YXJ0LCBlbmQsICdtaW51dGVzJylcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE1pbnV0ZXNGcm9tTWlkbmlnaHQoc3RhcnQpIHtcbiAgICBjb25zdCBkYXlTdGFydCA9IG1vbWVudChzdGFydCkuc3RhcnRPZignZGF5JylcbiAgICBjb25zdCBkYXkgPSBtb21lbnQoc3RhcnQpXG4gICAgcmV0dXJuIGRheS5kaWZmKGRheVN0YXJ0LCAnbWludXRlcycpICsgZ2V0RGF5U3RhcnREc3RPZmZzZXQoc3RhcnQpXG4gIH1cblxuICAvLyBUaGVzZSB0d28gYXJlIHVzZWQgYnkgRGF0ZVNsb3RNZXRyaWNzXG4gIGZ1bmN0aW9uIGNvbnRpbnVlc1ByaW9yKHN0YXJ0LCBmaXJzdCkge1xuICAgIGNvbnN0IG1TdGFydCA9IG1vbWVudChzdGFydClcbiAgICBjb25zdCBtRmlyc3QgPSBtb21lbnQoZmlyc3QpXG4gICAgcmV0dXJuIG1TdGFydC5pc0JlZm9yZShtRmlyc3QsICdkYXknKVxuICB9XG5cbiAgZnVuY3Rpb24gY29udGludWVzQWZ0ZXIoc3RhcnQsIGVuZCwgbGFzdCkge1xuICAgIGNvbnN0IG1FbmQgPSBtb21lbnQoZW5kKVxuICAgIGNvbnN0IG1MYXN0ID0gbW9tZW50KGxhc3QpXG4gICAgcmV0dXJuIG1FbmQuaXNTYW1lT3JBZnRlcihtTGFzdCwgJ21pbnV0ZXMnKVxuICB9XG5cbiAgZnVuY3Rpb24gZGF5U3BhbihzdGFydCwgZW5kKSB7XG4gICAgY29uc3QgbVN0YXJ0ID0gbW9tZW50KHN0YXJ0KVxuICAgIGNvbnN0IG1FbmQgPSBtb21lbnQoZW5kKVxuICAgIGNvbnN0IGR1ciA9IG1vbWVudC5kdXJhdGlvbihtRW5kLmRpZmYobVN0YXJ0KSlcbiAgICByZXR1cm4gZHVyLmRheXMoKVxuICB9XG5cbiAgLy8gVGhlc2UgdHdvIGFyZSB1c2VkIGJ5IGV2ZW50TGV2ZWxzXG4gIGZ1bmN0aW9uIHNvcnRFdmVudHMoe1xuICAgIGV2dEE6IHsgc3RhcnQ6IGFTdGFydCwgZW5kOiBhRW5kLCBhbGxEYXk6IGFBbGxEYXkgfSxcbiAgICBldnRCOiB7IHN0YXJ0OiBiU3RhcnQsIGVuZDogYkVuZCwgYWxsRGF5OiBiQWxsRGF5IH0sXG4gIH0pIHtcbiAgICBjb25zdCBzdGFydFNvcnQgPSArc3RhcnRPZihhU3RhcnQsICdkYXknKSAtICtzdGFydE9mKGJTdGFydCwgJ2RheScpXG5cbiAgICBjb25zdCBkdXJBID0gZGF5U3BhbihhU3RhcnQsIGFFbmQpXG5cbiAgICBjb25zdCBkdXJCID0gZGF5U3BhbihiU3RhcnQsIGJFbmQpXG5cbiAgICByZXR1cm4gKFxuICAgICAgc3RhcnRTb3J0IHx8IC8vIHNvcnQgYnkgc3RhcnQgRGF5IGZpcnN0XG4gICAgICBkdXJCIC0gZHVyQSB8fCAvLyBldmVudHMgc3Bhbm5pbmcgbXVsdGlwbGUgZGF5cyBnbyBmaXJzdFxuICAgICAgISFiQWxsRGF5IC0gISFhQWxsRGF5IHx8IC8vIHRoZW4gYWxsRGF5IHNpbmdsZSBkYXkgZXZlbnRzXG4gICAgICArYVN0YXJ0IC0gK2JTdGFydCB8fCAvLyB0aGVuIHNvcnQgYnkgc3RhcnQgdGltZSAqZG9uJ3QgbmVlZCBtb21lbnQgY29udmVyc2lvbiBoZXJlXG4gICAgICArYUVuZCAtICtiRW5kIC8vIHRoZW4gc29ydCBieSBlbmQgdGltZSAqZG9uJ3QgbmVlZCBtb21lbnQgY29udmVyc2lvbiBoZXJlIGVpdGhlclxuICAgIClcbiAgfVxuXG4gIGZ1bmN0aW9uIGluRXZlbnRSYW5nZSh7XG4gICAgZXZlbnQ6IHsgc3RhcnQsIGVuZCB9LFxuICAgIHJhbmdlOiB7IHN0YXJ0OiByYW5nZVN0YXJ0LCBlbmQ6IHJhbmdlRW5kIH0sXG4gIH0pIHtcbiAgICBjb25zdCBzdGFydE9mRGF5ID0gbW9tZW50KHN0YXJ0KS5zdGFydE9mKCdkYXknKVxuICAgIGNvbnN0IGVFbmQgPSBtb21lbnQoZW5kKVxuICAgIGNvbnN0IHJTdGFydCA9IG1vbWVudChyYW5nZVN0YXJ0KVxuICAgIGNvbnN0IHJFbmQgPSBtb21lbnQocmFuZ2VFbmQpXG5cbiAgICBjb25zdCBzdGFydHNCZWZvcmVFbmQgPSBzdGFydE9mRGF5LmlzU2FtZU9yQmVmb3JlKHJFbmQsICdkYXknKVxuICAgIC8vIHdoZW4gdGhlIGV2ZW50IGlzIHplcm8gZHVyYXRpb24gd2UgbmVlZCB0byBoYW5kbGUgYSBiaXQgZGlmZmVyZW50bHlcbiAgICBjb25zdCBzYW1lTWluID0gIXN0YXJ0T2ZEYXkuaXNTYW1lKGVFbmQsICdtaW51dGVzJylcbiAgICBjb25zdCBlbmRzQWZ0ZXJTdGFydCA9IHNhbWVNaW5cbiAgICAgID8gZUVuZC5pc0FmdGVyKHJTdGFydCwgJ21pbnV0ZXMnKVxuICAgICAgOiBlRW5kLmlzU2FtZU9yQWZ0ZXIoclN0YXJ0LCAnbWludXRlcycpXG5cbiAgICByZXR1cm4gc3RhcnRzQmVmb3JlRW5kICYmIGVuZHNBZnRlclN0YXJ0XG4gIH1cblxuICBmdW5jdGlvbiBpc1NhbWVEYXRlKGRhdGUxLCBkYXRlMikge1xuICAgIGNvbnN0IGR0ID0gbW9tZW50KGRhdGUxKVxuICAgIGNvbnN0IGR0MiA9IG1vbWVudChkYXRlMilcbiAgICByZXR1cm4gZHQuaXNTYW1lKGR0MiwgJ2RheScpXG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QsIGNhbGxlZCBvbmNlIGluIHRoZSBsb2NhbGl6ZXIgY29uc3RydWN0b3IsIGlzIHVzZWQgYnkgZXZlbnRMZXZlbHNcbiAgICogJ2V2ZW50U2VnbWVudHMoKScgdG8gYXNzaXN0IGluIGRldGVybWluaW5nIHRoZSAnc3Bhbicgb2YgdGhlIGV2ZW50IGluIHRoZSBkaXNwbGF5LFxuICAgKiBzcGVjaWZpY2FsbHkgd2hlbiB1c2luZyBhIHRpbWV6b25lIHRoYXQgaXMgZ3JlYXRlciB0aGFuIHRoZSBicm93c2VyIG5hdGl2ZSB0aW1lem9uZS5cbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBmdW5jdGlvbiBicm93c2VyVFpPZmZzZXQoKSB7XG4gICAgLyoqXG4gICAgICogRGF0ZS5wcm90b3R5cGUuZ2V0VGltZXpvbmVPZmZzZXQgaG9ycmlmaWNhbGx5IGZsaXBzIHRoZSBwb3NpdGl2ZS9uZWdhdGl2ZSBmcm9tXG4gICAgICogd2hhdCB5b3Ugc2VlIGluIGl0J3Mgc3RyaW5nLCBzbyB3ZSBoYXZlIHRvIGp1bXAgdGhyb3VnaCBzb21lIGhvb3BzIHRvIGdldCBhIHZhbHVlXG4gICAgICogd2UgY2FuIGFjdHVhbGx5IGNvbXBhcmUuXG4gICAgICovXG4gICAgY29uc3QgZHQgPSBuZXcgRGF0ZSgpXG4gICAgY29uc3QgbmVnID0gLy0vLnRlc3QoZHQudG9TdHJpbmcoKSkgPyAnLScgOiAnJ1xuICAgIGNvbnN0IGR0T2Zmc2V0ID0gZHQuZ2V0VGltZXpvbmVPZmZzZXQoKVxuICAgIGNvbnN0IGNvbXBhcmF0b3IgPSBOdW1iZXIoYCR7bmVnfSR7TWF0aC5hYnMoZHRPZmZzZXQpfWApXG4gICAgLy8gbW9tZW50IGNvcnJlY3RseSBwcm92aWRlcyBwb3NpdGl2ZS9uZWdhdGl2ZSBvZmZzZXQsIGFzIGV4cGVjdGVkXG4gICAgY29uc3QgbXRPZmZzZXQgPSBtb21lbnQoKS51dGNPZmZzZXQoKVxuICAgIHJldHVybiBtdE9mZnNldCA+IGNvbXBhcmF0b3IgPyAxIDogMFxuICB9XG5cbiAgcmV0dXJuIG5ldyBEYXRlTG9jYWxpemVyKHtcbiAgICBmb3JtYXRzLFxuXG4gICAgZmlyc3RPZldlZWssXG4gICAgZmlyc3RWaXNpYmxlRGF5LFxuICAgIGxhc3RWaXNpYmxlRGF5LFxuICAgIHZpc2libGVEYXlzLFxuXG4gICAgZm9ybWF0KHZhbHVlLCBmb3JtYXQsIGN1bHR1cmUpIHtcbiAgICAgIHJldHVybiBsb2NhbGUobW9tZW50KHZhbHVlKSwgY3VsdHVyZSkuZm9ybWF0KGZvcm1hdClcbiAgICB9LFxuXG4gICAgbHQsXG4gICAgbHRlLFxuICAgIGd0LFxuICAgIGd0ZSxcbiAgICBlcSxcbiAgICBuZXEsXG4gICAgbWVyZ2UsXG4gICAgaW5SYW5nZSxcbiAgICBzdGFydE9mLFxuICAgIGVuZE9mLFxuICAgIHJhbmdlLFxuICAgIGFkZCxcbiAgICBkaWZmLFxuICAgIGNlaWwsXG4gICAgbWluLFxuICAgIG1heCxcbiAgICBtaW51dGVzLFxuXG4gICAgZ2V0U2xvdERhdGUsXG4gICAgZ2V0VGltZXpvbmVPZmZzZXQsXG4gICAgZ2V0RHN0T2Zmc2V0LFxuICAgIGdldFRvdGFsTWluLFxuICAgIGdldE1pbnV0ZXNGcm9tTWlkbmlnaHQsXG4gICAgY29udGludWVzUHJpb3IsXG4gICAgY29udGludWVzQWZ0ZXIsXG4gICAgc29ydEV2ZW50cyxcbiAgICBpbkV2ZW50UmFuZ2UsXG4gICAgaXNTYW1lRGF0ZSxcbiAgICBkYXlTcGFuLFxuICAgIGJyb3dzZXJUWk9mZnNldCxcbiAgfSlcbn1cbiIsImltcG9ydCB7IERhdGVMb2NhbGl6ZXIgfSBmcm9tICcuLi9sb2NhbGl6ZXInXG5cbmZ1bmN0aW9uIHBsdXJhbGl6ZVVuaXQodW5pdCkge1xuICByZXR1cm4gL3MkLy50ZXN0KHVuaXQpID8gdW5pdCA6IHVuaXQgKyAncydcbn1cblxuY29uc3Qgd2Vla1JhbmdlRm9ybWF0ID0gKHsgc3RhcnQsIGVuZCB9LCBjdWx0dXJlLCBsb2NhbCkgPT5cbiAgbG9jYWwuZm9ybWF0KHN0YXJ0LCAnTU1NTSBkZCcsIGN1bHR1cmUpICtcbiAgJyDigJMgJyArXG4gIC8vIHVwZGF0ZWQgdG8gdXNlIHRoaXMgbG9jYWxpemVyICdlcSgpJyBtZXRob2RcbiAgbG9jYWwuZm9ybWF0KGVuZCwgbG9jYWwuZXEoc3RhcnQsIGVuZCwgJ21vbnRoJykgPyAnZGQnIDogJ01NTU0gZGQnLCBjdWx0dXJlKVxuXG5jb25zdCBkYXRlUmFuZ2VGb3JtYXQgPSAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBsb2NhbC5mb3JtYXQoc3RhcnQsICdEJywgY3VsdHVyZSkgKyAnIOKAkyAnICsgbG9jYWwuZm9ybWF0KGVuZCwgJ0QnLCBjdWx0dXJlKVxuXG5jb25zdCB0aW1lUmFuZ2VGb3JtYXQgPSAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBsb2NhbC5mb3JtYXQoc3RhcnQsICd0JywgY3VsdHVyZSkgKyAnIOKAkyAnICsgbG9jYWwuZm9ybWF0KGVuZCwgJ3QnLCBjdWx0dXJlKVxuXG5jb25zdCB0aW1lUmFuZ2VTdGFydEZvcm1hdCA9ICh7IHN0YXJ0IH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBsb2NhbC5mb3JtYXQoc3RhcnQsICd0JywgY3VsdHVyZSkgKyAnIOKAkyAnXG5cbmNvbnN0IHRpbWVSYW5nZUVuZEZvcm1hdCA9ICh7IGVuZCB9LCBjdWx0dXJlLCBsb2NhbCkgPT5cbiAgJyDigJMgJyArIGxvY2FsLmZvcm1hdChlbmQsICd0JywgY3VsdHVyZSlcblxuZXhwb3J0IGNvbnN0IGZvcm1hdHMgPSB7XG4gIGRhdGVGb3JtYXQ6ICdkZCcsXG4gIGRheUZvcm1hdDogJ2RkIEVFRScsXG4gIHdlZWtkYXlGb3JtYXQ6ICdFRUUnLFxuXG4gIHNlbGVjdFJhbmdlRm9ybWF0OiB0aW1lUmFuZ2VGb3JtYXQsXG4gIGV2ZW50VGltZVJhbmdlRm9ybWF0OiB0aW1lUmFuZ2VGb3JtYXQsXG4gIGV2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQ6IHRpbWVSYW5nZVN0YXJ0Rm9ybWF0LFxuICBldmVudFRpbWVSYW5nZUVuZEZvcm1hdDogdGltZVJhbmdlRW5kRm9ybWF0LFxuXG4gIHRpbWVHdXR0ZXJGb3JtYXQ6ICd0JyxcblxuICBtb250aEhlYWRlckZvcm1hdDogJ01NTU0geXl5eScsXG4gIGRheUhlYWRlckZvcm1hdDogJ0VFRUUgTU1NIGRkJyxcbiAgZGF5UmFuZ2VIZWFkZXJGb3JtYXQ6IHdlZWtSYW5nZUZvcm1hdCxcbiAgYWdlbmRhSGVhZGVyRm9ybWF0OiBkYXRlUmFuZ2VGb3JtYXQsXG5cbiAgYWdlbmRhRGF0ZUZvcm1hdDogJ0VFRSBNTU0gZGQnLFxuICBhZ2VuZGFUaW1lRm9ybWF0OiAndCcsXG4gIGFnZW5kYVRpbWVSYW5nZUZvcm1hdDogdGltZVJhbmdlRm9ybWF0LFxufVxuXG5mdW5jdGlvbiBmaXhVbml0KHVuaXQpIHtcbiAgbGV0IGRhdGVQYXJ0ID0gdW5pdCA/IHBsdXJhbGl6ZVVuaXQodW5pdC50b0xvd2VyQ2FzZSgpKSA6IHVuaXRcbiAgaWYgKGRhdGVQYXJ0ID09PSAnRnVsbFllYXInKSB7XG4gICAgZGF0ZVBhcnQgPSAneWVhcidcbiAgfSBlbHNlIGlmICghZGF0ZVBhcnQpIHtcbiAgICBkYXRlUGFydCA9IHVuZGVmaW5lZFxuICB9XG4gIHJldHVybiBkYXRlUGFydFxufVxuXG4vLyBMdXhvbiBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSB3ZWVrSW5mbyBieSBjdWx0dXJlXG4vLyBMdXhvbiB1c2VzIDEgYmFzZWQgdmFsdWVzIGZvciBtb250aCBhbmQgd2Vla2RheVxuLy8gU28gd2UgZGVmYXVsdCB0byBTdW5kYXkgKDcpXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoRGF0ZVRpbWUsIHsgZmlyc3REYXlPZldlZWsgPSA3IH0gPSB7fSkge1xuICBmdW5jdGlvbiBmb3JtYXREYXRlKHZhbHVlLCBmb3JtYXQpIHtcbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUpTRGF0ZSh2YWx1ZSkudG9Gb3JtYXQoZm9ybWF0KVxuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0RGF0ZVdpdGhDdWx0dXJlKHZhbHVlLCBjdWx0dXJlLCBmb3JtYXQpIHtcbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUpTRGF0ZSh2YWx1ZSkuc2V0TG9jYWxlKGN1bHR1cmUpLnRvRm9ybWF0KGZvcm1hdClcbiAgfVxuXG4gIC8qKiogQkVHSU4gbG9jYWxpemVkIGRhdGUgYXJpdGhtZXRpYyBtZXRob2RzIHdpdGggTHV4b24gKioqL1xuICBmdW5jdGlvbiBkZWZpbmVDb21wYXJhdG9ycyhhLCBiLCB1bml0KSB7XG4gICAgY29uc3QgZGF0ZVBhcnQgPSBmaXhVbml0KHVuaXQpXG4gICAgY29uc3QgZHRBID0gZGF0ZVBhcnRcbiAgICAgID8gRGF0ZVRpbWUuZnJvbUpTRGF0ZShhKS5zdGFydE9mKGRhdGVQYXJ0KVxuICAgICAgOiBEYXRlVGltZS5mcm9tSlNEYXRlKGEpXG4gICAgY29uc3QgZHRCID0gZGF0ZVBhcnRcbiAgICAgID8gRGF0ZVRpbWUuZnJvbUpTRGF0ZShiKS5zdGFydE9mKGRhdGVQYXJ0KVxuICAgICAgOiBEYXRlVGltZS5mcm9tSlNEYXRlKGIpXG4gICAgcmV0dXJuIFtkdEEsIGR0QiwgZGF0ZVBhcnRdXG4gIH1cblxuICAvLyBTaW5jZSBMdXhvbiAoYW5kIGN1cnJlbnQgSW50bCBBUEkpIGhhcyBubyBzdXBwb3J0XG4gIC8vIGZvciBjdWx0dXJlIGJhc2VkIHdlZWtJbmZvLCB3ZSBuZWVkIHRvIGhhbmRsZVxuICAvLyB0aGUgc3RhcnQgb2YgdGhlIHdlZWsgZGlmZmVyZW50bHlcbiAgLy8gZGVwZW5kaW5nIG9uIGxvY2FsZSwgdGhlIGZpcnN0RGF5T2ZXZWVrIGNvdWxkIGFsc28gYmUgU2F0dXJkYXksIFN1bmRheSBvciBNb25kYXlcbiAgZnVuY3Rpb24gc3RhcnRPZkRUV2VlayhkdE9iaikge1xuICAgIGNvbnN0IHdlZWtkYXkgPSBkdE9iai53ZWVrZGF5XG4gICAgaWYgKHdlZWtkYXkgPT09IGZpcnN0RGF5T2ZXZWVrKSB7XG4gICAgICByZXR1cm4gZHRPYmouc3RhcnRPZignZGF5JykgLy8gYWxyZWFkeSBiZWdpbm5pbmcgb2Ygd2Vla1xuICAgIH0gZWxzZSBpZiAoZmlyc3REYXlPZldlZWsgPT09IDEpIHtcbiAgICAgIHJldHVybiBkdE9iai5zdGFydE9mKCd3ZWVrJykgLy8gZm93IGlzIE1vbmRheSwgd2hpY2ggaXMgTHV4b24gZGVmYXVsdFxuICAgIH1cbiAgICBjb25zdCBkaWZmID0gZmlyc3REYXlPZldlZWsgPT09IDcgPyB3ZWVrZGF5IDogd2Vla2RheSArICg3IC0gZmlyc3REYXlPZldlZWspXG4gICAgcmV0dXJuIGR0T2JqLm1pbnVzKHsgZGF5OiBkaWZmIH0pLnN0YXJ0T2YoJ2RheScpXG4gIH1cblxuICBmdW5jdGlvbiBlbmRPZkRUV2VlayhkdE9iaikge1xuICAgIGNvbnN0IHdlZWtkYXkgPSBkdE9iai53ZWVrZGF5XG4gICAgY29uc3QgZW93ID0gZmlyc3REYXlPZldlZWsgPT09IDEgPyA3IDogZmlyc3REYXlPZldlZWsgLSAxXG4gICAgaWYgKHdlZWtkYXkgPT09IGVvdykge1xuICAgICAgcmV0dXJuIGR0T2JqLmVuZE9mKCdkYXknKSAvLyBhbHJlYWR5IGxhc3QgZGF5IG9mIHRoZSB3ZWVrXG4gICAgfSBlbHNlIGlmIChmaXJzdERheU9mV2VlayA9PT0gMSkge1xuICAgICAgcmV0dXJuIGR0T2JqLmVuZE9mKCd3ZWVrJykgLy8gdXNlIEx1eG9uIGRlZmF1bHQgKFN1bmRheSlcbiAgICB9XG4gICAgY29uc3QgZnJvbURhdGUgPVxuICAgICAgZmlyc3REYXlPZldlZWsgPiBlb3cgPyBkdE9iai5wbHVzKHsgZGF5OiBmaXJzdERheU9mV2VlayAtIGVvdyB9KSA6IGR0T2JqXG4gICAgcmV0dXJuIGZyb21EYXRlLnNldCh7IHdlZWtkYXk6IGVvdyB9KS5lbmRPZignZGF5JylcbiAgfVxuXG4gIC8vIFRoaXMgcmV0dXJucyBhIERhdGVUaW1lIGluc3RhbmNlXG4gIGZ1bmN0aW9uIHN0YXJ0T2ZEVChkYXRlID0gbmV3IERhdGUoKSwgdW5pdCkge1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gZml4VW5pdCh1bml0KVxuICAgIGlmIChkYXRlUGFydCkge1xuICAgICAgY29uc3QgZHQgPSBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGUpXG4gICAgICByZXR1cm4gZGF0ZVBhcnQuaW5jbHVkZXMoJ3dlZWsnKVxuICAgICAgICA/IHN0YXJ0T2ZEVFdlZWsoZHQpXG4gICAgICAgIDogZHQuc3RhcnRPZihkYXRlUGFydClcbiAgICB9XG4gICAgcmV0dXJuIERhdGVUaW1lLmZyb21KU0RhdGUoZGF0ZSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGZpcnN0T2ZXZWVrKCkge1xuICAgIHJldHVybiBmaXJzdERheU9mV2Vla1xuICB9XG5cbiAgLy8gVGhpcyByZXR1cm5zIGEgSlMgRGF0ZSBmcm9tIGEgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgZnVuY3Rpb24gc3RhcnRPZihkYXRlID0gbmV3IERhdGUoKSwgdW5pdCkge1xuICAgIHJldHVybiBzdGFydE9mRFQoZGF0ZSwgdW5pdCkudG9KU0RhdGUoKVxuICB9XG5cbiAgLy8gVGhpcyByZXR1cm5zIGEgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgZnVuY3Rpb24gZW5kT2ZEVChkYXRlID0gbmV3IERhdGUoKSwgdW5pdCkge1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gZml4VW5pdCh1bml0KVxuICAgIGlmIChkYXRlUGFydCkge1xuICAgICAgY29uc3QgZHQgPSBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGUpXG4gICAgICByZXR1cm4gZGF0ZVBhcnQuaW5jbHVkZXMoJ3dlZWsnKSA/IGVuZE9mRFRXZWVrKGR0KSA6IGR0LmVuZE9mKGRhdGVQYXJ0KVxuICAgIH1cbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUpTRGF0ZShkYXRlKVxuICB9XG5cbiAgZnVuY3Rpb24gZW5kT2YoZGF0ZSA9IG5ldyBEYXRlKCksIHVuaXQpIHtcbiAgICByZXR1cm4gZW5kT2ZEVChkYXRlLCB1bml0KS50b0pTRGF0ZSgpXG4gIH1cblxuICBmdW5jdGlvbiBlcShhLCBiLCB1bml0KSB7XG4gICAgY29uc3QgW2R0QSwgZHRCXSA9IGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpXG4gICAgcmV0dXJuICtkdEEgPT0gK2R0QlxuICB9XG5cbiAgZnVuY3Rpb24gbmVxKGEsIGIsIHVuaXQpIHtcbiAgICByZXR1cm4gIWVxKGEsIGIsIHVuaXQpXG4gIH1cblxuICBmdW5jdGlvbiBndChhLCBiLCB1bml0KSB7XG4gICAgY29uc3QgW2R0QSwgZHRCXSA9IGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpXG4gICAgcmV0dXJuICtkdEEgPiArZHRCXG4gIH1cblxuICBmdW5jdGlvbiBsdChhLCBiLCB1bml0KSB7XG4gICAgY29uc3QgW2R0QSwgZHRCXSA9IGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpXG4gICAgcmV0dXJuICtkdEEgPCArZHRCXG4gIH1cblxuICBmdW5jdGlvbiBndGUoYSwgYiwgdW5pdCkge1xuICAgIGNvbnN0IFtkdEEsIGR0Ql0gPSBkZWZpbmVDb21wYXJhdG9ycyhhLCBiLCB1bml0KVxuICAgIHJldHVybiArZHRBID49ICtkdEJcbiAgfVxuXG4gIGZ1bmN0aW9uIGx0ZShhLCBiLCB1bml0KSB7XG4gICAgY29uc3QgW2R0QSwgZHRCXSA9IGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpXG4gICAgcmV0dXJuICtkdEEgPD0gK2R0QlxuICB9XG5cbiAgZnVuY3Rpb24gaW5SYW5nZShkYXksIG1pbiwgbWF4LCB1bml0ID0gJ2RheScpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICBjb25zdCBtRGF5ID0gc3RhcnRPZkRUKGRheSwgZGF0ZVBhcnQpXG4gICAgY29uc3QgbU1pbiA9IHN0YXJ0T2ZEVChtaW4sIGRhdGVQYXJ0KVxuICAgIGNvbnN0IG1NYXggPSBzdGFydE9mRFQobWF4LCBkYXRlUGFydClcbiAgICByZXR1cm4gK21EYXkgPj0gK21NaW4gJiYgK21EYXkgPD0gK21NYXhcbiAgfVxuXG4gIGZ1bmN0aW9uIG1pbihkYXRlQSwgZGF0ZUIpIHtcbiAgICBjb25zdCBkdEEgPSBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGVBKVxuICAgIGNvbnN0IGR0QiA9IERhdGVUaW1lLmZyb21KU0RhdGUoZGF0ZUIpXG4gICAgY29uc3QgbWluRHQgPSBEYXRlVGltZS5taW4oZHRBLCBkdEIpXG4gICAgcmV0dXJuIG1pbkR0LnRvSlNEYXRlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIG1heChkYXRlQSwgZGF0ZUIpIHtcbiAgICBjb25zdCBkdEEgPSBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGVBKVxuICAgIGNvbnN0IGR0QiA9IERhdGVUaW1lLmZyb21KU0RhdGUoZGF0ZUIpXG4gICAgY29uc3QgbWF4RHQgPSBEYXRlVGltZS5tYXgoZHRBLCBkdEIpXG4gICAgcmV0dXJuIG1heER0LnRvSlNEYXRlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIG1lcmdlKGRhdGUsIHRpbWUpIHtcbiAgICBpZiAoIWRhdGUgJiYgIXRpbWUpIHJldHVybiBudWxsXG5cbiAgICBjb25zdCB0bSA9IERhdGVUaW1lLmZyb21KU0RhdGUodGltZSlcbiAgICBjb25zdCBkdCA9IHN0YXJ0T2ZEVChkYXRlLCAnZGF5JylcbiAgICByZXR1cm4gZHRcbiAgICAgIC5zZXQoe1xuICAgICAgICBob3VyOiB0bS5ob3VyLFxuICAgICAgICBtaW51dGU6IHRtLm1pbnV0ZSxcbiAgICAgICAgc2Vjb25kOiB0bS5zZWNvbmQsXG4gICAgICAgIG1pbGxpc2Vjb25kOiB0bS5taWxsaXNlY29uZCxcbiAgICAgIH0pXG4gICAgICAudG9KU0RhdGUoKVxuICB9XG5cbiAgZnVuY3Rpb24gYWRkKGRhdGUsIGFkZGVyLCB1bml0KSB7XG4gICAgY29uc3QgZGF0ZVBhcnQgPSBmaXhVbml0KHVuaXQpXG4gICAgcmV0dXJuIERhdGVUaW1lLmZyb21KU0RhdGUoZGF0ZSlcbiAgICAgIC5wbHVzKHsgW2RhdGVQYXJ0XTogYWRkZXIgfSlcbiAgICAgIC50b0pTRGF0ZSgpXG4gIH1cblxuICBmdW5jdGlvbiByYW5nZShzdGFydCwgZW5kLCB1bml0ID0gJ2RheScpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICBsZXQgY3VycmVudCA9IERhdGVUaW1lLmZyb21KU0RhdGUoc3RhcnQpLnRvSlNEYXRlKCkgLy8gdGhpcyBpcyB0byBnZXQgaXQgdG8gdHpcbiAgICBjb25zdCBkYXlzID0gW11cblxuICAgIHdoaWxlIChsdGUoY3VycmVudCwgZW5kKSkge1xuICAgICAgZGF5cy5wdXNoKGN1cnJlbnQpXG4gICAgICBjdXJyZW50ID0gYWRkKGN1cnJlbnQsIDEsIGRhdGVQYXJ0KVxuICAgIH1cblxuICAgIHJldHVybiBkYXlzXG4gIH1cblxuICBmdW5jdGlvbiBjZWlsKGRhdGUsIHVuaXQpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICBjb25zdCBmbG9vciA9IHN0YXJ0T2YoZGF0ZSwgZGF0ZVBhcnQpXG5cbiAgICByZXR1cm4gZXEoZmxvb3IsIGRhdGUpID8gZmxvb3IgOiBhZGQoZmxvb3IsIDEsIGRhdGVQYXJ0KVxuICB9XG5cbiAgZnVuY3Rpb24gZGlmZihhLCBiLCB1bml0ID0gJ2RheScpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICAvLyBkb24ndCB1c2UgJ2RlZmluZUNvbXBhcmF0b3JzJyBoZXJlLCBhcyB3ZSBkb24ndCB3YW50IHRvIG11dGF0ZSB0aGUgdmFsdWVzXG4gICAgY29uc3QgZHRBID0gRGF0ZVRpbWUuZnJvbUpTRGF0ZShhKVxuICAgIGNvbnN0IGR0QiA9IERhdGVUaW1lLmZyb21KU0RhdGUoYilcbiAgICByZXR1cm4gTWF0aC5mbG9vcihcbiAgICAgIGR0Qi5kaWZmKGR0QSwgZGF0ZVBhcnQsIHsgY29udmVyc2lvbkFjY3VyYWN5OiAnbG9uZ3Rlcm0nIH0pLnRvT2JqZWN0KClbXG4gICAgICAgIGRhdGVQYXJ0XG4gICAgICBdXG4gICAgKVxuICB9XG5cbiAgZnVuY3Rpb24gZmlyc3RWaXNpYmxlRGF5KGRhdGUpIHtcbiAgICBjb25zdCBzdGFydE9mTW9udGggPSBzdGFydE9mRFQoZGF0ZSwgJ21vbnRoJylcbiAgICByZXR1cm4gc3RhcnRPZkRUV2VlayhzdGFydE9mTW9udGgpLnRvSlNEYXRlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGxhc3RWaXNpYmxlRGF5KGRhdGUpIHtcbiAgICBjb25zdCBlbmRPZk1vbnRoID0gZW5kT2ZEVChkYXRlLCAnbW9udGgnKVxuICAgIHJldHVybiBlbmRPZkRUV2VlayhlbmRPZk1vbnRoKS50b0pTRGF0ZSgpXG4gIH1cblxuICBmdW5jdGlvbiB2aXNpYmxlRGF5cyhkYXRlKSB7XG4gICAgbGV0IGN1cnJlbnQgPSBmaXJzdFZpc2libGVEYXkoZGF0ZSlcbiAgICBjb25zdCBsYXN0ID0gbGFzdFZpc2libGVEYXkoZGF0ZSlcbiAgICBjb25zdCBkYXlzID0gW11cblxuICAgIHdoaWxlIChsdGUoY3VycmVudCwgbGFzdCkpIHtcbiAgICAgIGRheXMucHVzaChjdXJyZW50KVxuICAgICAgY3VycmVudCA9IGFkZChjdXJyZW50LCAxLCAnZGF5JylcbiAgICB9XG5cbiAgICByZXR1cm4gZGF5c1xuICB9XG4gIC8qKiogRU5EIGxvY2FsaXplZCBkYXRlIGFyaXRobWV0aWMgbWV0aG9kcyB3aXRoIG1vbWVudCAqKiovXG5cbiAgLyoqXG4gICAqIE1vdmVkIGZyb20gVGltZVNsb3RzLmpzLCB0aGlzIG1ldGhvZCBvdmVycmlkZXMgdGhlIG1ldGhvZCBvZiB0aGUgc2FtZSBuYW1lXG4gICAqIGluIHRoZSBsb2NhbGl6ZXIuanMsIHVzaW5nIG1vbWVudCB0byBjb25zdHJ1Y3QgdGhlIGpzIERhdGVcbiAgICogQHBhcmFtIHtEYXRlfSBkdCAtIGRhdGUgdG8gc3RhcnQgd2l0aFxuICAgKiBAcGFyYW0ge051bWJlcn0gbWludXRlc0Zyb21NaWRuaWdodFxuICAgKiBAcGFyYW0ge051bWJlcn0gb2Zmc2V0XG4gICAqIEByZXR1cm5zIHtEYXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0U2xvdERhdGUoZHQsIG1pbnV0ZXNGcm9tTWlkbmlnaHQsIG9mZnNldCkge1xuICAgIHJldHVybiBzdGFydE9mRFQoZHQsICdkYXknKVxuICAgICAgLnNldCh7IG1pbnV0ZXM6IG1pbnV0ZXNGcm9tTWlkbmlnaHQgKyBvZmZzZXQgfSlcbiAgICAgIC50b0pTRGF0ZSgpXG4gIH1cblxuICAvLyBMdXhvbiB3aWxsIGF1dG9tYXRpY2FsbHkgaGFuZGxlIERTVCBkaWZmZXJlbmNlcyBpbiBpdCdzIGNhbGN1bGF0aW9uc1xuICBmdW5jdGlvbiBnZXRUb3RhbE1pbihzdGFydCwgZW5kKSB7XG4gICAgcmV0dXJuIGRpZmYoc3RhcnQsIGVuZCwgJ21pbnV0ZXMnKVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TWludXRlc0Zyb21NaWRuaWdodChzdGFydCkge1xuICAgIGNvbnN0IGRheVN0YXJ0ID0gc3RhcnRPZkRUKHN0YXJ0LCAnZGF5JylcbiAgICBjb25zdCBkYXkgPSBEYXRlVGltZS5mcm9tSlNEYXRlKHN0YXJ0KVxuICAgIHJldHVybiBNYXRoLnJvdW5kKFxuICAgICAgZGF5XG4gICAgICAgIC5kaWZmKGRheVN0YXJ0LCAnbWludXRlcycsIHsgY29udmVyc2lvbkFjY3VyYWN5OiAnbG9uZ3Rlcm0nIH0pXG4gICAgICAgIC50b09iamVjdCgpLm1pbnV0ZXNcbiAgICApXG4gIH1cblxuICAvLyBUaGVzZSB0d28gYXJlIHVzZWQgYnkgRGF0ZVNsb3RNZXRyaWNzXG4gIGZ1bmN0aW9uIGNvbnRpbnVlc1ByaW9yKHN0YXJ0LCBmaXJzdCkge1xuICAgIHJldHVybiBsdChzdGFydCwgZmlyc3QpXG4gIH1cblxuICBmdW5jdGlvbiBjb250aW51ZXNBZnRlcihzdGFydCwgZW5kLCBsYXN0KSB7XG4gICAgcmV0dXJuIGd0ZShlbmQsIGxhc3QpXG4gIH1cblxuICBmdW5jdGlvbiBkYXlTcGFuKHN0YXJ0LCBlbmQpIHtcbiAgICBjb25zdCBkdFN0YXJ0ID0gRGF0ZVRpbWUuZnJvbUpTRGF0ZShzdGFydClcbiAgICBjb25zdCBkdEVuZCA9IERhdGVUaW1lLmZyb21KU0RhdGUoZW5kKVxuICAgIHJldHVybiBkdEVuZC5kaWZmKGR0U3RhcnQpLmFzKCdkYXlzJylcbiAgfVxuXG4gIC8vIFRoZXNlIHR3byBhcmUgdXNlZCBieSBldmVudExldmVsc1xuICBmdW5jdGlvbiBzb3J0RXZlbnRzKHtcbiAgICBldnRBOiB7IHN0YXJ0OiBhU3RhcnQsIGVuZDogYUVuZCwgYWxsRGF5OiBhQWxsRGF5IH0sXG4gICAgZXZ0QjogeyBzdGFydDogYlN0YXJ0LCBlbmQ6IGJFbmQsIGFsbERheTogYkFsbERheSB9LFxuICB9KSB7XG4gICAgY29uc3Qgc3RhcnRTb3J0ID0gK3N0YXJ0T2YoYVN0YXJ0LCAnZGF5JykgLSArc3RhcnRPZihiU3RhcnQsICdkYXknKVxuXG4gICAgY29uc3QgZHVyQSA9IGRheVNwYW4oYVN0YXJ0LCBhRW5kKVxuXG4gICAgY29uc3QgZHVyQiA9IGRheVNwYW4oYlN0YXJ0LCBiRW5kKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIHN0YXJ0U29ydCB8fCAvLyBzb3J0IGJ5IHN0YXJ0IERheSBmaXJzdFxuICAgICAgZHVyQiAtIGR1ckEgfHwgLy8gZXZlbnRzIHNwYW5uaW5nIG11bHRpcGxlIGRheXMgZ28gZmlyc3RcbiAgICAgICEhYkFsbERheSAtICEhYUFsbERheSB8fCAvLyB0aGVuIGFsbERheSBzaW5nbGUgZGF5IGV2ZW50c1xuICAgICAgK2FTdGFydCAtICtiU3RhcnQgfHwgLy8gdGhlbiBzb3J0IGJ5IHN0YXJ0IHRpbWUgKmRvbid0IG5lZWQgbW9tZW50IGNvbnZlcnNpb24gaGVyZVxuICAgICAgK2FFbmQgLSArYkVuZCAvLyB0aGVuIHNvcnQgYnkgZW5kIHRpbWUgKmRvbid0IG5lZWQgbW9tZW50IGNvbnZlcnNpb24gaGVyZSBlaXRoZXJcbiAgICApXG4gIH1cblxuICBmdW5jdGlvbiBpbkV2ZW50UmFuZ2Uoe1xuICAgIGV2ZW50OiB7IHN0YXJ0LCBlbmQgfSxcbiAgICByYW5nZTogeyBzdGFydDogcmFuZ2VTdGFydCwgZW5kOiByYW5nZUVuZCB9LFxuICB9KSB7XG4gICAgY29uc3QgZVN0YXJ0ID0gc3RhcnRPZihzdGFydCwgJ2RheScpXG5cbiAgICBjb25zdCBzdGFydHNCZWZvcmVFbmQgPSBsdGUoZVN0YXJ0LCByYW5nZUVuZCwgJ2RheScpXG4gICAgLy8gd2hlbiB0aGUgZXZlbnQgaXMgemVybyBkdXJhdGlvbiB3ZSBuZWVkIHRvIGhhbmRsZSBhIGJpdCBkaWZmZXJlbnRseVxuICAgIGNvbnN0IHNhbWVNaW4gPSBuZXEoZVN0YXJ0LCBlbmQsICdtaW51dGVzJylcbiAgICBjb25zdCBlbmRzQWZ0ZXJTdGFydCA9IHNhbWVNaW5cbiAgICAgID8gZ3QoZW5kLCByYW5nZVN0YXJ0LCAnbWludXRlcycpXG4gICAgICA6IGd0ZShlbmQsIHJhbmdlU3RhcnQsICdtaW51dGVzJylcbiAgICByZXR1cm4gc3RhcnRzQmVmb3JlRW5kICYmIGVuZHNBZnRlclN0YXJ0XG4gIH1cblxuICAvLyBtb21lbnQgdHJlYXRzICdkYXknIGFuZCAnZGF0ZScgZXF1YWxpdHkgdmVyeSBkaWZmZXJlbnRcbiAgLy8gbW9tZW50KGRhdGUxKS5pc1NhbWUoZGF0ZTIsICdkYXknKSB3b3VsZCB0ZXN0IHRoYXQgdGhleSB3ZXJlIGJvdGggdGhlIHNhbWUgZGF5IG9mIHRoZSB3ZWVrXG4gIC8vIG1vbWVudChkYXRlMSkuaXNTYW1lKGRhdGUyLCAnZGF0ZScpIHdvdWxkIHRlc3QgdGhhdCB0aGV5IHdlcmUgYm90aCB0aGUgc2FtZSBkYXRlIG9mIHRoZSBtb250aCBvZiB0aGUgeWVhclxuICBmdW5jdGlvbiBpc1NhbWVEYXRlKGRhdGUxLCBkYXRlMikge1xuICAgIGNvbnN0IGR0ID0gRGF0ZVRpbWUuZnJvbUpTRGF0ZShkYXRlMSlcbiAgICBjb25zdCBkdDIgPSBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGUyKVxuICAgIHJldHVybiBkdC5oYXNTYW1lKGR0MiwgJ2RheScpXG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QsIGNhbGxlZCBvbmNlIGluIHRoZSBsb2NhbGl6ZXIgY29uc3RydWN0b3IsIGlzIHVzZWQgYnkgZXZlbnRMZXZlbHNcbiAgICogJ2V2ZW50U2VnbWVudHMoKScgdG8gYXNzaXN0IGluIGRldGVybWluaW5nIHRoZSAnc3Bhbicgb2YgdGhlIGV2ZW50IGluIHRoZSBkaXNwbGF5LFxuICAgKiBzcGVjaWZpY2FsbHkgd2hlbiB1c2luZyBhIHRpbWV6b25lIHRoYXQgaXMgZ3JlYXRlciB0aGFuIHRoZSBicm93c2VyIG5hdGl2ZSB0aW1lem9uZS5cbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBmdW5jdGlvbiBicm93c2VyVFpPZmZzZXQoKSB7XG4gICAgLyoqXG4gICAgICogRGF0ZS5wcm90b3R5cGUuZ2V0VGltZXpvbmVPZmZzZXQgaG9ycmlmaWNhbGx5IGZsaXBzIHRoZSBwb3NpdGl2ZS9uZWdhdGl2ZSBmcm9tXG4gICAgICogd2hhdCB5b3Ugc2VlIGluIGl0J3Mgc3RyaW5nLCBzbyB3ZSBoYXZlIHRvIGp1bXAgdGhyb3VnaCBzb21lIGhvb3BzIHRvIGdldCBhIHZhbHVlXG4gICAgICogd2UgY2FuIGFjdHVhbGx5IGNvbXBhcmUuXG4gICAgICovXG4gICAgY29uc3QgZHQgPSBuZXcgRGF0ZSgpXG4gICAgY29uc3QgbmVnID0gLy0vLnRlc3QoZHQudG9TdHJpbmcoKSkgPyAnLScgOiAnJ1xuICAgIGNvbnN0IGR0T2Zmc2V0ID0gZHQuZ2V0VGltZXpvbmVPZmZzZXQoKVxuICAgIGNvbnN0IGNvbXBhcmF0b3IgPSBOdW1iZXIoYCR7bmVnfSR7TWF0aC5hYnMoZHRPZmZzZXQpfWApXG4gICAgLy8gbW9tZW50IGNvcnJlY3RseSBwcm92aWRlcyBwb3NpdGl2ZS9uZWdhdGl2ZSBvZmZzZXQsIGFzIGV4cGVjdGVkXG4gICAgY29uc3QgbXRPZmZzZXQgPSBEYXRlVGltZS5sb2NhbCgpLm9mZnNldFxuICAgIHJldHVybiBtdE9mZnNldCA+IGNvbXBhcmF0b3IgPyAxIDogMFxuICB9XG5cbiAgcmV0dXJuIG5ldyBEYXRlTG9jYWxpemVyKHtcbiAgICBmb3JtYXQodmFsdWUsIGZvcm1hdCwgY3VsdHVyZSkge1xuICAgICAgaWYgKGN1bHR1cmUpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdERhdGVXaXRoQ3VsdHVyZSh2YWx1ZSwgY3VsdHVyZSwgZm9ybWF0KVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdERhdGUodmFsdWUsIGZvcm1hdClcbiAgICB9LFxuXG4gICAgZm9ybWF0cyxcblxuICAgIGZpcnN0T2ZXZWVrLFxuICAgIGZpcnN0VmlzaWJsZURheSxcbiAgICBsYXN0VmlzaWJsZURheSxcbiAgICB2aXNpYmxlRGF5cyxcblxuICAgIGx0LFxuICAgIGx0ZSxcbiAgICBndCxcbiAgICBndGUsXG4gICAgZXEsXG4gICAgbmVxLFxuICAgIG1lcmdlLFxuICAgIGluUmFuZ2UsXG4gICAgc3RhcnRPZixcbiAgICBlbmRPZixcbiAgICByYW5nZSxcbiAgICBhZGQsXG4gICAgZGlmZixcbiAgICBjZWlsLFxuICAgIG1pbixcbiAgICBtYXgsXG5cbiAgICBnZXRTbG90RGF0ZSxcbiAgICBnZXRUb3RhbE1pbixcbiAgICBnZXRNaW51dGVzRnJvbU1pZG5pZ2h0LFxuICAgIGNvbnRpbnVlc1ByaW9yLFxuICAgIGNvbnRpbnVlc0FmdGVyLFxuICAgIHNvcnRFdmVudHMsXG4gICAgaW5FdmVudFJhbmdlLFxuICAgIGlzU2FtZURhdGUsXG4gICAgZGF5U3BhbixcbiAgICBicm93c2VyVFpPZmZzZXQsXG4gIH0pXG59XG4iLCJpbXBvcnQgKiBhcyBkYXRlcyBmcm9tICcuLi91dGlscy9kYXRlcydcbmltcG9ydCB7IERhdGVMb2NhbGl6ZXIgfSBmcm9tICcuLi9sb2NhbGl6ZXInXG5cbmxldCBkYXRlUmFuZ2VGb3JtYXQgPSAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBsb2NhbC5mb3JtYXQoc3RhcnQsICdkJywgY3VsdHVyZSkgKyAnIOKAkyAnICsgbG9jYWwuZm9ybWF0KGVuZCwgJ2QnLCBjdWx0dXJlKVxuXG5sZXQgdGltZVJhbmdlRm9ybWF0ID0gKHsgc3RhcnQsIGVuZCB9LCBjdWx0dXJlLCBsb2NhbCkgPT5cbiAgbG9jYWwuZm9ybWF0KHN0YXJ0LCAndCcsIGN1bHR1cmUpICsgJyDigJMgJyArIGxvY2FsLmZvcm1hdChlbmQsICd0JywgY3VsdHVyZSlcblxubGV0IHRpbWVSYW5nZVN0YXJ0Rm9ybWF0ID0gKHsgc3RhcnQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGxvY2FsLmZvcm1hdChzdGFydCwgJ3QnLCBjdWx0dXJlKSArICcg4oCTICdcblxubGV0IHRpbWVSYW5nZUVuZEZvcm1hdCA9ICh7IGVuZCB9LCBjdWx0dXJlLCBsb2NhbCkgPT5cbiAgJyDigJMgJyArIGxvY2FsLmZvcm1hdChlbmQsICd0JywgY3VsdHVyZSlcblxubGV0IHdlZWtSYW5nZUZvcm1hdCA9ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGxvY2FsLmZvcm1hdChzdGFydCwgJ01NTSBkZCcsIGN1bHR1cmUpICtcbiAgJyDigJMgJyArXG4gIGxvY2FsLmZvcm1hdChlbmQsIGRhdGVzLmVxKHN0YXJ0LCBlbmQsICdtb250aCcpID8gJ2RkJyA6ICdNTU0gZGQnLCBjdWx0dXJlKVxuXG5leHBvcnQgbGV0IGZvcm1hdHMgPSB7XG4gIGRhdGVGb3JtYXQ6ICdkZCcsXG4gIGRheUZvcm1hdDogJ2RkZCBkZC9NTScsXG4gIHdlZWtkYXlGb3JtYXQ6ICdkZGQnLFxuXG4gIHNlbGVjdFJhbmdlRm9ybWF0OiB0aW1lUmFuZ2VGb3JtYXQsXG4gIGV2ZW50VGltZVJhbmdlRm9ybWF0OiB0aW1lUmFuZ2VGb3JtYXQsXG4gIGV2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQ6IHRpbWVSYW5nZVN0YXJ0Rm9ybWF0LFxuICBldmVudFRpbWVSYW5nZUVuZEZvcm1hdDogdGltZVJhbmdlRW5kRm9ybWF0LFxuXG4gIHRpbWVHdXR0ZXJGb3JtYXQ6ICd0JyxcblxuICBtb250aEhlYWRlckZvcm1hdDogJ1knLFxuICBkYXlIZWFkZXJGb3JtYXQ6ICdkZGRkIE1NTSBkZCcsXG4gIGRheVJhbmdlSGVhZGVyRm9ybWF0OiB3ZWVrUmFuZ2VGb3JtYXQsXG4gIGFnZW5kYUhlYWRlckZvcm1hdDogZGF0ZVJhbmdlRm9ybWF0LFxuXG4gIGFnZW5kYURhdGVGb3JtYXQ6ICdkZGQgTU1NIGRkJyxcbiAgYWdlbmRhVGltZUZvcm1hdDogJ3QnLFxuICBhZ2VuZGFUaW1lUmFuZ2VGb3JtYXQ6IHRpbWVSYW5nZUZvcm1hdCxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGdsb2JhbGl6ZSkge1xuICBmdW5jdGlvbiBnZXRDdWx0dXJlKGN1bHR1cmUpIHtcbiAgICByZXR1cm4gY3VsdHVyZSA/IGdsb2JhbGl6ZS5maW5kQ2xvc2VzdEN1bHR1cmUoY3VsdHVyZSkgOiBnbG9iYWxpemUuY3VsdHVyZSgpXG4gIH1cblxuICBmdW5jdGlvbiBmaXJzdE9mV2VlayhjdWx0dXJlKSB7XG4gICAgY3VsdHVyZSA9IGdldEN1bHR1cmUoY3VsdHVyZSlcbiAgICByZXR1cm4gKGN1bHR1cmUgJiYgY3VsdHVyZS5jYWxlbmRhci5maXJzdERheSkgfHwgMFxuICB9XG5cbiAgcmV0dXJuIG5ldyBEYXRlTG9jYWxpemVyKHtcbiAgICBmaXJzdE9mV2VlayxcbiAgICBmb3JtYXRzLFxuICAgIGZvcm1hdCh2YWx1ZSwgZm9ybWF0LCBjdWx0dXJlKSB7XG4gICAgICByZXR1cm4gZ2xvYmFsaXplLmZvcm1hdCh2YWx1ZSwgZm9ybWF0LCBjdWx0dXJlKVxuICAgIH0sXG4gIH0pXG59XG4iLCIvLyBUT0RPOiBmaXggdGhlIGdsb2JhbGl6ZUxvY2FsaXplciB0byB3b3JrIHdpdGggZ2xvYmFsaXplIDEueFxuXG5pbXBvcnQgKiBhcyBkYXRlcyBmcm9tICcuLi91dGlscy9kYXRlcydcbmltcG9ydCBvbGRHbG9iYWxpemUgZnJvbSAnLi9vbGRHbG9iYWxpemUnXG5pbXBvcnQgeyBEYXRlTG9jYWxpemVyIH0gZnJvbSAnLi4vbG9jYWxpemVyJ1xuXG5sZXQgZGF0ZVJhbmdlRm9ybWF0ID0gKHsgc3RhcnQsIGVuZCB9LCBjdWx0dXJlLCBsb2NhbCkgPT5cbiAgbG9jYWwuZm9ybWF0KHN0YXJ0LCB7IGRhdGU6ICdzaG9ydCcgfSwgY3VsdHVyZSkgK1xuICAnIOKAkyAnICtcbiAgbG9jYWwuZm9ybWF0KGVuZCwgeyBkYXRlOiAnc2hvcnQnIH0sIGN1bHR1cmUpXG5cbmxldCB0aW1lUmFuZ2VGb3JtYXQgPSAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBsb2NhbC5mb3JtYXQoc3RhcnQsIHsgdGltZTogJ3Nob3J0JyB9LCBjdWx0dXJlKSArXG4gICcg4oCTICcgK1xuICBsb2NhbC5mb3JtYXQoZW5kLCB7IHRpbWU6ICdzaG9ydCcgfSwgY3VsdHVyZSlcblxubGV0IHRpbWVSYW5nZVN0YXJ0Rm9ybWF0ID0gKHsgc3RhcnQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGxvY2FsLmZvcm1hdChzdGFydCwgeyB0aW1lOiAnc2hvcnQnIH0sIGN1bHR1cmUpICsgJyDigJMgJ1xuXG5sZXQgdGltZVJhbmdlRW5kRm9ybWF0ID0gKHsgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICAnIOKAkyAnICsgbG9jYWwuZm9ybWF0KGVuZCwgeyB0aW1lOiAnc2hvcnQnIH0sIGN1bHR1cmUpXG5cbmxldCB3ZWVrUmFuZ2VGb3JtYXQgPSAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBsb2NhbC5mb3JtYXQoc3RhcnQsICdNTU0gZGQnLCBjdWx0dXJlKSArXG4gICcg4oCTICcgK1xuICBsb2NhbC5mb3JtYXQoZW5kLCBkYXRlcy5lcShzdGFydCwgZW5kLCAnbW9udGgnKSA/ICdkZCcgOiAnTU1NIGRkJywgY3VsdHVyZSlcblxuZXhwb3J0IGxldCBmb3JtYXRzID0ge1xuICBkYXRlRm9ybWF0OiAnZGQnLFxuICBkYXlGb3JtYXQ6ICdlZWUgZGQvTU0nLFxuICB3ZWVrZGF5Rm9ybWF0OiAnZWVlJyxcblxuICBzZWxlY3RSYW5nZUZvcm1hdDogdGltZVJhbmdlRm9ybWF0LFxuICBldmVudFRpbWVSYW5nZUZvcm1hdDogdGltZVJhbmdlRm9ybWF0LFxuICBldmVudFRpbWVSYW5nZVN0YXJ0Rm9ybWF0OiB0aW1lUmFuZ2VTdGFydEZvcm1hdCxcbiAgZXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQ6IHRpbWVSYW5nZUVuZEZvcm1hdCxcblxuICB0aW1lR3V0dGVyRm9ybWF0OiB7IHRpbWU6ICdzaG9ydCcgfSxcblxuICBtb250aEhlYWRlckZvcm1hdDogJ01NTU0geXl5eScsXG4gIGRheUhlYWRlckZvcm1hdDogJ2VlZWUgTU1NIGRkJyxcbiAgZGF5UmFuZ2VIZWFkZXJGb3JtYXQ6IHdlZWtSYW5nZUZvcm1hdCxcbiAgYWdlbmRhSGVhZGVyRm9ybWF0OiBkYXRlUmFuZ2VGb3JtYXQsXG5cbiAgYWdlbmRhRGF0ZUZvcm1hdDogJ2VlZSBNTU0gZGQnLFxuICBhZ2VuZGFUaW1lRm9ybWF0OiB7IHRpbWU6ICdzaG9ydCcgfSxcbiAgYWdlbmRhVGltZVJhbmdlRm9ybWF0OiB0aW1lUmFuZ2VGb3JtYXQsXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChnbG9iYWxpemUpIHtcbiAgbGV0IGxvY2FsZSA9IChjdWx0dXJlKSA9PiAoY3VsdHVyZSA/IGdsb2JhbGl6ZShjdWx0dXJlKSA6IGdsb2JhbGl6ZSlcblxuICAvLyByZXR1cm4gdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayBmcm9tIHRoZSBsb2NhbGUgZGF0YS4gRGVmYXVsdHMgdG8gJ3dvcmxkJ1xuICAvLyB0ZXJyaXRvcnkgaWYgbm8gdGVycml0b3J5IGlzIGRlcml2YWJsZSBmcm9tIENMRFIuXG4gIC8vIEZhaWxpbmcgdG8gdXNlIENMRFIgc3VwcGxlbWVudGFsIChub3QgbG9hZGVkPyksIHJldmVydCB0byB0aGUgb3JpZ2luYWxcbiAgLy8gbWV0aG9kIG9mIGdldHRpbmcgZmlyc3QgZGF5IG9mIHdlZWsuXG4gIGZ1bmN0aW9uIGZpcnN0T2ZXZWVrKGN1bHR1cmUpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF5cyA9IFsnc3VuJywgJ21vbicsICd0dWUnLCAnd2VkJywgJ3RodScsICdmcmknLCAnc2F0J11cbiAgICAgIGNvbnN0IGNsZHIgPSBsb2NhbGUoY3VsdHVyZSkuY2xkclxuICAgICAgY29uc3QgdGVycml0b3J5ID0gY2xkci5hdHRyaWJ1dGVzLnRlcnJpdG9yeVxuICAgICAgY29uc3Qgd2Vla0RhdGEgPSBjbGRyLmdldCgnc3VwcGxlbWVudGFsJykud2Vla0RhdGFcbiAgICAgIGNvbnN0IGZpcnN0RGF5ID0gd2Vla0RhdGEuZmlyc3REYXlbdGVycml0b3J5IHx8ICcwMDEnXVxuICAgICAgcmV0dXJuIGRheXMuaW5kZXhPZihmaXJzdERheSlcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICdGYWlsZWQgdG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLicgK1xuICAgICAgICAgICAgJyBJcyBzdXBwbGVtZW50YWwgZGF0YSBsb2FkZWQgaW50byBDTERSPydcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgLy8gbWF5YmUgY2xkciBzdXBwbGVtZW50YWwgaXMgbm90IGxvYWRlZD8gcmV2ZXJ0IHRvIG9yaWdpbmFsIG1ldGhvZFxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKClcbiAgICAgIC8vY2xkci1kYXRhIGRvZXNuJ3Qgc2VlbSB0byBiZSB6ZXJvIGJhc2VkXG4gICAgICBsZXQgbG9jYWxlRGF5ID0gTWF0aC5tYXgoXG4gICAgICAgIHBhcnNlSW50KGxvY2FsZShjdWx0dXJlKS5mb3JtYXREYXRlKGRhdGUsIHsgcmF3OiAnZScgfSksIDEwKSAtIDEsXG4gICAgICAgIDBcbiAgICAgIClcblxuICAgICAgcmV0dXJuIE1hdGguYWJzKGRhdGUuZ2V0RGF5KCkgLSBsb2NhbGVEYXkpXG4gICAgfVxuICB9XG5cbiAgaWYgKCFnbG9iYWxpemUubG9hZCkgcmV0dXJuIG9sZEdsb2JhbGl6ZShnbG9iYWxpemUpXG5cbiAgcmV0dXJuIG5ldyBEYXRlTG9jYWxpemVyKHtcbiAgICBmaXJzdE9mV2VlayxcbiAgICBmb3JtYXRzLFxuICAgIGZvcm1hdCh2YWx1ZSwgZm9ybWF0LCBjdWx0dXJlKSB7XG4gICAgICBmb3JtYXQgPSB0eXBlb2YgZm9ybWF0ID09PSAnc3RyaW5nJyA/IHsgcmF3OiBmb3JtYXQgfSA6IGZvcm1hdFxuICAgICAgcmV0dXJuIGxvY2FsZShjdWx0dXJlKS5mb3JtYXREYXRlKHZhbHVlLCBmb3JtYXQpXG4gICAgfSxcbiAgfSlcbn1cbiIsImltcG9ydCAqIGFzIGRhdGVzIGZyb20gJy4uL3V0aWxzL2RhdGVzJ1xuaW1wb3J0IHsgRGF0ZUxvY2FsaXplciB9IGZyb20gJy4uL2xvY2FsaXplcidcblxubGV0IGRhdGVSYW5nZUZvcm1hdCA9ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGAke2xvY2FsLmZvcm1hdChzdGFydCwgJ1AnLCBjdWx0dXJlKX0g4oCTICR7bG9jYWwuZm9ybWF0KGVuZCwgJ1AnLCBjdWx0dXJlKX1gXG5cbmxldCB0aW1lUmFuZ2VGb3JtYXQgPSAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBgJHtsb2NhbC5mb3JtYXQoc3RhcnQsICdwJywgY3VsdHVyZSl9IOKAkyAke2xvY2FsLmZvcm1hdChlbmQsICdwJywgY3VsdHVyZSl9YFxuXG5sZXQgdGltZVJhbmdlU3RhcnRGb3JtYXQgPSAoeyBzdGFydCB9LCBjdWx0dXJlLCBsb2NhbCkgPT5cbiAgYCR7bG9jYWwuZm9ybWF0KHN0YXJ0LCAnaDptbWEnLCBjdWx0dXJlKX0g4oCTIGBcblxubGV0IHRpbWVSYW5nZUVuZEZvcm1hdCA9ICh7IGVuZCB9LCBjdWx0dXJlLCBsb2NhbCkgPT5cbiAgYCDigJMgJHtsb2NhbC5mb3JtYXQoZW5kLCAnaDptbWEnLCBjdWx0dXJlKX1gXG5cbmxldCB3ZWVrUmFuZ2VGb3JtYXQgPSAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBgJHtsb2NhbC5mb3JtYXQoc3RhcnQsICdNTU1NIGRkJywgY3VsdHVyZSl9IOKAkyAke2xvY2FsLmZvcm1hdChcbiAgICBlbmQsXG4gICAgZGF0ZXMuZXEoc3RhcnQsIGVuZCwgJ21vbnRoJykgPyAnZGQnIDogJ01NTU0gZGQnLFxuICAgIGN1bHR1cmVcbiAgKX1gXG5cbmV4cG9ydCBsZXQgZm9ybWF0cyA9IHtcbiAgZGF0ZUZvcm1hdDogJ2RkJyxcbiAgZGF5Rm9ybWF0OiAnZGQgZWVlJyxcbiAgd2Vla2RheUZvcm1hdDogJ2NjY2MnLFxuXG4gIHNlbGVjdFJhbmdlRm9ybWF0OiB0aW1lUmFuZ2VGb3JtYXQsXG4gIGV2ZW50VGltZVJhbmdlRm9ybWF0OiB0aW1lUmFuZ2VGb3JtYXQsXG4gIGV2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQ6IHRpbWVSYW5nZVN0YXJ0Rm9ybWF0LFxuICBldmVudFRpbWVSYW5nZUVuZEZvcm1hdDogdGltZVJhbmdlRW5kRm9ybWF0LFxuXG4gIHRpbWVHdXR0ZXJGb3JtYXQ6ICdwJyxcblxuICBtb250aEhlYWRlckZvcm1hdDogJ01NTU0geXl5eScsXG4gIGRheUhlYWRlckZvcm1hdDogJ2NjY2MgTU1NIGRkJyxcbiAgZGF5UmFuZ2VIZWFkZXJGb3JtYXQ6IHdlZWtSYW5nZUZvcm1hdCxcbiAgYWdlbmRhSGVhZGVyRm9ybWF0OiBkYXRlUmFuZ2VGb3JtYXQsXG5cbiAgYWdlbmRhRGF0ZUZvcm1hdDogJ2NjYyBNTU0gZGQnLFxuICBhZ2VuZGFUaW1lRm9ybWF0OiAncCcsXG4gIGFnZW5kYVRpbWVSYW5nZUZvcm1hdDogdGltZVJhbmdlRm9ybWF0LFxufVxuXG5jb25zdCBkYXRlRm5zTG9jYWxpemVyID0gZnVuY3Rpb24gKHtcbiAgc3RhcnRPZldlZWssXG4gIGdldERheSxcbiAgZm9ybWF0OiBfZm9ybWF0LFxuICBsb2NhbGVzLFxufSkge1xuICByZXR1cm4gbmV3IERhdGVMb2NhbGl6ZXIoe1xuICAgIGZvcm1hdHMsXG4gICAgZmlyc3RPZldlZWsoY3VsdHVyZSkge1xuICAgICAgcmV0dXJuIGdldERheShzdGFydE9mV2VlayhuZXcgRGF0ZSgpLCB7IGxvY2FsZTogbG9jYWxlc1tjdWx0dXJlXSB9KSlcbiAgICB9LFxuXG4gICAgZm9ybWF0KHZhbHVlLCBmb3JtYXRTdHJpbmcsIGN1bHR1cmUpIHtcbiAgICAgIHJldHVybiBfZm9ybWF0KG5ldyBEYXRlKHZhbHVlKSwgZm9ybWF0U3RyaW5nLCB7XG4gICAgICAgIGxvY2FsZTogbG9jYWxlc1tjdWx0dXJlXSxcbiAgICAgIH0pXG4gICAgfSxcbiAgfSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGF0ZUZuc0xvY2FsaXplclxuIiwiaW1wb3J0IHsgRGF0ZUxvY2FsaXplciB9IGZyb20gJy4uL2xvY2FsaXplcidcblxuLy8gaW1wb3J0IGRheWpzIHBsdWdpbnNcbi8vIE5vdGUgdGhhdCB0aGUgdGltZXpvbmUgcGx1Z2luIGlzIG5vdCBpbXBvcnRlZCBoZXJlXG4vLyB0aGlzIHBsdWdpbiBjYW4gYmUgb3B0aW9uYWxseSBsb2FkZWQgYnkgdGhlIHVzZXJcbmltcG9ydCBpc0JldHdlZW4gZnJvbSAnZGF5anMvcGx1Z2luL2lzQmV0d2VlbidcbmltcG9ydCBpc1NhbWVPckFmdGVyIGZyb20gJ2RheWpzL3BsdWdpbi9pc1NhbWVPckFmdGVyJ1xuaW1wb3J0IGlzU2FtZU9yQmVmb3JlIGZyb20gJ2RheWpzL3BsdWdpbi9pc1NhbWVPckJlZm9yZSdcbmltcG9ydCBsb2NhbGVEYXRhIGZyb20gJ2RheWpzL3BsdWdpbi9sb2NhbGVEYXRhJ1xuaW1wb3J0IGxvY2FsaXplZEZvcm1hdCBmcm9tICdkYXlqcy9wbHVnaW4vbG9jYWxpemVkRm9ybWF0J1xuaW1wb3J0IG1pbk1heCBmcm9tICdkYXlqcy9wbHVnaW4vbWluTWF4J1xuaW1wb3J0IHV0YyBmcm9tICdkYXlqcy9wbHVnaW4vdXRjJ1xuXG5jb25zdCB3ZWVrUmFuZ2VGb3JtYXQgPSAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBsb2NhbC5mb3JtYXQoc3RhcnQsICdNTU1NIEREJywgY3VsdHVyZSkgK1xuICAnIOKAkyAnICtcbiAgLy8gdXBkYXRlZCB0byB1c2UgdGhpcyBsb2NhbGl6ZXIgJ2VxKCknIG1ldGhvZFxuICBsb2NhbC5mb3JtYXQoZW5kLCBsb2NhbC5lcShzdGFydCwgZW5kLCAnbW9udGgnKSA/ICdERCcgOiAnTU1NTSBERCcsIGN1bHR1cmUpXG5cbmNvbnN0IGRhdGVSYW5nZUZvcm1hdCA9ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGxvY2FsLmZvcm1hdChzdGFydCwgJ0wnLCBjdWx0dXJlKSArICcg4oCTICcgKyBsb2NhbC5mb3JtYXQoZW5kLCAnTCcsIGN1bHR1cmUpXG5cbmNvbnN0IHRpbWVSYW5nZUZvcm1hdCA9ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGxvY2FsLmZvcm1hdChzdGFydCwgJ0xUJywgY3VsdHVyZSkgKyAnIOKAkyAnICsgbG9jYWwuZm9ybWF0KGVuZCwgJ0xUJywgY3VsdHVyZSlcblxuY29uc3QgdGltZVJhbmdlU3RhcnRGb3JtYXQgPSAoeyBzdGFydCB9LCBjdWx0dXJlLCBsb2NhbCkgPT5cbiAgbG9jYWwuZm9ybWF0KHN0YXJ0LCAnTFQnLCBjdWx0dXJlKSArICcg4oCTICdcblxuY29uc3QgdGltZVJhbmdlRW5kRm9ybWF0ID0gKHsgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICAnIOKAkyAnICsgbG9jYWwuZm9ybWF0KGVuZCwgJ0xUJywgY3VsdHVyZSlcblxuZXhwb3J0IGNvbnN0IGZvcm1hdHMgPSB7XG4gIGRhdGVGb3JtYXQ6ICdERCcsXG4gIGRheUZvcm1hdDogJ0REIGRkZCcsXG4gIHdlZWtkYXlGb3JtYXQ6ICdkZGQnLFxuXG4gIHNlbGVjdFJhbmdlRm9ybWF0OiB0aW1lUmFuZ2VGb3JtYXQsXG4gIGV2ZW50VGltZVJhbmdlRm9ybWF0OiB0aW1lUmFuZ2VGb3JtYXQsXG4gIGV2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQ6IHRpbWVSYW5nZVN0YXJ0Rm9ybWF0LFxuICBldmVudFRpbWVSYW5nZUVuZEZvcm1hdDogdGltZVJhbmdlRW5kRm9ybWF0LFxuXG4gIHRpbWVHdXR0ZXJGb3JtYXQ6ICdMVCcsXG5cbiAgbW9udGhIZWFkZXJGb3JtYXQ6ICdNTU1NIFlZWVknLFxuICBkYXlIZWFkZXJGb3JtYXQ6ICdkZGRkIE1NTSBERCcsXG4gIGRheVJhbmdlSGVhZGVyRm9ybWF0OiB3ZWVrUmFuZ2VGb3JtYXQsXG4gIGFnZW5kYUhlYWRlckZvcm1hdDogZGF0ZVJhbmdlRm9ybWF0LFxuXG4gIGFnZW5kYURhdGVGb3JtYXQ6ICdkZGQgTU1NIEREJyxcbiAgYWdlbmRhVGltZUZvcm1hdDogJ0xUJyxcbiAgYWdlbmRhVGltZVJhbmdlRm9ybWF0OiB0aW1lUmFuZ2VGb3JtYXQsXG59XG5cbmZ1bmN0aW9uIGZpeFVuaXQodW5pdCkge1xuICBsZXQgZGF0ZVBhcnQgPSB1bml0ID8gdW5pdC50b0xvd2VyQ2FzZSgpIDogdW5pdFxuICBpZiAoZGF0ZVBhcnQgPT09ICdGdWxsWWVhcicpIHtcbiAgICBkYXRlUGFydCA9ICd5ZWFyJ1xuICB9IGVsc2UgaWYgKCFkYXRlUGFydCkge1xuICAgIGRhdGVQYXJ0ID0gdW5kZWZpbmVkXG4gIH1cbiAgcmV0dXJuIGRhdGVQYXJ0XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChkYXlqc0xpYikge1xuICAvLyBsb2FkIGRheWpzIHBsdWdpbnNcbiAgZGF5anNMaWIuZXh0ZW5kKGlzQmV0d2VlbilcbiAgZGF5anNMaWIuZXh0ZW5kKGlzU2FtZU9yQWZ0ZXIpXG4gIGRheWpzTGliLmV4dGVuZChpc1NhbWVPckJlZm9yZSlcbiAgZGF5anNMaWIuZXh0ZW5kKGxvY2FsZURhdGEpXG4gIGRheWpzTGliLmV4dGVuZChsb2NhbGl6ZWRGb3JtYXQpXG4gIGRheWpzTGliLmV4dGVuZChtaW5NYXgpXG4gIGRheWpzTGliLmV4dGVuZCh1dGMpXG5cbiAgY29uc3QgbG9jYWxlID0gKGRqLCBjKSA9PiAoYyA/IGRqLmxvY2FsZShjKSA6IGRqKVxuXG4gIC8vIGlmIHRoZSB0aW1lem9uZSBwbHVnaW4gaXMgbG9hZGVkLFxuICAvLyB0aGVuIHVzZSB0aGUgdGltZXpvbmUgYXdhcmUgdmVyc2lvblxuICBjb25zdCBkYXlqcyA9IGRheWpzTGliLnR6ID8gZGF5anNMaWIudHogOiBkYXlqc0xpYlxuXG4gIGZ1bmN0aW9uIGdldFRpbWV6b25lT2Zmc2V0KGRhdGUpIHtcbiAgICAvLyBlbnN1cmVzIHRoaXMgZ2V0cyBjYXN0IHRvIHRpbWV6b25lXG4gICAgcmV0dXJuIGRheWpzKGRhdGUpLnRvRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KClcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldERzdE9mZnNldChzdGFydCwgZW5kKSB7XG4gICAgLy8gY29udmVydCB0byBkYXlqcywgaW4gY2FzZVxuICAgIGNvbnN0IHN0ID0gZGF5anMoc3RhcnQpXG4gICAgY29uc3QgZWQgPSBkYXlqcyhlbmQpXG4gICAgLy8gaWYgbm90IHVzaW5nIHRoZSBkYXlqcyB0aW1lem9uZSBwbHVnaW5cbiAgICBpZiAoIWRheWpzLnR6KSB7XG4gICAgICByZXR1cm4gc3QudG9EYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGVkLnRvRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KClcbiAgICB9XG4gICAgLyoqXG4gICAgICogSWYgYSBkZWZhdWx0IHRpbWV6b25lIGhhcyBiZWVuIGFwcGxpZWQsIHRoZW5cbiAgICAgKiB1c2UgdGhpcyB0byBnZXQgdGhlIHByb3BlciB0aW1lem9uZSBvZmZzZXQsIG90aGVyd2lzZSBkZWZhdWx0XG4gICAgICogdGhlIHRpbWV6b25lIHRvIHRoZSBicm93c2VyIGxvY2FsXG4gICAgICovXG4gICAgY29uc3QgdHpOYW1lID0gc3QudHooKS4keC4kdGltZXpvbmUgPz8gZGF5anNMaWIudHouZ3Vlc3MoKVxuICAgIC8vIGludmVydCBvZmZzZXRzIHRvIGJlIGlubGluZSB3aXRoIG1vbWVudC5qc1xuICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gLWRheWpzLnR6KCtzdCwgdHpOYW1lKS51dGNPZmZzZXQoKVxuICAgIGNvbnN0IGVuZE9mZnNldCA9IC1kYXlqcy50eigrZWQsIHR6TmFtZSkudXRjT2Zmc2V0KClcbiAgICByZXR1cm4gc3RhcnRPZmZzZXQgLSBlbmRPZmZzZXRcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldERheVN0YXJ0RHN0T2Zmc2V0KHN0YXJ0KSB7XG4gICAgY29uc3QgZGF5U3RhcnQgPSBkYXlqcyhzdGFydCkuc3RhcnRPZignZGF5JylcbiAgICByZXR1cm4gZ2V0RHN0T2Zmc2V0KGRheVN0YXJ0LCBzdGFydClcbiAgfVxuXG4gIC8qKiogQkVHSU4gbG9jYWxpemVkIGRhdGUgYXJpdGhtZXRpYyBtZXRob2RzIHdpdGggZGF5anMgKioqL1xuICBmdW5jdGlvbiBkZWZpbmVDb21wYXJhdG9ycyhhLCBiLCB1bml0KSB7XG4gICAgY29uc3QgZGF0ZVBhcnQgPSBmaXhVbml0KHVuaXQpXG4gICAgY29uc3QgZHRBID0gZGF0ZVBhcnQgPyBkYXlqcyhhKS5zdGFydE9mKGRhdGVQYXJ0KSA6IGRheWpzKGEpXG4gICAgY29uc3QgZHRCID0gZGF0ZVBhcnQgPyBkYXlqcyhiKS5zdGFydE9mKGRhdGVQYXJ0KSA6IGRheWpzKGIpXG4gICAgcmV0dXJuIFtkdEEsIGR0QiwgZGF0ZVBhcnRdXG4gIH1cblxuICBmdW5jdGlvbiBzdGFydE9mKGRhdGUgPSBudWxsLCB1bml0KSB7XG4gICAgY29uc3QgZGF0ZVBhcnQgPSBmaXhVbml0KHVuaXQpXG4gICAgaWYgKGRhdGVQYXJ0KSB7XG4gICAgICByZXR1cm4gZGF5anMoZGF0ZSkuc3RhcnRPZihkYXRlUGFydCkudG9EYXRlKClcbiAgICB9XG4gICAgcmV0dXJuIGRheWpzKGRhdGUpLnRvRGF0ZSgpXG4gIH1cblxuICBmdW5jdGlvbiBlbmRPZihkYXRlID0gbnVsbCwgdW5pdCkge1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gZml4VW5pdCh1bml0KVxuICAgIGlmIChkYXRlUGFydCkge1xuICAgICAgcmV0dXJuIGRheWpzKGRhdGUpLmVuZE9mKGRhdGVQYXJ0KS50b0RhdGUoKVxuICAgIH1cbiAgICByZXR1cm4gZGF5anMoZGF0ZSkudG9EYXRlKClcbiAgfVxuXG4gIC8vIGRheWpzIGNvbXBhcmlzb24gb3BlcmF0aW9ucyAqYWx3YXlzKiBjb252ZXJ0IGJvdGggc2lkZXMgdG8gZGF5anMgb2JqZWN0c1xuICAvLyBwcmlvciB0byBydW5uaW5nIHRoZSBjb21wYXJpc29uc1xuICBmdW5jdGlvbiBlcShhLCBiLCB1bml0KSB7XG4gICAgY29uc3QgW2R0QSwgZHRCLCBkYXRlUGFydF0gPSBkZWZpbmVDb21wYXJhdG9ycyhhLCBiLCB1bml0KVxuICAgIHJldHVybiBkdEEuaXNTYW1lKGR0QiwgZGF0ZVBhcnQpXG4gIH1cblxuICBmdW5jdGlvbiBuZXEoYSwgYiwgdW5pdCkge1xuICAgIHJldHVybiAhZXEoYSwgYiwgdW5pdClcbiAgfVxuXG4gIGZ1bmN0aW9uIGd0KGEsIGIsIHVuaXQpIHtcbiAgICBjb25zdCBbZHRBLCBkdEIsIGRhdGVQYXJ0XSA9IGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpXG4gICAgcmV0dXJuIGR0QS5pc0FmdGVyKGR0QiwgZGF0ZVBhcnQpXG4gIH1cblxuICBmdW5jdGlvbiBsdChhLCBiLCB1bml0KSB7XG4gICAgY29uc3QgW2R0QSwgZHRCLCBkYXRlUGFydF0gPSBkZWZpbmVDb21wYXJhdG9ycyhhLCBiLCB1bml0KVxuICAgIHJldHVybiBkdEEuaXNCZWZvcmUoZHRCLCBkYXRlUGFydClcbiAgfVxuXG4gIGZ1bmN0aW9uIGd0ZShhLCBiLCB1bml0KSB7XG4gICAgY29uc3QgW2R0QSwgZHRCLCBkYXRlUGFydF0gPSBkZWZpbmVDb21wYXJhdG9ycyhhLCBiLCB1bml0KVxuICAgIHJldHVybiBkdEEuaXNTYW1lT3JCZWZvcmUoZHRCLCBkYXRlUGFydClcbiAgfVxuXG4gIGZ1bmN0aW9uIGx0ZShhLCBiLCB1bml0KSB7XG4gICAgY29uc3QgW2R0QSwgZHRCLCBkYXRlUGFydF0gPSBkZWZpbmVDb21wYXJhdG9ycyhhLCBiLCB1bml0KVxuICAgIHJldHVybiBkdEEuaXNTYW1lT3JCZWZvcmUoZHRCLCBkYXRlUGFydClcbiAgfVxuXG4gIGZ1bmN0aW9uIGluUmFuZ2UoZGF5LCBtaW4sIG1heCwgdW5pdCA9ICdkYXknKSB7XG4gICAgY29uc3QgZGF0ZVBhcnQgPSBmaXhVbml0KHVuaXQpXG4gICAgY29uc3QgZGpEYXkgPSBkYXlqcyhkYXkpXG4gICAgY29uc3QgZGpNaW4gPSBkYXlqcyhtaW4pXG4gICAgY29uc3QgZGpNYXggPSBkYXlqcyhtYXgpXG4gICAgcmV0dXJuIGRqRGF5LmlzQmV0d2Vlbihkak1pbiwgZGpNYXgsIGRhdGVQYXJ0LCAnW10nKVxuICB9XG5cbiAgZnVuY3Rpb24gbWluKGRhdGVBLCBkYXRlQikge1xuICAgIGNvbnN0IGR0QSA9IGRheWpzKGRhdGVBKVxuICAgIGNvbnN0IGR0QiA9IGRheWpzKGRhdGVCKVxuICAgIGNvbnN0IG1pbkR0ID0gZGF5anNMaWIubWluKGR0QSwgZHRCKVxuICAgIHJldHVybiBtaW5EdC50b0RhdGUoKVxuICB9XG5cbiAgZnVuY3Rpb24gbWF4KGRhdGVBLCBkYXRlQikge1xuICAgIGNvbnN0IGR0QSA9IGRheWpzKGRhdGVBKVxuICAgIGNvbnN0IGR0QiA9IGRheWpzKGRhdGVCKVxuICAgIGNvbnN0IG1heER0ID0gZGF5anNMaWIubWF4KGR0QSwgZHRCKVxuICAgIHJldHVybiBtYXhEdC50b0RhdGUoKVxuICB9XG5cbiAgZnVuY3Rpb24gbWVyZ2UoZGF0ZSwgdGltZSkge1xuICAgIGlmICghZGF0ZSAmJiAhdGltZSkgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHRtID0gZGF5anModGltZSkuZm9ybWF0KCdISDptbTpzcycpXG4gICAgY29uc3QgZHQgPSBkYXlqcyhkYXRlKS5zdGFydE9mKCdkYXknKS5mb3JtYXQoJ01NL0REL1lZWVknKVxuICAgIC8vIFdlIGRvIGl0IHRoaXMgd2F5IHRvIGF2b2lkIGlzc3VlcyB3aGVuIHRpbWV6b25lIHN3aXRjaGluZ1xuICAgIHJldHVybiBkYXlqc0xpYihgJHtkdH0gJHt0bX1gLCAnTU0vREQvWVlZWSBISDptbTpzcycpLnRvRGF0ZSgpXG4gIH1cblxuICBmdW5jdGlvbiBhZGQoZGF0ZSwgYWRkZXIsIHVuaXQpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICByZXR1cm4gZGF5anMoZGF0ZSkuYWRkKGFkZGVyLCBkYXRlUGFydCkudG9EYXRlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIHJhbmdlKHN0YXJ0LCBlbmQsIHVuaXQgPSAnZGF5Jykge1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gZml4VW5pdCh1bml0KVxuICAgIC8vIGJlY2F1c2UgdGhlIGFkZCBtZXRob2Qgd2lsbCBwdXQgdGhlc2UgaW4gdHosIHdlIGhhdmUgdG8gc3RhcnQgdGhhdCB3YXlcbiAgICBsZXQgY3VycmVudCA9IGRheWpzKHN0YXJ0KS50b0RhdGUoKVxuICAgIGNvbnN0IGRheXMgPSBbXVxuXG4gICAgd2hpbGUgKGx0ZShjdXJyZW50LCBlbmQpKSB7XG4gICAgICBkYXlzLnB1c2goY3VycmVudClcbiAgICAgIGN1cnJlbnQgPSBhZGQoY3VycmVudCwgMSwgZGF0ZVBhcnQpXG4gICAgfVxuXG4gICAgcmV0dXJuIGRheXNcbiAgfVxuXG4gIGZ1bmN0aW9uIGNlaWwoZGF0ZSwgdW5pdCkge1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gZml4VW5pdCh1bml0KVxuICAgIGNvbnN0IGZsb29yID0gc3RhcnRPZihkYXRlLCBkYXRlUGFydClcblxuICAgIHJldHVybiBlcShmbG9vciwgZGF0ZSkgPyBmbG9vciA6IGFkZChmbG9vciwgMSwgZGF0ZVBhcnQpXG4gIH1cblxuICBmdW5jdGlvbiBkaWZmKGEsIGIsIHVuaXQgPSAnZGF5Jykge1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gZml4VW5pdCh1bml0KVxuICAgIC8vIGRvbid0IHVzZSAnZGVmaW5lQ29tcGFyYXRvcnMnIGhlcmUsIGFzIHdlIGRvbid0IHdhbnQgdG8gbXV0YXRlIHRoZSB2YWx1ZXNcbiAgICBjb25zdCBkdEEgPSBkYXlqcyhhKVxuICAgIGNvbnN0IGR0QiA9IGRheWpzKGIpXG4gICAgcmV0dXJuIGR0Qi5kaWZmKGR0QSwgZGF0ZVBhcnQpXG4gIH1cblxuICBmdW5jdGlvbiBtaW51dGVzKGRhdGUpIHtcbiAgICBjb25zdCBkdCA9IGRheWpzKGRhdGUpXG4gICAgcmV0dXJuIGR0Lm1pbnV0ZXMoKVxuICB9XG5cbiAgZnVuY3Rpb24gZmlyc3RPZldlZWsoY3VsdHVyZSkge1xuICAgIGNvbnN0IGRhdGEgPSBjdWx0dXJlID8gZGF5anNMaWIubG9jYWxlRGF0YShjdWx0dXJlKSA6IGRheWpzTGliLmxvY2FsZURhdGEoKVxuICAgIHJldHVybiBkYXRhID8gZGF0YS5maXJzdERheU9mV2VlaygpIDogMFxuICB9XG5cbiAgZnVuY3Rpb24gZmlyc3RWaXNpYmxlRGF5KGRhdGUpIHtcbiAgICByZXR1cm4gZGF5anMoZGF0ZSkuc3RhcnRPZignbW9udGgnKS5zdGFydE9mKCd3ZWVrJykudG9EYXRlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGxhc3RWaXNpYmxlRGF5KGRhdGUpIHtcbiAgICByZXR1cm4gZGF5anMoZGF0ZSkuZW5kT2YoJ21vbnRoJykuZW5kT2YoJ3dlZWsnKS50b0RhdGUoKVxuICB9XG5cbiAgZnVuY3Rpb24gdmlzaWJsZURheXMoZGF0ZSkge1xuICAgIGxldCBjdXJyZW50ID0gZmlyc3RWaXNpYmxlRGF5KGRhdGUpXG4gICAgY29uc3QgbGFzdCA9IGxhc3RWaXNpYmxlRGF5KGRhdGUpXG4gICAgY29uc3QgZGF5cyA9IFtdXG5cbiAgICB3aGlsZSAobHRlKGN1cnJlbnQsIGxhc3QpKSB7XG4gICAgICBkYXlzLnB1c2goY3VycmVudClcbiAgICAgIGN1cnJlbnQgPSBhZGQoY3VycmVudCwgMSwgJ2QnKVxuICAgIH1cblxuICAgIHJldHVybiBkYXlzXG4gIH1cbiAgLyoqKiBFTkQgbG9jYWxpemVkIGRhdGUgYXJpdGhtZXRpYyBtZXRob2RzIHdpdGggZGF5anMgKioqL1xuXG4gIC8qKlxuICAgKiBNb3ZlZCBmcm9tIFRpbWVTbG90cy5qcywgdGhpcyBtZXRob2Qgb3ZlcnJpZGVzIHRoZSBtZXRob2Qgb2YgdGhlIHNhbWUgbmFtZVxuICAgKiBpbiB0aGUgbG9jYWxpemVyLmpzLCB1c2luZyBkYXlqcyB0byBjb25zdHJ1Y3QgdGhlIGpzIERhdGVcbiAgICogQHBhcmFtIHtEYXRlfSBkdCAtIGRhdGUgdG8gc3RhcnQgd2l0aFxuICAgKiBAcGFyYW0ge051bWJlcn0gbWludXRlc0Zyb21NaWRuaWdodFxuICAgKiBAcGFyYW0ge051bWJlcn0gb2Zmc2V0XG4gICAqIEByZXR1cm5zIHtEYXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0U2xvdERhdGUoZHQsIG1pbnV0ZXNGcm9tTWlkbmlnaHQsIG9mZnNldCkge1xuICAgIHJldHVybiBkYXlqcyhkdClcbiAgICAgIC5zdGFydE9mKCdkYXknKVxuICAgICAgLm1pbnV0ZShtaW51dGVzRnJvbU1pZG5pZ2h0ICsgb2Zmc2V0KVxuICAgICAgLnRvRGF0ZSgpXG4gIH1cblxuICAvLyBkYXlqcyB3aWxsIGF1dG9tYXRpY2FsbHkgaGFuZGxlIERTVCBkaWZmZXJlbmNlcyBpbiBpdCdzIGNhbGN1bGF0aW9uc1xuICBmdW5jdGlvbiBnZXRUb3RhbE1pbihzdGFydCwgZW5kKSB7XG4gICAgcmV0dXJuIGRpZmYoc3RhcnQsIGVuZCwgJ21pbnV0ZXMnKVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TWludXRlc0Zyb21NaWRuaWdodChzdGFydCkge1xuICAgIGNvbnN0IGRheVN0YXJ0ID0gZGF5anMoc3RhcnQpLnN0YXJ0T2YoJ2RheScpXG4gICAgY29uc3QgZGF5ID0gZGF5anMoc3RhcnQpXG4gICAgcmV0dXJuIGRheS5kaWZmKGRheVN0YXJ0LCAnbWludXRlcycpICsgZ2V0RGF5U3RhcnREc3RPZmZzZXQoc3RhcnQpXG4gIH1cblxuICAvLyBUaGVzZSB0d28gYXJlIHVzZWQgYnkgRGF0ZVNsb3RNZXRyaWNzXG4gIGZ1bmN0aW9uIGNvbnRpbnVlc1ByaW9yKHN0YXJ0LCBmaXJzdCkge1xuICAgIGNvbnN0IGRqU3RhcnQgPSBkYXlqcyhzdGFydClcbiAgICBjb25zdCBkakZpcnN0ID0gZGF5anMoZmlyc3QpXG4gICAgcmV0dXJuIGRqU3RhcnQuaXNCZWZvcmUoZGpGaXJzdCwgJ2RheScpXG4gIH1cblxuICBmdW5jdGlvbiBjb250aW51ZXNBZnRlcihzdGFydCwgZW5kLCBsYXN0KSB7XG4gICAgY29uc3QgZGpFbmQgPSBkYXlqcyhlbmQpXG4gICAgY29uc3QgZGpMYXN0ID0gZGF5anMobGFzdClcbiAgICByZXR1cm4gZGpFbmQuaXNTYW1lT3JBZnRlcihkakxhc3QsICdtaW51dGVzJylcbiAgfVxuXG4gIGZ1bmN0aW9uIGRheVNwYW4oc3RhcnQsIGVuZCkge1xuICAgIGNvbnN0IHN0YXJ0RGF5ID0gZGF5anMoc3RhcnQpXG4gICAgY29uc3QgZW5kRGF5ID0gZGF5anMoZW5kKVxuICAgIHJldHVybiBlbmREYXkuZGlmZihzdGFydERheSwgJ2RheScpXG4gIH1cblxuICAvLyBUaGVzZSB0d28gYXJlIHVzZWQgYnkgZXZlbnRMZXZlbHNcbiAgZnVuY3Rpb24gc29ydEV2ZW50cyh7XG4gICAgZXZ0QTogeyBzdGFydDogYVN0YXJ0LCBlbmQ6IGFFbmQsIGFsbERheTogYUFsbERheSB9LFxuICAgIGV2dEI6IHsgc3RhcnQ6IGJTdGFydCwgZW5kOiBiRW5kLCBhbGxEYXk6IGJBbGxEYXkgfSxcbiAgfSkge1xuICAgIGNvbnN0IHN0YXJ0U29ydCA9ICtzdGFydE9mKGFTdGFydCwgJ2RheScpIC0gK3N0YXJ0T2YoYlN0YXJ0LCAnZGF5JylcblxuICAgIGNvbnN0IGR1ckEgPSBkYXlTcGFuKGFTdGFydCwgYUVuZClcblxuICAgIGNvbnN0IGR1ckIgPSBkYXlTcGFuKGJTdGFydCwgYkVuZClcblxuICAgIHJldHVybiAoXG4gICAgICBzdGFydFNvcnQgfHwgLy8gc29ydCBieSBzdGFydCBEYXkgZmlyc3RcbiAgICAgIGR1ckIgLSBkdXJBIHx8IC8vIGV2ZW50cyBzcGFubmluZyBtdWx0aXBsZSBkYXlzIGdvIGZpcnN0XG4gICAgICAhIWJBbGxEYXkgLSAhIWFBbGxEYXkgfHwgLy8gdGhlbiBhbGxEYXkgc2luZ2xlIGRheSBldmVudHNcbiAgICAgICthU3RhcnQgLSArYlN0YXJ0IHx8IC8vIHRoZW4gc29ydCBieSBzdGFydCB0aW1lICpkb24ndCBuZWVkIGRheWpzIGNvbnZlcnNpb24gaGVyZVxuICAgICAgK2FFbmQgLSArYkVuZCAvLyB0aGVuIHNvcnQgYnkgZW5kIHRpbWUgKmRvbid0IG5lZWQgZGF5anMgY29udmVyc2lvbiBoZXJlIGVpdGhlclxuICAgIClcbiAgfVxuXG4gIGZ1bmN0aW9uIGluRXZlbnRSYW5nZSh7XG4gICAgZXZlbnQ6IHsgc3RhcnQsIGVuZCB9LFxuICAgIHJhbmdlOiB7IHN0YXJ0OiByYW5nZVN0YXJ0LCBlbmQ6IHJhbmdlRW5kIH0sXG4gIH0pIHtcbiAgICBjb25zdCBzdGFydE9mRGF5ID0gZGF5anMoc3RhcnQpLnN0YXJ0T2YoJ2RheScpXG4gICAgY29uc3QgZUVuZCA9IGRheWpzKGVuZClcbiAgICBjb25zdCByU3RhcnQgPSBkYXlqcyhyYW5nZVN0YXJ0KVxuICAgIGNvbnN0IHJFbmQgPSBkYXlqcyhyYW5nZUVuZClcblxuICAgIGNvbnN0IHN0YXJ0c0JlZm9yZUVuZCA9IHN0YXJ0T2ZEYXkuaXNTYW1lT3JCZWZvcmUockVuZCwgJ2RheScpXG4gICAgLy8gd2hlbiB0aGUgZXZlbnQgaXMgemVybyBkdXJhdGlvbiB3ZSBuZWVkIHRvIGhhbmRsZSBhIGJpdCBkaWZmZXJlbnRseVxuICAgIGNvbnN0IHNhbWVNaW4gPSAhc3RhcnRPZkRheS5pc1NhbWUoZUVuZCwgJ21pbnV0ZXMnKVxuICAgIGNvbnN0IGVuZHNBZnRlclN0YXJ0ID0gc2FtZU1pblxuICAgICAgPyBlRW5kLmlzQWZ0ZXIoclN0YXJ0LCAnbWludXRlcycpXG4gICAgICA6IGVFbmQuaXNTYW1lT3JBZnRlcihyU3RhcnQsICdtaW51dGVzJylcblxuICAgIHJldHVybiBzdGFydHNCZWZvcmVFbmQgJiYgZW5kc0FmdGVyU3RhcnRcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzU2FtZURhdGUoZGF0ZTEsIGRhdGUyKSB7XG4gICAgY29uc3QgZHQgPSBkYXlqcyhkYXRlMSlcbiAgICBjb25zdCBkdDIgPSBkYXlqcyhkYXRlMilcbiAgICByZXR1cm4gZHQuaXNTYW1lKGR0MiwgJ2RheScpXG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QsIGNhbGxlZCBvbmNlIGluIHRoZSBsb2NhbGl6ZXIgY29uc3RydWN0b3IsIGlzIHVzZWQgYnkgZXZlbnRMZXZlbHNcbiAgICogJ2V2ZW50U2VnbWVudHMoKScgdG8gYXNzaXN0IGluIGRldGVybWluaW5nIHRoZSAnc3Bhbicgb2YgdGhlIGV2ZW50IGluIHRoZSBkaXNwbGF5LFxuICAgKiBzcGVjaWZpY2FsbHkgd2hlbiB1c2luZyBhIHRpbWV6b25lIHRoYXQgaXMgZ3JlYXRlciB0aGFuIHRoZSBicm93c2VyIG5hdGl2ZSB0aW1lem9uZS5cbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBmdW5jdGlvbiBicm93c2VyVFpPZmZzZXQoKSB7XG4gICAgLyoqXG4gICAgICogRGF0ZS5wcm90b3R5cGUuZ2V0VGltZXpvbmVPZmZzZXQgaG9ycmlmaWNhbGx5IGZsaXBzIHRoZSBwb3NpdGl2ZS9uZWdhdGl2ZSBmcm9tXG4gICAgICogd2hhdCB5b3Ugc2VlIGluIGl0J3Mgc3RyaW5nLCBzbyB3ZSBoYXZlIHRvIGp1bXAgdGhyb3VnaCBzb21lIGhvb3BzIHRvIGdldCBhIHZhbHVlXG4gICAgICogd2UgY2FuIGFjdHVhbGx5IGNvbXBhcmUuXG4gICAgICovXG4gICAgY29uc3QgZHQgPSBuZXcgRGF0ZSgpXG4gICAgY29uc3QgbmVnID0gLy0vLnRlc3QoZHQudG9TdHJpbmcoKSkgPyAnLScgOiAnJ1xuICAgIGNvbnN0IGR0T2Zmc2V0ID0gZHQuZ2V0VGltZXpvbmVPZmZzZXQoKVxuICAgIGNvbnN0IGNvbXBhcmF0b3IgPSBOdW1iZXIoYCR7bmVnfSR7TWF0aC5hYnMoZHRPZmZzZXQpfWApXG4gICAgLy8gZGF5anMgY29ycmVjdGx5IHByb3ZpZGVzIHBvc2l0aXZlL25lZ2F0aXZlIG9mZnNldCwgYXMgZXhwZWN0ZWRcbiAgICBjb25zdCBtdE9mZnNldCA9IGRheWpzKCkudXRjT2Zmc2V0KClcbiAgICByZXR1cm4gbXRPZmZzZXQgPiBjb21wYXJhdG9yID8gMSA6IDBcbiAgfVxuXG4gIHJldHVybiBuZXcgRGF0ZUxvY2FsaXplcih7XG4gICAgZm9ybWF0cyxcblxuICAgIGZpcnN0T2ZXZWVrLFxuICAgIGZpcnN0VmlzaWJsZURheSxcbiAgICBsYXN0VmlzaWJsZURheSxcbiAgICB2aXNpYmxlRGF5cyxcblxuICAgIGZvcm1hdCh2YWx1ZSwgZm9ybWF0LCBjdWx0dXJlKSB7XG4gICAgICByZXR1cm4gbG9jYWxlKGRheWpzKHZhbHVlKSwgY3VsdHVyZSkuZm9ybWF0KGZvcm1hdClcbiAgICB9LFxuXG4gICAgbHQsXG4gICAgbHRlLFxuICAgIGd0LFxuICAgIGd0ZSxcbiAgICBlcSxcbiAgICBuZXEsXG4gICAgbWVyZ2UsXG4gICAgaW5SYW5nZSxcbiAgICBzdGFydE9mLFxuICAgIGVuZE9mLFxuICAgIHJhbmdlLFxuICAgIGFkZCxcbiAgICBkaWZmLFxuICAgIGNlaWwsXG4gICAgbWluLFxuICAgIG1heCxcbiAgICBtaW51dGVzLFxuXG4gICAgZ2V0U2xvdERhdGUsXG4gICAgZ2V0VGltZXpvbmVPZmZzZXQsXG4gICAgZ2V0RHN0T2Zmc2V0LFxuICAgIGdldFRvdGFsTWluLFxuICAgIGdldE1pbnV0ZXNGcm9tTWlkbmlnaHQsXG4gICAgY29udGludWVzUHJpb3IsXG4gICAgY29udGludWVzQWZ0ZXIsXG4gICAgc29ydEV2ZW50cyxcbiAgICBpbkV2ZW50UmFuZ2UsXG4gICAgaXNTYW1lRGF0ZSxcbiAgICBicm93c2VyVFpPZmZzZXQsXG4gIH0pXG59XG4iLCJpbXBvcnQgRXZlbnRXcmFwcGVyIGZyb20gJy4vRXZlbnRXcmFwcGVyJ1xuaW1wb3J0IEJhY2tncm91bmRXcmFwcGVyIGZyb20gJy4vQmFja2dyb3VuZFdyYXBwZXInXG5cbmV4cG9ydCBjb25zdCBjb21wb25lbnRzID0ge1xuICBldmVudFdyYXBwZXI6IEV2ZW50V3JhcHBlcixcbiAgdGltZVNsb3RXcmFwcGVyOiBCYWNrZ3JvdW5kV3JhcHBlcixcbiAgZGF0ZUNlbGxXcmFwcGVyOiBCYWNrZ3JvdW5kV3JhcHBlcixcbn1cblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBDYWxlbmRhciB9IGZyb20gJy4vQ2FsZW5kYXInXG5leHBvcnQgeyBEYXRlTG9jYWxpemVyIH0gZnJvbSAnLi9sb2NhbGl6ZXInXG5leHBvcnQgeyBkZWZhdWx0IGFzIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4vbG9jYWxpemVycy9tb21lbnQnXG5leHBvcnQgeyBkZWZhdWx0IGFzIGx1eG9uTG9jYWxpemVyIH0gZnJvbSAnLi9sb2NhbGl6ZXJzL2x1eG9uJ1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnbG9iYWxpemVMb2NhbGl6ZXIgfSBmcm9tICcuL2xvY2FsaXplcnMvZ2xvYmFsaXplJ1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkYXRlRm5zTG9jYWxpemVyIH0gZnJvbSAnLi9sb2NhbGl6ZXJzL2RhdGUtZm5zJ1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkYXlqc0xvY2FsaXplciB9IGZyb20gJy4vbG9jYWxpemVycy9kYXlqcydcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbW92ZSB9IGZyb20gJy4vdXRpbHMvbW92ZSdcbmV4cG9ydCB7IHZpZXdzIGFzIFZpZXdzLCBuYXZpZ2F0ZSBhcyBOYXZpZ2F0ZSB9IGZyb20gJy4vdXRpbHMvY29uc3RhbnRzJ1xuIiwiLyoqXG4gKiBSZXRyaWV2ZSB2aWEgYW4gYWNjZXNzb3ItbGlrZSBwcm9wZXJ0eVxuICpcbiAqICAgIGFjY2Vzc29yKG9iaiwgJ25hbWUnKSAgIC8vID0+IHJldHJpZXZlcyBvYmpbJ25hbWUnXVxuICogICAgYWNjZXNzb3IoZGF0YSwgZnVuYykgICAgLy8gPT4gcmV0cmlldmVzIGZ1bmMoZGF0YSlcbiAqICAgIC4uLiBvdGhlcndpc2UgbnVsbFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWNjZXNzb3IoZGF0YSwgZmllbGQpIHtcbiAgdmFyIHZhbHVlID0gbnVsbFxuXG4gIGlmICh0eXBlb2YgZmllbGQgPT09ICdmdW5jdGlvbicpIHZhbHVlID0gZmllbGQoZGF0YSlcbiAgZWxzZSBpZiAoXG4gICAgdHlwZW9mIGZpZWxkID09PSAnc3RyaW5nJyAmJlxuICAgIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJlxuICAgIGRhdGEgIT0gbnVsbCAmJlxuICAgIGZpZWxkIGluIGRhdGFcbiAgKVxuICAgIHZhbHVlID0gZGF0YVtmaWVsZF1cblxuICByZXR1cm4gdmFsdWVcbn1cblxuZXhwb3J0IGNvbnN0IHdyYXBBY2Nlc3NvciA9IChhY2MpID0+IChkYXRhKSA9PiBhY2Nlc3NvcihkYXRhLCBhY2MpXG4iLCJleHBvcnQgbGV0IG5hdmlnYXRlID0ge1xuICBQUkVWSU9VUzogJ1BSRVYnLFxuICBORVhUOiAnTkVYVCcsXG4gIFRPREFZOiAnVE9EQVknLFxuICBEQVRFOiAnREFURScsXG59XG5cbmV4cG9ydCBsZXQgdmlld3MgPSB7XG4gIE1PTlRIOiAnbW9udGgnLFxuICBXRUVLOiAnd2VlaycsXG4gIFdPUktfV0VFSzogJ3dvcmtfd2VlaycsXG4gIERBWTogJ2RheScsXG4gIEFHRU5EQTogJ2FnZW5kYScsXG59XG4iLCIvKiBlc2xpbnQgbm8tZmFsbHRocm91Z2g6IG9mZiAqL1xuaW1wb3J0ICogYXMgZGF0ZXMgZnJvbSAnZGF0ZS1hcml0aG1ldGljJ1xuXG5leHBvcnQge1xuICBtaWxsaXNlY29uZHMsXG4gIHNlY29uZHMsXG4gIG1pbnV0ZXMsXG4gIGhvdXJzLFxuICBtb250aCxcbiAgc3RhcnRPZixcbiAgZW5kT2YsXG4gIGFkZCxcbiAgZXEsXG4gIG5lcSxcbiAgZ3RlLFxuICBndCxcbiAgbHRlLFxuICBsdCxcbiAgaW5SYW5nZSxcbiAgbWluLFxuICBtYXgsXG59IGZyb20gJ2RhdGUtYXJpdGhtZXRpYydcblxuY29uc3QgTUlMTEkgPSB7XG4gIHNlY29uZHM6IDEwMDAsXG4gIG1pbnV0ZXM6IDEwMDAgKiA2MCxcbiAgaG91cnM6IDEwMDAgKiA2MCAqIDYwLFxuICBkYXk6IDEwMDAgKiA2MCAqIDYwICogMjQsXG59XG5cbmNvbnN0IE1PTlRIUyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTFdXG5cbmV4cG9ydCBmdW5jdGlvbiBtb250aHNJblllYXIoeWVhcikge1xuICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIDAsIDEpXG5cbiAgcmV0dXJuIE1PTlRIUy5tYXAoKGkpID0+IGRhdGVzLm1vbnRoKGRhdGUsIGkpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RWaXNpYmxlRGF5KGRhdGUsIGxvY2FsaXplcikge1xuICBsZXQgZmlyc3RPZk1vbnRoID0gZGF0ZXMuc3RhcnRPZihkYXRlLCAnbW9udGgnKVxuXG4gIHJldHVybiBkYXRlcy5zdGFydE9mKGZpcnN0T2ZNb250aCwgJ3dlZWsnLCBsb2NhbGl6ZXIuc3RhcnRPZldlZWsoKSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhc3RWaXNpYmxlRGF5KGRhdGUsIGxvY2FsaXplcikge1xuICBsZXQgZW5kT2ZNb250aCA9IGRhdGVzLmVuZE9mKGRhdGUsICdtb250aCcpXG5cbiAgcmV0dXJuIGRhdGVzLmVuZE9mKGVuZE9mTW9udGgsICd3ZWVrJywgbG9jYWxpemVyLnN0YXJ0T2ZXZWVrKCkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2aXNpYmxlRGF5cyhkYXRlLCBsb2NhbGl6ZXIpIHtcbiAgbGV0IGN1cnJlbnQgPSBmaXJzdFZpc2libGVEYXkoZGF0ZSwgbG9jYWxpemVyKSxcbiAgICBsYXN0ID0gbGFzdFZpc2libGVEYXkoZGF0ZSwgbG9jYWxpemVyKSxcbiAgICBkYXlzID0gW11cblxuICB3aGlsZSAoZGF0ZXMubHRlKGN1cnJlbnQsIGxhc3QsICdkYXknKSkge1xuICAgIGRheXMucHVzaChjdXJyZW50KVxuICAgIGN1cnJlbnQgPSBkYXRlcy5hZGQoY3VycmVudCwgMSwgJ2RheScpXG4gIH1cblxuICByZXR1cm4gZGF5c1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2VpbChkYXRlLCB1bml0KSB7XG4gIGxldCBmbG9vciA9IGRhdGVzLnN0YXJ0T2YoZGF0ZSwgdW5pdClcblxuICByZXR1cm4gZGF0ZXMuZXEoZmxvb3IsIGRhdGUpID8gZmxvb3IgOiBkYXRlcy5hZGQoZmxvb3IsIDEsIHVuaXQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByYW5nZShzdGFydCwgZW5kLCB1bml0ID0gJ2RheScpIHtcbiAgbGV0IGN1cnJlbnQgPSBzdGFydCxcbiAgICBkYXlzID0gW11cblxuICB3aGlsZSAoZGF0ZXMubHRlKGN1cnJlbnQsIGVuZCwgdW5pdCkpIHtcbiAgICBkYXlzLnB1c2goY3VycmVudClcbiAgICBjdXJyZW50ID0gZGF0ZXMuYWRkKGN1cnJlbnQsIDEsIHVuaXQpXG4gIH1cblxuICByZXR1cm4gZGF5c1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UoZGF0ZSwgdGltZSkge1xuICBpZiAodGltZSA9PSBudWxsICYmIGRhdGUgPT0gbnVsbCkgcmV0dXJuIG51bGxcblxuICBpZiAodGltZSA9PSBudWxsKSB0aW1lID0gbmV3IERhdGUoKVxuICBpZiAoZGF0ZSA9PSBudWxsKSBkYXRlID0gbmV3IERhdGUoKVxuXG4gIGRhdGUgPSBkYXRlcy5zdGFydE9mKGRhdGUsICdkYXknKVxuICBkYXRlID0gZGF0ZXMuaG91cnMoZGF0ZSwgZGF0ZXMuaG91cnModGltZSkpXG4gIGRhdGUgPSBkYXRlcy5taW51dGVzKGRhdGUsIGRhdGVzLm1pbnV0ZXModGltZSkpXG4gIGRhdGUgPSBkYXRlcy5zZWNvbmRzKGRhdGUsIGRhdGVzLnNlY29uZHModGltZSkpXG4gIHJldHVybiBkYXRlcy5taWxsaXNlY29uZHMoZGF0ZSwgZGF0ZXMubWlsbGlzZWNvbmRzKHRpbWUpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXFUaW1lKGRhdGVBLCBkYXRlQikge1xuICByZXR1cm4gKFxuICAgIGRhdGVzLmhvdXJzKGRhdGVBKSA9PT0gZGF0ZXMuaG91cnMoZGF0ZUIpICYmXG4gICAgZGF0ZXMubWludXRlcyhkYXRlQSkgPT09IGRhdGVzLm1pbnV0ZXMoZGF0ZUIpICYmXG4gICAgZGF0ZXMuc2Vjb25kcyhkYXRlQSkgPT09IGRhdGVzLnNlY29uZHMoZGF0ZUIpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSnVzdERhdGUoZGF0ZSkge1xuICByZXR1cm4gKFxuICAgIGRhdGVzLmhvdXJzKGRhdGUpID09PSAwICYmXG4gICAgZGF0ZXMubWludXRlcyhkYXRlKSA9PT0gMCAmJlxuICAgIGRhdGVzLnNlY29uZHMoZGF0ZSkgPT09IDAgJiZcbiAgICBkYXRlcy5taWxsaXNlY29uZHMoZGF0ZSkgPT09IDBcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZHVyYXRpb24oc3RhcnQsIGVuZCwgdW5pdCwgZmlyc3RPZldlZWspIHtcbiAgaWYgKHVuaXQgPT09ICdkYXknKSB1bml0ID0gJ2RhdGUnXG4gIHJldHVybiBNYXRoLmFicyhcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25hbWVzcGFjZVxuICAgIGRhdGVzW3VuaXRdKHN0YXJ0LCB1bmRlZmluZWQsIGZpcnN0T2ZXZWVrKSAtXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25hbWVzcGFjZVxuICAgICAgZGF0ZXNbdW5pdF0oZW5kLCB1bmRlZmluZWQsIGZpcnN0T2ZXZWVrKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmKGRhdGVBLCBkYXRlQiwgdW5pdCkge1xuICBpZiAoIXVuaXQgfHwgdW5pdCA9PT0gJ21pbGxpc2Vjb25kcycpIHJldHVybiBNYXRoLmFicygrZGF0ZUEgLSArZGF0ZUIpXG5cbiAgLy8gdGhlIC5yb3VuZCgpIGhhbmRsZXMgYW4gZWRnZSBjYXNlXG4gIC8vIHdpdGggRFNUIHdoZXJlIHRoZSB0b3RhbCB3b24ndCBiZSBleGFjdFxuICAvLyBzaW5jZSBvbmUgZGF5IGluIHRoZSByYW5nZSBtYXkgYmUgc2hvcnRlci9sb25nZXIgYnkgYW4gaG91clxuICByZXR1cm4gTWF0aC5yb3VuZChcbiAgICBNYXRoLmFicyhcbiAgICAgICtkYXRlcy5zdGFydE9mKGRhdGVBLCB1bml0KSAvIE1JTExJW3VuaXRdIC1cbiAgICAgICAgK2RhdGVzLnN0YXJ0T2YoZGF0ZUIsIHVuaXQpIC8gTUlMTElbdW5pdF1cbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvdGFsKGRhdGUsIHVuaXQpIHtcbiAgbGV0IG1zID0gZGF0ZS5nZXRUaW1lKCksXG4gICAgZGl2ID0gMVxuXG4gIHN3aXRjaCAodW5pdCkge1xuICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgZGl2ICo9IDdcbiAgICBjYXNlICdkYXknOlxuICAgICAgZGl2ICo9IDI0XG4gICAgY2FzZSAnaG91cnMnOlxuICAgICAgZGl2ICo9IDYwXG4gICAgY2FzZSAnbWludXRlcyc6XG4gICAgICBkaXYgKj0gNjBcbiAgICBjYXNlICdzZWNvbmRzJzpcbiAgICAgIGRpdiAqPSAxMDAwXG4gIH1cblxuICByZXR1cm4gbXMgLyBkaXZcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlZWsoZGF0ZSkge1xuICB2YXIgZCA9IG5ldyBEYXRlKGRhdGUpXG4gIGQuc2V0SG91cnMoMCwgMCwgMClcbiAgZC5zZXREYXRlKGQuZ2V0RGF0ZSgpICsgNCAtIChkLmdldERheSgpIHx8IDcpKVxuICByZXR1cm4gTWF0aC5jZWlsKCgoZCAtIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSkpIC8gOC42NGU3ICsgMSkgLyA3KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9kYXkoKSB7XG4gIHJldHVybiBkYXRlcy5zdGFydE9mKG5ldyBEYXRlKCksICdkYXknKVxufVxuXG5leHBvcnQgZnVuY3Rpb24geWVzdGVyZGF5KCkge1xuICByZXR1cm4gZGF0ZXMuYWRkKGRhdGVzLnN0YXJ0T2YobmV3IERhdGUoKSwgJ2RheScpLCAtMSwgJ2RheScpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b21vcnJvdygpIHtcbiAgcmV0dXJuIGRhdGVzLmFkZChkYXRlcy5zdGFydE9mKG5ldyBEYXRlKCksICdkYXknKSwgMSwgJ2RheScpXG59XG4iLCJpbXBvcnQgZmluZEluZGV4IGZyb20gJ2xvZGFzaC9maW5kSW5kZXgnXG5cbmV4cG9ydCBmdW5jdGlvbiBlbmRPZlJhbmdlKHsgZGF0ZVJhbmdlLCB1bml0ID0gJ2RheScsIGxvY2FsaXplciB9KSB7XG4gIHJldHVybiB7XG4gICAgZmlyc3Q6IGRhdGVSYW5nZVswXSxcbiAgICBsYXN0OiBsb2NhbGl6ZXIuYWRkKGRhdGVSYW5nZVtkYXRlUmFuZ2UubGVuZ3RoIC0gMV0sIDEsIHVuaXQpLFxuICB9XG59XG5cbi8vIHByb3Blcmx5IGNhbGN1bGF0aW5nIHNlZ21lbnRzIHJlcXVpcmVzIHdvcmtpbmcgd2l0aCBkYXRlcyBpblxuLy8gdGhlIHRpbWV6b25lIHdlJ3JlIHdvcmtpbmcgd2l0aCwgc28gd2UgdXNlIHRoZSBsb2NhbGl6ZXJcbmV4cG9ydCBmdW5jdGlvbiBldmVudFNlZ21lbnRzKGV2ZW50LCByYW5nZSwgYWNjZXNzb3JzLCBsb2NhbGl6ZXIpIHtcbiAgbGV0IHsgZmlyc3QsIGxhc3QgfSA9IGVuZE9mUmFuZ2UoeyBkYXRlUmFuZ2U6IHJhbmdlLCBsb2NhbGl6ZXIgfSlcblxuICBsZXQgc2xvdHMgPSBsb2NhbGl6ZXIuZGlmZihmaXJzdCwgbGFzdCwgJ2RheScpXG4gIGxldCBzdGFydCA9IGxvY2FsaXplci5tYXgoXG4gICAgbG9jYWxpemVyLnN0YXJ0T2YoYWNjZXNzb3JzLnN0YXJ0KGV2ZW50KSwgJ2RheScpLFxuICAgIGZpcnN0XG4gIClcbiAgbGV0IGVuZCA9IGxvY2FsaXplci5taW4obG9jYWxpemVyLmNlaWwoYWNjZXNzb3JzLmVuZChldmVudCksICdkYXknKSwgbGFzdClcblxuICBsZXQgcGFkZGluZyA9IGZpbmRJbmRleChyYW5nZSwgKHgpID0+IGxvY2FsaXplci5pc1NhbWVEYXRlKHgsIHN0YXJ0KSlcbiAgbGV0IHNwYW4gPSBsb2NhbGl6ZXIuZGlmZihzdGFydCwgZW5kLCAnZGF5JylcblxuICBzcGFuID0gTWF0aC5taW4oc3Bhbiwgc2xvdHMpXG4gIC8vIFRoZSBzZWdtZW50T2Zmc2V0IGlzIG5lY2Vzc2FyeSB3aGVuIGFkanVzdGluZyBmb3IgdGltZXpvbmVzXG4gIC8vIGFoZWFkIG9mIHRoZSBicm93c2VyIHRpbWV6b25lXG4gIHNwYW4gPSBNYXRoLm1heChzcGFuIC0gbG9jYWxpemVyLnNlZ21lbnRPZmZzZXQsIDEpXG5cbiAgcmV0dXJuIHtcbiAgICBldmVudCxcbiAgICBzcGFuLFxuICAgIGxlZnQ6IHBhZGRpbmcgKyAxLFxuICAgIHJpZ2h0OiBNYXRoLm1heChwYWRkaW5nICsgc3BhbiwgMSksXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZW50TGV2ZWxzKHJvd1NlZ21lbnRzLCBsaW1pdCA9IEluZmluaXR5KSB7XG4gIGxldCBpLFxuICAgIGosXG4gICAgc2VnLFxuICAgIGxldmVscyA9IFtdLFxuICAgIGV4dHJhID0gW11cblxuICBmb3IgKGkgPSAwOyBpIDwgcm93U2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICBzZWcgPSByb3dTZWdtZW50c1tpXVxuXG4gICAgZm9yIChqID0gMDsgaiA8IGxldmVscy5sZW5ndGg7IGorKykgaWYgKCFzZWdzT3ZlcmxhcChzZWcsIGxldmVsc1tqXSkpIGJyZWFrXG5cbiAgICBpZiAoaiA+PSBsaW1pdCkge1xuICAgICAgZXh0cmEucHVzaChzZWcpXG4gICAgfSBlbHNlIHtcbiAgICAgIDsobGV2ZWxzW2pdIHx8IChsZXZlbHNbal0gPSBbXSkpLnB1c2goc2VnKVxuICAgIH1cbiAgfVxuXG4gIGZvciAoaSA9IDA7IGkgPCBsZXZlbHMubGVuZ3RoOyBpKyspIHtcbiAgICBsZXZlbHNbaV0uc29ydCgoYSwgYikgPT4gYS5sZWZ0IC0gYi5sZWZ0KSAvL2VzbGludC1kaXNhYmxlLWxpbmVcbiAgfVxuXG4gIHJldHVybiB7IGxldmVscywgZXh0cmEgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5SYW5nZShlLCBzdGFydCwgZW5kLCBhY2Nlc3NvcnMsIGxvY2FsaXplcikge1xuICBjb25zdCBldmVudCA9IHtcbiAgICBzdGFydDogYWNjZXNzb3JzLnN0YXJ0KGUpLFxuICAgIGVuZDogYWNjZXNzb3JzLmVuZChlKSxcbiAgfVxuICBjb25zdCByYW5nZSA9IHsgc3RhcnQsIGVuZCB9XG4gIHJldHVybiBsb2NhbGl6ZXIuaW5FdmVudFJhbmdlKHsgZXZlbnQsIHJhbmdlIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWdzT3ZlcmxhcChzZWcsIG90aGVyU2Vncykge1xuICByZXR1cm4gb3RoZXJTZWdzLnNvbWUoXG4gICAgKG90aGVyU2VnKSA9PiBvdGhlclNlZy5sZWZ0IDw9IHNlZy5yaWdodCAmJiBvdGhlclNlZy5yaWdodCA+PSBzZWcubGVmdFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb3J0V2Vla0V2ZW50cyhldmVudHMsIGFjY2Vzc29ycywgbG9jYWxpemVyKSB7XG4gIGNvbnN0IGJhc2UgPSBbLi4uZXZlbnRzXVxuICBjb25zdCBtdWx0aURheUV2ZW50cyA9IFtdXG4gIGNvbnN0IHN0YW5kYXJkRXZlbnRzID0gW11cbiAgYmFzZS5mb3JFYWNoKChldmVudCkgPT4ge1xuICAgIGNvbnN0IHN0YXJ0Q2hlY2sgPSBhY2Nlc3NvcnMuc3RhcnQoZXZlbnQpXG4gICAgY29uc3QgZW5kQ2hlY2sgPSBhY2Nlc3NvcnMuZW5kKGV2ZW50KVxuICAgIGlmIChsb2NhbGl6ZXIuZGF5U3BhbihzdGFydENoZWNrLCBlbmRDaGVjaykgPiAxKSB7XG4gICAgICBtdWx0aURheUV2ZW50cy5wdXNoKGV2ZW50KVxuICAgIH0gZWxzZSB7XG4gICAgICBzdGFuZGFyZEV2ZW50cy5wdXNoKGV2ZW50KVxuICAgIH1cbiAgfSlcbiAgY29uc3QgbXVsdGlTb3J0ZWQgPSBtdWx0aURheUV2ZW50cy5zb3J0KChhLCBiKSA9PlxuICAgIHNvcnRFdmVudHMoYSwgYiwgYWNjZXNzb3JzLCBsb2NhbGl6ZXIpXG4gIClcbiAgY29uc3Qgc3RhbmRhcmRTb3J0ZWQgPSBzdGFuZGFyZEV2ZW50cy5zb3J0KChhLCBiKSA9PlxuICAgIHNvcnRFdmVudHMoYSwgYiwgYWNjZXNzb3JzLCBsb2NhbGl6ZXIpXG4gIClcbiAgcmV0dXJuIFsuLi5tdWx0aVNvcnRlZCwgLi4uc3RhbmRhcmRTb3J0ZWRdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb3J0RXZlbnRzKGV2ZW50QSwgZXZlbnRCLCBhY2Nlc3NvcnMsIGxvY2FsaXplcikge1xuICBjb25zdCBldnRBID0ge1xuICAgIHN0YXJ0OiBhY2Nlc3NvcnMuc3RhcnQoZXZlbnRBKSxcbiAgICBlbmQ6IGFjY2Vzc29ycy5lbmQoZXZlbnRBKSxcbiAgICBhbGxEYXk6IGFjY2Vzc29ycy5hbGxEYXkoZXZlbnRBKSxcbiAgfVxuICBjb25zdCBldnRCID0ge1xuICAgIHN0YXJ0OiBhY2Nlc3NvcnMuc3RhcnQoZXZlbnRCKSxcbiAgICBlbmQ6IGFjY2Vzc29ycy5lbmQoZXZlbnRCKSxcbiAgICBhbGxEYXk6IGFjY2Vzc29ycy5hbGxEYXkoZXZlbnRCKSxcbiAgfVxuICByZXR1cm4gbG9jYWxpemVyLnNvcnRFdmVudHMoeyBldnRBLCBldnRCIH0pXG59XG4iLCJ2YXIgaWRDb3VudCA9IDBcblxuZnVuY3Rpb24gdW5pcXVlSWQocHJlZml4KSB7XG4gIHJldHVybiAnJyArICgocHJlZml4ID09IG51bGwgPyAnJyA6IHByZWZpeCkgKyArK2lkQ291bnQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3RpZnkoaGFuZGxlciwgYXJncykge1xuICBoYW5kbGVyICYmIGhhbmRsZXIuYXBwbHkobnVsbCwgW10uY29uY2F0KGFyZ3MpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFuY2VJZChjb21wb25lbnQsIHN1ZmZpeCA9ICcnKSB7XG4gIGNvbXBvbmVudC5fX2lkIHx8IChjb21wb25lbnQuX19pZCA9IHVuaXF1ZUlkKCdyd18nKSlcbiAgcmV0dXJuIChjb21wb25lbnQucHJvcHMuaWQgfHwgY29tcG9uZW50Ll9faWQpICsgc3VmZml4XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ZpcnN0Rm9jdXNlZFJlbmRlcihjb21wb25lbnQpIHtcbiAgcmV0dXJuIChcbiAgICBjb21wb25lbnQuX2ZpcnN0Rm9jdXMgfHxcbiAgICAoY29tcG9uZW50LnN0YXRlLmZvY3VzZWQgJiYgKGNvbXBvbmVudC5fZmlyc3RGb2N1cyA9IHRydWUpKVxuICApXG59XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyB2aWV3cyBhcyBWaWV3cyB9IGZyb20gJy4vY29uc3RhbnRzJ1xuXG5sZXQgdmlld05hbWVzID0gT2JqZWN0LmtleXMoVmlld3MpLm1hcCgoaykgPT4gVmlld3Nba10pXG5cbmV4cG9ydCBsZXQgYWNjZXNzb3IgPSBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuZnVuY10pXG5cbmV4cG9ydCBsZXQgZGF0ZUZvcm1hdCA9IFByb3BUeXBlcy5hbnlcblxuZXhwb3J0IGxldCBkYXRlUmFuZ2VGb3JtYXQgPSBQcm9wVHlwZXMuZnVuY1xuXG4vKipcbiAqIGFjY2VwdHMgZWl0aGVyIGFuIGFycmF5IG9mIGJ1aWx0aW4gdmlldyBuYW1lczpcbiAqXG4gKiBgYGBcbiAqIHZpZXdzPXtbJ21vbnRoJywgJ2RheScsICdhZ2VuZGEnXX1cbiAqIGBgYFxuICpcbiAqIG9yIGFuIG9iamVjdCBoYXNoIG9mIHRoZSB2aWV3IG5hbWUgYW5kIHRoZSBjb21wb25lbnQgKG9yIGJvb2xlYW4gZm9yIGJ1aWx0aW4pXG4gKlxuICogYGBgXG4gKiB2aWV3cz17e1xuICogICBtb250aDogdHJ1ZSxcbiAqICAgd2VlazogZmFsc2UsXG4gKiAgIHdvcmt3ZWVrOiBXb3JrV2Vla1ZpZXdDb21wb25lbnQsXG4gKiB9fVxuICogYGBgXG4gKi9cblxuZXhwb3J0IGxldCB2aWV3cyA9IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2Yodmlld05hbWVzKSksXG4gIFByb3BUeXBlcy5vYmplY3RPZigocHJvcCwga2V5LCAuLi5hcmdzKSA9PiB7XG4gICAgbGV0IGlzQnVpbHRpblZpZXcgPVxuICAgICAgdmlld05hbWVzLmluZGV4T2Yoa2V5KSAhPT0gLTEgJiYgdHlwZW9mIHByb3Bba2V5XSA9PT0gJ2Jvb2xlYW4nXG4gICAgaWYgKGlzQnVpbHRpblZpZXcpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBQcm9wVHlwZXMuZWxlbWVudFR5cGUocHJvcCwga2V5LCAuLi5hcmdzKVxuICAgIH1cbiAgfSksXG5dKVxuXG5leHBvcnQgY29uc3QgRGF5TGF5b3V0QWxnb3JpdGhtUHJvcFR5cGUgPSBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgUHJvcFR5cGVzLm9uZU9mKFsnb3ZlcmxhcCcsICduby1vdmVybGFwJ10pLFxuICBQcm9wVHlwZXMuZnVuYyxcbl0pXG4iLCJpbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCdcblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VsZWN0ZWQoZXZlbnQsIHNlbGVjdGVkKSB7XG4gIGlmICghZXZlbnQgfHwgc2VsZWN0ZWQgPT0gbnVsbCkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiBpc0VxdWFsKGV2ZW50LCBzZWxlY3RlZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNsb3RXaWR0aChyb3dCb3gsIHNsb3RzKSB7XG4gIGxldCByb3dXaWR0aCA9IHJvd0JveC5yaWdodCAtIHJvd0JveC5sZWZ0XG4gIGxldCBjZWxsV2lkdGggPSByb3dXaWR0aCAvIHNsb3RzXG5cbiAgcmV0dXJuIGNlbGxXaWR0aFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2xvdEF0WChyb3dCb3gsIHgsIHJ0bCwgc2xvdHMpIHtcbiAgY29uc3QgY2VsbFdpZHRoID0gc2xvdFdpZHRoKHJvd0JveCwgc2xvdHMpXG4gIHJldHVybiBydGxcbiAgICA/IHNsb3RzIC0gMSAtIE1hdGguZmxvb3IoKHggLSByb3dCb3gubGVmdCkgLyBjZWxsV2lkdGgpXG4gICAgOiBNYXRoLmZsb29yKCh4IC0gcm93Qm94LmxlZnQpIC8gY2VsbFdpZHRoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9pbnRJbkJveChib3gsIHsgeCwgeSB9KSB7XG4gIHJldHVybiB5ID49IGJveC50b3AgJiYgeSA8PSBib3guYm90dG9tICYmIHggPj0gYm94LmxlZnQgJiYgeCA8PSBib3gucmlnaHRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVDZWxsU2VsZWN0aW9uKHN0YXJ0LCByb3dCb3gsIGJveCwgc2xvdHMsIHJ0bCkge1xuICBsZXQgc3RhcnRJZHggPSAtMVxuICBsZXQgZW5kSWR4ID0gLTFcbiAgbGV0IGxhc3RTbG90SWR4ID0gc2xvdHMgLSAxXG5cbiAgbGV0IGNlbGxXaWR0aCA9IHNsb3RXaWR0aChyb3dCb3gsIHNsb3RzKVxuXG4gIC8vIGNlbGwgdW5kZXIgdGhlIG1vdXNlXG4gIGxldCBjdXJyZW50U2xvdCA9IGdldFNsb3RBdFgocm93Qm94LCBib3gueCwgcnRsLCBzbG90cylcblxuICAvLyBJZGVudGlmeSByb3cgYXMgZWl0aGVyIHRoZSBpbml0aWFsIHJvd1xuICAvLyBvciB0aGUgcm93IHVuZGVyIHRoZSBjdXJyZW50IG1vdXNlIHBvaW50XG4gIGxldCBpc0N1cnJlbnRSb3cgPSByb3dCb3gudG9wIDwgYm94LnkgJiYgcm93Qm94LmJvdHRvbSA+IGJveC55XG4gIGxldCBpc1N0YXJ0Um93ID0gcm93Qm94LnRvcCA8IHN0YXJ0LnkgJiYgcm93Qm94LmJvdHRvbSA+IHN0YXJ0LnlcblxuICAvLyB0aGlzIHJvdydzIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBwb2ludFxuICBsZXQgaXNBYm92ZVN0YXJ0ID0gc3RhcnQueSA+IHJvd0JveC5ib3R0b21cbiAgbGV0IGlzQmVsb3dTdGFydCA9IHJvd0JveC50b3AgPiBzdGFydC55XG4gIGxldCBpc0JldHdlZW4gPSBib3gudG9wIDwgcm93Qm94LnRvcCAmJiBib3guYm90dG9tID4gcm93Qm94LmJvdHRvbVxuXG4gIC8vIHRoaXMgcm93IGlzIGJldHdlZW4gdGhlIGN1cnJlbnQgYW5kIHN0YXJ0IHJvd3MsIHNvIGVudGlyZWx5IHNlbGVjdGVkXG4gIGlmIChpc0JldHdlZW4pIHtcbiAgICBzdGFydElkeCA9IDBcbiAgICBlbmRJZHggPSBsYXN0U2xvdElkeFxuICB9XG5cbiAgaWYgKGlzQ3VycmVudFJvdykge1xuICAgIGlmIChpc0JlbG93U3RhcnQpIHtcbiAgICAgIHN0YXJ0SWR4ID0gMFxuICAgICAgZW5kSWR4ID0gY3VycmVudFNsb3RcbiAgICB9IGVsc2UgaWYgKGlzQWJvdmVTdGFydCkge1xuICAgICAgc3RhcnRJZHggPSBjdXJyZW50U2xvdFxuICAgICAgZW5kSWR4ID0gbGFzdFNsb3RJZHhcbiAgICB9XG4gIH1cblxuICBpZiAoaXNTdGFydFJvdykge1xuICAgIC8vIHNlbGVjdCB0aGUgY2VsbCB1bmRlciB0aGUgaW5pdGlhbCBwb2ludFxuICAgIHN0YXJ0SWR4ID0gZW5kSWR4ID0gcnRsXG4gICAgICA/IGxhc3RTbG90SWR4IC0gTWF0aC5mbG9vcigoc3RhcnQueCAtIHJvd0JveC5sZWZ0KSAvIGNlbGxXaWR0aClcbiAgICAgIDogTWF0aC5mbG9vcigoc3RhcnQueCAtIHJvd0JveC5sZWZ0KSAvIGNlbGxXaWR0aClcblxuICAgIGlmIChpc0N1cnJlbnRSb3cpIHtcbiAgICAgIGlmIChjdXJyZW50U2xvdCA8IHN0YXJ0SWR4KSBzdGFydElkeCA9IGN1cnJlbnRTbG90XG4gICAgICBlbHNlIGVuZElkeCA9IGN1cnJlbnRTbG90IC8vc2VsZWN0IGN1cnJlbnQgcmFuZ2VcbiAgICB9IGVsc2UgaWYgKHN0YXJ0LnkgPCBib3gueSkge1xuICAgICAgLy8gdGhlIGN1cnJlbnQgcm93IGlzIGJlbG93IHN0YXJ0IHJvd1xuICAgICAgLy8gc2VsZWN0IGNlbGxzIHRvIHRoZSByaWdodCBvZiB0aGUgc3RhcnQgY2VsbFxuICAgICAgZW5kSWR4ID0gbGFzdFNsb3RJZHhcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2VsZWN0IGNlbGxzIHRvIHRoZSBsZWZ0IG9mIHRoZSBzdGFydCBjZWxsXG4gICAgICBzdGFydElkeCA9IDBcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBzdGFydElkeCwgZW5kSWR4IH1cbn1cbiIsImltcG9ydCBSZWFjdCwgeyBGcmFnbWVudCB9IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBsaW5rQmFzZSA9XG4gICdodHRwczovL2dpdGh1Yi5jb20vanF1ZW5zZS9yZWFjdC1iaWctY2FsZW5kYXIvYmxvYi9tYXN0ZXIvc3Rvcmllcy9kZW1vcy9leGFtcGxlQ29kZS8nXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERlbW9MaW5rKHsgZmlsZU5hbWUsIGNoaWxkcmVuIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8RnJhZ21lbnQ+XG4gICAgICA8ZGl2IHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMTAgfX0+XG4gICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9e2Ake2xpbmtCYXNlfSR7ZmlsZU5hbWV9LmpzYH0+XG4gICAgICAgICAgJmx0O1xcJmd0OyBWaWV3IEV4YW1wbGUgU291cmNlIENvZGVcbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgICB7Y2hpbGRyZW4gPyA8ZGl2IHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMTAgfX0+e2NoaWxkcmVufTwvZGl2PiA6IG51bGx9XG4gICAgPC9GcmFnbWVudD5cbiAgKVxufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IExheW91dCBmcm9tICdyZWFjdC10YWNrbGUtYm94L0xheW91dCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0ICdtb21lbnQtdGltZXpvbmUnXG5cbmNvbnN0IGFsbFpvbmVzID0gbW9tZW50LnR6Lm5hbWVzKClcbmFsbFpvbmVzLnVuc2hpZnQoJ2NsZWFyJylcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVGltZXpvbmVTZWxlY3Qoe1xuICB0aXRsZSxcbiAgZGVmYXVsdFRaID0gbW9tZW50LnR6Lmd1ZXNzKCksXG4gIHRpbWV6b25lLFxuICBzZXRUaW1lem9uZSxcbn0pIHtcbiAgY29uc3Qgb25DaGFuZ2UgPSAoeyB0YXJnZXQ6IHsgdmFsdWUgfSB9KSA9PlxuICAgIHNldFRpbWV6b25lKHZhbHVlID8gdmFsdWUgOiBkZWZhdWx0VFopXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2PlxuICAgICAgPExheW91dCBkaXJlY3Rpb249XCJjb2x1bW5cIiBhbGlnbj1cImNlbnRlclwiPlxuICAgICAgICB7dGl0bGUgPyA8c3Ryb25nIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMTAgfX0+e3RpdGxlfTwvc3Ryb25nPiA6IG51bGx9XG4gICAgICAgIDxsYWJlbD5TZWxlY3QgYSBUaW1lem9uZTwvbGFiZWw+eycgJ31cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IDIwMCwgZGlzcGxheTogJ2lubGluZS1ibG9jaycgfX1cbiAgICAgICAgICB2YWx1ZT17dGltZXpvbmV9XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICA+XG4gICAgICAgICAge2FsbFpvbmVzLm1hcCgoYywgaWR4KSA9PiAoXG4gICAgICAgICAgICA8b3B0aW9uIGtleT17aWR4fSB2YWx1ZT17YyAhPT0gJ2NsZWFyJyA/IGMgOiAnJ30+XG4gICAgICAgICAgICAgIHtjfVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9MYXlvdXQ+XG4gICAgPC9kaXY+XG4gIClcbn1cblxuVGltZXpvbmVTZWxlY3QucHJvcFR5cGVzID0ge1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgZGVmYXVsdFRaOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB0aW1lem9uZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0VGltZXpvbmU6IFByb3BUeXBlcy5mdW5jLFxufVxuIiwiaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7XG4gIENhbGVuZGFyLFxuICBWaWV3cyxcbiAgRGF0ZUxvY2FsaXplcixcbiAgbW9tZW50TG9jYWxpemVyLFxufSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgRGVtb0xpbmsgZnJvbSAnLi4vLi4vRGVtb0xpbmsuY29tcG9uZW50J1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0ICogYXMgZGF0ZXMgZnJvbSAnLi4vLi4vLi4vc3JjL3V0aWxzL2RhdGVzJ1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuY29uc3QgQ29sb3JlZERhdGVDZWxsV3JhcHBlciA9ICh7IGNoaWxkcmVuIH0pID0+XG4gIFJlYWN0LmNsb25lRWxlbWVudChSZWFjdC5DaGlsZHJlbi5vbmx5KGNoaWxkcmVuKSwge1xuICAgIHN0eWxlOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdsaWdodGJsdWUnLFxuICAgIH0sXG4gIH0pXG5cbi8qKlxuICogV2UgYXJlIGRlZmF1bHRpbmcgdGhlIGxvY2FsaXplciBoZXJlIGJlY2F1c2Ugd2UgYXJlIHVzaW5nIHRoaXMgc2FtZVxuICogZXhhbXBsZSBvbiB0aGUgbWFpbiAnQWJvdXQnIHBhZ2UgaW4gU3Rvcnlib29rXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJhc2ljKHtcbiAgbG9jYWxpemVyID0gbUxvY2FsaXplcixcbiAgc2hvd0RlbW9MaW5rID0gdHJ1ZSxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgY29uc3QgeyBjb21wb25lbnRzLCBkZWZhdWx0RGF0ZSwgbWF4LCB2aWV3cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgY29tcG9uZW50czoge1xuICAgICAgICB0aW1lU2xvdFdyYXBwZXI6IENvbG9yZWREYXRlQ2VsbFdyYXBwZXIsXG4gICAgICB9LFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxuICAgICAgbWF4OiBkYXRlcy5hZGQoZGF0ZXMuZW5kT2YobmV3IERhdGUoMjAxNSwgMTcsIDEpLCAnZGF5JyksIC0xLCAnaG91cnMnKSxcbiAgICAgIHZpZXdzOiBPYmplY3Qua2V5cyhWaWV3cykubWFwKChrKSA9PiBWaWV3c1trXSksXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPEZyYWdtZW50PlxuICAgICAge3Nob3dEZW1vTGluayA/IDxEZW1vTGluayBmaWxlTmFtZT1cImJhc2ljXCIgLz4gOiBudWxsfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIiB7Li4ucHJvcHN9PlxuICAgICAgICA8Q2FsZW5kYXJcbiAgICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgICBldmVudHM9e2V2ZW50c31cbiAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICBtYXg9e21heH1cbiAgICAgICAgICBzaG93TXVsdGlEYXlUaW1lc1xuICAgICAgICAgIHN0ZXA9ezYwfVxuICAgICAgICAgIHZpZXdzPXt2aWV3c31cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvRnJhZ21lbnQ+XG4gIClcbn1cbkJhc2ljLnByb3BUeXBlcyA9IHtcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlTG9jYWxpemVyKSxcbiAgc2hvd0RlbW9MaW5rOiBQcm9wVHlwZXMuYm9vbCxcbn1cbiIsImltcG9ydCBSZWFjdCwgeyBGcmFnbWVudCwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgZXZlbnRzIGZyb20gJy4uLy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIERhdGVMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgQ2FyZCBmcm9tICcuLi8uLi9yZXNvdXJjZXMvQ2FyZCdcbmltcG9ydCBEZW1vTGluayBmcm9tICcuLi8uLi9EZW1vTGluay5jb21wb25lbnQnXG4vLyBTdG9yeWJvb2sgY2Fubm90IGFsaWFzIHRoaXMsIHNvIHlvdSB3b3VsZCB1c2UgJ3JlYWN0LWJpZy1jYWxlbmRhci9saWIvYWRkb25zL2RyYWdBbmREcm9wJ1xuaW1wb3J0IHdpdGhEcmFnQW5kRHJvcCBmcm9tICcuLi8uLi8uLi9zcmMvYWRkb25zL2RyYWdBbmREcm9wJ1xuLy8gU3Rvcnlib29rIGNhbm5vdCBhbGlhcyB0aGlzLCBzbyB5b3Ugd291bGQgdXNlICdyZWFjdC1iaWctY2FsZW5kYXIvbGliL2FkZG9ucy9kcmFnQW5kRHJvcC9zdHlsZXMuc2NzcydcbmltcG9ydCAnLi4vLi4vLi4vc3JjL2FkZG9ucy9kcmFnQW5kRHJvcC9zdHlsZXMuc2NzcydcblxuY29uc3QgRHJhZ0FuZERyb3BDYWxlbmRhciA9IHdpdGhEcmFnQW5kRHJvcChDYWxlbmRhcilcblxuY29uc3QgYWRqRXZlbnRzID0gZXZlbnRzLm1hcCgoaXQsIGluZCkgPT4gKHtcbiAgLi4uaXQsXG4gIGlzRHJhZ2dhYmxlOiBpbmQgJSAyID09PSAwLFxufSkpXG5cbmNvbnN0IGZvcm1hdE5hbWUgPSAobmFtZSwgY291bnQpID0+IGAke25hbWV9IElEICR7Y291bnR9YFxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEbkRPdXRzaWRlUmVzb3VyY2UoeyBsb2NhbGl6ZXIgfSkge1xuICBjb25zdCBbbXlFdmVudHMsIHNldE15RXZlbnRzXSA9IHVzZVN0YXRlKGFkakV2ZW50cylcbiAgY29uc3QgW2RyYWdnZWRFdmVudCwgc2V0RHJhZ2dlZEV2ZW50XSA9IHVzZVN0YXRlKClcbiAgY29uc3QgW2Rpc3BsYXlEcmFnSXRlbUluQ2VsbCwgc2V0RGlzcGxheURyYWdJdGVtSW5DZWxsXSA9IHVzZVN0YXRlKHRydWUpXG4gIGNvbnN0IFtjb3VudGVycywgc2V0Q291bnRlcnNdID0gdXNlU3RhdGUoeyBpdGVtMTogMCwgaXRlbTI6IDAgfSlcblxuICBjb25zdCBldmVudFByb3BHZXR0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQpID0+ICh7XG4gICAgICAuLi4oZXZlbnQuaXNEcmFnZ2FibGVcbiAgICAgICAgPyB7IGNsYXNzTmFtZTogJ2lzRHJhZ2dhYmxlJyB9XG4gICAgICAgIDogeyBjbGFzc05hbWU6ICdub25EcmFnZ2FibGUnIH0pLFxuICAgIH0pLFxuICAgIFtdXG4gIClcbiAgLy8sXG4gIGNvbnN0IGhhbmRsZURyYWdTdGFydCA9IHVzZUNhbGxiYWNrKChldmVudCkgPT4gc2V0RHJhZ2dlZEV2ZW50KGV2ZW50KSwgW10pXG5cbiAgY29uc3QgZHJhZ0Zyb21PdXRzaWRlSXRlbSA9IHVzZUNhbGxiYWNrKCgpID0+IGRyYWdnZWRFdmVudCwgW2RyYWdnZWRFdmVudF0pXG5cbiAgY29uc3QgY3VzdG9tT25EcmFnT3ZlciA9IHVzZUNhbGxiYWNrKFxuICAgIChkcmFnRXZlbnQpID0+IHtcbiAgICAgIC8vIGNoZWNrIGZvciB1bmRyb3BwYWJsZSBpcyBzcGVjaWZpYyB0byB0aGlzIGV4YW1wbGVcbiAgICAgIC8vIGFuZCBub3QgcGFydCBvZiBBUEkuIFRoaXMganVzdCBkZW1vbnN0cmF0ZXMgdGhhdFxuICAgICAgLy8gb25EcmFnT3ZlciBjYW4gb3B0aW9uYWxseSBiZSBwYXNzZWQgdG8gY29uZGl0aW9uYWxseVxuICAgICAgLy8gYWxsb3cgZHJhZ2dhYmxlIGl0ZW1zIHRvIGJlIGRyb3BwZWQgb24gY2FsLCBiYXNlZCBvblxuICAgICAgLy8gd2hldGhlciBldmVudC5wcmV2ZW50RGVmYXVsdCBpcyBjYWxsZWRcbiAgICAgIGlmIChkcmFnZ2VkRXZlbnQgIT09ICd1bmRyb3BwYWJsZScpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ3ByZXZlbnREZWZhdWx0JylcbiAgICAgICAgZHJhZ0V2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtkcmFnZ2VkRXZlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVEaXNwbGF5RHJhZ0l0ZW1JbkNlbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoKSA9PiBzZXREaXNwbGF5RHJhZ0l0ZW1JbkNlbGwoKHByZXYpID0+ICFwcmV2KSxcbiAgICBbXVxuICApXG5cbiAgY29uc3QgbW92ZUV2ZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgZXZlbnQsIHN0YXJ0LCBlbmQsIGlzQWxsRGF5OiBkcm9wcGVkT25BbGxEYXlTbG90ID0gZmFsc2UgfSkgPT4ge1xuICAgICAgY29uc3QgeyBhbGxEYXkgfSA9IGV2ZW50XG4gICAgICBpZiAoIWFsbERheSAmJiBkcm9wcGVkT25BbGxEYXlTbG90KSB7XG4gICAgICAgIGV2ZW50LmFsbERheSA9IHRydWVcbiAgICAgIH1cblxuICAgICAgc2V0TXlFdmVudHMoKHByZXYpID0+IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBwcmV2LmZpbmQoKGV2KSA9PiBldi5pZCA9PT0gZXZlbnQuaWQpID8/IHt9XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gcHJldi5maWx0ZXIoKGV2KSA9PiBldi5pZCAhPT0gZXZlbnQuaWQpXG4gICAgICAgIHJldHVybiBbLi4uZmlsdGVyZWQsIHsgLi4uZXhpc3RpbmcsIHN0YXJ0LCBlbmQsIGFsbERheSB9XVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtzZXRNeUV2ZW50c11cbiAgKVxuXG4gIGNvbnN0IG5ld0V2ZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBzZXRNeUV2ZW50cygocHJldikgPT4ge1xuICAgICAgICBjb25zdCBpZExpc3QgPSBwcmV2Lm1hcCgoaXRlbSkgPT4gaXRlbS5pZClcbiAgICAgICAgY29uc3QgbmV3SWQgPSBNYXRoLm1heCguLi5pZExpc3QpICsgMVxuICAgICAgICByZXR1cm4gWy4uLnByZXYsIHsgLi4uZXZlbnQsIGlkOiBuZXdJZCB9XVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtzZXRNeUV2ZW50c11cbiAgKVxuXG4gIGNvbnN0IG9uRHJvcEZyb21PdXRzaWRlID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgc3RhcnQsIGVuZCwgYWxsRGF5OiBpc0FsbERheSB9KSA9PiB7XG4gICAgICBpZiAoZHJhZ2dlZEV2ZW50ID09PSAndW5kcm9wcGFibGUnKSB7XG4gICAgICAgIHNldERyYWdnZWRFdmVudChudWxsKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBuYW1lIH0gPSBkcmFnZ2VkRXZlbnRcbiAgICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgICB0aXRsZTogZm9ybWF0TmFtZShuYW1lLCBjb3VudGVyc1tuYW1lXSksXG4gICAgICAgIHN0YXJ0LFxuICAgICAgICBlbmQsXG4gICAgICAgIGlzQWxsRGF5LFxuICAgICAgfVxuICAgICAgc2V0RHJhZ2dlZEV2ZW50KG51bGwpXG4gICAgICBzZXRDb3VudGVycygocHJldikgPT4ge1xuICAgICAgICBjb25zdCB7IFtuYW1lXTogY291bnQgfSA9IHByZXZcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIFtuYW1lXTogY291bnQgKyAxLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgbmV3RXZlbnQoZXZlbnQpXG4gICAgfSxcbiAgICBbZHJhZ2dlZEV2ZW50LCBjb3VudGVycywgc2V0RHJhZ2dlZEV2ZW50LCBzZXRDb3VudGVycywgbmV3RXZlbnRdXG4gIClcblxuICBjb25zdCByZXNpemVFdmVudCA9IHVzZUNhbGxiYWNrKFxuICAgICh7IGV2ZW50LCBzdGFydCwgZW5kIH0pID0+IHtcbiAgICAgIHNldE15RXZlbnRzKChwcmV2KSA9PiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gcHJldi5maW5kKChldikgPT4gZXYuaWQgPT09IGV2ZW50LmlkKSA/PyB7fVxuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IHByZXYuZmlsdGVyKChldikgPT4gZXYuaWQgIT09IGV2ZW50LmlkKVxuICAgICAgICByZXR1cm4gWy4uLmZpbHRlcmVkLCB7IC4uLmV4aXN0aW5nLCBzdGFydCwgZW5kIH1dXG4gICAgICB9KVxuICAgIH0sXG4gICAgW3NldE15RXZlbnRzXVxuICApXG5cbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEyKSwgW10pXG5cbiAgcmV0dXJuIChcbiAgICA8RnJhZ21lbnQ+XG4gICAgICA8RGVtb0xpbmsgZmlsZU5hbWU9XCJkbmRPdXRzaWRlU291cmNlXCI+XG4gICAgICAgIDxDYXJkIGNsYXNzTmFtZT1cImRuZE91dHNpZGVTb3VyY2VFeGFtcGxlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbm5lclwiPlxuICAgICAgICAgICAgPGg0Pk91dHNpZGUgRHJhZyBTb3VyY2VzPC9oND5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBMaWdodGVyIGNvbG9yZWQgZXZlbnRzLCBpbiB0aGUgQ2FsZW5kYXIsIGhhdmUgYW4gYGlzRHJhZ2dhYmxlYCBrZXlcbiAgICAgICAgICAgICAgb2YgYGZhbHNlYC5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIHtPYmplY3QuZW50cmllcyhjb3VudGVycykubWFwKChbbmFtZSwgY291bnRdKSA9PiAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBkcmFnZ2FibGU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICAgICAgb25EcmFnU3RhcnQ9eygpID0+XG4gICAgICAgICAgICAgICAgICBoYW5kbGVEcmFnU3RhcnQoeyB0aXRsZTogZm9ybWF0TmFtZShuYW1lLCBjb3VudCksIG5hbWUgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0TmFtZShuYW1lLCBjb3VudCl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGRyYWdnYWJsZT1cInRydWVcIlxuICAgICAgICAgICAgICBvbkRyYWdTdGFydD17KCkgPT4gaGFuZGxlRHJhZ1N0YXJ0KCd1bmRyb3BwYWJsZScpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBEcmFnZ2FibGUgYnV0IG5vdCBmb3IgY2FsZW5kYXIuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgY2hlY2tlZD17ZGlzcGxheURyYWdJdGVtSW5DZWxsfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVEaXNwbGF5RHJhZ0l0ZW1JbkNlbGx9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIERpc3BsYXkgZHJhZ2dlZCBpdGVtIGluIGNlbGwgd2hpbGUgZHJhZ2dpbmcgb3ZlclxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9DYXJkPlxuICAgICAgPC9EZW1vTGluaz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICAgIDxEcmFnQW5kRHJvcENhbGVuZGFyXG4gICAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5NT05USH1cbiAgICAgICAgICBkcmFnRnJvbU91dHNpZGVJdGVtPXtcbiAgICAgICAgICAgIGRpc3BsYXlEcmFnSXRlbUluQ2VsbCA/IGRyYWdGcm9tT3V0c2lkZUl0ZW0gOiBudWxsXG4gICAgICAgICAgfVxuICAgICAgICAgIGRyYWdnYWJsZUFjY2Vzc29yPVwiaXNEcmFnZ2FibGVcIlxuICAgICAgICAgIGV2ZW50UHJvcEdldHRlcj17ZXZlbnRQcm9wR2V0dGVyfVxuICAgICAgICAgIGV2ZW50cz17bXlFdmVudHN9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgb25Ecm9wRnJvbU91dHNpZGU9e29uRHJvcEZyb21PdXRzaWRlfVxuICAgICAgICAgIG9uRHJhZ092ZXI9e2N1c3RvbU9uRHJhZ092ZXJ9XG4gICAgICAgICAgb25FdmVudERyb3A9e21vdmVFdmVudH1cbiAgICAgICAgICBvbkV2ZW50UmVzaXplPXtyZXNpemVFdmVudH1cbiAgICAgICAgICBvblNlbGVjdFNsb3Q9e25ld0V2ZW50fVxuICAgICAgICAgIHJlc2l6YWJsZVxuICAgICAgICAgIHNlbGVjdGFibGVcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvRnJhZ21lbnQ+XG4gIClcbn1cbkRuRE91dHNpZGVSZXNvdXJjZS5wcm9wVHlwZXMgPSB7XG4gIGxvY2FsaXplcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZUxvY2FsaXplciksXG59XG4iLCJpbXBvcnQgUmVhY3QsIHsgRnJhZ21lbnQsIHVzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBEYXRlTG9jYWxpemVyIH0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuaW1wb3J0IENhcmQgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL0NhcmQnXG5pbXBvcnQgRGVtb0xpbmsgZnJvbSAnLi4vLi4vRGVtb0xpbmsuY29tcG9uZW50J1xuLy8gU3Rvcnlib29rIGNhbm5vdCBhbGlhcyB0aGlzLCBzbyB5b3Ugd291bGQgdXNlICdyZWFjdC1iaWctY2FsZW5kYXIvbGliL2FkZG9ucy9kcmFnQW5kRHJvcCdcbmltcG9ydCB3aXRoRHJhZ0FuZERyb3AgZnJvbSAnLi4vLi4vLi4vc3JjL2FkZG9ucy9kcmFnQW5kRHJvcCdcbi8vIFN0b3J5Ym9vayBjYW5ub3QgYWxpYXMgdGhpcywgc28geW91IHdvdWxkIHVzZSAncmVhY3QtYmlnLWNhbGVuZGFyL2xpYi9hZGRvbnMvZHJhZ0FuZERyb3Avc3R5bGVzLnNjc3MnXG5pbXBvcnQgJy4uLy4uLy4uL3NyYy9hZGRvbnMvZHJhZ0FuZERyb3Avc3R5bGVzLnNjc3MnXG5cbmNvbnN0IERyYWdBbmREcm9wQ2FsZW5kYXIgPSB3aXRoRHJhZ0FuZERyb3AoQ2FsZW5kYXIpXG5cbmNvbnN0IGFkakV2ZW50cyA9IGV2ZW50cy5tYXAoKGl0LCBpbmQpID0+ICh7XG4gIC4uLml0LFxuICBpc1Jlc2l6YWJsZTogaW5kICUgMiA9PT0gMCxcbiAgaXNEcmFnZ2FibGU6IGluZCAlIDIgPT09IDAsXG59KSlcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmVzaXphYmxlKHsgbG9jYWxpemVyIH0pIHtcbiAgY29uc3QgW215RXZlbnRzLCBzZXRNeUV2ZW50c10gPSB1c2VTdGF0ZShhZGpFdmVudHMpXG4gIGNvbnN0IFtyZXNpemFibGUsIHNldFJlc2l6YWJsZV0gPSB1c2VTdGF0ZSh0cnVlKVxuXG4gIGNvbnN0IGV2ZW50UHJvcEdldHRlciA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4gKHtcbiAgICAgIC8vIGFkZCBjbGFzcyBpZiBub3QgYWxsb3dpbmcgcmVzaXppbmcgYXQgYWxsLCBvciBpZlxuICAgICAgLy8gYWxsb3dpbmcgcmVzaXppbmcsIGJ1dCBub3Qgb24gYSBzcGVjaWZpYyBldmVudFxuICAgICAgLi4uKCghcmVzaXphYmxlIHx8ICFldmVudC5pc1Jlc2l6YWJsZSkgJiYgeyBjbGFzc05hbWU6ICdub25SZXNpemFibGUnIH0pLFxuICAgIH0pLFxuICAgIFtyZXNpemFibGVdXG4gIClcblxuICBjb25zdCB0b2dnbGVSZXNpemluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHNldFJlc2l6YWJsZSgocHJldikgPT4gIXByZXYpLCBbXSlcblxuICBjb25zdCByZXNpemVFdmVudCA9IHVzZUNhbGxiYWNrKFxuICAgICh7IGV2ZW50LCBzdGFydCwgZW5kIH0pID0+IHtcbiAgICAgIHNldE15RXZlbnRzKChwcmV2KSA9PiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gcHJldi5maW5kKChldikgPT4gZXYuaWQgPT09IGV2ZW50LmlkKSA/PyB7fVxuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IHByZXYuZmlsdGVyKChldikgPT4gZXYuaWQgIT09IGV2ZW50LmlkKVxuICAgICAgICByZXR1cm4gWy4uLmZpbHRlcmVkLCB7IC4uLmV4aXN0aW5nLCBzdGFydCwgZW5kIH1dXG4gICAgICB9KVxuICAgIH0sXG4gICAgW3NldE15RXZlbnRzXVxuICApXG5cbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEyKSwgW10pXG5cbiAgcmV0dXJuIChcbiAgICA8RnJhZ21lbnQ+XG4gICAgICA8RGVtb0xpbmsgZmlsZU5hbWU9XCJkbmRPdXRzaWRlU291cmNlXCI+XG4gICAgICAgIDxDYXJkIGNsYXNzTmFtZT1cImRuZE91dHNpZGVTb3VyY2VFeGFtcGxlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbm5lclwiPlxuICAgICAgICAgICAgPGg0PlJlc2l6aW5nPC9oND5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBFdmVudHMgYWxsb3dpbmcgcmVzaXppbmcgd2lsbCBzaG93IGRyYWcgaGFuZGxlcyB3aGVuIHlvdSBtb3VzZVxuICAgICAgICAgICAgICBvdmVyIHRoZW0uXG4gICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIGxpZ2h0ZXIgY29sb3JlZCBldmVudHMgYXJlIG5vdCByZXNpemFibGUuXG4gICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICBUb2dnbGluZyB0aGUgY2hlY2tib3ggdG8gdGhlIHJpZ2h0IHdpbGwgdHVybiBvZmYvb24gcmVzaXppbmcgYWxsXG4gICAgICAgICAgICAgIHRvZ2V0aGVyLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBjaGVja2VkPXtyZXNpemFibGV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RvZ2dsZVJlc2l6aW5nfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICBBbGxvdyBFdmVudCBSZXNpemluZ1xuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9DYXJkPlxuICAgICAgPC9EZW1vTGluaz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICAgIDxEcmFnQW5kRHJvcENhbGVuZGFyXG4gICAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5NT05USH1cbiAgICAgICAgICBkcmFnZ2FibGVBY2Nlc3Nvcj1cImlzRHJhZ2dhYmxlXCJcbiAgICAgICAgICBldmVudFByb3BHZXR0ZXI9e2V2ZW50UHJvcEdldHRlcn1cbiAgICAgICAgICBldmVudHM9e215RXZlbnRzfVxuICAgICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICAgIG9uRXZlbnRSZXNpemU9e3Jlc2l6ZUV2ZW50fVxuICAgICAgICAgIHJlc2l6YWJsZT17cmVzaXphYmxlfVxuICAgICAgICAgIHJlc2l6YWJsZUFjY2Vzc29yPXtyZXNpemFibGUgPyAnaXNSZXNpemFibGUnIDogJ2Zha2VLZXknfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9GcmFnbWVudD5cbiAgKVxufVxuUmVzaXphYmxlLnByb3BUeXBlcyA9IHtcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlTG9jYWxpemVyKSxcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUV2ZW50cyhpZHggPSAwLCBkYXRlID0gbmV3IERhdGUoKSkge1xuICBjb25zdCB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpXG4gIGNvbnN0IG0gPSBkYXRlLmdldE1vbnRoKClcbiAgY29uc3QgZCA9IGRhdGUuZ2V0RGF0ZSgpXG5cbiAgY29uc3Qgc2V0cyA9IFtcbiAgICBbXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgMScsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAxMCwgMzAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDEzLCAzMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDInLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMTAsIDMwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAxMywgMzAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCAzJyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDEwLCAzMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTIsIDMwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgNCcsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCA4LCAzMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTgsIDAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCA1JyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDE1LCAzMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTYsIDAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCA2JyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDExLCAwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAxMiwgMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDcnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMSwgMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMiwgMCwgMCwgMCksXG4gICAgICB9LFxuICAgIF0sXG4gICAgW1xuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDEnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgOSwgMzAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDE1LCAzMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDInLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMTEsIDAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDEzLCAwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgMycsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCA5LCAzMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTEsIDMwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgNCcsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCA5LCAzMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTAsIDMwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgNScsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAxMCwgMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTEsIDAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCA2JyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDEwLCAwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAxMSwgMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDcnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgOSwgMzAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDEwLCAzMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDgnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgOSwgMzAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDEwLCAzMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDknLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgOSwgMzAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDEwLCAzMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDEwJyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDEwLCAzMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTIsIDMwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgMTEnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMTIsIDAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDEzLCAwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgMTInLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMTIsIDAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDEzLCAwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgMTMnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMTIsIDAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDEzLCAwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgMTQnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMTIsIDAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDEzLCAwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgMTUnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgNiwgMzAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDgsIDAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCAxNicsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAxNiwgMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTcsIDMwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgMScsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAyLCAzMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgNCwgMzAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCAyJyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDIsIDMwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAzLCAzMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDMnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMywgMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgNCwgMCwgMCwgMCksXG4gICAgICB9LFxuICAgIF0sXG4gICAgW1xuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDEnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgNiwgMzAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDcsIDAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCAyJyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDgsIDAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDE3LCAwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgMycsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCA4LCAwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAxMSwgMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDQnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgOCwgMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTIsIDAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCA1JyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDEwLCAwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAxMywgMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDYnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMTAsIDAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDEzLCAwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgNycsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAxMCwgMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTMsIDAsIDAsIDApLFxuICAgICAgfSxcbiAgICBdLFxuICAgIFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCAxJyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDE5LCAwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAyMCwgNTUsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCAyJyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDE5LCAxNSwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMjAsIDE1LCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgMycsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAxOSwgNDUsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDIyLCAzMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDQnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMjAsIDQ1LCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAyMiwgNSwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDUnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMTAsIDAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDExLCAwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgNicsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAxMCwgMzAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDExLCAzMCwgMCwgMCksXG4gICAgICB9LFxuICAgIF0sXG4gIF1cblxuICByZXR1cm4gc2V0c1tpZHhdXG59XG4iLCJpbXBvcnQgeyBhY3Rpb24gfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWFjdGlvbnMnXG5cbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0ICdtb21lbnQtdGltZXpvbmUnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IENhbGVuZGFyIGFzIEJhc2VDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuXG4vLyBGb3IgVGVzdGluZyBTQVNTIHN0eWxpbmdcbmltcG9ydCAnLi4vLi4vc3JjL3Nhc3Mvc3R5bGVzLnNjc3MnXG5pbXBvcnQgJy4uLy4uL3NyYy9hZGRvbnMvZHJhZ0FuZERyb3Avc3R5bGVzLnNjc3MnXG5cbmltcG9ydCB3aXRoRHJhZ0FuZERyb3AgZnJvbSAnLi4vLi4vc3JjL2FkZG9ucy9kcmFnQW5kRHJvcCdcblxuZXhwb3J0IHsgVmlld3MgfSBmcm9tICcuLi8uLi9zcmMnXG5cbi8vIHVuY29tbWVudCBmb3IgdGltZXpvbmUgdGVzdGluZyBpbiBTdG9yeWJvb2tcbi8vbW9tZW50LnR6LnNldERlZmF1bHQoJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnKVxuXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgY29uc3QgZGF0ZSA9ICguLi5hcmdzKSA9PiBtb21lbnQoLi4uYXJncykudG9EYXRlKClcblxuZXhwb3J0IGNvbnN0IENhbGVuZGFyID0gKHByb3BzKSA9PiAoXG4gIDxkaXYgc3R5bGU9e3sgaGVpZ2h0OiA2NTAgfX0+XG4gICAgPEJhc2VDYWxlbmRhciBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gey4uLnByb3BzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IERyYWdBbmREcm9wQ2FsZW5kYXIgPSB3aXRoRHJhZ0FuZERyb3AoQ2FsZW5kYXIpXG5cbmV4cG9ydCBjb25zdCBEcmFnYWJsZUNhbGVuZGFyID0gKHByb3BzKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPERyYWdBbmREcm9wQ2FsZW5kYXJcbiAgICAgIHBvcHVwXG4gICAgICBzZWxlY3RhYmxlXG4gICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgIG9uRXZlbnREcm9wPXthY3Rpb24oJ2V2ZW50IGRyb3BwZWQnKX1cbiAgICAgIG9uU2VsZWN0RXZlbnQ9e2FjdGlvbignZXZlbnQgc2VsZWN0ZWQnKX1cbiAgICAgIG9uU2VsZWN0U2xvdD17YWN0aW9uKCdzbG90IHNlbGVjdGVkJyl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgZXZlbnRzID0gW1xuICB7XG4gICAgdGl0bGU6ICd0ZXN0JyxcbiAgICBzdGFydDogbW9tZW50KCkuYWRkKDEsICdkYXlzJykuc3VidHJhY3QoNSwgJ2hvdXJzJykudG9EYXRlKCksXG4gICAgZW5kOiBtb21lbnQoKS5hZGQoMSwgJ2RheXMnKS5zdWJ0cmFjdCg0LCAnaG91cnMnKS50b0RhdGUoKSxcbiAgICBhbGxEYXk6IGZhbHNlLFxuICB9LFxuICB7XG4gICAgdGl0bGU6ICd0ZXN0IGxhcmdlcicsXG4gICAgc3RhcnQ6IG1vbWVudCgpLnN0YXJ0T2YoJ2RheScpLmFkZCg1LCAnaG91cnMnKS50b0RhdGUoKSxcbiAgICBlbmQ6IG1vbWVudCgpLnN0YXJ0T2YoJ2RheScpLmFkZCgxMCwgJ2hvdXJzJykudG9EYXRlKCksXG4gICAgYWxsRGF5OiBmYWxzZSxcbiAgfSxcblxuICB7XG4gICAgdGl0bGU6ICd0ZXN0IGxhcmdlcicsXG4gICAgc3RhcnQ6IG1vbWVudCgpLnN0YXJ0T2YoJ2RheScpLmFkZCgxNSwgJ2hvdXJzJykudG9EYXRlKCksXG4gICAgZW5kOiBtb21lbnQoKS5zdGFydE9mKCdkYXknKS5hZGQoMjMsICdob3VycycpLnRvRGF0ZSgpLFxuICAgIGFsbERheTogZmFsc2UsXG4gIH0sXG4gIHtcbiAgICB0aXRsZTogJ3Rlc3QgYWxsIGRheScsXG4gICAgc3RhcnQ6IG1vbWVudCgpLnN0YXJ0T2YoJ2RheScpLnRvRGF0ZSgpLFxuICAgIGVuZDogbW9tZW50KCkuc3RhcnRPZignZGF5JykuYWRkKDEsICdkYXknKS50b0RhdGUoKSxcbiAgICBhbGxEYXk6IHRydWUsXG4gIH0sXG4gIHtcbiAgICB0aXRsZTogJ3Rlc3QgMiBkYXlzJyxcbiAgICBzdGFydDogbW9tZW50KCkuc3RhcnRPZignZGF5JykudG9EYXRlKCksXG4gICAgZW5kOiBtb21lbnQoKS5zdGFydE9mKCdkYXknKS5hZGQoMiwgJ2RheXMnKS50b0RhdGUoKSxcbiAgICBhbGxEYXk6IHRydWUsXG4gIH0sXG4gIHtcbiAgICB0aXRsZTogJ3Rlc3QgbXVsdGktZGF5JyxcbiAgICBzdGFydDogbW9tZW50KCkudG9EYXRlKCksXG4gICAgZW5kOiBtb21lbnQoKS5hZGQoMywgJ2RheXMnKS50b0RhdGUoKSxcbiAgICBhbGxEYXk6IGZhbHNlLFxuICB9LFxuXVxuXG5leHBvcnQgY29uc3QgYmFja2dyb3VuZEV2ZW50cyA9IFtcbiAge1xuICAgIHRpdGxlOiAndGVzdCBiYWNrZ3JvdW5kIGV2ZW50JyxcbiAgICBzdGFydDogbW9tZW50KCkuc3RhcnRPZignZGF5JykuYWRkKDIsICdob3VycycpLnRvRGF0ZSgpLFxuICAgIGVuZDogbW9tZW50KCkuc3RhcnRPZignZGF5JykuYWRkKDEyLCAnaG91cnMnKS50b0RhdGUoKSxcbiAgICBhbGxEYXk6IGZhbHNlLFxuICB9LFxuXVxuXG5leHBvcnQgY29uc3QgcmVzb3VyY2VFdmVudHMgPSBbXG4gIHtcbiAgICB0aXRsZTogJ2V2ZW50IDEnLFxuICAgIHN0YXJ0OiBtb21lbnQoKS5zdGFydE9mKCdkYXknKS5hZGQoMSwgJ2hvdXJzJykudG9EYXRlKCksXG4gICAgZW5kOiBtb21lbnQoKS5zdGFydE9mKCdkYXknKS5hZGQoMiwgJ2hvdXJzJykudG9EYXRlKCksXG4gICAgYWxsRGF5OiBmYWxzZSxcbiAgICByZXNvdXJjZUlkOiAxLFxuICB9LFxuICB7XG4gICAgdGl0bGU6ICdldmVudCAyJyxcbiAgICBzdGFydDogbW9tZW50KCkuc3RhcnRPZignZGF5JykuYWRkKDMsICdob3VycycpLnRvRGF0ZSgpLFxuICAgIGVuZDogbW9tZW50KCkuc3RhcnRPZignZGF5JykuYWRkKDQsICdob3VycycpLnRvRGF0ZSgpLFxuICAgIGFsbERheTogZmFsc2UsXG4gICAgcmVzb3VyY2VJZDogWzEsIDJdLFxuICB9LFxuICB7XG4gICAgdGl0bGU6ICdldmVudCAzJyxcbiAgICBzdGFydDogbW9tZW50KCkuc3RhcnRPZignZGF5JykuYWRkKDEsICdob3VycycpLnRvRGF0ZSgpLFxuICAgIGVuZDogbW9tZW50KCkuc3RhcnRPZignZGF5JykuYWRkKDMsICdob3VycycpLnRvRGF0ZSgpLFxuICAgIGFsbERheTogZmFsc2UsXG4gICAgcmVzb3VyY2VJZDogMyxcbiAgfSxcbl1cblxuZXhwb3J0IGNvbnN0IHJlc291cmNlcyA9IFtcbiAge1xuICAgIGlkOiAxLFxuICAgIG5hbWU6ICdSZXNvdXJjZSBPbmUnLFxuICB9LFxuICB7XG4gICAgaWQ6IDIsXG4gICAgbmFtZTogJ1Jlc291cmNlIFR3bycsXG4gIH0sXG4gIHtcbiAgICBpZDogMyxcbiAgICBuYW1lOiAnUmVzb3VyY2UgVGhyZWUnLFxuICB9LFxuXVxuIiwiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBtb21lbnRMb2NhbGl6ZXIsIFZpZXdzIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCByZXNvdXJjZURhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL3Jlc291cmNlRXZlbnRzJ1xuXG5jb25zdCB7IGV2ZW50czogcmVzb3VyY2VFdmVudHMsIGxpc3Q6IHJlc291cmNlcyB9ID0gcmVzb3VyY2VEYXRhXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG4vKiogU3BlY2lmaWMgdG8gZXZlbnQga2V5IGFjY2Vzc29ycyAqL1xuY29uc3QgYWRqdXN0ZWQgPSBkZW1vRXZlbnRzLm1hcCgoZXZlbnQpID0+IHtcbiAgY29uc3Qge1xuICAgIHN0YXJ0OiBzdGFydERhdGUsXG4gICAgZW5kOiBlbmREYXRlLFxuICAgIHRpdGxlOiBsYWJlbCxcbiAgICBhbGxEYXk6IGFsbERheUV2ZW50LFxuICAgIC4uLm90aGVyXG4gIH0gPSBldmVudFxuICByZXR1cm4geyAuLi5vdGhlciwgc3RhcnREYXRlLCBlbmREYXRlLCBsYWJlbCwgYWxsRGF5RXZlbnQgfVxufSlcblxuZXhwb3J0IGNvbnN0IGFjY2Vzc29yU3RvcnlBcmdzID0ge1xuICBhbGxEYXlBY2Nlc3NvcjogJ2FsbERheUV2ZW50JyxcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgZW5kQWNjZXNzb3I6ICdlbmREYXRlJyxcbiAgZXZlbnRzOiBhZGp1c3RlZCxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxuICB0aXRsZUFjY2Vzc29yOiAnbGFiZWwnLFxuICB0b29sdGlwQWNjZXNzb3I6ICdsYWJlbCcsXG4gIHN0YXJ0QWNjZXNzb3I6ICdzdGFydERhdGUnLFxufVxuLyoqIEVORCBTcGVjaWZpYyB0byBldmVudCBrZXkgYWNjZXNzb3JzICovXG5cbi8qKiBTcGVjaWZpYyB0byByZXNvdXJjZSBrZXkgYWNjZXNzb3JzICovXG5jb25zdCBhZGp1c3RlZFJlc291cmNlcyA9IHJlc291cmNlcy5tYXAoKHsgaWQ6IElkLCB0aXRsZTogVGl0bGUgfSkgPT4gKHtcbiAgSWQsXG4gIFRpdGxlLFxufSkpXG5cbmV4cG9ydCBjb25zdCByZXNvdXJjZUFjY2Vzc29yU3RvcnlBcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgNCksXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5EQVksXG4gIGV2ZW50czogcmVzb3VyY2VFdmVudHMsXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcbiAgcmVzb3VyY2VJZEFjY2Vzc29yOiAnSWQnLFxuICByZXNvdXJjZXM6IGFkanVzdGVkUmVzb3VyY2VzLFxuICByZXNvdXJjZVRpdGxlQWNjZXNzb3I6ICdUaXRsZScsXG59XG4vKiogRU5EU3BlY2lmaWMgdG8gcmVzb3VyY2Uga2V5IGFjY2Vzc29ycyAqL1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBwcm9wVHlwZXMgPSB7fVxuXG5mdW5jdGlvbiBDYXJkKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgc3R5bGUgfSkge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtjbGFzc05hbWUgfHwgJyd9IGNhcmRgfSBzdHlsZT17c3R5bGV9PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICApXG59XG5cbkNhcmQucHJvcFR5cGVzID0gcHJvcFR5cGVzXG5cbmV4cG9ydCBkZWZhdWx0IENhcmRcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgRGF5Q29sdW1uV3JhcHBlciA9ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHN0eWxlLCBpbm5lclJlZiB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0gc3R5bGU9e3N0eWxlfSByZWY9e2lubmVyUmVmfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBSZWFjdC5mb3J3YXJkUmVmKChkYXlDb2x1bW5XcmFwcGVyUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCByZWRCb3JkZXIgPSBkYXlDb2x1bW5XcmFwcGVyUHJvcHMucmVzb3VyY2UgJSAyID09PSAwXG4gIGNvbnN0IHN0eWxlID0ge1xuICAgIGJvcmRlckNvbG9yOiByZWRCb3JkZXIgPyAncmVkJyA6ICcjZmZmJyxcbiAgICBib3JkZXJTdHlsZTogJ3NvbGlkJyxcbiAgICBib3JkZXJXaWR0aDogJzFweCcsXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxEYXlDb2x1bW5XcmFwcGVyIHsuLi5kYXlDb2x1bW5XcmFwcGVyUHJvcHN9IHN0eWxlPXtzdHlsZX0gaW5uZXJSZWY9e3JlZn0gLz5cbiAgKVxufSlcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGFjdGlvbiB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tYWN0aW9ucydcbmltcG9ydCBDdXN0b21EYXlDb2x1bW5XcmFwcGVyIGZyb20gJy4vQ3VzdG9tRGF5Q29sdW1uV3JhcHBlcidcblxuY29uc3QgY3VzdG9tQ29tcG9uZW50cyA9IHtcbiAgZGF0ZUNlbGxXcmFwcGVyOiAoZGF0ZUNlbGxXcmFwcGVyUHJvcHMpID0+IHtcbiAgICAvLyBTaG93ICdjbGljayBtZScgdGV4dCBpbiBhcmJpdHJhcnkgcGxhY2VzIGJ5IHVzaW5nIHRoZSByYW5nZSBwcm9wXG4gICAgY29uc3QgaGFzQWxlcnQgPSBkYXRlQ2VsbFdyYXBwZXJQcm9wcy5yYW5nZVxuICAgICAgPyBkYXRlQ2VsbFdyYXBwZXJQcm9wcy5yYW5nZS5zb21lKChkYXRlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGRhdGUuZ2V0RGF0ZSgpICUgMTIgPT09IDBcbiAgICAgICAgfSlcbiAgICAgIDogZmFsc2VcblxuICAgIGNvbnN0IHN0eWxlID0ge1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgZmxleDogMSxcbiAgICAgIGJvcmRlckxlZnQ6ICcxcHggc29saWQgI0RERCcsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IGhhc0FsZXJ0ID8gJyNmNWY1ZGMnIDogJyNmZmYnLFxuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBzdHlsZT17c3R5bGV9PlxuICAgICAgICB7aGFzQWxlcnQgJiYgKFxuICAgICAgICAgIDxhIG9uQ2xpY2s9e2FjdGlvbignY3VzdG9tIGRhdGVDZWxsV3JhcHBlciBjb21wb25lbnQgY2xpY2tlZCcpfT5cbiAgICAgICAgICAgIENsaWNrIG1lXG4gICAgICAgICAgPC9hPlxuICAgICAgICApfVxuICAgICAgICB7ZGF0ZUNlbGxXcmFwcGVyUHJvcHMuY2hpbGRyZW59XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH0sXG4gIGRheUNvbHVtbldyYXBwZXI6IEN1c3RvbURheUNvbHVtbldyYXBwZXIsXG4gIHRpbWVTbG90V3JhcHBlcjogKHRpbWVTbG90V3JhcHBlclByb3BzKSA9PiB7XG4gICAgLy8gU2hvdyBkaWZmZXJlbnQgc3R5bGVzIGF0IGFyYml0cmFyeSB0aW1lXG4gICAgY29uc3QgaGFzQ3VzdG9tSW5mbyA9IHRpbWVTbG90V3JhcHBlclByb3BzLnZhbHVlXG4gICAgICA/IHRpbWVTbG90V3JhcHBlclByb3BzLnZhbHVlLmdldEhvdXJzKCkgPT09IDRcbiAgICAgIDogZmFsc2VcbiAgICBjb25zdCBzdHlsZSA9IHtcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGZsZXg6IDEsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IGhhc0N1c3RvbUluZm8gPyAnI2Y1ZjVkYycgOiAnI2ZmZicsXG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IHN0eWxlPXtzdHlsZX0+XG4gICAgICAgIHtoYXNDdXN0b21JbmZvICYmICdDdXN0b20gRGF5IFdyYXBwZXInfVxuICAgICAgICB7dGltZVNsb3RXcmFwcGVyUHJvcHMuY2hpbGRyZW59XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH0sXG4gIGV2ZW50V3JhcHBlcjogKGV2ZW50V3JhcHBlclByb3BzKSA9PiB7XG4gICAgY29uc3Qgc3R5bGUgPSB7XG4gICAgICBib3JkZXI6ICc0cHggc29saWQnLFxuICAgICAgYm9yZGVyQ29sb3I6XG4gICAgICAgIGV2ZW50V3JhcHBlclByb3BzLmV2ZW50LnN0YXJ0LmdldEhvdXJzKCkgJSAyID09PSAwID8gJ2dyZWVuJyA6ICdyZWQnLFxuICAgICAgcGFkZGluZzogJzVweCcsXG4gICAgfVxuICAgIHJldHVybiA8ZGl2IHN0eWxlPXtzdHlsZX0+e2V2ZW50V3JhcHBlclByb3BzLmNoaWxkcmVufTwvZGl2PlxuICB9LFxuICB0aW1lU2xvdFdyYXBwZXI6ICh0aW1lU2xvdFdyYXBwZXJQcm9wcykgPT4ge1xuICAgIGNvbnN0IHN0eWxlID1cbiAgICAgIHRpbWVTbG90V3JhcHBlclByb3BzLnJlc291cmNlID09PSBudWxsIHx8XG4gICAgICB0aW1lU2xvdFdyYXBwZXJQcm9wcy52YWx1ZS5nZXRNaW51dGVzKCkgIT09IDBcbiAgICAgICAgPyB7fVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIGJvcmRlcjogJzRweCBzb2xpZCcsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6XG4gICAgICAgICAgICAgIHRpbWVTbG90V3JhcHBlclByb3BzLnZhbHVlLmdldEhvdXJzKCkgPj0gOCAmJlxuICAgICAgICAgICAgICB0aW1lU2xvdFdyYXBwZXJQcm9wcy52YWx1ZS5nZXRIb3VycygpIDw9IDE3XG4gICAgICAgICAgICAgICAgPyAnZ3JlZW4nXG4gICAgICAgICAgICAgICAgOiAncmVkJyxcbiAgICAgICAgICAgIHBhZGRpbmc6ICc1cHgnLFxuICAgICAgICAgIH1cbiAgICByZXR1cm4gPGRpdiBzdHlsZT17c3R5bGV9Pnt0aW1lU2xvdFdyYXBwZXJQcm9wcy5jaGlsZHJlbn08L2Rpdj5cbiAgfSxcbiAgdGltZUd1dHRlcldyYXBwZXI6ICh0aW1lR3V0dGVyV3JhcHBlclByb3BzKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgaWQ9XCJteS1jdXN0b20tdGltZS1ndXR0ZXItd3JhcHBlclwiXG4gICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogJ2dyYXknIH19XG4gICAgICA+XG4gICAgICAgIHt0aW1lR3V0dGVyV3JhcHBlclByb3BzLmNoaWxkcmVufVxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBjdXN0b21Db21wb25lbnRzXG4iLCJjb25zdCBub3cgPSBuZXcgRGF0ZSgpXG5cbmV4cG9ydCBkZWZhdWx0IFtcbiAgLyoge1xuICAgIGlkOiAwLFxuICAgIHRpdGxlOiAnQWxsIERheSBFdmVudCB2ZXJ5IGxvbmcgdGl0bGUnLFxuICAgIGFsbERheTogdHJ1ZSxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcbiAgfSwgKi9cbiAge1xuICAgIGlkOiAxLFxuICAgIHRpdGxlOiAnTG9uZyBFdmVudCcsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDcpLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTApLFxuICB9LFxuXG4gIHtcbiAgICBpZDogMixcbiAgICB0aXRsZTogJ0RUUyBTVEFSVFMnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAyLCAxMywgMCwgMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAyLCAyMCwgMCwgMCwgMCksXG4gIH0sXG5cbiAge1xuICAgIGlkOiAzLFxuICAgIHRpdGxlOiAnRFRTIEVORFMnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMCwgNiwgMCwgMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMTMsIDAsIDAsIDApLFxuICB9LFxuXG4gIHtcbiAgICBpZDogNCxcbiAgICB0aXRsZTogJ1NvbWUgRXZlbnQnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCA5LCAwLCAwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDksIDAsIDAsIDApLFxuICAgIGFsbERheTogdHJ1ZSxcbiAgfSxcblxuICB7XG4gICAgaWQ6IDkyLFxuICAgIHRpdGxlOiAnU29tZSBPdGhlciBFdmVudCcsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDksIDgsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTAsIDExLCAzMCwgMCksXG4gIH0sXG4gIHtcbiAgICBpZDogNSxcbiAgICB0aXRsZTogJ0NvbmZlcmVuY2UnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxMSksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gICAgZGVzYzogJ0JpZyBjb25mZXJlbmNlIGZvciBpbXBvcnRhbnQgcGVvcGxlJyxcbiAgfSxcbiAge1xuICAgIGlkOiA2LFxuICAgIHRpdGxlOiAnTWVldGluZycsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEyLCAxMCwgMzAsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTIsIDEyLCAzMCwgMCwgMCksXG4gICAgZGVzYzogJ1ByZS1tZWV0aW5nIG1lZXRpbmcsIHRvIHByZXBhcmUgZm9yIHRoZSBtZWV0aW5nJyxcbiAgfSxcbiAge1xuICAgIGlkOiA3LFxuICAgIHRpdGxlOiAnTHVuY2gnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxMiwgMTIsIDAsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTIsIDEzLCAwLCAwLCAwKSxcbiAgICBkZXNjOiAnUG93ZXIgbHVuY2gnLFxuICB9LFxuICB7XG4gICAgaWQ6IDgsXG4gICAgdGl0bGU6ICdNZWV0aW5nJyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMTIsIDE0LCAwLCAwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEyLCAxNSwgMCwgMCwgMCksXG4gIH0sXG4gIHtcbiAgICBpZDogOSxcbiAgICB0aXRsZTogJ0hhcHB5IEhvdXInLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxMiwgMTcsIDAsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTIsIDE3LCAzMCwgMCwgMCksXG4gICAgZGVzYzogJ01vc3QgaW1wb3J0YW50IG1lYWwgb2YgdGhlIGRheScsXG4gIH0sXG4gIHtcbiAgICBpZDogMTAsXG4gICAgdGl0bGU6ICdEaW5uZXInLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxMiwgMjAsIDAsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTIsIDIxLCAwLCAwLCAwKSxcbiAgfSxcbiAge1xuICAgIGlkOiAxMSxcbiAgICB0aXRsZTogJ1BsYW5uaW5nIE1lZXRpbmcgd2l0aCBQYWlnZScsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEzLCA4LCAwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEzLCAxMCwgMzAsIDApLFxuICB9LFxuICB7XG4gICAgaWQ6IDExLjEsXG4gICAgdGl0bGU6ICdJbmNvbnZlbmllbnQgQ29uZmVyZW5jZSBDYWxsJyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMTMsIDksIDMwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEzLCAxMiwgMCwgMCksXG4gIH0sXG4gIHtcbiAgICBpZDogMTEuMixcbiAgICB0aXRsZTogXCJQcm9qZWN0IEtpY2tvZmYgLSBMb3UncyBTaG9lc1wiLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxMywgMTEsIDMwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEzLCAxNCwgMCwgMCksXG4gIH0sXG4gIHtcbiAgICBpZDogMTEuMyxcbiAgICB0aXRsZTogJ1F1b3RlIEZvbGxvdy11cCAtIFRlYSBieSBUaW5hJyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMTMsIDE1LCAzMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMywgMTYsIDAsIDApLFxuICB9LFxuICB7XG4gICAgaWQ6IDEyLFxuICAgIHRpdGxlOiAnTGF0ZSBOaWdodCBFdmVudCcsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDE3LCAxOSwgMzAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTgsIDIsIDAsIDApLFxuICB9LFxuICB7XG4gICAgaWQ6IDEyLjUsXG4gICAgdGl0bGU6ICdMYXRlIFNhbWUgTmlnaHQgRXZlbnQnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxNywgMTksIDMwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDE3LCAyMywgMzAsIDApLFxuICB9LFxuICB7XG4gICAgaWQ6IDEzLFxuICAgIHRpdGxlOiAnTXVsdGktZGF5IEV2ZW50JyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMjAsIDE5LCAzMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAyMiwgMiwgMCwgMCksXG4gIH0sXG4gIHtcbiAgICBpZDogMTQsXG4gICAgdGl0bGU6ICdUb2RheScsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0SG91cnMobmV3IERhdGUoKS5nZXRIb3VycygpIC0gMykpLFxuICAgIGVuZDogbmV3IERhdGUobmV3IERhdGUoKS5zZXRIb3VycyhuZXcgRGF0ZSgpLmdldEhvdXJzKCkgKyAzKSksXG4gIH0sXG4gIHtcbiAgICBpZDogMTUsXG4gICAgdGl0bGU6ICdQb2ludCBpbiBUaW1lIEV2ZW50JyxcbiAgICBzdGFydDogbm93LFxuICAgIGVuZDogbm93LFxuICB9LFxuICB7XG4gICAgaWQ6IDE2LFxuICAgIHRpdGxlOiAnVmlkZW8gUmVjb3JkJyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMTQsIDE1LCAzMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxNCwgMTksIDAsIDApLFxuICB9LFxuICB7XG4gICAgaWQ6IDE3LFxuICAgIHRpdGxlOiAnRHV0Y2ggU29uZyBQcm9kdWNpbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxNCwgMTYsIDMwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDE0LCAyMCwgMCwgMCksXG4gIH0sXG4gIHtcbiAgICBpZDogMTgsXG4gICAgdGl0bGU6ICdJdGFld29uIE1lZXRpbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxNCwgMTYsIDMwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDE0LCAxNywgMzAsIDApLFxuICB9LFxuICB7XG4gICAgaWQ6IDE5LFxuICAgIHRpdGxlOiAnT25saW5lIENvZGluZyBUZXN0JyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMTQsIDE3LCAzMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxNCwgMjAsIDMwLCAwKSxcbiAgfSxcbiAge1xuICAgIGlkOiAyMCxcbiAgICB0aXRsZTogJ0FuIG92ZXJsYXBwZWQgRXZlbnQnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxNCwgMTcsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTQsIDE4LCAzMCwgMCksXG4gIH0sXG4gIHtcbiAgICBpZDogMjEsXG4gICAgdGl0bGU6ICdQaG9uZSBJbnRlcnZpZXcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxNCwgMTcsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTQsIDE4LCAzMCwgMCksXG4gIH0sXG4gIHtcbiAgICBpZDogMjIsXG4gICAgdGl0bGU6ICdDb29raW5nIENsYXNzJyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMTQsIDE3LCAzMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxNCwgMTksIDAsIDApLFxuICB9LFxuICB7XG4gICAgaWQ6IDIzLFxuICAgIHRpdGxlOiAnR28gdG8gdGhlIGd5bScsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDE0LCAxOCwgMzAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTQsIDIwLCAwLCAwKSxcbiAgfSxcbiAge1xuICAgIGlkOiAyNCxcbiAgICB0aXRsZTogJ0RTVCBlbmRzIG9uIHRoaXMgZGF5IChFdXJvcGUpJyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAyMiwgOSwgMzAsIDAsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAyMiwgOSwgMzAsIDQsIDMwLCAwKSxcbiAgfSxcbiAge1xuICAgIGlkOiAyNSxcbiAgICB0aXRsZTogJ0RTVCBlbmRzIG9uIHRoaXMgZGF5IChBbWVyaWNhKScsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMjIsIDEwLCA2LCAwLCAwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMjIsIDEwLCA2LCA0LCAzMCwgMCksXG4gIH0sXG4gIHtcbiAgICBpZDogMjYsXG4gICAgdGl0bGU6ICdEU1Qgc3RhcnRzIG9uIHRoaXMgZGF5IChBbWVyaWNhKScsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMjMsIDIsIDEyLCAwLCAwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMjMsIDIsIDEyLCA0LCAzMCwgMCksXG4gIH0sXG4gIHtcbiAgICBpZDogMjcsXG4gICAgdGl0bGU6ICdEU1Qgc3RhcnRzIG9uIHRoaXMgZGF5IChFdXJvcGUpJyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAyMywgMiwgMjYsIDAsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAyMywgMiwgMjYsIDQsIDMwLCAwKSxcbiAgfSxcbl1cbiIsImV4cG9ydCBkZWZhdWx0IHtcbiAgZXZlbnRzOiBbXG4gICAge1xuICAgICAgdGl0bGU6ICdSZW5jb250cmUnLFxuICAgICAgcmVzb3VyY2VJZDogJ2EnLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDIsIDUsIDMwLCAwLCAwKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMiwgMTAsIDMwLCAwLCAwKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnQW5vdGhlciBNZWV0aW5nJyxcbiAgICAgIHJlc291cmNlSWQ6ICdiJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxLCAyLCAzMCwgMCwgMCksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEsIDQsIDMwLCAwLCAwKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnQScsXG4gICAgICByZXNvdXJjZUlkOiAnYScsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgNCwgNSwgMzAsIDAsIDApLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCA0LCAxMCwgMzAsIDAsIDApLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdCJyxcbiAgICAgIHJlc291cmNlSWQ6ICdiJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCA0LCA1LCAzMCwgMCwgMCksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDQsIDEwLCAzMCwgMCwgMCksXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ0MnLFxuICAgICAgcmVzb3VyY2VJZDogJ2MnLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDQsIDUsIDMwLCAwLCAwKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgNCwgMTAsIDMwLCAwLCAwKSxcbiAgICB9LFxuICBdLFxuXG4gIGxpc3Q6IFtcbiAgICB7XG4gICAgICBpZDogJ2EnLFxuICAgICAgdGl0bGU6ICdSb29tIEEnLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICdiJyxcbiAgICAgIHRpdGxlOiAnUm9vbSBCJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnYycsXG4gICAgICB0aXRsZTogJ1Jvb20gQycsXG4gICAgfSxcbiAgXSxcbn1cbiIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IGFzc2VydElzRm4sIEFkZENvbnRleHQgfSBmcm9tIFwiQHN0b3J5Ym9vay9hZGRvbi1kb2NzXCI7XG5cbmltcG9ydCB7IE1ldGEgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi9kZW1vcy9leGFtcGxlQ29kZS9iYXNpYy5qcydcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPE1ldGEgdGl0bGU9XCJBYm91dCBCaWcgQ2FsZW5kYXJcIiBtZHhUeXBlPVwiTWV0YVwiIC8+XG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiYmlnLWNhbGVuZGFyXCJcbiAgICB9fT57YEJpZyBDYWxlbmRhcmB9PC9oMT5cbiAgICB7LyogV2Ugd29uJ3QgbG9hZCB0aGlzIGluIGEgJ1N0b3J5JyBibG9jaywgYXMgd2Ugd2FudCBpdCBpbmxpbmUgd2l0aG91dCBjcmVhdGluZyBzdWJuYXZpZ2F0aW9uICovfVxuICAgIDxCYXNpYyBzaG93RGVtb0xpbms9e2ZhbHNlfSBzdHlsZT17e1xuICAgICAgbWFyZ2luQm90dG9tOiAxNVxuICAgIH19IG1keFR5cGU9XCJCYXNpY1wiIC8+XG4gICAgPGgyIHsuLi57XG4gICAgICBcImlkXCI6IFwiaW50cm9kdWN0aW9uXCJcbiAgICB9fT57YEludHJvZHVjdGlvbmB9PC9oMj5cbiAgICA8cD57YEJpZyBDYWxlbmRhciBpcyBhIGZ1bGwgZmVhdHVyZWQgQ2FsZW5kYXIgY29tcG9uZW50IGZvciBtYW5hZ2luZyBldmVudHMgYW5kIGRhdGVzLiBJdCB1c2VzIG1vZGVybiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BmbGV4Ym94YH08L2lubGluZUNvZGU+e2AgZm9yIGxheW91dCwgbWFraW5nIGl0IHN1cGVyIHJlc3BvbnNpdmUgYW5kIHBlcmZvcm1hbnQuIExlYXZpbmcgbW9zdCBvZiB0aGUgbGF5b3V0IGhlYXZ5IGxpZnRpbmcgdG8gdGhlIGJyb3dzZXIuYH08L3A+XG4gICAgPHA+e2BIZXJlIHlvdSB3aWxsIGZpbmQgYWxsIG9mIHRoZSBkb2N1bWVudGF0aW9uIHlvdSBuZWVkIGZvciBpbXBsZW1lbnRpbmcgQmlnIENhbGVuZGFyLiBXZSBleHBsYWluIHRoZSBiYXNpY3Mgb2YgaW1wbGVtZW50YXRpb24sIGdpdmUgeW91IGNsZWFyIGRldGFpbHMgYW5kIGV4YW1wbGVzIG9mIHRoZSB2YXJpb3VzIHByb3BzIG5lZWRlZCwgYW5kIHRyeSB0byBhbnN3ZXIgeW91ciBxdWVzdGlvbnMgb24gaG93IHlvdSBjYW4gdXNlIEJpZyBDYWxlbmRhciB0byBpbXBsZW1lbnQgY3VzdG9tIHNjaGVkdWxpbmcgc29sdXRpb25zLmB9PC9wPlxuICAgIDxoMiB7Li4ue1xuICAgICAgXCJpZFwiOiBcImdldHRpbmctc3RhcnRlZFwiXG4gICAgfX0+e2BHZXR0aW5nIFN0YXJ0ZWRgfTwvaDI+XG4gICAgPHA+e2BZb3UgY2FuIGluc3RhbGwgQmlnIENhbGVuZGFyIHZpYSBgfTxhIHBhcmVudE5hbWU9XCJwXCIgey4uLntcbiAgICAgICAgXCJocmVmXCI6IFwiaHR0cHM6Ly95YXJucGtnLmNvbS9lbi9cIixcbiAgICAgICAgXCJ0YXJnZXRcIjogXCJfYmxhbmtcIixcbiAgICAgICAgXCJyZWxcIjogXCJub2ZvbGxvdyBub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIH19PntgeWFybmB9PC9hPntgIG9yIGB9PGEgcGFyZW50TmFtZT1cInBcIiB7Li4ue1xuICAgICAgICBcImhyZWZcIjogXCJodHRwczovL3d3dy5ucG1qcy5jb20vXCIsXG4gICAgICAgIFwidGFyZ2V0XCI6IFwiX2JsYW5rXCIsXG4gICAgICAgIFwicmVsXCI6IFwibm9mb2xsb3cgbm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICB9fT57YG5wbWB9PC9hPntgOmB9PC9wPlxuICAgIDxwPjxlbSBwYXJlbnROYW1lPVwicFwiPntgeWFybjpgfTwvZW0+e2AgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgeWFybiBhZGQgcmVhY3QtYmlnLWNhbGVuZGFyYH08L2lubGluZUNvZGU+PC9wPlxuICAgIDxwPjxlbSBwYXJlbnROYW1lPVwicFwiPntgbnBtOmB9PC9lbT57YCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BucG0gaW5zdGFsbCAtLXNhdmUgcmVhY3QtYmlnLWNhbGVuZGFyYH08L2lubGluZUNvZGU+PC9wPlxuICAgIDxwPjxlbSBwYXJlbnROYW1lPVwicFwiPntgTm90ZWB9PC9lbT57YDogUmVxdWlyZXMgTm9kZSA+PSAxOGB9PC9wPlxuICAgIDxwPntgV2hlbiB5b3UgaW5jbHVkZSBCaWcgQ2FsZW5kYXIgaW4geW91ciBpbnRlcmZhY2UsIHlvdSB3aWxsIG5lZWQgdGhlIGNvcmUgc3R5bGVzLiBXZSBwcm92aWRlIGEgcHJlY29tcGlsZWQgc3R5bGUgc2hlZXQgKGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHJlYWN0LWJpZy1jYWxlbmRhci9saWIvY3NzL3JlYWN0LWJpZy1jYWxlbmRhci5jc3NgfTwvaW5saW5lQ29kZT57YCkgZm9yIHlvdSwgb3IgeW91IGNhbiBkaXJlY3RseSBpbXBvcnQgdGhlIFNBU1MgaW50byB5b3VyIGltcGxlbWVudGF0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzLCBzZWUgdGhlIGB9PExpbmtUbyBraW5kPVwiZ3VpZGVzLWN1c3RvbS1zdHlsaW5nXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgQ3VzdG9tIFN0eWxpbmdgfTwvTGlua1RvPntgIGd1aWRlIGZvciBtb3JlIGRldGFpbHMuYH08L3A+XG4gICAgPHA+e2BBbHNvIG1ha2Ugc3VyZSB0aGF0IHlvdXIgY2FsZW5kYXIncyBjb250YWluZXIgZWxlbWVudCBoYXMgYSBoZWlnaHQsIG9yIHRoZSBjYWxlbmRhciB3b24ndCBiZSB2aXNpYmxlIChzZWUgd2h5IGJlbG93KS5gfTwvcD5cbiAgICA8cD57YERhdGUgaW50ZXJuYXRpb25hbGl6YXRpb24gYW5kIGxvY2FsaXphdGlvbiBpcyBgfTxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YGhhcmRgfTwvc3Ryb25nPntgIGFuZCBCaWcgQ2FsZW5kYXIgZG9lc24ndCBldmVuIGF0dGVtcHQgdG9cbnNvbHZlIHRoYXQgcHJvYmxlbS4gSW5zdGVhZCB5b3UgY2FuIHVzZSBvbmUgb2YgdGhlIG1hbnkgZXhjZWxsZW50IHNvbHV0aW9ucyBhbHJlYWR5XG5vdXQgdGhlcmUsIHZpYSBhZGFwdGVycyBjYWxsZWQgYH08ZW0gcGFyZW50TmFtZT1cInBcIj57YGxvY2FsaXplcnNgfTwvZW0+e2AuIEJpZyBDYWxlbmRhciBjb21lcyB3aXRoIHRocmVlIGxvY2FsaXplcnMgZm9yIHVzZVxud2l0aCBgfTxhIHBhcmVudE5hbWU9XCJwXCIgey4uLntcbiAgICAgICAgXCJocmVmXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9nbG9iYWxpemVcIixcbiAgICAgICAgXCJ0YXJnZXRcIjogXCJfYmxhbmtcIixcbiAgICAgICAgXCJyZWxcIjogXCJub2ZvbGxvdyBub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIH19PntgR2xvYmFsaXplLmpzYH08L2E+e2AsIGB9PGEgcGFyZW50TmFtZT1cInBcIiB7Li4ue1xuICAgICAgICBcImhyZWZcIjogXCJodHRwOi8vbW9tZW50anMuY29tL1wiLFxuICAgICAgICBcInRhcmdldFwiOiBcIl9ibGFua1wiLFxuICAgICAgICBcInJlbFwiOiBcIm5vZm9sbG93IG5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgfX0+e2BNb21lbnQuanNgfTwvYT57YCBvciBgfTxhIHBhcmVudE5hbWU9XCJwXCIgey4uLntcbiAgICAgICAgXCJocmVmXCI6IFwiaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uXCIsXG4gICAgICAgIFwidGFyZ2V0XCI6IFwiX2JsYW5rXCIsXG4gICAgICAgIFwicmVsXCI6IFwibm9mb2xsb3cgbm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICB9fT57YEx1eG9uYH08L2E+e2AuYH08L3A+XG4gICAgPHA+e2BDaG9vc2UgdGhlIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImxvY2FsaXplclwiIG1keFR5cGU9XCJMaW5rVG9cIj57YGxvY2FsaXplcmB9PC9MaW5rVG8+e2AgdGhhdCBiZXN0IHN1aXRzIHlvdXIgbmVlZHMsIG9yIHdyaXRlIHlvdXIgb3duLiBXaGF0ZXZlciB5b3UgZG8sIHlvdSdsbCBuZWVkIHRvIHNldCBpdCB1cCBiZWZvcmUgeW91IGNhbiB1c2UgdGhlIGNhbGVuZGFyICh5b3Ugb25seSBuZWVkIHRvIHNldCBpdCB1cCBvbmNlKS5gfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzeFwiXG4gICAgICB9fT57YGltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcblxuLy8gU2V0dXAgdGhlIGxvY2FsaXplciBieSBwcm92aWRpbmcgdGhlIG1vbWVudCAob3IgZ2xvYmFsaXplLCBvciBMdXhvbikgT2JqZWN0XG4vLyB0byB0aGUgY29ycmVjdCBsb2NhbGl6ZXIuXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KSAvLyBvciBnbG9iYWxpemVMb2NhbGl6ZXJcblxuY29uc3QgTXlDYWxlbmRhciA9IChwcm9wcykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cIm15Q3VzdG9tSGVpZ2h0XCI+XG4gICAgPENhbGVuZGFyXG4gICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgIGV2ZW50cz17bXlFdmVudHNMaXN0fVxuICAgICAgc3RhcnRBY2Nlc3Nvcj1cInN0YXJ0XCJcbiAgICAgIGVuZEFjY2Vzc29yPVwiZW5kXCJcbiAgICAvPlxuICA8L2Rpdj5cbilcbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwPntgT25jZSB5b3UndmUgY29uZmlndXJlZCBhIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImxvY2FsaXplclwiIG1keFR5cGU9XCJMaW5rVG9cIj57YGxvY2FsaXplcmB9PC9MaW5rVG8+e2AsIHRoZSBDYWxlbmRhciBpcyByZWFkeSB0byBhY2NlcHQgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZGF0ZUZvcm1hdGB9PC9pbmxpbmVDb2RlPntgIHByb3BzLiBUaGVzZSBwcm9wcyBkZXRlcm1pbmUgaG93IGRhdGVzIHdpbGwgYmUgZGlzcGxheWVkIHRocm91Z2hvdXQgdGhlIGNvbXBvbmVudCBhbmQgYXJlIHNwZWNpZmljIHRvIHRoZSBsb2NhbGl6ZXIgb2YgeW91ciBjaG9pY2UuIEZvciBpbnN0YW5jZSBpZiB5b3UgYXJlIHVzaW5nIHRoZSBNb21lbnQgbG9jYWxpemVyLCB0aGVuIGFueSBgfTxhIHBhcmVudE5hbWU9XCJwXCIgey4uLntcbiAgICAgICAgXCJocmVmXCI6IFwiaHR0cDovL21vbWVudGpzLmNvbS9kb2NzLyMvZGlzcGxheWluZy9mb3JtYXQvXCIsXG4gICAgICAgIFwidGFyZ2V0XCI6IFwiX2JsYW5rXCIsXG4gICAgICAgIFwicmVsXCI6IFwibm9mb2xsb3cgbm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICB9fT57YE1vbWVudCBmb3JtYXQgcGF0dGVybmB9PC9hPntgIGlzIHZhbGlkIWB9PC9wPlxuICAgIDxwPntgT25lIHRoaW5nIHRvIG5vdGUgaXMgdGhhdCwgQmlnIENhbGVuZGFyIHRyZWF0cyBldmVudCBzdGFydC9lbmQgZGF0ZXMgYXMgYW4gYH08ZW0gcGFyZW50TmFtZT1cInBcIj57YGV4Y2x1c2l2ZWB9PC9lbT57YCByYW5nZSB3aGljaCBtZWFucyB0aGF0IHRoZSBldmVudCBzcGFucyB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIHRoZSBlbmQgZGF0ZS4gSW4gdGhlIGNhc2Ugb2YgZGlzcGxheWluZyBldmVudHMgb24gd2hvbGUgZGF5cywgZW5kIGRhdGVzIGFyZSByb3VuZGVkIGB9PGVtIHBhcmVudE5hbWU9XCJwXCI+e2B1cGB9PC9lbT57YCB0byB0aGUgbmV4dCBkYXkuIFNvIGFuIGV2ZW50IGVuZGluZyBvbiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BBcHIgOHRoIDEyOjAwOjAwIGFtYH08L2lubGluZUNvZGU+e2Agd2lsbCBub3QgYXBwZWFyIG9uIHRoZSA4dGgsIHdoZXJlYXMgb25lIGVuZGluZ1xub24gYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgQXByIDh0aCAxMjowMTowMCBhbWB9PC9pbmxpbmVDb2RlPntgIHdpbGwuIElmIHlvdSB3YW50IGB9PGVtIHBhcmVudE5hbWU9XCJwXCI+e2BpbmNsdXNpdmVgfTwvZW0+e2AgcmFuZ2VzIGNvbnNpZGVyIHByb3ZpZGluZyBhIGZ1bmN0aW9uIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImVuZC1hY2Nlc3NvclwiIG1keFR5cGU9XCJMaW5rVG9cIj57YGVuZEFjY2Vzc29yYH08L0xpbmtUbz57YCB0aGF0IHJldHVybnMgdGhlIGVuZCBkYXRlICsgMSBkYXkgZm9yIHRob3NlIGV2ZW50cyB0aGF0IGVuZCBhdCBtaWRuaWdodC5gfTwvcD5cbiAgICA8aDIgey4uLntcbiAgICAgIFwiaWRcIjogXCJuZXh0LXN0ZXBzXCJcbiAgICB9fT57YE5leHQgU3RlcHNgfTwvaDI+XG4gICAgPHA+e2BXZSBoYXZlIHByb3ZpZGVkIGEgbnVtYmVyIG9mIGB9PExpbmtUbyBraW5kPVwiYWJvdXQtb3VyLWV4YW1wbGVzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgRXhhbXBsZXNgfTwvTGlua1RvPntgIHdpdGhpbiB0aGlzIGRvY3VtZW50YXRpb24sIGluY2x1ZGluZyBpbmRpdmlkdWFsIGV4YW1wbGVzIG9mIGVhY2ggYW5kIGV2ZXJ5IGB9PExpbmtUbyBraW5kPVwicHJvcHMtZnVsbC1wcm9wLWxpc3RcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2Bwcm9wYH08L0xpbmtUbz57YCwgYXMgd2VsbCBhcyB0aGUgRHJhZyBhbmQgRHJvcCBgfTxMaW5rVG8ga2luZD1cImFkZG9ucy1pbnRyb2R1Y3Rpb25cIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BBZGRvbmB9PC9MaW5rVG8+e2AuYH08L3A+XG4gICAgPHA+e2BUaGUgZG9jdW1lbnRhdGlvbiAnQ2FudmFzJyB0YWIsIGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UsIHdpbGwgc2hvdyB5b3UgdGhlIGNvbXBvbmVudCBleGFtcGxlIGZvciB0aGF0IHNwZWNpZmljIHBpZWNlIG9mIGRvY3VtZW50YXRpb24uIFdoaWxlIGluIHRoZSAnQ2FudmFzJyB5b3UgbWF5IGFsc28gaGF2ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBpbiB0aGUgJ0NvbnRyb2xzJyBwYW5lbCwgYWxsb3dpbmcgeW91IHRvIHBsYXkgd2l0aCBhIHByb3AncyBkaWZmZXJlbnQgdmFsdWVzLmB9PC9wPlxuICAgIDxwPntgVGhlICdEb2NzJyB0YWIgd2lsbCBjb250YWluIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIHNwZWNpYWwgY2FzZSBzY2VuYXJpb3MsIGFuZCB0aGUgcmVuZGVyZWQgZXhhbXBsZS4gTW9zdCBvZiB0aGVzZSBleGFtcGxlcyBjb250YWluIGEgJ1Nob3cgY29kZScgYnV0dG9uIChib3R0b20gcmlnaHQpLCBvciBldmVuIGEgc3BlY2lhbCBsaW5rIGF0IHRoZSB0b3AgdG8gJ1ZpZXcgRXhhbXBsZSBTb3VyY2UgQ29kZScuYH08L3A+XG4gICAgPGgyIHsuLi57XG4gICAgICBcImlkXCI6IFwiam9pbi10aGUtY29tbXVuaXR5XCJcbiAgICB9fT57YEpvaW4gdGhlIENvbW11bml0eWB9PC9oMj5cbiAgICA8cD57YEhlbHAgdXMgaW1wcm92ZSBCaWcgQ2FsZW5kYXIhIEpvaW4gdXMgb24gYH08YSBwYXJlbnROYW1lPVwicFwiIHsuLi57XG4gICAgICAgIFwiaHJlZlwiOiBcImh0dHBzOi8vam9pbi5zbGFjay5jb20vdC9iaWdjYWxlbmRhci9zaGFyZWRfaW52aXRlL3p0LTFtbDFqOTlhZi1xSXZxT2Zvc01vZzFXN1d4TTB+ajJRXCIsXG4gICAgICAgIFwidGFyZ2V0XCI6IFwiX2JsYW5rXCIsXG4gICAgICAgIFwicmVsXCI6IFwibm9mb2xsb3cgbm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICB9fT57YFNsYWNrYH08L2E+e2AuYH08L3A+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7XG5cbmV4cG9ydCBjb25zdCBfX3BhZ2UgPSAoKSA9PiB7IHRocm93IG5ldyBFcnJvcihcIkRvY3Mtb25seSBzdG9yeVwiKTsgfTtcblxuX19wYWdlLnBhcmFtZXRlcnMgPSB7IGRvY3NPbmx5OiB0cnVlIH07XG5cbmNvbnN0IGNvbXBvbmVudE1ldGEgPSB7IHRpdGxlOiAnQWJvdXQgQmlnIENhbGVuZGFyJywgaW5jbHVkZVN0b3JpZXM6IFtcIl9fcGFnZVwiXSwgIH07XG5cbmNvbnN0IG1keFN0b3J5TmFtZVRvS2V5ID0ge307XG5cbmNvbXBvbmVudE1ldGEucGFyYW1ldGVycyA9IGNvbXBvbmVudE1ldGEucGFyYW1ldGVycyB8fCB7fTtcbmNvbXBvbmVudE1ldGEucGFyYW1ldGVycy5kb2NzID0ge1xuICAuLi4oY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgfHwge30pLFxuICBwYWdlOiAoKSA9PiA8QWRkQ29udGV4dCBtZHhTdG9yeU5hbWVUb0tleT17bWR4U3RvcnlOYW1lVG9LZXl9IG1keENvbXBvbmVudEFubm90YXRpb25zPXtjb21wb25lbnRNZXRhfT48TURYQ29udGVudCAvPjwvQWRkQ29udGV4dD4sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnRNZXRhOyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IGFzc2VydElzRm4sIEFkZENvbnRleHQgfSBmcm9tIFwiQHN0b3J5Ym9vay9hZGRvbi1kb2NzXCI7XG5cbmltcG9ydCB7IE1ldGEgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5mdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxNZXRhIHRpdGxlPVwiQWJvdXQgT3VyIEV4YW1wbGVzXCIgbWR4VHlwZT1cIk1ldGFcIiAvPlxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImFib3V0LW91ci1leGFtcGxlc1wiXG4gICAgfX0+e2BBYm91dCBPdXIgRXhhbXBsZXNgfTwvaDE+XG4gICAgPHA+e2BXZSBoYXZlIGF0dGVtcHRlZCB0byBwcm92aWRlIGJlc3QgcHJhY3RpY2UgY29kZSBleGFtcGxlcyBmb3IgdXNpbmcgQmlnIENhbGVuZGFyLmB9PC9wPlxuICAgIDxwPntgQmlnIENhbGVuZGFyIGlzLi4uIHdlbGwsIFwiYmlnXCIuIEl0IGhhcyBkb3plbnMgb2YgcHJvcHMsIGFuZCBjYW4gYmUgY29uZmlndXJlZCBpbiBhIGxvdCBvZiBkaWZmZXJlbnQgd2F5cyB0byBtZWV0IGEgd2lkZSBudW1iZXIgb2YgdXNlIGNhc2VzLiBJdCBhbHNvIGhhcyBxdWl0ZSBhIG51bWJlciBvZiBzdWJjb21wb25lbnRzLCBhbmQgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gb3ZlcnJpZGUgbW9zdCBhbGwgb2YgdGhlbS5gfTwvcD5cbiAgICA8cD57YEJlY2F1c2Ugb2YgdGhpcywgaXQncyBpbXBvcnRhbnQgdG8gdGhpbmsgYWJvdXQgaG93IHlvdSBpbml0aWFsaXplIHlvdXIgcHJvcGVydGllcyBhcyB5b3UgcGFzcyB0aGVtIHRvIEJpZyBDYWxlbmRhci4gTGV0J3MgbG9vayBhdCBhIHNtYWxsIGV4YW1wbGU6YH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YC8vIGRvbid0IGRvIHRoaXNcbjxDYWxlbmRhciBkZWZhdWx0RGF0ZT17bmV3IERhdGUoMjAxNSwgMywgMTMpfSB7Li4ub3RoZXJQcm9wc30gLz5cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2AvLyBkbyB0aGlzXG5jb25zdCB7ZGVmYXVsdERhdGV9ID0gdXNlTWVtbygoKSA9PiAoe1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpXG59KSwgW10pXG4vLy4uLlxuPENhbGVuZGFyIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX0gey4uLm90aGVyUHJvcHN9IC8+XG5gfTwvY29kZT48L3ByZT5cbiAgICA8cD57YEluc3RhbnRpYXRpbmcgYSBuZXcgSlMgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgRGF0ZWB9PC9pbmxpbmVDb2RlPntgIGNyZWF0ZXMgYSBuZXcgb2JqZWN0LiBSZWFjdCB3aWxsIHNlZSB0aGlzICduZXcnIHByb3AgYW5kIHJlLXJlbmRlciBldmVyeSBzdWJjb21wb25lbnQgdGhhdCByZWxpZXMgdXBvbiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BkZWZhdWx0RGF0ZWB9PC9pbmxpbmVDb2RlPntgLCBldmVuIGlmICh0ZWNobmljYWxseSkgaXQgZGlkIG5vdCBjaGFuZ2UuYH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YC8vIGRvbid0IGRvIHRoaXNcbjxDYWxlbmRhciBvblZpZXc9eyhuZXdWaWV3KSA9PiBzZXRWaWV3KG5ld1ZpZXcpfSB7Li4ub3RoZXJQcm9wc30gLz5cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2AvLyBhbmQgZG9uJ3QgZG8gdGhpc1xuY29uc3Qgb25WaWV3ID0gKG5ld1ZpZXcpID0+IHNldFZpZXcobmV3VmlldylcbjxDYWxlbmRhciBvblZpZXc9e29uVmlld30gey4uLm90aGVyUHJvcHN9IC8+XG5gfTwvY29kZT48L3ByZT5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgLy8gZG8gdGhpc1xuY29uc3Qgb25WaWV3ID0gdXNlQ2FsbGJhY2soKG5ld1ZpZXcpID0+IHNldFZpZXcobmV3VmlldyksIFtzZXRWaWV3XSlcbjxDYWxlbmRhciBvblZpZXc9e29uVmlld30gey4uLm90aGVyUHJvcHN9IC8+XG5gfTwvY29kZT48L3ByZT5cbiAgICA8cD57YElmIGEgcHJvcCB0YWtlcyBhbiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BPYmplY3RgfTwvaW5saW5lQ29kZT57YCwgYW4gYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgQXJyYXlgfTwvaW5saW5lQ29kZT57YCwgYSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BEYXRlYH08L2lubGluZUNvZGU+e2AsIGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgRnVuY3Rpb25gfTwvaW5saW5lQ29kZT57YCwgb3IgYW55IG90aGVyIG5vbi1zaW1wbGUgdmFyaWFibGUgdHlwZSwgaXQgaXMgYWx3YXlzIGEgZ29vZCBpZGVhIHRvIG1lbW9pemUgdGhvc2UgdmFsdWVzIHByaW9yIHRvIHBhc3NpbmcgdGhlbSBhcyBwcm9wcy4gQ2hhbmNlcyBhcmUgdGhhdCBzb21lIHByb3Agb3Igc3RhdGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlciBvZiB5b3VyIENhbGVuZGFyLiBIb3cgd2VsbCB5b3UgbWFuYWdlIHlvdXIgcHJvcHMgd2lsbCBhZmZlY3Qgb3ZlcmFsbCByZW5kZXIgcGVyZm9ybWFuY2UuYH08L3A+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7XG5cbmV4cG9ydCBjb25zdCBfX3BhZ2UgPSAoKSA9PiB7IHRocm93IG5ldyBFcnJvcihcIkRvY3Mtb25seSBzdG9yeVwiKTsgfTtcblxuX19wYWdlLnBhcmFtZXRlcnMgPSB7IGRvY3NPbmx5OiB0cnVlIH07XG5cbmNvbnN0IGNvbXBvbmVudE1ldGEgPSB7IHRpdGxlOiAnQWJvdXQgT3VyIEV4YW1wbGVzJywgaW5jbHVkZVN0b3JpZXM6IFtcIl9fcGFnZVwiXSwgIH07XG5cbmNvbnN0IG1keFN0b3J5TmFtZVRvS2V5ID0ge307XG5cbmNvbXBvbmVudE1ldGEucGFyYW1ldGVycyA9IGNvbXBvbmVudE1ldGEucGFyYW1ldGVycyB8fCB7fTtcbmNvbXBvbmVudE1ldGEucGFyYW1ldGVycy5kb2NzID0ge1xuICAuLi4oY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgfHwge30pLFxuICBwYWdlOiAoKSA9PiA8QWRkQ29udGV4dCBtZHhTdG9yeU5hbWVUb0tleT17bWR4U3RvcnlOYW1lVG9LZXl9IG1keENvbXBvbmVudEFubm90YXRpb25zPXtjb21wb25lbnRNZXRhfT48TURYQ29udGVudCAvPjwvQWRkQ29udGV4dD4sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnRNZXRhOyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IGFzc2VydElzRm4sIEFkZENvbnRleHQgfSBmcm9tIFwiQHN0b3J5Ym9vay9hZGRvbi1kb2NzXCI7XG5cbmltcG9ydCB7IE1ldGEgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5mdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxNZXRhIHRpdGxlPVwiQWRkb25zL0ludHJvZHVjdGlvblwiIG1keFR5cGU9XCJNZXRhXCIgLz5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJhZGRvbnNcIlxuICAgIH19PntgQWRkb25zYH08L2gxPlxuICAgIDxwPntgQW4gXCJBZGRvblwiIGlzIHNvbWUgYml0IG9mIGNvZGUgdG8gZW5oYW5jZSBhbmQgZXhwYW5kIHRoZSBmdW5jdGlvbmFsaXR5IG9mIEJpZyBDYWxlbmRhci4gVGhlc2UgYXJlIHR5cGljYWxseSBwcm92aWRlZCBieSBzb21lb25lIHdpdGhpbiB0aGUgQmlnIENhbGVuZGFyIGRldmVsb3BlciBjb21tdW5pdHkuYH08L3A+XG4gICAgPHA+e2BJbiB0aGlzIHNlY3Rpb24gd2UgZG9jdW1lbnQgdGhvc2UgQWRkb25zIHRoYXQgd2UgaGF2ZSBpbmNsdWRlZCBkaXJlY3RseSBpbiB0aGUgQmlnIENhbGVuZGFyIGNvZGViYXNlLiBJZiB5b3UgaGF2ZSBhZGRpdGlvbmFsIEFkZC1vbnMgdGhhdCB5b3UgaGF2ZSBjcmVhdGVkIGZvciBCaWcgQ2FsZW5kYXIgcGxlYXNlIGxldCB1cyBrbm93IGFuZCB3ZSBtYXkgbGluayBpdCBoZXJlIGluIHRoZSBkb2N1bWVudGF0aW9uLmB9PC9wPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtaW50cm9kdWN0aW9uXCIgbWR4VHlwZT1cIkxpbmtUb1wiPkRyYWcgYW5kIERyb3A8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IF9fcGFnZSA9ICgpID0+IHsgdGhyb3cgbmV3IEVycm9yKFwiRG9jcy1vbmx5IHN0b3J5XCIpOyB9O1xuXG5fX3BhZ2UucGFyYW1ldGVycyA9IHsgZG9jc09ubHk6IHRydWUgfTtcblxuY29uc3QgY29tcG9uZW50TWV0YSA9IHsgdGl0bGU6ICdBZGRvbnMvSW50cm9kdWN0aW9uJywgaW5jbHVkZVN0b3JpZXM6IFtcIl9fcGFnZVwiXSwgIH07XG5cbmNvbnN0IG1keFN0b3J5TmFtZVRvS2V5ID0ge307XG5cbmNvbXBvbmVudE1ldGEucGFyYW1ldGVycyA9IGNvbXBvbmVudE1ldGEucGFyYW1ldGVycyB8fCB7fTtcbmNvbXBvbmVudE1ldGEucGFyYW1ldGVycy5kb2NzID0ge1xuICAuLi4oY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgfHwge30pLFxuICBwYWdlOiAoKSA9PiA8QWRkQ29udGV4dCBtZHhTdG9yeU5hbWVUb0tleT17bWR4U3RvcnlOYW1lVG9LZXl9IG1keENvbXBvbmVudEFubm90YXRpb25zPXtjb21wb25lbnRNZXRhfT48TURYQ29udGVudCAvPjwvQWRkQ29udGV4dD4sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnRNZXRhOyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IGFzc2VydElzRm4sIEFkZENvbnRleHQgfSBmcm9tIFwiQHN0b3J5Ym9vay9hZGRvbi1kb2NzXCI7XG5cbmltcG9ydCB7IE1ldGEgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5mdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxNZXRhIHRpdGxlPVwiQWRkb25zL0RyYWcgYW5kIERyb3AvSW50cm9kdWN0aW9uXCIgbWR4VHlwZT1cIk1ldGFcIiAvPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRyYWctYW5kLWRyb3BcIlxuICAgIH19PntgRHJhZyBhbmQgRHJvcGB9PC9oMz5cbiAgICA8cD57YENyZWF0ZXMgYSBoaWdoZXItb3JkZXIgY29tcG9uZW50IChIT0MpIHN1cHBvcnRpbmcgZHJhZyAmIGRyb3AgZm9yIG1vdmluZyBhbmQvb3IgcmVzaXppbmcgb2YgZXZlbnRzOmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2BpbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbmltcG9ydCB3aXRoRHJhZ0FuZERyb3AgZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyL2xpYi9hZGRvbnMvZHJhZ0FuZERyb3AnXG5pbXBvcnQgJ3JlYWN0LWJpZy1jYWxlbmRhci9saWIvYWRkb25zL2RyYWdBbmREcm9wL3N0eWxlcy5jc3MnXG5cbmNvbnN0IERuRENhbGVuZGFyID0gd2l0aERyYWdBbmREcm9wKENhbGVuZGFyKVxuXG4vKiAuLi4gKi9cblxucmV0dXJuIChcbiAgPERuRENhbGVuZGFyXG4gICAgbG9jYWxpemVyPXtteUxvY2FsaXplcn1cbiAgICBldmVudHM9e2V2ZW50c31cbiAgICBkcmFnZ2FibGVBY2Nlc3Nvcj17KGV2ZW50KSA9PiB0cnVlfVxuICAvPlxuKVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPHA+e2BTZXQgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwicmVzaXphYmxlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgcmVzaXphYmxlYH08L0xpbmtUbz57YCB0byBmYWxzZSBpbiB5b3VyIGNhbGVuZGFyIGlmIHlvdSBkb24ndCB3YW50IGV2ZW50cyB0byBiZSByZXNpemFibGUuXG5gfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2ByZXNpemFibGVgfTwvaW5saW5lQ29kZT57YCBpcyBzZXQgdG8gdHJ1ZSBieSBkZWZhdWx0LmB9PC9wPlxuICAgIDxwPntgVGhlIEhPQyBhZGRzIGB9PExpbmtUbyBraW5kPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtcHJvcHNcIiBzdG9yeT1cIm9uLWV2ZW50LWRyb3BcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvbkV2ZW50RHJvcGB9PC9MaW5rVG8+e2AsIGB9PExpbmtUbyBraW5kPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtcHJvcHNcIiBzdG9yeT1cIm9uLWV2ZW50LXJlc2l6ZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uRXZlbnRSZXNpemVgfTwvTGlua1RvPntgLCBhbmQgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwib24tZHJhZy1zdGFydFwiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uRHJhZ1N0YXJ0YH08L0xpbmtUbz57YCBjYWxsYmFjayBwcm9wZXJ0aWVzIGlmIHRoZSBldmVudHMgYXJlXG5tb3ZlZCBvciByZXNpemVkLiBUaGVzZSBjYWxsYmFja3MgYXJlIGNhbGxlZCB3aXRoIHRoZXNlIHNpZ25hdHVyZXM6YH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YGZ1bmN0aW9uIG9uRXZlbnREcm9wKHtldmVudCwgc3RhcnQsIGVuZCwgYWxsRGF5fSkgey4uLn1cbmZ1bmN0aW9uIG9uRXZlbnRSZXNpemUoe2V2ZW50LCBzdGFydCwgZW5kLCBhbGxEYXl9KSB7Li4ufVxuZnVuY3Rpb24gb25EcmFnU3RhcnQoe2V2ZW50fSkgey4uLn1cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwPntgTW92aW5nIGFuZCByZXNpemluZyBvZiBldmVudHMgaGFzIHNvbWUgc3VidGxldHkgd2hpY2ggb25lIHNob3VsZCBiZSBhd2FyZSBvZjpgfTwvcD5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxwIHBhcmVudE5hbWU9XCJsaVwiPntgSW4gc29tZSBzaXR1YXRpb25zLCBub24tYWxsRGF5IGV2ZW50cyBhcmUgZGlzcGxheWVkIGluIFwicm93XCIgZm9ybWF0IHdoZXJlIHRoZXlcbmFyZSByZW5kZXJlZCBob3Jpem9udGFsbHkuIFRoaXMgaXMgdGhlIGNhc2UgZm9yIEFMTCBldmVudHMgaW4gYSBtb250aCB2aWV3LiBJdFxuaXMgYWxzbyBvY2N1cnMgd2l0aCBtdWx0aS1kYXkgZXZlbnRzIGluIGEgZGF5IG9yIHdlZWsgdmlldyAodW5sZXNzIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNob3ctbXVsdGktZGF5LXRpbWVzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgc2hvd011bHRpRGF5VGltZXNgfTwvTGlua1RvPntgXG5pcyBzZXQpLmB9PC9wPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPHAgcGFyZW50TmFtZT1cImxpXCI+e2BXaGVuIGRyb3BwaW5nIG9yIHJlc2l6aW5nIG5vbi1hbGxEYXkgZXZlbnRzIGludG8gYSB0aGUgaGVhZGVyIGFyZWEgb3Igd2hlblxucmVzaXppbmcgdGhlbSBob3Jpem9udGFsbHkgYmVjYXVzZSB0aGV5IGFyZSBkaXNwbGF5ZWQgaW4gcm93IGZvcm1hdCwgdGhlaXJcbnRpbWVzIGFyZSBwcmVzZXJ2ZWQsIG9ubHkgdGhlaXIgZGF0ZSBpcyBjaGFuZ2VkLmB9PC9wPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPHAgcGFyZW50TmFtZT1cImxpXCI+e2BJZiB5b3UgY2FyZSBhYm91dCB0aGVzZSBjb3JuZXIgY2FzZXMsIHlvdSBjYW4gZXhhbWluZSB0aGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgYWxsRGF5YH08L2lubGluZUNvZGU+e2AgcGFyYW0gc3VwcGxpZWRcbmluIHRoZSBjYWxsYmFjayB0byBkZXRlcm1pbmUgaG93IHRoZSB1c2VyIGRyb3BwZWQgb3IgcmVzaXplZCB0aGUgZXZlbnQuYH08L3A+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBZGRpdGlvbmFsbHksIHRoaXMgSE9DIGFkZHMgdGhlIGNhbGxiYWNrIHByb3BzIGB9PExpbmtUbyBraW5kPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtcHJvcHNcIiBzdG9yeT1cIm9uLWRyb3AtZnJvbS1vdXRzaWRlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgb25Ecm9wRnJvbU91dHNpZGVgfTwvTGlua1RvPntgIGFuZCBgfTxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJvbi1kcmFnLW92ZXJcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvbkRyYWdPdmVyYH08L0xpbmtUbz57YDpgfTwvcD5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxwIHBhcmVudE5hbWU9XCJsaVwiPntgQnkgZGVmYXVsdCwgdGhlIGNhbGVuZGFyIHdpbGwgbm90IHJlc3BvbmQgdG8gb3V0c2lkZSBkcmFnZ2FibGUgaXRlbXMgYmVpbmcgZHJvcHBlZFxub250byBpdC4gSG93ZXZlciwgaWYgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwib24tZHJvcC1mcm9tLW91dHNpZGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvbkRyb3BGcm9tT3V0c2lkZWB9PC9MaW5rVG8+e2AgY2FsbGJhY2sgaXMgcGFzc2VkLCB0aGVuIHdoZW4gZHJhZ2dhYmxlXG5ET00gZWxlbWVudHMgYXJlIGRyb3BwZWQgb24gdGhlIGNhbGVuZGFyLCB0aGUgY2FsbGJhY2sgd2lsbCBmaXJlLCByZWNlaXZpbmcgYW5cbm9iamVjdCB3aXRoIHN0YXJ0IGFuZCBlbmQgdGltZXMsIGFuZCBhbiBhbGxEYXkgYm9vbGVhbi5gfTwvcD5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxwIHBhcmVudE5hbWU9XCJsaVwiPntgSWYgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwib24tZHJvcC1mcm9tLW91dHNpZGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvbkRyb3BGcm9tT3V0c2lkZWB9PC9MaW5rVG8+e2AgaXMgcGFzc2VkLCBidXQgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwib24tZHJhZy1vdmVyXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgb25EcmFnT3ZlcmB9PC9MaW5rVG8+e2AgaXMgbm90LCBhbnkgZHJhZ2dhYmxlIGV2ZW50IHdpbGwgYmVcbmRyb3BwYWJsZSBvbnRvIHRoZSBjYWxlbmRhciBieSBkZWZhdWx0LiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgYW4gYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25EcmFnT3ZlcmB9PC9pbmxpbmVDb2RlPntgIGNhbGxiYWNrXG5gfTxlbSBwYXJlbnROYW1lPVwicFwiPntgaXNgfTwvZW0+e2AgcGFzc2VkLCB0aGVuIGl0IGNhbiBkaXNjcmltaW5hdGUgYXMgdG8gd2hldGhlciBhIGRyYWdnYWJsZSBpdGVtIGlzIGRyb3BwYWJsZSBvbiB0aGVcbmNhbGVuZGFyLiBUbyBkZXNpZ25hdGUgYSBkcmFnZ2FibGUgaXRlbSBhcyBkcm9wcGFibGUsIGNhbGwgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZXZlbnQucHJldmVudERlZmF1bHRgfTwvaW5saW5lQ29kZT57YFxuaW5zaWRlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uRHJhZ092ZXJgfTwvaW5saW5lQ29kZT57YC4gSWYgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZXZlbnQucHJldmVudERlZmF1bHRgfTwvaW5saW5lQ29kZT57YCBpcyBub3QgY2FsbGVkIGluIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvbkRyYWdPdmVyYH08L2lubGluZUNvZGU+e2BcbmNhbGxiYWNrLCB0aGVuIHRoZSBkcmFnZ2FibGUgaXRlbSB3aWxsIG5vdCBiZSBkcm9wcGFibGUgb24gdGhlIGNhbGVuZGFyLmB9PC9wPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2BmdW5jdGlvbiBvbkRyb3BGcm9tT3V0c2lkZSh7IHN0YXJ0LCBlbmQsIGFsbERheSB9KSB7Li4ufVxuZnVuY3Rpb24gb25EcmFnT3ZlcihEcmFnRXZlbnQ6IFN5bnRoZXRpY0V2ZW50KSB7Li4ufVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7XG5cbmV4cG9ydCBjb25zdCBfX3BhZ2UgPSAoKSA9PiB7IHRocm93IG5ldyBFcnJvcihcIkRvY3Mtb25seSBzdG9yeVwiKTsgfTtcblxuX19wYWdlLnBhcmFtZXRlcnMgPSB7IGRvY3NPbmx5OiB0cnVlIH07XG5cbmNvbnN0IGNvbXBvbmVudE1ldGEgPSB7IHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AvSW50cm9kdWN0aW9uJywgaW5jbHVkZVN0b3JpZXM6IFtcIl9fcGFnZVwiXSwgIH07XG5cbmNvbnN0IG1keFN0b3J5TmFtZVRvS2V5ID0ge307XG5cbmNvbXBvbmVudE1ldGEucGFyYW1ldGVycyA9IGNvbXBvbmVudE1ldGEucGFyYW1ldGVycyB8fCB7fTtcbmNvbXBvbmVudE1ldGEucGFyYW1ldGVycy5kb2NzID0ge1xuICAuLi4oY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgfHwge30pLFxuICBwYWdlOiAoKSA9PiA8QWRkQ29udGV4dCBtZHhTdG9yeU5hbWVUb0tleT17bWR4U3RvcnlOYW1lVG9LZXl9IG1keENvbXBvbmVudEFubm90YXRpb25zPXtjb21wb25lbnRNZXRhfT48TURYQ29udGVudCAvPjwvQWRkQ29udGV4dD4sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnRNZXRhOyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IGFzc2VydElzRm4sIEFkZENvbnRleHQgfSBmcm9tIFwiQHN0b3J5Ym9vay9hZGRvbi1kb2NzXCI7XG5cbmltcG9ydCB7IE1ldGEgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5mdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxNZXRhIHRpdGxlPVwiQWRkb25zL0RyYWcgYW5kIERyb3AvcHJvcHMvRnVsbCBQcm9wIExpc3RcIiBtZHhUeXBlPVwiTWV0YVwiIC8+XG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiYWxsLWRyYWctYW5kLWRyb3BzLXByb3BzXCJcbiAgICB9fT57YEFsbCBEcmFnIGFuZCBEcm9wcyBQcm9wc2B9PC9oMT5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbmV2ZW50ZHJvcFwiXG4gICAgfX0+e2BvbkV2ZW50RHJvcGB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKHsgZXZlbnQsIHN0YXJ0LCBlbmQsIGFsbERheSB9KSA9PiBhbnlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwib24tZXZlbnQtZHJvcFwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEEgY2FsbGJhY2sgZmlyZWQgd2hlbiB1c2VyIGRyb3BzIGFuIGl0ZW0gZnJvbSBvbmUgc2xvdCB0byBhbm90aGVyIGZyb20gd2l0aGluIHRoZSBDYWxlbmRhci4gRGV2ZWxvcGVycyB3aWxsIHR5cGljYWxseSB1c2UgdGhpcyBtZXRob2QgdG8gdXBkYXRlIGFuIGl0ZW0ncyBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BzdGFydGB9PC9pbmxpbmVDb2RlPntgIGFuZCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BlbmRgfTwvaW5saW5lQ29kZT57YCBpbiBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJldmVudHNcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BldmVudHNgfTwvTGlua1RvPntgLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9uZHJhZ3N0YXJ0XCJcbiAgICB9fT57YG9uRHJhZ1N0YXJ0YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoeyBldmVudCwgYWN0aW9uLCBkaXJlY3Rpb24gfSkgPT4gYW55YH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtcHJvcHNcIiBzdG9yeT1cIm9uLWRyYWctc3RhcnRcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBIGNhbGxiYWNrIGZpcmVkIHdoZW4gdXNlciBiZWdpbnMgdG8gZHJhZyBhbiBldmVudC5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbmRyb3Bmcm9tb3V0c2lkZVwiXG4gICAgfX0+e2BvbkRyb3BGcm9tT3V0c2lkZWB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKHsgc3RhcnQsIGVuZCwgYWxsRGF5IH0pID0+IGFueWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJvbi1kcm9wLWZyb20tb3V0c2lkZVwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEEgY2FsbGJhY2sgZmlyZWQgd2hlbiB1c2VyIGRyb3BzIGFuIGl0ZW0gb250byB0aGUgQ2FsZW5kYXIgZnJvbSBvdXRzaWRlIG9mIHRoZSBDYWxlbmRhci4gRGV2ZWxvcGVycyB3aWxsIHR5cGljYWxseSB1c2UgdGhpcyBtZXRob2QgdG8gYWRkIG5ldyBpdGVtcyB0byB0aGUgQ2FsZW5kYXIncyBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJldmVudHNcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BldmVudHNgfTwvTGlua1RvPntgLmB9PC9wPlxuICAgIDxwPjxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YEltcG9ydGFudDpgfTwvc3Ryb25nPntgIFRoZSBjYWxsYmFjayBkb2VzIGB9PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgbm90YH08L3N0cm9uZz57YCByZWNlaXZlIHRoZSBlbGVtZW50IGJlaW5nIGRyb3BwZWQuIEl0IG9ubHkgcmVjZWl2ZXMgdGhlIGRldGFpbHMgb2YgdGhlIHNsb3QgYW4gZWxlbWVudCB3YXMgZHJvcHBlZCBvbi5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJkcmFnZnJvbW91dHNpZGVpdGVtXCJcbiAgICB9fT57YGRyYWdGcm9tT3V0c2lkZUl0ZW1gfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uICgpID0+IGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwiZHJhZy1mcm9tLW91dHNpZGUtaXRlbVwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEEgY2FsbGJhY2sgdG8gZ2V0IGEgdGVtcG9yYXJ5IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGV2ZW50YH08L2lubGluZUNvZGU+e2AgdG8gZGlzcGxheSBpbiBhIHNsb3QgaW4gdGhlIHByb2Nlc3Mgb2YgZHJhZ2dpbmcgZnJvbSBvdXRzaWRlLiBUaGlzIGlzIG5vdCByZXF1aXJlZCBmb3IgRHJhZyBhbmQgRHJvcCB0byBmdW5jdGlvbiwgYnV0IHByb3ZpZGVzIGEgbmljZSB2aXN1YWwgY3VlIHRvIHRoZSB1c2VyIHdoZW4gZHJhZ2dpbmcgaW4gYW4gaXRlbSBmcm9tIG91dHNpZGUgb2YgdGhlIENhbGVuZGFyLmB9PC9wPlxuICAgIDxwPntgVGlwOiBUb2dnbGUgdGhlIGNoZWNrYm94LCBpbiB0aGUgZXhhbXBsZSwgYW5kIGRyYWcgYW4gb3V0c2lkZSBpdGVtIGluLiBEbyB0aGlzIGZyb20gYm90aCBjaGVja2JveCBzdGF0ZXMgdG8gc2VlIHRoZSBkaWZmZXJlbmNlIGluIGVmZmVjdC5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbmRyYWdvdmVyXCJcbiAgICB9fT57YG9uRHJhZ092ZXJgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChkcmFnRXZlbnQ6IFN5bnRoZXRpY0V2ZW50KSA9PiBhbnlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwib24tZHJhZy1vdmVyXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgSWYgYW4gYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25EcmFnT3ZlcmB9PC9pbmxpbmVDb2RlPntgIGNhbGxiYWNrIGB9PGVtIHBhcmVudE5hbWU9XCJwXCI+e2Bpc2B9PC9lbT57YCBwYXNzZWQsIHRoZW4gaXQgY2FuIGRpc2NyaW1pbmF0ZSBhcyB0byB3aGV0aGVyIGEgZHJhZ2dhYmxlIGl0ZW0gaXMgZHJvcHBhYmxlIG9uIHRoZSBjYWxlbmRhci4gVG8gZGVzaWduYXRlIGEgZHJhZ2dhYmxlIGl0ZW0gYXMgZHJvcHBhYmxlLCBjYWxsIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGV2ZW50LnByZXZlbnREZWZhdWx0YH08L2lubGluZUNvZGU+e2AgaW5zaWRlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uRHJhZ092ZXJgfTwvaW5saW5lQ29kZT57YC4gSWYgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZXZlbnQucHJldmVudERlZmF1bHRgfTwvaW5saW5lQ29kZT57YCBpcyBub3QgY2FsbGVkIGluIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvbkRyYWdPdmVyYH08L2lubGluZUNvZGU+e2AgY2FsbGJhY2ssIHRoZW4gdGhlIGRyYWdnYWJsZSBpdGVtIHdpbGwgbm90IGJlIGRyb3BwYWJsZSBvbiB0aGUgY2FsZW5kYXIuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZHJhZ2dhYmxlYWNjZXNzb3JcIlxuICAgIH19PntgZHJhZ2dhYmxlQWNjZXNzb3JgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0cmluZ3xmdW5jdGlvbiAoZXZlbnQpID0+IGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YCgpID0+IHRydWVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwiZHJhZ2dhYmxlLWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgV2hlbiB1c2VkLCBjYW4gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gJ2V2ZW50JyBpcyBkcmFnZ2FibGVgfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJyZXNpemFibGVcIlxuICAgIH19PntgcmVzaXphYmxlYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2Bib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2B0cnVlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtcHJvcHNcIiBzdG9yeT1cInJlc2l6YWJsZVwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERldGVybWluZXMgaWYgZXZlbnRzIG1heSBiZSByZXNpemVkIG9uIHRoZSBDYWxlbmRhci4gVXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGB9PExpbmtUbyBraW5kPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtcHJvcHNcIiBzdG9yeT1cIm9uLWV2ZW50LXJlc2l6ZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uRXZlbnRSZXNpemVgfTwvTGlua1RvPntgLiBXaGVuIHVzZWQgd2l0aCB0aGUgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwicmVzaXphYmxlLWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgcmVzaXphYmxlQWNjZXNzb3JgfTwvTGlua1RvPntgIHRoZSBkZXZlbG9wZXIgaGFzIGV2ZW4gZ3JlYXRlciBjb250cm9sLmB9PC9wPlxuICAgIDxwPjxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YE5vdGU6YH08L3N0cm9uZz57YCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2ByZXNpemFibGVgfTwvaW5saW5lQ29kZT57YCBldmVudHMgbXVzdCBhbHNvIGJlIGRyYWdnYWJsZS4gWW91IGNhbm5vdCByZXNpemUgYW4gZXZlbnQgd2l0aCBhIGB9PExpbmtUbyBraW5kPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtcHJvcHNcIiBzdG9yeT1cImRyYWdnYWJsZS1hY2Nlc3NvclwiIG1keFR5cGU9XCJMaW5rVG9cIj57YGRyYWdnYWJsZUFjY2Vzc29yYH08L0xpbmtUbz57YCBwcm9wIG9mIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGZhbHNlYH08L2lubGluZUNvZGU+e2AuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwib25ldmVudHJlc2l6ZVwiXG4gICAgfX0+e2BvbkV2ZW50UmVzaXplYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoeyBldmVudCwgc3RhcnQsIGVuZCB9KSA9PiBhbnlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwib24tZXZlbnQtcmVzaXplXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQSBjYWxsYmFjayBmaXJlZCB3aGVuIHVzZXIgcmVzaXplcyBhbiBldmVudC4gRGV2ZWxvcGVycyB3aWxsIHR5cGljYWxseSB1c2UgdGhpcyBtZXRob2QgdG8gdXBkYXRlIGFuIGl0ZW0ncyBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BzdGFydGB9PC9pbmxpbmVDb2RlPntgIGFuZCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BlbmRgfTwvaW5saW5lQ29kZT57YCBpbiBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJldmVudHNcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BldmVudHNgfTwvTGlua1RvPntgLmB9PC9wPlxuICAgIDxwPntgVGhlIGB9PExpbmtUbyBraW5kPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtcHJvcHNcIiBzdG9yeT1cInJlc2l6YWJsZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YHJlc2l6YWJsZWB9PC9MaW5rVG8+e2AgcHJvcCBtdXN0IGJlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHRydWVgfTwvaW5saW5lQ29kZT57YCAodGhlIGRlZmF1bHQpIHRvIHVzZSB0aGUgbWV0aG9kLmB9PC9wPlxuICAgIDxwPjxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YE5vdGU6YH08L3N0cm9uZz57YCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2ByZXNpemFibGVgfTwvaW5saW5lQ29kZT57YCBldmVudHMgbXVzdCBhbHNvIGJlIGRyYWdnYWJsZS4gWW91IGNhbm5vdCByZXNpemUgYW4gZXZlbnQgd2l0aCBhIGB9PExpbmtUbyBraW5kPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtcHJvcHNcIiBzdG9yeT1cImRyYWdnYWJsZS1hY2Nlc3NvclwiIG1keFR5cGU9XCJMaW5rVG9cIj57YGRyYWdnYWJsZUFjY2Vzc29yYH08L0xpbmtUbz57YCBwcm9wIG9mIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGZhbHNlYH08L2lubGluZUNvZGU+e2AuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwicmVzaXphYmxlYWNjZXNzb3JcIlxuICAgIH19PntgcmVzaXphYmxlQWNjZXNzb3JgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0cmluZ3xmdW5jdGlvbiAoZXZlbnQpID0+IGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YCgpID0+IHRydWVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwicmVzaXphYmxlLWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRGV0ZXJtaW5lcyBpZiBhbiBldmVudCBpcyByZXNpemFibGUuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgTm90ZTpgfTwvc3Ryb25nPntgIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHJlc2l6YWJsZWB9PC9pbmxpbmVDb2RlPntgIGV2ZW50cyBtdXN0IGFsc28gYmUgZHJhZ2dhYmxlLiBZb3UgY2Fubm90IHJlc2l6ZSBhbiBldmVudCB3aXRoIGEgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwiZHJhZ2dhYmxlLWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZHJhZ2dhYmxlQWNjZXNzb3JgfTwvTGlua1RvPntgIHByb3Agb2YgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZmFsc2VgfTwvaW5saW5lQ29kZT57YC5gfTwvcD5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IF9fcGFnZSA9ICgpID0+IHsgdGhyb3cgbmV3IEVycm9yKFwiRG9jcy1vbmx5IHN0b3J5XCIpOyB9O1xuXG5fX3BhZ2UucGFyYW1ldGVycyA9IHsgZG9jc09ubHk6IHRydWUgfTtcblxuY29uc3QgY29tcG9uZW50TWV0YSA9IHsgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcy9GdWxsIFByb3AgTGlzdCcsIGluY2x1ZGVTdG9yaWVzOiBbXCJfX3BhZ2VcIl0sICB9O1xuXG5jb25zdCBtZHhTdG9yeU5hbWVUb0tleSA9IHt9O1xuXG5jb21wb25lbnRNZXRhLnBhcmFtZXRlcnMgPSBjb21wb25lbnRNZXRhLnBhcmFtZXRlcnMgfHwge307XG5jb21wb25lbnRNZXRhLnBhcmFtZXRlcnMuZG9jcyA9IHtcbiAgLi4uKGNvbXBvbmVudE1ldGEucGFyYW1ldGVycy5kb2NzIHx8IHt9KSxcbiAgcGFnZTogKCkgPT4gPEFkZENvbnRleHQgbWR4U3RvcnlOYW1lVG9LZXk9e21keFN0b3J5TmFtZVRvS2V5fSBtZHhDb21wb25lbnRBbm5vdGF0aW9ucz17Y29tcG9uZW50TWV0YX0+PE1EWENvbnRlbnQgLz48L0FkZENvbnRleHQ+LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50TWV0YTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBhc3NlcnRJc0ZuLCBBZGRDb250ZXh0IH0gZnJvbSBcIkBzdG9yeWJvb2svYWRkb24tZG9jc1wiO1xuXG5pbXBvcnQgeyBNZXRhIH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8TWV0YSB0aXRsZT1cIkV4YW1wbGVzL0RyYWcgYW5kIERyb3BcIiBtZHhUeXBlPVwiTWV0YVwiIC8+XG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZHJhZy1hbmQtZHJvcFwiXG4gICAgfX0+e2BEcmFnIGFuZCBEcm9wYH08L2gxPlxuICAgIDxwPntgVGhlIGB9PExpbmtUbyBraW5kPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtaW50cm9kdWN0aW9uXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgRHJhZyBhbmQgRHJvcCBFeGFtcGxlc2B9PC9MaW5rVG8+e2AgaGF2ZSBiZWVuIG1vdmVkIGludG8gdGhlIGB9PExpbmtUbyBraW5kPVwiYWRkb25zLWludHJvZHVjdGlvblwiIG1keFR5cGU9XCJMaW5rVG9cIj57YEFkZE9uc2B9PC9MaW5rVG8+e2Agc2VjdGlvbiBvZiB0aGUgZG9jdW1lbnRhdGlvbmB9PC9wPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlO1xuXG5leHBvcnQgY29uc3QgX19wYWdlID0gKCkgPT4geyB0aHJvdyBuZXcgRXJyb3IoXCJEb2NzLW9ubHkgc3RvcnlcIik7IH07XG5cbl9fcGFnZS5wYXJhbWV0ZXJzID0geyBkb2NzT25seTogdHJ1ZSB9O1xuXG5jb25zdCBjb21wb25lbnRNZXRhID0geyB0aXRsZTogJ0V4YW1wbGVzL0RyYWcgYW5kIERyb3AnLCBpbmNsdWRlU3RvcmllczogW1wiX19wYWdlXCJdLCAgfTtcblxuY29uc3QgbWR4U3RvcnlOYW1lVG9LZXkgPSB7fTtcblxuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzID0gY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzIHx8IHt9O1xuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgPSB7XG4gIC4uLihjb21wb25lbnRNZXRhLnBhcmFtZXRlcnMuZG9jcyB8fCB7fSksXG4gIHBhZ2U6ICgpID0+IDxBZGRDb250ZXh0IG1keFN0b3J5TmFtZVRvS2V5PXttZHhTdG9yeU5hbWVUb0tleX0gbWR4Q29tcG9uZW50QW5ub3RhdGlvbnM9e2NvbXBvbmVudE1ldGF9PjxNRFhDb250ZW50IC8+PC9BZGRDb250ZXh0Pixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudE1ldGE7IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgYXNzZXJ0SXNGbiwgQWRkQ29udGV4dCB9IGZyb20gXCJAc3Rvcnlib29rL2FkZG9uLWRvY3NcIjtcblxuaW1wb3J0IHsgTWV0YSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPE1ldGEgdGl0bGU9XCJHdWlkZXMvQ3VzdG9tIFN0eWxpbmdcIiBtZHhUeXBlPVwiTWV0YVwiIC8+XG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiY3VzdG9tLXN0eWxpbmdcIlxuICAgIH19PntgQ3VzdG9tIFN0eWxpbmdgfTwvaDE+XG4gICAgPHA+e2BPdXQgb2YgdGhlIGJveCwgeW91IGNhbiBpbmNsdWRlIHRoZSBjb21waWxlZCBDU1MgZmlsZXMgYW5kIGJlIHVwIGFuZCBydW5uaW5nLiBCdXQsIHNvbWV0aW1lcywgeW91IG1heSB3YW50IHRvIHN0eWxlIEJpZyBDYWxlbmRhciB0byBtYXRjaCB5b3VyIGFwcGxpY2F0aW9uIHN0eWxpbmcuIEZvciB0aGlzIHJlYXNvbiwgU0FTUyBmaWxlcyBhcmUgaW5jbHVkZWQgd2l0aCBCaWcgQ2FsZW5kYXIuYH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1zYXNzXCJcbiAgICAgIH19PntgQGltcG9ydCAncmVhY3QtYmlnLWNhbGVuZGFyL2xpYi9zYXNzL3N0eWxlcyc7XG5AaW1wb3J0ICdyZWFjdC1iaWctY2FsZW5kYXIvbGliL2FkZG9ucy9kcmFnQW5kRHJvcC9zdHlsZXMnOyAvLyBpZiB1c2luZyBEbkRcbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwPntgU0FTUyBpbXBsZW1lbnRhdGlvbiBwcm92aWRlcyBhIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHZhcmlhYmxlc2B9PC9pbmxpbmVDb2RlPntgIGZpbGUgY29udGFpbmluZyBjb2xvciBhbmQgc2l6aW5nIHZhcmlhYmxlcyB0aGF0IHlvdSBjYW4gdXBkYXRlIHRvIGZpdCB5b3VyIGFwcGxpY2F0aW9uLiBOb3RlOiBDaGFuZ2luZyBhbmQvb3Igb3ZlcnJpZGluZyBzdHlsZXMgY2FuIGNhdXNlIHJlbmRlcmluZyBpc3N1ZXMgd2l0aCB5b3VyIEJpZyBDYWxlbmRhci4gQ2FyZWZ1bGx5IHRlc3QgZWFjaCBjaGFuZ2UgYWNjb3JkaW5nbHkuYH08L3A+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7XG5cbmV4cG9ydCBjb25zdCBfX3BhZ2UgPSAoKSA9PiB7IHRocm93IG5ldyBFcnJvcihcIkRvY3Mtb25seSBzdG9yeVwiKTsgfTtcblxuX19wYWdlLnBhcmFtZXRlcnMgPSB7IGRvY3NPbmx5OiB0cnVlIH07XG5cbmNvbnN0IGNvbXBvbmVudE1ldGEgPSB7IHRpdGxlOiAnR3VpZGVzL0N1c3RvbSBTdHlsaW5nJywgaW5jbHVkZVN0b3JpZXM6IFtcIl9fcGFnZVwiXSwgIH07XG5cbmNvbnN0IG1keFN0b3J5TmFtZVRvS2V5ID0ge307XG5cbmNvbXBvbmVudE1ldGEucGFyYW1ldGVycyA9IGNvbXBvbmVudE1ldGEucGFyYW1ldGVycyB8fCB7fTtcbmNvbXBvbmVudE1ldGEucGFyYW1ldGVycy5kb2NzID0ge1xuICAuLi4oY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgfHwge30pLFxuICBwYWdlOiAoKSA9PiA8QWRkQ29udGV4dCBtZHhTdG9yeU5hbWVUb0tleT17bWR4U3RvcnlOYW1lVG9LZXl9IG1keENvbXBvbmVudEFubm90YXRpb25zPXtjb21wb25lbnRNZXRhfT48TURYQ29udGVudCAvPjwvQWRkQ29udGV4dD4sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnRNZXRhOyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IGFzc2VydElzRm4sIEFkZENvbnRleHQgfSBmcm9tIFwiQHN0b3J5Ym9vay9hZGRvbi1kb2NzXCI7XG5cbmltcG9ydCB7IE1ldGEgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5mdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxNZXRhIHRpdGxlPVwiR3VpZGVzL0NyZWF0aW5nIEN1c3RvbSBWaWV3c1wiIG1keFR5cGU9XCJNZXRhXCIgLz5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJjcmVhdGluZy1hLWN1c3RvbS12aWV3XCJcbiAgICB9fT57YENyZWF0aW5nIEEgQ3VzdG9tIFZpZXdgfTwvaDE+XG4gICAgPHA+e2BJdCBpcyBwb3NzaWJsZSB0byBvdmVycmlkZSBhbiBleGlzdGluZyBDYWxlbmRhciBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B2aWV3YH08L2lubGluZUNvZGU+e2AsIG9yIGV2ZW4gY3JlYXRlIGEgbmV3IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHZpZXdgfTwvaW5saW5lQ29kZT57YCBhbGwgdG9nZXRoZXIsIGJ5IGFkaGVyaW5nIHRvIGEgc3BlY2lmaWMgaW50ZXJmYWNlLmB9PC9wPlxuICAgIDxMaW5rVG8ga2luZD1cImV4YW1wbGVzXCIgc3Rvcnk9XCJleGFtcGxlLTlcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIFZpZXcgQW4gRXhhbXBsZVxuICAgIDwvTGlua1RvPlxuICAgIDxwPntgRmlyc3QgYnVpbGQgeW91ciBjdXN0b20gYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgdmlld2B9PC9pbmxpbmVDb2RlPntgIGNvbXBvbmVudC4gVGhpcyBjb3VsZCBiZSBiYXNlZCBvZmYgYW4gZXhpc3RpbmcgY29tcG9uZW50LCBvciBzb21ldGhpbmcgY29tcGxldGVseSBjdXN0b20uYH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YGltcG9ydCBSZWFjdCwge3VzZU1lbW99IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgTmF2aWdhdGUgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgVGltZUdyaWQgZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyL2xpYi9UaW1lR3JpZCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ3VzdG9tV2Vla1ZpZXcoe1xuICBkYXRlLFxuICBsb2NhbGl6ZXIsXG4gIG1heCA9IGxvY2FsaXplci5lbmRPZihuZXcgRGF0ZSgpLCAnZGF5JyksXG4gIG1pbiA9IGxvY2FsaXplci5zdGFydE9mKG5ldyBEYXRlKCksICdkYXknKSxcbiAgc2Nyb2xsVG9UaW1lID0gbG9jYWxpemVyLnN0YXJ0T2YobmV3IERhdGUoKSwgJ2RheScpLFxuICAuLi5wcm9wc1xufSkge1xuICBjb25zdCBjdXJyUmFuZ2UgPSB1c2VNZW1vKFxuICAgICgpID0+IEN1c3RvbVdlZWtWaWV3LnJhbmdlKGRhdGUsIHsgbG9jYWxpemVyIH0pLFxuICAgIFtkYXRlLCBsb2NhbGl6ZXJdXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxUaW1lR3JpZFxuICAgICAgZGF0ZT17ZGF0ZX1cbiAgICAgIGV2ZW50T2Zmc2V0PXsxNX1cbiAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgbWF4PXttYXh9XG4gICAgICBtaW49e21pbn1cbiAgICAgIHJhbmdlPXtjdXJyUmFuZ2V9XG4gICAgICBzY3JvbGxUb1RpbWU9e3Njcm9sbFRvVGltZX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59XG5cbkN1c3RvbVdlZWtWaWV3LnByb3BUeXBlcyA9IHtcbiAgZGF0ZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBtYXg6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICBtaW46IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICBzY3JvbGxUb1RpbWU6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxufVxuXG5DdXN0b21XZWVrVmlldy5yYW5nZSA9IChkYXRlLCB7IGxvY2FsaXplciB9KSA9PiB7XG4gIGNvbnN0IHN0YXJ0ID0gZGF0ZVxuICBjb25zdCBlbmQgPSBsb2NhbGl6ZXIuYWRkKHN0YXJ0LCAyLCAnZGF5JylcblxuICBsZXQgY3VycmVudCA9IHN0YXJ0XG4gIGNvbnN0IHJhbmdlID0gW11cblxuICB3aGlsZSAobG9jYWxpemVyLmx0ZShjdXJyZW50LCBlbmQsICdkYXknKSkge1xuICAgIHJhbmdlLnB1c2goY3VycmVudClcbiAgICBjdXJyZW50ID0gbG9jYWxpemVyLmFkZChjdXJyZW50LCAxLCAnZGF5JylcbiAgfVxuXG4gIHJldHVybiByYW5nZVxufVxuXG5DdXN0b21XZWVrVmlldy5uYXZpZ2F0ZSA9IChkYXRlLCBhY3Rpb24sIHsgbG9jYWxpemVyIH0pID0+IHtcbiAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICBjYXNlIE5hdmlnYXRlLlBSRVZJT1VTOlxuICAgICAgcmV0dXJuIGxvY2FsaXplci5hZGQoZGF0ZSwgLTMsICdkYXknKVxuXG4gICAgY2FzZSBOYXZpZ2F0ZS5ORVhUOlxuICAgICAgcmV0dXJuIGxvY2FsaXplci5hZGQoZGF0ZSwgMywgJ2RheScpXG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRhdGVcbiAgfVxufVxuXG5DdXN0b21XZWVrVmlldy50aXRsZSA9IChkYXRlLCB7IGxvY2FsaXplciB9KSA9PiB7XG4gIGNvbnN0IFtzdGFydCwgLi4ucmVzdF0gPSBDdXN0b21XZWVrVmlldy5yYW5nZShkYXRlLCB7IGxvY2FsaXplciB9KVxuICByZXR1cm4gbG9jYWxpemVyLmZvcm1hdCh7IHN0YXJ0LCBlbmQ6IHJlc3QucG9wKCkgfSwgJ2RheVJhbmdlSGVhZGVyRm9ybWF0Jylcbn1cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwPntgUGF5IHNwZWNpYWwgYXR0ZW50aW9uIHRvIHRoZSBhZGRpdGlvbmFsIHN0YXRpYyBtZXRob2RzIGF0dGFjaGVkIHRvIHlvdXIgY29tcG9uZW50LiBBcyBzdGF0aWMgbWV0aG9kcywgdGhleSBoYXZlIG5vIGNvbmNlcHQgb2YgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgdGhpc2B9PC9pbmxpbmVDb2RlPntgLCBhbmQgaGF2ZSBzcGVjaWZpYyBhcmd1bWVudHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBpbnRvIHRoZW0uYH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YGludGVyZmFjZSBWaWV3IHtcbiAgc3RhdGljIHRpdGxlKGRhdGU6IERhdGUsIHsgZm9ybWF0czogRGF0ZUZvcm1hdFtdLCBjdWx0dXJlOiBzdHJpbmc/LCAuLi5wcm9wcyB9KTogc3RyaW5nXG4gIHN0YXRpYyBuYXZpZ2F0ZShkYXRlOiBEYXRlLCBhY3Rpb246ICdQUkVWJyB8ICdORVhUJyB8ICdEQVRFJyk6IERhdGVcbiAgc3RhdGljIHJhbmdlPyhkYXRlOiBEYXRlLCB7IGxvY2FsaXplcjogRGF0ZUxvY2FsaXplciwgLi4ucHJvcHMgfSk6IGFycmF5XG59XG5gfTwvY29kZT48L3ByZT5cbiAgICA8cD57YFRvIGltcGxlbWVudCB5b3VyIGN1c3RvbSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B2aWV3YH08L2lubGluZUNvZGU+e2AsIGluY2x1ZGUgaXQgaW4geW91ciBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJ2aWV3c1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YHZpZXdzYH08L0xpbmtUbz57YCBwcm9wLmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2BpbXBvcnQgQ3VzdG9tV2Vla1ZpZXcgZnJvbSAnLi9DdXN0b21XZWVrVmlldydcbi8vLi4uXG5jb25zdCB7dmlld3MsIC4uLm90aGVyUHJvcHN9ID0gdXNlTWVtbygoKSA9PiAoe1xuICB2aWV3czoge1xuICAgIG1vbnRoOiB0cnVlLFxuICAgIHdlZWs6IEN1c3RvbVdlZWtWaWV3LFxuICAgIGRheTogdHJ1ZVxuICB9LFxuICAvLyAuLi4gb3RoZXIgcHJvcHNcbn0pLCBbXSlcbi8vLi4uXG48Q2FsZW5kYXIgdmlld3M9e3ZpZXdzfSB7Li4ub3RoZXJQcm9wc30gLz5cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlO1xuXG5leHBvcnQgY29uc3QgX19wYWdlID0gKCkgPT4geyB0aHJvdyBuZXcgRXJyb3IoXCJEb2NzLW9ubHkgc3RvcnlcIik7IH07XG5cbl9fcGFnZS5wYXJhbWV0ZXJzID0geyBkb2NzT25seTogdHJ1ZSB9O1xuXG5jb25zdCBjb21wb25lbnRNZXRhID0geyB0aXRsZTogJ0d1aWRlcy9DcmVhdGluZyBDdXN0b20gVmlld3MnLCBpbmNsdWRlU3RvcmllczogW1wiX19wYWdlXCJdLCAgfTtcblxuY29uc3QgbWR4U3RvcnlOYW1lVG9LZXkgPSB7fTtcblxuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzID0gY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzIHx8IHt9O1xuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgPSB7XG4gIC4uLihjb21wb25lbnRNZXRhLnBhcmFtZXRlcnMuZG9jcyB8fCB7fSksXG4gIHBhZ2U6ICgpID0+IDxBZGRDb250ZXh0IG1keFN0b3J5TmFtZVRvS2V5PXttZHhTdG9yeU5hbWVUb0tleX0gbWR4Q29tcG9uZW50QW5ub3RhdGlvbnM9e2NvbXBvbmVudE1ldGF9PjxNRFhDb250ZW50IC8+PC9BZGRDb250ZXh0Pixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudE1ldGE7IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgYXNzZXJ0SXNGbiwgQWRkQ29udGV4dCB9IGZyb20gXCJAc3Rvcnlib29rL2FkZG9uLWRvY3NcIjtcblxuaW1wb3J0IHsgTWV0YSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPE1ldGEgdGl0bGU9XCJHdWlkZXMvVW5kZXJzdGFuZGluZyBEYXRlc1wiIG1keFR5cGU9XCJNZXRhXCIgLz5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJ1bmRlcnN0YW5kaW5nLWRhdGVzXCJcbiAgICB9fT57YFVuZGVyc3RhbmRpbmcgRGF0ZXNgfTwvaDE+XG4gICAgPHA+e2BCaWcgQ2FsZW5kYXIgaXMgYWxsIGFib3V0IGRhdGVzIGFuZCB0aW1lcy4gUHJvYmFibHkgb25lIG9mIHRoZSBlYXNpZXN0IHRoaW5ncyB0aGF0IGJlZ2lubmVycyBtaXNzLCB3aGVuIGZpcnN0IGltcGxlbWVudGluZyBCaWcgQ2FsZW5kYXIsIGlzIHRoYXQgd2UgYH08c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2ByZXF1aXJlYH08L3N0cm9uZz57YCB0cnVlIEpTIGB9PGEgcGFyZW50TmFtZT1cInBcIiB7Li4ue1xuICAgICAgICBcImhyZWZcIjogXCJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlXCIsXG4gICAgICAgIFwidGFyZ2V0XCI6IFwiX2JsYW5rXCIsXG4gICAgICAgIFwicmVsXCI6IFwibm9mb2xsb3cgbm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICB9fT57YERhdGVgfTwvYT57YCBvYmplY3RzIGluIG91ciBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJGdWxsIFByb3AgTGlzdFwiIG1keFR5cGU9XCJMaW5rVG9cIj57YHByb3BzYH08L0xpbmtUbz57YCBhbmQgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZXZlbnRgfTwvaW5saW5lQ29kZT57YCBkZWZpbml0aW9ucy5gfTwvcD5cbiAgICA8cD57YEl0IGlzIGB9PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgdXAgdG8gdGhlIGRldmVsb3BlcmB9PC9zdHJvbmc+e2AgdG8gaGFuZGxlIHRyYW5zbGF0aW5nIGRhdGUvdGltZSB2YWx1ZXMgYH08c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2B0byBhbmQgZnJvbSBKUyBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJzdHJvbmdcIj57YERhdGVgfTwvaW5saW5lQ29kZT57YCBmb3JtYXRgfTwvc3Ryb25nPntgLmB9PC9wPlxuICAgIDxwPntgV2hhdCBkb2VzIHRoaXMgbWVhbj9gfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgLy8gd2lsbCBjYXVzZSBlcnJvcnNcbmNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiAnMjAxNS0wNC0xMlQxMzo0NTowMC0wNTowMCcsIFtdKVxuXG4vLyB3aWxsIHdvcmsgYXMgZXhwZWN0ZWRcbmNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgnMjAxNS0wNC0xMlQxMzo0NTowMC0wNTowMCcpLCBbXSlcblxuLy8gd2lsbCBuZXZlciBkaXNwbGF5IGluIHRoZSBDYWxlbmRhclxuY29uc3QgZXZlbnRzID0gW1xuICB7XG4gICAgdGl0bGU6ICdNeSBFdmVudCdcbiAgICBzdGFydDogJzIwMTUtMDQtMTJUMTM6NDU6MDAtMDU6MDAnLFxuICAgIGVuZDogJzIwMTUtMDQtMTJUMTQ6MDA6MDAtMDU6MDAnXG4gIH1cbl1cblxuLy8gd2hhdCB5b3UgbXVzdCBoYXZlIGlzIHRoaXNcbmNvbnN0IGV2ZW50cyA9IFtcbiAge1xuICAgIHRpdGxlOiAnTXkgRXZlbnQnXG4gICAgc3RhcnQ6IG5ldyBEYXRlKCcyMDE1LTA0LTEyVDEzOjQ1OjAwLTA1OjAwJyksXG4gICAgZW5kOiBuZXcgRGF0ZSgnMjAxNS0wNC0xMlQxNDowMDowMC0wNTowMCcpXG4gIH1cbl1cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwPntgVGhlIG90aGVyIHRoaW5nIHRvIHJlbWVtYmVyIGlzIHRoYXQgdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YERhdGVgfTwvaW5saW5lQ29kZT57YHMgeW91IHByb3ZpZGUgdG8gdGhlIENhbGVuZGFyIHdpbGwsIGJ5IGRlZmF1bHQsIGJlIGRpc3BsYXllZCBpbiB0aGUgYnJvd3NlcidzIG5hdGl2ZSBsb2NhbCB0aW1lem9uZSBhbmQgY3VsdHVyZSwgcmVnYXJkbGVzcyBvZiBhbnkgb2Zmc2V0cy4gVGhpcyBpcyBob3cgSlMgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgRGF0ZWB9PC9pbmxpbmVDb2RlPntgcyB3b3JrIGluIGJyb3dzZXJzIHRvZGF5LiBJZiB5b3UgbmVlZCB0byBkaXNwbGF5IGRhdGVzIGFuZCB0aW1lcyBpbiBhIHNwZWNpZmljIHRpbWV6b25lLCBvdGhlciB0aGFuIHRoZSBicm93c2VyIG5hdGl2ZSwgdGhlbiB5b3Ugc2hvdWxkIHJldmlldyBvdXIgYH08TGlua1RvIGtpbmQ9XCJndWlkZXMtdGltZXpvbmVzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgVGltZXpvbmVzIEd1aWRlYH08L0xpbmtUbz57YCBvbiB1c2luZyBhIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImxvY2FsaWl6ZXJcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2Bsb2NhbGl6ZXJgfTwvTGlua1RvPntgIHRoYXQgc3VwcG9ydHMgdGltZXpvbmUgY29udmVyc2lvbnMuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgU2lkZSBOb3RlOmB9PC9zdHJvbmc+e2AgU3RvcmluZyB5b3VyIGRhdGUvdGltZSB2YWx1ZXMgaW4gVVRDIChadWx1KSBkYXRlIGZvcm1hdCAoWVlZWS1NTS1ERFRISDptbTpzc1opIHdpbGwgbWFrZSB0aGVzZSB0eXBlcyBvZiB0cmFuc2Zvcm1hdGlvbnMgbXVjaCBlYXNpZXIgdG8gd29yayB3aXRoLmB9PC9wPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlO1xuXG5leHBvcnQgY29uc3QgX19wYWdlID0gKCkgPT4geyB0aHJvdyBuZXcgRXJyb3IoXCJEb2NzLW9ubHkgc3RvcnlcIik7IH07XG5cbl9fcGFnZS5wYXJhbWV0ZXJzID0geyBkb2NzT25seTogdHJ1ZSB9O1xuXG5jb25zdCBjb21wb25lbnRNZXRhID0geyB0aXRsZTogJ0d1aWRlcy9VbmRlcnN0YW5kaW5nIERhdGVzJywgaW5jbHVkZVN0b3JpZXM6IFtcIl9fcGFnZVwiXSwgIH07XG5cbmNvbnN0IG1keFN0b3J5TmFtZVRvS2V5ID0ge307XG5cbmNvbXBvbmVudE1ldGEucGFyYW1ldGVycyA9IGNvbXBvbmVudE1ldGEucGFyYW1ldGVycyB8fCB7fTtcbmNvbXBvbmVudE1ldGEucGFyYW1ldGVycy5kb2NzID0ge1xuICAuLi4oY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgfHwge30pLFxuICBwYWdlOiAoKSA9PiA8QWRkQ29udGV4dCBtZHhTdG9yeU5hbWVUb0tleT17bWR4U3RvcnlOYW1lVG9LZXl9IG1keENvbXBvbmVudEFubm90YXRpb25zPXtjb21wb25lbnRNZXRhfT48TURYQ29udGVudCAvPjwvQWRkQ29udGV4dD4sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnRNZXRhOyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IGFzc2VydElzRm4sIEFkZENvbnRleHQgfSBmcm9tIFwiQHN0b3J5Ym9vay9hZGRvbi1kb2NzXCI7XG5cbmltcG9ydCB7IE1ldGEgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5mdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxNZXRhIHRpdGxlPVwiR3VpZGVzL1RpbWV6b25lc1wiIG1keFR5cGU9XCJNZXRhXCIgLz5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJkZWFsaW5nLXdpdGgtdGltZS16b25lc1wiXG4gICAgfX0+e2BEZWFsaW5nIFdpdGggVGltZSBab25lc2B9PC9oMT5cbiAgICA8cD57YFRpbWUgWm9uZXMgYXJlLi4uIGB9PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgaGFyZGB9PC9zdHJvbmc+e2AsIGFuZCB3aGlsZSBjaGFuZ2luZyB0aGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgY3VsdHVyZWB9PC9pbmxpbmVDb2RlPntgIHdpbGwgaGVscCB3aXRoIGludGVybmF0aW9uYWxpemF0aW9uIGFuZCBsb2NhbGl6YXRpb24sIGl0IGRvZXMgbm90IGFkanVzdCB0aGUgZGF0ZXMgZm9yIGEgc3BlY2lmaWMgdGltZSB6b25lLiBKYXZhc2NyaXB0IERhdGUgb2JqZWN0cyBkb24ndCByZWFsbHkgc3VwcG9ydCB0aW1lIHpvbmUgc3dpdGNoaW5nIG5hdGl2ZWx5LCBhbmQgZGF0ZSBtYXRoIGdldHMgYH08c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2B2ZXJ5YH08L3N0cm9uZz57YCBjb21wbGljYXRlZC4gVGhhbmtmdWxseSBCaWcgQ2FsZW5kYXIgZG9lcyBzdXBwb3J0IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG1vbWVudGB9PC9pbmxpbmVDb2RlPntgIGFzIGEgbG9jYWxpemVyLCBzbyBpZiB5b3UgdXNlIGB9PGEgcGFyZW50TmFtZT1cInBcIiB7Li4ue1xuICAgICAgICBcImhyZWZcIjogXCJodHRwczovL21vbWVudGpzLmNvbS90aW1lem9uZS9cIixcbiAgICAgICAgXCJ0YXJnZXRcIjogXCJfYmxhbmtcIixcbiAgICAgICAgXCJyZWxcIjogXCJub2ZvbGxvdyBub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIH19PntgbW9tZW50LXRpbWV6b25lYH08L2E+e2AgeW91IGNhbiBnZXQgeW91ciBldmVudHMgdG8gZGlzcGxheSByZWxldmFudCB0byBhIHRpbWUgem9uZSBvdGhlciB0aGFuIHRoZSBicm93c2VyIG5hdGl2ZS5gfTwvcD5cbiAgICA8cD57YFRvIGNoYW5nZSB5b3VyIGV2ZW50cyB0byBkaXNwbGF5IGFzIGEgc3BlY2lmaWMgdGltZSB6b25lLCB5b3UgbXVzdCBgfTxhIHBhcmVudE5hbWU9XCJwXCIgey4uLntcbiAgICAgICAgXCJocmVmXCI6IFwiaHR0cHM6Ly9tb21lbnRqcy5jb20vdGltZXpvbmUvZG9jcy8jL3VzaW5nLXRpbWV6b25lcy9kZWZhdWx0LXRpbWV6b25lL1wiLFxuICAgICAgICBcInRhcmdldFwiOiBcIl9ibGFua1wiLFxuICAgICAgICBcInJlbFwiOiBcIm5vZm9sbG93IG5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgfX0+e2BjaGFuZ2UgbW9tZW50J3MgZGVmYXVsdCB0aW1lem9uZWB9PC9hPntgIGZvciBhbGwgZGF0ZXMsIGB9PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgdXNpbmcgYW4gSUFOQSB0aW1lIHpvbmVgfTwvc3Ryb25nPntgLmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanN4XCJcbiAgICAgIH19PntgaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0ICdtb21lbnQtdGltZXpvbmUnIC8vIG9yICdtb21lbnQtdGltZXpvbmUvYnVpbGRzL21vbWVudC10aW1lem9uZS13aXRoLWRhdGFbLWRhdGFyYW5nZV0uanMnLiBTZWUgdGhlaXIgZG9jc1xuXG4vLyBTZXQgdGhlIElBTkEgdGltZSB6b25lIHlvdSB3YW50IHRvIHVzZVxubW9tZW50LnR6LnNldERlZmF1bHQoJ0V1cm9wZS9QYXJpcycpXG5cbi8vIFNldHVwIHRoZSBsb2NhbGl6ZXIgYnkgcHJvdmlkaW5nIHRoZSBtb21lbnQgT2JqZWN0XG4vLyB0byB0aGUgY29ycmVjdCBsb2NhbGl6ZXIuXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KSAvLyBvciBnbG9iYWxpemVMb2NhbGl6ZXJcblxuY29uc3QgTXlDYWxlbmRhciA9IChwcm9wcykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cIm15Q3VzdG9tSGVpZ2h0XCI+XG4gICAgPENhbGVuZGFyXG4gICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgIGV2ZW50cz17bXlFdmVudHNMaXN0fVxuICAgICAgc3RhcnRBY2Nlc3Nvcj1cInN0YXJ0XCJcbiAgICAgIGVuZEFjY2Vzc29yPVwiZW5kXCJcbiAgICAvPlxuICA8L2Rpdj5cbilcbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwPntgVGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG1vbWVudExvY2FsaXplcmB9PC9pbmxpbmVDb2RlPntgIHdpbGwgbm93IGhhbmRsZSBhbGwgZGF0ZXMgYW5kIGRhdGUgbWF0aCBhcyBpZiB0aGUgZGF0ZSBpcyBpbiB0aGUgdGltZXpvbmUgeW91IHNwZWNpZmllZC4gSXQgaXMgaW1wb3J0YW50IHRvIG5vdGUgdGhhdCBgfTxhIHBhcmVudE5hbWU9XCJwXCIgey4uLntcbiAgICAgICAgXCJocmVmXCI6IFwiaHR0cHM6Ly9tb21lbnRqcy5jb20vdGltZXpvbmUvZG9jcy8jL3VzaW5nLXRpbWV6b25lcy9kZWZhdWx0LXRpbWV6b25lL1wiLFxuICAgICAgICBcInRhcmdldFwiOiBcIl9ibGFua1wiLFxuICAgICAgICBcInJlbFwiOiBcIm5vZm9sbG93IG5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgfX0+e2BjaGFuZ2luZyBtb21lbnQncyBkZWZhdWx0IHRpbWV6b25lYH08L2E+e2AgYWZmZWN0cyBhbGwgZGF0ZXMsIGNyZWF0ZWQgYnkgbW9tZW50LCBmcm9tIHRoYXQgcG9pbnQgZm9yd2FyZCwgc28geW91IG1heSB3YW50IHRvIHJlc2V0IHRoZSBkZWZhdWx0IHdoZW4geW91ciBjb21wb25lbnQgdW5tb3VudHMuIEFuZCwgaWYgc3dpdGNoaW5nIHRpbWV6b25lcyAnb24tdGhlLWZseScsIHlvdSB3YW50IHRvIHVwZGF0ZSB5b3VyIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGxvY2FsaXplcmB9PC9pbmxpbmVDb2RlPntgIGFuZCBhbnkgRGF0ZSBiYXNlZCBwcm9wcyAobWluLCBtYXgsIGdldE5vdywgZXRjKSBhdCB0aGUgc2FtZSB0aW1lLmB9PC9wPlxuICAgIDxwPjxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YE5vdGU6YH08L3N0cm9uZz57YCBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbHV4b25Mb2NhbGl6ZXJgfTwvaW5saW5lQ29kZT57YCBhbmQgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZGF5anNMb2NhbGl6ZXJgfTwvaW5saW5lQ29kZT57YCBvcGVyYXRlIGluIGEgc2ltaWxhciBmYXNoaW9uLiBWaWV3IHRoZWlyIHJlc3BlY3RpdmUgZGVtb3MgYW5kIHNvdXJjZSBmb3IgZXhhbXBsZXMgb2YgdGhlaXIgdXNhZ2UuYH08L3A+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7XG5cbmV4cG9ydCBjb25zdCBfX3BhZ2UgPSAoKSA9PiB7IHRocm93IG5ldyBFcnJvcihcIkRvY3Mtb25seSBzdG9yeVwiKTsgfTtcblxuX19wYWdlLnBhcmFtZXRlcnMgPSB7IGRvY3NPbmx5OiB0cnVlIH07XG5cbmNvbnN0IGNvbXBvbmVudE1ldGEgPSB7IHRpdGxlOiAnR3VpZGVzL1RpbWV6b25lcycsIGluY2x1ZGVTdG9yaWVzOiBbXCJfX3BhZ2VcIl0sICB9O1xuXG5jb25zdCBtZHhTdG9yeU5hbWVUb0tleSA9IHt9O1xuXG5jb21wb25lbnRNZXRhLnBhcmFtZXRlcnMgPSBjb21wb25lbnRNZXRhLnBhcmFtZXRlcnMgfHwge307XG5jb21wb25lbnRNZXRhLnBhcmFtZXRlcnMuZG9jcyA9IHtcbiAgLi4uKGNvbXBvbmVudE1ldGEucGFyYW1ldGVycy5kb2NzIHx8IHt9KSxcbiAgcGFnZTogKCkgPT4gPEFkZENvbnRleHQgbWR4U3RvcnlOYW1lVG9LZXk9e21keFN0b3J5TmFtZVRvS2V5fSBtZHhDb21wb25lbnRBbm5vdGF0aW9ucz17Y29tcG9uZW50TWV0YX0+PE1EWENvbnRlbnQgLz48L0FkZENvbnRleHQ+LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50TWV0YTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBhc3NlcnRJc0ZuLCBBZGRDb250ZXh0IH0gZnJvbSBcIkBzdG9yeWJvb2svYWRkb24tZG9jc1wiO1xuXG5pbXBvcnQgeyBNZXRhIH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8TWV0YSB0aXRsZT1cIkd1aWRlcy9Mb2NhbGl6ZXJzXCIgbWR4VHlwZT1cIk1ldGFcIiAvPlxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcIndoYXQtaXMtYS1sb2NhbGl6ZXJcIlxuICAgIH19PntgV2hhdCBpcyBhIExvY2FsaXplcj9gfTwvaDE+XG4gICAgPHA+e2BZb3UgaGF2ZSBwcm9iYWJseSBub3RpY2VkIHRoYXQgeW91ciBCaWcgQ2FsZW5kYXIgaW1wbGVtZW50YXRpb25zIHJlcXVpcmUgYSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJsb2NhbGl6ZXJcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2Bsb2NhbGl6ZXJgfTwvTGlua1RvPntgIHByb3AuIFRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2Bsb2NhbGl6ZXJgfTwvaW5saW5lQ29kZT57YCBpcyBuZWVkZWQgZm9yIGFwcGx5aW5nIGZvcm1hdHRpbmcgYW5kIGN1bHR1cmUgKGkxOG4pIHRvIHlvdXIgZGF0ZSBkaXNwbGF5cyB0aHJvdWdob3V0IHRoZSBDYWxlbmRhci5gfTwvcD5cbiAgICA8cD57YE5vdyB0aGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbG9jYWxpemVyYH08L2lubGluZUNvZGU+e2AgYWxzbyBoYW5kbGVzIGFsbCBpbnRlcm5hbCBkYXRlIG1hdGgsIHV0aWxpemluZyB0aGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbG9jYWxpemVyYH08L2lubGluZUNvZGU+e2AgeW91IHByb3ZpZGUuIFRoaXMgaXMgaG93IHRoZSBgfTxhIHBhcmVudE5hbWU9XCJwXCIgey4uLntcbiAgICAgICAgXCJocmVmXCI6IFwiaHR0cHM6Ly9tb21lbnRqcy5jb20vXCIsXG4gICAgICAgIFwidGFyZ2V0XCI6IFwiX2JsYW5rXCIsXG4gICAgICAgIFwicmVsXCI6IFwibm9mb2xsb3cgbm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICB9fT57YG1vbWVudGB9PC9hPntgIGFuZCBgfTxhIHBhcmVudE5hbWU9XCJwXCIgey4uLntcbiAgICAgICAgXCJocmVmXCI6IFwiaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvXCIsXG4gICAgICAgIFwidGFyZ2V0XCI6IFwiX2JsYW5rXCIsXG4gICAgICAgIFwicmVsXCI6IFwibm9mb2xsb3cgbm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICB9fT57YEx1eG9uYH08L2E+e2AgbG9jYWxpemVycyBoYW5kbGUgdGltZXpvbmVzLCBhbmQgaG93IGFsbCBvZiB0aGVtIGhhbmRsZSB0aGluZ3MgbGlrZSBEYXlsaWdodCBTYXZpbmdzIFRpbWUuIE1vc3QgY29tcG9uZW50cyByZWNlaXZlIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2Bsb2NhbGl6ZXJgfTwvaW5saW5lQ29kZT57YCBhcyBhIHByb3AsIG1lYW5pbmcgdGhhdCB5b3VyIG92ZXJyaWRlIGNvbXBvbmVudHMgY2FuIGFsc28gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlc2UgZmVhdHVyZXMuXG5FYWNoIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGxvY2FsaXplcmB9PC9pbmxpbmVDb2RlPntgLCB3aGVuIGNyZWF0ZWQsIGNyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgRGF0ZUxvY2FsaXplcmB9PC9pbmxpbmVDb2RlPntgIGNsYXNzLCBhbmQgZWFjaCBvbmUgaGFzIGEgbm9ybWFsaXplZCBncm91cCBvZiBmdW5jdGlvbnMgYW5kIHByb3BzIGF2YWlsYWJsZSBmb3IgbWFuaXB1bGF0aW5nIGRhdGVzLmB9PC9wPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGFkZChkYXRlOkRhdGUsIGFkZGVyOm51bWJlciwgdW5pdDpzdHJpbmcpID0+IERhdGVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgY2VpbChkYXRlOkRhdGUsIHVuaXQ6c3RyaW5nKSA9PiBEYXRlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGNvbnRpbnVlc0FmdGVyKHN0YXJ0OkRhdGUsIGVuZDpEYXRlLCBsYXN0OkRhdGUpID0+IGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgY29udGludWVzUHJpb3Ioc3RhcnQ6RGF0ZSwgZmlyc3Q6RGF0ZSkgPT4gYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BkaWZmKGE6RGF0ZSwgYjpEYXRlLCB1bml0OnN0cmluZykgPT4gbnVtYmVyYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGVuZE9mKGRhdGU6RGF0ZSwgdW5pdDpzdHJpbmcpID0+IERhdGVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZXEoYTpEYXRlLCBiOkRhdGUsIHVuaXQ6c3RyaW5nKSA9PiBib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZpcnN0VmlzaWJsZURheShkYXRlOkRhdGUpID0+IERhdGVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZm9ybWF0KHZhbHVlOkRhdGUsIGZvcm1hdDpzdHJpbmcpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPntgLGB9PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZvcm1hdHM6b2JqZWN0YH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGdldERzdE9mZnNldChzdGFydDpEYXRlLCBlbmQ6RGF0ZSkgPT4gbnVtYmVyYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGdldE1pbnV0ZXNGcm9tTWlkbmlnaHQoc3RhcnQ6RGF0ZSkgPT4gbnVtYmVyYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGdldFNsb3REYXRlKGR0OkRhdGUsIG1pbnV0ZXNGcm9tTWlkbmlnaHQ6bnVtYmVyLCBvZmZzZXQ6bnVtYmVyKSA9PiBEYXRlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGdldFRpbWV6b25lT2Zmc2V0KGRhdGU6RGF0ZSkgPT4gbnVtYmVyYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGdldFRvdGFsTWluKHN0YXJ0OkRhdGUsIGVuZDpEYXRlKSA9PiBudW1iZXJgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZ3QoYTpEYXRlLCBiOkRhdGUsIHVuaXQ6c3RyaW5nKSA9PiBib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGd0ZShhOkRhdGUsIGI6RGF0ZSwgdW5pdDpzdHJpbmcpID0+IGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgaW5FdmVudFJhbmdlKHtldmVudDoge3N0YXJ0OkRhdGUsIGVuZDpEYXRlfSwgcmFuZ2U6IHtzdGFydDpEYXRlLCBlbmQ6RGF0ZX19KSA9PiBib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGluUmFuZ2UoZGF5OkRhdGUsIHN0YXJ0OkRhdGUsIGVuZDpEYXRlLCB1bml0OnN0cmluZykgPT4gYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2Bpc1NhbWVEYXRlKGRhdGUxOkRhdGUsIGRhdGUyOkRhdGUpID0+IGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbGFzdFZpc2libGVEYXkoZGF0ZTpEYXRlKSA9PiBEYXRlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGx0KGE6RGF0ZSwgYjpEYXRlLCB1bml0OnN0cmluZykgPT4gYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BsdGUoYTpEYXRlLCBiOkRhdGUsIHVuaXQ6c3RyaW5nKSA9PiBib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG1heChkYXRlQTpEYXRlLCBkYXRlQjpEYXRlKSA9PiBEYXRlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG1lcmdlKGRhdGU6RGF0ZSwgdGltZTpEYXRlKSA9PiBEYXRlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG1pbihkYXRlQTpEYXRlLCBkYXRlQjpEYXRlKSA9PiBEYXRlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG1pbnV0ZXMoZGF0ZTpEYXRlKSA9PiBudW1iZXJgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbmVxKGE6RGF0ZSwgYjpEYXRlLCB1bml0OnN0cmluZykgPT4gYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2ByYW5nZShzdGFydDpEYXRlLCBlbmQ6RGF0ZSwgdW5pdDpzdHJpbmcpID0+IEFycmF5W0RhdGVdYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHNvcnRFdmVudHMoe2V2dEE6IHtzdGFydDpEYXRlLCBlbmQ6RGF0ZSwgYWxsRGF5OmJvb2xlYW59LCBldnRCOiB7c3RhcnQ6RGF0ZSwgZW5kOkRhdGUsIGFsbERheTpib29sZWFufX0pID0+IG51bWJlcmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdGFydEFuZEVuZEFyZURhdGVPbmx5KHN0YXJ0OkRhdGUsIGVuZDpEYXRlKSA9PiBib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0YXJ0T2YoZGF0ZTpEYXRlLCB1bml0OnN0cmluZykgPT4gRGF0ZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdGFydE9mV2VlayhjdWx0dXJlKSA9PiBudW1iZXJgfTwvaW5saW5lQ29kZT57YCAoYWxpYXMgb2YgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZpcnN0T2ZXZWVrKClgfTwvaW5saW5lQ29kZT57YClgfTwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2B2aXNpYmxlRGF5cyhkYXRlOkRhdGUpID0+IEFycmF5W0RhdGVdYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgTWFueSBvZiB0aGVzZSBtZXRob2RzIGFyZSB1c2VkIGJ5IEJpZyBDYWxlbmRhciBpbiB0aGUgYmFja2dyb3VuZCBmb3IgZGV0ZXJtaW5pbmcgbGF5b3V0LiBZb3UgY2FuIGNyZWF0ZSB5b3VyIG93biBjdXN0b20gYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbG9jYWxpemVyYH08L2lubGluZUNvZGU+e2AsIHRvIHV0aWxpemUgc29tZSBvdGhlciBsaWJyYXJ5LCBhcyBsb25nIGFzIHRoZXkgaW1wbGVtZW50IHRoZXNlIG1ldGhvZHMuIFRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BEYXRlTG9jYWxpemVyYH08L2lubGluZUNvZGU+e2AgY2xhc3MgZGVmYXVsdHMgdGhlc2UgbWV0aG9kcyB0byBtZXRob2RzIGZyb20gdGhlIGB9PGEgcGFyZW50TmFtZT1cInBcIiB7Li4ue1xuICAgICAgICBcImhyZWZcIjogXCJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9kYXRlLWFyaXRobWV0aWNcIixcbiAgICAgICAgXCJ0YXJnZXRcIjogXCJfYmxhbmtcIixcbiAgICAgICAgXCJyZWxcIjogXCJub2ZvbGxvdyBub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIH19PntgZGF0ZS1hcml0aG1ldGljYH08L2E+e2AgcGFja2FnZS5gfTwvcD5cbiAgICA8cD57YEZvciBleGFtcGxlcyBvZiBidWlsZGluZyB5b3VyIG93biBjdXN0b20gYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbG9jYWxpemVyYH08L2lubGluZUNvZGU+e2AgdGFrZSBhIGxvb2sgYXQgdGhlIGB9PGEgcGFyZW50TmFtZT1cInBcIiB7Li4ue1xuICAgICAgICBcImhyZWZcIjogXCJodHRwczovL2dpdGh1Yi5jb20vanF1ZW5zZS9yZWFjdC1iaWctY2FsZW5kYXIvYmxvYi9tYXN0ZXIvc3JjL2xvY2FsaXplcnNcIixcbiAgICAgICAgXCJ0YXJnZXRcIjogXCJfYmxhbmtcIixcbiAgICAgICAgXCJyZWxcIjogXCJub2ZvbGxvdyBub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIH19PntgY3VycmVudGx5IGltcGxlbWVudGVkIGxvY2FsaXplcnNgfTwvYT57YC4gSWYgeW91IGRvIGJ1aWxkIHlvdXIgb3duIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGxvY2FsaXplcmB9PC9pbmxpbmVDb2RlPntgLCBwbGVhc2UgY29uc2lkZXIgcHVibGlzaGluZyBpdCB0byBgfTxhIHBhcmVudE5hbWU9XCJwXCIgey4uLntcbiAgICAgICAgXCJocmVmXCI6IFwiaHR0cHM6Ly9ucG1qcy5vcmdcIixcbiAgICAgICAgXCJ0YXJnZXRcIjogXCJfYmxhbmtcIixcbiAgICAgICAgXCJyZWxcIjogXCJub2ZvbGxvdyBub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIH19PntgbnBtYH08L2E+e2AuIFdlIHN1Z2dlc3QgYSBjb21tb24gbmFtaW5nIGNvbnZlbnRpb24gbGlrZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2ByYmMtYWRkb24tbXlsb2NhbGl6ZXJuYW1lYH08L2lubGluZUNvZGU+e2AuYH08L3A+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7XG5cbmV4cG9ydCBjb25zdCBfX3BhZ2UgPSAoKSA9PiB7IHRocm93IG5ldyBFcnJvcihcIkRvY3Mtb25seSBzdG9yeVwiKTsgfTtcblxuX19wYWdlLnBhcmFtZXRlcnMgPSB7IGRvY3NPbmx5OiB0cnVlIH07XG5cbmNvbnN0IGNvbXBvbmVudE1ldGEgPSB7IHRpdGxlOiAnR3VpZGVzL0xvY2FsaXplcnMnLCBpbmNsdWRlU3RvcmllczogW1wiX19wYWdlXCJdLCAgfTtcblxuY29uc3QgbWR4U3RvcnlOYW1lVG9LZXkgPSB7fTtcblxuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzID0gY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzIHx8IHt9O1xuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgPSB7XG4gIC4uLihjb21wb25lbnRNZXRhLnBhcmFtZXRlcnMuZG9jcyB8fCB7fSksXG4gIHBhZ2U6ICgpID0+IDxBZGRDb250ZXh0IG1keFN0b3J5TmFtZVRvS2V5PXttZHhTdG9yeU5hbWVUb0tleX0gbWR4Q29tcG9uZW50QW5ub3RhdGlvbnM9e2NvbXBvbmVudE1ldGF9PjxNRFhDb250ZW50IC8+PC9BZGRDb250ZXh0Pixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudE1ldGE7IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgYXNzZXJ0SXNGbiwgQWRkQ29udGV4dCB9IGZyb20gXCJAc3Rvcnlib29rL2FkZG9uLWRvY3NcIjtcblxuaW1wb3J0IHsgTWV0YSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPE1ldGEgdGl0bGU9XCJwcm9wcy9GdWxsIFByb3AgTGlzdFwiIG1keFR5cGU9XCJNZXRhXCIgLz5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJhbGwtcHJvcHNcIlxuICAgIH19PntgQWxsIFByb3BzYH08L2gxPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImxvY2FsaXplclwiXG4gICAgfX0+e2Bsb2NhbGl6ZXJgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGluc3RhbmNlT2YoRGF0ZUxvY2FsaXplcilgfTwvaW5saW5lQ29kZT57YCBgfTxzdHJvbmcgcGFyZW50TmFtZT1cImxpXCI+e2ByZXF1aXJlZGB9PC9zdHJvbmc+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImxvY2FsaXplclwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFRoZSBsb2NhbGl6ZXIgdXNlZCBmb3IgZm9ybWF0dGluZyBkYXRlcyBhbmQgdGltZXMgYWNjb3JkaW5nIHRvIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2Bmb3JtYXRgfTwvaW5saW5lQ29kZT57YCBhbmQgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgY3VsdHVyZWB9PC9pbmxpbmVDb2RlPjwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgLy8gV2hlbiB1c2luZyBcXGBHbG9iYWxpemVcXGBcbmltcG9ydCB7IGdsb2JhbGl6ZUxvY2FsaXplciB9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbmltcG9ydCBnbG9iYWxpemUgZnJvbSAnZ2xvYmFsaXplJ1xuXG5jb25zdCBsb2NhbGl6ZXIgPSBnbG9iYWxpemVMb2NhbGl6ZXIoZ2xvYmFsaXplKVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YC8vIFdoZW4gdXNpbmcgXFxgbW9tZW50XFxgXG5pbXBvcnQgeyBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbi8vIGFuZCwgZm9yIG9wdGlvbmFsIHRpbWUgem9uZSBzdXBwb3J0XG5pbXBvcnQgJ21vbWVudC10aW1lem9uZSdcblxubW9tZW50LnR6LnNldERlZmF1bHQoJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnKVxuLy8gZW5kIG9wdGlvbmFsIHRpbWUgem9uZSBzdXBwb3J0XG5cbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5gfTwvY29kZT48L3ByZT5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgLy8gV2hlbiB1c2luZyBcXGBMdXhvblxcYFxuaW1wb3J0IHsgbHV4b25Mb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgeyBEYXRlVGltZSwgU2V0dGluZ3MgfSBmcm9tICdsdXhvbidcbi8vIG9ubHkgdXNlIFxcYFNldHRpbmdzXFxgIGlmIHlvdSByZXF1aXJlIG9wdGlvbmFsIHRpbWUgem9uZSBzdXBwb3J0XG5TZXR0aW5ncy5kZWZhdWx0Wm9uZSA9ICdBbWVyaWNhL0xvc19BbmdlbGVzJ1xuLy8gZW5kIG9wdGlvbmFsIHRpbWUgem9uZSBzdXBwb3J0XG5cbi8vIEx1eG9uIHVzZXMgdGhlIEludGwgQVBJLCB3aGljaCBjdXJyZW50bHkgZG9lcyBub3QgY29udGFpbiBcXGB3ZWVrSW5mb1xcYFxuLy8gdG8gZGV0ZXJtaW5lIHdoaWNoIHdlZWtkYXkgaXMgdGhlIHN0YXJ0IG9mIHRoZSB3ZWVrIGJ5IFxcYGN1bHR1cmVcXGAuXG4vLyBUaGUgXFxgbHV4b25Mb2NhbGl6ZXJcXGAgZGVmYXVsdHMgdGhpcyB0byBTdW5kYXksIHdoaWNoIGRpZmZlcnMgZnJvbVxuLy8gdGhlIEx1eG9uIGRlZmF1bHQgb2YgTW9uZGF5LiBUaGUgbG9jYWxpemVyIHJlcXVpcmVzIHRoaXMgb3B0aW9uXG4vLyB0byBjaGFuZ2UgdGhlIGRpc3BsYXksIGFuZCB0aGUgZGF0ZSBtYXRoIGZvciBkZXRlcm1pbmluZyB0aGVcbi8vIHN0YXJ0IG9mIGEgd2Vlay4gTHV4b24gdXNlcyBub24temVybyBiYXNlZCB2YWx1ZXMgZm9yIFxcYHdlZWtkYXlcXGAuXG5jb25zdCBsb2NhbGl6ZXIgPSBsdXhvbkxvY2FsaXplcihEYXRlVGltZSwgeyBmaXJzdERheU9mV2VlazogNyB9KVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZWxlbWVudHByb3BzXCJcbiAgICB9fT57YGVsZW1lbnRQcm9wc2B9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgb2JqZWN0YH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImVsZW1lbnQtcHJvcHNcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BQcm9wcyBwYXNzZWQgdG8gbWFpbiBjYWxlbmRhciBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2A8ZGl2PmB9PC9pbmxpbmVDb2RlPntgLmB9PC9wPlxuICAgIDxwPjxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YE5vdGU6YH08L3N0cm9uZz57YCBXaWxsIG5vdCBwYXNzIGRvd24gYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgY2xhc3NOYW1lYH08L2lubGluZUNvZGU+e2AuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZ2V0bm93XCJcbiAgICB9fT57YGdldE5vd2B9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKCkgPT4gRGF0ZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgKCkgPT4gbmV3IERhdGUoKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJnZXQtbm93XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRGV0ZXJtaW5lcyB0aGUgY3VycmVudCBkYXRlL3RpbWUgd2hpY2ggaXMgaGlnaGxpZ2h0ZWQgaW4gdGhlIHZpZXdzLmB9PC9wPlxuICAgIDxwPntgVGhlIHZhbHVlIGFmZmVjdHMgd2hpY2ggZGF5IGlzIHNoYWRlZCBhbmQgd2hpY2ggdGltZSBpcyBzaG93biBhcyB0aGUgY3VycmVudCB0aW1lLiBJdCBhbHNvIGFmZmVjdHMgdGhlIGRhdGUgdXNlZCBieSB0aGUgVG9kYXkgYnV0dG9uIGluIHRoZSB0b29sYmFyLmB9PC9wPlxuICAgIDxwPntgUHJvdmlkaW5nIGEgdmFsdWUgaGVyZSBjYW4gYmUgdXNlZnVsIHdoZW4geW91IGFyZSBpbXBsZW1lbnRpbmcgdGltZSB6b25lcyB1c2luZyB0aGUgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic3RhcnQtYWNjZXNzb3JcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BzdGFydEFjY2Vzc29yYH08L0xpbmtUbz57YCBhbmQgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZW5kLWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZW5kQWNjZXNzb3JgfTwvTGlua1RvPntgIHByb3BlcnRpZXMuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZGVmYXVsdGRhdGVcIlxuICAgIH19PntgZGVmYXVsdERhdGVgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGluc3RhbmNlT2YoRGF0ZSlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG5ldyBEYXRlKClgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZGVmYXVsdC1kYXRlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgU2V0cyB0aGUgaW5pdGlhbCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BkYXRlYH08L2lubGluZUNvZGU+e2AgdmFsdWUgaW4geW91ciBjYWxlbmRhciB3aGVuIHlvdSBkb24ndCB3YW50IGl0IHRvIGJlICd0b2RheScsIHdoZW4gbm90IHVzaW5nIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImdldC1ub3dcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BnZXROb3dgfTwvTGlua1RvPntgLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRhdGVcIlxuICAgIH19PntgZGF0ZWB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgaW5zdGFuY2VPZihEYXRlKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbmV3IERhdGUoKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2Bjb250cm9sbGVkIGJ5OiBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1uYXZpZ2F0ZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uTmF2aWdhdGVgfTwvTGlua1RvPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJkYXRlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIGN1cnJlbnQgZGF0ZSB2YWx1ZSBvZiB0aGUgY2FsZW5kYXIuIERldGVybWluZXMgdGhlIHZpc2libGUgdmlldyByYW5nZS5cbklmIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGRhdGVgfTwvaW5saW5lQ29kZT57YCBpcyBvbWl0dGVkIHRoZW4gdGhlIHJlc3VsdCBvZiBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJnZXQtbm93XCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZ2V0Tm93YH08L0xpbmtUbz57YCBpcyB1c2VkOyBvdGhlcndpc2UgdGhlXG5jdXJyZW50IGRhdGUgaXMgdXNlZC5gfTwvcD5cbiAgICA8cD57YFRoaXMgaXMgYSBjb250cm9sbGFibGUgcHJvcCwgd2hlbiB1c2luZyBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1uYXZpZ2F0ZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uTmF2aWdhdGVgfTwvTGlua1RvPjwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbm5hdmlnYXRlXCJcbiAgICB9fT57YG9uTmF2aWdhdGVgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGNvbnRyb2xzOiBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJkYXRlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZGF0ZWB9PC9MaW5rVG8+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGV4YW1wbGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2AobmV3RGF0ZSkgPT4gc2V0RGF0ZShuZXdEYXRlKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1uYXZpZ2F0ZVwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGRhdGVgfTwvaW5saW5lQ29kZT57YCB2YWx1ZSBjaGFuZ2VzLiBXaGVuIGluY2x1ZGVkIGl0IGlzIHVzZWQgdG8gJ2NvbnRyb2wnIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJkYXRlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZGF0ZWB9PC9MaW5rVG8+e2AgcHJvcCB2YWx1ZS5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJkZWZhdWx0dmlld1wiXG4gICAgfX0+e2BkZWZhdWx0Vmlld2B9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BWaWV3cy5NT05USCAobW9udGh8d2Vla3x3b3JrX3dlZWt8ZGF5fGFnZW5kYSlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZGVmYXVsdC12aWV3XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIGluaXRpYWwgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgdmlld2B9PC9pbmxpbmVDb2RlPntgIHNldCBmb3IgeW91ciBjYWxlbmRhciB3aGVuIHlvdSBkb24ndCB3YW50IGl0IHRvIGJlIHRoZSBkZWZhdWx0ICgnbW9udGgnKS5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJ2aWV3XCJcbiAgICB9fT57YHZpZXdgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgVmlld3MuTU9OVEggKG1vbnRofHdlZWt8d29ya193ZWVrfGRheXxhZ2VuZGEpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGNvbnRyb2xsZWQgYnk6IGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLXZpZXdcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvblZpZXdgfTwvTGlua1RvPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJ2aWV3XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIGN1cnJlbnQgdmlldyB2YWx1ZSBvZiB0aGUgY2FsZW5kYXIuIERldGVybWluZXMgdGhlIHZpc2libGUgJ3ZpZXcnLlxuSWYgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgdmlld2B9PC9pbmxpbmVDb2RlPntgIGlzIG9taXR0ZWQgdGhlbiBpdCBpcyBkZWZhdWx0ZWQgdG8gJ21vbnRoJy5gfTwvcD5cbiAgICA8cD57YFRoaXMgaXMgYSBjb250cm9sbGFibGUgcHJvcCwgd2hlbiB1c2luZyBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi12aWV3XCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgb25WaWV3YH08L0xpbmtUbz48L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwib252aWV3XCJcbiAgICB9fT57YG9uVmlld2B9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiAnZnVuY3Rpb24nYH08L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgY29udHJvbHM6IGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInZpZXdcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2B2aWV3YH08L0xpbmtUbz48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZXhhbXBsZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YChuZXdWaWV3KSA9PiBzZXRWaWV3KG5ld1ZpZXcpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLXZpZXdcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BDYWxsYmFjayBmaXJlZCB3aGVuIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B2aWV3YH08L2lubGluZUNvZGU+e2AgdmFsdWUgY2hhbmdlcy4gV2hlbiBpbmNsdWRlZCBpdCBpcyB1c2VkIHRvICdjb250cm9sJyB0aGUgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwidmlld1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YHZpZXdgfTwvTGlua1RvPntgIHByb3AgdmFsdWUuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZXZlbnRzXCJcbiAgICB9fT57YGV2ZW50c2B9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgYXJyYXlPZihFdmVudClgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YFtdYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImV2ZW50c1wiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEFuIGFycmF5IG9mIGV2ZW50IG9iamVjdHMgdG8gZGlzcGxheSBvbiB0aGUgY2FsZW5kYXIuIEV2ZW50IG9iamVjdHMgY2FuIGJlIGFueSBzaGFwZSwgYXMgbG9uZyBhcyB0aGUgQ2FsZW5kYXIga25vd3MgaG93IHRvIHJldHJpZXZlIHRoZSBmb2xsb3dpbmcgZGV0YWlscyBvZiB0aGUgZXZlbnQ6YH08L3A+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgc3RhcnQgdGltZWB9PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGVuZCB0aW1lYH08L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdGl0bGVgfTwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B3aGV0aGVyIGl0cyBhbiBcImFsbCBkYXlcIiBldmVudCBvciBub3RgfTwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BhbnkgcmVzb3VyY2UgdGhlIGV2ZW50IG1heSBiZSByZWxhdGVkIHRvYH08L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BFYWNoIG9mIHRoZXNlIHByb3BlcnRpZXMgY2FuIGJlIGN1c3RvbWl6ZWQgb3IgZ2VuZXJhdGVkIGR5bmFtaWNhbGx5IGJ5IHNldHRpbmcgdGhlIHZhcmlvdXMgXCJhY2Nlc3NvclwiIHByb3BzLiBXaXRob3V0IGFueSBjb25maWd1cmF0aW9uIHRoZSBkZWZhdWx0IGV2ZW50IHNob3VsZCBsb29rIGxpa2U6YH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YEV2ZW50IHtcbiAgdGl0bGU6IHN0cmluZyxcbiAgc3RhcnQ6IERhdGUsXG4gIGVuZDogRGF0ZSxcbiAgYWxsRGF5PzogYm9vbGVhblxuICByZXNvdXJjZT86IGFueSxcbn1cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImJhY2tncm91bmRldmVudHNcIlxuICAgIH19PntgYmFja2dyb3VuZEV2ZW50c2B9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgYXJyYXlPZihCYWNrZ3JvdW5kRXZlbnQpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BbXWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJiYWNrZ3JvdW5kLWV2ZW50c1wiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEFuIGFycmF5IG9mIGJhY2tncm91bmQgZXZlbnQgb2JqZWN0cyB0byBkaXNwbGF5IG9uIHRoZSBjYWxlbmRhci4gQmFja2dyb3VuZCBFdmVudHMgYmVoYXZlIHNpbWlsYXJseSB0byBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJldmVudHNcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BldmVudHNgfTwvTGlua1RvPntgIGJ1dCBhcmUgbm90IGZhY3RvcmVkIGludG8gRXZlbnQgb3ZlcmxhcCBsb2dpYywgYWxsb3dpbmcgdGhlbSB0byBzaXQgYmVoaW5kIGFueSBFdmVudHMgdGhhdCBtYXkgb2NjdXIgZHVyaW5nIHRoZSBzYW1lIHBlcmlvZC4gQmFja2dyb3VuZCBFdmVudHMgb2JqZWN0cyBjYW4gYmUgYW55IHNoYXBlLCBhcyBsb25nIGFzIHRoZSBDYWxlbmRhciBrbm93cyBob3cgdG8gcmV0cmlldmUgdGhlIGZvbGxvd2luZyBkZXRhaWxzIG9mIHRoZSBldmVudDpgfTwvcD5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BzdGFydCB0aW1lYH08L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZW5kIHRpbWVgfTwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEVhY2ggb2YgdGhlc2UgcHJvcGVydGllcyBjYW4gYmUgY3VzdG9taXplZCBvciBnZW5lcmF0ZWQgZHluYW1pY2FsbHkgYnkgc2V0dGluZyB0aGUgdmFyaW91cyBcImFjY2Vzc29yXCIgcHJvcHMuIFdpdGhvdXQgYW55IGNvbmZpZ3VyYXRpb24gdGhlIGRlZmF1bHQgZXZlbnQgc2hvdWxkIGxvb2sgbGlrZTpgfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgQmFja2dyb3VuZEV2ZW50IHtcbiAgc3RhcnQ6IERhdGUsXG4gIGVuZDogRGF0ZSxcbn1cbmB9PC9jb2RlPjwvcHJlPlxuICAgIHsvKiAjIyMgYmFja2dyb3VuZEV2ZW50UHJvcEdldHRlclxuICAgICAtIHR5cGU6IGBmdW5jdGlvbiAoZXZlbnQ6IE9iamVjdCwgc3RhcnQ6IERhdGUsIGVuZDogRGF0ZSwgaXNTZWxlY3RlZDogYm9vbGVhbikgPT4ge2NsYXNzTmFtZT86IHN0cmluZywgc3R5bGU/OiBPYmplY3R9YFxuICAgICAtIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJiYWNrZ3JvdW5kLWV2ZW50LXByb3AtZ2V0dGVyXCI+XG4gICAgICAgIEV4YW1wbGVcbiAgICAgIDwvTGlua1RvPlxuICAgICBPcHRpb25hbGx5IHByb3ZpZGUgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gb2JqZWN0IG9mIGNsYXNzTmFtZSBvciBzdHlsZSBwcm9wcyB0byBiZSBhcHBsaWVkIHRvIHRoZSB0aGUgZXZlbnQgbm9kZS4gKi99XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwidGl0bGVhY2Nlc3NvclwiXG4gICAgfX0+e2B0aXRsZUFjY2Vzc29yYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmcgfCBmdW5jdGlvbiAoZXZlbnQ6IE9iamVjdCkgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6ICd0aXRsZSdgfTwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJ0aXRsZS1hY2Nlc3NvclwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEFjY2Vzc29yIGZvciB0aGUgZXZlbnQgdGl0bGUsIHVzZWQgdG8gZGlzcGxheSBldmVudCBpbmZvcm1hdGlvbi4gU2hvdWxkIHJlc29sdmUgdG8gYSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2ByZW5kZXJhYmxlYH08L2lubGluZUNvZGU+e2AgdmFsdWUuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwidG9vbHRpcGFjY2Vzc29yXCJcbiAgICB9fT57YHRvb2x0aXBBY2Nlc3NvcmB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nIHwgZnVuY3Rpb24gKGV2ZW50OiBPYmplY3QpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiAndGl0bGUnYH08L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwidG9vbHRpcC1hY2Nlc3NvclwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEFjY2Vzc29yIGZvciB0aGUgZXZlbnQgdG9vbHRpcCwgdXNlZCB0byBkaXNwbGF5IGV2ZW50IGluZm9ybWF0aW9uLiBTaG91bGQgcmVzb2x2ZSB0byBhIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHJlbmRlcmFibGVgfTwvaW5saW5lQ29kZT57YCB2YWx1ZS4gUmVtb3ZlcyB0aGUgdG9vbHRpcCBpZiBudWxsLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcInN0YXJ0YWNjZXNzb3JcIlxuICAgIH19Pntgc3RhcnRBY2Nlc3NvcmB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nIHwgZnVuY3Rpb24gKGV2ZW50OiBPYmplY3QpID0+IERhdGVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogJ3N0YXJ0J2B9PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInN0YXJ0LWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIHN0YXJ0IGRhdGUvdGltZSBvZiB0aGUgZXZlbnQuIE11c3QgcmVzb2x2ZSB0byBhIEphdmFTY3JpcHQgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgRGF0ZWB9PC9pbmxpbmVDb2RlPntgIG9iamVjdC5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJlbmRhY2Nlc3NvclwiXG4gICAgfX0+e2BlbmRBY2Nlc3NvcmB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nIHwgZnVuY3Rpb24gKGV2ZW50OiBPYmplY3QpID0+IERhdGVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogJ2VuZCdgfTwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJlbmQtYWNjZXNzb3JcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUaGUgZW5kIGRhdGUvdGltZSBvZiB0aGUgZXZlbnQuIE11c3QgcmVzb2x2ZSB0byBhIEphdmFTY3JpcHQgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgRGF0ZWB9PC9pbmxpbmVDb2RlPntgIG9iamVjdC5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJhbGxkYXlhY2Nlc3NvclwiXG4gICAgfX0+e2BhbGxEYXlBY2Nlc3NvcmB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nIHwgZnVuY3Rpb24gKGV2ZW50OiBPYmplY3QpID0+IGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogJ2FsbERheSdgfTwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJhbGwtZGF5LWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBldmVudCBzaG91bGQgYmUgY29uc2lkZXJlZCBhbiBcImFsbCBkYXlcIiBldmVudCBhbmQgaWdub3JlIHRpbWUuIE11c3QgcmVzb2x2ZSB0byBhIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGJvb2xlYW5gfTwvaW5saW5lQ29kZT57YCB2YWx1ZS5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJhbGxkYXltYXhyb3dzXCJcbiAgICB9fT57YGFsbERheU1heFJvd3NgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG51bWJlcmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgSW5maW5pdHlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiYWxsLWRheS1tYXgtcm93c1wiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERldGVybWluZXMgYSBtYXhpbXVtIGFtb3VudCBvZiByb3dzIG9mIGV2ZW50cyB0byBkaXNwbGF5IGluIHRoZSBhbGwgZGF5IHNlY3Rpb24gZm9yIFdlZWsgYW5kIERheSB2aWV3cywgd2lsbCBkaXNwbGF5IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHNob3dNb3JlYH08L2lubGluZUNvZGU+e2AgYnV0dG9uIGlmIGV2ZW50cyBleGNlZGUgdGhpcyBudW1iZXIuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwicmVzb3VyY2VzXCJcbiAgICB9fT57YHJlc291cmNlc2B9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgYXJyYXlPZihSZXNvdXJjZSlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwicmVzb3VyY2VzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQW4gYXJyYXkgb2YgcmVzb3VyY2Ugb2JqZWN0cyB0aGF0IG1hcCBldmVudHMgdG8gYSBzcGVjaWZpYyByZXNvdXJjZS4gUmVzb3VyY2Ugb2JqZWN0cywgbGlrZSBldmVudHMsIGNhbiBiZSBhbnkgc2hhcGUgb3IgaGF2ZSBhbnkgcHJvcGVydGllcywgYnV0IHNob3VsZCBiZSB1bmlxdWx5IGlkZW50aWZpYWJsZSB2aWEgdGhlIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInJlc291cmNlLWlkLWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgcmVzb3VyY2VJZEFjY2Vzc29yYH08L0xpbmtUbz57YCwgYXMgd2VsbCBhcyBhIFwidGl0bGVcIiBvciBuYW1lIGFzIHByb3ZpZGVkIGJ5IHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJyZXNvdXJjZS10aXRsZS1hY2Nlc3NvclwiIG1keFR5cGU9XCJMaW5rVG9cIj57YHJlc291cmNlVGl0bGVBY2Nlc3NvcmB9PC9MaW5rVG8+e2AgcHJvcC5gfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgUmVzb3VyY2Uge1xuICBpZDogc3RyaW5nIHwgbnVtYmVyLCAvLyBtdXN0IGJlIHVuaXF1ZVxuICB0aXRsZTogc3RyaW5nXG59XG5gfTwvY29kZT48L3ByZT5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJyZXNvdXJjZWlkYWNjZXNzb3JcIlxuICAgIH19PntgcmVzb3VyY2VJZEFjY2Vzc29yYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmcgfCBmdW5jdGlvbiAocmVzb3VyY2U6IE9iamVjdCkgPT4gc3RyaW5nIHwgbnVtYmVyIC8vIG11c3QgYmUgdW5pcXVlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInJlc291cmNlLWlkLWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgUHJvdmlkZXMgYSB1bmlxdWUgaWRlbnRpZmllciwgb3IgYW4gYXJyYXkgb2YgdW5pcXVlIGlkZW50aWZpZXJzLCBmb3IgZWFjaCByZXNvdXJjZSBpbiB0aGUgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwicmVzb3VyY2VzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgcmVzb3VyY2VzYH08L0xpbmtUbz57YCBhcnJheWB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcInJlc291cmNldGl0bGVhY2Nlc3NvclwiXG4gICAgfX0+e2ByZXNvdXJjZVRpdGxlQWNjZXNzb3JgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0cmluZyB8IGZ1bmN0aW9uIChyZXNvdXJjZTogT2JqZWN0KSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwicmVzb3VyY2UtdGl0bGUtYWNjZXNzb3JcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BQcm92aWRlcyBhIGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIHRoZSByZXNvdXJjZSBvYmplY3QsIHVzZWQgaW4gaGVhZGVycy5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbmRyaWxsZG93blwiXG4gICAgfX0+e2BvbkRyaWxsRG93bmB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUpID0+IC8vIGRvIHNvbWV0aGluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1kcmlsbC1kb3duXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ2FsbGJhY2sgZmlyZWQgd2hlbiBkYXRlIGhlYWRlciwgb3IgdGhlIHRydW5jYXRlZCBldmVudHMgbGlua3MgYXJlIGNsaWNrZWQuIFdoZW4gaW5jbHVkZWQsIGl0IHdpbGwgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgZHJpbGxkb3duIGJlaGF2aW9yLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9ucmFuZ2VjaGFuZ2VcIlxuICAgIH19Pntgb25SYW5nZUNoYW5nZWB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKHJhbmdlOiBBcnJheSBbMXw3XSB8IE9iamVjdCB7c3RhcnQ6IERhdGUsIGVuZDogRGF0ZX0pID0+IC8vIGRvIHNvbWV0aGluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1yYW5nZS1jaGFuZ2VcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BDYWxsYmFjayBmaXJlZCB3aGVuIHRoZSB2aXNpYmxlIGRhdGUgcmFuZ2UgY2hhbmdlcy4gUmV0dXJucyBhbiBBcnJheSBvZiBkYXRlcyBvciBhbiBvYmplY3Qgd2l0aCBzdGFydCBhbmQgZW5kIGRhdGVzIGZvciBCVUlMVElOIHZpZXdzLmB9PC9wPlxuICAgIDxwPntgQ3VzdG9tIHZpZXdzIG1heSByZXR1cm4gc29tZXRoaW5nIGRpZmZlcmVudC5gfTwvcD5cbiAgICA8cD48ZW0gcGFyZW50TmFtZT1cInBcIj57YE5vdGU6YH08L2VtPntgIFRoaXMgbWV0aG9kIGlzIG5vdCBmaXJlZCBvbiBpbml0aWFsIHJlbmRlci4gT25seSBhcyB0aGUgdXNlciBuYXZpZ2F0ZXMgdGhyb3VnaCBCaWcgQ2FsZW5kYXIuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwic2VsZWN0YWJsZVwiXG4gICAgfX0+e2BzZWxlY3RhYmxlYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2Bib29sZWFuIHwgJ2lnbm9yZUV2ZW50cydgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic2VsZWN0YWJsZVwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEFsbG93cyBtb3VzZSBzZWxlY3Rpb24gb2YgcmFuZ2VzIG9mIGRhdGVzL3RpbWVzLmB9PC9wPlxuICAgIDxwPntgVGhlICdpZ25vcmVFdmVudHMnIG9wdGlvbiBwcmV2ZW50cyBzZWxlY3Rpb24gY29kZSBmcm9tIHJ1bm5pbmcgd2hlbiBhIGRyYWcgYmVnaW5zIG92ZXIgYW4gZXZlbnQuIFVzZWZ1bCB3aGVuIHlvdSB3YW50IGN1c3RvbSBldmVudCBjbGljayBvciBkcmFnIGxvZ2ljLmB9PC9wPlxuICAgIDxwPjxlbSBwYXJlbnROYW1lPVwicFwiPntgVGhpbmdzIFRvIEtub3c6YH08L2VtPntgIFdoZW4geW91ICdkb3VibGVDbGljaycsIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJyB3aWxsIGZpcmUuIENsaWNrIG9uIHRoZSAnc2hvd0NvZGUnIGJ1dHRvbiwgYXQgdGhlIGJvdHRvbSBvZiB0aGUgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwib24tc2VsZWN0LXNsb3RcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BleGFtcGxlYH08L0xpbmtUbz57YCwgdG8gc2VlIGhvdyB5b3UgY2FuIGdldCBhcm91bmQgdGhpcyBpc3N1ZS5gfTwvcD5cbiAgICA8aDIgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbnNlbGVjdHNsb3RcIlxuICAgIH19Pntgb25TZWxlY3RTbG90YH08L2gyPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoT2JqZWN0OiBzbG90SW5mbykgPT4gYW55YH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHJlcXVpcmVzOiBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJzZWxlY3RhYmxlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgc2VsZWN0YWJsZWB9PC9MaW5rVG8+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLXNlbGVjdC1zbG90XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQSBjYWxsYmFjayBmaXJlZCB3aGVuIGEgZGF0ZSBzZWxlY3Rpb24gaXMgbWFkZS4gT25seSBmaXJlcyB3aGVuIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNlbGVjdGFibGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BzZWxlY3RhYmxlYH08L0xpbmtUbz57YCBpcyB0cnVlLmB9PC9wPlxuICAgIDxwPjxlbSBwYXJlbnROYW1lPVwicFwiPntgVGhpbmdzIFRvIEtub3c6YH08L2VtPntgIFdoZW4geW91ICdkb3VibGVDbGljaycsIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJyB3aWxsIGZpcmUuIENsaWNrIG9uIHRoZSAnc2hvd0NvZGUnIGJ1dHRvbiwgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZXhhbXBsZSBiZWxvdywgdG8gc2VlIGhvdyB5b3UgY2FuIGdldCBhcm91bmQgdGhpcyBpc3N1ZS5gfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgOyhzbG90SW5mbzoge1xuICBzdGFydDogRGF0ZSxcbiAgZW5kOiBEYXRlLFxuICBzbG90czogQXJyYXk8RGF0ZT4sXG4gIGFjdGlvbjogJ3NlbGVjdCcgfCAnY2xpY2snIHwgJ2RvdWJsZUNsaWNrJyxcbiAgYm91bmRzOiA/e1xuICAgIC8vIEZvciBcInNlbGVjdFwiIGFjdGlvblxuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXIsXG4gICAgdG9wOiBudW1iZXIsXG4gICAgcmlnaHQ6IG51bWJlcixcbiAgICBsZWZ0OiBudW1iZXIsXG4gICAgYm90dG9tOiBudW1iZXIsXG4gIH0sXG4gIGJveDogP3tcbiAgICAvLyBGb3IgXCJjbGlja1wiIG9yIFwiZG91YmxlQ2xpY2tcIiBhY3Rpb25zXG4gICAgY2xpZW50WDogbnVtYmVyLFxuICAgIGNsaWVudFk6IG51bWJlcixcbiAgICB4OiBudW1iZXIsXG4gICAgeTogbnVtYmVyLFxuICB9LFxufSkgPT4gYW55XG5gfTwvY29kZT48L3ByZT5cbiAgICA8aDQgey4uLntcbiAgICAgIFwiaWRcIjogXCJ3aGF0cy10aGUtZGlmZmVyZW5jZS1mcm9tLW9uc2VsZWN0aW5nXCJcbiAgICB9fT57YFdoYXQncyBUaGUgRGlmZmVyZW5jZSBmcm9tIG9uU2VsZWN0aW5nP2B9PC9oND5cbiAgICA8cD57YEhvdyBpcyB0aGlzIGRpZmZlcmVudCBmcm9tIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLXNlbGVjdGluZ1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uU2VsZWN0aW5nYH08L0xpbmtUbz57YD8gVGhhdCBpcyBhIHZlcnkgZ29vZCBxdWVzdGlvbi4gVGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uU2VsZWN0aW5nYH08L2lubGluZUNvZGU+e2AgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGluIHRoZSBUaW1lIHZpZXdzIChgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B3ZWVrYH08L2lubGluZUNvZGU+e2AsIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHdvcmsgd2Vla2B9PC9pbmxpbmVDb2RlPntgLCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BkYXlgfTwvaW5saW5lQ29kZT57YCksIHdoZXJlYXMgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25TZWxlY3RTbG90YH08L2lubGluZUNvZGU+e2AgaXMgYWxzbyBhdmFpbGFibGUgaW4gdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG1vbnRoYH08L2lubGluZUNvZGU+e2Agdmlldy4gVGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uU2VsZWN0aW5nYH08L2lubGluZUNvZGU+e2AgbWV0aG9kIGFsbG93cyB5b3UgdG8gJ2NhbmNlbCcgeW91ciBzZWxlY3Rpb24gYnkgcmV0dXJuaW5nIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGZhbHNlYH08L2lubGluZUNvZGU+e2AuIFRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvblNlbGVjdFNsb3RgfTwvaW5saW5lQ29kZT57YCBtZXRob2QgcmV0dXJucyBhIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHNsb3RJbmZvYH08L2lubGluZUNvZGU+e2Agb2JqZWN0LCBjb250YWluaW5nIGEgbG90IG9mIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgeW91ciBzZWxlY3Rpb24uYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwib25zZWxlY3RldmVudFwiXG4gICAgfX0+e2BvblNlbGVjdEV2ZW50YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZXZlbnQ6IE9iamVjdCkgPT4gYW55YH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLXNlbGVjdC1ldmVudFwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YENhbGxiYWNrIGZpcmVkIHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBzZWxlY3RlZCAoaS5lLjogYW4gYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25DbGlja2B9PC9pbmxpbmVDb2RlPntgIGhhbmRsZXIpLmB9PC9wPlxuICAgIDxwPjxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YE5vdGU6YH08L3N0cm9uZz57YCBUaGUgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic2VsZWN0YWJsZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YHNlbGVjdGFibGVgfTwvTGlua1RvPntgIHByb3AgaXMgYH08ZW0gcGFyZW50TmFtZT1cInBcIj57YG5vdGB9PC9lbT57YCByZXF1aXJlZCBmb3IgdGhpcyBwcm9wIHRvIGZ1bmN0aW9uLmB9PC9wPlxuICAgIDxwPjxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YEltcG9ydGFudDpgfTwvc3Ryb25nPntgIFRoZSBldmVudCBwYXNzZWQgaW50byB0aGUgZnVuY3Rpb24gaXMgdGhlIENhbGVuZGFyIEV2ZW50LCBub3QgdGhlIFN5bnRoZXRpY0V2ZW50IGV4cGVjdGVkIGJ5IG1vc3QgY2xpY2sgaGFuZGxlcnMuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwib25kb3VibGVjbGlja2V2ZW50XCJcbiAgICB9fT57YG9uRG91YmxlQ2xpY2tFdmVudGB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGV2ZW50OiBPYmplY3QpID0+IGFueWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1kb3VibGUtY2xpY2stZXZlbnRcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BDYWxsYmFjayBmaXJlZCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgY2xpY2tlZCB0d2ljZS4gKGkuZS46IGFuIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uRG91YmxlQ2xpY2tgfTwvaW5saW5lQ29kZT57YCBoYW5kbGVyKS5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BOb3RlOmB9PC9zdHJvbmc+e2AgVGhlIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNlbGVjdGFibGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BzZWxlY3RhYmxlYH08L0xpbmtUbz57YCBwcm9wIGlzIGB9PGVtIHBhcmVudE5hbWU9XCJwXCI+e2Bub3RgfTwvZW0+e2AgcmVxdWlyZWQgZm9yIHRoaXMgcHJvcCB0byBmdW5jdGlvbi5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BJbXBvcnRhbnQ6YH08L3N0cm9uZz57YCBUaGUgZXZlbnQgcGFzc2VkIGludG8gdGhlIGZ1bmN0aW9uIGlzIHRoZSBDYWxlbmRhciBFdmVudCwgbm90IHRoZSBTeW50aGV0aWNFdmVudCBleHBlY3RlZCBieSBtb3N0IGNsaWNrIGhhbmRsZXJzLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9uc2VsZWN0aW5nXCJcbiAgICB9fT57YG9uU2VsZWN0aW5nYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2AocmFuZ2U6IE9iamVjdCB7IHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUsIHJlc291cmNlSWQ6IG51bGx8c3RyaW5nfG51bWJlciB9KSA9PiA/Ym9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2ByZXF1aXJlczogYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic2VsZWN0YWJsZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YHNlbGVjdGFibGVgfTwvTGlua1RvPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1zZWxlY3RpbmdcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BDYWxsYmFjayBmaXJlZCB3aGVuIGRyYWdnaW5nIGEgc2VsZWN0aW9uIGluIHRoZSBUaW1lIHZpZXdzLiBPbmx5IGZpcmVzIHdoZW4gYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic2VsZWN0YWJsZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YHNlbGVjdGFibGVgfTwvTGlua1RvPntgIGlzIHRydWUuYH08L3A+XG4gICAgPHA+e2BSZXR1cm5pbmcgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZmFsc2VgfTwvaW5saW5lQ29kZT57YCBmcm9tIHRoZSBoYW5kbGVyIHdpbGwgcHJldmVudCBhIHNlbGVjdGlvbi5gfTwvcD5cbiAgICA8aDQgey4uLntcbiAgICAgIFwiaWRcIjogXCJ3aGF0cy10aGUtZGlmZmVyZW5jZS1mcm9tLW9uc2VsZWN0c2xvdFwiXG4gICAgfX0+e2BXaGF0J3MgVGhlIERpZmZlcmVuY2UgZnJvbSBvblNlbGVjdFNsb3Q/YH08L2g0PlxuICAgIDxwPntgSG93IGlzIHRoaXMgZGlmZmVyZW50IGZyb20gYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwib24tc2VsZWN0LXNsb3RcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvblNlbGVjdFNsb3RgfTwvTGlua1RvPntgPyBUaGF0IGlzIGEgdmVyeSBnb29kIHF1ZXN0aW9uLiBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25TZWxlY3RpbmdgfTwvaW5saW5lQ29kZT57YCBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgaW4gdGhlIFRpbWUgdmlld3MgKGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHdlZWtgfTwvaW5saW5lQ29kZT57YCwgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgd29yayB3ZWVrYH08L2lubGluZUNvZGU+e2AsIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGRheWB9PC9pbmxpbmVDb2RlPntgKSwgd2hlcmVhcyBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvblNlbGVjdFNsb3RgfTwvaW5saW5lQ29kZT57YCBpcyBhbHNvIGF2YWlsYWJsZSBpbiB0aGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbW9udGhgfTwvaW5saW5lQ29kZT57YCB2aWV3LiBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25TZWxlY3RpbmdgfTwvaW5saW5lQ29kZT57YCBtZXRob2QgYWxsb3dzIHlvdSB0byAnY2FuY2VsJyB5b3VyIHNlbGVjdGlvbiBieSByZXR1cm5pbmcgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZmFsc2VgfTwvaW5saW5lQ29kZT57YC4gVGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uU2VsZWN0U2xvdGB9PC9pbmxpbmVDb2RlPntgIG1ldGhvZCByZXR1cm5zIGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgc2xvdEluZm9gfTwvaW5saW5lQ29kZT57YCBvYmplY3QsIGNvbnRhaW5pbmcgYSBsb3Qgb2YgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIHNlbGVjdGlvbi5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbnNob3dtb3JlXCJcbiAgICB9fT57YG9uU2hvd01vcmVgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChldmVudHM6IEFycmF5W2V2ZW50OiBPYmplY3RdLCBkYXRlOiBEYXRlKSA9PiBhbnlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwib24tc2hvdy1tb3JlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ2FsbGJhY2sgZmlyZWQgd2hlbiBhICt7Y291bnR9IG1vcmUgaXMgY2xpY2tlZC4gUmVjZWl2ZXMgYH08c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BhbGxgfTwvc3Ryb25nPntgIG9mIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BldmVudHNgfTwvaW5saW5lQ29kZT57YCBmb3IgdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGRhdGVgfTwvaW5saW5lQ29kZT57YCBvbiB3aGljaCBpdCB3YXMgc2VsZWN0ZWQuYH08L3A+XG4gICAgey8qIFRPRE86IGRvU2hvd01vcmVEcmlsbERvd24gaXMgbm90IGZ1bmN0aW9uaW5nICovfVxuICAgIHsvKiBSZXF1aXJlZCB3aGVuIHVzaW5nIHRoZSA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZG8tc2hvdy1tb3JlLWRyaWxsLWRvd25cIj5kb1Nob3dNb3JlRHJpbGxEb3duPC9MaW5rVG8+IHByb3BzIGFzIGBmYWxzZWAuICovfVxuICAgIHsvKiAjIyMgZG9TaG93TW9yZURyaWxsRG93blxuICAgICAtIHR5cGU6IGBib29sZWFuYFxuICAgICAtIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJkby1zaG93LW1vcmUtZHJpbGwtZG93blwiPlxuICAgICAgICBFeGFtcGxlXG4gICAgICA8L0xpbmtUbz5cbiAgICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBkcmlsbCBkb3duIHNob3VsZCBvY2N1ciB3aGVuIGNsaWNraW5nIG9uIHRoZSBcIitfeF8gbW9yZVwiIGxpbmsuXG4gICAgIElmIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJwb3B1cFwiPnBvcHVwPC9MaW5rVG8+IGlzIGBmYWxzZWAsIGFuZCBgZG9TaG93TW9yZURyaWxsRG93bmAgaXMgYHRydWVgLCB0aGUgZHJpbGwgZG93biB3aWxsIG9jY3VyIGFzIHVzdWFsLlxuICAgICBJZiA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwicG9wdXBcIj5wb3B1cDwvTGlua1RvPiBpcyBgZmFsc2VgLCBhbmQgYGRvU2hvd01vcmVEcmlsbERvd25gIGlzIGBmYWxzZWAsIHRoZSBkcmlsbCBkb3duIHdpbGwgbm90IG9jY3VyIGFuZCB0aGUgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLXNob3ctbW9yZVwiPm9uU2hvd01vcmU8L0xpbmtUbz4gZnVuY3Rpb24gd2lsbCB0cmlnZ2VyLiAqL31cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbmtleXByZXNzZXZlbnRcIlxuICAgIH19Pntgb25LZXlQcmVzc0V2ZW50YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZXZlbnQ6IE9iamVjdCwgZTogU3ludGhldGljRXZlbnQpID0+IHZvaWRgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwib24ta2V5LXByZXNzLWV2ZW50XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ2FsbGJhY2sgZmlyZWQgd2hlbiBhIGZvY3VzZWQgY2FsZW5kYXIgZXZlbnQgcmVjZWl2ZXMgYSBrZXkgcHJlc3MuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwic2hvd2FsbGV2ZW50c1wiXG4gICAgfX0+e2BzaG93QWxsRXZlbnRzYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2Bib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmYWxzZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJzaG93LWFsbC1ldmVudHNcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BEaXNwbGF5cyBhbGwgZXZlbnRzIG9uIHRoZSBtb250aCB2aWV3IGluc3RlYWQgb2YgaGF2aW5nIHNvbWUgaGlkZGVuIGJlaGluZCAre2NvdW50fSBtb3JlLiBUaGlzIHdpbGwgY2F1c2UgdGhlIHJvd3MgaW4gdGhlIG1vbnRoIHZpZXcgdG8gYmUgc2Nyb2xsYWJsZSBpZiB0aGUgbnVtYmVyIG9mIGV2ZW50cyBleGNlZWQgdGhlIGhlaWdodCBvZiB0aGUgcm93LmB9PC9wPlxuICAgIDxoNCB7Li4ue1xuICAgICAgXCJpZFwiOiBcInNlbGVjdGVkXCJcbiAgICB9fT57YHNlbGVjdGVkYH08L2g0PlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BFdmVudDogT2JqZWN0YH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNlbGVjdGVkXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIHNlbGVjdGVkIGV2ZW50LCBpZiBhbnkuIEJ5IGRlZmF1bHQsIEJpZyBDYWxlbmRhciAnY29udHJvbHMnIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BzZWxlY3RlZGB9PC9pbmxpbmVDb2RlPntgIChoaWdobGlnaHRlZCkgZXZlbnQgaW4gdGhlIGRpc3BsYXkuIFlvdSBjYW4gdXNlIHRoaXMgcHJvcCB0byBjb250cm9sIHdoaWNoIGV2ZW50IGlzIGhpZ2hsaWdodGVkLiBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgc2VsZWN0ZWRgfTwvaW5saW5lQ29kZT57YCBldmVudCBtdXN0IGJlIGEgb2JqZWN0IHJlZmVyZW5jZSB0byB0aGUgZXZlbnQgd2l0aGluIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJldmVudHNcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BldmVudHNgfTwvTGlua1RvPntgIGFycmF5LmB9PC9wPlxuICAgIDxwPntgT2Z0ZW4gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLXNlbGVjdC1ldmVudFwiIG1keFR5cGU9XCJMaW5rVG9cIj57YE9uU2VsZWN0RXZlbnRgfTwvTGlua1RvPntgIGFuZC9vciBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1kb3VibGUtY2xpY2stZXZlbnRcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvbkRvdWJsZUNsaWNrRXZlbnRgfTwvTGlua1RvPntgLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcInZpZXdzXCJcbiAgICB9fT57YHZpZXdzYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BWaWV3cyAoJ21vbnRoJ3wnd2Vlayd8J3dvcmtfd2Vlayd8J2RheSd8J2FnZW5kYScpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2Bbdmlld3MuTU9OVEgsIHZpZXdzLldFRUssIHZpZXdzLkRBWSwgdmlld3MuQUdFTkRBXWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJjYWwtdmlld3NcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBbiBhcnJheSBvZiBidWlsdC1pbiB2aWV3IG5hbWVzIHRvIGFsbG93IHRoZSBjYWxlbmRhciB0byBkaXNwbGF5LiBhY2NlcHRzIGVpdGhlciBhbiBhcnJheSBvZiBidWlsdGluIHZpZXcgbmFtZXMsYH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YHZpZXdzPXtbJ21vbnRoJywgJ2RheScsICdhZ2VuZGEnXX1cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwPntgb3IgYW4gb2JqZWN0IGhhc2ggb2YgdGhlIHZpZXcgbmFtZSBhbmQgdGhlIGNvbXBvbmVudCAob3IgYm9vbGVhbiBmb3IgYnVpbHRpbikuYH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YHZpZXdzPXt7XG4gIG1vbnRoOiB0cnVlLFxuICB3ZWVrOiBmYWxzZSxcbiAgbXl3ZWVrOiBXb3JrV2Vla1ZpZXdDb21wb25lbnQsXG59fVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPHA+e2BDdXN0b20gdmlld3MgY2FuIGJlIGFueSBSZWFjdCBjb21wb25lbnQsIHRoYXQgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIGludGVyZmFjZTpgfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgaW50ZXJmYWNlIFZpZXcge1xuICBzdGF0aWMgdGl0bGUoZGF0ZTogRGF0ZSwgeyBmb3JtYXRzOiBEYXRlRm9ybWF0W10sIGN1bHR1cmU6IHN0cmluZz8sIC4uLnByb3BzIH0pOiBzdHJpbmdcbiAgc3RhdGljIG5hdmlnYXRlKGRhdGU6IERhdGUsIGFjdGlvbjogJ1BSRVYnIHwgJ05FWFQnIHwgJ0RBVEUnKTogRGF0ZVxufVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZHJpbGxkb3dudmlld1wiXG4gICAgfX0+e2BkcmlsbGRvd25WaWV3YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YFZpZXdzLkRBWWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJkcmlsbGRvd24tdmlld1wiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFRoZSBzdHJpbmcgbmFtZSBvZiB0aGUgZGVzdGluYXRpb24gYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgdmlld2B9PC9pbmxpbmVDb2RlPntgIGZvciBkcmlsbC1kb3duIGFjdGlvbnMsIHN1Y2ggYXMgY2xpY2tpbmcgYSBkYXRlIGhlYWRlciwgb3IgdGhlIHRydW5jYXRlZCBldmVudHMgbGlua3MuIElmIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGdldERyaWxsZG93blZpZXdgfTwvaW5saW5lQ29kZT57YCBpcyBhbHNvIHNwZWNpZmllZCBpdCB3aWxsIGJlIHVzZWQgaW5zdGVhZC5gfTwvcD5cbiAgICA8cD57YFNldCB0byBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BudWxsYH08L2lubGluZUNvZGU+e2AgdG8gZGlzYWJsZSBkcmlsbC1kb3duIGFjdGlvbnMuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZ2V0ZHJpbGxkb3dudmlld1wiXG4gICAgfX0+e2BnZXREcmlsbGRvd25WaWV3YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAodGFyZ2V0RGF0ZTogRGF0ZSwgY3VycmVudFZpZXdOYW1lOiBzdHJpbmcsIGNvbmZpZ3VyZWRWaWV3TmFtZXM6IFZpZXdzW10pID0+IHN0cmluZ3xudWxsYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImdldC1kcmlsbGRvd24tdmlld1wiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIGRyaWxsZG93blZpZXcsIGJ1dCBhY2NlcHRzIGEgZnVuY3Rpb24gdGhhdCBjYW4gcmV0dXJuIGEgdmlldyBuYW1lLiBJdCdzIHVzZWZ1bCBmb3IgY3VzdG9taXppbmcgdGhlIGRyaWxsLWRvd24gYWN0aW9ucyBkZXBlbmRpbmcgb24gdGhlIHRhcmdldCBkYXRlIGFuZCB0cmlnZ2VyaW5nIHZpZXcuYH08L3A+XG4gICAgPHA+e2BSZXR1cm4gbnVsbCB0byBkaXNhYmxlIGRyaWxsLWRvd24gYWN0aW9ucy5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJsZW5ndGhcIlxuICAgIH19PntgbGVuZ3RoYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BudW1iZXJgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YDMwYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImxlbmd0aFwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERldGVybWluZXMgdGhlIGVuZCBkYXRlIGZyb20gZGF0ZSBwcm9wIGluIHRoZSBhZ2VuZGEgdmlldyBkYXRlIHByb3AgKyBsZW5ndGggKGluIG51bWJlciBvZiBkYXlzKSA9IGVuZCBkYXRlLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcInRvb2xiYXJcIlxuICAgIH19PntgdG9vbGJhcmB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgdHJ1ZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJ0b29sYmFyXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0b29sYmFyIGlzIGRpc3BsYXllZGB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcInBvcHVwXCJcbiAgICB9fT57YHBvcHVwYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2Bib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2B0cnVlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInBvcHVwXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgU2hvdyB0cnVuY2F0ZWQgZXZlbnRzIGluIGFuIG92ZXJsYXkgd2hlbiB5b3UgY2xpY2sgdGhlIFwiK2B9PGVtIHBhcmVudE5hbWU9XCJwXCI+e2B4YH08L2VtPntgIG1vcmVcIiBsaW5rLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcInBvcHVwb2Zmc2V0XCJcbiAgICB9fT57YHBvcHVwT2Zmc2V0YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BudW1iZXJ8c2hhcGUge3g6IG51bWJlciwgeTogbnVtYmVyfWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJwb3B1cC1vZmZzZXRcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BEaXN0YW5jZSBpbiBwaXhlbHMsIGZyb20gdGhlIGVkZ2VzIG9mIHRoZSB2aWV3cG9ydCwgdGhlIFwic2hvdyBtb3JlXCIgb3ZlcmxheSBzaG91bGQgYmUgcG9zaXRpb25lZC5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJsb25ncHJlc3N0aHJlc2hvbGRcIlxuICAgIH19PntgbG9uZ1ByZXNzVGhyZXNob2xkYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BudW1iZXJgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YDI1MGB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJsb25nLXByZXNzLXRocmVzaG9sZFwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIG1pbGlzZWNvbmRzIHRoZSB1c2VyIG11c3QgcHJlc3MgYW5kIGhvbGQgb24gdGhlIHNjcmVlbiBmb3IgYSB0b3VjaCB0byBiZSBjb25zaWRlcmVkIGEgXCJsb25nIHByZXNzLlwiIExvbmcgcHJlc3NlcyBhcmUgdXNlZCBmb3IgdGltZSBzbG90IHNlbGVjdGlvbiBvbiB0b3VjaCBkZXZpY2VzLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcInN0ZXBcIlxuICAgIH19Pntgc3RlcGB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbnVtYmVyYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2AzMGB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJzdGVwXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRGV0ZXJtaW5lcyB0aGUgc2VsZWN0YWJsZSB0aW1lIGluY3JlbWVudHMgaW4gd2VlayBhbmQgZGF5IHZpZXdzYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwidGltZXNsb3RzXCJcbiAgICB9fT57YHRpbWVzbG90c2B9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbnVtYmVyYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInRpbWVzbG90c1wiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFRoZSBudW1iZXIgb2Ygc2xvdHMgcGVyIFwic2VjdGlvblwiIGluIHRoZSB0aW1lIGdyaWQgdmlld3MuIEFkanVzdCB3aXRoIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInN0ZXBcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BzdGVwYH08L0xpbmtUbz57YCB0byBjaGFuZ2UgdGhlIGRlZmF1bHQgb2YgMSBob3VyIGxvbmcgZ3JvdXBzLCB3aXRoIDMwIG1pbnV0ZSBzbG90cy5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJydGxcIlxuICAgIH19PntgcnRsYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2Bib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmYWxzZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJyaWdodC10by1sZWZ0XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgU3dpdGNoIHRoZSBjYWxlbmRhciB0byBhIHJpZ2h0LXRvLWxlZnQgcmVhZCBkaXJlY3Rpb24uYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZXZlbnRwcm9wZ2V0dGVyXCJcbiAgICB9fT57YGV2ZW50UHJvcEdldHRlcmB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGV2ZW50OiBPYmplY3QsIHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUsIGlzU2VsZWN0ZWQ6IGJvb2xlYW4pID0+IHtjbGFzc05hbWU/OiBzdHJpbmcsIHN0eWxlPzogT2JqZWN0fWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJldmVudC1wcm9wLWdldHRlclwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YE9wdGlvbmFsbHkgcHJvdmlkZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBvYmplY3Qgb2YgY2xhc3NOYW1lIG9yIHN0eWxlIHByb3BzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHRoZSBldmVudCBub2RlLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcInNsb3Rwcm9wZ2V0dGVyXCJcbiAgICB9fT57YHNsb3RQcm9wR2V0dGVyYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSkgPT4ge2NsYXNzTmFtZT86IHN0cmluZywgc3R5bGU/OiBPYmplY3R9YH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLXNsb3QtcHJvcC1nZXR0ZXJcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BPcHRpb25hbGx5IHByb3ZpZGUgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gb2JqZWN0IG9mIGNsYXNzTmFtZSBvciBzdHlsZSBwcm9wcyB0byBiZSBhcHBsaWVkIHRvIHRoZSB0aGUgdGltZS1zbG90IG5vZGUuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgQ2F1dGlvbiFgfTwvc3Ryb25nPntgIFN0eWxlcyB0aGF0IGNoYW5nZSBsYXlvdXQgb3IgcG9zaXRpb24gbWF5IGJyZWFrIHRoZSBjYWxlbmRhciBpbiB1bmV4cGVjdGVkIHdheXMuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwic2xvdGdyb3VwcHJvcGdldHRlclwiXG4gICAgfX0+e2BzbG90R3JvdXBQcm9wR2V0dGVyYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZ3JvdXA6IERhdGVbXSkgPT4geyBzdHlsZT86IE9iamVjdCB9YH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNsb3QtZ3JvdXAtcHJvcC1nZXR0ZXJcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BPcHRpb25hbGx5IHByb3ZpZGUgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gb2JqZWN0IG9mIGNsYXNzTmFtZSBvciBzdHlsZSBwcm9wcyB0byBiZSBhcHBsaWVkIHRvIHRoZSB0aW1lLXNsb3Qgbm9kZS5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BDYXV0aW9uISBTdHlsZXMgdGhhdCBjaGFuZ2UgbGF5b3V0IG9yIHBvc2l0aW9uIG1heSBicmVhayB0aGUgY2FsZW5kYXIgaW4gdW5leHBlY3RlZCB3YXlzLmB9PC9zdHJvbmc+PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRheXByb3BnZXR0ZXJcIlxuICAgIH19PntgZGF5UHJvcEdldHRlcmB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUpID0+IHtjbGFzc05hbWU/OiBzdHJpbmcsIHN0eWxlPzogT2JqZWN0fWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJkYXktcHJvcC1nZXR0ZXJcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BPcHRpb25hbGx5IHByb3ZpZGUgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gb2JqZWN0IG9mIGNsYXNzTmFtZSBvciBzdHlsZSBwcm9wcyB0byBiZSBhcHBsaWVkIHRvIHRoZSB0aGUgZGF5IGJhY2tncm91bmQuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgQ2F1dGlvbiFgfTwvc3Ryb25nPntgIFN0eWxlcyB0aGF0IGNoYW5nZSBsYXlvdXQgb3IgcG9zaXRpb24gbWF5IGJyZWFrIHRoZSBjYWxlbmRhciBpbiB1bmV4cGVjdGVkIHdheXMuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwic2hvd211bHRpZGF5dGltZXNcIlxuICAgIH19Pntgc2hvd011bHRpRGF5VGltZXNgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZhbHNlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNob3ctbXVsdGktZGF5LXRpbWVzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgU3VwcG9ydCB0byBzaG93IG11bHRpLWRheSBldmVudHMgd2l0aCBzcGVjaWZpYyBzdGFydCBhbmQgZW5kIHRpbWVzIGluIHRoZSBtYWluIHRpbWUgZ3JpZCAocmF0aGVyIHRoYW4gaW4gdGhlIGFsbCBkYXkgaGVhZGVyKS5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BOb3RlOiBUaGlzIG1heSBjYXVzZSBjYWxlbmRhcnMgd2l0aCBzZXZlcmFsIGV2ZW50cyB0byBsb29rIHZlcnkgYnVzeSBpbiB0aGUgd2VlayBhbmQgZGF5IHZpZXdzLmB9PC9zdHJvbmc+PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm1pblwiXG4gICAgfX0+e2BtaW5gfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGluc3RhbmNlT2YoRGF0ZSlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG5ldyBEYXRlKDE5NzIsIDAsIDEsIDAsIDAsIDApYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm1pblwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YENvbnN0cmFpbnMgdGhlIG1pbmltdW0gdGltZSBvZiB0aGUgRGF5IGFuZCBXZWVrIHZpZXdzLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm1heFwiXG4gICAgfX0+e2BtYXhgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGluc3RhbmNlT2YoRGF0ZSlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG5ldyBEYXRlKDE5NzIsIDAsIDEsIDIzLCA1OSwgNTkpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm1heFwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YENvbnN0cmFpbnMgdGhlIG1heGltdW0gdGltZSBvZiB0aGUgRGF5IGFuZCBXZWVrIHZpZXdzLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcInNjcm9sbHRvdGltZVwiXG4gICAgfX0+e2BzY3JvbGxUb1RpbWVgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGluc3RhbmNlT2YoRGF0ZSlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG5ldyBEYXRlKClgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic2Nyb2xsLXRvLXRpbWVcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BEZXRlcm1pbmVzIGhvdyBmYXIgZG93biB0aGUgc2Nyb2xsIHBhbmUgaXMgaW5pdGlhbGx5IHNjcm9sbGVkIGRvd24uYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiY3VsdHVyZVwiXG4gICAgfX0+e2BjdWx0dXJlYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG5vbmUgKGJyb3dzZXIgZGVmYXVsdClgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiY3VsdHVyZVwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFNwZWNpZnkgYSBzcGVjaWZpYyBjdWx0dXJlIGNvZGUgZm9yIHRoZSBDYWxlbmRhci4gVGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGN1bHR1cmVgfTwvaW5saW5lQ29kZT57YCBpcyB1c2VkIGJ5IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGZvcm1hdHNgfTwvaW5saW5lQ29kZT57YCB3aXRoIHlvdXIgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwibG9jYWxpemVyXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgbG9jYWxpemVyYH08L0xpbmtUbz57YCB0byAnZm9ybWF0JyBkYXRlL3RpbWUgaW5mb3JtYXRpb24gb24gdGhlIENhbGVuZGFyLiBUbyBsb2NhbGl6ZSBtZXNzYWdpbmcsIHVzZSB0aGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbWVzc2FnZXNgfTwvaW5saW5lQ29kZT57YCBwcm9wLmB9PC9wPlxuICAgIDxwPjxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YE5vdGU6IGl0J3MgZ2VuZXJhbGx5IGJldHRlciB0byBoYW5kbGUgdGhpcyBnbG9iYWxseSB2aWEgeW91ciBpMThuIGxpYnJhcnkuYH08L3N0cm9uZz48L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c1wiXG4gICAgfX0+e2Bmb3JtYXRzYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BPYmplY3RgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0c1wiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwibG9jYWxpemVyXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBMb2NhbGl6ZXJcbiAgICA8L0xpbmtUbz4gc3BlY2lmaWMgZm9ybWF0cywgdGVsbCB0aGUgQ2FsZW5kYXIgaG93IHRvIGZvcm1hdCBhbmQgZGlzcGxheSBkYXRlcyBhbmRcbnRpbWVzLlxuICAgIDxwPntgVGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGZvcm1hdGB9PC9pbmxpbmVDb2RlPntgIHR5cGVzIGFyZSBkZXBlbmRlbnQgb24gdGhlIGNvbmZpZ3VyZWQgbG9jYWxpemVyOyBib3RoIE1vbWVudCBhbmQgR2xvYmFsaXplIGFjY2VwdCBzdHJpbmdzIG9mIHRva2VucyBhY2NvcmRpbmcgdG8gdGhlaXIgb3duIHNwZWNpZmljYXRpb24sIHN1Y2ggYXM6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YCdERCBtbSB5eXl5J2B9PC9pbmxpbmVDb2RlPntgLmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2Bjb25zdCBmb3JtYXRzID0gdXNlTWVtbygoKSA9PiAoe1xuICBkYXRlRm9ybWF0OiAnZGQnLFxuXG4gIGRheUZvcm1hdDogKGRhdGUsICwgbG9jYWxpemVyKSA9PlxuICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ0RERCcsIGN1bHR1cmUpLFxuXG4gIGRheVJhbmdlSGVhZGVyRm9ybWF0OiAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cbiAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCB7IGRhdGU6ICdzaG9ydCcgfSwgY3VsdHVyZSkgKyAnIOKAlCAnICtcbiAgICBsb2NhbGl6ZXIuZm9ybWF0KGVuZCwgeyBkYXRlOiAnc2hvcnQnIH0sIGN1bHR1cmUpXG59KSwgW10pXG5cbjxDYWxlbmRhciBmb3JtYXRzPXtmb3JtYXRzfSAvPlxuYH08L2NvZGU+PC9wcmU+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c2RhdGVmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5kYXRlRm9ybWF0YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0cy1kYXRlLWZvcm1hdFwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEZvcm1hdCBmb3IgdGhlIGRheSBvZiB0aGUgbW9udGggaGVhZGluZyBpbiB0aGUgTW9udGggdmlldy4gZS5nLiBcIjAxXCIsIFwiMDJcIiwgXCIwM1wiLCBldGNgfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJmb3JtYXRzZGF5Zm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMuZGF5Rm9ybWF0YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0cy1kYXktZm9ybWF0XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQSBkYXkgb2YgdGhlIHdlZWsgZm9ybWF0IGZvciBXZWVrIGFuZCBEYXkgaGVhZGluZ3MsIGUuZy4gXCJXZWQgMDEvMDRcImB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHN3ZWVrZGF5Zm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMud2Vla2RheUZvcm1hdGB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImZvcm1hdHMtd2Vla2RheS1mb3JtYXRcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BXZWVrIGRheSBuYW1lIGZvcm1hdCBmb3IgdGhlIE1vbnRoIHdlZWsgZGF5IGhlYWRpbmdzLCBlLmc6IFwiU3VuXCIsIFwiTW9uXCIsIFwiVHVlXCIsIGV0Y2B9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHN0aW1lZ3V0dGVyZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMudGltZUd1dHRlckZvcm1hdGB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImZvcm1hdHMtdGltZS1ndXR0ZXItZm9ybWF0XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIHRpbWVzdGFtcCBjZWxsIGZvcm1hdHMgaW4gV2VlayBhbmQgVGltZSB2aWV3cywgZS5nLiBcIjQ6MDAgQU1cImB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNtb250aGhlYWRlcmZvcm1hdFwiXG4gICAgfX0+e2Bmb3JtYXRzLm1vbnRoSGVhZGVyRm9ybWF0YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0cy1tb250aC1oZWFkZXItZm9ybWF0XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVG9vbGJhciBoZWFkZXIgZm9ybWF0IGZvciB0aGUgTW9udGggdmlldywgZS5nIFwiMjAxNSBBcHJpbFwiYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c2RheXJhbmdlaGVhZGVyZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMuZGF5UmFuZ2VIZWFkZXJGb3JtYXRgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChyYW5nZTogT2JqZWN0IHtzdGFydDogRGF0ZSwgZW5kOiBEYXRlfSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0cy1kYXktcmFuZ2UtaGVhZGVyLWZvcm1hdFwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFRvb2xiYXIgaGVhZGVyIGZvcm1hdCBmb3IgdGhlIFdlZWsgdmlld3MsIGUuZy4gXCJNYXIgMjkgLSBBcHIgMDRcImB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNkYXloZWFkZXJmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5kYXlIZWFkZXJGb3JtYXRgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChkYXRlOiBEYXRlLCBjdWx0dXJlOiA/c3RyaW5nLCBsb2NhbGl6ZXI6IERhdGVMb2NhbGl6ZXIpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJmb3JtYXRzLWRheS1oZWFkZXItZm9ybWF0XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVG9vbGJhciBoZWFkZXIgZm9ybWF0IGZvciB0aGUgRGF5IHZpZXcsIGUuZy4gXCJXZWRuZXNkYXkgQXByIDAxXCJgfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJmb3JtYXRzYWdlbmRhaGVhZGVyZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMuYWdlbmRhSGVhZGVyRm9ybWF0YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAocmFuZ2U6IE9iamVjdCB7c3RhcnQ6IERhdGUsIGVuZDogRGF0ZX0sIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImZvcm1hdHMtYWdlbmRhLWhlYWRlci1mb3JtYXRcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUb29sYmFyIGhlYWRlciBmb3JtYXQgZm9yIHRoZSBBZ2VuZGEgdmlldywgZS5nLiBcIjQvMS8yMDE1IOKAlCA1LzEvMjAxNVwiYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c3NlbGVjdHJhbmdlZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMuc2VsZWN0UmFuZ2VGb3JtYXRgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChyYW5nZTogT2JqZWN0IHtzdGFydDogRGF0ZSwgZW5kOiBEYXRlfSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0cy1zZWxlY3QtcmFuZ2UtZm9ybWF0XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQSB0aW1lIHJhbmdlIGZvcm1hdCBzaG93biBpbiB0aGUgaGlnaGxpZ2h0ZWQgYXJlYSB3aGVuIHNlbGVjdGluZyB0aW1lIHNsb3RzLCBlLmcgXCIwODowMCBhbSDigJQgMTI6MDAgcG1cImB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNhZ2VuZGFkYXRlZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMuYWdlbmRhRGF0ZUZvcm1hdGB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImZvcm1hdHMtYWdlbmRhLWRhdGUtZm9ybWF0XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRGF0ZXMgZGlzcGxheWVkIGluIHRoZSBndXR0ZXIgb2YgdGhlIEFnZW5kYSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B2aWV3YH08L2lubGluZUNvZGU+PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNhZ2VuZGF0aW1lZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMuYWdlbmRhVGltZUZvcm1hdGB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImZvcm1hdHMtYWdlbmRhLXRpbWUtZm9ybWF0XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGltZSBvbmx5IChub3QgcmFuZ2UpIGRpc3BsYXllZCBpbiB0aGUgZ3V0dGVyIG9mIHRoZSBBZ2VuZGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgdmlld2B9PC9pbmxpbmVDb2RlPjwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJmb3JtYXRzYWdlbmRhdGltZXJhbmdlZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMuYWdlbmRhVGltZVJhbmdlRm9ybWF0YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAocmFuZ2U6IE9iamVjdCB7c3RhcnQ6IERhdGUsIGVuZDogRGF0ZX0sIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImZvcm1hdHMtYWdlbmRhLXRpbWUtcmFuZ2UtZm9ybWF0XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGltZSByYW5nZSBkaXNwbGF5ZWQgaW4gdGhlIGd1dHRlciBvZiB0aGUgQWdlbmRhIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHZpZXdgfTwvaW5saW5lQ29kZT48L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c2V2ZW50dGltZXJhbmdlZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMuZXZlbnRUaW1lUmFuZ2VGb3JtYXRgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChyYW5nZTogT2JqZWN0IHtzdGFydDogRGF0ZSwgZW5kOiBEYXRlfSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0cy1ldmVudC10aW1lLXJhbmdlLWZvcm1hdFwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFRpbWUgcmFuZ2UgZGlzcGxheWVkIG9uIGV2ZW50cyBpbiBUaW1lIEdyaWQgdmlld3MuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c2V2ZW50dGltZXJhbmdlc3RhcnRmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5ldmVudFRpbWVSYW5nZVN0YXJ0Rm9ybWF0YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0cy1ldmVudC10aW1lLXJhbmdlLXN0YXJ0LWZvcm1hdFwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEFuIG9wdGlvbmFsIGV2ZW50IHRpbWUgcmFuZ2UgZm9yIGV2ZW50cyB0aGF0IGNvbnRpbnVlIG9udG8gYW5vdGhlciBkYXkuIFVzZWQgd2l0aCBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJzaG93LW11bHRpLWRheS10aW1lc1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YHNob3dNdWx0aURheVRpbWVzYH08L0xpbmtUbz57YC5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJmb3JtYXRzZXZlbnR0aW1lcmFuZ2VlbmRmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5ldmVudFRpbWVSYW5nZUVuZEZvcm1hdGB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImZvcm1hdHMtZXZlbnQtdGltZS1yYW5nZS1lbmQtZm9ybWF0XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQW4gb3B0aW9uYWwgZXZlbnQgdGltZSByYW5nZSBmb3IgZXZlbnRzIHRoYXQgY29udGludWUgb250byBhbm90aGVyIGRheS4gVXNlZCB3aXRoIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNob3ctbXVsdGktZGF5LXRpbWVzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgc2hvd011bHRpRGF5VGltZXNgfTwvTGlua1RvPntgLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImNvbXBvbmVudHNcIlxuICAgIH19PntgY29tcG9uZW50c2B9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgb2JqZWN0YH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImNvbXBvbmVudHNcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BDdXN0b21pemUgaG93IGRpZmZlcmVudCBzZWN0aW9ucyBvZiB0aGUgY2FsZW5kYXIgcmVuZGVyIGJ5IHByb3ZpZGluZyBjdXN0b20gQ29tcG9uZW50cy4gSW4gcGFydGljdWxhciB0aGUgRXZlbnQgY29tcG9uZW50IGNhbiBiZSBzcGVjaWZpZWQgZm9yIHRoZSBlbnRpcmUgY2FsZW5kYXIsIG9yIHlvdSBjYW4gcHJvdmlkZSBhbiBpbmRpdmlkdWFsIGNvbXBvbmVudCBmb3IgZWFjaCB2aWV3IHR5cGUuYH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YGxldCBjb21wb25lbnRzID0gdXNlTWVtbyh7XG4gIGV2ZW50OiBNeUV2ZW50LCAvLyB1c2VkIGJ5IGVhY2ggdmlldyAoTW9udGgsIERheSwgV2VlaylcbiAgdG9vbGJhcjogTXlUb29sYmFyLFxuICBhZ2VuZGE6IHtcbiAgICAgICBldmVudDogTXlBZ2VuZGFFdmVudCAvLyB3aXRoIHRoZSBhZ2VuZGEgdmlldyB1c2UgYSBkaWZmZXJlbnQgY29tcG9uZW50IHRvIHJlbmRlciBldmVudHNcbiAgfVxufSwgW10pXG48Q2FsZW5kYXIgY29tcG9uZW50cz17Y29tcG9uZW50c30gLz5cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm1lc3NhZ2VzXCJcbiAgICB9fT57YG1lc3NhZ2VzYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BPYmplY3RgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwibWVzc2FnZXNcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BTdHJpbmcgbWVzc2FnZXMgdXNlZCB0aHJvdWdob3V0IHRoZSBjb21wb25lbnQsIG92ZXJyaWRlIHRvIHByb3ZpZGUgbG9jYWxpemF0aW9ucyBmb3IgYnV0dG9uIHRleHQsIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHRpdGxlYH08L2lubGluZUNvZGU+e2AgYXR0cmlidXRlcyBhbmQgbW9yZS5gfTwvcD5cbiAgICA8cD57YGRlZnVhbHRzYH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YHtcbiAgZGF0ZTogJ0RhdGUnLFxuICB0aW1lOiAnVGltZScsXG4gIGV2ZW50OiAnRXZlbnQnLFxuICBhbGxEYXk6ICdBbGwgRGF5JyxcbiAgd2VlazogJ1dlZWsnLFxuICB3b3JrX3dlZWs6ICdXb3JrIFdlZWsnLFxuICBkYXk6ICdEYXknLFxuICBtb250aDogJ01vbnRoJyxcbiAgcHJldmlvdXM6ICdCYWNrJyxcbiAgbmV4dDogJ05leHQnLFxuICB5ZXN0ZXJkYXk6ICdZZXN0ZXJkYXknLFxuICB0b21vcnJvdzogJ1RvbW9ycm93JyxcbiAgdG9kYXk6ICdUb2RheScsXG4gIGFnZW5kYTogJ0FnZW5kYScsXG5cbiAgbm9FdmVudHNJblJhbmdlOiAnVGhlcmUgYXJlIG5vIGV2ZW50cyBpbiB0aGlzIHJhbmdlLicsXG5cbiAgc2hvd01vcmU6IHRvdGFsID0+IFxcYCtcXCR7dG90YWx9IG1vcmVcXGAsXG59XG5gfTwvY29kZT48L3ByZT5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJkYXlsYXlvdXRhbGdvcml0aG1cIlxuICAgIH19PntgZGF5TGF5b3V0QWxnb3JpdGhtYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmcgfCBGdW5jdGlvbihldmVudHMsIG1pbmltdW1TdGFydERpZmZlcmVuY2UsIHNsb3RNZXRyaWNzLCBhY2Nlc3NvcnMpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BvdmVybGFwYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImRheS1sYXlvdXQtYWxnb3JpdGhtXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQSBkYXkgZXZlbnQgbGF5b3V0KGFycmFuZ2VtZW50KSBhbGdvcml0aG0uYH08L3A+XG4gICAgPHA+PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG92ZXJsYXBgfTwvaW5saW5lQ29kZT57YCBhbGxvd3MgZXZlbnRzIHRvIGJlIG92ZXJsYXBwZWQuYH08L3A+XG4gICAgPHA+PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG5vLW92ZXJsYXBgfTwvaW5saW5lQ29kZT57YCByZXNpemVzIGV2ZW50cyB0byBhdm9pZCBvdmVybGFwLmB9PC9wPlxuICAgIDxwPntgb3IgY3VzdG9tIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YEZ1bmN0aW9uKGV2ZW50cywgbWluaW11bVN0YXJ0RGlmZmVyZW5jZSwgc2xvdE1ldHJpY3MsIGFjY2Vzc29ycylgfTwvaW5saW5lQ29kZT48L3A+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7XG5cbmV4cG9ydCBjb25zdCBfX3BhZ2UgPSAoKSA9PiB7IHRocm93IG5ldyBFcnJvcihcIkRvY3Mtb25seSBzdG9yeVwiKTsgfTtcblxuX19wYWdlLnBhcmFtZXRlcnMgPSB7IGRvY3NPbmx5OiB0cnVlIH07XG5cbmNvbnN0IGNvbXBvbmVudE1ldGEgPSB7IHRpdGxlOiAncHJvcHMvRnVsbCBQcm9wIExpc3QnLCBpbmNsdWRlU3RvcmllczogW1wiX19wYWdlXCJdLCAgfTtcblxuY29uc3QgbWR4U3RvcnlOYW1lVG9LZXkgPSB7fTtcblxuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzID0gY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzIHx8IHt9O1xuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgPSB7XG4gIC4uLihjb21wb25lbnRNZXRhLnBhcmFtZXRlcnMuZG9jcyB8fCB7fSksXG4gIHBhZ2U6ICgpID0+IDxBZGRDb250ZXh0IG1keFN0b3J5TmFtZVRvS2V5PXttZHhTdG9yeU5hbWVUb0tleX0gbWR4Q29tcG9uZW50QW5ub3RhdGlvbnM9e2NvbXBvbmVudE1ldGF9PjxNRFhDb250ZW50IC8+PC9BZGRDb250ZXh0Pixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudE1ldGE7IiwiLy8gSW1wb3J0c1xudmFyIF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyA9IHJlcXVpcmUoXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpO1xuZXhwb3J0cyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhmYWxzZSk7XG4vLyBNb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5yYmMtYWRkb25zLWRuZCAucmJjLWFkZG9ucy1kbmQtcm93LWJvZHl7cG9zaXRpb246cmVsYXRpdmV9LnJiYy1hZGRvbnMtZG5kIC5yYmMtYWRkb25zLWRuZC1kcmFnLXJvd3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MH0ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLW92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zKX0ucmJjLWFkZG9ucy1kbmQgLnJiYy1ldmVudHt0cmFuc2l0aW9uOm9wYWNpdHkgMTUwbXN9LnJiYy1hZGRvbnMtZG5kIC5yYmMtZXZlbnQ6aG92ZXIgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ucy1pY29uLC5yYmMtYWRkb25zLWRuZCAucmJjLWV2ZW50OmhvdmVyIC5yYmMtYWRkb25zLWRuZC1yZXNpemUtZXctaWNvbntkaXNwbGF5OmJsb2NrfS5yYmMtYWRkb25zLWRuZCAucmJjLWFkZG9ucy1kbmQtZHJhZ2dlZC1ldmVudHtvcGFjaXR5OjB9LnJiYy1hZGRvbnMtZG5kLnJiYy1hZGRvbnMtZG5kLWlzLWRyYWdnaW5nIC5yYmMtZXZlbnQ6bm90KC5yYmMtYWRkb25zLWRuZC1kcmFnZ2VkLWV2ZW50KTpub3QoLnJiYy1hZGRvbnMtZG5kLWRyYWctcHJldmlldyl7b3BhY2l0eTouNX0ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLXJlc2l6YWJsZXtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlfS5yYmMtYWRkb25zLWRuZCAucmJjLWFkZG9ucy1kbmQtcmVzaXplLW5zLWFuY2hvcnt3aWR0aDoxMDAlO3RleHQtYWxpZ246Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlfS5yYmMtYWRkb25zLWRuZCAucmJjLWFkZG9ucy1kbmQtcmVzaXplLW5zLWFuY2hvcjpmaXJzdC1jaGlsZHt0b3A6MH0ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ucy1hbmNob3I6bGFzdC1jaGlsZHtib3R0b206MH0ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ucy1hbmNob3IgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ucy1pY29ue2Rpc3BsYXk6bm9uZTtib3JkZXItdG9wOjNweCBkb3VibGU7bWFyZ2luOjAgYXV0bzt3aWR0aDoxMHB4O2N1cnNvcjpucy1yZXNpemV9LnJiYy1hZGRvbnMtZG5kIC5yYmMtYWRkb25zLWRuZC1yZXNpemUtZXctYW5jaG9ye3Bvc2l0aW9uOmFic29sdXRlO3RvcDo0cHg7Ym90dG9tOjB9LnJiYy1hZGRvbnMtZG5kIC5yYmMtYWRkb25zLWRuZC1yZXNpemUtZXctYW5jaG9yOmZpcnN0LWNoaWxke2xlZnQ6MH0ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ldy1hbmNob3I6bGFzdC1jaGlsZHtyaWdodDowfS5yYmMtYWRkb25zLWRuZCAucmJjLWFkZG9ucy1kbmQtcmVzaXplLWV3LWFuY2hvciAucmJjLWFkZG9ucy1kbmQtcmVzaXplLWV3LWljb257ZGlzcGxheTpub25lO2JvcmRlci1sZWZ0OjNweCBkb3VibGU7bWFyZ2luLXRvcDphdXRvO21hcmdpbi1ib3R0b206YXV0bztoZWlnaHQ6MTBweDtjdXJzb3I6ZXctcmVzaXplfVwiLCBcIlwiXSk7XG4vLyBFeHBvcnRzXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHM7XG4iLCIvLyBJbXBvcnRzXG52YXIgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fID0gcmVxdWlyZShcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIik7XG5leHBvcnRzID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKGZhbHNlKTtcbi8vIE1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLnJiYy1idG57Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7bWFyZ2luOjB9YnV0dG9uLnJiYy1idG57b3ZlcmZsb3c6dmlzaWJsZTt0ZXh0LXRyYW5zZm9ybTpub25lOy13ZWJraXQtYXBwZWFyYW5jZTpidXR0b247Y3Vyc29yOnBvaW50ZXJ9YnV0dG9uW2Rpc2FibGVkXS5yYmMtYnRue2N1cnNvcjpub3QtYWxsb3dlZH1idXR0b24ucmJjLWlucHV0OjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowO3BhZGRpbmc6MH0ucmJjLWNhbGVuZGFye2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6MTAwJTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOnN0cmV0Y2h9LnJiYy1jYWxlbmRhciAqLC5yYmMtY2FsZW5kYXIgKjpiZWZvcmUsLnJiYy1jYWxlbmRhciAqOmFmdGVye2JveC1zaXppbmc6aW5oZXJpdH0ucmJjLWFicy1mdWxsLC5yYmMtcm93LWJne292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MH0ucmJjLWVsbGlwc2lzLC5yYmMtc2hvdy1tb3JlLC5yYmMtcm93LXNlZ21lbnQgLnJiYy1ldmVudC1jb250ZW50LC5yYmMtZXZlbnQtbGFiZWx7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9LnJiYy1ydGx7ZGlyZWN0aW9uOnJ0bH0ucmJjLW9mZi1yYW5nZXtjb2xvcjojOTk5fS5yYmMtb2ZmLXJhbmdlLWJne2JhY2tncm91bmQ6I2U2ZTZlNn0ucmJjLWhlYWRlcntvdmVyZmxvdzpoaWRkZW47ZmxleDoxIDAgMCU7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7cGFkZGluZzowIDNweDt0ZXh0LWFsaWduOmNlbnRlcjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6OTAlO21pbi1oZWlnaHQ6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkfS5yYmMtaGVhZGVyKy5yYmMtaGVhZGVye2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZGRkfS5yYmMtcnRsIC5yYmMtaGVhZGVyKy5yYmMtaGVhZGVye2JvcmRlci1sZWZ0LXdpZHRoOjA7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkfS5yYmMtaGVhZGVyPmEsLnJiYy1oZWFkZXI+YTphY3RpdmUsLnJiYy1oZWFkZXI+YTp2aXNpdGVke2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnJiYy1idXR0b24tbGlua3tjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7dXNlci1zZWxlY3Q6dGV4dH0ucmJjLXJvdy1jb250ZW50e3Bvc2l0aW9uOnJlbGF0aXZlO3VzZXItc2VsZWN0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO3otaW5kZXg6NH0ucmJjLXJvdy1jb250ZW50LXNjcm9sbGFibGV7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJX0ucmJjLXJvdy1jb250ZW50LXNjcm9sbGFibGUgLnJiYy1yb3ctY29udGVudC1zY3JvbGwtY29udGFpbmVye2hlaWdodDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsOy1tcy1vdmVyZmxvdy1zdHlsZTpub25lO3Njcm9sbGJhci13aWR0aDpub25lOy1tcy1vdmVyZmxvdy1zdHlsZTpub25lO3Njcm9sbGJhci13aWR0aDpub25lfS5yYmMtcm93LWNvbnRlbnQtc2Nyb2xsYWJsZSAucmJjLXJvdy1jb250ZW50LXNjcm9sbC1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZX0ucmJjLXRvZGF5e2JhY2tncm91bmQtY29sb3I6I2VhZjZmZn0ucmJjLXRvb2xiYXJ7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206MTBweDtmb250LXNpemU6MTZweH0ucmJjLXRvb2xiYXIgLnJiYy10b29sYmFyLWxhYmVse2ZsZXgtZ3JvdzoxO3BhZGRpbmc6MCAxMHB4O3RleHQtYWxpZ246Y2VudGVyfS5yYmMtdG9vbGJhciBidXR0b257Y29sb3I6IzM3M2EzYztkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MDt0ZXh0LWFsaWduOmNlbnRlcjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7YmFja2dyb3VuZDpub25lO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXI6MXB4IHNvbGlkICNjY2M7cGFkZGluZzouMzc1cmVtIDFyZW07Ym9yZGVyLXJhZGl1czo0cHg7bGluZS1oZWlnaHQ6bm9ybWFsO3doaXRlLXNwYWNlOm5vd3JhcH0ucmJjLXRvb2xiYXIgYnV0dG9uOmFjdGl2ZSwucmJjLXRvb2xiYXIgYnV0dG9uLnJiYy1hY3RpdmV7YmFja2dyb3VuZC1pbWFnZTpub25lO2JveC1zaGFkb3c6aW5zZXQgMCAzcHggNXB4IHJnYmEoMCwwLDAsLjEyNSk7YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2O2JvcmRlci1jb2xvcjojYWRhZGFkfS5yYmMtdG9vbGJhciBidXR0b246YWN0aXZlOmhvdmVyLC5yYmMtdG9vbGJhciBidXR0b246YWN0aXZlOmZvY3VzLC5yYmMtdG9vbGJhciBidXR0b24ucmJjLWFjdGl2ZTpob3ZlciwucmJjLXRvb2xiYXIgYnV0dG9uLnJiYy1hY3RpdmU6Zm9jdXN7Y29sb3I6IzM3M2EzYztiYWNrZ3JvdW5kLWNvbG9yOiNkNGQ0ZDQ7Ym9yZGVyLWNvbG9yOiM4YzhjOGN9LnJiYy10b29sYmFyIGJ1dHRvbjpmb2N1c3tjb2xvcjojMzczYTNjO2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNjtib3JkZXItY29sb3I6I2FkYWRhZH0ucmJjLXRvb2xiYXIgYnV0dG9uOmhvdmVye2NvbG9yOiMzNzNhM2M7YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2O2JvcmRlci1jb2xvcjojYWRhZGFkfS5yYmMtYnRuLWdyb3Vwe2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcH0ucmJjLWJ0bi1ncm91cD5idXR0b246Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LnJiYy1idG4tZ3JvdXA+YnV0dG9uOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0ucmJjLXJ0bCAucmJjLWJ0bi1ncm91cD5idXR0b246Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKXtib3JkZXItcmFkaXVzOjRweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5yYmMtcnRsIC5yYmMtYnRuLWdyb3VwPmJ1dHRvbjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0ucmJjLWJ0bi1ncm91cD5idXR0b246bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKXtib3JkZXItcmFkaXVzOjB9LnJiYy1idG4tZ3JvdXAgYnV0dG9uK2J1dHRvbnttYXJnaW4tbGVmdDotMXB4fS5yYmMtcnRsIC5yYmMtYnRuLWdyb3VwIGJ1dHRvbitidXR0b257bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6LTFweH0ucmJjLWJ0bi1ncm91cCsucmJjLWJ0bi1ncm91cCwucmJjLWJ0bi1ncm91cCtidXR0b257bWFyZ2luLWxlZnQ6MTBweH1AbWVkaWEobWF4LXdpZHRoOiA3NjdweCl7LnJiYy10b29sYmFye2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn19LnJiYy1ldmVudCwucmJjLWRheS1zbG90IC5yYmMtYmFja2dyb3VuZC1ldmVudHtib3JkZXI6bm9uZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNoYWRvdzpub25lO21hcmdpbjowO3BhZGRpbmc6MnB4IDVweDtiYWNrZ3JvdW5kLWNvbG9yOiMzMTc0YWQ7Ym9yZGVyLXJhZGl1czo1cHg7Y29sb3I6I2ZmZjtjdXJzb3I6cG9pbnRlcjt3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVmdH0ucmJjLXNsb3Qtc2VsZWN0aW5nIC5yYmMtZXZlbnQsLnJiYy1zbG90LXNlbGVjdGluZyAucmJjLWRheS1zbG90IC5yYmMtYmFja2dyb3VuZC1ldmVudCwucmJjLWRheS1zbG90IC5yYmMtc2xvdC1zZWxlY3RpbmcgLnJiYy1iYWNrZ3JvdW5kLWV2ZW50e2N1cnNvcjppbmhlcml0O3BvaW50ZXItZXZlbnRzOm5vbmV9LnJiYy1ldmVudC5yYmMtc2VsZWN0ZWQsLnJiYy1kYXktc2xvdCAucmJjLXNlbGVjdGVkLnJiYy1iYWNrZ3JvdW5kLWV2ZW50e2JhY2tncm91bmQtY29sb3I6IzI2NTk4NX0ucmJjLWV2ZW50OmZvY3VzLC5yYmMtZGF5LXNsb3QgLnJiYy1iYWNrZ3JvdW5kLWV2ZW50OmZvY3Vze291dGxpbmU6NXB4IGF1dG8gIzNiOTlmY30ucmJjLWV2ZW50LWxhYmVse2ZvbnQtc2l6ZTo4MCV9LnJiYy1ldmVudC1vdmVybGFwc3tib3gtc2hhZG93Oi0xcHggMXB4IDVweCAwcHggcmdiYSg1MSw1MSw1MSwuNSl9LnJiYy1ldmVudC1jb250aW51ZXMtcHJpb3J7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0ucmJjLWV2ZW50LWNvbnRpbnVlcy1hZnRlcntib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LnJiYy1ldmVudC1jb250aW51ZXMtZWFybGllcntib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0ucmJjLWV2ZW50LWNvbnRpbnVlcy1sYXRlcntib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0ucmJjLXJvd3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93fS5yYmMtcm93LXNlZ21lbnR7cGFkZGluZzowIDFweCAxcHggMXB4fS5yYmMtc2VsZWN0ZWQtY2VsbHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5yYmMtc2hvdy1tb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyk7ei1pbmRleDo0O2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjg1JTtoZWlnaHQ6YXV0bztsaW5lLWhlaWdodDpub3JtYWw7Y29sb3I6IzMxNzRhZH0ucmJjLXNob3ctbW9yZTpob3ZlciwucmJjLXNob3ctbW9yZTpmb2N1c3tjb2xvcjojMjY1OTg1fS5yYmMtbW9udGgtdmlld3twb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXI6MXB4IHNvbGlkICNkZGQ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4OjEgMCAwO3dpZHRoOjEwMCU7dXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7aGVpZ2h0OjEwMCV9LnJiYy1tb250aC1oZWFkZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvd30ucmJjLW1vbnRoLXJvd3tkaXNwbGF5OmZsZXg7cG9zaXRpb246cmVsYXRpdmU7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXg6MSAwIDA7ZmxleC1iYXNpczowcHg7b3ZlcmZsb3c6aGlkZGVuO2hlaWdodDoxMDAlfS5yYmMtbW9udGgtcm93Ky5yYmMtbW9udGgtcm93e2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGR9LnJiYy1kYXRlLWNlbGx7ZmxleDoxIDEgMDttaW4td2lkdGg6MDtwYWRkaW5nLXJpZ2h0OjVweDt0ZXh0LWFsaWduOnJpZ2h0fS5yYmMtZGF0ZS1jZWxsLnJiYy1ub3d7Zm9udC13ZWlnaHQ6Ym9sZH0ucmJjLWRhdGUtY2VsbD5hLC5yYmMtZGF0ZS1jZWxsPmE6YWN0aXZlLC5yYmMtZGF0ZS1jZWxsPmE6dmlzaXRlZHtjb2xvcjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjpub25lfS5yYmMtcm93LWJne2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleDoxIDAgMDtvdmVyZmxvdzpoaWRkZW59LnJiYy1kYXktYmd7ZmxleDoxIDAgMCV9LnJiYy1kYXktYmcrLnJiYy1kYXktYmd7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkZGR9LnJiYy1ydGwgLnJiYy1kYXktYmcrLnJiYy1kYXktYmd7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGR9LnJiYy1vdmVybGF5e3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6NTtib3JkZXI6MXB4IHNvbGlkICNlNWU1ZTU7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JveC1zaGFkb3c6MCA1cHggMTVweCByZ2JhKDAsMCwwLC4yNSk7cGFkZGluZzoxMHB4fS5yYmMtb3ZlcmxheT4qKyp7bWFyZ2luLXRvcDoxcHh9LnJiYy1vdmVybGF5LWhlYWRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTVlNWU1O21hcmdpbjotMTBweCAtMTBweCA1cHggLTEwcHg7cGFkZGluZzoycHggMTBweH0ucmJjLWFnZW5kYS12aWV3e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleDoxIDAgMDtvdmVyZmxvdzphdXRvfS5yYmMtYWdlbmRhLXZpZXcgdGFibGUucmJjLWFnZW5kYS10YWJsZXt3aWR0aDoxMDAlO2JvcmRlcjoxcHggc29saWQgI2RkZDtib3JkZXItc3BhY2luZzowO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZX0ucmJjLWFnZW5kYS12aWV3IHRhYmxlLnJiYy1hZ2VuZGEtdGFibGUgdGJvZHk+dHI+dGR7cGFkZGluZzo1cHggMTBweDt2ZXJ0aWNhbC1hbGlnbjp0b3B9LnJiYy1hZ2VuZGEtdmlldyB0YWJsZS5yYmMtYWdlbmRhLXRhYmxlIC5yYmMtYWdlbmRhLXRpbWUtY2VsbHtwYWRkaW5nLWxlZnQ6MTVweDtwYWRkaW5nLXJpZ2h0OjE1cHg7dGV4dC10cmFuc2Zvcm06bG93ZXJjYXNlfS5yYmMtYWdlbmRhLXZpZXcgdGFibGUucmJjLWFnZW5kYS10YWJsZSB0Ym9keT50cj50ZCt0ZHtib3JkZXItbGVmdDoxcHggc29saWQgI2RkZH0ucmJjLXJ0bCAucmJjLWFnZW5kYS12aWV3IHRhYmxlLnJiYy1hZ2VuZGEtdGFibGUgdGJvZHk+dHI+dGQrdGR7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGR9LnJiYy1hZ2VuZGEtdmlldyB0YWJsZS5yYmMtYWdlbmRhLXRhYmxlIHRib2R5PnRyK3Rye2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGR9LnJiYy1hZ2VuZGEtdmlldyB0YWJsZS5yYmMtYWdlbmRhLXRhYmxlIHRoZWFkPnRyPnRoe3BhZGRpbmc6M3B4IDVweDt0ZXh0LWFsaWduOmxlZnQ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZH0ucmJjLXJ0bCAucmJjLWFnZW5kYS12aWV3IHRhYmxlLnJiYy1hZ2VuZGEtdGFibGUgdGhlYWQ+dHI+dGh7dGV4dC1hbGlnbjpyaWdodH0ucmJjLWFnZW5kYS10aW1lLWNlbGx7dGV4dC10cmFuc2Zvcm06bG93ZXJjYXNlfS5yYmMtYWdlbmRhLXRpbWUtY2VsbCAucmJjLWNvbnRpbnVlcy1hZnRlcjphZnRlcntjb250ZW50OlxcXCIgwrtcXFwifS5yYmMtYWdlbmRhLXRpbWUtY2VsbCAucmJjLWNvbnRpbnVlcy1wcmlvcjpiZWZvcmV7Y29udGVudDpcXFwiwqsgXFxcIn0ucmJjLWFnZW5kYS1kYXRlLWNlbGwsLnJiYy1hZ2VuZGEtdGltZS1jZWxse3doaXRlLXNwYWNlOm5vd3JhcH0ucmJjLWFnZW5kYS1ldmVudC1jZWxse3dpZHRoOjEwMCV9LnJiYy10aW1lLWNvbHVtbntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi1oZWlnaHQ6MTAwJX0ucmJjLXRpbWUtY29sdW1uIC5yYmMtdGltZXNsb3QtZ3JvdXB7ZmxleDoxfS5yYmMtdGltZXNsb3QtZ3JvdXB7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZDttaW4taGVpZ2h0OjQwcHg7ZGlzcGxheTpmbGV4O2ZsZXgtZmxvdzpjb2x1bW4gbm93cmFwfS5yYmMtdGltZS1ndXR0ZXIsLnJiYy1oZWFkZXItZ3V0dGVye2ZsZXg6bm9uZX0ucmJjLWxhYmVse3BhZGRpbmc6MCA1cHh9LnJiYy1kYXktc2xvdHtwb3NpdGlvbjpyZWxhdGl2ZX0ucmJjLWRheS1zbG90IC5yYmMtZXZlbnRzLWNvbnRhaW5lcntib3R0b206MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDttYXJnaW4tcmlnaHQ6MTBweDt0b3A6MH0ucmJjLWRheS1zbG90IC5yYmMtZXZlbnRzLWNvbnRhaW5lci5yYmMtcnRse2xlZnQ6MTBweDtyaWdodDowfS5yYmMtZGF5LXNsb3QgLnJiYy1ldmVudCwucmJjLWRheS1zbG90IC5yYmMtYmFja2dyb3VuZC1ldmVudHtib3JkZXI6MXB4IHNvbGlkICMyNjU5ODU7ZGlzcGxheTpmbGV4O21heC1oZWlnaHQ6MTAwJTttaW4taGVpZ2h0OjIwcHg7ZmxleC1mbG93OmNvbHVtbiB3cmFwO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlfS5yYmMtZGF5LXNsb3QgLnJiYy1iYWNrZ3JvdW5kLWV2ZW50e29wYWNpdHk6Ljc1fS5yYmMtZGF5LXNsb3QgLnJiYy1ldmVudC1sYWJlbHtmbGV4Om5vbmU7cGFkZGluZy1yaWdodDo1cHg7d2lkdGg6YXV0b30ucmJjLWRheS1zbG90IC5yYmMtZXZlbnQtY29udGVudHt3aWR0aDoxMDAlO2ZsZXg6MSAxIDA7d29yZC13cmFwOmJyZWFrLXdvcmQ7bGluZS1oZWlnaHQ6MTtoZWlnaHQ6MTAwJTttaW4taGVpZ2h0OjFlbX0ucmJjLWRheS1zbG90IC5yYmMtdGltZS1zbG90e2JvcmRlci10b3A6MXB4IHNvbGlkICNmN2Y3Zjd9LnJiYy10aW1lLXZpZXctcmVzb3VyY2VzIC5yYmMtdGltZS1ndXR0ZXIsLnJiYy10aW1lLXZpZXctcmVzb3VyY2VzIC5yYmMtdGltZS1oZWFkZXItZ3V0dGVye3Bvc2l0aW9uOnN0aWNreTtsZWZ0OjA7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZDt6LWluZGV4OjEwO21hcmdpbi1yaWdodDotMXB4fS5yYmMtdGltZS12aWV3LXJlc291cmNlcyAucmJjLXRpbWUtaGVhZGVye292ZXJmbG93OmhpZGRlbn0ucmJjLXRpbWUtdmlldy1yZXNvdXJjZXMgLnJiYy10aW1lLWhlYWRlci1jb250ZW50e21pbi13aWR0aDphdXRvO2ZsZXg6MSAwIDA7ZmxleC1iYXNpczowcHh9LnJiYy10aW1lLXZpZXctcmVzb3VyY2VzIC5yYmMtdGltZS1oZWFkZXItY2VsbC1zaW5nbGUtZGF5e2Rpc3BsYXk6bm9uZX0ucmJjLXRpbWUtdmlldy1yZXNvdXJjZXMgLnJiYy1kYXktc2xvdHttaW4td2lkdGg6MTQwcHh9LnJiYy10aW1lLXZpZXctcmVzb3VyY2VzIC5yYmMtaGVhZGVyLC5yYmMtdGltZS12aWV3LXJlc291cmNlcyAucmJjLWRheS1iZ3t3aWR0aDoxNDBweDtmbGV4OjEgMSAwO2ZsZXgtYmFzaXM6MCBweH0ucmJjLXRpbWUtaGVhZGVyLWNvbnRlbnQrLnJiYy10aW1lLWhlYWRlci1jb250ZW50e21hcmdpbi1sZWZ0Oi0xcHh9LnJiYy10aW1lLXNsb3R7ZmxleDoxIDAgMH0ucmJjLXRpbWUtc2xvdC5yYmMtbm93e2ZvbnQtd2VpZ2h0OmJvbGR9LnJiYy1kYXktaGVhZGVye3RleHQtYWxpZ246Y2VudGVyfS5yYmMtc2xvdC1zZWxlY3Rpb257ei1pbmRleDoxMDtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjUpO2NvbG9yOiNmZmY7Zm9udC1zaXplOjc1JTt3aWR0aDoxMDAlO3BhZGRpbmc6M3B4fS5yYmMtc2xvdC1zZWxlY3Rpbmd7Y3Vyc29yOm1vdmV9LnJiYy10aW1lLXZpZXd7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4OjE7d2lkdGg6MTAwJTtib3JkZXI6MXB4IHNvbGlkICNkZGQ7bWluLWhlaWdodDowfS5yYmMtdGltZS12aWV3IC5yYmMtdGltZS1ndXR0ZXJ7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtYWxpZ246cmlnaHR9LnJiYy10aW1lLXZpZXcgLnJiYy1hbGxkYXktY2VsbHtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7cG9zaXRpb246cmVsYXRpdmV9LnJiYy10aW1lLXZpZXcgLnJiYy1hbGxkYXktY2VsbCsucmJjLWFsbGRheS1jZWxse2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZGRkfS5yYmMtdGltZS12aWV3IC5yYmMtYWxsZGF5LWV2ZW50c3twb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjR9LnJiYy10aW1lLXZpZXcgLnJiYy1yb3d7Ym94LXNpemluZzpib3JkZXItYm94O21pbi1oZWlnaHQ6MjBweH0ucmJjLXRpbWUtaGVhZGVye2Rpc3BsYXk6ZmxleDtmbGV4OjAgMCBhdXRvO2ZsZXgtZGlyZWN0aW9uOnJvd30ucmJjLXRpbWUtaGVhZGVyLnJiYy1vdmVyZmxvd2luZ3tib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGR9LnJiYy1ydGwgLnJiYy10aW1lLWhlYWRlci5yYmMtb3ZlcmZsb3dpbmd7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkZGR9LnJiYy10aW1lLWhlYWRlcj4ucmJjLXJvdzpmaXJzdC1jaGlsZHtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkfS5yYmMtdGltZS1oZWFkZXI+LnJiYy1yb3cucmJjLXJvdy1yZXNvdXJjZXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkfS5yYmMtdGltZS1oZWFkZXItY2VsbC1zaW5nbGUtZGF5e2Rpc3BsYXk6bm9uZX0ucmJjLXRpbWUtaGVhZGVyLWNvbnRlbnR7ZmxleDoxO2Rpc3BsYXk6ZmxleDttaW4td2lkdGg6MDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkZGR9LnJiYy1ydGwgLnJiYy10aW1lLWhlYWRlci1jb250ZW50e2JvcmRlci1sZWZ0LXdpZHRoOjA7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkfS5yYmMtdGltZS1oZWFkZXItY29udGVudD4ucmJjLXJvdy5yYmMtcm93LXJlc291cmNle2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGQ7ZmxleC1zaHJpbms6MH0ucmJjLXRpbWUtY29udGVudHtkaXNwbGF5OmZsZXg7ZmxleDoxIDAgMCU7YWxpZ24taXRlbXM6ZmxleC1zdGFydDt3aWR0aDoxMDAlO2JvcmRlci10b3A6MnB4IHNvbGlkICNkZGQ7b3ZlcmZsb3cteTphdXRvO3Bvc2l0aW9uOnJlbGF0aXZlfS5yYmMtdGltZS1jb250ZW50Pi5yYmMtdGltZS1ndXR0ZXJ7ZmxleDpub25lfS5yYmMtdGltZS1jb250ZW50PiorKj4qe2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZGRkfS5yYmMtcnRsIC5yYmMtdGltZS1jb250ZW50PiorKj4qe2JvcmRlci1sZWZ0LXdpZHRoOjA7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkfS5yYmMtdGltZS1jb250ZW50Pi5yYmMtZGF5LXNsb3R7d2lkdGg6MTAwJTt1c2VyLXNlbGVjdDpub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZX0ucmJjLWN1cnJlbnQtdGltZS1pbmRpY2F0b3J7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDozO2xlZnQ6MDtyaWdodDowO2hlaWdodDoxcHg7YmFja2dyb3VuZC1jb2xvcjojNzRhZDMxO3BvaW50ZXItZXZlbnRzOm5vbmV9XCIsIFwiXCJdKTtcbi8vIEV4cG9ydHNcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cztcbiIsIi8vIEltcG9ydHNcbnZhciBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gPSByZXF1aXJlKFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKTtcbmV4cG9ydHMgPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oZmFsc2UpO1xuLy8gTW9kdWxlXG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCIuZXhhbXBsZXMtLWN1c3RvbS10b29sYmFyIGJ1dHRvbntmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjFyZW19XCIsIFwiXCJdKTtcbi8vIEV4cG9ydHNcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cztcbiIsIi8vIEltcG9ydHNcbnZhciBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gPSByZXF1aXJlKFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKTtcbmV4cG9ydHMgPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oZmFsc2UpO1xuLy8gTW9kdWxlXG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCIucmJjLWJ0bntjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDttYXJnaW46MH1idXR0b24ucmJjLWJ0bntvdmVyZmxvdzp2aXNpYmxlO3RleHQtdHJhbnNmb3JtOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtjdXJzb3I6cG9pbnRlcn1idXR0b25bZGlzYWJsZWRdLnJiYy1idG57Y3Vyc29yOm5vdC1hbGxvd2VkfWJ1dHRvbi5yYmMtaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjA7cGFkZGluZzowfS5yYmMtY2FsZW5kYXJ7Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDoxMDAlO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6c3RyZXRjaH0ucmJjLWNhbGVuZGFyICosLnJiYy1jYWxlbmRhciAqOmJlZm9yZSwucmJjLWNhbGVuZGFyICo6YWZ0ZXJ7Ym94LXNpemluZzppbmhlcml0fS5yYmMtYWJzLWZ1bGwsLnJiYy1yb3ctYmd7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowfS5yYmMtZWxsaXBzaXMsLnJiYy1zaG93LW1vcmUsLnJiYy1yb3ctc2VnbWVudCAucmJjLWV2ZW50LWNvbnRlbnQsLnJiYy1ldmVudC1sYWJlbHtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0ucmJjLXJ0bHtkaXJlY3Rpb246cnRsfS5yYmMtb2ZmLXJhbmdle2NvbG9yOiM5OTl9LnJiYy1vZmYtcmFuZ2UtYmd7YmFja2dyb3VuZDojZTZlNmU2fS5yYmMtaGVhZGVye292ZXJmbG93OmhpZGRlbjtmbGV4OjEgMCAwJTt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDtwYWRkaW5nOjAgM3B4O3RleHQtYWxpZ246Y2VudGVyO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZTo5MCU7bWluLWhlaWdodDowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGR9LnJiYy1oZWFkZXIrLnJiYy1oZWFkZXJ7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkZGR9LnJiYy1ydGwgLnJiYy1oZWFkZXIrLnJiYy1oZWFkZXJ7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGR9LnJiYy1oZWFkZXI+YSwucmJjLWhlYWRlcj5hOmFjdGl2ZSwucmJjLWhlYWRlcj5hOnZpc2l0ZWR7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZX0ucmJjLWJ1dHRvbi1saW5re2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjt1c2VyLXNlbGVjdDp0ZXh0fS5yYmMtcm93LWNvbnRlbnR7cG9zaXRpb246cmVsYXRpdmU7dXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7ei1pbmRleDo0fS5yYmMtcm93LWNvbnRlbnQtc2Nyb2xsYWJsZXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlfS5yYmMtcm93LWNvbnRlbnQtc2Nyb2xsYWJsZSAucmJjLXJvdy1jb250ZW50LXNjcm9sbC1jb250YWluZXJ7aGVpZ2h0OjEwMCU7b3ZlcmZsb3cteTpzY3JvbGw7LW1zLW92ZXJmbG93LXN0eWxlOm5vbmU7c2Nyb2xsYmFyLXdpZHRoOm5vbmU7LW1zLW92ZXJmbG93LXN0eWxlOm5vbmU7c2Nyb2xsYmFyLXdpZHRoOm5vbmV9LnJiYy1yb3ctY29udGVudC1zY3JvbGxhYmxlIC5yYmMtcm93LWNvbnRlbnQtc2Nyb2xsLWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXJ7ZGlzcGxheTpub25lfS5yYmMtdG9kYXl7YmFja2dyb3VuZC1jb2xvcjojZWFmNmZmfS5yYmMtdG9vbGJhcntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbToxMHB4O2ZvbnQtc2l6ZToxNnB4fS5yYmMtdG9vbGJhciAucmJjLXRvb2xiYXItbGFiZWx7ZmxleC1ncm93OjE7cGFkZGluZzowIDEwcHg7dGV4dC1hbGlnbjpjZW50ZXJ9LnJiYy10b29sYmFyIGJ1dHRvbntjb2xvcjojMzczYTNjO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbjowO3RleHQtYWxpZ246Y2VudGVyO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtiYWNrZ3JvdW5kOm5vbmU7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlcjoxcHggc29saWQgI2NjYztwYWRkaW5nOi4zNzVyZW0gMXJlbTtib3JkZXItcmFkaXVzOjRweDtsaW5lLWhlaWdodDpub3JtYWw7d2hpdGUtc3BhY2U6bm93cmFwfS5yYmMtdG9vbGJhciBidXR0b246YWN0aXZlLC5yYmMtdG9vbGJhciBidXR0b24ucmJjLWFjdGl2ZXtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym94LXNoYWRvdzppbnNldCAwIDNweCA1cHggcmdiYSgwLDAsMCwuMTI1KTtiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTY7Ym9yZGVyLWNvbG9yOiNhZGFkYWR9LnJiYy10b29sYmFyIGJ1dHRvbjphY3RpdmU6aG92ZXIsLnJiYy10b29sYmFyIGJ1dHRvbjphY3RpdmU6Zm9jdXMsLnJiYy10b29sYmFyIGJ1dHRvbi5yYmMtYWN0aXZlOmhvdmVyLC5yYmMtdG9vbGJhciBidXR0b24ucmJjLWFjdGl2ZTpmb2N1c3tjb2xvcjojMzczYTNjO2JhY2tncm91bmQtY29sb3I6I2Q0ZDRkNDtib3JkZXItY29sb3I6IzhjOGM4Y30ucmJjLXRvb2xiYXIgYnV0dG9uOmZvY3Vze2NvbG9yOiMzNzNhM2M7YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2O2JvcmRlci1jb2xvcjojYWRhZGFkfS5yYmMtdG9vbGJhciBidXR0b246aG92ZXJ7Y29sb3I6IzM3M2EzYztiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTY7Ym9yZGVyLWNvbG9yOiNhZGFkYWR9LnJiYy1idG4tZ3JvdXB7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwfS5yYmMtYnRuLWdyb3VwPmJ1dHRvbjpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0ucmJjLWJ0bi1ncm91cD5idXR0b246bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5yYmMtcnRsIC5yYmMtYnRuLWdyb3VwPmJ1dHRvbjpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LnJiYy1ydGwgLnJiYy1idG4tZ3JvdXA+YnV0dG9uOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCl7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5yYmMtYnRuLWdyb3VwPmJ1dHRvbjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci1yYWRpdXM6MH0ucmJjLWJ0bi1ncm91cCBidXR0b24rYnV0dG9ue21hcmdpbi1sZWZ0Oi0xcHh9LnJiYy1ydGwgLnJiYy1idG4tZ3JvdXAgYnV0dG9uK2J1dHRvbnttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDotMXB4fS5yYmMtYnRuLWdyb3VwKy5yYmMtYnRuLWdyb3VwLC5yYmMtYnRuLWdyb3VwK2J1dHRvbnttYXJnaW4tbGVmdDoxMHB4fUBtZWRpYShtYXgtd2lkdGg6IDc2N3B4KXsucmJjLXRvb2xiYXJ7ZmxleC1kaXJlY3Rpb246Y29sdW1ufX0ucmJjLWV2ZW50LC5yYmMtZGF5LXNsb3QgLnJiYy1iYWNrZ3JvdW5kLWV2ZW50e2JvcmRlcjpub25lO2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2hhZG93Om5vbmU7bWFyZ2luOjA7cGFkZGluZzoycHggNXB4O2JhY2tncm91bmQtY29sb3I6IzMxNzRhZDtib3JkZXItcmFkaXVzOjVweDtjb2xvcjojZmZmO2N1cnNvcjpwb2ludGVyO3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpsZWZ0fS5yYmMtc2xvdC1zZWxlY3RpbmcgLnJiYy1ldmVudCwucmJjLXNsb3Qtc2VsZWN0aW5nIC5yYmMtZGF5LXNsb3QgLnJiYy1iYWNrZ3JvdW5kLWV2ZW50LC5yYmMtZGF5LXNsb3QgLnJiYy1zbG90LXNlbGVjdGluZyAucmJjLWJhY2tncm91bmQtZXZlbnR7Y3Vyc29yOmluaGVyaXQ7cG9pbnRlci1ldmVudHM6bm9uZX0ucmJjLWV2ZW50LnJiYy1zZWxlY3RlZCwucmJjLWRheS1zbG90IC5yYmMtc2VsZWN0ZWQucmJjLWJhY2tncm91bmQtZXZlbnR7YmFja2dyb3VuZC1jb2xvcjojMjY1OTg1fS5yYmMtZXZlbnQ6Zm9jdXMsLnJiYy1kYXktc2xvdCAucmJjLWJhY2tncm91bmQtZXZlbnQ6Zm9jdXN7b3V0bGluZTo1cHggYXV0byAjM2I5OWZjfS5yYmMtZXZlbnQtbGFiZWx7Zm9udC1zaXplOjgwJX0ucmJjLWV2ZW50LW92ZXJsYXBze2JveC1zaGFkb3c6LTFweCAxcHggNXB4IDBweCByZ2JhKDUxLDUxLDUxLC41KX0ucmJjLWV2ZW50LWNvbnRpbnVlcy1wcmlvcntib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5yYmMtZXZlbnQtY29udGludWVzLWFmdGVye2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0ucmJjLWV2ZW50LWNvbnRpbnVlcy1lYXJsaWVye2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5yYmMtZXZlbnQtY29udGludWVzLWxhdGVye2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5yYmMtcm93e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3d9LnJiYy1yb3ctc2VnbWVudHtwYWRkaW5nOjAgMXB4IDFweCAxcHh9LnJiYy1zZWxlY3RlZC1jZWxse2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9LnJiYy1zaG93LW1vcmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKTt6LWluZGV4OjQ7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6ODUlO2hlaWdodDphdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDtjb2xvcjojMzE3NGFkfS5yYmMtc2hvdy1tb3JlOmhvdmVyLC5yYmMtc2hvdy1tb3JlOmZvY3Vze2NvbG9yOiMyNjU5ODV9LnJiYy1tb250aC12aWV3e3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlcjoxcHggc29saWQgI2RkZDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXg6MSAwIDA7d2lkdGg6MTAwJTt1c2VyLXNlbGVjdDpub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTtoZWlnaHQ6MTAwJX0ucmJjLW1vbnRoLWhlYWRlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93fS5yYmMtbW9udGgtcm93e2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleDoxIDAgMDtmbGV4LWJhc2lzOjBweDtvdmVyZmxvdzpoaWRkZW47aGVpZ2h0OjEwMCV9LnJiYy1tb250aC1yb3crLnJiYy1tb250aC1yb3d7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZH0ucmJjLWRhdGUtY2VsbHtmbGV4OjEgMSAwO21pbi13aWR0aDowO3BhZGRpbmctcmlnaHQ6NXB4O3RleHQtYWxpZ246cmlnaHR9LnJiYy1kYXRlLWNlbGwucmJjLW5vd3tmb250LXdlaWdodDpib2xkfS5yYmMtZGF0ZS1jZWxsPmEsLnJiYy1kYXRlLWNlbGw+YTphY3RpdmUsLnJiYy1kYXRlLWNlbGw+YTp2aXNpdGVke2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnJiYy1yb3ctYmd7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4OjEgMCAwO292ZXJmbG93OmhpZGRlbn0ucmJjLWRheS1iZ3tmbGV4OjEgMCAwJX0ucmJjLWRheS1iZysucmJjLWRheS1iZ3tib3JkZXItbGVmdDoxcHggc29saWQgI2RkZH0ucmJjLXJ0bCAucmJjLWRheS1iZysucmJjLWRheS1iZ3tib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZH0ucmJjLW92ZXJsYXl7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo1O2JvcmRlcjoxcHggc29saWQgI2U1ZTVlNTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym94LXNoYWRvdzowIDVweCAxNXB4IHJnYmEoMCwwLDAsLjI1KTtwYWRkaW5nOjEwcHh9LnJiYy1vdmVybGF5PiorKnttYXJnaW4tdG9wOjFweH0ucmJjLW92ZXJsYXktaGVhZGVye2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNWU1ZTU7bWFyZ2luOi0xMHB4IC0xMHB4IDVweCAtMTBweDtwYWRkaW5nOjJweCAxMHB4fS5yYmMtYWdlbmRhLXZpZXd7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4OjEgMCAwO292ZXJmbG93OmF1dG99LnJiYy1hZ2VuZGEtdmlldyB0YWJsZS5yYmMtYWdlbmRhLXRhYmxle3dpZHRoOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JvcmRlci1zcGFjaW5nOjA7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfS5yYmMtYWdlbmRhLXZpZXcgdGFibGUucmJjLWFnZW5kYS10YWJsZSB0Ym9keT50cj50ZHtwYWRkaW5nOjVweCAxMHB4O3ZlcnRpY2FsLWFsaWduOnRvcH0ucmJjLWFnZW5kYS12aWV3IHRhYmxlLnJiYy1hZ2VuZGEtdGFibGUgLnJiYy1hZ2VuZGEtdGltZS1jZWxse3BhZGRpbmctbGVmdDoxNXB4O3BhZGRpbmctcmlnaHQ6MTVweDt0ZXh0LXRyYW5zZm9ybTpsb3dlcmNhc2V9LnJiYy1hZ2VuZGEtdmlldyB0YWJsZS5yYmMtYWdlbmRhLXRhYmxlIHRib2R5PnRyPnRkK3Rke2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZGRkfS5yYmMtcnRsIC5yYmMtYWdlbmRhLXZpZXcgdGFibGUucmJjLWFnZW5kYS10YWJsZSB0Ym9keT50cj50ZCt0ZHtib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZH0ucmJjLWFnZW5kYS12aWV3IHRhYmxlLnJiYy1hZ2VuZGEtdGFibGUgdGJvZHk+dHIrdHJ7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZH0ucmJjLWFnZW5kYS12aWV3IHRhYmxlLnJiYy1hZ2VuZGEtdGFibGUgdGhlYWQ+dHI+dGh7cGFkZGluZzozcHggNXB4O3RleHQtYWxpZ246bGVmdDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkfS5yYmMtcnRsIC5yYmMtYWdlbmRhLXZpZXcgdGFibGUucmJjLWFnZW5kYS10YWJsZSB0aGVhZD50cj50aHt0ZXh0LWFsaWduOnJpZ2h0fS5yYmMtYWdlbmRhLXRpbWUtY2VsbHt0ZXh0LXRyYW5zZm9ybTpsb3dlcmNhc2V9LnJiYy1hZ2VuZGEtdGltZS1jZWxsIC5yYmMtY29udGludWVzLWFmdGVyOmFmdGVye2NvbnRlbnQ6XFxcIiDCu1xcXCJ9LnJiYy1hZ2VuZGEtdGltZS1jZWxsIC5yYmMtY29udGludWVzLXByaW9yOmJlZm9yZXtjb250ZW50OlxcXCLCqyBcXFwifS5yYmMtYWdlbmRhLWRhdGUtY2VsbCwucmJjLWFnZW5kYS10aW1lLWNlbGx7d2hpdGUtc3BhY2U6bm93cmFwfS5yYmMtYWdlbmRhLWV2ZW50LWNlbGx7d2lkdGg6MTAwJX0ucmJjLXRpbWUtY29sdW1ue2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLWhlaWdodDoxMDAlfS5yYmMtdGltZS1jb2x1bW4gLnJiYy10aW1lc2xvdC1ncm91cHtmbGV4OjF9LnJiYy10aW1lc2xvdC1ncm91cHtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkO21pbi1oZWlnaHQ6NDBweDtkaXNwbGF5OmZsZXg7ZmxleC1mbG93OmNvbHVtbiBub3dyYXB9LnJiYy10aW1lLWd1dHRlciwucmJjLWhlYWRlci1ndXR0ZXJ7ZmxleDpub25lfS5yYmMtbGFiZWx7cGFkZGluZzowIDVweH0ucmJjLWRheS1zbG90e3Bvc2l0aW9uOnJlbGF0aXZlfS5yYmMtZGF5LXNsb3QgLnJiYy1ldmVudHMtY29udGFpbmVye2JvdHRvbTowO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO21hcmdpbi1yaWdodDoxMHB4O3RvcDowfS5yYmMtZGF5LXNsb3QgLnJiYy1ldmVudHMtY29udGFpbmVyLnJiYy1ydGx7bGVmdDoxMHB4O3JpZ2h0OjB9LnJiYy1kYXktc2xvdCAucmJjLWV2ZW50LC5yYmMtZGF5LXNsb3QgLnJiYy1iYWNrZ3JvdW5kLWV2ZW50e2JvcmRlcjoxcHggc29saWQgIzI2NTk4NTtkaXNwbGF5OmZsZXg7bWF4LWhlaWdodDoxMDAlO21pbi1oZWlnaHQ6MjBweDtmbGV4LWZsb3c6Y29sdW1uIHdyYXA7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGV9LnJiYy1kYXktc2xvdCAucmJjLWJhY2tncm91bmQtZXZlbnR7b3BhY2l0eTouNzV9LnJiYy1kYXktc2xvdCAucmJjLWV2ZW50LWxhYmVse2ZsZXg6bm9uZTtwYWRkaW5nLXJpZ2h0OjVweDt3aWR0aDphdXRvfS5yYmMtZGF5LXNsb3QgLnJiYy1ldmVudC1jb250ZW50e3dpZHRoOjEwMCU7ZmxleDoxIDEgMDt3b3JkLXdyYXA6YnJlYWstd29yZDtsaW5lLWhlaWdodDoxO2hlaWdodDoxMDAlO21pbi1oZWlnaHQ6MWVtfS5yYmMtZGF5LXNsb3QgLnJiYy10aW1lLXNsb3R7Ym9yZGVyLXRvcDoxcHggc29saWQgI2Y3ZjdmN30ucmJjLXRpbWUtdmlldy1yZXNvdXJjZXMgLnJiYy10aW1lLWd1dHRlciwucmJjLXRpbWUtdmlldy1yZXNvdXJjZXMgLnJiYy10aW1lLWhlYWRlci1ndXR0ZXJ7cG9zaXRpb246c3RpY2t5O2xlZnQ6MDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkO3otaW5kZXg6MTA7bWFyZ2luLXJpZ2h0Oi0xcHh9LnJiYy10aW1lLXZpZXctcmVzb3VyY2VzIC5yYmMtdGltZS1oZWFkZXJ7b3ZlcmZsb3c6aGlkZGVufS5yYmMtdGltZS12aWV3LXJlc291cmNlcyAucmJjLXRpbWUtaGVhZGVyLWNvbnRlbnR7bWluLXdpZHRoOmF1dG87ZmxleDoxIDAgMDtmbGV4LWJhc2lzOjBweH0ucmJjLXRpbWUtdmlldy1yZXNvdXJjZXMgLnJiYy10aW1lLWhlYWRlci1jZWxsLXNpbmdsZS1kYXl7ZGlzcGxheTpub25lfS5yYmMtdGltZS12aWV3LXJlc291cmNlcyAucmJjLWRheS1zbG90e21pbi13aWR0aDoxNDBweH0ucmJjLXRpbWUtdmlldy1yZXNvdXJjZXMgLnJiYy1oZWFkZXIsLnJiYy10aW1lLXZpZXctcmVzb3VyY2VzIC5yYmMtZGF5LWJne3dpZHRoOjE0MHB4O2ZsZXg6MSAxIDA7ZmxleC1iYXNpczowIHB4fS5yYmMtdGltZS1oZWFkZXItY29udGVudCsucmJjLXRpbWUtaGVhZGVyLWNvbnRlbnR7bWFyZ2luLWxlZnQ6LTFweH0ucmJjLXRpbWUtc2xvdHtmbGV4OjEgMCAwfS5yYmMtdGltZS1zbG90LnJiYy1ub3d7Zm9udC13ZWlnaHQ6Ym9sZH0ucmJjLWRheS1oZWFkZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LnJiYy1zbG90LXNlbGVjdGlvbnt6LWluZGV4OjEwO3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNSk7Y29sb3I6I2ZmZjtmb250LXNpemU6NzUlO3dpZHRoOjEwMCU7cGFkZGluZzozcHh9LnJiYy1zbG90LXNlbGVjdGluZ3tjdXJzb3I6bW92ZX0ucmJjLXRpbWUtdmlld3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXg6MTt3aWR0aDoxMDAlO2JvcmRlcjoxcHggc29saWQgI2RkZDttaW4taGVpZ2h0OjB9LnJiYy10aW1lLXZpZXcgLnJiYy10aW1lLWd1dHRlcnt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1hbGlnbjpyaWdodH0ucmJjLXRpbWUtdmlldyAucmJjLWFsbGRheS1jZWxse2JveC1zaXppbmc6Y29udGVudC1ib3g7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZX0ucmJjLXRpbWUtdmlldyAucmJjLWFsbGRheS1jZWxsKy5yYmMtYWxsZGF5LWNlbGx7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkZGR9LnJiYy10aW1lLXZpZXcgLnJiYy1hbGxkYXktZXZlbnRze3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6NH0ucmJjLXRpbWUtdmlldyAucmJjLXJvd3tib3gtc2l6aW5nOmJvcmRlci1ib3g7bWluLWhlaWdodDoyMHB4fS5yYmMtdGltZS1oZWFkZXJ7ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIGF1dG87ZmxleC1kaXJlY3Rpb246cm93fS5yYmMtdGltZS1oZWFkZXIucmJjLW92ZXJmbG93aW5ne2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZH0ucmJjLXJ0bCAucmJjLXRpbWUtaGVhZGVyLnJiYy1vdmVyZmxvd2luZ3tib3JkZXItcmlnaHQtd2lkdGg6MDtib3JkZXItbGVmdDoxcHggc29saWQgI2RkZH0ucmJjLXRpbWUtaGVhZGVyPi5yYmMtcm93OmZpcnN0LWNoaWxke2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGR9LnJiYy10aW1lLWhlYWRlcj4ucmJjLXJvdy5yYmMtcm93LXJlc291cmNle2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGR9LnJiYy10aW1lLWhlYWRlci1jZWxsLXNpbmdsZS1kYXl7ZGlzcGxheTpub25lfS5yYmMtdGltZS1oZWFkZXItY29udGVudHtmbGV4OjE7ZGlzcGxheTpmbGV4O21pbi13aWR0aDowO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3JkZXItbGVmdDoxcHggc29saWQgI2RkZH0ucmJjLXJ0bCAucmJjLXRpbWUtaGVhZGVyLWNvbnRlbnR7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGR9LnJiYy10aW1lLWhlYWRlci1jb250ZW50Pi5yYmMtcm93LnJiYy1yb3ctcmVzb3VyY2V7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZDtmbGV4LXNocmluazowfS5yYmMtdGltZS1jb250ZW50e2Rpc3BsYXk6ZmxleDtmbGV4OjEgMCAwJTthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O3dpZHRoOjEwMCU7Ym9yZGVyLXRvcDoycHggc29saWQgI2RkZDtvdmVyZmxvdy15OmF1dG87cG9zaXRpb246cmVsYXRpdmV9LnJiYy10aW1lLWNvbnRlbnQ+LnJiYy10aW1lLWd1dHRlcntmbGV4Om5vbmV9LnJiYy10aW1lLWNvbnRlbnQ+KisqPip7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkZGR9LnJiYy1ydGwgLnJiYy10aW1lLWNvbnRlbnQ+KisqPip7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGR9LnJiYy10aW1lLWNvbnRlbnQ+LnJiYy1kYXktc2xvdHt3aWR0aDoxMDAlO3VzZXItc2VsZWN0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lfS5yYmMtY3VycmVudC10aW1lLWluZGljYXRvcntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjM7bGVmdDowO3JpZ2h0OjA7aGVpZ2h0OjFweDtiYWNrZ3JvdW5kLWNvbG9yOiM3NGFkMzE7cG9pbnRlci1ldmVudHM6bm9uZX0ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLXJvdy1ib2R5e3Bvc2l0aW9uOnJlbGF0aXZlfS5yYmMtYWRkb25zLWRuZCAucmJjLWFkZG9ucy1kbmQtZHJhZy1yb3d7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3JpZ2h0OjB9LnJiYy1hZGRvbnMtZG5kIC5yYmMtYWRkb25zLWRuZC1vdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMyl9LnJiYy1hZGRvbnMtZG5kIC5yYmMtZXZlbnQsLnJiYy1hZGRvbnMtZG5kIC5yYmMtZGF5LXNsb3QgLnJiYy1iYWNrZ3JvdW5kLWV2ZW50LC5yYmMtZGF5LXNsb3QgLnJiYy1hZGRvbnMtZG5kIC5yYmMtYmFja2dyb3VuZC1ldmVudHt0cmFuc2l0aW9uOm9wYWNpdHkgMTUwbXN9LnJiYy1hZGRvbnMtZG5kIC5yYmMtZXZlbnQ6aG92ZXIgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ucy1pY29uLC5yYmMtYWRkb25zLWRuZCAucmJjLWRheS1zbG90IC5yYmMtYmFja2dyb3VuZC1ldmVudDpob3ZlciAucmJjLWFkZG9ucy1kbmQtcmVzaXplLW5zLWljb24sLnJiYy1kYXktc2xvdCAucmJjLWFkZG9ucy1kbmQgLnJiYy1iYWNrZ3JvdW5kLWV2ZW50OmhvdmVyIC5yYmMtYWRkb25zLWRuZC1yZXNpemUtbnMtaWNvbiwucmJjLWFkZG9ucy1kbmQgLnJiYy1ldmVudDpob3ZlciAucmJjLWFkZG9ucy1kbmQtcmVzaXplLWV3LWljb24sLnJiYy1hZGRvbnMtZG5kIC5yYmMtZGF5LXNsb3QgLnJiYy1iYWNrZ3JvdW5kLWV2ZW50OmhvdmVyIC5yYmMtYWRkb25zLWRuZC1yZXNpemUtZXctaWNvbiwucmJjLWRheS1zbG90IC5yYmMtYWRkb25zLWRuZCAucmJjLWJhY2tncm91bmQtZXZlbnQ6aG92ZXIgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ldy1pY29ue2Rpc3BsYXk6YmxvY2t9LnJiYy1hZGRvbnMtZG5kIC5yYmMtYWRkb25zLWRuZC1kcmFnZ2VkLWV2ZW50e29wYWNpdHk6MH0ucmJjLWFkZG9ucy1kbmQucmJjLWFkZG9ucy1kbmQtaXMtZHJhZ2dpbmcgLnJiYy1ldmVudDpub3QoLnJiYy1hZGRvbnMtZG5kLWRyYWdnZWQtZXZlbnQpOm5vdCgucmJjLWFkZG9ucy1kbmQtZHJhZy1wcmV2aWV3KSwucmJjLWFkZG9ucy1kbmQucmJjLWFkZG9ucy1kbmQtaXMtZHJhZ2dpbmcgLnJiYy1kYXktc2xvdCAucmJjLWJhY2tncm91bmQtZXZlbnQ6bm90KC5yYmMtYWRkb25zLWRuZC1kcmFnZ2VkLWV2ZW50KTpub3QoLnJiYy1hZGRvbnMtZG5kLWRyYWctcHJldmlldyksLnJiYy1kYXktc2xvdCAucmJjLWFkZG9ucy1kbmQucmJjLWFkZG9ucy1kbmQtaXMtZHJhZ2dpbmcgLnJiYy1iYWNrZ3JvdW5kLWV2ZW50Om5vdCgucmJjLWFkZG9ucy1kbmQtZHJhZ2dlZC1ldmVudCk6bm90KC5yYmMtYWRkb25zLWRuZC1kcmFnLXByZXZpZXcpe29wYWNpdHk6LjV9LnJiYy1hZGRvbnMtZG5kIC5yYmMtYWRkb25zLWRuZC1yZXNpemFibGV7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ucy1hbmNob3J7d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmNlbnRlcjtwb3NpdGlvbjphYnNvbHV0ZX0ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ucy1hbmNob3I6Zmlyc3QtY2hpbGR7dG9wOjB9LnJiYy1hZGRvbnMtZG5kIC5yYmMtYWRkb25zLWRuZC1yZXNpemUtbnMtYW5jaG9yOmxhc3QtY2hpbGR7Ym90dG9tOjB9LnJiYy1hZGRvbnMtZG5kIC5yYmMtYWRkb25zLWRuZC1yZXNpemUtbnMtYW5jaG9yIC5yYmMtYWRkb25zLWRuZC1yZXNpemUtbnMtaWNvbntkaXNwbGF5Om5vbmU7Ym9yZGVyLXRvcDozcHggZG91YmxlO21hcmdpbjowIGF1dG87d2lkdGg6MTBweDtjdXJzb3I6bnMtcmVzaXplfS5yYmMtYWRkb25zLWRuZCAucmJjLWFkZG9ucy1kbmQtcmVzaXplLWV3LWFuY2hvcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NHB4O2JvdHRvbTowfS5yYmMtYWRkb25zLWRuZCAucmJjLWFkZG9ucy1kbmQtcmVzaXplLWV3LWFuY2hvcjpmaXJzdC1jaGlsZHtsZWZ0OjB9LnJiYy1hZGRvbnMtZG5kIC5yYmMtYWRkb25zLWRuZC1yZXNpemUtZXctYW5jaG9yOmxhc3QtY2hpbGR7cmlnaHQ6MH0ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ldy1hbmNob3IgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ldy1pY29ue2Rpc3BsYXk6bm9uZTtib3JkZXItbGVmdDozcHggZG91YmxlO21hcmdpbi10b3A6YXV0bzttYXJnaW4tYm90dG9tOmF1dG87aGVpZ2h0OjEwcHg7Y3Vyc29yOmV3LXJlc2l6ZX0uaGVpZ2h0NjAwe3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDo2MDBweH0uZXhhbXBsZXMtLWhlYWRlciwuZG5kT3V0c2lkZVNvdXJjZUV4YW1wbGV7bWFyZ2luOjAgNDBweDt0ZXh0LWFsaWduOmNlbnRlcn0uZG5kT3V0c2lkZVNvdXJjZUV4YW1wbGV7ZGlzcGxheTpmbGV4fS5kbmRPdXRzaWRlU291cmNlRXhhbXBsZT4uaW5uZXJ7ZGlzcGxheTpmbGV4O2ZsZXg6MTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwfS5kbmRPdXRzaWRlU291cmNlRXhhbXBsZT4uaW5uZXIgaDR7Y29sb3I6Z3JheTt3aWR0aDoxMDAlfS5kbmRPdXRzaWRlU291cmNlRXhhbXBsZT4uaW5uZXIgZGl2W2RyYWdnYWJsZV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JvcmRlcjoycHggc29saWQgZ3JheTtib3JkZXItcmFkaXVzOjRweDt3aWR0aDoxMDBweDttYXJnaW46MTBweDtjdXJzb3I6Z3JhYn0uZG5kT3V0c2lkZVNvdXJjZUV4YW1wbGU+LmlubmVyIGlucHV0W3R5cGU9Y2hlY2tib3hde21hcmdpbi1yaWdodDo1cHh9LmNhcmR7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjowO3BhZGRpbmc6MjRweDtib3JkZXItcmFkaXVzOjJweDttYXJnaW4tYm90dG9tOjIwcHg7Ym94LXNoYWRvdzowIDJweCAycHggMCByZ2JhKDAsMCwwLC4xNCksMCAzcHggMXB4IC0ycHggcmdiYSgwLDAsMCwuMiksMCAxcHggNXB4IDAgcmdiYSgwLDAsMCwuMTIpfS5pc0RyYWdnYWJsZXtjdXJzb3I6Z3JhYiAhaW1wb3J0YW50fS5ub25EcmFnZ2FibGUsLm5vblJlc2l6YWJsZXtiYWNrZ3JvdW5kLWNvbG9yOiNiZWQ3ZWMgIWltcG9ydGFudDtjb2xvcjojMDAwICFpbXBvcnRhbnR9XCIsIFwiXCJdKTtcbi8vIEV4cG9ydHNcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cztcbiIsIi8vIEltcG9ydHNcbnZhciBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gPSByZXF1aXJlKFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKTtcbmV4cG9ydHMgPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oZmFsc2UpO1xuLy8gTW9kdWxlXG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCIucG93ZGVyQmx1ZSwjbXlfc2NoZWR1bGVyLC50dWVzZGF5e2JhY2tncm91bmQtY29sb3I6I2IwZTBlNjtjb2xvcjojMDAwfS5kYXJrR3JlZW57YmFja2dyb3VuZC1jb2xvcjojMDA2NDAwO2NvbG9yOiNmZmZ9LnNsb3REZWZhdWx0e2JhY2tncm91bmQtY29sb3I6XFxcIiNGQUYwRTZcXFwiO2NvbG9yOlxcXCJibGFja1xcXCJ9I215X3NjaGVkdWxlcntwYWRkaW5nOi41ZW07Ym9yZGVyOjFweCBzb2xpZCBibHVlfVwiLCBcIlwiXSk7XG4vLyBFeHBvcnRzXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHM7XG4iLCIvLyBJbXBvcnRzXG52YXIgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fID0gcmVxdWlyZShcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIik7XG5leHBvcnRzID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKGZhbHNlKTtcbi8vIE1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLnJlbmRlcmluZy1tb2R1bGVfX3NwZWNpYWxEYXktLTNuTldpe2JhY2tncm91bmQtY29sb3I6I2ZlY31cIiwgXCJcIl0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0cy5sb2NhbHMgPSB7XG5cdFwic3BlY2lhbERheVwiOiBcInJlbmRlcmluZy1tb2R1bGVfX3NwZWNpYWxEYXktLTNuTldpXCJcbn07XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHM7XG4iLCJ2YXIgbWFwID0ge1xuXHRcIi4vYWZcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FmLmpzXCIsXG5cdFwiLi9hZi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYWYuanNcIixcblx0XCIuL2FyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci5qc1wiLFxuXHRcIi4vYXItZHpcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWR6LmpzXCIsXG5cdFwiLi9hci1kei5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItZHouanNcIixcblx0XCIuL2FyLWt3XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1rdy5qc1wiLFxuXHRcIi4vYXIta3cuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWt3LmpzXCIsXG5cdFwiLi9hci1seVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbHkuanNcIixcblx0XCIuL2FyLWx5LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1seS5qc1wiLFxuXHRcIi4vYXItbWFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLW1hLmpzXCIsXG5cdFwiLi9hci1tYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbWEuanNcIixcblx0XCIuL2FyLXBzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1wcy5qc1wiLFxuXHRcIi4vYXItcHMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXBzLmpzXCIsXG5cdFwiLi9hci1zYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItc2EuanNcIixcblx0XCIuL2FyLXNhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1zYS5qc1wiLFxuXHRcIi4vYXItdG5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXRuLmpzXCIsXG5cdFwiLi9hci10bi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItdG4uanNcIixcblx0XCIuL2FyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci5qc1wiLFxuXHRcIi4vYXpcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2F6LmpzXCIsXG5cdFwiLi9hei5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXouanNcIixcblx0XCIuL2JlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZS5qc1wiLFxuXHRcIi4vYmUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JlLmpzXCIsXG5cdFwiLi9iZ1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmcuanNcIixcblx0XCIuL2JnLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZy5qc1wiLFxuXHRcIi4vYm1cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JtLmpzXCIsXG5cdFwiLi9ibS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm0uanNcIixcblx0XCIuL2JuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi5qc1wiLFxuXHRcIi4vYm4tYmRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLWJkLmpzXCIsXG5cdFwiLi9ibi1iZC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm4tYmQuanNcIixcblx0XCIuL2JuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi5qc1wiLFxuXHRcIi4vYm9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JvLmpzXCIsXG5cdFwiLi9iby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm8uanNcIixcblx0XCIuL2JyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ici5qc1wiLFxuXHRcIi4vYnIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JyLmpzXCIsXG5cdFwiLi9ic1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnMuanNcIixcblx0XCIuL2JzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9icy5qc1wiLFxuXHRcIi4vY2FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NhLmpzXCIsXG5cdFwiLi9jYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY2EuanNcIixcblx0XCIuL2NzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jcy5qc1wiLFxuXHRcIi4vY3MuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NzLmpzXCIsXG5cdFwiLi9jdlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3YuanNcIixcblx0XCIuL2N2LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jdi5qc1wiLFxuXHRcIi4vY3lcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N5LmpzXCIsXG5cdFwiLi9jeS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3kuanNcIixcblx0XCIuL2RhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kYS5qc1wiLFxuXHRcIi4vZGEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RhLmpzXCIsXG5cdFwiLi9kZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUuanNcIixcblx0XCIuL2RlLWF0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1hdC5qc1wiLFxuXHRcIi4vZGUtYXQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWF0LmpzXCIsXG5cdFwiLi9kZS1jaFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtY2guanNcIixcblx0XCIuL2RlLWNoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1jaC5qc1wiLFxuXHRcIi4vZGUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLmpzXCIsXG5cdFwiLi9kdlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZHYuanNcIixcblx0XCIuL2R2LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kdi5qc1wiLFxuXHRcIi4vZWxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VsLmpzXCIsXG5cdFwiLi9lbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZWwuanNcIixcblx0XCIuL2VuLWF1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1hdS5qc1wiLFxuXHRcIi4vZW4tYXUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWF1LmpzXCIsXG5cdFwiLi9lbi1jYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tY2EuanNcIixcblx0XCIuL2VuLWNhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1jYS5qc1wiLFxuXHRcIi4vZW4tZ2JcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWdiLmpzXCIsXG5cdFwiLi9lbi1nYi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tZ2IuanNcIixcblx0XCIuL2VuLWllXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pZS5qc1wiLFxuXHRcIi4vZW4taWUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWllLmpzXCIsXG5cdFwiLi9lbi1pbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWwuanNcIixcblx0XCIuL2VuLWlsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pbC5qc1wiLFxuXHRcIi4vZW4taW5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWluLmpzXCIsXG5cdFwiLi9lbi1pbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taW4uanNcIixcblx0XCIuL2VuLW56XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1uei5qc1wiLFxuXHRcIi4vZW4tbnouanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLW56LmpzXCIsXG5cdFwiLi9lbi1zZ1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tc2cuanNcIixcblx0XCIuL2VuLXNnLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1zZy5qc1wiLFxuXHRcIi4vZW9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VvLmpzXCIsXG5cdFwiLi9lby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW8uanNcIixcblx0XCIuL2VzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy5qc1wiLFxuXHRcIi4vZXMtZG9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLWRvLmpzXCIsXG5cdFwiLi9lcy1kby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtZG8uanNcIixcblx0XCIuL2VzLW14XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy1teC5qc1wiLFxuXHRcIi4vZXMtbXguanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLW14LmpzXCIsXG5cdFwiLi9lcy11c1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtdXMuanNcIixcblx0XCIuL2VzLXVzLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy11cy5qc1wiLFxuXHRcIi4vZXMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLmpzXCIsXG5cdFwiLi9ldFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXQuanNcIixcblx0XCIuL2V0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldC5qc1wiLFxuXHRcIi4vZXVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V1LmpzXCIsXG5cdFwiLi9ldS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXUuanNcIixcblx0XCIuL2ZhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mYS5qc1wiLFxuXHRcIi4vZmEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZhLmpzXCIsXG5cdFwiLi9maVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmkuanNcIixcblx0XCIuL2ZpLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maS5qc1wiLFxuXHRcIi4vZmlsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maWwuanNcIixcblx0XCIuL2ZpbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmlsLmpzXCIsXG5cdFwiLi9mb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZm8uanNcIixcblx0XCIuL2ZvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mby5qc1wiLFxuXHRcIi4vZnJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLmpzXCIsXG5cdFwiLi9mci1jYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2EuanNcIixcblx0XCIuL2ZyLWNhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jYS5qc1wiLFxuXHRcIi4vZnItY2hcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNoLmpzXCIsXG5cdFwiLi9mci1jaC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2guanNcIixcblx0XCIuL2ZyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci5qc1wiLFxuXHRcIi4vZnlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2Z5LmpzXCIsXG5cdFwiLi9meS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnkuanNcIixcblx0XCIuL2dhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nYS5qc1wiLFxuXHRcIi4vZ2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dhLmpzXCIsXG5cdFwiLi9nZFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2QuanNcIixcblx0XCIuL2dkLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nZC5qc1wiLFxuXHRcIi4vZ2xcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dsLmpzXCIsXG5cdFwiLi9nbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2wuanNcIixcblx0XCIuL2dvbS1kZXZhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nb20tZGV2YS5qc1wiLFxuXHRcIi4vZ29tLWRldmEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dvbS1kZXZhLmpzXCIsXG5cdFwiLi9nb20tbGF0blwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWxhdG4uanNcIixcblx0XCIuL2dvbS1sYXRuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nb20tbGF0bi5qc1wiLFxuXHRcIi4vZ3VcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2d1LmpzXCIsXG5cdFwiLi9ndS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ3UuanNcIixcblx0XCIuL2hlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oZS5qc1wiLFxuXHRcIi4vaGUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hlLmpzXCIsXG5cdFwiLi9oaVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGkuanNcIixcblx0XCIuL2hpLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oaS5qc1wiLFxuXHRcIi4vaHJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hyLmpzXCIsXG5cdFwiLi9oci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHIuanNcIixcblx0XCIuL2h1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9odS5qc1wiLFxuXHRcIi4vaHUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h1LmpzXCIsXG5cdFwiLi9oeS1hbVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHktYW0uanNcIixcblx0XCIuL2h5LWFtLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oeS1hbS5qc1wiLFxuXHRcIi4vaWRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lkLmpzXCIsXG5cdFwiLi9pZC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaWQuanNcIixcblx0XCIuL2lzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pcy5qc1wiLFxuXHRcIi4vaXMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lzLmpzXCIsXG5cdFwiLi9pdFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQuanNcIixcblx0XCIuL2l0LWNoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC1jaC5qc1wiLFxuXHRcIi4vaXQtY2guanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LWNoLmpzXCIsXG5cdFwiLi9pdC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQuanNcIixcblx0XCIuL2phXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qYS5qc1wiLFxuXHRcIi4vamEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2phLmpzXCIsXG5cdFwiLi9qdlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvanYuanNcIixcblx0XCIuL2p2LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qdi5qc1wiLFxuXHRcIi4va2FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2thLmpzXCIsXG5cdFwiLi9rYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2EuanNcIixcblx0XCIuL2trXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ray5qc1wiLFxuXHRcIi4va2suanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2trLmpzXCIsXG5cdFwiLi9rbVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva20uanNcIixcblx0XCIuL2ttLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbS5qc1wiLFxuXHRcIi4va25cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tuLmpzXCIsXG5cdFwiLi9rbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva24uanNcIixcblx0XCIuL2tvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rby5qc1wiLFxuXHRcIi4va28uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tvLmpzXCIsXG5cdFwiLi9rdVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3UuanNcIixcblx0XCIuL2t1LWttclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3Uta21yLmpzXCIsXG5cdFwiLi9rdS1rbXIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t1LWttci5qc1wiLFxuXHRcIi4va3UuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t1LmpzXCIsXG5cdFwiLi9reVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3kuanNcIixcblx0XCIuL2t5LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9reS5qc1wiLFxuXHRcIi4vbGJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xiLmpzXCIsXG5cdFwiLi9sYi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbGIuanNcIixcblx0XCIuL2xvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sby5qc1wiLFxuXHRcIi4vbG8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xvLmpzXCIsXG5cdFwiLi9sdFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHQuanNcIixcblx0XCIuL2x0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdC5qc1wiLFxuXHRcIi4vbHZcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x2LmpzXCIsXG5cdFwiLi9sdi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHYuanNcIixcblx0XCIuL21lXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tZS5qc1wiLFxuXHRcIi4vbWUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21lLmpzXCIsXG5cdFwiLi9taVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWkuanNcIixcblx0XCIuL21pLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9taS5qc1wiLFxuXHRcIi4vbWtcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21rLmpzXCIsXG5cdFwiLi9tay5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWsuanNcIixcblx0XCIuL21sXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tbC5qc1wiLFxuXHRcIi4vbWwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21sLmpzXCIsXG5cdFwiLi9tblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbW4uanNcIixcblx0XCIuL21uLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tbi5qc1wiLFxuXHRcIi4vbXJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21yLmpzXCIsXG5cdFwiLi9tci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXIuanNcIixcblx0XCIuL21zXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tcy5qc1wiLFxuXHRcIi4vbXMtbXlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLW15LmpzXCIsXG5cdFwiLi9tcy1teS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMtbXkuanNcIixcblx0XCIuL21zLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tcy5qc1wiLFxuXHRcIi4vbXRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL210LmpzXCIsXG5cdFwiLi9tdC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXQuanNcIixcblx0XCIuL215XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9teS5qc1wiLFxuXHRcIi4vbXkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL215LmpzXCIsXG5cdFwiLi9uYlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmIuanNcIixcblx0XCIuL25iLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uYi5qc1wiLFxuXHRcIi4vbmVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25lLmpzXCIsXG5cdFwiLi9uZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmUuanNcIixcblx0XCIuL25sXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubC5qc1wiLFxuXHRcIi4vbmwtYmVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLWJlLmpzXCIsXG5cdFwiLi9ubC1iZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwtYmUuanNcIixcblx0XCIuL25sLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubC5qc1wiLFxuXHRcIi4vbm5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25uLmpzXCIsXG5cdFwiLi9ubi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbm4uanNcIixcblx0XCIuL29jLWxuY1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvb2MtbG5jLmpzXCIsXG5cdFwiLi9vYy1sbmMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL29jLWxuYy5qc1wiLFxuXHRcIi4vcGEtaW5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BhLWluLmpzXCIsXG5cdFwiLi9wYS1pbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGEtaW4uanNcIixcblx0XCIuL3BsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wbC5qc1wiLFxuXHRcIi4vcGwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BsLmpzXCIsXG5cdFwiLi9wdFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQuanNcIixcblx0XCIuL3B0LWJyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC1ici5qc1wiLFxuXHRcIi4vcHQtYnIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LWJyLmpzXCIsXG5cdFwiLi9wdC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQuanNcIixcblx0XCIuL3JvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9yby5qc1wiLFxuXHRcIi4vcm8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3JvLmpzXCIsXG5cdFwiLi9ydVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcnUuanNcIixcblx0XCIuL3J1LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ydS5qc1wiLFxuXHRcIi4vc2RcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NkLmpzXCIsXG5cdFwiLi9zZC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2QuanNcIixcblx0XCIuL3NlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZS5qc1wiLFxuXHRcIi4vc2UuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NlLmpzXCIsXG5cdFwiLi9zaVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2kuanNcIixcblx0XCIuL3NpLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zaS5qc1wiLFxuXHRcIi4vc2tcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NrLmpzXCIsXG5cdFwiLi9zay5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2suanNcIixcblx0XCIuL3NsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zbC5qc1wiLFxuXHRcIi4vc2wuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NsLmpzXCIsXG5cdFwiLi9zcVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3EuanNcIixcblx0XCIuL3NxLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcS5qc1wiLFxuXHRcIi4vc3JcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLmpzXCIsXG5cdFwiLi9zci1jeXJsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zci1jeXJsLmpzXCIsXG5cdFwiLi9zci1jeXJsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zci1jeXJsLmpzXCIsXG5cdFwiLi9zci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3IuanNcIixcblx0XCIuL3NzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcy5qc1wiLFxuXHRcIi4vc3MuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NzLmpzXCIsXG5cdFwiLi9zdlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3YuanNcIixcblx0XCIuL3N2LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdi5qc1wiLFxuXHRcIi4vc3dcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N3LmpzXCIsXG5cdFwiLi9zdy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3cuanNcIixcblx0XCIuL3RhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90YS5qc1wiLFxuXHRcIi4vdGEuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RhLmpzXCIsXG5cdFwiLi90ZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGUuanNcIixcblx0XCIuL3RlLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZS5qc1wiLFxuXHRcIi4vdGV0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZXQuanNcIixcblx0XCIuL3RldC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGV0LmpzXCIsXG5cdFwiLi90Z1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGcuanNcIixcblx0XCIuL3RnLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90Zy5qc1wiLFxuXHRcIi4vdGhcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RoLmpzXCIsXG5cdFwiLi90aC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGguanNcIixcblx0XCIuL3RrXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ay5qc1wiLFxuXHRcIi4vdGsuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RrLmpzXCIsXG5cdFwiLi90bC1waFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGwtcGguanNcIixcblx0XCIuL3RsLXBoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bC1waC5qc1wiLFxuXHRcIi4vdGxoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bGguanNcIixcblx0XCIuL3RsaC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGxoLmpzXCIsXG5cdFwiLi90clwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHIuanNcIixcblx0XCIuL3RyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ci5qc1wiLFxuXHRcIi4vdHpsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90emwuanNcIixcblx0XCIuL3R6bC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHpsLmpzXCIsXG5cdFwiLi90em1cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS5qc1wiLFxuXHRcIi4vdHptLWxhdG5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bS1sYXRuLmpzXCIsXG5cdFwiLi90em0tbGF0bi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLWxhdG4uanNcIixcblx0XCIuL3R6bS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLmpzXCIsXG5cdFwiLi91Zy1jblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWctY24uanNcIixcblx0XCIuL3VnLWNuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91Zy1jbi5qc1wiLFxuXHRcIi4vdWtcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VrLmpzXCIsXG5cdFwiLi91ay5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWsuanNcIixcblx0XCIuL3VyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ci5qc1wiLFxuXHRcIi4vdXIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VyLmpzXCIsXG5cdFwiLi91elwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXouanNcIixcblx0XCIuL3V6LWxhdG5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LWxhdG4uanNcIixcblx0XCIuL3V6LWxhdG4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LWxhdG4uanNcIixcblx0XCIuL3V6LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei5qc1wiLFxuXHRcIi4vdmlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3ZpLmpzXCIsXG5cdFwiLi92aS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdmkuanNcIixcblx0XCIuL3gtcHNldWRvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS94LXBzZXVkby5qc1wiLFxuXHRcIi4veC1wc2V1ZG8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3gtcHNldWRvLmpzXCIsXG5cdFwiLi95b1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveW8uanNcIixcblx0XCIuL3lvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS95by5qc1wiLFxuXHRcIi4vemgtY25cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWNuLmpzXCIsXG5cdFwiLi96aC1jbi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtY24uanNcIixcblx0XCIuL3poLWhrXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1oay5qc1wiLFxuXHRcIi4vemgtaGsuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWhrLmpzXCIsXG5cdFwiLi96aC1tb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtbW8uanNcIixcblx0XCIuL3poLW1vLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1tby5qc1wiLFxuXHRcIi4vemgtdHdcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLXR3LmpzXCIsXG5cdFwiLi96aC10dy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtdHcuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZSBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC5cXFxcLy4qJFwiOyIsInZhciBhcGkgPSByZXF1aXJlKFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiKTtcbiAgICAgICAgICAgIHZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGVzLnNjc3NcIik7XG5cbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50Ll9fZXNNb2R1bGUgPyBjb250ZW50LmRlZmF1bHQgOiBjb250ZW50O1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbiAgICAgICAgICAgIH1cblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsInZhciBhcGkgPSByZXF1aXJlKFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiKTtcbiAgICAgICAgICAgIHZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGVzLnNjc3NcIik7XG5cbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50Ll9fZXNNb2R1bGUgPyBjb250ZW50LmRlZmF1bHQgOiBjb250ZW50O1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbiAgICAgICAgICAgIH1cblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsInZhciBhcGkgPSByZXF1aXJlKFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiKTtcbiAgICAgICAgICAgIHZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vY3VzdG9tVG9vbGJhci5zY3NzXCIpO1xuXG4gICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5fX2VzTW9kdWxlID8gY29udGVudC5kZWZhdWx0IDogY29udGVudDtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG4gICAgICAgICAgICB9XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxubW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJ2YXIgYXBpID0gcmVxdWlyZShcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIik7XG4gICAgICAgICAgICB2YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL21haW4uc2Nzc1wiKTtcblxuICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuX19lc01vZHVsZSA/IGNvbnRlbnQuZGVmYXVsdCA6IGNvbnRlbnQ7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuICAgICAgICAgICAgfVxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbm1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHMgfHwge307IiwidmFyIGFwaSA9IHJlcXVpcmUoXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCIpO1xuICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9wcm9wR2V0dGVyLnNjc3NcIik7XG5cbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50Ll9fZXNNb2R1bGUgPyBjb250ZW50LmRlZmF1bHQgOiBjb250ZW50O1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbiAgICAgICAgICAgIH1cblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsInZhciBhcGkgPSByZXF1aXJlKFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiKTtcbiAgICAgICAgICAgIHZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbOF0udXNlWzFdIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3JlbmRlcmluZy5tb2R1bGUuc2Nzc1wiKTtcblxuICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuX19lc01vZHVsZSA/IGNvbnRlbnQuZGVmYXVsdCA6IGNvbnRlbnQ7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuICAgICAgICAgICAgfVxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbm1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHMgfHwge307IiwidmFyIG1hcCA9IHtcblx0XCIuL0NhbGVuZGFyLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvQ2FsZW5kYXIuc3Rvcmllcy5qc1wiLFxuXHRcIi4vRHJhZ0FuZERyb3Auc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9EcmFnQW5kRHJvcC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9EdXJhdGlvbnMuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9EdXJhdGlvbnMuc3Rvcmllcy5qc1wiLFxuXHRcIi4vTGF5b3V0LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvTGF5b3V0LnN0b3JpZXMuanNcIixcblx0XCIuL1RpbWVzbG90cy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL1RpbWVzbG90cy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9hZGRvbnMvZHJhZ0FuZERyb3AvYmFzaWMuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvYmFzaWMuc3Rvcmllcy5qc1wiLFxuXHRcIi4vYWRkb25zL2RyYWdBbmREcm9wL291dHNpZGUuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3Avb3V0c2lkZS5zdG9yaWVzLmpzXCIsXG5cdFwiLi9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvZHJhZ0Zyb21PdXRzaWRlSXRlbS5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9kcmFnRnJvbU91dHNpZGVJdGVtLnN0b3JpZXMuanNcIixcblx0XCIuL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9kcmFnZ2FibGVBY2Nlc3Nvci5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9kcmFnZ2FibGVBY2Nlc3Nvci5zdG9yaWVzLmpzXCIsXG5cdFwiLi9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvb25EcmFnT3Zlci5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9vbkRyYWdPdmVyLnN0b3JpZXMuanNcIixcblx0XCIuL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9vbkRyYWdTdGFydC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9vbkRyYWdTdGFydC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvb25Ecm9wRnJvbU91dHNpZGUuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvb25Ecm9wRnJvbU91dHNpZGUuc3Rvcmllcy5qc1wiLFxuXHRcIi4vYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL29uRXZlbnREcm9wLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL29uRXZlbnREcm9wLnN0b3JpZXMuanNcIixcblx0XCIuL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9vbkV2ZW50UmVzaXplLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL29uRXZlbnRSZXNpemUuc3Rvcmllcy5qc1wiLFxuXHRcIi4vYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL3Jlc2l6YWJsZS5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9yZXNpemFibGUuc3Rvcmllcy5qc1wiLFxuXHRcIi4vYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL3Jlc2l6YWJsZUFjY2Vzc29yLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL3Jlc2l6YWJsZUFjY2Vzc29yLnN0b3JpZXMuanNcIixcblx0XCIuL2FkZG9ucy9kcmFnQW5kRHJvcC9yZXNvdXJjZS5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9yZXNvdXJjZS5zdG9yaWVzLmpzXCIsXG5cdFwiLi9kZW1vcy9iYWNrZ3JvdW5kRXZlbnRzLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvZGVtb3MvYmFja2dyb3VuZEV2ZW50cy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9kZW1vcy9iYXNpYy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2RlbW9zL2Jhc2ljLnN0b3JpZXMuanNcIixcblx0XCIuL2RlbW9zL2N1bHR1cmVzLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvZGVtb3MvY3VsdHVyZXMuc3Rvcmllcy5qc1wiLFxuXHRcIi4vZGVtb3MvY3VzdG9tVmlldy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2RlbW9zL2N1c3RvbVZpZXcuc3Rvcmllcy5qc1wiLFxuXHRcIi4vZGVtb3MvZGF5anMuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9kZW1vcy9kYXlqcy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9kZW1vcy9sdXhvbi5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2RlbW9zL2x1eG9uLnN0b3JpZXMuanNcIixcblx0XCIuL2RlbW9zL25vT3ZlcmxhcC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2RlbW9zL25vT3ZlcmxhcC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9kZW1vcy9wb3B1cC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2RlbW9zL3BvcHVwLnN0b3JpZXMuanNcIixcblx0XCIuL2RlbW9zL3JlbmRlcmluZy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2RlbW9zL3JlbmRlcmluZy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9kZW1vcy9yZXNvdXJjZS5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2RlbW9zL3Jlc291cmNlLnN0b3JpZXMuanNcIixcblx0XCIuL2RlbW9zL3NlbGVjdGFibGUuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9kZW1vcy9zZWxlY3RhYmxlLnN0b3JpZXMuanNcIixcblx0XCIuL2RlbW9zL3RpbWVzbG90cy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2RlbW9zL3RpbWVzbG90cy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9kZW1vcy90aW1lem9uZXMuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9kZW1vcy90aW1lem9uZXMuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvYWxsRGF5QWNjZXNzb3Iuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9hbGxEYXlBY2Nlc3Nvci5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9hbGxEYXlNYXhSb3dzLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvYWxsRGF5TWF4Um93cy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9iYWNrZ3JvdW5kRXZlbnRzLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvYmFja2dyb3VuZEV2ZW50cy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9jb21wb25lbnRzLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvY29tcG9uZW50cy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9jdWx0dXJlLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvY3VsdHVyZS5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9kYXRlLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvZGF0ZS5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9kYXlMYXlvdXRBbGdvcml0aG0uc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9kYXlMYXlvdXRBbGdvcml0aG0uc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvZGF5UHJvcEdldHRlci5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2RheVByb3BHZXR0ZXIuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvZGVmYXVsdERhdGUuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9kZWZhdWx0RGF0ZS5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9kZWZhdWx0Vmlldy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2RlZmF1bHRWaWV3LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2RyaWxsZG93blZpZXcuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9kcmlsbGRvd25WaWV3LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2VsZW1lbnRQcm9wcy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2VsZW1lbnRQcm9wcy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9lbmRBY2Nlc3Nvci5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2VuZEFjY2Vzc29yLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2V2ZW50UHJvcEdldHRlci5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2V2ZW50UHJvcEdldHRlci5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9ldmVudHMuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9ldmVudHMuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvZm9ybWF0cy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHMuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvZm9ybWF0c0FnZW5kYURhdGVGb3JtYXQuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzQWdlbmRhRGF0ZUZvcm1hdC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9mb3JtYXRzQWdlbmRhSGVhZGVyRm9ybWF0LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0FnZW5kYUhlYWRlckZvcm1hdC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9mb3JtYXRzQWdlbmRhVGltZUZvcm1hdC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNBZ2VuZGFUaW1lRm9ybWF0LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2Zvcm1hdHNBZ2VuZGFUaW1lUmFuZ2VGb3JtYXQuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzQWdlbmRhVGltZVJhbmdlRm9ybWF0LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2Zvcm1hdHNEYXRlRm9ybWF0LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0RhdGVGb3JtYXQuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvZm9ybWF0c0RheUZvcm1hdC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNEYXlGb3JtYXQuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvZm9ybWF0c0RheUhlYWRlckZvcm1hdC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNEYXlIZWFkZXJGb3JtYXQuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvZm9ybWF0c0RheVJhbmdlSGVhZGVyRm9ybWF0LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0RheVJhbmdlSGVhZGVyRm9ybWF0LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2Zvcm1hdHNFdmVudFRpbWVSYW5nZUVuZEZvcm1hdC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNFdmVudFRpbWVSYW5nZUVuZEZvcm1hdC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9mb3JtYXRzRXZlbnRUaW1lUmFuZ2VGb3JtYXQuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzRXZlbnRUaW1lUmFuZ2VGb3JtYXQuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvZm9ybWF0c0V2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzRXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9mb3JtYXRzTW9udGhIZWFkZXJGb3JtYXQuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzTW9udGhIZWFkZXJGb3JtYXQuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvZm9ybWF0c1NlbGVjdFJhbmdlRm9ybWF0LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvZm9ybWF0c1NlbGVjdFJhbmdlRm9ybWF0LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2Zvcm1hdHNUaW1lR3V0dGVyRm9ybWF0LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvZm9ybWF0c1RpbWVHdXR0ZXJGb3JtYXQuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvZm9ybWF0c1dlZWtkYXlGb3JtYXQuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzV2Vla2RheUZvcm1hdC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9nZXREcmlsbGRvd25WaWV3LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvZ2V0RHJpbGxkb3duVmlldy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9nZXROb3cuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9nZXROb3cuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvbGVuZ3RoLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvbGVuZ3RoLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2xvY2FsaXplci5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2xvY2FsaXplci5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9sb25nUHJlc3NUaHJlc2hvbGQuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9sb25nUHJlc3NUaHJlc2hvbGQuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvbWF4LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvbWF4LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL21lc3NhZ2VzLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvbWVzc2FnZXMuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvbWluLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvbWluLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL29uRG91YmxlQ2xpY2tFdmVudC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL29uRG91YmxlQ2xpY2tFdmVudC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9vbkRyaWxsRG93bi5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL29uRHJpbGxEb3duLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL29uS2V5UHJlc3NFdmVudC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL29uS2V5UHJlc3NFdmVudC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9vbk5hdmlnYXRlLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvb25OYXZpZ2F0ZS5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9vblJhbmdlQ2hhbmdlLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvb25SYW5nZUNoYW5nZS5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9vblNlbGVjdEV2ZW50LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvb25TZWxlY3RFdmVudC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9vblNlbGVjdFNsb3Quc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9vblNlbGVjdFNsb3Quc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvb25TZWxlY3Rpbmcuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9vblNlbGVjdGluZy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9vblNob3dNb3JlLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvb25TaG93TW9yZS5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9vblZpZXcuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9vblZpZXcuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvcG9wdXAuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9wb3B1cC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9wb3B1cE9mZnNldC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL3BvcHVwT2Zmc2V0LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL3Jlc291cmNlSWRBY2Nlc3Nvci5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL3Jlc291cmNlSWRBY2Nlc3Nvci5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9yZXNvdXJjZVRpdGxlQWNjZXNzb3Iuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9yZXNvdXJjZVRpdGxlQWNjZXNzb3Iuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvcmVzb3VyY2VzLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvcmVzb3VyY2VzLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL3J0bC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL3J0bC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9zY3JvbGxUb1RpbWUuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9zY3JvbGxUb1RpbWUuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvc2VsZWN0YWJsZS5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL3NlbGVjdGFibGUuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvc2VsZWN0ZWQuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9zZWxlY3RlZC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9zaG93QWxsRXZlbnRzLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvc2hvd0FsbEV2ZW50cy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9zaG93TXVsdGlEYXlUaW1lcy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL3Nob3dNdWx0aURheVRpbWVzLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL3Nsb3RHcm91cFByb3BHZXR0ZXIuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9zbG90R3JvdXBQcm9wR2V0dGVyLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL3Nsb3RQcm9wR2V0dGVyLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvc2xvdFByb3BHZXR0ZXIuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvc3RhcnRBY2Nlc3Nvci5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL3N0YXJ0QWNjZXNzb3Iuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvc3RlcC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL3N0ZXAuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvdGltZXNsb3RzLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvdGltZXNsb3RzLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL3RpdGxlQWNjZXNzb3Iuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy90aXRsZUFjY2Vzc29yLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL3Rvb2xiYXIuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy90b29sYmFyLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL3Rvb2x0aXBBY2Nlc3Nvci5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL3Rvb2x0aXBBY2Nlc3Nvci5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy92aWV3LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvdmlldy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy92aWV3cy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL3ZpZXdzLnN0b3JpZXMuanNcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi9zdG9yaWVzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLig/Oig/Ol4lN0NcXFxcLyU3Qyg/Oig/Oig/JTIxKD86XiU3Q1xcXFwvKVxcXFwuKS4pKj8pXFxcXC8pKD8lMjFcXFxcLikoPz0uKVteL10qP1xcXFwuc3Rvcmllc1xcXFwuKGpzJTdDanN4JTdDdHMlN0N0c3gpKSRcIjsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vQWJvdXRCaWdDYWxlbmRhci5zdG9yaWVzLm1keFwiOiBcIi4vc3Rvcmllcy9BYm91dEJpZ0NhbGVuZGFyLnN0b3JpZXMubWR4XCIsXG5cdFwiLi9BYm91dEV4YW1wbGVzLnN0b3JpZXMubWR4XCI6IFwiLi9zdG9yaWVzL0Fib3V0RXhhbXBsZXMuc3Rvcmllcy5tZHhcIixcblx0XCIuL2FkZG9ucy9hZGRPbnMuc3Rvcmllcy5tZHhcIjogXCIuL3N0b3JpZXMvYWRkb25zL2FkZE9ucy5zdG9yaWVzLm1keFwiLFxuXHRcIi4vYWRkb25zL2RyYWdBbmREcm9wL0ludHJvZHVjdGlvbi5zdG9yaWVzLm1keFwiOiBcIi4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvSW50cm9kdWN0aW9uLnN0b3JpZXMubWR4XCIsXG5cdFwiLi9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvQVBJLnN0b3JpZXMubWR4XCI6IFwiLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9BUEkuc3Rvcmllcy5tZHhcIixcblx0XCIuL2RlbW9zL2RyYWdBbmREcm9wLnN0b3JpZXMubWR4XCI6IFwiLi9zdG9yaWVzL2RlbW9zL2RyYWdBbmREcm9wLnN0b3JpZXMubWR4XCIsXG5cdFwiLi9ndWlkZXMvQ3VzdG9tU3R5bGluZy5zdG9yaWVzLm1keFwiOiBcIi4vc3Rvcmllcy9ndWlkZXMvQ3VzdG9tU3R5bGluZy5zdG9yaWVzLm1keFwiLFxuXHRcIi4vZ3VpZGVzL0N1c3RvbVZpZXcuc3Rvcmllcy5tZHhcIjogXCIuL3N0b3JpZXMvZ3VpZGVzL0N1c3RvbVZpZXcuc3Rvcmllcy5tZHhcIixcblx0XCIuL2d1aWRlcy9EYXRlcy5zdG9yaWVzLm1keFwiOiBcIi4vc3Rvcmllcy9ndWlkZXMvRGF0ZXMuc3Rvcmllcy5tZHhcIixcblx0XCIuL2d1aWRlcy9UaW1lem9uZXMuc3Rvcmllcy5tZHhcIjogXCIuL3N0b3JpZXMvZ3VpZGVzL1RpbWV6b25lcy5zdG9yaWVzLm1keFwiLFxuXHRcIi4vZ3VpZGVzL2xvY2FsaXplci5zdG9yaWVzLm1keFwiOiBcIi4vc3Rvcmllcy9ndWlkZXMvbG9jYWxpemVyLnN0b3JpZXMubWR4XCIsXG5cdFwiLi9wcm9wcy9BUEkuc3Rvcmllcy5tZHhcIjogXCIuL3N0b3JpZXMvcHJvcHMvQVBJLnN0b3JpZXMubWR4XCJcbn07XG5cblxuZnVuY3Rpb24gd2VicGFja0NvbnRleHQocmVxKSB7XG5cdHZhciBpZCA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpO1xuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhpZCk7XG59XG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKSB7XG5cdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8obWFwLCByZXEpKSB7XG5cdFx0dmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgcmVxICsgXCInXCIpO1xuXHRcdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0XHR0aHJvdyBlO1xuXHR9XG5cdHJldHVybiBtYXBbcmVxXTtcbn1cbndlYnBhY2tDb250ZXh0LmtleXMgPSBmdW5jdGlvbiB3ZWJwYWNrQ29udGV4dEtleXMoKSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhtYXApO1xufTtcbndlYnBhY2tDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmU7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tDb250ZXh0O1xud2VicGFja0NvbnRleHQuaWQgPSBcIi4vc3RvcmllcyBzeW5jIHJlY3Vyc2l2ZSBeXFxcXC4oPzooPzpeJTdDXFxcXC8lN0MoPzooPzooPyUyMSg/Ol4lN0NcXFxcLylcXFxcLikuKSo/KVxcXFwvKSg/JTIxXFxcXC4pKD89LilbXi9dKj9cXFxcLnN0b3JpZXNcXFxcLm1keCkkXCI7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfZnJhbWV3b3JrSW1wb3J0UGF0aCA9IHJlcXVpcmUoXCJAc3Rvcnlib29rL3JlYWN0XCIpO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tdW5yZXNvbHZlZCAqL1xuKDAsIF9mcmFtZXdvcmtJbXBvcnRQYXRoLmNvbmZpZ3VyZSkoW3JlcXVpcmUuY29udGV4dCgnLi9zdG9yaWVzJywgdHJ1ZSwgL15cXC4oPzooPzpefFxcL3woPzooPzooPyEoPzpefFxcLylcXC4pLikqPylcXC8pKD8hXFwuKSg/PS4pW14vXSo/XFwuc3Rvcmllc1xcLm1keCkkLykscmVxdWlyZS5jb250ZXh0KCcuL3N0b3JpZXMnLCB0cnVlLCAvXlxcLig/Oig/Ol58XFwvfCg/Oig/Oig/ISg/Ol58XFwvKVxcLikuKSo/KVxcLykoPyFcXC4pKD89LilbXi9dKj9cXC5zdG9yaWVzXFwuKGpzfGpzeHx0c3x0c3gpKSQvKV0sIG1vZHVsZSwgZmFsc2UpOyJdLCJuYW1lcyI6WyJwYXJhbWV0ZXJzIiwiYWN0aW9ucyIsImFyZ1R5cGVzUmVnZXgiLCJjb250cm9scyIsIm1hdGNoZXJzIiwiY29sb3IiLCJkYXRlIiwic3RvcnlTb3J0Iiwib3JkZXIiLCJ2aWV3TW9kZSIsIl9fbmFtZWRFeHBvcnRzT3JkZXIiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJrZXkiLCJ2YWx1ZSIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJjb25maWciLCJmb3JFYWNoIiwiYWRkQXJncyIsImFkZEFyZ1R5cGVzIiwiZGVjb3JhdG9yIiwiYWRkRGVjb3JhdG9yIiwibG9hZGVyIiwiYWRkTG9hZGVyIiwiYWRkUGFyYW1ldGVycyIsIl9vYmplY3RTcHJlYWQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJlbmhhbmNlciIsImFkZEFyZ1R5cGVzRW5oYW5jZXIiLCJhZGRBcmdzRW5oYW5jZXIiLCJzZXRHbG9iYWxSZW5kZXIiLCJ2IiwiY29uc29sZSIsImxvZyIsInRpdGxlIiwiY29tcG9uZW50IiwiQ2FsZW5kYXIiLCJkZWNvcmF0b3JzIiwiU3RvcnkiLCJfanN4IiwiY2xhc3NOYW1lIiwiY2hpbGRyZW4iLCJUZW1wbGF0ZSIsImFyZ3MiLCJCYXNlQ2FsZW5kYXIiLCJhc3NpZ24iLCJkaXNwbGF5TmFtZSIsIkNvbXBsZXhEYXlWaWV3TGF5b3V0IiwiYmluZCIsInN0b3J5TmFtZSIsImRlZmF1bHRWaWV3IiwiVmlld3MiLCJEQVkiLCJkZWZhdWx0RGF0ZSIsIkRhdGUiLCJldmVudHMiLCJjcmVhdGVFdmVudHMiLCJzdGVwIiwiVGltZUd1dHRlciIsIkN1c3RvbVRpbWVHdXR0ZXJIZWFkZXIiLCJwb3B1cCIsImRlbW9FdmVudHMiLCJvblNlbGVjdEV2ZW50IiwiYWN0aW9uIiwiV0VFSyIsInZpZXdzIiwiY29tcG9uZW50cyIsInRpbWVHdXR0ZXJIZWFkZXIiLCJDdXN0b21UaW1lR3V0dGVyV3JhcHBlciIsInRpbWVHdXR0ZXJXcmFwcGVyIiwiY3VzdG9tQ29tcG9uZW50cyIsIkN1c3RvbURhdGVDZWxsV3JhcHBlciIsIk1PTlRIIiwiZGF0ZUNlbGxXcmFwcGVyIiwiQ3VzdG9tVGltZVNsb3RXcmFwcGVyIiwidGltZVNsb3RXcmFwcGVyIiwiQ3VzdG9tRXZlbnRXcmFwcGVyIiwiZXZlbnRXcmFwcGVyIiwiQ3VzdG9tTm9BZ2VuZGFFdmVudHNMYWJlbCIsIkFHRU5EQSIsIm1lc3NhZ2VzIiwibm9FdmVudHNJblJhbmdlIiwiQ3VzdG9tRGF5Q29sdW1uV3JhcHBlciIsInJlc291cmNlRXZlbnRzIiwicmVzb3VyY2VzIiwicmVzb3VyY2VBY2Nlc3NvciIsInJlc291cmNlSWRBY2Nlc3NvciIsInJlc291cmNlVGl0bGVBY2Nlc3NvciIsImRheUNvbHVtbldyYXBwZXIiLCJkb2NzIiwiZGVzY3JpcHRpb24iLCJzdG9yeSIsInN0b3J5U291cmNlIiwiRHJhZ0FuZERyb3BDYWxlbmRhciIsIkRyYWdnYWJsZUFuZFJlc2l6YWJsZSIsInJlc2l6YWJsZSIsIm9uRXZlbnREcm9wIiwib25FdmVudFJlc2l6ZSIsIkN1c3RvbVN0ZXBzQW5kVGltZXNsb3RzIiwic3RlcHMiLCJ0aW1lc2xvdHMiLCJXaXRoTXVsdGlEYXlUaW1lcyIsInNob3dNdWx0aURheVRpbWVzIiwiV2l0aEN1c3RvbURhdGVDZWxsV3JhcHBlciIsIldpdGhDdXN0b21UaW1lc2xvdFdyYXBwZXIiLCJXaXRoQ3VzdG9tRXZlbnRXcmFwcGVyIiwiRHJhZ2dhYmxlTXVsdGlwbGVSZXNvdXJjZXMiLCJsb2NhbGl6ZXJzIiwiZ2xvYmFsaXplIiwiZ2xvYmFsaXplTG9jYWxpemVyIiwibW9tZW50IiwibW9tZW50TG9jYWxpemVyIiwibHV4b24iLCJsdXhvbkxvY2FsaXplciIsIkRhdGVUaW1lIiwiZmlyc3REYXlPZldlZWsiLCJEcmFnZ2FibGVDYWxlbmRhciIsIndpdGhEcmFnQW5kRHJvcCIsIl9yZWYiLCJfcmVmJGxvY2FsaXplciIsImxvY2FsaXplciIsImxvYyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIkRheWxpZ2h0U2F2aW5nc1N0YXJ0cyIsImFyZ1R5cGVzIiwib3B0aW9ucyIsImNvbnRyb2wiLCJ0eXBlIiwibWluIiwidG9EYXRlIiwibWF4Iiwic3RhcnQiLCJlbmQiLCJhbGxEYXkiLCJEYXlsaWdodFNhdmluZ3NTdGFydHNBZnRlcjJBbSIsIkRheWxpZ2h0U2F2aW5nc0VuZHMiLCJEYXlsaWdodFNhdmluZ3NFbmRzQWZ0ZXIyQW0iLCJFdmVudExheW91dCIsIkZpcnN0T2ZXZWVrQWxsRGF5IiwiRW5kT2ZXZWVrQWxsRGF5IiwiRXZlbnRBdFN0YXJ0T2ZXZWVrIiwiYWRkIiwic3VidHJhY3QiLCJFdmVudEF0RW5kT2ZXZWVrIiwiRXZlbnRzT25BQ29uc3RyYWluZWREYXlDb2x1bW4iLCJOb0R1cmF0aW9uIiwiRGF5U3BhbiIsIlplcm9EdXJhdGlvbk9kZGl0aWVzIiwiaWQiLCJaZXJvRHVyYXRpb25PdmVybGFwIiwiZGF5TGF5b3V0QWxnb3JpdGhtIiwic2Nyb2xsVG9UaW1lIiwiT3ZlcmxhcHBpbmdCYWNrZ3JvdW5kRXZlbnRzT3ZlcmxhcCIsImJhY2tncm91bmRFdmVudHMiLCJPdmVybGFwcGluZ0JhY2tncm91bmRFdmVudHNOb092ZXJsYXAiLCJfX2RvY2dlbkluZm8iLCJTVE9SWUJPT0tfUkVBQ1RfQ0xBU1NFUyIsIm5hbWUiLCJkb2NnZW5JbmZvIiwicGF0aCIsIlNlbGVjdGFibGVTdGVwMTV4NFNsb3QiLCJzZWxlY3RhYmxlIiwib25TZWxlY3RTbG90IiwiU2VsZWN0YWJsZVN0ZXAxMHg2U2xvdCIsIlNlbGVjdGFibGVTdGVwNXg2U2xvdCIsIlNlbGVjdGFibGUzU2xvdCIsIkRyYWdBbmREcm9wIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJteUV2ZW50cyIsInNldE15RXZlbnRzIiwibW92ZUV2ZW50IiwidXNlQ2FsbGJhY2siLCJfcmVmMiIsImV2ZW50IiwiX3JlZjIkaXNBbGxEYXkiLCJpc0FsbERheSIsImRyb3BwZWRPbkFsbERheVNsb3QiLCJwcmV2IiwiX3ByZXYkZmluZCIsImV4aXN0aW5nIiwiZmluZCIsImV2IiwiZmlsdGVyZWQiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJyZXNpemVFdmVudCIsIl9yZWYzIiwiX3ByZXYkZmluZDIiLCJ1c2VNZW1vIiwiX2pzeHMiLCJGcmFnbWVudCIsIkRlbW9MaW5rIiwiZmlsZU5hbWUiLCJwYWdlIiwiRXhhbXBsZTEiLCJCYXNpYyIsIkV4YW1wbGUzIiwibGF5b3V0UHJvcHMiLCJNRFhDb250ZW50IiwicHJvcHMiLCJtZHgiLCJfZXh0ZW5kcyIsIm1keFR5cGUiLCJwYXJlbnROYW1lIiwiaXNNRFhDb21wb25lbnQiLCJEcmFnRnJvbU91dHNpZGVJdGVtIiwiRHJhZ2dhYmxlQWNjZXNzb3IiLCJPbkRyYWdPdmVyIiwiT25EcmFnU3RhcnQiLCJMaW5rVG8iLCJraW5kIiwiT25Ecm9wRnJvbU91dHNpZGUiLCJPbkV2ZW50RHJvcCIsIk9uRXZlbnRSZXNpemUiLCJSZXNpemFibGUiLCJSZXNpemFibGVBY2Nlc3NvciIsInJlc291cmNlSWQiLCJyZXNvdXJjZU1hcCIsInJlc291cmNlVGl0bGUiLCJEbkRSZXNvdXJjZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiY29weUV2ZW50Iiwic2V0Q29weUV2ZW50IiwidG9nZ2xlQ29weUV2ZW50IiwidmFsIiwiQXJyYXkiLCJpc0FycmF5IiwiU2V0Iiwic291cmNlUmVzb3VyY2UiLCJfdXNlTWVtbyIsInN0eWxlIiwibWFyZ2luIiwiY2hlY2tlZCIsIm9uQ2hhbmdlIiwiRXhhbXBsZTIiLCJhbGxWaWV3cyIsIm1hcCIsImsiLCJCYWNrZ3JvdW5kRXZlbnRzQ2FsZW5kYXIiLCJkYXRlcyIsIkV4YW1wbGUxMCIsIkJhY2tncm91bmRDYWxlbmRhciIsInJlcXVpcmUiLCJjdWx0dXJlcyIsImxhbmciLCJlbiIsImVzIiwid2VlayIsIndvcmtfd2VlayIsImRheSIsIm1vbnRoIiwicHJldmlvdXMiLCJuZXh0IiwidG9kYXkiLCJhZ2VuZGEiLCJzaG93TW9yZSIsInRvdGFsIiwiZnIiLCJDdWx0dXJlc0RlbW8iLCJjdWx0dXJlIiwic2V0Q3VsdHVyZSIsInJpZ2h0VG9MZWZ0Iiwic2V0UmlnaHRUb0xlZnQiLCJjdWx0dXJlT25DbGljayIsIkxheW91dCIsImRpcmVjdGlvbiIsImFsaWduIiwid2lkdGgiLCJkaXNwbGF5IiwiZGVmYXVsdFZhbHVlIiwiYyIsImlkeCIsInJ0bCIsIkV4YW1wbGU1IiwiQ3VsdHVyZURlbW8iLCJNeVdlZWsiLCJfcmVmJG1heCIsImVuZE9mIiwiX3JlZiRtaW4iLCJzdGFydE9mIiwiX3JlZiRzY3JvbGxUb1RpbWUiLCJjdXJyUmFuZ2UiLCJyYW5nZSIsIlRpbWVHcmlkIiwiZXZlbnRPZmZzZXQiLCJDdXN0b21WaWV3IiwiX3JlZjQiLCJjdXJyZW50IiwibHRlIiwibmF2aWdhdGUiLCJOYXZpZ2F0ZSIsIlBSRVZJT1VTIiwiTkVYVCIsInRvTG9jYWxlRGF0ZVN0cmluZyIsIkV4YW1wbGU5IiwiZGF5anMiLCJ0aW1lem9uZSIsImRqTG9jYWxpemVyIiwiZGF5anNMb2NhbGl6ZXIiLCJDb2xvcmVkRGF0ZUNlbGxXcmFwcGVyIiwiUmVhY3QiLCJvbmx5IiwiYmFja2dyb3VuZENvbG9yIiwiRGF5anMiLCJfb2JqZWN0RGVzdHJ1Y3R1cmluZ0VtcHR5IiwiRGF5anNMb2NhbGl6ZXIiLCJkZWZhdWx0VFoiLCJsb2NhbCIsInpvbmVOYW1lIiwiTHV4b24iLCJzZXRUaW1lem9uZSIsIlNldHRpbmdzIiwiZGVmYXVsdFpvbmUiLCJzdHIiLCJEYXRlVGltZU9iaiIsImZyb21JU08iLCJ0b0pTRGF0ZSIsImdldE5vdyIsInVzZUVmZmVjdCIsIlRpbWV6b25lU2VsZWN0IiwiTHV4b25Mb2NhbGl6ZXIiLCJDcmVhdGVFdmVudFdpdGhOb092ZXJsYXAiLCJfcmVmJGRheUxheW91dEFsZ29yaXQiLCJzZXRFdmVudHMiLCJoYW5kbGVTZWxlY3RTbG90Iiwid2luZG93IiwicHJvbXB0IiwiaGFuZGxlU2VsZWN0RXZlbnQiLCJhbGVydCIsIlBvcHVwIiwiRXhhbXBsZTYiLCJQb3B1cERlbW8iLCJFdmVudCIsImRlc2MiLCJFdmVudEFnZW5kYSIsImN1c3RvbURheVByb3BHZXR0ZXIiLCJnZXREYXRlIiwic3R5bGVzIiwiYm9yZGVyIiwiY3VzdG9tU2xvdFByb3BHZXR0ZXIiLCJSZW5kZXJpbmciLCJkYXlQcm9wR2V0dGVyIiwic2xvdFByb3BHZXR0ZXIiLCJFeGFtcGxlOCIsIlJlc291cmNlIiwiRXhhbXBsZTExIiwiU2VsZWN0YWJsZSIsIlRpbWVzbG90cyIsIkV4YW1wbGU3IiwiZ3Vlc3MiLCJUaW1lem9uZXMiLCJzZXREZWZhdWx0IiwibW9tZW50T2JqIiwiRXhhbXBsZTQiLCJUaW1lem9uZUNhbGVuZGFyIiwiQWxsRGF5QWNjZXNzb3IiLCJhY2Nlc3NvclN0b3J5QXJncyIsIm1Mb2NhbGl6ZXIiLCJBbGxEYXlNYXhSb3dzIiwiYWxsRGF5RXZlbnRzIiwiYWxsRGF5TWF4Um93cyIsIkJhY2tHcm91bmRFdmVudHMiLCJDYW52YXMiLCJWaWV3TmFtZXNHcm91cCIsInZpZXdOYW1lcyIsInZpZXciLCJvblZpZXciLCJjbHN4Iiwib25DbGljayIsIkN1c3RvbVRvb2xiYXIiLCJsYWJlbCIsIm9uTmF2aWdhdGUiLCJUT0RBWSIsIkNvbXBvbmVudHMiLCJ0b29sYmFyIiwiQ3VsdHVyZSIsIkNhbERhdGUiLCJzZXREYXRlIiwibmV3RGF0ZSIsIkRheUxheW91dEFsZ29yaXRobSIsIkRheVByb3BHZXR0ZXIiLCJEZWZhdWx0RGF0ZSIsIkRlZmF1bHRWaWV3IiwiZHJpbGxkb3duVmlldyIsIkRyaWxsZG93blZpZXciLCJFbGVtZW50UHJvcHMiLCJlbGVtZW50UHJvcHMiLCJFbmRBY2Nlc3NvciIsIkV2ZW50UHJvcEdldHRlciIsImV2ZW50UHJvcEdldHRlciIsImlzU2VsZWN0ZWQiLCJob3VyIiwiaW5jbHVkZXMiLCJFdmVudHMiLCJGb3JtYXRzIiwiZm9ybWF0cyIsImRhdGVGb3JtYXQiLCJ3ZWVrZGF5Rm9ybWF0IiwiZm9ybWF0IiwiZGF5Rm9ybWF0IiwidGltZUd1dHRlckZvcm1hdCIsIkZvcm1hdHNBZ2VuZERhdGVGb3JtYXQiLCJhZ2VuZGFEYXRlRm9ybWF0IiwiRm9ybWF0c0FnZW5kSGVhZGVyRm9ybWF0IiwiYWdlbmRhSGVhZGVyRm9ybWF0IiwiRm9ybWF0c0FnZW5kVGltZUZvcm1hdCIsImFnZW5kYVRpbWVGb3JtYXQiLCJGb3JtYXRzQWdlbmRhVGltZVJhbmdlRm9ybWF0IiwiYWdlbmRhVGltZVJhbmdlRm9ybWF0IiwiRm9ybWF0c0RhdGVGb3JtYXQiLCJGb3JtYXRzRGF5Rm9ybWF0IiwiRm9ybWF0c0RheUhlYWRlckZvcm1hdCIsImRheUhlYWRlckZvcm1hdCIsIkZvcm1hdHNEYXlSYW5nZUhlYWRlckZvcm1hdCIsImRheVJhbmdlSGVhZGVyRm9ybWF0IiwiRm9ybWF0c0V2ZW50VGltZVJhbmdlRW5kRm9ybWF0IiwiZXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQiLCJGb3JtYXRzRXZlbnRUaW1lUmFuZ2VGb3JtYXQiLCJldmVudFRpbWVSYW5nZUZvcm1hdCIsIkZvcm1hdHNFdmVudFRpbWVSYW5nZVN0YXJ0Rm9ybWF0IiwiZXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdCIsIkZvcm1hdHNNb250aEhlYWRlckZvcm1hdCIsIm1vbnRoSGVhZGVyRm9ybWF0IiwiRm9ybWF0c1NlbGVjdFJhbmdlRm9ybWF0Iiwic2VsZWN0UmFuZ2VGb3JtYXQiLCJGb3JtYXRzVGltZUd1dHRlckZvcm1hdCIsIkZvcm1hdHNXZWVrZGF5Rm9ybWF0IiwiR2V0RHJpbGxkb3duVmlldyIsImdldERyaWxsZG93blZpZXciLCJ0YXJnZXREYXRlIiwiY3VycmVudFZpZXdOYW1lIiwiY29uZmlndXJlZFZpZXdOYW1lcyIsIkdldE5vdyIsIkxlbmd0aCIsImhlaWdodCIsIkxvY2FsaXplciIsImxvbmdQcmVzc1RocmVzaG9sZCIsIkxvbmdQcmVzc1RocmVzaG9sZCIsIk1heCIsIk1lc3NhZ2VzIiwiTWluIiwiYnVpbGRNZXNzYWdlIiwiY2FsRXZlbnQiLCJldmVudE5hbWUiLCJKU09OIiwic3RyaW5naWZ5IiwiT25Eb3VibGVDbGlja0V2ZW50IiwiY2xpY2tSZWYiLCJ1c2VSZWYiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0Iiwib25Eb3VibGVDbGlja0V2ZW50IiwiT25EcmlsbERvd24iLCJzZXRWaWV3IiwibmV3VmlldyIsIm9uRHJpbGxEb3duIiwiT25LZXlQcmVzc0V2ZW50IiwicHJlc3NSZWYiLCJvbktleVByZXNzRXZlbnQiLCJrZXlwcmVzc0V2ZW50IiwiYWx0S2V5IiwiY3RybEtleSIsInNoaWZ0S2V5IiwibWV0YUtleSIsInByZWZpeCIsIk9uTmF2aWdhdGUiLCJPblJhbmdlQ2hhbmdlIiwib25SYW5nZUNoYW5nZSIsInRvTG9jYWxlU3RyaW5nIiwiT25TZWxlY3RFdmVudCIsIk9uU2VsZWN0U2xvdCIsInNsb3RJbmZvIiwiT25TZWxlY3RpbmciLCJvblNlbGVjdGluZyIsIk9uU2hvd01vcmUiLCJvblNob3dNb3JlIiwiY2FsRXZlbnRzIiwiT25WaWV3IiwiUG9wdXBPZmZzZXQiLCJwb3B1cE9mZnNldCIsIngiLCJ5IiwiUmVzb3VyY2VJZEFjY2Vzc29yIiwicmVzb3VyY2VBY2Nlc3NvclN0b3J5QXJncyIsIlJlc291cmNlVGl0bGVBY2Nlc3NvciIsInJlc291cmNlRGF0YSIsImxpc3QiLCJSZXNvdXJjZXMiLCJSaWdodFRvTGVmdCIsIlNjcm9sbFRvVGltZSIsIlNlbGVjdGVkIiwic2VsZWN0ZWQiLCJzZXRTZWxlY3RlZCIsInNob3dBbGxFdmVudHMiLCJTaG93QWxsRXZlbnRzIiwiU2hvd011bHRpRGF5VGltZXMiLCJTbG90R3JvdXBQcm9wR2V0dGVyIiwic2xvdEdyb3VwUHJvcEdldHRlciIsIm1pbkhlaWdodCIsIlNsb3RQcm9wR2V0dGVyIiwiU3RhcnRBY2Nlc3NvciIsIlN0ZXAiLCJUaXRsZUFjY2Vzc29yIiwiVG9vbGJhciIsIlRvb2x0aXBBY2Nlc3NvciIsIlZpZXciLCJDYWxWaWV3cyIsIk5vb3BXcmFwcGVyIiwiQmFja2dyb3VuZENlbGxzIiwiX1JlYWN0JENvbXBvbmVudCIsImNvbnRleHQiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9jYWxsU3VwZXIiLCJzdGF0ZSIsInNlbGVjdGluZyIsImNvbnRhaW5lclJlZiIsImNyZWF0ZVJlZiIsIl9pbmhlcml0cyIsIl9jcmVhdGVDbGFzcyIsImNvbXBvbmVudERpZE1vdW50IiwidGhpcyIsIl9zZWxlY3RhYmxlIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJfdGVhcmRvd25TZWxlY3RhYmxlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwicmVuZGVyIiwiX3RoaXMkcHJvcHMiLCJnZXR0ZXJzIiwiY3VycmVudERhdGUiLCJXcmFwcGVyIiwiX3RoaXMkc3RhdGUiLCJzdGFydElkeCIsImVuZElkeCIsInJlZiIsImluZGV4IiwiX2dldHRlcnMkZGF5UHJvcCIsImRheVByb3AiLCJpc1NhbWVEYXRlIiwibmVxIiwiX3RoaXMyIiwibm9kZSIsInNlbGVjdG9yIiwiX3NlbGVjdG9yIiwiU2VsZWN0aW9uIiwiY29udGFpbmVyIiwic2VsZWN0b3JDbGlja3NIYW5kbGVyIiwicG9pbnQiLCJhY3Rpb25UeXBlIiwiaXNFdmVudCIsImlzU2hvd01vcmUiLCJyb3dCb3giLCJnZXRCb3VuZHNGb3JOb2RlIiwiX3RoaXMyJHByb3BzIiwicG9pbnRJbkJveCIsImN1cnJlbnRDZWxsIiwiZ2V0U2xvdEF0WCIsIl9zZWxlY3RTbG90IiwiYm94IiwiX2luaXRpYWwiLCJzZXRTdGF0ZSIsIm9uIiwiX3RoaXMyJHByb3BzMiIsIm5vdGlmeSIsIm9uU2VsZWN0U3RhcnQiLCJub2RlQm94IiwiX2RhdGVDZWxsU2VsZWN0aW9uIiwiZGF0ZUNlbGxTZWxlY3Rpb24iLCJib3VuZHMiLCJvblNlbGVjdEVuZCIsInRlYXJkb3duIiwiaXNTZWdtZW50SW5TbG90Iiwic2VnIiwic2xvdCIsImxlZnQiLCJyaWdodCIsImV2ZW50c0luU2xvdCIsInNlZ21lbnRzIiwiRXZlbnRFbmRpbmdSb3ciLCJzbG90cyIsInNsb3RNZXRyaWNzIiwicm93U2VnbWVudHMiLCJldmVudExldmVscyIsImxldmVscyIsImxhc3RFbmQiLCJyb3ciLCJzcGFuIiwiZ2FwIiwiTWF0aCIsImNhblJlbmRlclNsb3RFdmVudCIsImNvbnRlbnQiLCJFdmVudFJvd01peGluIiwicmVuZGVyRXZlbnQiLCJyZW5kZXJTcGFuIiwicmVuZGVyU2hvd01vcmUiLCJldmVyeSIsInMiLCJfdGhpcyRwcm9wczIiLCJnZXRFdmVudHNGb3JTbG90IiwicmVtYWluaW5nRXZlbnRzIiwiY291bnQiLCJlIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJkZWZhdWx0UHJvcHMiLCJTY3JvbGxhYmxlV2Vla1dyYXBwZXIiLCJpc0VxdWFsIiwiYSIsImIiLCJnZXRTbG90TWV0cmljcyIsIm1lbW9pemUiLCJtYXhSb3dzIiwibWluUm93cyIsImFjY2Vzc29ycyIsIl9lbmRPZlJhbmdlIiwiZW5kT2ZSYW5nZSIsImRhdGVSYW5nZSIsImZpcnN0IiwibGFzdCIsImV2dCIsImV2ZW50U2VnbWVudHMiLCJfZXZlbnRMZXZlbHMiLCJleHRyYSIsIm1pbkV2ZW50Um93cyIsImNsb25lIiwibWV0cmljcyIsImdldERhdGVGb3JTbG90Iiwic2xvdE51bWJlciIsImdldFNsb3RGb3JEYXRlIiwiciIsImNvbnRpbnVlc1ByaW9yIiwiY29udGludWVzQWZ0ZXIiLCJEYXRlQ29udGVudFJvdyIsIl9sZW4iLCJfa2V5Iiwic2xpY2UiLCJoYW5kbGVTaG93TW9yZSIsImNlbGwiLCJxc2EiLCJnZXRDb250YWluZXIiLCJyZW5kZXJIZWFkaW5nQ2VsbCIsIl90aGlzJHByb3BzMyIsInJlbmRlckhlYWRlciIsInJlbmRlckR1bW15IiwiX3RoaXMkcHJvcHM0IiwiaGVhZGluZ1Jvd1JlZiIsImV2ZW50Um93UmVmIiwiRGF0ZVNsb3RNZXRyaWNzIiwiZ2V0Um93TGltaXQiLCJfdGhpcyRoZWFkaW5nUm93UmVmIiwiZXZlbnRIZWlnaHQiLCJnZXRIZWlnaHQiLCJoZWFkaW5nSGVpZ2h0IiwiZXZlbnRTcGFjZSIsImZsb29yIiwiX3RoaXMkcHJvcHM1IiwicmVuZGVyRm9yTWVhc3VyZSIsIm9uU2VsZWN0Iiwib25Eb3VibGVDbGljayIsIm9uS2V5UHJlc3MiLCJTY3JvbGxhYmxlV2Vla0NvbXBvbmVudCIsIldlZWtXcmFwcGVyIiwid2Vla1dyYXBwZXIiLCJldmVudFJvd1Byb3BzIiwicm9sZSIsInNlZ3MiLCJFdmVudFJvdyIsIkluZmluaXR5IiwiRXZlbnRDZWxsIiwiX3RoaXMkcHJvcHMkY29tcG9uZW50IiwiRXZlbnRXcmFwcGVyIiwic2xvdFN0YXJ0Iiwic2xvdEVuZCIsInRvb2x0aXAiLCJzaG93QXNBbGxEYXkiLCJkaWZmIiwiY2VpbCIsInVzZXJQcm9wcyIsImV2ZW50UHJvcCIsInVuZGVmaW5lZCIsIm9uS2V5RG93biIsInJlZHVjZSIsImxpIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiaXNSZXF1aXJlZCIsImxlbiIsInBlciIsImFicyIsIldlYmtpdEZsZXhCYXNpcyIsImZsZXhCYXNpcyIsIm1heFdpZHRoIiwiSGVhZGVyIiwiUG9wIiwicG9zaXRpb24iLCJzaG93IiwiaGFuZGxlRHJhZ1N0YXJ0IiwicG9wcGVyUmVmIiwib2Zmc2V0IiwidXNlQ2xpY2tPdXRzaWRlIiwiY2FsbGJhY2siLCJoYW5kbGVDbGlja091dHNpZGUiLCJjb250YWlucyIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ1c2VMYXlvdXRFZmZlY3QiLCJfZ2V0UG9zaXRpb24iLCJnZXRQb3NpdGlvbiIsIl9nZXRPZmZzZXQiLCJnZXRPZmZzZXQiLCJ0b3AiLCJfZ2V0T2Zmc2V0MiIsImNUb3AiLCJjTGVmdCIsImNXaWR0aCIsImNIZWlnaHQiLCJfZ2V0T2Zmc2V0MyIsImJXaWR0aCIsImJIZWlnaHQiLCJ2aWV3Qm90dG9tIiwidmlld1JpZ2h0IiwiYm90dG9tIiwidG9wT2Zmc2V0IiwibGVmdE9mZnNldCIsIm1pbldpZHRoIiwibHQiLCJndGUiLCJkcmFnZ2FibGUiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ0VuZCIsIkNhbE92ZXJsYXkiLCJfcmVmJHBvcHVwT2Zmc2V0Iiwib3ZlcmxheSIsImhhbmRsZURvdWJsZUNsaWNrRXZlbnQiLCJoYW5kbGVLZXlQcmVzc0V2ZW50Iiwib25IaWRlIiwib3ZlcmxheURpc3BsYXkiLCJpc05hTiIsIk92ZXJsYXkiLCJyb290Q2xvc2UiLCJmbGlwIiwicGxhY2VtZW50IiwiUG9wT3ZlcmxheSIsImhhbmRsZXIiLCJsaXN0ZW4iLCJwYXNzaXZlIiwiZ2V0RXZlbnROb2RlRnJvbVBvaW50IiwiY2xpZW50WCIsImNsaWVudFkiLCJlbGVtZW50RnJvbVBvaW50IiwiY2xvc2VzdCIsImdldFNob3dNb3JlTm9kZUZyb21Qb2ludCIsImdldEV2ZW50Q29vcmRpbmF0ZXMiLCJ0b3VjaGVzIiwicGFnZVgiLCJwYWdlWSIsIl9yZWYzJGdsb2JhbCIsImdsb2JhbCIsIl9yZWYzJGxvbmdQcmVzc1RocmVzaCIsIl9yZWYzJHZhbGlkQ29udGFpbmVycyIsInZhbGlkQ29udGFpbmVycyIsIl9pbml0aWFsRXZlbnQiLCJpc0RldGFjaGVkIiwiZ2xvYmFsTW91c2UiLCJfbGlzdGVuZXJzIiwiY3JlYXRlIiwiX2hhbmRsZUluaXRpYWxFdmVudCIsIl9oYW5kbGVNb3ZlRXZlbnQiLCJfaGFuZGxlVGVybWluYXRpbmdFdmVudCIsIl9rZXlMaXN0ZW5lciIsIl9kcm9wRnJvbU91dHNpZGVMaXN0ZW5lciIsIl9kcmFnT3ZlckZyb21PdXRzaWRlTGlzdGVuZXIiLCJfcmVtb3ZlVG91Y2hNb3ZlV2luZG93TGlzdGVuZXIiLCJfcmVtb3ZlS2V5RG93bkxpc3RlbmVyIiwiX3JlbW92ZUtleVVwTGlzdGVuZXIiLCJfcmVtb3ZlRHJvcEZyb21PdXRzaWRlTGlzdGVuZXIiLCJfcmVtb3ZlRHJhZ092ZXJGcm9tT3V0c2lkZUxpc3RlbmVyIiwiX2FkZEluaXRpYWxFdmVudExpc3RlbmVyIiwiaGFuZGxlcnMiLCJyZW1vdmUiLCJpbmRleE9mIiwic3BsaWNlIiwiZW1pdCIsInJlc3VsdCIsImZuIiwiX2luaXRpYWxFdmVudERhdGEiLCJfc2VsZWN0UmVjdCIsIl9sYXN0Q2xpY2tEYXRhIiwiX3JlbW92ZUluaXRpYWxFdmVudExpc3RlbmVyIiwiX3JlbW92ZUVuZExpc3RlbmVyIiwiX29uRXNjTGlzdGVuZXIiLCJfcmVtb3ZlTW92ZUxpc3RlbmVyIiwib2JqZWN0c0NvbGxpZGUiLCJpdGVtcyIsIl9hZGRMb25nUHJlc3NMaXN0ZW5lciIsImluaXRpYWxFdmVudCIsInRpbWVyIiwicmVtb3ZlVG91Y2hNb3ZlTGlzdGVuZXIiLCJyZW1vdmVUb3VjaEVuZExpc3RlbmVyIiwiaGFuZGxlVG91Y2hTdGFydCIsImNsZWFudXAiLCJyZW1vdmVUb3VjaFN0YXJ0TGlzdGVuZXIiLCJyZW1vdmVNb3VzZURvd25MaXN0ZW5lciIsIl9nZXRFdmVudENvb3JkaW5hdGVzIiwiX2dldEV2ZW50Q29vcmRpbmF0ZXMyIiwib2Zmc2V0RGF0YSIsIl9nZXRFdmVudENvb3JkaW5hdGVzMyIsIndoaWNoIiwiYnV0dG9uIiwiaXNPdmVyQ29udGFpbmVyIiwiX25vcm1hbGl6ZURpc3RhbmNlIiwibm9ybWFsaXplRGlzdGFuY2UiLCJkaXN0YW5jZSIsImlzVG91Y2giLCJ0ZXN0IiwiX2lzV2l0aGluVmFsaWRDb250YWluZXIiLCJldmVudFRhcmdldCIsImNvbnRhaW5lcnMiLCJzb21lIiwiaW5Sb290IiwiaXNXaXRoaW5WYWxpZENvbnRhaW5lciIsIl9oYW5kbGVDbGlja0V2ZW50IiwiX2dldEV2ZW50Q29vcmRpbmF0ZXM0Iiwibm93IiwiZ2V0VGltZSIsInRpbWVzdGFtcCIsIl90aGlzJF9pbml0aWFsRXZlbnREYSIsIl9nZXRFdmVudENvb3JkaW5hdGVzNSIsInciLCJoIiwib2xkIiwiY2xpY2siLCJpc0NsaWNrIiwiY3RybCIsIl90aGlzJF9pbml0aWFsRXZlbnREYTIiLCJub2RlQSIsIm5vZGVCIiwidG9sZXJhbmNlIiwiX2dldEJvdW5kc0Zvck5vZGUiLCJhVG9wIiwiYUxlZnQiLCJfZ2V0Qm91bmRzRm9yTm9kZSRyaWciLCJhUmlnaHQiLCJfZ2V0Qm91bmRzRm9yTm9kZSRib3QiLCJhQm90dG9tIiwiX2dldEJvdW5kc0Zvck5vZGUyIiwiYlRvcCIsImJMZWZ0IiwiX2dldEJvdW5kc0Zvck5vZGUyJHJpIiwiYlJpZ2h0IiwiX2dldEJvdW5kc0Zvck5vZGUyJGJvIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmVjdCIsInBhZ2VPZmZzZXQiLCJvZmZzZXRXaWR0aCIsIm9mZnNldEhlaWdodCIsImRpciIsInBhZ2VYT2Zmc2V0IiwiYm9keSIsInNjcm9sbExlZnQiLCJwYWdlWU9mZnNldCIsInNjcm9sbFRvcCIsImdldEtleSIsInRvdGFsTWluIiwiZ2V0VG90YWxNaW4iLCJtaW51dGVzRnJvbU1pZG5pZ2h0IiwiZ2V0TWludXRlc0Zyb21NaWRuaWdodCIsIm51bUdyb3VwcyIsIm51bVNsb3RzIiwiZ3JvdXBzIiwiZ3JwIiwic2xvdElkeCIsIm1pbkZyb21TdGFydCIsImdldFNsb3REYXRlIiwibGFzdFNsb3RNaW5Gcm9tU3RhcnQiLCJwb3NpdGlvbkZyb21EYXRlIiwiZ2V0RHN0T2Zmc2V0IiwidXBkYXRlIiwiZGF0ZUlzSW5Hcm91cCIsImdyb3VwSW5kZXgiLCJuZXh0R3JvdXAiLCJpblJhbmdlIiwibmV4dFNsb3QiLCJmaW5kSW5kZXgiLCJlcSIsImNsb3Nlc3RTbG90VG9Qb3NpdGlvbiIsInBlcmNlbnQiLCJjbG9zZXN0U2xvdEZyb21Qb2ludCIsImJvdW5kYXJ5UmVjdCIsImNsb3Nlc3RTbG90RnJvbURhdGUiLCJndCIsImRpZmZNaW5zIiwic3RhcnRzQmVmb3JlRGF5Iiwic3RhcnRzQWZ0ZXJEYXkiLCJzdGFydHNCZWZvcmUiLCJtZXJnZSIsInN0YXJ0c0FmdGVyIiwiZ2V0UmFuZ2UiLCJyYW5nZVN0YXJ0IiwicmFuZ2VFbmQiLCJpZ25vcmVNaW4iLCJpZ25vcmVNYXgiLCJyYW5nZVN0YXJ0TWluIiwicmFuZ2VFbmRNaW4iLCJzdGFydERhdGUiLCJlbmREYXRlIiwiZ2V0Q3VycmVudFRpbWVQb3NpdGlvbiIsImRhdGEiLCJfc2xvdE1ldHJpY3MkZ2V0UmFuZ2UiLCJzdGFydE1zIiwiZW5kTXMiLCJnZXQiLCJyb3dzIiwibGVhdmVzIiwiX3dpZHRoIiwibm9PdmVybGFwIiwib3ZlcmxhcCIsIl90aGlzJHJvdyIsInhPZmZzZXQiLCJvblNhbWVSb3ciLCJtaW5pbXVtU3RhcnREaWZmZXJlbmNlIiwiZ2V0U3R5bGVkRXZlbnRzIiwiZXZlbnRzSW5SZW5kZXJPcmRlciIsInNvcnRCeVJlbmRlciIsInNvcnRlZEJ5VGltZSIsInNvcnRCeSIsInNvcnRlZCIsInNoaWZ0IiwiY29udGFpbmVyRXZlbnRzIiwiX2xvb3AiLCJqIiwiZ2V0TWF4SWR4REZTIiwibWF4SWR4IiwidmlzaXRlZCIsImZyaWVuZHMiLCJuZXdJZHgiLCJEZWZhdWx0QWxnb3JpdGhtcyIsInN0eWxlZEV2ZW50cyIsInNvcnQiLCJzaXplIiwic2UxIiwieTEiLCJ5MiIsInNlMiIsInkzIiwieTQiLCJzZSIsImJpdG1hcCIsImFsbEZyaWVuZHMiLCJwYWRkaW5nIiwiVGltZVNsb3RHcm91cCIsIl9Db21wb25lbnQiLCJyZW5kZXJTbG90IiwicmVzb3VyY2UiLCJncm91cCIsIl90aGlzJHByb3BzJGNvbXBvbmVudDIiLCJCYWNrZ3JvdW5kV3JhcHBlciIsImdyb3VwUHJvcHMiLCJzbG90R3JvdXBQcm9wIiwic2xvdFByb3BzIiwic2xvdFByb3AiLCJDb21wb25lbnQiLCJEYXlDb2x1bW5XcmFwcGVyIiwiaW5uZXJSZWYiLCJEYXlDb2x1bW4iLCJ0aW1lSW5kaWNhdG9yUG9zaXRpb24iLCJpbnRlcnZhbFRyaWdnZXJlZCIsInJlbmRlckV2ZW50cyIsImlzQmFja2dyb3VuZEV2ZW50IiwiYWxnb3JpdGhtIiwiaXNGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwiY2FsbCIsIkRheUV2ZW50TGF5b3V0IiwiVGltZUdyaWRFdmVudCIsIl9zZWxlY3QiLCJfZG91YmxlQ2xpY2siLCJfa2V5UHJlc3MiLCJtYXliZVNlbGVjdCIsInNlbGVjdGlvblN0YXRlIiwiY3VycmVudFNsb3QiLCJfaW5pdGlhbFNsb3QiLCJpbml0aWFsU2xvdCIsInNlbGVjdFJhbmdlIiwiX3NlbGVjdGlvblN0YXRlIiwiX2xlbjIiLCJfa2V5MiIsIl9sZW4zIiwiX2tleTMiLCJfbGVuNCIsIl9rZXk0IiwiVGltZVNsb3RVdGlscyIsImlzTm93Iiwic2V0VGltZUluZGljYXRvclBvc2l0aW9uVXBkYXRlSW50ZXJ2YWwiLCJjbGVhclRpbWVJbmRpY2F0b3JJbnRlcnZhbCIsInByZXZTdGF0ZSIsImdldE5vd0NoYW5nZWQiLCJ0YWlsIiwicG9zaXRpb25UaW1lSW5kaWNhdG9yIiwiX3RoaXMzIiwiX3RpbWVJbmRpY2F0b3JUaW1lb3V0IiwiX3RoaXMkcHJvcHM1JGdldHRlcnMiLCJfdGhpcyRwcm9wczUkY29tcG9uZW4iLCJFdmVudENvbnRhaW5lciIsImV2ZW50Q29udGFpbmVyV3JhcHBlciIsIl9leGNsdWRlZDIiLCJzZWxlY3REYXRlcyIsIl9kYXlQcm9wIiwiRGF5Q29sdW1uV3JhcHBlckNvbXBvbmVudCIsImRyYWdUaHJvdWdoRXZlbnRzIiwiZ3V0dGVyUmVmIiwiVGltZUd1dHRlcldyYXBwZXIiLCJhZGp1c3RGb3JEU1QiLCJnZXRUaW1lem9uZU9mZnNldCIsInRvSVNPU3RyaW5nIiwic2V0U2xvdE1ldHJpY3MiLCJSZXNvdXJjZUhlYWRlciIsIlRpbWVHcmlkSGVhZGVyIiwiaGFuZGxlSGVhZGVyQ2xpY2siLCJyZW5kZXJSb3ciLCJldmVudHNUb0Rpc3BsYXkiLCJyZW5kZXJIZWFkZXJDZWxscyIsIl90aGlzJHByb3BzMiRjb21wb25lbiIsImhlYWRlciIsIkhlYWRlckNvbXBvbmVudCIsInNjcm9sbFJlZiIsImlzT3ZlcmZsb3dpbmciLCJfdGhpcyRwcm9wczMkY29tcG9uZW4iLCJUaW1lR3V0dGVySGVhZGVyIiwiX3RoaXMkcHJvcHMzJGNvbXBvbmVuMiIsInJlc291cmNlSGVhZGVyIiwiUmVzb3VyY2VIZWFkZXJDb21wb25lbnQiLCJzY3JvbGxiYXJTaXplIiwiZ3JvdXBlZEV2ZW50cyIsImdyb3VwRXZlbnRzIiwiTk9ORSIsImhhbmRsZVNjcm9sbCIsImhhbmRsZVJlc2l6ZSIsImFuaW1hdGlvbkZyYW1lIiwicmFmSGFuZGxlIiwiY2hlY2tPdmVyZmxvdyIsImNsZWFyU2VsZWN0aW9uIiwiZG9TaG93TW9yZURyaWxsRG93biIsImhhbmRsZVNlbGVjdEFsbERheVNsb3QiLCJfdXBkYXRpbmdPdmVyZmxvdyIsImNvbnRlbnRSZWYiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJtZW1vaXplZFJlc291cmNlcyIsImV2ZW50c0J5UmVzb3VyY2UiLCJNYXAiLCJpdGVtIiwic2V0IiwiZ3V0dGVyV2lkdGgiLCJfc2Nyb2xsUmF0aW8iLCJnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSIsIm1lYXN1cmVHdXR0ZXIiLCJjYWxjdWxhdGVTY3JvbGwiLCJhcHBseVNjcm9sbCIsIm1lYXN1cmVHdXR0ZXJBbmltYXRpb25GcmFtZVJlcXVlc3QiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsImdyb3VwZWRCYWNrZ3JvdW5kRXZlbnRzIiwiamoiLCJkYXlzRXZlbnRzIiwiZGF5c0JhY2tncm91bmRFdmVudHMiLCJfY3JlYXRlRWxlbWVudCIsIl90aGlzJHByb3BzJGFsbERheU1heCIsInJhbmdlRXZlbnRzIiwicmFuZ2VCYWNrZ3JvdW5kRXZlbnRzIiwiZVN0YXJ0IiwiZUVuZCIsInN0YXJ0QW5kRW5kQXJlRGF0ZU9ubHkiLCJzb3J0RXZlbnRzIiwicmVuZGVyT3ZlcmxheSIsIm9uU2Nyb2xsIiwiX3RoaXMkc3RhdGUkb3ZlcmxheSIsIl9zZWxlY3RUaW1lciIsIl9wZW5kaW5nU2VsZWN0aW9uIiwiX3RoaXM0IiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiX3RoaXM0JGd1dHRlclJlZiIsImdldFdpZHRoIiwiZW5hYmxlQXV0b1Njcm9sbCIsImRpZmZNaWxsaXMiLCJ0b3RhbE1pbGxpcyIsInN0cmluZ2lmeVBlcmNlbnQiLCJfcHJvcHMkY29tcG9uZW50cyIsImlubmVyIiwiZXZlbnRTdHlsZSIsInRhYkluZGV4IiwiRG5EQ29udGV4dCIsImhhbmRsZVJlc2l6ZVVwIiwib25CZWdpbkFjdGlvbiIsImhhbmRsZVJlc2l6ZURvd24iLCJoYW5kbGVSZXNpemVMZWZ0IiwiaGFuZGxlUmVzaXplUmlnaHQiLCJoYW5kbGVTdGFydERyYWdnaW5nIiwiX2UkdGFyZ2V0JGdldEF0dHJpYnV0IiwiZ2V0QXR0cmlidXRlIiwicmVuZGVyQW5jaG9yIiwiY2xzIiwib25Nb3VzZURvd24iLCJfX2lzUHJldmlldyIsImRyYWdnYWJsZUFjY2Vzc29yIiwicmVzaXphYmxlQWNjZXNzb3IiLCJpc0RyYWdnYWJsZSIsImlzUmVzaXphYmxlIiwibmV3UHJvcHMiLCJvblRvdWNoU3RhcnQiLCJTdGFydEFuY2hvciIsIkVuZEFuY2hvciIsImRyYWdBbmREcm9wQWN0aW9uIiwiaW50ZXJhY3RpbmciLCJjb250ZXh0VHlwZSIsImRyYWdBY2Nlc3NvcnMiLCJ3cmFwQWNjZXNzb3IiLCJtZXJnZUNvbXBvbmVudHMiLCJhZGRvbnMiLCJuZXN0IiwiZmFjdG9yaWVzIiwiQm9vbGVhbiIsImNyZWF0ZUZhY3RvcnkiLCJOZXN0IiwicmVkdWNlUmlnaHQiLCJjaGlsZCIsImZhY3RvcnkiLCJwb2ludEluQ29sdW1uIiwiZXZlbnRUaW1lcyIsImR1cmF0aW9uIiwiRXZlbnRDb250YWluZXJXcmFwcGVyIiwiaGFuZGxlTW92ZSIsInJlc2V0IiwibmV3U2xvdCIsImV2ZW50T2Zmc2V0VG9wIiwibmV3RW5kIiwiaGFuZGxlRHJvcEZyb21PdXRzaWRlIiwiYm91bmRhcnlCb3giLCJvbkRyb3BGcm9tT3V0c2lkZSIsInVwZGF0ZVBhcmVudFNjcm9sbCIsInBhcmVudCIsImRyYWdnZWRFbCIsIm9mZnNldFRvcCIsIndyYXBwZXIiLCJpc0JlaW5nRHJhZ2dlZCIsInNjcm9sbFBhcmVudCIsImV2ZW50Tm9kZSIsImRyYWdGcm9tT3V0c2lkZUl0ZW0iLCJvblN0YXJ0IiwiaGFuZGxlSW50ZXJhY3Rpb25FbmQiLCJvbkVuZCIsImxhc3RFdmVudCIsIm5ld1JhbmdlIiwiX3RoaXMkY29udGV4dCRkcmFnZ2FiIiwibmV3VGltZSIsIl9ldmVudFRpbWVzMiIsIm5ld1N0YXJ0IiwicmVuZGVyQ29udGVudCIsImRyYWdnZWRFdmVudCIsIl9ldmVudFRpbWVzIiwiaGFuZGxlRHJhZ092ZXJGcm9tT3V0c2lkZSIsImlzTW9udGhSb3ciLCJjbGFzc0xpc3QiLCJpc0luQm94Iiwic2VnbWVudCIsImxhc3RTZWdtZW50IiwiY3Vyc29ySW5Sb3ciLCJvcmlnaW5hbEVuZCIsIm9yaWdpbmFsU3RhcnQiLCJkZWZhdWx0T25EcmFnT3ZlciIsImhhbmRsZUJlZ2luQWN0aW9uIiwiaGFuZGxlSW50ZXJhY3Rpb25TdGFydCIsImludGVyYWN0aW9uSW5mbyIsImdldERuRENvbnRleHRWYWx1ZSIsImVsZW1lbnRQcm9wc1dpdGhEcm9wRnJvbU91dHNpZGUiLCJvbkRyYWdPdmVyIiwiUHJvdmlkZXIiLCJsb2NhbGVQcm9wVHlwZSIsIl9mb3JtYXQiLCJmb3JtYXR0ZXIiLCJpbnZhcmlhbnQiLCJkdCIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJkYXlzdGFydCIsImRheVNwYW4iLCJfcmVmJGV2dEEiLCJldnRBIiwiYVN0YXJ0IiwiYUVuZCIsImFBbGxEYXkiLCJfcmVmJGV2dEIiLCJldnRCIiwiYlN0YXJ0IiwiYkVuZCIsImJBbGxEYXkiLCJzdGFydFNvcnQiLCJkdXJBIiwiZHVyQiIsImluRXZlbnRSYW5nZSIsIl9yZWYyJGV2ZW50IiwiX3JlZjIkcmFuZ2UiLCJzdGFydHNCZWZvcmVFbmQiLCJlbmRzQWZ0ZXJTdGFydCIsImRhdGUxIiwiZGF0ZTIiLCJpc0p1c3REYXRlIiwiRGF0ZUxvY2FsaXplciIsInNwZWMiLCJmaXJzdE9mV2VlayIsInByb3BUeXBlIiwic3RhcnRPZldlZWsiLCJtaW51dGVzIiwiZmlyc3RWaXNpYmxlRGF5IiwibGFzdFZpc2libGVEYXkiLCJ2aXNpYmxlRGF5cyIsInNlZ21lbnRPZmZzZXQiLCJicm93c2VyVFpPZmZzZXQiLCJtZXJnZVdpdGhEZWZhdWx0cyIsImZvcm1hdE92ZXJyaWRlcyIsImRlZmF1bHRNZXNzYWdlcyIsInRpbWUiLCJ5ZXN0ZXJkYXkiLCJ0b21vcnJvdyIsIkRhdGVIZWFkZXIiLCJNb250aFZpZXciLCJyZW5kZXJXZWVrIiwid2Vla0lkeCIsIm5lZWRMaW1pdE1lYXN1cmUiLCJyb3dMaW1pdCIsIndlZWtzRXZlbnRzIiwiZXZlbnRzRm9yV2VlayIsImV2dHMiLCJzb3J0V2Vla0V2ZW50cyIsInNsb3RSb3dSZWYiLCJyZWFkZXJEYXRlSGVhZGluZyIsImlzT2ZmUmFuZ2UiLCJpc0N1cnJlbnQiLCJEYXRlSGVhZGVyQ29tcG9uZW50IiwiZGF0ZUhlYWRlciIsImhhbmRsZUhlYWRpbmdDbGljayIsIl9iZ1Jvd3MiLCJydW5uaW5nIiwibWVhc3VyZVJvd0xpbWl0IiwiX3Jlc2l6ZUxpc3RlbmVyIiwid2Vla3MiLCJjaHVuayIsIl93ZWVrQ291bnQiLCJyZW5kZXJIZWFkZXJzIiwiX3RoaXMkc3RhdGUyIiwiX3RoaXMkcHJvcHM2IiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiX3JlZjUiLCJEYXkiLCJfdGhpcyRwcm9wcyRtaW4iLCJfdGhpcyRwcm9wcyRtYXgiLCJfdGhpcyRwcm9wcyRzY3JvbGxUb1QiLCJfdGhpcyRwcm9wcyRlbmFibGVBdXQiLCJXZWVrIiwiX1dlZWskcmFuZ2UiLCJfV2VlayRyYW5nZTIiLCJfdG9BcnJheSIsInJlc3QiLCJwb3AiLCJ3b3JrV2Vla1JhbmdlIiwiZCIsImdldERheSIsIldvcmtXZWVrIiwiX3dvcmtXZWVrUmFuZ2UiLCJfd29ya1dlZWtSYW5nZTIiLCJBZ2VuZGEiLCJfcmVmJGxlbmd0aCIsImhlYWRlclJlZiIsImRhdGVDb2xSZWYiLCJ0aW1lQ29sUmVmIiwidGJvZHlSZWYiLCJfYWRqdXN0SGVhZGVyIiwidGltZVJhbmdlTGFiZWwiLCJsYWJlbENsYXNzIiwiVGltZUNvbXBvbmVudCIsInRyaW0iLCJmaXJzdFJvdyIsImZpcnN0Q2hpbGQiLCJfd2lkdGhzIiwid2lkdGhzIiwiYWRkQ2xhc3MiLCJtYXJnaW5SaWdodCIsInJlbW92ZUNsYXNzIiwicmVuZGVyRGF5IiwiZGF5S2V5IiwiQWdlbmRhRGF0ZSIsImRhdGVMYWJlbCIsInJvd1NwYW4iLCJfcmVmMiRsZW5ndGgiLCJfcmVmMyRsZW5ndGgiLCJfcmVmNCRsZW5ndGgiLCJNb250aCIsIldPUktfV0VFSyIsInZpZXdOYW1lc0dyb3VwIiwiX3ZpZXdzIiwiX2kiLCJfT2JqZWN0JGVudHJpZXMiLCJlbnRyaWVzIiwiZ2V0Vmlld3MiLCJ0cmFuc2Zvcm0iLCJWSUVXUyIsIm1hcFZhbHVlcyIsImdldFZpZXciLCJoYW5kbGVSYW5nZUNoYW5nZSIsInZpZXdDb21wb25lbnQiLCJoYW5kbGVOYXZpZ2F0ZSIsIlZpZXdDb21wb25lbnQiLCJtb3ZlRGF0ZSIsIkRBVEUiLCJoYW5kbGVWaWV3Q2hhbmdlIiwiaXNWYWxpZFZpZXciLCJoYW5kbGVEcmlsbERvd24iLCJnZXRDb250ZXh0IiwiX3RoaXMkc3RhdGUkY29udGV4dCIsIkNhbFRvb2xiYXIiLCJuZXh0UHJvcHMiLCJzdGFydEFjY2Vzc29yIiwiZW5kQWNjZXNzb3IiLCJhbGxEYXlBY2Nlc3NvciIsInRvb2x0aXBBY2Nlc3NvciIsInRpdGxlQWNjZXNzb3IiLCJiYWNrZ3JvdW5kRXZlbnRQcm9wR2V0dGVyIiwiX3JlZjQkbWVzc2FnZXMiLCJfcmVmNCRjb21wb25lbnRzIiwiX3JlZjQkZm9ybWF0cyIsIm5hbWVzIiwibXNncyIsIm1lc3NhZ2UiLCJiYWNrZ3JvdW5kRXZlbnRQcm9wIiwiZGVmYXVsdHMiLCJvbWl0IiwiYmFja2dyb3VuZEV2ZW50V3JhcHBlciIsInVuY29udHJvbGxhYmxlIiwidGltZVJhbmdlRm9ybWF0IiwidGltZVJhbmdlU3RhcnRGb3JtYXQiLCJ0aW1lUmFuZ2VFbmRGb3JtYXQiLCJ3ZWVrUmFuZ2VGb3JtYXQiLCJkYXRlUmFuZ2VGb3JtYXQiLCJmaXhVbml0IiwidW5pdCIsImRhdGVQYXJ0IiwidG9Mb3dlckNhc2UiLCJfc3QkX3okbmFtZSIsIl9zdCRfeiIsInN0IiwiZWQiLCJ0eiIsInR6TmFtZSIsIl96Iiwiem9uZSIsInV0Y09mZnNldCIsImRlZmluZUNvbXBhcmF0b3JzIiwiX2RlZmluZUNvbXBhcmF0b3JzIiwiX2RlZmluZUNvbXBhcmF0b3JzMiIsImR0QSIsImR0QiIsImlzU2FtZSIsIl9kZWZpbmVDb21wYXJhdG9yczkiLCJfZGVmaW5lQ29tcGFyYXRvcnMxMCIsImlzU2FtZU9yQmVmb3JlIiwiYWRkZXIiLCJtU3RhcnQiLCJtRW5kIiwiZGF5cyIsImxvY2FsZURhdGEiLCJsb2NhbGUiLCJtIiwiX2RlZmluZUNvbXBhcmF0b3JzNSIsIl9kZWZpbmVDb21wYXJhdG9yczYiLCJpc0JlZm9yZSIsIl9kZWZpbmVDb21wYXJhdG9yczMiLCJfZGVmaW5lQ29tcGFyYXRvcnM0IiwiaXNBZnRlciIsIl9kZWZpbmVDb21wYXJhdG9yczciLCJfZGVmaW5lQ29tcGFyYXRvcnM4IiwidG0iLCJtRGF5IiwibU1pbiIsIm1NYXgiLCJpc0JldHdlZW4iLCJkYXRlQSIsImRhdGVCIiwibWludXRlIiwiZGF5U3RhcnQiLCJnZXREYXlTdGFydERzdE9mZnNldCIsIm1GaXJzdCIsIm1MYXN0IiwiaXNTYW1lT3JBZnRlciIsIl9yZWY2IiwiX3JlZjYkZXZ0QSIsIl9yZWY2JGV2dEIiLCJfcmVmNyIsIl9yZWY3JGV2ZW50IiwiX3JlZjckcmFuZ2UiLCJzdGFydE9mRGF5IiwiclN0YXJ0IiwickVuZCIsImR0MiIsIm5lZyIsInRvU3RyaW5nIiwiZHRPZmZzZXQiLCJjb21wYXJhdG9yIiwiTnVtYmVyIiwicGx1cmFsaXplVW5pdCIsIl9yZWY2JGZpcnN0RGF5T2ZXZWVrIiwiZnJvbUpTRGF0ZSIsInN0YXJ0T2ZEVFdlZWsiLCJkdE9iaiIsIndlZWtkYXkiLCJtaW51cyIsImVuZE9mRFRXZWVrIiwiZW93IiwicGx1cyIsInN0YXJ0T2ZEVCIsImVuZE9mRFQiLCJjb252ZXJzaW9uQWNjdXJhY3kiLCJ0b09iamVjdCIsImR0U3RhcnQiLCJhcyIsImZvcm1hdERhdGVXaXRoQ3VsdHVyZSIsInNldExvY2FsZSIsInRvRm9ybWF0IiwiZm9ybWF0RGF0ZSIsInNlY29uZCIsIm1pbGxpc2Vjb25kIiwicm91bmQiLCJfcmVmNyRldnRBIiwiX3JlZjckZXZ0QiIsIl9yZWY4IiwiX3JlZjgkZXZlbnQiLCJfcmVmOCRyYW5nZSIsImhhc1NhbWUiLCJnZXRDdWx0dXJlIiwiZmluZENsb3Nlc3RDdWx0dXJlIiwiY2FsZW5kYXIiLCJmaXJzdERheSIsImxvYWQiLCJjbGRyIiwidGVycml0b3J5IiwiYXR0cmlidXRlcyIsIndlZWtEYXRhIiwicHJvY2VzcyIsImxvY2FsZURheSIsInBhcnNlSW50IiwicmF3Iiwib2xkR2xvYmFsaXplIiwiZGF5anNMaWIiLCJleHRlbmQiLCJsb2NhbGl6ZWRGb3JtYXQiLCJtaW5NYXgiLCJ1dGMiLCJfc3QkdHokJHgkJHRpbWV6b25lIiwiJHgiLCIkdGltZXpvbmUiLCJzdGFydERheSIsImRqIiwiZGpEYXkiLCJkak1pbiIsImRqTWF4IiwiZGpTdGFydCIsImRqRmlyc3QiLCJkakVuZCIsImRqTGFzdCIsImFjY2Vzc29yIiwiZmllbGQiLCJhY2MiLCJNSUxMSSIsInNlY29uZHMiLCJob3VycyIsImZpcnN0T2ZNb250aCIsImVuZE9mTW9udGgiLCJfcmVmJHVuaXQiLCJsaW1pdCIsInNlZ3NPdmVybGFwIiwib3RoZXJTZWdzIiwib3RoZXJTZWciLCJiYXNlIiwibXVsdGlEYXlFdmVudHMiLCJzdGFuZGFyZEV2ZW50cyIsInN0YXJ0Q2hlY2siLCJlbmRDaGVjayIsIm11bHRpU29ydGVkIiwic3RhbmRhcmRTb3J0ZWQiLCJldmVudEEiLCJldmVudEIiLCJwcm9wIiwic2xvdFdpZHRoIiwiY2VsbFdpZHRoIiwibGFzdFNsb3RJZHgiLCJpc0N1cnJlbnRSb3ciLCJpc1N0YXJ0Um93IiwiaXNBYm92ZVN0YXJ0IiwiaXNCZWxvd1N0YXJ0IiwibGlua0Jhc2UiLCJtYXJnaW5Cb3R0b20iLCJocmVmIiwiYWxsWm9uZXMiLCJfcmVmJGRlZmF1bHRUWiIsInVuc2hpZnQiLCJfcmVmMiRsb2NhbGl6ZXIiLCJfcmVmMiRzaG93RGVtb0xpbmsiLCJzaG93RGVtb0xpbmsiLCJhZGpFdmVudHMiLCJpdCIsImluZCIsImZvcm1hdE5hbWUiLCJEbkRPdXRzaWRlUmVzb3VyY2UiLCJzZXREcmFnZ2VkRXZlbnQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImRpc3BsYXlEcmFnSXRlbUluQ2VsbCIsInNldERpc3BsYXlEcmFnSXRlbUluQ2VsbCIsIl91c2VTdGF0ZTciLCJpdGVtMSIsIml0ZW0yIiwiX3VzZVN0YXRlOCIsImNvdW50ZXJzIiwic2V0Q291bnRlcnMiLCJjdXN0b21PbkRyYWdPdmVyIiwiZHJhZ0V2ZW50IiwiaGFuZGxlRGlzcGxheURyYWdJdGVtSW5DZWxsIiwibmV3RXZlbnQiLCJpZExpc3QiLCJuZXdJZCIsIkNhcmQiLCJzZXRSZXNpemFibGUiLCJ0b2dnbGVSZXNpemluZyIsIkRyYWdhYmxlQ2FsZW5kYXIiLCJhZGp1c3RlZCIsImFsbERheUV2ZW50Iiwib3RoZXIiLCJhZGp1c3RlZFJlc291cmNlcyIsIklkIiwiVGl0bGUiLCJkYXlDb2x1bW5XcmFwcGVyUHJvcHMiLCJib3JkZXJDb2xvciIsImJvcmRlclN0eWxlIiwiYm9yZGVyV2lkdGgiLCJkYXRlQ2VsbFdyYXBwZXJQcm9wcyIsImhhc0FsZXJ0IiwiZmxleCIsImJvcmRlckxlZnQiLCJ0aW1lU2xvdFdyYXBwZXJQcm9wcyIsImhhc0N1c3RvbUluZm8iLCJnZXRIb3VycyIsImV2ZW50V3JhcHBlclByb3BzIiwiZ2V0TWludXRlcyIsInRpbWVHdXR0ZXJXcmFwcGVyUHJvcHMiLCJzZXRIb3VycyIsIk1ldGEiLCJfX3BhZ2UiLCJFcnJvciIsImRvY3NPbmx5IiwiY29tcG9uZW50TWV0YSIsImluY2x1ZGVTdG9yaWVzIiwibWR4U3RvcnlOYW1lVG9LZXkiLCJBZGRDb250ZXh0IiwibWR4Q29tcG9uZW50QW5ub3RhdGlvbnMiLCJleHBvcnRzIiwiX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIiwibW9kdWxlIiwibG9jYWxzIiwid2VicGFja0NvbnRleHQiLCJyZXEiLCJ3ZWJwYWNrQ29udGV4dFJlc29sdmUiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibyIsImNvZGUiLCJ3ZWJwYWNrQ29udGV4dEtleXMiLCJyZXNvbHZlIiwiYXBpIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjb25maWd1cmUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/examples/main.b034e480.iframe.bundle.js b/examples/main.b034e480.iframe.bundle.js deleted file mode 100644 index bafdf0f9b..000000000 --- a/examples/main.b034e480.iframe.bundle.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkreact_big_calendar=self.webpackChunkreact_big_calendar||[]).push([[792],{"./.storybook/preview.js-generated-config-entry.js":function(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__){"use strict";var preview_namespaceObject={};__webpack_require__.r(preview_namespaceObject),__webpack_require__.d(preview_namespaceObject,{__namedExportsOrder:function(){return __namedExportsOrder},parameters:function(){return parameters}});__webpack_require__("./node_modules/core-js/modules/es.object.keys.js"),__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/es.object.get-own-property-descriptor.js"),__webpack_require__("./node_modules/core-js/modules/web.dom-collections.for-each.js"),__webpack_require__("./node_modules/core-js/modules/es.object.get-own-property-descriptors.js");var ClientApi=__webpack_require__("./node_modules/@storybook/client-api/dist/esm/ClientApi.js"),parameters={actions:{argTypesRegex:"^on[A-Z].*"},controls:{matchers:{color:/(background|color)$/i,date:/Date$/}},storySort:{order:["About Big Calendar","About Our Examples","props","Examples","Guides","Addons",["Introduction","props"]]},viewMode:"docs"},__namedExportsOrder=["parameters"];function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter((function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable}))),keys.push.apply(keys,symbols)}return keys}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.keys(preview_namespaceObject).forEach((function(key){var value=preview_namespaceObject[key];switch(key){case"args":return(0,ClientApi.FQ)(value);case"argTypes":return(0,ClientApi.hA)(value);case"decorators":return value.forEach((function(decorator){return(0,ClientApi.dK)(decorator,!1)}));case"loaders":return value.forEach((function(loader){return(0,ClientApi.$K)(loader,!1)}));case"parameters":return(0,ClientApi.Gu)(function _objectSpread(target){for(var i=1;i "}},ComplexDayViewLayout.parameters),CustomTimeGutterHeader.parameters=Object.assign({storySource:{source:"(args) => "}},CustomTimeGutterHeader.parameters),CustomTimeGutterWrapper.parameters=Object.assign({storySource:{source:"(args) => "}},CustomTimeGutterWrapper.parameters),CustomDateCellWrapper.parameters=Object.assign({storySource:{source:"(args) => "}},CustomDateCellWrapper.parameters),CustomTimeSlotWrapper.parameters=Object.assign({storySource:{source:"(args) => "}},CustomTimeSlotWrapper.parameters),CustomEventWrapper.parameters=Object.assign({storySource:{source:"(args) => "}},CustomEventWrapper.parameters),CustomNoAgendaEventsLabel.parameters=Object.assign({storySource:{source:"(args) => "}},CustomNoAgendaEventsLabel.parameters),CustomDayColumnWrapper.parameters=Object.assign({storySource:{source:"(args) => "}},CustomDayColumnWrapper.parameters);var __namedExportsOrder=["ComplexDayViewLayout","CustomTimeGutterHeader","CustomTimeGutterWrapper","CustomDateCellWrapper","CustomTimeSlotWrapper","CustomEventWrapper","CustomNoAgendaEventsLabel","CustomDayColumnWrapper"]},"./stories/DragAndDrop.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{CustomStepsAndTimeslots:function(){return CustomStepsAndTimeslots},DraggableAndResizable:function(){return DraggableAndResizable},DraggableMultipleResources:function(){return DraggableMultipleResources},WithCustomDateCellWrapper:function(){return WithCustomDateCellWrapper},WithCustomEventWrapper:function(){return WithCustomEventWrapper},WithCustomTimeslotWrapper:function(){return WithCustomTimeslotWrapper},WithMultiDayTimes:function(){return WithMultiDayTimes},__namedExportsOrder:function(){return __namedExportsOrder}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/@storybook/addon-actions/dist/esm/index.js"),_helpers__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./stories/helpers/index.js"),_resources_customComponents__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./stories/resources/customComponents.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/react/jsx-runtime.js");__webpack_exports__.default={title:"Additional Examples/Drag and Drop",component:_helpers__WEBPACK_IMPORTED_MODULE_3__.Vv,decorators:[function(Story){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div",{className:"height600",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(Story,{})})}]};var Template=function Template(args){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div",{className:"height600",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_helpers__WEBPACK_IMPORTED_MODULE_3__.zm,Object.assign({},args))})};Template.displayName="Template";var DraggableAndResizable=Template.bind({});DraggableAndResizable.storyName="draggable and resizable",DraggableAndResizable.args={defaultDate:new Date,defaultView:_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.WEEK,events:_helpers__WEBPACK_IMPORTED_MODULE_3__.AZ,resizable:!0,onEventDrop:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event dropped"),onEventResize:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event resized")};var CustomStepsAndTimeslots=Template.bind({});CustomStepsAndTimeslots.storyName="draggable and resizable with non-default steps and timeslots",CustomStepsAndTimeslots.args={defaultDate:new Date,defaultView:_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.WEEK,events:_helpers__WEBPACK_IMPORTED_MODULE_3__.AZ,resizable:!0,onEventDrop:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event dropped"),onEventResize:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event resized"),steps:15,timeslots:4};var WithMultiDayTimes=Template.bind({});WithMultiDayTimes.storyName="draggable and resizable with showMultiDayTimes",WithMultiDayTimes.args={defaultDate:new Date,defaultView:_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.WEEK,events:_helpers__WEBPACK_IMPORTED_MODULE_3__.AZ,resizable:!0,showMultiDayTimes:!0,onEventDrop:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event dropped"),onEventResize:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event resized")};var WithCustomDateCellWrapper=Template.bind({});WithCustomDateCellWrapper.storyName="draggable and resizable with custom dateCellWrapper",WithCustomDateCellWrapper.args={defaultDate:new Date,defaultView:_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.WEEK,events:_helpers__WEBPACK_IMPORTED_MODULE_3__.AZ,resizable:!0,showMultiDayTimes:!0,onEventDrop:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event dropped"),onEventResize:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event resized"),components:{dateCellWrapper:_resources_customComponents__WEBPACK_IMPORTED_MODULE_4__.A.dateCellWrapper}};var WithCustomTimeslotWrapper=Template.bind({});WithCustomTimeslotWrapper.storyName="draggable and resizable with custom timeSlotWrapper",WithCustomTimeslotWrapper.args={defaultDate:new Date,defaultView:_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.WEEK,events:_helpers__WEBPACK_IMPORTED_MODULE_3__.AZ,resizable:!0,showMultiDayTimes:!0,onEventDrop:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event dropped"),onEventResize:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event resized"),components:{timeSlotWrapper:_resources_customComponents__WEBPACK_IMPORTED_MODULE_4__.A.timeSlotWrapper}};var WithCustomEventWrapper=Template.bind({});WithCustomEventWrapper.storyName="draggable and resizable with custom eventWrapper",WithCustomEventWrapper.args={defaultDate:new Date,defaultView:_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.WEEK,events:_helpers__WEBPACK_IMPORTED_MODULE_3__.AZ,resizable:!0,showMultiDayTimes:!0,onEventDrop:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event dropped"),onEventResize:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event resized"),components:{eventWrapper:_resources_customComponents__WEBPACK_IMPORTED_MODULE_4__.A.eventWrapper}};var DraggableMultipleResources=Template.bind({});DraggableMultipleResources.storyName="draggable and resizable with multiple resource lanes",DraggableMultipleResources.args={defaultDate:new Date,defaultView:_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.DAY,views:[_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.DAY,_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.WEEK,_helpers__WEBPACK_IMPORTED_MODULE_3__.Pp.AGENDA],events:_helpers__WEBPACK_IMPORTED_MODULE_3__.GI,resources:_helpers__WEBPACK_IMPORTED_MODULE_3__.ES,resourceAccessor:"resourceId",resourceIdAccessor:"id",resourceTitleAccessor:"name",resizable:!0,onEventDrop:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event dropped"),onEventResize:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event resized")},DraggableAndResizable.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},DraggableAndResizable.parameters),CustomStepsAndTimeslots.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},CustomStepsAndTimeslots.parameters),WithMultiDayTimes.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},WithMultiDayTimes.parameters),WithCustomDateCellWrapper.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},WithCustomDateCellWrapper.parameters),WithCustomTimeslotWrapper.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},WithCustomTimeslotWrapper.parameters),WithCustomEventWrapper.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},WithCustomEventWrapper.parameters),DraggableMultipleResources.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},DraggableMultipleResources.parameters);var __namedExportsOrder=["DraggableAndResizable","CustomStepsAndTimeslots","WithMultiDayTimes","WithCustomDateCellWrapper","WithCustomTimeslotWrapper","WithCustomEventWrapper","DraggableMultipleResources"]},"./stories/Durations.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DaylightSavingsEnds:function(){return DaylightSavingsEnds},DaylightSavingsEndsAfter2Am:function(){return DaylightSavingsEndsAfter2Am},DaylightSavingsStarts:function(){return DaylightSavingsStarts},DaylightSavingsStartsAfter2Am:function(){return DaylightSavingsStartsAfter2Am},__namedExportsOrder:function(){return __namedExportsOrder}});var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),react_big_calendar__WEBPACK_IMPORTED_MODULE_2__=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js"),__webpack_require__("./src/index.js")),_src_addons_dragAndDrop__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./src/addons/dragAndDrop/index.js"),moment__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/moment/moment.js"),moment__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_4__),globalize__WEBPACK_IMPORTED_MODULE_6__=(__webpack_require__("./node_modules/moment-timezone/builds/moment-timezone-with-data-1970-2030.js"),__webpack_require__("./node_modules/globalize/lib/globalize.js")),globalize__WEBPACK_IMPORTED_MODULE_6___default=__webpack_require__.n(globalize__WEBPACK_IMPORTED_MODULE_6__),luxon__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("./node_modules/luxon/src/luxon.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__("./node_modules/react/jsx-runtime.js"),_excluded=["localizer"],localizers={globalize:(0,react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.fk)(globalize__WEBPACK_IMPORTED_MODULE_6___default()),moment:(0,react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.ye)(moment__WEBPACK_IMPORTED_MODULE_4___default()),luxon:(0,react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.AW)(luxon__WEBPACK_IMPORTED_MODULE_7__.c9,{firstDayOfWeek:7})},DraggableCalendar=(0,_src_addons_dragAndDrop__WEBPACK_IMPORTED_MODULE_3__.A)(react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.Vv);__webpack_exports__.default={title:"Additional Examples/Event Durations",component:react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.Vv,decorators:[function(Story){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)("div",{className:"height600",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(Story,{})})}]};var Template=function Template(_ref){var _ref$localizer=_ref.localizer,loc=void 0===_ref$localizer?"moment":_ref$localizer,args=(0,_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_9__.A)(_ref,_excluded),localizer=localizers[loc];return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(DraggableCalendar,Object.assign({localizer:localizer},args))};Template.displayName="Template";var DaylightSavingsStarts=Template.bind({});DaylightSavingsStarts.argTypes={localizer:{options:["globalize","moment","luxon"],control:{type:"select"}}},DaylightSavingsStarts.args={defaultView:react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.Pp.DAY,localizer:"moment",min:moment__WEBPACK_IMPORTED_MODULE_4___default()("12:00am","h:mma").toDate(),max:moment__WEBPACK_IMPORTED_MODULE_4___default()("11:59pm","h:mma").toDate(),events:[{title:"on DST",start:new Date(2022,2,13,1),end:new Date(2022,2,13,2,30),allDay:!1},{title:"crosses DST",start:new Date(2022,2,13,1),end:new Date(2022,2,13,6,30),allDay:!1},{title:"After DST",start:new Date(2022,2,13,7),end:new Date(2022,2,13,9,30),allDay:!1}],defaultDate:new Date(2022,2,13)};var DaylightSavingsStartsAfter2Am=Template.bind({});DaylightSavingsStartsAfter2Am.argTypes={localizer:{options:["globalize","moment","luxon"],control:{type:"select"}}},DaylightSavingsStartsAfter2Am.args={defaultView:react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.Pp.DAY,localizer:"moment",min:moment__WEBPACK_IMPORTED_MODULE_4___default()("3:00am","h:mma").toDate(),max:moment__WEBPACK_IMPORTED_MODULE_4___default()("11:59pm","h:mma").toDate(),events:[{title:"on DST",start:new Date(2022,2,13,1),end:new Date(2022,2,13,2,30),allDay:!1},{title:"crosses DST",start:new Date(2022,2,13,1),end:new Date(2022,2,13,6,30),allDay:!1},{title:"After DST",start:new Date(2022,2,13,7),end:new Date(2022,2,13,9,30),allDay:!1}],defaultDate:new Date(2022,2,13)};var DaylightSavingsEnds=Template.bind({});DaylightSavingsEnds.argTypes={localizer:{options:["globalize","moment","luxon"],control:{type:"select"}}},DaylightSavingsEnds.args={defaultView:react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.Pp.DAY,localizer:"moment",min:moment__WEBPACK_IMPORTED_MODULE_4___default()("12:00am","h:mma").toDate(),max:moment__WEBPACK_IMPORTED_MODULE_4___default()("11:59pm","h:mma").toDate(),events:[{title:"on DST",start:new Date(2022,10,6,1),end:new Date(2022,10,6,3,30),allDay:!1},{title:"crosses DST",start:new Date(2022,10,6,1),end:new Date(2022,10,6,6,30),allDay:!1},{title:"After DST",start:new Date(2022,10,6,7),end:new Date(2022,10,6,7,45),allDay:!1}],defaultDate:new Date(2022,10,6)};var DaylightSavingsEndsAfter2Am=Template.bind({});DaylightSavingsEndsAfter2Am.argTypes={localizer:{options:["globalize","moment","luxon"],control:{type:"select"}}},DaylightSavingsEndsAfter2Am.args={defaultView:react_big_calendar__WEBPACK_IMPORTED_MODULE_2__.Pp.DAY,localizer:"moment",min:moment__WEBPACK_IMPORTED_MODULE_4___default()("3:00am","h:mma").toDate(),max:moment__WEBPACK_IMPORTED_MODULE_4___default()("11:59pm","h:mma").toDate(),events:[{title:"After DST",start:new Date(2022,10,6,7),end:new Date(2022,10,6,9,30),allDay:!1}],defaultDate:new Date(2022,10,6)},DaylightSavingsStarts.parameters=Object.assign({storySource:{source:"({ localizer: loc = 'moment', ...args }) => {\n const localizer = localizers[loc]\n return \n}"}},DaylightSavingsStarts.parameters),DaylightSavingsStartsAfter2Am.parameters=Object.assign({storySource:{source:"({ localizer: loc = 'moment', ...args }) => {\n const localizer = localizers[loc]\n return \n}"}},DaylightSavingsStartsAfter2Am.parameters),DaylightSavingsEnds.parameters=Object.assign({storySource:{source:"({ localizer: loc = 'moment', ...args }) => {\n const localizer = localizers[loc]\n return \n}"}},DaylightSavingsEnds.parameters),DaylightSavingsEndsAfter2Am.parameters=Object.assign({storySource:{source:"({ localizer: loc = 'moment', ...args }) => {\n const localizer = localizers[loc]\n return \n}"}},DaylightSavingsEndsAfter2Am.parameters);var __namedExportsOrder=["DaylightSavingsStarts","DaylightSavingsStartsAfter2Am","DaylightSavingsEnds","DaylightSavingsEndsAfter2Am"]},"./stories/Layout.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DaySpan:function(){return DaySpan},EndOfWeekAllDay:function(){return EndOfWeekAllDay},EventAtEndOfWeek:function(){return EventAtEndOfWeek},EventAtStartOfWeek:function(){return EventAtStartOfWeek},EventLayout:function(){return EventLayout},EventsOnAConstrainedDayColumn:function(){return EventsOnAConstrainedDayColumn},FirstOfWeekAllDay:function(){return FirstOfWeekAllDay},NoDuration:function(){return NoDuration},OverlappingBackgroundEventsNoOverlap:function(){return OverlappingBackgroundEventsNoOverlap},OverlappingBackgroundEventsOverlap:function(){return OverlappingBackgroundEventsOverlap},ZeroDurationOddities:function(){return ZeroDurationOddities},ZeroDurationOverlap:function(){return ZeroDurationOverlap},__namedExportsOrder:function(){return __namedExportsOrder}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js"),__webpack_require__("./node_modules/@storybook/addon-actions/dist/esm/index.js");var moment__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/moment/moment.js"),moment__WEBPACK_IMPORTED_MODULE_3___default=__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_3__),_helpers__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./stories/helpers/index.js"),_helpers_createEvents__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./stories/helpers/createEvents.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/react/jsx-runtime.js");__webpack_exports__.default={title:"Additional Examples/Layout",component:_helpers__WEBPACK_IMPORTED_MODULE_4__.Vv,decorators:[function(Story){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div",{className:"height600",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(Story,{})})}]};var Template=function Template(args){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_helpers__WEBPACK_IMPORTED_MODULE_4__.Vv,Object.assign({},args))};Template.displayName="Template";var defaultDate=new Date,EventLayout=Template.bind({});EventLayout.args={defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.DAY,defaultDate:defaultDate,timeslots:4,events:(0,_helpers_createEvents__WEBPACK_IMPORTED_MODULE_6__.A)(1)};var FirstOfWeekAllDay=Template.bind({});FirstOfWeekAllDay.storyName="first of the week all-day event",FirstOfWeekAllDay.args={defaultDate:new Date(2016,11,4),events:[{allDay:!0,title:"All Day Event",start:new Date(2016,11,4),end:new Date(2016,11,4)}]};var EndOfWeekAllDay=Template.bind({});EndOfWeekAllDay.storyName="end of the week all-day event",EndOfWeekAllDay.args={defaultDate:new Date(2016,11,3),events:[{allDay:!0,title:"All Day Event",start:new Date(2016,11,3),end:new Date(2016,11,3)}]};var EventAtStartOfWeek=Template.bind({});EventAtStartOfWeek.args={defaultDate:new Date(2016,11,4),events:[{title:"has time",start:moment__WEBPACK_IMPORTED_MODULE_3___default()(new Date(2016,11,4)).add(1,"days").subtract(5,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_3___default()(new Date(2016,11,4)).add(1,"days").subtract(4,"hours").toDate()}]};var EventAtEndOfWeek=Template.bind({});EventAtEndOfWeek.args={defaultDate:new Date(2016,11,3),events:[{title:"has time",start:moment__WEBPACK_IMPORTED_MODULE_3___default()(new Date(2016,11,3)).add(1,"days").subtract(5,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_3___default()(new Date(2016,11,3)).add(1,"days").subtract(4,"hours").toDate()}]};var EventsOnAConstrainedDayColumn=Template.bind({});EventsOnAConstrainedDayColumn.args={defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.DAY,min:moment__WEBPACK_IMPORTED_MODULE_3___default()("8 am","h a").toDate(),max:moment__WEBPACK_IMPORTED_MODULE_3___default()("5 pm","h a").toDate(),events:_helpers__WEBPACK_IMPORTED_MODULE_4__.AZ};var NoDuration=Template.bind({});NoDuration.args={defaultDate:new Date(2016,11,4),events:[{title:"start of the week",start:new Date(2016,11,4),end:new Date(2016,11,4)},{title:"end of the week",start:new Date(2016,11,3),end:new Date(2016,11,3)},{title:"middle",start:new Date(2016,11,6),end:new Date(2016,11,6)}]};var DaySpan=Template.bind({});DaySpan.storyName="Single days should only span one slot, multi-days multiple",DaySpan.args={defaultDate:new Date(2015,3,1),events:[{title:"SingleDay 1",start:new Date(2015,3,10),end:new Date(2015,3,11)},{title:"SingleDay 2",start:new Date(2015,3,11),end:new Date(2015,3,12)},{title:"SingleDay 3",start:new Date(2015,3,12),end:new Date(2015,3,13)},{title:"SingleDay 4",start:new Date(2015,3,13),end:new Date(2015,3,14)},{title:"MultiDay 1",start:new Date(2015,3,24),end:new Date(2015,3,25,1,0,0,0)},{title:"MultiDay 2",start:new Date(2015,3,25),end:new Date(2015,3,26,1,0,0,0)}]};var ZeroDurationOddities=function ZeroDurationOddities(){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_helpers__WEBPACK_IMPORTED_MODULE_4__.zm,{defaultDate:new Date(2015,3,1),events:[{id:4,title:"0 day duration",start:new Date(2015,3,8,0,0,0),end:new Date(2015,3,8,0,0,0)},{id:4,title:"1 day duration",start:new Date(2015,3,9,0,0,0),end:new Date(2015,3,10,0,0,0)}]})};ZeroDurationOddities.displayName="ZeroDurationOddities";var ZeroDurationOverlap=function ZeroDurationOverlap(){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_helpers__WEBPACK_IMPORTED_MODULE_4__.zm,{defaultDate:defaultDate,events:[{title:"event a",start:defaultDate,end:defaultDate},{title:"event b",start:defaultDate,end:defaultDate}],dayLayoutAlgorithm:"no-overlap",scrollToTime:defaultDate,defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.WEEK})};ZeroDurationOverlap.displayName="ZeroDurationOverlap";var OverlappingBackgroundEventsOverlap=Template.bind({});OverlappingBackgroundEventsOverlap.storyName="Overlapping Background Events - 'overlap'",OverlappingBackgroundEventsOverlap.args={defaultDate:new Date(2016,11,3),dayLayoutAlgorithm:"overlap",defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.WEEK,scrollToTime:new Date(2016,11,1,7,0),backgroundEvents:[{title:"First Event",start:new Date(2016,10,28,10,30),end:new Date(2016,10,28,18,0)},{title:"Second Event",start:new Date(2016,10,28,12,0),end:new Date(2016,10,28,16,30)},{title:"Third Event",start:new Date(2016,10,29,8,0),end:new Date(2016,10,29,21,0)},{title:"Fourth Event",start:new Date(2016,10,29,9,30),end:new Date(2016,10,29,19,30)},{title:"Fifth Event",start:new Date(2016,10,29,11,0),end:new Date(2016,10,29,18,0)},{title:"Sixth Event",start:new Date(2016,11,1,9,0),end:new Date(2016,11,1,14,0)},{title:"Seventh Event",start:new Date(2016,11,1,11,0),end:new Date(2016,11,1,16,0)},{title:"Eighth Event",start:new Date(2016,11,1,13,0),end:new Date(2016,11,1,18,0)}]};var OverlappingBackgroundEventsNoOverlap=Template.bind({});OverlappingBackgroundEventsNoOverlap.storyName="Overlapping Background Events - 'no-overlap'",OverlappingBackgroundEventsNoOverlap.args={defaultDate:new Date(2016,11,3),dayLayoutAlgorithm:"no-overlap",defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.WEEK,scrollToTime:new Date(2016,11,1,7,0),backgroundEvents:[{title:"First Event",start:new Date(2016,10,28,10,30),end:new Date(2016,10,28,18,0)},{title:"Second Event",start:new Date(2016,10,28,12,0),end:new Date(2016,10,28,16,30)},{title:"Third Event",start:new Date(2016,10,29,8,0),end:new Date(2016,10,29,21,0)},{title:"Fourth Event",start:new Date(2016,10,29,9,30),end:new Date(2016,10,29,19,30)},{title:"Fifth Event",start:new Date(2016,10,29,11,0),end:new Date(2016,10,29,18,0)},{title:"Sixth Event",start:new Date(2016,11,1,9,0),end:new Date(2016,11,1,14,0)},{title:"Seventh Event",start:new Date(2016,11,1,11,0),end:new Date(2016,11,1,16,0)},{title:"Eighth Event",start:new Date(2016,11,1,13,0),end:new Date(2016,11,1,18,0)}]},EventLayout.parameters=Object.assign({storySource:{source:"(args) => "}},EventLayout.parameters),FirstOfWeekAllDay.parameters=Object.assign({storySource:{source:"(args) => "}},FirstOfWeekAllDay.parameters),EndOfWeekAllDay.parameters=Object.assign({storySource:{source:"(args) => "}},EndOfWeekAllDay.parameters),EventAtStartOfWeek.parameters=Object.assign({storySource:{source:"(args) => "}},EventAtStartOfWeek.parameters),EventAtEndOfWeek.parameters=Object.assign({storySource:{source:"(args) => "}},EventAtEndOfWeek.parameters),EventsOnAConstrainedDayColumn.parameters=Object.assign({storySource:{source:"(args) => "}},EventsOnAConstrainedDayColumn.parameters),NoDuration.parameters=Object.assign({storySource:{source:"(args) => "}},NoDuration.parameters),DaySpan.parameters=Object.assign({storySource:{source:"(args) => "}},DaySpan.parameters),ZeroDurationOddities.parameters=Object.assign({storySource:{source:"() => {\n return (\n \n )\n}"}},ZeroDurationOddities.parameters),ZeroDurationOverlap.parameters=Object.assign({storySource:{source:"() => {\n return (\n \n )\n}"}},ZeroDurationOverlap.parameters),OverlappingBackgroundEventsOverlap.parameters=Object.assign({storySource:{source:"(args) => "}},OverlappingBackgroundEventsOverlap.parameters),OverlappingBackgroundEventsNoOverlap.parameters=Object.assign({storySource:{source:"(args) => "}},OverlappingBackgroundEventsNoOverlap.parameters);var __namedExportsOrder=["EventLayout","FirstOfWeekAllDay","EndOfWeekAllDay","EventAtStartOfWeek","EventAtEndOfWeek","EventsOnAConstrainedDayColumn","NoDuration","DaySpan","ZeroDurationOddities","ZeroDurationOverlap","OverlappingBackgroundEventsOverlap","OverlappingBackgroundEventsNoOverlap"];ZeroDurationOddities.__docgenInfo={description:"",methods:[],displayName:"ZeroDurationOddities"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/Layout.stories.js"]={name:"ZeroDurationOddities",docgenInfo:ZeroDurationOddities.__docgenInfo,path:"stories/Layout.stories.js"}),ZeroDurationOverlap.__docgenInfo={description:"",methods:[],displayName:"ZeroDurationOverlap"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/Layout.stories.js"]={name:"ZeroDurationOverlap",docgenInfo:ZeroDurationOverlap.__docgenInfo,path:"stories/Layout.stories.js"})},"./stories/Timeslots.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Selectable3Slot:function(){return Selectable3Slot},SelectableStep10x6Slot:function(){return SelectableStep10x6Slot},SelectableStep15x4Slot:function(){return SelectableStep15x4Slot},SelectableStep5x6Slot:function(){return SelectableStep5x6Slot},__namedExportsOrder:function(){return __namedExportsOrder}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/@storybook/addon-actions/dist/esm/index.js"),_src__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./src/index.js"),_helpers__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./stories/helpers/index.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/react/jsx-runtime.js");__webpack_exports__.default={title:"Additional Examples/Timeslots",component:_src__WEBPACK_IMPORTED_MODULE_3__.Vv,decorators:[function(Story){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div",{className:"height600",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(Story,{})})}]};var Template=function Template(args){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_helpers__WEBPACK_IMPORTED_MODULE_4__.Vv,Object.assign({},args))};Template.displayName="Template";var SelectableStep15x4Slot=Template.bind({});SelectableStep15x4Slot.storyName="selectable, step 15, 4 timeslots",SelectableStep15x4Slot.args={defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.WEEK,defaultDate:new Date,selectable:!0,timeslots:4,step:15,events:_helpers__WEBPACK_IMPORTED_MODULE_4__.AZ,onSelectEvent:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event selected"),onSelectSlot:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("slot selected")};var SelectableStep10x6Slot=Template.bind({});SelectableStep10x6Slot.storyName="selectable, step 10, 6 timeslots",SelectableStep10x6Slot.args={defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.WEEK,defaultDate:new Date,selectable:!0,timeslots:6,step:10,events:_helpers__WEBPACK_IMPORTED_MODULE_4__.AZ,onSelectEvent:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event selected"),onSelectSlot:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("slot selected")};var SelectableStep5x6Slot=Template.bind({});SelectableStep5x6Slot.storyName="selectable, step 5, 6 timeslots",SelectableStep5x6Slot.args={defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.WEEK,defaultDate:new Date,selectable:!0,timeslots:6,step:5,events:_helpers__WEBPACK_IMPORTED_MODULE_4__.AZ,onSelectEvent:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event selected"),onSelectSlot:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("slot selected")};var Selectable3Slot=Template.bind({});Selectable3Slot.storyName="selectable, 3 timeslots",Selectable3Slot.args={defaultView:_helpers__WEBPACK_IMPORTED_MODULE_4__.Pp.WEEK,defaultDate:new Date,selectable:!0,timeslots:3,events:_helpers__WEBPACK_IMPORTED_MODULE_4__.AZ,onSelectEvent:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("event selected"),onSelectSlot:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_2__.action)("slot selected")},SelectableStep15x4Slot.parameters=Object.assign({storySource:{source:"(args) => "}},SelectableStep15x4Slot.parameters),SelectableStep10x6Slot.parameters=Object.assign({storySource:{source:"(args) => "}},SelectableStep10x6Slot.parameters),SelectableStep5x6Slot.parameters=Object.assign({storySource:{source:"(args) => "}},SelectableStep5x6Slot.parameters),Selectable3Slot.parameters=Object.assign({storySource:{source:"(args) => "}},Selectable3Slot.parameters);var __namedExportsOrder=["SelectableStep15x4Slot","SelectableStep10x6Slot","SelectableStep5x6Slot","Selectable3Slot"]},"./stories/addons/dragAndDrop/basic.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example1:function(){return Example1},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return basic_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),toConsumableArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),events=(__webpack_require__("./node_modules/core-js/modules/es.array.find.js"),__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./stories/resources/events.js")),DemoLink_component=__webpack_require__("./stories/DemoLink.component.js"),dragAndDrop=__webpack_require__("./src/addons/dragAndDrop/index.js"),jsx_runtime=(__webpack_require__("./src/addons/dragAndDrop/styles.scss"),__webpack_require__("./node_modules/react/jsx-runtime.js")),DragAndDropCalendar=(0,dragAndDrop.A)(src.Vv);function DragAndDrop(_ref){var localizer=_ref.localizer,_useState=(0,react.useState)(events.A),_useState2=(0,slicedToArray.A)(_useState,2),myEvents=_useState2[0],setMyEvents=_useState2[1],moveEvent=(0,react.useCallback)((function(_ref2){var event=_ref2.event,start=_ref2.start,end=_ref2.end,_ref2$isAllDay=_ref2.isAllDay,droppedOnAllDaySlot=void 0!==_ref2$isAllDay&&_ref2$isAllDay,allDay=event.allDay;!allDay&&droppedOnAllDaySlot&&(event.allDay=!0),allDay&&!droppedOnAllDaySlot&&(event.allDay=!1),setMyEvents((function(prev){var _prev$find,existing=null!==(_prev$find=prev.find((function(ev){return ev.id===event.id})))&&void 0!==_prev$find?_prev$find:{},filtered=prev.filter((function(ev){return ev.id!==event.id}));return[].concat((0,toConsumableArray.A)(filtered),[Object.assign({},existing,{start:start,end:end,allDay:event.allDay})])}))}),[setMyEvents]),resizeEvent=(0,react.useCallback)((function(_ref3){var event=_ref3.event,start=_ref3.start,end=_ref3.end;setMyEvents((function(prev){var _prev$find2,existing=null!==(_prev$find2=prev.find((function(ev){return ev.id===event.id})))&&void 0!==_prev$find2?_prev$find2:{},filtered=prev.filter((function(ev){return ev.id!==event.id}));return[].concat((0,toConsumableArray.A)(filtered),[Object.assign({},existing,{start:start,end:end})])}))}),[setMyEvents]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,12)}),[]);return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"dnd",children:(0,jsx_runtime.jsx)("strong",{children:'Drag and Drop an "event" from one slot to another to "move" the event, or drag an event\'s drag handles to "resize" the event.'})}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(DragAndDropCalendar,{defaultDate:defaultDate,defaultView:src.Pp.MONTH,events:myEvents,localizer:localizer,onEventDrop:moveEvent,onEventResize:resizeEvent,popup:!0,resizable:!0})})]})}DragAndDrop.displayName="DragAndDrop",DragAndDrop.__docgenInfo={description:"",methods:[],displayName:"DragAndDrop",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/dnd.js"]={name:"DragAndDrop",docgenInfo:DragAndDrop.__docgenInfo,path:"stories/demos/exampleCode/dnd.js"});var basic_stories={title:"Addons/Drag and Drop",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example1=function Example1(){return(0,jsx_runtime.jsx)(DragAndDrop,{localizer:localizer})};Example1.displayName="Example1",Example1.storyName="Basic Drag n Drop",Example1.parameters=Object.assign({storySource:{source:"function Example1() {\n return \n}"}},Example1.parameters);var __namedExportsOrder=["Example1"];Example1.__docgenInfo={description:"",methods:[],displayName:"Example1"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/basic.stories.js"]={name:"Example1",docgenInfo:Example1.__docgenInfo,path:"stories/addons/dragAndDrop/basic.stories.js"})},"./stories/addons/dragAndDrop/outside.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example3:function(){return Example3},__namedExportsOrder:function(){return __namedExportsOrder}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/moment/moment.js"),moment__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_2__),_src__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./src/index.js"),_demos_exampleCode_dndOutsideSource__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./stories/demos/exampleCode/dndOutsideSource.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/react/jsx-runtime.js");__webpack_exports__.default={title:"Addons/Drag and Drop",component:_src__WEBPACK_IMPORTED_MODULE_3__.Vv,parameters:{docs:{page:null}}};var localizer=(0,_src__WEBPACK_IMPORTED_MODULE_3__.ye)(moment__WEBPACK_IMPORTED_MODULE_2___default()),Example3=function Example3(){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_demos_exampleCode_dndOutsideSource__WEBPACK_IMPORTED_MODULE_4__.A,{localizer:localizer})};Example3.displayName="Example3",Example3.storyName="Drag and Drop (from outside calendar)",Example3.parameters=Object.assign({storySource:{source:"function Example3() {\n return \n}"}},Example3.parameters);var __namedExportsOrder=["Example3"];Example3.__docgenInfo={description:"",methods:[],displayName:"Example3"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/outside.stories.js"]={name:"Example3",docgenInfo:Example3.__docgenInfo,path:"stories/addons/dragAndDrop/outside.stories.js"})},"./stories/addons/dragAndDrop/props/dragFromOutsideItem.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DragFromOutsideItem:function(){return DragFromOutsideItem},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return dragFromOutsideItem_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),dndOutsideSource=__webpack_require__("./stories/demos/exampleCode/dndOutsideSource.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"dragfromoutsideitem"},"dragFromOutsideItem"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function () => boolean"))),(0,esm.yg)("p",null,"A callback to get a temporary ",(0,esm.yg)("inlineCode",{parentName:"p"},"event")," to display in a slot in the process of dragging from outside. This is not required for Drag and Drop to function, but provides a nice visual cue to the user when dragging in an item from outside of the Calendar."),(0,esm.yg)("p",null,"Tip: Toggle the checkbox, in the example, and drag an outside item in. Do this from both checkbox states to see the difference in effect."),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--drag-from-outside-item",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),dragFromOutsideItem_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),DragFromOutsideItem=function DragFromOutsideItem(){return(0,jsx_runtime.jsx)(dndOutsideSource.A,{localizer:localizer})};DragFromOutsideItem.displayName="DragFromOutsideItem",DragFromOutsideItem.storyName="dragFromOutsideItem",DragFromOutsideItem.parameters=Object.assign({storySource:{source:"function DragFromOutsideItem() {\n return \n}"}},DragFromOutsideItem.parameters);var __namedExportsOrder=["DragFromOutsideItem"];DragFromOutsideItem.__docgenInfo={description:"",methods:[],displayName:"DragFromOutsideItem"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/dragFromOutsideItem.stories.js"]={name:"DragFromOutsideItem",docgenInfo:DragFromOutsideItem.__docgenInfo,path:"stories/addons/dragAndDrop/props/dragFromOutsideItem.stories.js"})},"./stories/addons/dragAndDrop/props/draggableAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DraggableAccessor:function(){return DraggableAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return draggableAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),dndOutsideSource=__webpack_require__("./stories/demos/exampleCode/dndOutsideSource.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"draggableaccessor"},"draggableAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string|function (event) => boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"() => true"))),(0,esm.yg)("p",null,"When used, can determine whether an 'event' is draggable"),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--draggable-accessor",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),draggableAccessor_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),DraggableAccessor=function DraggableAccessor(){return(0,jsx_runtime.jsx)(dndOutsideSource.A,{localizer:localizer})};DraggableAccessor.displayName="DraggableAccessor",DraggableAccessor.storyName="draggableAccessor",DraggableAccessor.parameters=Object.assign({storySource:{source:"function DraggableAccessor() {\n return \n}"}},DraggableAccessor.parameters);var __namedExportsOrder=["DraggableAccessor"];DraggableAccessor.__docgenInfo={description:"",methods:[],displayName:"DraggableAccessor"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/draggableAccessor.stories.js"]={name:"DraggableAccessor",docgenInfo:DraggableAccessor.__docgenInfo,path:"stories/addons/dragAndDrop/props/draggableAccessor.stories.js"})},"./stories/addons/dragAndDrop/props/onDragOver.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnDragOver:function(){return OnDragOver},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onDragOver_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),dndOutsideSource=__webpack_require__("./stories/demos/exampleCode/dndOutsideSource.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"ondragover"},"onDragOver"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (dragEvent: SyntheticEvent) => any"))),(0,esm.yg)("p",null,"If an ",(0,esm.yg)("inlineCode",{parentName:"p"},"onDragOver")," callback ",(0,esm.yg)("em",{parentName:"p"},"is")," passed, then it can discriminate as to whether a draggable item is droppable on the calendar. To designate a draggable item as droppable, call ",(0,esm.yg)("inlineCode",{parentName:"p"},"event.preventDefault")," inside ",(0,esm.yg)("inlineCode",{parentName:"p"},"onDragOver"),". If ",(0,esm.yg)("inlineCode",{parentName:"p"},"event.preventDefault")," is not called in the ",(0,esm.yg)("inlineCode",{parentName:"p"},"onDragOver")," callback, then the draggable item will not be droppable on the calendar."),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--on-drag-over",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),onDragOver_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),OnDragOver=function OnDragOver(){return(0,jsx_runtime.jsx)(dndOutsideSource.A,{localizer:localizer})};OnDragOver.displayName="OnDragOver",OnDragOver.storyName="onDragOver",OnDragOver.parameters=Object.assign({storySource:{source:"function OnDragOver() {\n return \n}"}},OnDragOver.parameters);var __namedExportsOrder=["OnDragOver"];OnDragOver.__docgenInfo={description:"",methods:[],displayName:"OnDragOver"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/onDragOver.stories.js"]={name:"OnDragOver",docgenInfo:OnDragOver.__docgenInfo,path:"stories/addons/dragAndDrop/props/onDragOver.stories.js"})},"./stories/addons/dragAndDrop/props/onDragStart.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnDragStart:function(){return OnDragStart},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onDragStart_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),dndOutsideSource=__webpack_require__("./stories/demos/exampleCode/dndOutsideSource.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"ondragstart"},"onDragStart"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function ({ event, action, direction }) => any"))),(0,esm.yg)("p",null,"A callback fired when user begins to drag an event."),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--on-drag-start",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),onDragStart_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),OnDragStart=function OnDragStart(){return(0,jsx_runtime.jsx)(dndOutsideSource.A,{localizer:localizer})};OnDragStart.displayName="OnDragStart",OnDragStart.storyName="onDragStart",OnDragStart.parameters=Object.assign({storySource:{source:"function OnDragStart() {\n return \n}"}},OnDragStart.parameters);var __namedExportsOrder=["OnDragStart"];OnDragStart.__docgenInfo={description:"",methods:[],displayName:"OnDragStart"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/onDragStart.stories.js"]={name:"OnDragStart",docgenInfo:OnDragStart.__docgenInfo,path:"stories/addons/dragAndDrop/props/onDragStart.stories.js"})},"./stories/addons/dragAndDrop/props/onDropFromOutside.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnDropFromOutside:function(){return OnDropFromOutside},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onDropFromOutside_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),dndOutsideSource=__webpack_require__("./stories/demos/exampleCode/dndOutsideSource.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"ondropfromoutside"},"onDropFromOutside"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function ({ start, end, allDay }) => any"))),(0,esm.yg)("p",null,"A callback fired when user drops an item onto the Calendar from outside of the Calendar. Developers will typically use this method to add new items to the Calendar's ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events"),"."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Important:")," The callback does ",(0,esm.yg)("strong",{parentName:"p"},"not")," receive the element being dropped. It only receives the details of the slot an element was dropped on."),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--on-drop-from-outside",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),onDropFromOutside_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),OnDropFromOutside=function OnDropFromOutside(){return(0,jsx_runtime.jsx)(dndOutsideSource.A,{localizer:localizer})};OnDropFromOutside.displayName="OnDropFromOutside",OnDropFromOutside.storyName="onDropFromOutside",OnDropFromOutside.parameters=Object.assign({storySource:{source:"function OnDropFromOutside() {\n return \n}"}},OnDropFromOutside.parameters);var __namedExportsOrder=["OnDropFromOutside"];OnDropFromOutside.__docgenInfo={description:"",methods:[],displayName:"OnDropFromOutside"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/onDropFromOutside.stories.js"]={name:"OnDropFromOutside",docgenInfo:OnDropFromOutside.__docgenInfo,path:"stories/addons/dragAndDrop/props/onDropFromOutside.stories.js"})},"./stories/addons/dragAndDrop/props/onEventDrop.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnEventDrop:function(){return OnEventDrop},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onEventDrop_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),dndOutsideSource=__webpack_require__("./stories/demos/exampleCode/dndOutsideSource.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"oneventdrop"},"onEventDrop"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function ({ event, start, end, allDay }) => any"))),(0,esm.yg)("p",null,"A callback fired when user drops an item from one slot to another from within the Calendar. Developers will typically use this method to update an item's ",(0,esm.yg)("inlineCode",{parentName:"p"},"start")," and ",(0,esm.yg)("inlineCode",{parentName:"p"},"end")," in ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events"),"."),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--on-event-drop",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),onEventDrop_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),OnEventDrop=function OnEventDrop(){return(0,jsx_runtime.jsx)(dndOutsideSource.A,{localizer:localizer})};OnEventDrop.displayName="OnEventDrop",OnEventDrop.storyName="onEventDrop",OnEventDrop.parameters=Object.assign({storySource:{source:"function OnEventDrop() {\n return \n}"}},OnEventDrop.parameters);var __namedExportsOrder=["OnEventDrop"];OnEventDrop.__docgenInfo={description:"",methods:[],displayName:"OnEventDrop"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/onEventDrop.stories.js"]={name:"OnEventDrop",docgenInfo:OnEventDrop.__docgenInfo,path:"stories/addons/dragAndDrop/props/onEventDrop.stories.js"})},"./stories/addons/dragAndDrop/props/onEventResize.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnEventResize:function(){return OnEventResize},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onEventResize_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),resizable=__webpack_require__("./stories/demos/exampleCode/resizable.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"oneventresize"},"onEventResize"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function ({ event, start, end }) => any"))),(0,esm.yg)("p",null,"A callback fired when user resizes an event. Developers will typically use this method to update an item's ",(0,esm.yg)("inlineCode",{parentName:"p"},"start")," and ",(0,esm.yg)("inlineCode",{parentName:"p"},"end")," in ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events"),"."),(0,esm.yg)("p",null,"The ",(0,esm.yg)(addon_links_react.A,{kind:"addons-drag-and-drop-props",story:"resizable",mdxType:"LinkTo"},"resizable")," prop must be ",(0,esm.yg)("inlineCode",{parentName:"p"},"true")," (the default) to use the method."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Note:")," ",(0,esm.yg)("inlineCode",{parentName:"p"},"resizable")," events must also be draggable. You cannot resize an event with a ",(0,esm.yg)(addon_links_react.A,{kind:"addons-drag-and-drop-props",story:"draggable-accessor",mdxType:"LinkTo"},"draggableAccessor")," prop of ",(0,esm.yg)("inlineCode",{parentName:"p"},"false"),"."),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--on-event-resize",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),onEventResize_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),OnEventResize=function OnEventResize(){return(0,jsx_runtime.jsx)(resizable.A,{localizer:localizer})};OnEventResize.displayName="OnEventResize",OnEventResize.storyName="onEventResize",OnEventResize.parameters=Object.assign({storySource:{source:"function OnEventResize() {\n return \n}"}},OnEventResize.parameters);var __namedExportsOrder=["OnEventResize"];OnEventResize.__docgenInfo={description:"",methods:[],displayName:"OnEventResize"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/onEventResize.stories.js"]={name:"OnEventResize",docgenInfo:OnEventResize.__docgenInfo,path:"stories/addons/dragAndDrop/props/onEventResize.stories.js"})},"./stories/addons/dragAndDrop/props/resizable.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Resizable:function(){return Resizable},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return resizable_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),resizable=__webpack_require__("./stories/demos/exampleCode/resizable.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"resizable"},"resizable"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"true"))),(0,esm.yg)("p",null,"Determines if events may be resized on the Calendar. Used in conjunction with ",(0,esm.yg)(addon_links_react.A,{kind:"addons-drag-and-drop-props",story:"on-event-resize",mdxType:"LinkTo"},"onEventResize"),". When used with the ",(0,esm.yg)(addon_links_react.A,{kind:"addons-drag-and-drop-props",story:"resizable-accessor",mdxType:"LinkTo"},"resizableAccessor")," the developer has even greater control."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Note:")," ",(0,esm.yg)("inlineCode",{parentName:"p"},"resizable")," events must also be draggable. You cannot resize an event with a ",(0,esm.yg)(addon_links_react.A,{kind:"addons-drag-and-drop-props",story:"draggable-accessor",mdxType:"LinkTo"},"draggableAccessor")," prop of ",(0,esm.yg)("inlineCode",{parentName:"p"},"false"),"."),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--resizable",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),resizable_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),Resizable=function Resizable(){return(0,jsx_runtime.jsx)(resizable.A,{localizer:localizer})};Resizable.displayName="Resizable",Resizable.storyName="resizable",Resizable.parameters=Object.assign({storySource:{source:"function Resizable() {\n return \n}"}},Resizable.parameters);var __namedExportsOrder=["Resizable"];Resizable.__docgenInfo={description:"",methods:[],displayName:"Resizable"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/resizable.stories.js"]={name:"Resizable",docgenInfo:Resizable.__docgenInfo,path:"stories/addons/dragAndDrop/props/resizable.stories.js"})},"./stories/addons/dragAndDrop/props/resizableAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ResizableAccessor:function(){return ResizableAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return resizableAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),resizable=__webpack_require__("./stories/demos/exampleCode/resizable.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"resizableaccessor"},"resizableAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string|function (event) => boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"() => true"))),(0,esm.yg)("p",null,"Determines if an event is resizable."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Note:")," ",(0,esm.yg)("inlineCode",{parentName:"p"},"resizable")," events must also be draggable. You cannot resize an event with a ",(0,esm.yg)(addon_links_react.A,{kind:"addons-drag-and-drop-props",story:"draggable-accessor",mdxType:"LinkTo"},"draggableAccessor")," prop of ",(0,esm.yg)("inlineCode",{parentName:"p"},"false"),"."),(0,esm.yg)(dist_esm.gG,{id:"addons-drag-and-drop-props--resizable",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),resizableAccessor_stories={title:"Addons/Drag and Drop/props",component:src.Vv,parameters:{docs:{page:MDXContent}}},localizer=(0,src.ye)(moment_default()),ResizableAccessor=function ResizableAccessor(){return(0,jsx_runtime.jsx)(resizable.A,{localizer:localizer})};ResizableAccessor.displayName="ResizableAccessor",ResizableAccessor.storyName="resizableAccessor",ResizableAccessor.parameters=Object.assign({storySource:{source:"function ResizableAccessor() {\n return \n}"}},ResizableAccessor.parameters);var __namedExportsOrder=["ResizableAccessor"];ResizableAccessor.__docgenInfo={description:"",methods:[],displayName:"ResizableAccessor"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/props/resizableAccessor.stories.js"]={name:"ResizableAccessor",docgenInfo:ResizableAccessor.__docgenInfo,path:"stories/addons/dragAndDrop/props/resizableAccessor.stories.js"})},"./stories/addons/dragAndDrop/resource.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example2:function(){return Example2},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return resource_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),toConsumableArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),DemoLink_component=(__webpack_require__("./node_modules/core-js/modules/es.set.js"),__webpack_require__("./node_modules/core-js/modules/es.object.to-string.js"),__webpack_require__("./node_modules/core-js/modules/es.string.iterator.js"),__webpack_require__("./node_modules/core-js/modules/es.array.iterator.js"),__webpack_require__("./node_modules/core-js/modules/web.dom-collections.iterator.js"),__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/es.array.find.js"),__webpack_require__("./stories/DemoLink.component.js")),dragAndDrop=__webpack_require__("./src/addons/dragAndDrop/index.js"),jsx_runtime=(__webpack_require__("./src/addons/dragAndDrop/styles.scss"),__webpack_require__("./node_modules/react/jsx-runtime.js")),DragAndDropCalendar=(0,dragAndDrop.A)(src.Vv),events=[{id:0,title:"Board meeting",start:new Date(2018,0,29,9,0,0),end:new Date(2018,0,29,13,0,0),resourceId:[1,2]},{id:1,title:"MS training",start:new Date(2018,0,29,14,0,0),end:new Date(2018,0,29,16,30,0),resourceId:2},{id:2,title:"Team lead meeting",start:new Date(2018,0,29,8,30,0),end:new Date(2018,0,29,12,30,0),resourceId:3},{id:10,title:"Board meeting",start:new Date(2018,0,30,23,0,0),end:new Date(2018,0,30,23,59,0),resourceId:1},{id:11,title:"Birthday Party",start:new Date(2018,0,30,7,0,0),end:new Date(2018,0,30,10,30,0),resourceId:4},{id:12,title:"Board meeting",start:new Date(2018,0,29,23,59,0),end:new Date(2018,0,30,13,0,0),resourceId:1},{id:13,title:"Board meeting",start:new Date(2018,0,29,23,50,0),end:new Date(2018,0,30,13,0,0),resourceId:2},{id:14,title:"Board meeting",start:new Date(2018,0,29,23,40,0),end:new Date(2018,0,30,13,0,0),resourceId:4}],resourceMap=[{resourceId:1,resourceTitle:"Board room"},{resourceId:2,resourceTitle:"Training room"},{resourceId:3,resourceTitle:"Meeting room 1"},{resourceId:4,resourceTitle:"Meeting room 2"}];function DnDResource(_ref){var localizer=_ref.localizer,_useState=(0,react.useState)(events),_useState2=(0,slicedToArray.A)(_useState,2),myEvents=_useState2[0],setMyEvents=_useState2[1],_useState3=(0,react.useState)(!0),_useState4=(0,slicedToArray.A)(_useState3,2),copyEvent=_useState4[0],setCopyEvent=_useState4[1],toggleCopyEvent=(0,react.useCallback)((function(){return setCopyEvent((function(val){return!val}))}),[]),moveEvent=(0,react.useCallback)((function(_ref2){var event=_ref2.event,start=_ref2.start,end=_ref2.end,resourceId=_ref2.resourceId,_ref2$isAllDay=_ref2.isAllDay,droppedOnAllDaySlot=void 0!==_ref2$isAllDay&&_ref2$isAllDay,allDay=event.allDay;if(!allDay&&droppedOnAllDaySlot&&(event.allDay=!0),Array.isArray(event.resourceId))if(copyEvent)resourceId=(0,toConsumableArray.A)(new Set([].concat((0,toConsumableArray.A)(event.resourceId),[resourceId])));else{var filtered=event.resourceId.filter((function(ev){return ev!==event.sourceResource}));resourceId=(0,toConsumableArray.A)(new Set([].concat((0,toConsumableArray.A)(filtered),[resourceId])))}else copyEvent&&(resourceId=(0,toConsumableArray.A)(new Set([event.resourceId,resourceId])));setMyEvents((function(prev){var _prev$find,existing=null!==(_prev$find=prev.find((function(ev){return ev.id===event.id})))&&void 0!==_prev$find?_prev$find:{},filtered=prev.filter((function(ev){return ev.id!==event.id}));return[].concat((0,toConsumableArray.A)(filtered),[Object.assign({},existing,{start:start,end:end,resourceId:resourceId,allDay:allDay})])}))}),[setMyEvents,copyEvent]),resizeEvent=(0,react.useCallback)((function(_ref3){var event=_ref3.event,start=_ref3.start,end=_ref3.end;setMyEvents((function(prev){var _prev$find2,existing=null!==(_prev$find2=prev.find((function(ev){return ev.id===event.id})))&&void 0!==_prev$find2?_prev$find2:{},filtered=prev.filter((function(ev){return ev.id!==event.id}));return[].concat((0,toConsumableArray.A)(filtered),[Object.assign({},existing,{start:start,end:end})])}))}),[setMyEvents]),_useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2018,0,29),scrollToTime:new Date(1972,0,1,8)}}),[]),defaultDate=_useMemo.defaultDate,scrollToTime=_useMemo.scrollToTime;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsxs)(DemoLink_component.A,{fileName:"dndresource",children:[(0,jsx_runtime.jsx)("strong",{children:'Drag and Drop an "event" from one resource slot to another.'}),(0,jsx_runtime.jsx)("div",{style:{margin:"10px 0 20px 0"},children:(0,jsx_runtime.jsxs)("label",{children:[(0,jsx_runtime.jsx)("input",{type:"checkbox",checked:copyEvent,onChange:toggleCopyEvent}),'Keep copy of dragged "source" event in its original resource slot.']})})]}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(DragAndDropCalendar,{defaultDate:defaultDate,defaultView:src.Pp.DAY,events:myEvents,localizer:localizer,onEventDrop:moveEvent,onEventResize:resizeEvent,resizable:!0,resourceIdAccessor:"resourceId",resources:resourceMap,resourceTitleAccessor:"resourceTitle",scrollToTime:scrollToTime,selectable:!0,showMultiDayTimes:!0,step:15})})]})}DnDResource.displayName="DnDResource",DnDResource.__docgenInfo={description:"",methods:[],displayName:"DnDResource",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/dndresource.js"]={name:"DnDResource",docgenInfo:DnDResource.__docgenInfo,path:"stories/demos/exampleCode/dndresource.js"});var resource_stories={title:"Addons/Drag and Drop",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example2=function Example2(){return(0,jsx_runtime.jsx)(DnDResource,{localizer:localizer})};Example2.displayName="Example2",Example2.storyName="Resource Drag and Drop",Example2.parameters=Object.assign({storySource:{source:"function Example2() {\n return \n}"}},Example2.parameters);var __namedExportsOrder=["Example2"];Example2.__docgenInfo={description:"",methods:[],displayName:"Example2"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/addons/dragAndDrop/resource.stories.js"]={name:"Example2",docgenInfo:Example2.__docgenInfo,path:"stories/addons/dragAndDrop/resource.stories.js"})},"./stories/demos/backgroundEvents.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example10:function(){return Example10},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return backgroundEvents_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),DemoLink_component=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.keys.js"),__webpack_require__("./stories/DemoLink.component.js")),events=__webpack_require__("./stories/resources/events.js"),backgroundEvents=[{id:0,title:"Available for Clients",start:new Date(2015,3,13,6),end:new Date(2015,3,13,18)}],dates=__webpack_require__("./src/utils/dates.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),allViews=Object.keys(src.Pp).map((function(k){return src.Pp[k]}));function BackgroundEventsCalendar(_ref){var localizer=_ref.localizer,_useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),max:dates.WQ(dates.pJ(new Date(2015,17,1),"day"),-1,"hours")}}),[]),defaultDate=_useMemo.defaultDate,max=_useMemo.max;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"backgroundEvents"}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{backgroundEvents:backgroundEvents,dayLayoutAlgorithm:"no-overlap",defaultDate:defaultDate,defaultView:src.Pp.DAY,events:events.A,localizer:localizer,max:max,showMultiDayTimes:!0,step:60,views:allViews})})]})}BackgroundEventsCalendar.displayName="BackgroundEventsCalendar",BackgroundEventsCalendar.__docgenInfo={description:"",methods:[],displayName:"BackgroundEventsCalendar",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/backgroundEvents.js"]={name:"BackgroundEventsCalendar",docgenInfo:BackgroundEventsCalendar.__docgenInfo,path:"stories/demos/exampleCode/backgroundEvents.js"});var backgroundEvents_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example10=function Example10(){return(0,jsx_runtime.jsx)(BackgroundEventsCalendar,{localizer:localizer})};Example10.displayName="Example10",Example10.storyName="Background Events",Example10.parameters=Object.assign({storySource:{source:"function Example10() {\n return \n}"}},Example10.parameters);var __namedExportsOrder=["Example10"];Example10.__docgenInfo={description:"",methods:[],displayName:"Example10"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/backgroundEvents.stories.js"]={name:"Example10",docgenInfo:Example10.__docgenInfo,path:"stories/demos/backgroundEvents.stories.js"})},"./stories/demos/basic.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example1:function(){return Example1},__namedExportsOrder:function(){return __namedExportsOrder}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/moment/moment.js"),moment__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_2__),_src__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./src/index.js"),_exampleCode_basic__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./stories/demos/exampleCode/basic.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/react/jsx-runtime.js");__webpack_exports__.default={title:"Examples",component:_src__WEBPACK_IMPORTED_MODULE_3__.Vv,parameters:{docs:{page:null}}};var localizer=(0,_src__WEBPACK_IMPORTED_MODULE_3__.ye)(moment__WEBPACK_IMPORTED_MODULE_2___default()),Example1=function Example1(){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_exampleCode_basic__WEBPACK_IMPORTED_MODULE_4__.A,{localizer:localizer})};Example1.displayName="Example1",Example1.storyName="Basic Demo",Example1.parameters=Object.assign({storySource:{source:"function Example1() {\n return \n}"}},Example1.parameters);var __namedExportsOrder=["Example1"];Example1.__docgenInfo={description:"",methods:[],displayName:"Example1"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/basic.stories.js"]={name:"Example1",docgenInfo:Example1.__docgenInfo,path:"stories/demos/basic.stories.js"})},"./stories/demos/cultures.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example5:function(){return Example5},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return cultures_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),DemoLink_component=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./stories/DemoLink.component.js")),events=__webpack_require__("./stories/resources/events.js"),Layout=__webpack_require__("./node_modules/react-tackle-box/Layout.js"),Layout_default=__webpack_require__.n(Layout),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");__webpack_require__("./node_modules/globalize/lib/cultures/globalize.culture.en-GB.js"),__webpack_require__("./node_modules/globalize/lib/cultures/globalize.culture.es.js"),__webpack_require__("./node_modules/globalize/lib/cultures/globalize.culture.fr.js"),__webpack_require__("./node_modules/globalize/lib/cultures/globalize.culture.ar-AE.js");var cultures=["en","en-GB","es","fr","ar-AE"],lang={en:null,"en-GB":null,es:{week:"Semana",work_week:"Semana de trabajo",day:"Día",month:"Mes",previous:"Atrás",next:"Después",today:"Hoy",agenda:"El Diario",showMore:function showMore(total){return"+".concat(total," más")}},fr:{week:"La semaine",work_week:"Semaine de travail",day:"Jour",month:"Mois",previous:"Antérieur",next:"Prochain",today:"Aujourd'hui",agenda:"Ordre du jour",showMore:function showMore(total){return"+".concat(total," plus")}},"ar-AE":{week:"أسبوع",work_week:"أسبوع العمل",day:"يوم",month:"شهر",previous:"سابق",next:"التالي",today:"اليوم",agenda:"جدول أعمال",showMore:function showMore(total){return"+".concat(total," إضافي")}}};function CulturesDemo(_ref){var localizer=_ref.localizer,_useState=(0,react.useState)("fr"),_useState2=(0,slicedToArray.A)(_useState,2),culture=_useState2[0],setCulture=_useState2[1],_useState3=(0,react.useState)(!1),_useState4=(0,slicedToArray.A)(_useState3,2),rightToLeft=_useState4[0],setRightToLeft=_useState4[1],cultureOnClick=(0,react.useCallback)((function(_ref2){var value=_ref2.target.value;setCulture(value),setRightToLeft("ar-AE"===value)}),[setCulture]),_useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,1),messages:lang[culture]}}),[culture]),defaultDate=_useMemo.defaultDate,messages=_useMemo.messages;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"cultures",children:(0,jsx_runtime.jsxs)(Layout_default(),{direction:"column",align:"center",children:[(0,jsx_runtime.jsx)("label",{children:"Select a Culture"})," ",(0,jsx_runtime.jsx)("select",{className:"form-control",style:{width:200,display:"inline-block"},defaultValue:"fr",onChange:cultureOnClick,children:cultures.map((function(c,idx){return(0,jsx_runtime.jsx)("option",{value:c,children:c},idx)}))})]})}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{culture:culture,defaultDate:defaultDate,events:events.A,localizer:localizer,messages:messages,rtl:rightToLeft})})]})}CulturesDemo.displayName="CulturesDemo",CulturesDemo.__docgenInfo={description:"",methods:[],displayName:"CulturesDemo",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/cultures.js"]={name:"CulturesDemo",docgenInfo:CulturesDemo.__docgenInfo,path:"stories/demos/exampleCode/cultures.js"});var cultures_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example5=function Example5(){return(0,jsx_runtime.jsx)(CulturesDemo,{localizer:localizer})};Example5.displayName="Example5",Example5.storyName="Localization",Example5.parameters=Object.assign({storySource:{source:"function Example5() {\n return \n}"}},Example5.parameters);var __namedExportsOrder=["Example5"];Example5.__docgenInfo={description:"",methods:[],displayName:"Example5"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/cultures.stories.js"]={name:"Example5",docgenInfo:Example5.__docgenInfo,path:"stories/demos/cultures.stories.js"})},"./stories/demos/customView.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example9:function(){return Example9},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return customView_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),objectWithoutProperties=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),date_arithmetic=__webpack_require__("./node_modules/date-arithmetic/index.js"),TimeGrid=__webpack_require__("./src/TimeGrid.js"),events=__webpack_require__("./stories/resources/events.js"),DemoLink_component=__webpack_require__("./stories/DemoLink.component.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),_excluded=["date","localizer","max","min","scrollToTime"];function MyWeek(_ref){var date=_ref.date,localizer=_ref.localizer,_ref$max=_ref.max,max=void 0===_ref$max?localizer.endOf(new Date,"day"):_ref$max,_ref$min=_ref.min,min=void 0===_ref$min?localizer.startOf(new Date,"day"):_ref$min,_ref$scrollToTime=_ref.scrollToTime,scrollToTime=void 0===_ref$scrollToTime?localizer.startOf(new Date,"day"):_ref$scrollToTime,props=(0,objectWithoutProperties.A)(_ref,_excluded),currRange=(0,react.useMemo)((function(){return MyWeek.range(date,{localizer:localizer})}),[date,localizer]);return(0,jsx_runtime.jsx)(TimeGrid.A,Object.assign({date:date,eventOffset:15,localizer:localizer,max:max,min:min,range:currRange,scrollToTime:scrollToTime},props))}function CustomView(_ref4){var localizer=_ref4.localizer,_useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,1),views:{month:!0,week:MyWeek}}}),[]),defaultDate=_useMemo.defaultDate,views=_useMemo.views;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"customView",children:(0,jsx_runtime.jsx)("strong",{children:"The Calendar below implements a custom 3-day week view"})}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,localizer:localizer,views:views})})]})}MyWeek.displayName="MyWeek",MyWeek.range=function(date,_ref2){for(var localizer=_ref2.localizer,start=date,end=date_arithmetic.add(start,2,"day"),current=start,range=[];localizer.lte(current,end,"day");)range.push(current),current=localizer.add(current,1,"day");return range},MyWeek.navigate=function(date,action,_ref3){var localizer=_ref3.localizer;switch(action){case src.C5.PREVIOUS:return localizer.add(date,-3,"day");case src.C5.NEXT:return localizer.add(date,3,"day");default:return date}},MyWeek.title=function(date){return"My awesome week: ".concat(date.toLocaleDateString())},CustomView.displayName="CustomView",CustomView.__docgenInfo={description:"",methods:[],displayName:"CustomView",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/customView.js"]={name:"CustomView",docgenInfo:CustomView.__docgenInfo,path:"stories/demos/exampleCode/customView.js"});var customView_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example9=function Example9(){return(0,jsx_runtime.jsx)(CustomView,{localizer:localizer})};Example9.displayName="Example9",Example9.storyName="Custom Calendar Views",Example9.parameters=Object.assign({storySource:{source:"function Example9() {\n return \n}"}},Example9.parameters);var __namedExportsOrder=["Example9"];Example9.__docgenInfo={description:"",methods:[],displayName:"Example9"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/customView.stories.js"]={name:"Example9",docgenInfo:Example9.__docgenInfo,path:"stories/demos/customView.stories.js"})},"./stories/demos/dayjs.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DayjsLocalizer:function(){return DayjsLocalizer},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return dayjs_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),dayjs_min=__webpack_require__("./node_modules/dayjs/dayjs.min.js"),dayjs_min_default=__webpack_require__.n(dayjs_min),src=__webpack_require__("./src/index.js"),objectDestructuringEmpty=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js"),esm_extends=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/extends.js"),DemoLink_component=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.keys.js"),__webpack_require__("./stories/DemoLink.component.js")),events=__webpack_require__("./stories/resources/events.js"),timezone=__webpack_require__("./node_modules/dayjs/plugin/timezone.js"),timezone_default=__webpack_require__.n(timezone),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");dayjs_min_default().extend(timezone_default());var djLocalizer=(0,src.vH)(dayjs_min_default()),ColoredDateCellWrapper=function ColoredDateCellWrapper(_ref){var children=_ref.children;return react.cloneElement(react.Children.only(children),{style:{backgroundColor:"lightblue"}})};function Dayjs(_ref2){var props=(0,esm_extends.A)({},((0,objectDestructuringEmpty.A)(_ref2),_ref2)),_useMemo=(0,react.useMemo)((function(){return{components:{timeSlotWrapper:ColoredDateCellWrapper},defaultDate:new Date(2015,3,1),max:dayjs_min_default()().endOf("day").subtract(1,"hours").toDate(),views:Object.keys(src.Pp).map((function(k){return src.Pp[k]}))}}),[]),components=_useMemo.components,defaultDate=_useMemo.defaultDate,max=_useMemo.max,views=_useMemo.views;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"dayjs"}),(0,jsx_runtime.jsx)("div",Object.assign({className:"height600"},props,{children:(0,jsx_runtime.jsx)(src.Vv,{components:components,defaultDate:defaultDate,events:events.A,localizer:djLocalizer,max:max,showMultiDayTimes:!0,step:60,views:views})}))]})}Dayjs.displayName="Dayjs",Dayjs.__docgenInfo={description:"",methods:[],displayName:"Dayjs"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/dayjs.js"]={name:"Dayjs",docgenInfo:Dayjs.__docgenInfo,path:"stories/demos/exampleCode/dayjs.js"});var dayjs_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.vH)(dayjs_min_default()),DayjsLocalizer=function DayjsLocalizer(){return(0,jsx_runtime.jsx)(Dayjs,{localizer:localizer})};DayjsLocalizer.displayName="DayjsLocalizer",DayjsLocalizer.parameters=Object.assign({storySource:{source:"function DayjsLocalizer() {\n return \n}"}},DayjsLocalizer.parameters);var __namedExportsOrder=["DayjsLocalizer"];DayjsLocalizer.__docgenInfo={description:"",methods:[],displayName:"DayjsLocalizer"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/dayjs.stories.js"]={name:"DayjsLocalizer",docgenInfo:DayjsLocalizer.__docgenInfo,path:"stories/demos/dayjs.stories.js"})},"./stories/demos/luxon.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{LuxonLocalizer:function(){return LuxonLocalizer},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return luxon_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),luxon=__webpack_require__("./node_modules/luxon/src/luxon.js"),src=__webpack_require__("./src/index.js"),toConsumableArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),DemoLink_component=__webpack_require__("./stories/DemoLink.component.js"),events=__webpack_require__("./stories/resources/events.js"),TimezoneSelect=__webpack_require__("./stories/demos/TimezoneSelect.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),defaultTZ=luxon.c9.local().zoneName;function Luxon(){var _useState=(0,react.useState)(defaultTZ),_useState2=(0,slicedToArray.A)(_useState,2),timezone=_useState2[0],setTimezone=_useState2[1],_useMemo=(0,react.useMemo)((function(){return luxon.wB.defaultZone=timezone,{defaultDate:(str="2015-04-13",DateTimeObj=luxon.c9,DateTimeObj.fromISO(str).toJSDate()),getNow:function getNow(){return luxon.c9.local().toJSDate()},localizer:(0,src.AW)(luxon.c9),myEvents:(0,toConsumableArray.A)(events.A),scrollToTime:luxon.c9.local().toJSDate()};var str,DateTimeObj}),[timezone]),defaultDate=_useMemo.defaultDate,getNow=_useMemo.getNow,localizer=_useMemo.localizer,myEvents=_useMemo.myEvents,scrollToTime=_useMemo.scrollToTime;return(0,react.useEffect)((function(){return function(){luxon.wB.defaultZone=defaultTZ}}),[]),(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"luxon",children:(0,jsx_runtime.jsx)(TimezoneSelect.A,{defaultTZ:defaultTZ,setTimezone:setTimezone,timezone:timezone,title:"This calendar uses the 'luxonLocalizer'"})}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:myEvents,getNow:getNow,localizer:localizer,scrollToTime:scrollToTime})})]})}Luxon.displayName="Luxon",Luxon.__docgenInfo={description:"",methods:[],displayName:"Luxon"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/luxon.js"]={name:"Luxon",docgenInfo:Luxon.__docgenInfo,path:"stories/demos/exampleCode/luxon.js"});var luxon_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.AW)(luxon.c9),LuxonLocalizer=function LuxonLocalizer(){return(0,jsx_runtime.jsx)(Luxon,{localizer:localizer})};LuxonLocalizer.displayName="LuxonLocalizer",LuxonLocalizer.parameters=Object.assign({storySource:{source:"function LuxonLocalizer() {\n return \n}"}},LuxonLocalizer.parameters);var __namedExportsOrder=["LuxonLocalizer"];LuxonLocalizer.__docgenInfo={description:"",methods:[],displayName:"LuxonLocalizer"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/luxon.stories.js"]={name:"LuxonLocalizer",docgenInfo:LuxonLocalizer.__docgenInfo,path:"stories/demos/luxon.stories.js"})},"./stories/demos/noOverlap.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example3:function(){return Example3},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return noOverlap_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),toConsumableArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),DemoLink_component=(__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./stories/DemoLink.component.js")),events=__webpack_require__("./stories/resources/events.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");function CreateEventWithNoOverlap(_ref){var localizer=_ref.localizer,_ref$dayLayoutAlgorit=_ref.dayLayoutAlgorithm,dayLayoutAlgorithm=void 0===_ref$dayLayoutAlgorit?"no-overlap":_ref$dayLayoutAlgorit,_useState=(0,react.useState)(events.A),_useState2=(0,slicedToArray.A)(_useState,2),myEvents=_useState2[0],setEvents=_useState2[1],handleSelectSlot=(0,react.useCallback)((function(_ref2){var start=_ref2.start,end=_ref2.end,title=window.prompt("New Event Name");title&&setEvents((function(prev){return[].concat((0,toConsumableArray.A)(prev),[{start:start,end:end,title:title}])}))}),[setEvents]),handleSelectEvent=(0,react.useCallback)((function(event){return window.alert(event.title)}),[]),_useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,12),scrollToTime:new Date(1970,1,1,6)}}),[]),defaultDate=_useMemo.defaultDate,scrollToTime=_useMemo.scrollToTime;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"createEventWithNoOverlap",children:(0,jsx_runtime.jsxs)("strong",{children:["Click an event to see more info, or drag the mouse over the calendar to select a date/time range.",(0,jsx_runtime.jsx)("br",{}),"The events are being arranged by `no-overlap` algorithm."]})}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{dayLayoutAlgorithm:dayLayoutAlgorithm,defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:myEvents,localizer:localizer,onSelectEvent:handleSelectEvent,onSelectSlot:handleSelectSlot,selectable:!0,scrollToTime:scrollToTime})})]})}CreateEventWithNoOverlap.displayName="CreateEventWithNoOverlap",CreateEventWithNoOverlap.__docgenInfo={description:"",methods:[],displayName:"CreateEventWithNoOverlap",props:{dayLayoutAlgorithm:{defaultValue:{value:"'no-overlap'",computed:!1},description:"",type:{name:"string"},required:!1},localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/createEventWithNoOverlap.js"]={name:"CreateEventWithNoOverlap",docgenInfo:CreateEventWithNoOverlap.__docgenInfo,path:"stories/demos/exampleCode/createEventWithNoOverlap.js"});var noOverlap_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example3=function Example3(){return(0,jsx_runtime.jsx)(CreateEventWithNoOverlap,{localizer:localizer})};Example3.displayName="Example3",Example3.storyName="Create events with no-overlap algorithm",Example3.parameters=Object.assign({storySource:{source:"function Example3() {\n return \n}"}},Example3.parameters);var __namedExportsOrder=["Example3"];Example3.__docgenInfo={description:"",methods:[],displayName:"Example3"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/noOverlap.stories.js"]={name:"Example3",docgenInfo:Example3.__docgenInfo,path:"stories/demos/noOverlap.stories.js"})},"./stories/demos/popup.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example6:function(){return Example6},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return popup_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),DemoLink_component=__webpack_require__("./stories/DemoLink.component.js"),events=__webpack_require__("./stories/resources/events.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");function Popup(_ref){var localizer=_ref.localizer,defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"popup",children:(0,jsx_runtime.jsx)("strong",{children:'Click the "+{x} more" link on any calendar day that cannot fit all the days events to see an inline popup of all the events.'})}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:localizer,popup:!0})})]})}Popup.displayName="Popup",Popup.__docgenInfo={description:"",methods:[],displayName:"Popup",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/popup.js"]={name:"Popup",docgenInfo:Popup.__docgenInfo,path:"stories/demos/exampleCode/popup.js"});var popup_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example6=function Example6(){return(0,jsx_runtime.jsx)(Popup,{localizer:localizer})};Example6.displayName="Example6",Example6.storyName="Show more via a popup",Example6.parameters=Object.assign({storySource:{source:"function Example6() {\n return \n}"}},Example6.parameters);var __namedExportsOrder=["Example6"];Example6.__docgenInfo={description:"",methods:[],displayName:"Example6"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/popup.stories.js"]={name:"Example6",docgenInfo:Example6.__docgenInfo,path:"stories/demos/popup.stories.js"})},"./stories/demos/rendering.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example8:function(){return Example8},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return rendering_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),DemoLink_component=__webpack_require__("./stories/DemoLink.component.js"),events=__webpack_require__("./stories/resources/events.js"),rendering_module=__webpack_require__("./stories/demos/exampleCode/rendering.module.scss"),rendering_module_default=__webpack_require__.n(rendering_module),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");function Event(_ref){var event=_ref.event;return(0,jsx_runtime.jsxs)("span",{children:[(0,jsx_runtime.jsx)("strong",{children:event.title}),event.desc&&": "+event.desc]})}function EventAgenda(_ref2){var event=_ref2.event;return(0,jsx_runtime.jsxs)("span",{children:[(0,jsx_runtime.jsx)("em",{style:{color:"magenta"},children:event.title}),(0,jsx_runtime.jsx)("p",{children:event.desc})]})}Event.displayName="Event",EventAgenda.displayName="EventAgenda";var customDayPropGetter=function customDayPropGetter(date){return 7===date.getDate()||15===date.getDate()?{className:rendering_module_default().specialDay,style:{border:"solid 3px "+(7===date.getDate()?"#faa":"#afa")}}:{}},customSlotPropGetter=function customSlotPropGetter(date){return 7===date.getDate()||15===date.getDate()?{className:rendering_module_default().specialDay}:{}};function Rendering(_ref3){var localizer=_ref3.localizer,_useMemo=(0,react.useMemo)((function(){return{components:{agenda:{event:EventAgenda},event:Event},defaultDate:new Date(2015,3,7)}}),[]),components=_useMemo.components,defaultDate=_useMemo.defaultDate;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"rendering"}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{components:components,dayPropGetter:customDayPropGetter,defaultDate:defaultDate,defaultView:src.Pp.AGENDA,events:events.A,localizer:localizer,slotPropGetter:customSlotPropGetter})})]})}Rendering.displayName="Rendering",Rendering.__docgenInfo={description:"",methods:[],displayName:"Rendering",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/rendering.js"]={name:"Rendering",docgenInfo:Rendering.__docgenInfo,path:"stories/demos/exampleCode/rendering.js"});var rendering_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example8=function Example8(){return(0,jsx_runtime.jsx)(Rendering,{localizer:localizer})};Example8.displayName="Example8",Example8.storyName="Customized Component Rendering",Example8.parameters=Object.assign({storySource:{source:"function Example8() {\n return \n}"}},Example8.parameters);var __namedExportsOrder=["Example8"];Example8.__docgenInfo={description:"",methods:[],displayName:"Example8"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/rendering.stories.js"]={name:"Example8",docgenInfo:Example8.__docgenInfo,path:"stories/demos/rendering.stories.js"})},"./stories/demos/resource.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example11:function(){return Example11},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return resource_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),DemoLink_component=__webpack_require__("./stories/DemoLink.component.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),events=[{id:0,title:"Board meeting",start:new Date(2018,0,29,9,0,0),end:new Date(2018,0,29,13,0,0),resourceId:1},{id:1,title:"MS training",allDay:!0,start:new Date(2018,0,29,14,0,0),end:new Date(2018,0,29,16,30,0),resourceId:2},{id:2,title:"Team lead meeting",start:new Date(2018,0,29,8,30,0),end:new Date(2018,0,29,12,30,0),resourceId:[2,3]},{id:11,title:"Birthday Party",start:new Date(2018,0,30,7,0,0),end:new Date(2018,0,30,10,30,0),resourceId:4}],resourceMap=[{resourceId:1,resourceTitle:"Board room"},{resourceId:2,resourceTitle:"Training room"},{resourceId:3,resourceTitle:"Meeting room 1"},{resourceId:4,resourceTitle:"Meeting room 2"}];function Resource(_ref){var localizer=_ref.localizer,_useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2018,0,29),views:["day","work_week"]}}),[]),defaultDate=_useMemo.defaultDate,views=_useMemo.views;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"resource"}),(0,jsx_runtime.jsxs)("strong",{children:["The calendar below uses the ",(0,jsx_runtime.jsx)(addon_links_react.A,{kind:"props",story:"resource-id-accessor",children:"resourceIdAccessor"}),", ",(0,jsx_runtime.jsx)(addon_links_react.A,{kind:"props",story:"resource-title-accessor",children:"resourceTitleAccessor"})," and ",(0,jsx_runtime.jsx)(addon_links_react.A,{kind:"props",story:"resources",children:"resources"})," props to show events scheduled for different resources.",(0,jsx_runtime.jsx)("br",{}),"Events can be mapped to a single resource, or multiple resources."]}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.DAY,events:events,localizer:localizer,resourceIdAccessor:"resourceId",resources:resourceMap,resourceTitleAccessor:"resourceTitle",step:60,views:views})})]})}Resource.displayName="Resource",Resource.__docgenInfo={description:"",methods:[],displayName:"Resource",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/resource.js"]={name:"Resource",docgenInfo:Resource.__docgenInfo,path:"stories/demos/exampleCode/resource.js"});var resource_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example11=function Example11(){return(0,jsx_runtime.jsx)(Resource,{localizer:localizer})};Example11.displayName="Example11",Example11.storyName="Resource Scheduling",Example11.parameters=Object.assign({storySource:{source:"function Example11() {\n return \n}"}},Example11.parameters);var __namedExportsOrder=["Example11"];Example11.__docgenInfo={description:"",methods:[],displayName:"Example11"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/resource.stories.js"]={name:"Example11",docgenInfo:Example11.__docgenInfo,path:"stories/demos/resource.stories.js"})},"./stories/demos/selectable.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example2:function(){return Example2},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return selectable_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),toConsumableArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),DemoLink_component=(__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./stories/DemoLink.component.js")),events=__webpack_require__("./stories/resources/events.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");function Selectable(_ref){var localizer=_ref.localizer,_useState=(0,react.useState)(events.A),_useState2=(0,slicedToArray.A)(_useState,2),myEvents=_useState2[0],setEvents=_useState2[1],handleSelectSlot=(0,react.useCallback)((function(_ref2){var start=_ref2.start,end=_ref2.end,title=window.prompt("New Event name");title&&setEvents((function(prev){return[].concat((0,toConsumableArray.A)(prev),[{start:start,end:end,title:title}])}))}),[setEvents]),handleSelectEvent=(0,react.useCallback)((function(event){return window.alert(event.title)}),[]),_useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,12),scrollToTime:new Date(1970,1,1,6)}}),[]),defaultDate=_useMemo.defaultDate,scrollToTime=_useMemo.scrollToTime;return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"selectable",children:(0,jsx_runtime.jsx)("strong",{children:"Click an event to see more info, or drag the mouse over the calendar to select a date/time range."})}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:myEvents,localizer:localizer,onSelectEvent:handleSelectEvent,onSelectSlot:handleSelectSlot,selectable:!0,scrollToTime:scrollToTime})})]})}Selectable.displayName="Selectable",Selectable.__docgenInfo={description:"",methods:[],displayName:"Selectable",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/selectable.js"]={name:"Selectable",docgenInfo:Selectable.__docgenInfo,path:"stories/demos/exampleCode/selectable.js"});var selectable_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example2=function Example2(){return(0,jsx_runtime.jsx)(Selectable,{localizer:localizer})};Example2.displayName="Example2",Example2.storyName="Create Events",Example2.parameters=Object.assign({storySource:{source:"function Example2() {\n return \n}"}},Example2.parameters);var __namedExportsOrder=["Example2"];Example2.__docgenInfo={description:"",methods:[],displayName:"Example2"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/selectable.stories.js"]={name:"Example2",docgenInfo:Example2.__docgenInfo,path:"stories/demos/selectable.stories.js"})},"./stories/demos/timeslots.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example7:function(){return Example7},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return timeslots_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),DemoLink_component=__webpack_require__("./stories/DemoLink.component.js"),events=__webpack_require__("./stories/resources/events.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");function Timeslots(_ref){var localizer=_ref.localizer,defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,12)}),[]);return(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"timeslots"}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,localizer:localizer,step:15,timeslots:8})})]})}Timeslots.displayName="Timeslots",Timeslots.__docgenInfo={description:"",methods:[],displayName:"Timeslots",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/timeslots.js"]={name:"Timeslots",docgenInfo:Timeslots.__docgenInfo,path:"stories/demos/exampleCode/timeslots.js"});var timeslots_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},localizer=(0,src.ye)(moment_default()),Example7=function Example7(){return(0,jsx_runtime.jsx)(Timeslots,{localizer:localizer})};Example7.displayName="Example7",Example7.storyName="Timeslots",Example7.parameters=Object.assign({storySource:{source:"function Example7() {\n return \n}"}},Example7.parameters);var __namedExportsOrder=["Example7"];Example7.__docgenInfo={description:"",methods:[],displayName:"Example7"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/timeslots.stories.js"]={name:"Example7",docgenInfo:Example7.__docgenInfo,path:"stories/demos/timeslots.stories.js"})},"./stories/demos/timezones.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Example4:function(){return Example4},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return timezones_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),src=__webpack_require__("./src/index.js"),toConsumableArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),DemoLink_component=(__webpack_require__("./node_modules/moment-timezone/index.js"),__webpack_require__("./stories/DemoLink.component.js")),events=__webpack_require__("./stories/resources/events.js"),TimezoneSelect=__webpack_require__("./stories/demos/TimezoneSelect.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),defaultTZ=moment_default().tz.guess();function Timezones(){var _useState=(0,react.useState)(defaultTZ),_useState2=(0,slicedToArray.A)(_useState,2),timezone=_useState2[0],setTimezone=_useState2[1],_useMemo=(0,react.useMemo)((function(){return moment_default().tz.setDefault(timezone),{defaultDate:(str="2015-4-13",momentObj=moment_default(),momentObj(str,"YYYY-MM-DD").toDate()),getNow:function getNow(){return moment_default()().toDate()},localizer:(0,src.ye)(moment_default()),myEvents:(0,toConsumableArray.A)(events.A),scrollToTime:moment_default()().toDate()};var str,momentObj}),[timezone]),defaultDate=_useMemo.defaultDate,getNow=_useMemo.getNow,localizer=_useMemo.localizer,myEvents=_useMemo.myEvents,scrollToTime=_useMemo.scrollToTime;return(0,react.useEffect)((function(){return function(){moment_default().tz.setDefault()}}),[]),(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)(DemoLink_component.A,{fileName:"timezones",children:(0,jsx_runtime.jsx)(TimezoneSelect.A,{defaultTZ:defaultTZ,setTimezone:setTimezone,timezone:timezone})}),(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:myEvents,getNow:getNow,localizer:localizer,scrollToTime:scrollToTime})})]})}Timezones.displayName="Timezones",Timezones.__docgenInfo={description:"",methods:[],displayName:"Timezones"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/timezones.js"]={name:"Timezones",docgenInfo:Timezones.__docgenInfo,path:"stories/demos/exampleCode/timezones.js"});var timezones_stories={title:"Examples",component:src.Vv,parameters:{docs:{page:null}}},Example4=function Example4(){return(0,jsx_runtime.jsx)(Timezones,{})};Example4.displayName="Example4",Example4.storyName="Timezones",Example4.parameters=Object.assign({storySource:{source:"function Example4() {\n return \n}"}},Example4.parameters);var __namedExportsOrder=["Example4"];Example4.__docgenInfo={description:"",methods:[],displayName:"Example4"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/timezones.stories.js"]={name:"Example4",docgenInfo:Example4.__docgenInfo,path:"stories/demos/timezones.stories.js"})},"./stories/props/allDayAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{AllDayAccessor:function(){return AllDayAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return allDayAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var src=__webpack_require__("./src/index.js"),storyDefaults=__webpack_require__("./stories/props/storyDefaults.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"alldayaccessor"},"allDayAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: 'allDay'")),(0,esm.yg)("p",null,'Determines whether the event should be considered an "all day" event and ignore time. Must resolve to a ',(0,esm.yg)("inlineCode",{parentName:"p"},"boolean")," value."),(0,esm.yg)(dist_esm.gG,{id:"props--all-day-accessor",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),allDayAccessor_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var AllDayAccessor=Template.bind({});AllDayAccessor.storyName="allDayAccessor",AllDayAccessor.args=storyDefaults.o,AllDayAccessor.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},AllDayAccessor.parameters);var __namedExportsOrder=["AllDayAccessor"]},"./stories/props/allDayMaxRows.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{AllDayMaxRows:function(){return AllDayMaxRows},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return allDayMaxRows_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),allDayEvents=[{id:0,title:"All Day Event very long title",allDay:!0,start:new Date(2015,3,0),end:new Date(2015,3,1)},{id:1,title:"#2 All Day Event very long title",allDay:!0,start:new Date(2015,3,0),end:new Date(2015,3,2)},{id:2,title:"#3 All Day Event very long title",allDay:!0,start:new Date(2015,3,0),end:new Date(2015,3,1)},{id:3,title:"#4 All Day Event",allDay:!0,start:new Date(2015,3,0),end:new Date(2015,3,1)},{id:4,title:"#5 All Day Event",allDay:!0,start:new Date(2015,3,0),end:new Date(2015,3,1)},{id:5,title:"#6 All Day Event",allDay:!0,start:new Date(2015,3,7),end:new Date(2015,3,7)}],esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"alldaymaxrows"},"allDayMaxRows"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"number")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"Infinity"))),(0,esm.yg)("p",null,"Determines a maximum amount of rows of events to display in the all day section for Week and Day views, will display ",(0,esm.yg)("inlineCode",{parentName:"p"},"showMore")," button if events excede this number."),(0,esm.yg)(dist_esm.gG,{id:"props--all-day-max-rows",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),allDayMaxRows_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var AllDayMaxRows=Template.bind({});AllDayMaxRows.storyName="allDayMaxRows",AllDayMaxRows.args={defaultDate:new Date(2015,3,1),defaultView:src.Pp.WEEK,events:allDayEvents,localizer:mLocalizer,allDayMaxRows:2,popup:!0},AllDayMaxRows.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},AllDayMaxRows.parameters);var __namedExportsOrder=["AllDayMaxRows"]},"./stories/props/backgroundEvents.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{BackGroundEvents:function(){return BackGroundEvents},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return backgroundEvents_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),helpers=__webpack_require__("./stories/helpers/index.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"backgroundevents"},"backgroundEvents"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"arrayOf(BackgroundEvent)")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"[]"))),(0,esm.yg)("p",null,"An array of background event objects to display on the calendar. Background\nEvents behave similarly to Events but are not factored into Event overlap logic,\nallowing them to sit behind any Events that may occur during the same period.\nBackground Events objects can be any shape, as long as the Calendar knows how to\nretrieve the following details of the event:"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"start time"),(0,esm.yg)("li",{parentName:"ul"},"end time")),(0,esm.yg)("p",null,'Each of these properties can be customized or generated dynamically by\nsetting the various "accessor" props. Without any configuration the default\nevent should look like:'),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"BackgroundEvent {\n start: Date,\n end: Date,\n}\n")),(0,esm.yg)(dist_esm.gG,{id:"props--back-ground-events",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),backgroundEvents_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultView:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var BackGroundEvents=Template.bind({});BackGroundEvents.storyName="backgroundEvents",BackGroundEvents.args={backgroundEvents:helpers.Mf,defaultView:src.Pp.WEEK,events:helpers.AZ,localizer:mLocalizer},BackGroundEvents.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},BackGroundEvents.parameters);var __namedExportsOrder=["BackGroundEvents"]},"./stories/props/components.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Components:function(){return Components},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return components_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"components"},"components"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"object"))),(0,esm.yg)("p",null,"Customize how different sections of the calendar render by providing custom Components. In particular the Event component can be specified for the entire calendar, or you can provide an individual component for each view type."),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-jsx"},"const components = useMemo(() => ({\n event: MyEvent, // used by each view (Month, Day, Week)\n eventWrapper: MyEventWrapper,\n eventContainerWrapper: MyEventContainerWrapper,\n dateCellWrapper: MyDateCellWrapper,\n dayColumnWrapper: MyDayColumnWrapper,\n timeSlotWrapper: MyTimeSlotWrapper,\n timeGutterHeader: MyTimeGutterWrapper,\n resourceHeader: MyResourceHeader,\n toolbar: MyToolbar,\n agenda: {\n event: MyAgendaEvent, // with the agenda view use a different component to render events\n time: MyAgendaTime,\n date: MyAgendaDate,\n },\n day: {\n header: MyDayHeader,\n event: MyDayEvent,\n },\n week: {\n header: MyWeekHeader,\n event: MyWeekEvent,\n },\n month: {\n header: MyMonthHeader,\n dateHeader: MyMonthDateHeader,\n event: MyMonthEvent,\n }\n}), [])\n\n")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--components",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;__webpack_require__("./node_modules/core-js/modules/es.array.map.js");var clsx_m=__webpack_require__("./node_modules/clsx/dist/clsx.m.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");function ViewNamesGroup(_ref){var viewNames=_ref.views,view=_ref.view,messages=_ref.messages,onView=_ref.onView;return viewNames.map((function(name){return(0,jsx_runtime.jsx)("button",{type:"button",className:(0,clsx_m.A)({"rbc-active":view===name}),onClick:function onClick(){return onView(name)},children:messages[name]},name)}))}function CustomToolbar(_ref2){var label=_ref2.label,messages=_ref2.localizer.messages,onNavigate=_ref2.onNavigate,onView=_ref2.onView,view=_ref2.view,views=_ref2.views;return(0,jsx_runtime.jsxs)("div",{className:"rbc-toolbar",children:[(0,jsx_runtime.jsx)("span",{className:"rbc-btn-group",children:(0,jsx_runtime.jsx)(ViewNamesGroup,{view:view,views:views,messages:messages,onView:onView})}),(0,jsx_runtime.jsx)("span",{className:"rbc-toolbar-label",children:label}),(0,jsx_runtime.jsxs)("span",{className:(0,clsx_m.A)("rbc-btn-group","examples--custom-toolbar"),children:[(0,jsx_runtime.jsx)("button",{type:"button",onClick:function onClick(){return onNavigate(src.C5.PREVIOUS)},"aria-label":messages.previous,children:"<"}),(0,jsx_runtime.jsx)("button",{type:"button",onClick:function onClick(){return onNavigate(src.C5.TODAY)},"aria-label":messages.today,children:"•"}),(0,jsx_runtime.jsx)("button",{type:"button",onClick:function onClick(){return onNavigate(src.C5.NEXT)},"aria-label":messages.next,children:">"})]})]})}CustomToolbar.displayName="CustomToolbar",CustomToolbar.__docgenInfo={description:"",methods:[],displayName:"CustomToolbar",props:{date:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},label:{description:"",type:{name:"string"},required:!1},localizer:{description:"",type:{name:"object"},required:!1},messages:{description:"",type:{name:"object"},required:!1},onNavigate:{description:"",type:{name:"func"},required:!1},onView:{description:"",type:{name:"func"},required:!1},view:{description:"",type:{name:"string"},required:!1},views:{description:"",type:{name:"array"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/customComponents/CustomToolbar.component.js"]={name:"CustomToolbar",docgenInfo:CustomToolbar.__docgenInfo,path:"stories/props/customComponents/CustomToolbar.component.js"});__webpack_require__("./stories/resources/customToolbar.scss");var mLocalizer=(0,src.ye)(moment_default()),components_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},Components=function Components(){var _useMemo=(0,react.useMemo)((function(){return{components:{toolbar:CustomToolbar},defaultDate:new Date(2015,3,13)}}),[]),components=_useMemo.components,defaultDate=_useMemo.defaultDate;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,components:components})})};Components.displayName="Components",Components.storyName="components",Components.parameters=Object.assign({storySource:{source:'function Components() {\n const { components, defaultDate } = useMemo(\n () => ({\n components: {\n toolbar: CustomToolbar,\n },\n defaultDate: new Date(2015, 3, 13),\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}'}},Components.parameters);var __namedExportsOrder=["Components"];Components.__docgenInfo={description:"",methods:[],displayName:"Components"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/components.stories.js"]={name:"Components",docgenInfo:Components.__docgenInfo,path:"stories/props/components.stories.js"})},"./stories/props/culture.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Culture:function(){return Culture},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return culture_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"culture"},"culture"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"none (browser default)"))),(0,esm.yg)("p",null,"Specify a specific culture code for the Calendar. The ",(0,esm.yg)("inlineCode",{parentName:"p"},"culture")," is used by ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"formats",mdxType:"LinkTo"},"formats")," with your ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"localizer")," to 'format' date/time information on the Calendar. To localize messaging, use the ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"messages",mdxType:"LinkTo"},"messages")," prop."),(0,esm.yg)("p",null,"See the ",(0,esm.yg)(addon_links_react.A,{kind:"examples",story:"example-5",mdxType:"LinkTo"},"Localization Example")," for another example of combining ",(0,esm.yg)("inlineCode",{parentName:"p"},"rtl"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"localizer"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"culture")," and ",(0,esm.yg)("inlineCode",{parentName:"p"},"messages"),"."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Note: it's generally better to handle this globally via your i18n library.")),(0,esm.yg)(dist_esm.gG,{id:"props--culture",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),culture_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},defaultDate:{control:{type:null}},events:{control:{type:null}},culture:{options:["es","fr","en-us","en-gb"],control:{type:"select"}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Culture=Template.bind({});Culture.storyName="culture",Culture.args={defaultDate:new Date(2015,3,13),events:events.A,localizer:mLocalizer,culture:"es"},Culture.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Culture.parameters);var __namedExportsOrder=["Culture"]},"./stories/props/date.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{CalDate:function(){return CalDate},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return date_stories}});var slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"date"},"date"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"new Date()")),(0,esm.yg)("li",{parentName:"ul"},"controlled by: ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"on-navigate",mdxType:"LinkTo"},"onNavigate"))),(0,esm.yg)("p",null,"The current date value of the calendar. Determines the visible view range.\nIf ",(0,esm.yg)("inlineCode",{parentName:"p"},"date")," is omitted then the result of ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"get-now",mdxType:"LinkTo"},"getNow")," is used; otherwise the\ncurrent date is used."),(0,esm.yg)("p",null,"This is a controllable prop, when using ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"on-navigate",mdxType:"LinkTo"},"onNavigate")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--cal-date",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),date_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},CalDate=function CalDate(){var _useState=(0,react.useState)(new Date(2015,3,1)),_useState2=(0,slicedToArray.A)(_useState,2),date=_useState2[0],setDate=_useState2[1],onNavigate=(0,react.useCallback)((function(newDate){return setDate(newDate)}),[setDate]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{date:date,events:events.A,localizer:mLocalizer,onNavigate:onNavigate})})};CalDate.displayName="CalDate",CalDate.storyName="date",CalDate.parameters=Object.assign({storySource:{source:'function CalDate() {\n const [date, setDate] = useState(new Date(2015, 3, 1))\n\n const onNavigate = useCallback((newDate) => setDate(newDate), [setDate])\n\n return (\n
\n \n
\n )\n}'}},CalDate.parameters);var __namedExportsOrder=["CalDate"];CalDate.__docgenInfo={description:"",methods:[],displayName:"CalDate"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/date.stories.js"]={name:"CalDate",docgenInfo:CalDate.__docgenInfo,path:"stories/props/date.stories.js"})},"./stories/props/dayLayoutAlgorithm.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DayLayoutAlgorithm:function(){return DayLayoutAlgorithm},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return dayLayoutAlgorithm_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"daylayoutalgorithm"},"dayLayoutAlgorithm"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string | Function(events, minimumStartDifference, slotMetrics, accessors)")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"overlap"))),(0,esm.yg)("p",null,"A day event layout(arrangement) algorithm."),(0,esm.yg)("p",null,(0,esm.yg)("inlineCode",{parentName:"p"},"overlap")," allows events to be overlapped."),(0,esm.yg)("p",null,(0,esm.yg)("inlineCode",{parentName:"p"},"no-overlap")," resizes events to avoid overlap."),(0,esm.yg)("p",null,"or custom ",(0,esm.yg)("inlineCode",{parentName:"p"},"Function(events, minimumStartDifference, slotMetrics, accessors)")),(0,esm.yg)(dist_esm.gG,{id:"props--day-layout-algorithm",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),dayLayoutAlgorithm_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}},events:{control:{type:null}},dayLayoutAlgorithm:{options:["overlap","no-overlap"],control:{type:"select"}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var DayLayoutAlgorithm=Template.bind({});DayLayoutAlgorithm.storyName="dayLayoutAlgorithm",DayLayoutAlgorithm.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.WEEK,events:events.A,localizer:mLocalizer,dayLayoutAlgorithm:"no-overlap"},DayLayoutAlgorithm.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},DayLayoutAlgorithm.parameters);var __namedExportsOrder=["DayLayoutAlgorithm"]},"./stories/props/dayPropGetter.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DayPropGetter:function(){return DayPropGetter},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return dayPropGetter_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"daypropgetter"},"dayPropGetter"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date) => {className?: string, style?: Object}"))),(0,esm.yg)("p",null,"Optionally provide a function that returns an object of className or style props to be applied to the the day background."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Caution!")," Styles that change layout or position may break the calendar in unexpected ways."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--day-prop-getter",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;__webpack_require__("./stories/resources/propGetter.scss");var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),dayPropGetter_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},DayPropGetter=function DayPropGetter(){var dayPropGetter=(0,react.useCallback)((function(date){return Object.assign({},2===moment_default()(date).day()&&{className:"tuesday"},4===moment_default()(date).day()&&{style:{backgroundColor:"darkgreen",color:"white"}})}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,13)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,dayPropGetter:dayPropGetter,events:events.A,localizer:mLocalizer})})};DayPropGetter.displayName="DayPropGetter",DayPropGetter.storyName="dayPropGetter",DayPropGetter.parameters=Object.assign({storySource:{source:"function DayPropGetter() {\n const dayPropGetter = useCallback(\n (date) => ({\n ...(moment(date).day() === 2 && {\n className: 'tuesday',\n }),\n ...(moment(date).day() === 4 && {\n style: {\n backgroundColor: 'darkgreen',\n color: 'white',\n },\n }),\n }),\n []\n )\n\n const defaultDate = useMemo(() => new Date(2015, 3, 13), [])\n\n return (\n
\n \n
\n )\n}"}},DayPropGetter.parameters);var __namedExportsOrder=["DayPropGetter"];DayPropGetter.__docgenInfo={description:"",methods:[],displayName:"DayPropGetter"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/dayPropGetter.stories.js"]={name:"DayPropGetter",docgenInfo:DayPropGetter.__docgenInfo,path:"stories/props/dayPropGetter.stories.js"})},"./stories/props/defaultDate.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DefaultDate:function(){return DefaultDate},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return defaultDate_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"defaultdate"},"defaultDate"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"new Date()"))),(0,esm.yg)("p",null,"Sets the initial ",(0,esm.yg)("inlineCode",{parentName:"p"},"date")," value in your calendar when you don't want it to be 'today', when not using ",(0,esm.yg)("inlineCode",{parentName:"p"},"getNow"),", or controlling ",(0,esm.yg)("inlineCode",{parentName:"p"},"date"),"."),(0,esm.yg)(dist_esm.gG,{id:"props--default-date",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),defaultDate_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultView:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var DefaultDate=Template.bind({});DefaultDate.storyName="defaultDate",DefaultDate.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.DAY,events:events.A,localizer:mLocalizer},DefaultDate.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},DefaultDate.parameters);var __namedExportsOrder=["DefaultDate"]},"./stories/props/defaultView.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DefaultView:function(){return DefaultView},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return defaultView_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"defaultview"},"defaultView"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"Views.MONTH (month|week|work_week|day|agenda)"))),(0,esm.yg)("p",null,"The initial ",(0,esm.yg)("inlineCode",{parentName:"p"},"view")," set for your calendar when you don't want it to be the default ('month')."),(0,esm.yg)(dist_esm.gG,{id:"props--default-view",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),defaultView_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var DefaultView=Template.bind({});DefaultView.storyName="defaultView",DefaultView.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.DAY,events:events.A,localizer:mLocalizer},DefaultView.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},DefaultView.parameters);var __namedExportsOrder=["DefaultView"]},"./stories/props/drilldownView.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{DrilldownView:function(){return DrilldownView},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return drilldownView_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"drilldownview"},"drilldownView"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"Views.DAY"))),(0,esm.yg)("p",null,"The string name of the destination ",(0,esm.yg)("inlineCode",{parentName:"p"},"view")," for drill-down actions, such as clicking a date header, or the truncated events links. If ",(0,esm.yg)("inlineCode",{parentName:"p"},"getDrilldownView")," is also specified it will be used instead."),(0,esm.yg)("p",null,"Set to ",(0,esm.yg)("inlineCode",{parentName:"p"},"null")," to disable drill-down actions."),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},'\n')),(0,esm.yg)(dist_esm.gG,{id:"props--drilldown-view",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),drilldownView_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},drilldownView:{control:{type:"select",options:["day","agenda"],defaultValue:src.Pp.DAY}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var DrilldownView=Template.bind({});DrilldownView.storyName="drilldownView",DrilldownView.args={defaultDate:new Date(2015,3,1),drilldownView:src.Pp.AGENDA,events:events.A,localizer:mLocalizer},DrilldownView.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},DrilldownView.parameters);var __namedExportsOrder=["DrilldownView"]},"./stories/props/elementProps.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ElementProps:function(){return ElementProps},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return elementProps_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"elementprops"},"elementProps"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"object"))),(0,esm.yg)("p",null,"Props passed to main calendar ",(0,esm.yg)("inlineCode",{parentName:"p"},"
"),"."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Note:")," Will not pass down ",(0,esm.yg)("inlineCode",{parentName:"p"},"className"),"."),(0,esm.yg)(dist_esm.gG,{id:"props--element-props",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;__webpack_require__("./stories/resources/propGetter.scss");var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),elementProps_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var ElementProps=Template.bind({});ElementProps.storyName="elementProps",ElementProps.args={defaultDate:new Date(2015,3,13),elementProps:{id:"my_scheduler"},events:events.A,localizer:mLocalizer},ElementProps.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},ElementProps.parameters);var __namedExportsOrder=["ElementProps"]},"./stories/props/endAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{EndAccessor:function(){return EndAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return endAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var src=__webpack_require__("./src/index.js"),storyDefaults=__webpack_require__("./stories/props/storyDefaults.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"endaccessor"},"endAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => Date")),(0,esm.yg)("li",{parentName:"ul"},"default: 'end'")),(0,esm.yg)("p",null,"The end date/time of the event. Must resolve to a JavaScript ",(0,esm.yg)("inlineCode",{parentName:"p"},"Date")," object."),(0,esm.yg)(dist_esm.gG,{id:"props--end-accessor",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),endAccessor_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var EndAccessor=Template.bind({});EndAccessor.storyName="endAccessor",EndAccessor.args=storyDefaults.o,EndAccessor.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},EndAccessor.parameters);var __namedExportsOrder=["EndAccessor"]},"./stories/props/eventPropGetter.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{EventPropGetter:function(){return EventPropGetter},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return eventPropGetter_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/core-js/modules/es.array.includes.js"),__webpack_require__("./node_modules/core-js/modules/es.string.includes.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"eventpropgetter"},"eventPropGetter"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (event: Object, start: Date, end: Date, isSelected: boolean) => {className?: string, style?: Object}"))),(0,esm.yg)("p",null,"Optionally provide a function that returns an object of className or style props to be applied to the the event node."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--event-prop-getter",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;__webpack_require__("./stories/resources/propGetter.scss");var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),eventPropGetter_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},EventPropGetter=function EventPropGetter(){var eventPropGetter=(0,react.useCallback)((function(event,start,end,isSelected){return Object.assign({},isSelected&&{style:{backgroundColor:"#000"}},moment_default()(start).hour()<12&&{className:"powderBlue"},event.title.includes("Meeting")&&{className:"darkGreen"})}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:new Date(2015,3,13),defaultView:src.Pp.WEEK,eventPropGetter:eventPropGetter,events:events.A,localizer:mLocalizer})})};EventPropGetter.displayName="EventPropGetter",EventPropGetter.storyName="eventPropGetter",EventPropGetter.parameters=Object.assign({storySource:{source:"function EventPropGetter() {\n const eventPropGetter = useCallback(\n (event, start, end, isSelected) => ({\n ...(isSelected && {\n style: {\n backgroundColor: '#000',\n },\n }),\n ...(moment(start).hour() < 12 && {\n className: 'powderBlue',\n }),\n ...(event.title.includes('Meeting') && {\n className: 'darkGreen',\n }),\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},EventPropGetter.parameters);var __namedExportsOrder=["EventPropGetter"];EventPropGetter.__docgenInfo={description:"",methods:[],displayName:"EventPropGetter"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/eventPropGetter.stories.js"]={name:"EventPropGetter",docgenInfo:EventPropGetter.__docgenInfo,path:"stories/props/eventPropGetter.stories.js"})},"./stories/props/events.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Events:function(){return Events},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return events_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"events"},"events"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"arrayOf(Event)")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"[]"))),(0,esm.yg)("p",null,"An array of event objects to display on the calendar. Events objects\ncan be any shape, as long as the Calendar knows how to retrieve the\nfollowing details of the event:"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"start time"),(0,esm.yg)("li",{parentName:"ul"},"end time"),(0,esm.yg)("li",{parentName:"ul"},"title"),(0,esm.yg)("li",{parentName:"ul"},'whether its an "all day" event or not'),(0,esm.yg)("li",{parentName:"ul"},"any resource the event may be related to")),(0,esm.yg)("p",null,'Each of these properties can be customized or generated dynamically by\nsetting the various "accessor" props. Without any configuration the default\nevent should look like:'),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"Event {\n title: string,\n start: Date,\n end: Date,\n allDay?: boolean\n resource?: any,\n}\n")),(0,esm.yg)(dist_esm.gG,{id:"props--events",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),events_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},defaultDate:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Events=Template.bind({});Events.storyName="events",Events.args={defaultDate:new Date(2015,3,13),events:events.A,localizer:mLocalizer},Events.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Events.parameters);var __namedExportsOrder=["Events"]},"./stories/props/formats.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Formats:function(){return Formats},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formats_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formats"},"formats"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"Object"))),(0,esm.yg)(addon_links_react.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"Localizer")," specific formats, tell the Calendar how to format and display dates and times.",(0,esm.yg)("p",null,"The ",(0,esm.yg)("inlineCode",{parentName:"p"},"format")," types are dependent on the configured localizer; both Moment and Globalize accept strings of tokens according to their own specification, such as: ",(0,esm.yg)("inlineCode",{parentName:"p"},"'DD mm yyyy'"),"."),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"const formats = useMemo(() => ({\n dateFormat: 'dd',\n\n dayFormat: (date, , localizer) =>\n localizer.format(date, 'DDD', culture),\n\n dayRangeHeaderFormat: ({ start, end }, culture, localizer) =>\n localizer.format(start, { date: 'short' }, culture) + ' — ' +\n localizer.format(end, { date: 'short' }, culture)\n}), [])\n\n\n")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formats_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},Formats=function Formats(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,1),formats:{dateFormat:"D",weekdayFormat:function weekdayFormat(date,culture,localizer){return localizer.format(date,"dddd",culture)},dayFormat:function dayFormat(date,culture,localizer){return localizer.format(date,"dddd Do",culture)},timeGutterFormat:function timeGutterFormat(date,culture,localizer){return localizer.format(date,"hh:mm a",culture)}}}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,formats:formats,localizer:mLocalizer})})};Formats.displayName="Formats",Formats.storyName="formats",Formats.parameters=Object.assign({storySource:{source:"function Formats() {\n const { defaultDate, formats } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 1),\n formats: {\n // the 'date' on each day cell of the 'month' view\n dateFormat: 'D',\n // the day of the week header in the 'month' view\n weekdayFormat: (date, culture, localizer) =>\n localizer.format(date, 'dddd', culture),\n // the day header in the 'week' and 'day' (Time Grid) views\n dayFormat: (date, culture, localizer) =>\n localizer.format(date, 'dddd Do', culture),\n // the time in the gutter in the Time Grid views\n timeGutterFormat: (date, culture, localizer) =>\n localizer.format(date, 'hh:mm a', culture),\n },\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},Formats.parameters);var __namedExportsOrder=["Formats"];Formats.__docgenInfo={description:"",methods:[],displayName:"Formats"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formats.stories.js"]={name:"Formats",docgenInfo:Formats.__docgenInfo,path:"stories/props/formats.stories.js"})},"./stories/props/formatsAgendaDateFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsAgendDateFormat:function(){return FormatsAgendDateFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsAgendaDateFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsagendadateformat"},"formats.agendaDateFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,"Dates displayed in the gutter of the Agenda ",(0,esm.yg)("inlineCode",{parentName:"p"},"view")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-agenda-date-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsAgendaDateFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsAgendDateFormat=function FormatsAgendDateFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{agendaDateFormat:function agendaDateFormat(date,culture,localizer){return localizer.format(date,"dddd MMMM Do",culture)}},views:[src.Pp.WEEK,src.Pp.DAY,src.Pp.AGENDA]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.AGENDA,events:events.A,formats:formats,localizer:mLocalizer,views:views})})};FormatsAgendDateFormat.displayName="FormatsAgendDateFormat",FormatsAgendDateFormat.storyName="formats.agendaDateFormat",FormatsAgendDateFormat.parameters=Object.assign({storySource:{source:"function FormatsAgendDateFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n agendaDateFormat: (date, culture, localizer) =>\n localizer.format(date, 'dddd MMMM Do', culture),\n },\n views: [Views.WEEK, Views.DAY, Views.AGENDA],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsAgendDateFormat.parameters);var __namedExportsOrder=["FormatsAgendDateFormat"];FormatsAgendDateFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsAgendDateFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsAgendaDateFormat.stories.js"]={name:"FormatsAgendDateFormat",docgenInfo:FormatsAgendDateFormat.__docgenInfo,path:"stories/props/formatsAgendaDateFormat.stories.js"})},"./stories/props/formatsAgendaHeaderFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsAgendHeaderFormat:function(){return FormatsAgendHeaderFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsAgendaHeaderFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsagendaheaderformat"},"formats.agendaHeaderFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'Toolbar header format for the Agenda view, e.g. "4/1/2015 — 5/1/2015"'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-agenda-header-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsAgendaHeaderFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsAgendHeaderFormat=function FormatsAgendHeaderFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{agendaHeaderFormat:function agendaHeaderFormat(_ref,culture,localizer){var start=_ref.start,end=_ref.end;return localizer.format(start,"dddd MMMM Do, YYYY",culture)+" - "+localizer.format(end,"dddd MMMM Do, YYYY",culture)}},views:[src.Pp.WEEK,src.Pp.DAY,src.Pp.AGENDA]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.AGENDA,events:events.A,formats:formats,localizer:mLocalizer,views:views})})};FormatsAgendHeaderFormat.displayName="FormatsAgendHeaderFormat",FormatsAgendHeaderFormat.storyName="formats.agendaHeaderFormat",FormatsAgendHeaderFormat.parameters=Object.assign({storySource:{source:"function FormatsAgendHeaderFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n agendaHeaderFormat: ({ start, end }, culture, localizer) =>\n localizer.format(start, 'dddd MMMM Do, YYYY', culture) +\n ' - ' +\n localizer.format(end, 'dddd MMMM Do, YYYY', culture),\n },\n views: [Views.WEEK, Views.DAY, Views.AGENDA],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsAgendHeaderFormat.parameters);var __namedExportsOrder=["FormatsAgendHeaderFormat"];FormatsAgendHeaderFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsAgendHeaderFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsAgendaHeaderFormat.stories.js"]={name:"FormatsAgendHeaderFormat",docgenInfo:FormatsAgendHeaderFormat.__docgenInfo,path:"stories/props/formatsAgendaHeaderFormat.stories.js"})},"./stories/props/formatsAgendaTimeFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsAgendTimeFormat:function(){return FormatsAgendTimeFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsAgendaTimeFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsagendatimeformat"},"formats.agendaTimeFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,"Time only (not range) displayed in the gutter of the Agenda ",(0,esm.yg)("inlineCode",{parentName:"p"},"view")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-agenda-time-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsAgendaTimeFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsAgendTimeFormat=function FormatsAgendTimeFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{agendaTimeFormat:function agendaTimeFormat(date,culture,localizer){return localizer.format(date,"hh:mm A",culture)}},views:[src.Pp.WEEK,src.Pp.DAY,src.Pp.AGENDA]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.AGENDA,events:events.A,formats:formats,localizer:mLocalizer,views:views})})};FormatsAgendTimeFormat.displayName="FormatsAgendTimeFormat",FormatsAgendTimeFormat.storyName="formats.agendaTimeFormat",FormatsAgendTimeFormat.parameters=Object.assign({storySource:{source:"function FormatsAgendTimeFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n agendaTimeFormat: (date, culture, localizer) =>\n localizer.format(date, 'hh:mm A', culture),\n },\n views: [Views.WEEK, Views.DAY, Views.AGENDA],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsAgendTimeFormat.parameters);var __namedExportsOrder=["FormatsAgendTimeFormat"];FormatsAgendTimeFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsAgendTimeFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsAgendaTimeFormat.stories.js"]={name:"FormatsAgendTimeFormat",docgenInfo:FormatsAgendTimeFormat.__docgenInfo,path:"stories/props/formatsAgendaTimeFormat.stories.js"})},"./stories/props/formatsAgendaTimeRangeFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsAgendaTimeRangeFormat:function(){return FormatsAgendaTimeRangeFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsAgendaTimeRangeFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsagendatimerangeformat"},"formats.agendaTimeRangeFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,"Time range displayed in the gutter of the Agenda ",(0,esm.yg)("inlineCode",{parentName:"p"},"view")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-agenda-time-range-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsAgendaTimeRangeFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsAgendaTimeRangeFormat=function FormatsAgendaTimeRangeFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{agendaTimeRangeFormat:function agendaTimeRangeFormat(_ref,culture,localizer){var start=_ref.start,end=_ref.end;return localizer.format(start,"hh:mm A",culture)+" - "+localizer.format(end,"hh:mm A",culture)}},views:[src.Pp.WEEK,src.Pp.DAY,src.Pp.AGENDA]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.AGENDA,events:events.A,formats:formats,localizer:mLocalizer,views:views})})};FormatsAgendaTimeRangeFormat.displayName="FormatsAgendaTimeRangeFormat",FormatsAgendaTimeRangeFormat.storyName="formats.agendaTimeRangeFormat",FormatsAgendaTimeRangeFormat.parameters=Object.assign({storySource:{source:"function FormatsAgendaTimeRangeFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n agendaTimeRangeFormat: ({ start, end }, culture, localizer) =>\n localizer.format(start, 'hh:mm A', culture) +\n ' - ' +\n localizer.format(end, 'hh:mm A', culture),\n },\n views: [Views.WEEK, Views.DAY, Views.AGENDA],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsAgendaTimeRangeFormat.parameters);var __namedExportsOrder=["FormatsAgendaTimeRangeFormat"];FormatsAgendaTimeRangeFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsAgendaTimeRangeFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsAgendaTimeRangeFormat.stories.js"]={name:"FormatsAgendaTimeRangeFormat",docgenInfo:FormatsAgendaTimeRangeFormat.__docgenInfo,path:"stories/props/formatsAgendaTimeRangeFormat.stories.js"})},"./stories/props/formatsDateFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsDateFormat:function(){return FormatsDateFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsDateFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsdateformat"},"formats.dateFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'Format for the day of the month heading in the Month view. e.g. "01", "02", "03", etc'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-date-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsDateFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsDateFormat=function FormatsDateFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,1),formats:{dateFormat:function dateFormat(date,culture,localizer){return localizer.format(date,"D",culture)}}}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,formats:formats,localizer:mLocalizer})})};FormatsDateFormat.displayName="FormatsDateFormat",FormatsDateFormat.storyName="formats.dateFormat",FormatsDateFormat.parameters=Object.assign({storySource:{source:"function FormatsDateFormat() {\n const { defaultDate, formats } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 1),\n formats: {\n dateFormat: (date, culture, localizer) =>\n localizer.format(date, 'D', culture),\n },\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsDateFormat.parameters);var __namedExportsOrder=["FormatsDateFormat"];FormatsDateFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsDateFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsDateFormat.stories.js"]={name:"FormatsDateFormat",docgenInfo:FormatsDateFormat.__docgenInfo,path:"stories/props/formatsDateFormat.stories.js"})},"./stories/props/formatsDayFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsDayFormat:function(){return FormatsDayFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsDayFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsdayformat"},"formats.dayFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'A day of the week format for Week and Day headings, e.g. "Wed 01/04"'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-day-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsDayFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsDayFormat=function FormatsDayFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{dayFormat:function dayFormat(date,culture,localizer){return localizer.format(date,"ddd MM/DD",culture)}},views:[src.Pp.WEEK,src.Pp.DAY]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,formats:formats,localizer:mLocalizer,views:views})})};FormatsDayFormat.displayName="FormatsDayFormat",FormatsDayFormat.storyName="formats.dayFormat",FormatsDayFormat.parameters=Object.assign({storySource:{source:"function FormatsDayFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n dayFormat: (date, culture, localizer) =>\n localizer.format(date, 'ddd MM/DD', culture),\n },\n views: [Views.WEEK, Views.DAY],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsDayFormat.parameters);var __namedExportsOrder=["FormatsDayFormat"];FormatsDayFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsDayFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsDayFormat.stories.js"]={name:"FormatsDayFormat",docgenInfo:FormatsDayFormat.__docgenInfo,path:"stories/props/formatsDayFormat.stories.js"})},"./stories/props/formatsDayHeaderFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsDayHeaderFormat:function(){return FormatsDayHeaderFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsDayHeaderFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsdayheaderformat"},"formats.dayHeaderFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'Toolbar header format for the Day view, e.g. "Wednesday Apr 01"'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-day-header-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsDayHeaderFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsDayHeaderFormat=function FormatsDayHeaderFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{dayHeaderFormat:function dayHeaderFormat(date,culture,localizer){return localizer.format(date,"dddd MMMM Do",culture)}},views:[src.Pp.WEEK,src.Pp.DAY]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.DAY,events:events.A,formats:formats,localizer:mLocalizer,views:views})})};FormatsDayHeaderFormat.displayName="FormatsDayHeaderFormat",FormatsDayHeaderFormat.storyName="formats.dayHeaderFormat",FormatsDayHeaderFormat.parameters=Object.assign({storySource:{source:"function FormatsDayHeaderFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n dayHeaderFormat: (date, culture, localizer) =>\n localizer.format(date, 'dddd MMMM Do', culture),\n },\n views: [Views.WEEK, Views.DAY],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsDayHeaderFormat.parameters);var __namedExportsOrder=["FormatsDayHeaderFormat"];FormatsDayHeaderFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsDayHeaderFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsDayHeaderFormat.stories.js"]={name:"FormatsDayHeaderFormat",docgenInfo:FormatsDayHeaderFormat.__docgenInfo,path:"stories/props/formatsDayHeaderFormat.stories.js"})},"./stories/props/formatsDayRangeHeaderFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsDayRangeHeaderFormat:function(){return FormatsDayRangeHeaderFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsDayRangeHeaderFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsdayrangeheaderformat"},"formats.dayRangeHeaderFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'Toolbar header format for the Week views, e.g. "Mar 29 - Apr 04"'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-day-range-header-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsDayRangeHeaderFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsDayRangeHeaderFormat=function FormatsDayRangeHeaderFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{dayRangeHeaderFormat:function dayRangeHeaderFormat(_ref,culture,localizer){var start=_ref.start,end=_ref.end;return localizer.format(start,"ddd D",culture)+" - "+localizer.format(end,"ddd D",culture)}},views:[src.Pp.WEEK,src.Pp.DAY]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,formats:formats,localizer:mLocalizer,views:views})})};FormatsDayRangeHeaderFormat.displayName="FormatsDayRangeHeaderFormat",FormatsDayRangeHeaderFormat.storyName="formats.dayRangeHeaderFormat",FormatsDayRangeHeaderFormat.parameters=Object.assign({storySource:{source:"function FormatsDayRangeHeaderFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n dayRangeHeaderFormat: ({ start, end }, culture, localizer) =>\n localizer.format(start, 'ddd D', culture) +\n ' - ' +\n localizer.format(end, 'ddd D', culture),\n },\n views: [Views.WEEK, Views.DAY],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsDayRangeHeaderFormat.parameters);var __namedExportsOrder=["FormatsDayRangeHeaderFormat"];FormatsDayRangeHeaderFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsDayRangeHeaderFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsDayRangeHeaderFormat.stories.js"]={name:"FormatsDayRangeHeaderFormat",docgenInfo:FormatsDayRangeHeaderFormat.__docgenInfo,path:"stories/props/formatsDayRangeHeaderFormat.stories.js"})},"./stories/props/formatsEventTimeRangeEndFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsEventTimeRangeEndFormat:function(){return FormatsEventTimeRangeEndFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsEventTimeRangeEndFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatseventtimerangeendformat"},"formats.eventTimeRangeEndFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,"An optional event time range for events that continue onto another day. Used with ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"show-multi-day-times",mdxType:"LinkTo"},"showMultiDayTimes"),"."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-event-time-range-end-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsEventTimeRangeEndFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsEventTimeRangeEndFormat=function FormatsEventTimeRangeEndFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{eventTimeRangeEndFormat:function eventTimeRangeEndFormat(date,culture,localizer){return" << "+localizer.format(date,"hh:mm A",culture)}}}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,formats:formats,localizer:mLocalizer,showMultiDayTimes:!0})})};FormatsEventTimeRangeEndFormat.displayName="FormatsEventTimeRangeEndFormat",FormatsEventTimeRangeEndFormat.storyName="formats.eventTimeRangeEndFormat",FormatsEventTimeRangeEndFormat.parameters=Object.assign({storySource:{source:"function FormatsEventTimeRangeEndFormat() {\n const { defaultDate, formats } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n eventTimeRangeEndFormat: (date, culture, localizer) =>\n ' << ' + localizer.format(date, 'hh:mm A', culture),\n },\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsEventTimeRangeEndFormat.parameters);var __namedExportsOrder=["FormatsEventTimeRangeEndFormat"];FormatsEventTimeRangeEndFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsEventTimeRangeEndFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsEventTimeRangeEndFormat.stories.js"]={name:"FormatsEventTimeRangeEndFormat",docgenInfo:FormatsEventTimeRangeEndFormat.__docgenInfo,path:"stories/props/formatsEventTimeRangeEndFormat.stories.js"})},"./stories/props/formatsEventTimeRangeFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsEventTimeRangeFormat:function(){return FormatsEventTimeRangeFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsEventTimeRangeFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatseventtimerangeformat"},"formats.eventTimeRangeFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,"Time range displayed on events in Time Grid views."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-event-time-range-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsEventTimeRangeFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsEventTimeRangeFormat=function FormatsEventTimeRangeFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{eventTimeRangeFormat:function eventTimeRangeFormat(_ref,culture,localizer){var start=_ref.start,end=_ref.end;return localizer.format(start,"hh:mm a",culture)+" - "+localizer.format(end,"hh:mm a",culture)}}}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,formats:formats,localizer:mLocalizer})})};FormatsEventTimeRangeFormat.displayName="FormatsEventTimeRangeFormat",FormatsEventTimeRangeFormat.storyName="formats.eventTimeRangeFormat",FormatsEventTimeRangeFormat.parameters=Object.assign({storySource:{source:"function FormatsEventTimeRangeFormat() {\n const { defaultDate, formats } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n eventTimeRangeFormat: ({ start, end }, culture, localizer) =>\n localizer.format(start, 'hh:mm a', culture) +\n ' - ' +\n localizer.format(end, 'hh:mm a', culture),\n },\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsEventTimeRangeFormat.parameters);var __namedExportsOrder=["FormatsEventTimeRangeFormat"];FormatsEventTimeRangeFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsEventTimeRangeFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsEventTimeRangeFormat.stories.js"]={name:"FormatsEventTimeRangeFormat",docgenInfo:FormatsEventTimeRangeFormat.__docgenInfo,path:"stories/props/formatsEventTimeRangeFormat.stories.js"})},"./stories/props/formatsEventTimeRangeStartFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsEventTimeRangeStartFormat:function(){return FormatsEventTimeRangeStartFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsEventTimeRangeStartFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatseventtimerangestartformat"},"formats.eventTimeRangeStartFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,"An optional event time range for events that continue onto another day. Used with ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"show-multi-day-times",mdxType:"LinkTo"},"showMultiDayTimes"),"."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-event-time-range-start-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsEventTimeRangeStartFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsEventTimeRangeStartFormat=function FormatsEventTimeRangeStartFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{eventTimeRangeStartFormat:function eventTimeRangeStartFormat(date,culture,localizer){return localizer.format(date,"hh:mm A",culture)+" >> "}}}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,formats:formats,localizer:mLocalizer,showMultiDayTimes:!0})})};FormatsEventTimeRangeStartFormat.displayName="FormatsEventTimeRangeStartFormat",FormatsEventTimeRangeStartFormat.storyName="formats.eventTimeRangeStartFormat",FormatsEventTimeRangeStartFormat.parameters=Object.assign({storySource:{source:"function FormatsEventTimeRangeStartFormat() {\n const { defaultDate, formats } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n eventTimeRangeStartFormat: (date, culture, localizer) =>\n localizer.format(date, 'hh:mm A', culture) + ' >> ',\n },\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsEventTimeRangeStartFormat.parameters);var __namedExportsOrder=["FormatsEventTimeRangeStartFormat"];FormatsEventTimeRangeStartFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsEventTimeRangeStartFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsEventTimeRangeStartFormat.stories.js"]={name:"FormatsEventTimeRangeStartFormat",docgenInfo:FormatsEventTimeRangeStartFormat.__docgenInfo,path:"stories/props/formatsEventTimeRangeStartFormat.stories.js"})},"./stories/props/formatsMonthHeaderFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsMonthHeaderFormat:function(){return FormatsMonthHeaderFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsMonthHeaderFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsmonthheaderformat"},"formats.monthHeaderFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'Toolbar header format for the Month view, e.g "2015 April"'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-month-header-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsMonthHeaderFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsMonthHeaderFormat=function FormatsMonthHeaderFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,1),formats:{monthHeaderFormat:function monthHeaderFormat(date,culture,localizer){return localizer.format(date,"MMMM [']YY",culture)}}}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,formats:formats,localizer:mLocalizer})})};FormatsMonthHeaderFormat.displayName="FormatsMonthHeaderFormat",FormatsMonthHeaderFormat.storyName="formats.monthHeaderFormat",FormatsMonthHeaderFormat.parameters=Object.assign({storySource:{source:'function FormatsMonthHeaderFormat() {\n const { defaultDate, formats } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 1),\n formats: {\n monthHeaderFormat: (date, culture, localizer) =>\n localizer.format(date, `MMMM [\']YY`, culture),\n },\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}'}},FormatsMonthHeaderFormat.parameters);var __namedExportsOrder=["FormatsMonthHeaderFormat"];FormatsMonthHeaderFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsMonthHeaderFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsMonthHeaderFormat.stories.js"]={name:"FormatsMonthHeaderFormat",docgenInfo:FormatsMonthHeaderFormat.__docgenInfo,path:"stories/props/formatsMonthHeaderFormat.stories.js"})},"./stories/props/formatsSelectRangeFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsSelectRangeFormat:function(){return FormatsSelectRangeFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsSelectRangeFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsselectrangeformat"},"formats.selectRangeFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'A time range format shown in the highlighted area when selecting time slots, e.g "08:00 am — 12:00 pm"'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-select-range-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsSelectRangeFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsSelectRangeFormat=function FormatsSelectRangeFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{selectRangeFormat:function selectRangeFormat(_ref,culture,localizer){var start=_ref.start,end=_ref.end;return localizer.format(start,"hh:mm a",culture)+" - "+localizer.format(end,"hh:mm a",culture)}},views:[src.Pp.WEEK,src.Pp.DAY]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,formats:formats,localizer:mLocalizer,selectable:!0,views:views})})};FormatsSelectRangeFormat.displayName="FormatsSelectRangeFormat",FormatsSelectRangeFormat.storyName="formats.selectRangeFormat",FormatsSelectRangeFormat.parameters=Object.assign({storySource:{source:"function FormatsSelectRangeFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n selectRangeFormat: ({ start, end }, culture, localizer) =>\n localizer.format(start, 'hh:mm a', culture) +\n ' - ' +\n localizer.format(end, 'hh:mm a', culture),\n },\n views: [Views.WEEK, Views.DAY],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsSelectRangeFormat.parameters);var __namedExportsOrder=["FormatsSelectRangeFormat"];FormatsSelectRangeFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsSelectRangeFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsSelectRangeFormat.stories.js"]={name:"FormatsSelectRangeFormat",docgenInfo:FormatsSelectRangeFormat.__docgenInfo,path:"stories/props/formatsSelectRangeFormat.stories.js"})},"./stories/props/formatsTimeGutterFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsTimeGutterFormat:function(){return FormatsTimeGutterFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsTimeGutterFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatstimegutterformat"},"formats.timeGutterFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'The timestamp cell formats in Week and Time views, e.g. "4:00 AM"'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-time-gutter-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsTimeGutterFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsTimeGutterFormat=function FormatsTimeGutterFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),formats:{timeGutterFormat:function timeGutterFormat(date,culture,localizer){return localizer.format(date,"hh:mm a",culture)}},views:[src.Pp.WEEK,src.Pp.DAY]}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,formats:formats,localizer:mLocalizer,views:views})})};FormatsTimeGutterFormat.displayName="FormatsTimeGutterFormat",FormatsTimeGutterFormat.storyName="formats.timeGutterFormat",FormatsTimeGutterFormat.parameters=Object.assign({storySource:{source:"function FormatsTimeGutterFormat() {\n const { defaultDate, formats, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n formats: {\n timeGutterFormat: (date, culture, localizer) =>\n localizer.format(date, 'hh:mm a', culture),\n },\n views: [Views.WEEK, Views.DAY],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsTimeGutterFormat.parameters);var __namedExportsOrder=["FormatsTimeGutterFormat"];FormatsTimeGutterFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsTimeGutterFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsTimeGutterFormat.stories.js"]={name:"FormatsTimeGutterFormat",docgenInfo:FormatsTimeGutterFormat.__docgenInfo,path:"stories/props/formatsTimeGutterFormat.stories.js"})},"./stories/props/formatsWeekdayFormat.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{FormatsWeekdayFormat:function(){return FormatsWeekdayFormat},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return formatsWeekdayFormat_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"formatsweekdayformat"},"formats.weekdayFormat"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string"))),(0,esm.yg)("p",null,'Week day name format for the Month week day headings, e.g: "Sun", "Mon", "Tue", etc'),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--formats-weekday-format",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),formatsWeekdayFormat_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},FormatsWeekdayFormat=function FormatsWeekdayFormat(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,1),formats:{weekdayFormat:function weekdayFormat(date,culture,localizer){return localizer.format(date,"dddd",culture)}}}}),[]),defaultDate=_useMemo.defaultDate,formats=_useMemo.formats;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,formats:formats,localizer:mLocalizer})})};FormatsWeekdayFormat.displayName="FormatsWeekdayFormat",FormatsWeekdayFormat.storyName="formats.weekdayFormat",FormatsWeekdayFormat.parameters=Object.assign({storySource:{source:"function FormatsWeekdayFormat() {\n const { defaultDate, formats } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 1),\n formats: {\n weekdayFormat: (date, culture, localizer) =>\n localizer.format(date, 'dddd', culture),\n },\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},FormatsWeekdayFormat.parameters);var __namedExportsOrder=["FormatsWeekdayFormat"];FormatsWeekdayFormat.__docgenInfo={description:"",methods:[],displayName:"FormatsWeekdayFormat"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/formatsWeekdayFormat.stories.js"]={name:"FormatsWeekdayFormat",docgenInfo:FormatsWeekdayFormat.__docgenInfo,path:"stories/props/formatsWeekdayFormat.stories.js"})},"./stories/props/getDrilldownView.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{GetDrilldownView:function(){return GetDrilldownView},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return getDrilldownView_stories}});__webpack_require__("./node_modules/core-js/modules/es.array.includes.js"),__webpack_require__("./node_modules/core-js/modules/es.string.includes.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"getdrilldownview"},"getDrilldownView"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (targetDate: Date, currentViewName: string, configuredViewNames: Views[]) => string|null"))),(0,esm.yg)("p",null,"Functionally equivalent to drilldownView, but accepts a function that can return a view name. It's useful for customizing the drill-down actions depending on the target date and triggering view."),(0,esm.yg)("p",null,"Return null to disable drill-down actions."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--get-drilldown-view",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),getDrilldownView_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},GetDrilldownView=function GetDrilldownView(){var getDrilldownView=(0,react.useCallback)((function(targetDate,currentViewName,configuredViewNames){return"month"===currentViewName&&configuredViewNames.includes("week")?"week":null}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,getDrilldownView:getDrilldownView,localizer:mLocalizer})})};GetDrilldownView.displayName="GetDrilldownView",GetDrilldownView.storyName="getDrilldownView",GetDrilldownView.parameters=Object.assign({storySource:{source:"function GetDrilldownView() {\n const getDrilldownView = useCallback(\n (targetDate, currentViewName, configuredViewNames) => {\n if (currentViewName === 'month' && configuredViewNames.includes('week'))\n return 'week'\n\n return null\n },\n []\n )\n\n const defaultDate = useMemo(() => new Date(2015, 3, 1), [])\n\n return (\n
\n \n
\n )\n}"}},GetDrilldownView.parameters);var __namedExportsOrder=["GetDrilldownView"];GetDrilldownView.__docgenInfo={description:"",methods:[],displayName:"GetDrilldownView"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/getDrilldownView.stories.js"]={name:"GetDrilldownView",docgenInfo:GetDrilldownView.__docgenInfo,path:"stories/props/getDrilldownView.stories.js"})},"./stories/props/getNow.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{GetNow:function(){return GetNow},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return getNow_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"getnow"},"getNow"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function () => Date")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"() => new Date()"))),(0,esm.yg)("p",null,"Determines the current date/time which is highlighted in the views."),(0,esm.yg)("p",null,"The value affects which day is shaded and which time is shown as the current time. It also affects the date used by the Today button in the toolbar."),(0,esm.yg)("p",null,"Providing a value here can be useful when you are implementing time zones using the ",(0,esm.yg)("inlineCode",{parentName:"p"},"startAccessor")," and ",(0,esm.yg)("inlineCode",{parentName:"p"},"endAccessor")," properties."),(0,esm.yg)(dist_esm.gG,{id:"props--get-now",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),getNow_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var GetNow=Template.bind({});GetNow.storyName="getNow",GetNow.args={events:events.A,getNow:function getNow(){return new Date(2015,3,13)},localizer:mLocalizer},GetNow.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},GetNow.parameters);var __namedExportsOrder=["GetNow"]},"./stories/props/length.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Length:function(){return Length},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return length_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"length"},"length"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"number")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"30"))),(0,esm.yg)("p",null,"Determines the end date from date prop in the agenda view date prop + length (in number of days) = end date."),(0,esm.yg)(dist_esm.gG,{id:"props--length",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),length_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}},length:"number"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Length=Template.bind({});Length.storyName="length",Length.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.AGENDA,events:events.A,length:14,localizer:mLocalizer},Length.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Length.parameters);var __namedExportsOrder=["Length"]},"./stories/props/localizer.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Localizer:function(){return Localizer},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return localizer_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"localizer"},"localizer"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"instanceOf(DateLocalizer)")," ",(0,esm.yg)("strong",{parentName:"li"},"required"))),(0,esm.yg)("p",null,"The localizer used for ",(0,esm.yg)("strong",{parentName:"p"},"formatting dates")," and times according to the ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"formats",mdxType:"LinkTo"},"formats")," and ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"culture",mdxType:"LinkTo"},"culture"),". To format buttons and messaging use the ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"messages",mdxType:"LinkTo"},"messages")," prop."),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"// When using `Day.js`\nimport { dayjsLocalizer } from 'react-big-calendar'\nimport dayjs from 'dayjs'\n// and, for optional time zone support\nimport timezone from 'dayjs/plugin/timezone'\n\ndayjs.extend(timezone)\n// end optional time zone support\n\n// Note that the dayjsLocalizer extends Day.js with the following plugins:\n// - IsBetween\n// - IsSameOrAfter\n// - IsSameOrBefore\n// - LocaleData\n// - LocalizedFormat\n// - MinMax\n// - UTC\n\nconst localizer = dayjsLocalizer(dayjs)\n")),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"// When using `Globalize`\nimport { globalizeLocalizer } from 'react-big-calendar'\nimport globalize from 'globalize'\n\nconst localizer = globalizeLocalizer(globalize)\n")),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"// When using `Luxon`\nimport { luxonLocalizer } from 'react-big-calendar'\nimport { DateTime, Settings } from 'luxon'\n// only use `Settings` if you require optional time zone support\nSettings.defaultZone = 'America/Los_Angeles'\n// end optional time zone support\n\n// Luxon uses the Intl API, which currently does not contain `weekInfo`\n// to determine which weekday is the start of the week by `culture`.\n// The `luxonLocalizer` defaults this to Sunday, which differs from\n// the Luxon default of Monday. The localizer requires this option\n// to change the display, and the date math for determining the\n// start of a week. Luxon uses non-zero based values for `weekday`.\nconst localizer = luxonLocalizer(DateTime, { firstDayOfWeek: 7 })\n")),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"// When using `moment`\nimport { momentLocalizer } from 'react-big-calendar'\nimport moment from 'moment'\n// and, for optional time zone support\nimport 'moment-timezone'\n\nmoment.tz.setDefault('America/Los_Angeles')\n// end optional time zone support\n\nconst localizer = momentLocalizer(moment)\n")),(0,esm.yg)("p",null,"See the ",(0,esm.yg)(addon_links_react.A,{kind:"examples",story:"example-5",mdxType:"LinkTo"},"Localization Example")," for another example of combining ",(0,esm.yg)("inlineCode",{parentName:"p"},"rtl"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"localizer"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"culture")," and ",(0,esm.yg)("inlineCode",{parentName:"p"},"messages"),"."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--localizer",mdxType:"Story"})),(0,esm.yg)("h2",{id:"more-information"},"More Information"),(0,esm.yg)("p",null,"The ",(0,esm.yg)("inlineCode",{parentName:"p"},"localizer")," can be used for date math in a number of ways. Look at the ",(0,esm.yg)(addon_links_react.A,{kind:"guides-localizers",mdxType:"LinkTo"},"Localizer Guide")," for more information."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),localizer_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}},decorators:[function(Story){return(0,jsx_runtime.jsx)("div",{style:{height:800},children:(0,jsx_runtime.jsx)(Story,{})})}]},Localizer=function Localizer(){var localizer=(0,react.useMemo)((function(){return(0,src.ye)(moment_default())}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:new Date(2015,3,13),events:events.A,localizer:localizer})})};Localizer.displayName="Localizer",Localizer.storyName="localizer *",Localizer.parameters=Object.assign({storySource:{source:'function Localizer() {\n const localizer = useMemo(() => momentLocalizer(moment), [])\n\n return (\n
\n \n
\n )\n}'}},Localizer.parameters);var __namedExportsOrder=["Localizer"];Localizer.__docgenInfo={description:"",methods:[],displayName:"Localizer"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/localizer.stories.js"]={name:"Localizer",docgenInfo:Localizer.__docgenInfo,path:"stories/props/localizer.stories.js"})},"./stories/props/longPressThreshold.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{LongPressThreshold:function(){return LongPressThreshold},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return longPressThreshold_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"longpressthreshold"},"longPressThreshold"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"number")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"250"))),(0,esm.yg)("p",null,'Specifies the number of miliseconds the user must press and hold on the screen for a touch to be considered a "long press." Long presses are used for time slot selection on touch devices.'),(0,esm.yg)(dist_esm.gG,{id:"props--long-press-threshold",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),longPressThreshold_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},longPressThreshold:"number"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var LongPressThreshold=Template.bind({});LongPressThreshold.storyName="longPressThreshold",LongPressThreshold.args={defaultDate:new Date(2015,3,13),events:events.A,localizer:mLocalizer,longPressThreshold:250},LongPressThreshold.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},LongPressThreshold.parameters);var __namedExportsOrder=["LongPressThreshold"]},"./stories/props/max.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Max:function(){return Max},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return max_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"max"},"max"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"new Date(1972, 0, 1, 23, 59, 59)"))),(0,esm.yg)("p",null,"Constrains the maximum time of the Day and Week views."),(0,esm.yg)(dist_esm.gG,{id:"props--max",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),max_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}},events:{control:{type:null}},max:{control:{type:"date"}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Max=Template.bind({});Max.storyName="max",Max.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.WEEK,events:events.A,localizer:mLocalizer,max:new Date(1972,0,1,20,59,59)},Max.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Max.parameters);var __namedExportsOrder=["Max"]},"./stories/props/messages.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Messages:function(){return Messages},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return messages_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"messages"},"messages"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"Object"))),(0,esm.yg)("p",null,"String messages used throughout the component, override to provide localizations for button text, ",(0,esm.yg)("inlineCode",{parentName:"p"},"title")," attributes and more."),(0,esm.yg)("p",null,"defualts"),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"{\n date: 'Date',\n time: 'Time',\n event: 'Event',\n allDay: 'All Day',\n week: 'Week',\n work_week: 'Work Week',\n day: 'Day',\n month: 'Month',\n previous: 'Back',\n next: 'Next',\n yesterday: 'Yesterday',\n tomorrow: 'Tomorrow',\n today: 'Today',\n agenda: 'Agenda',\n\n noEventsInRange: 'There are no events in this range.',\n /**\n * params {total} count of remaining events \n * params {remainingEvents} remaining events \n * params {events} all events in day\n */\n showMore: (total, remainingEvents, events) => `+${total} más`,\n}\n")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--messages",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),messages_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},Messages=function Messages(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,13),messages:{week:"Semana",work_week:"Semana de trabajo",day:"Día",month:"Mes",previous:"Atrás",next:"Después",today:"Hoy",agenda:"El Diario",showMore:function showMore(total){return"+".concat(total," más")}}}}),[]),defaultDate=_useMemo.defaultDate,messages=_useMemo.messages;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,messages:messages})})};Messages.displayName="Messages",Messages.storyName="messages",Messages.parameters=Object.assign({storySource:{source:"function Messages() {\n const { defaultDate, messages } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 13),\n messages: {\n week: 'Semana',\n work_week: 'Semana de trabajo',\n day: 'Día',\n month: 'Mes',\n previous: 'Atrás',\n next: 'Después',\n today: 'Hoy',\n agenda: 'El Diario',\n\n showMore: (total) => `+${total} más`,\n },\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}"}},Messages.parameters);var __namedExportsOrder=["Messages"];Messages.__docgenInfo={description:"",methods:[],displayName:"Messages"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/messages.stories.js"]={name:"Messages",docgenInfo:Messages.__docgenInfo,path:"stories/props/messages.stories.js"})},"./stories/props/min.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Min:function(){return Min},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return min_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"min"},"min"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"new Date(1972, 0, 1, 0, 0, 0, 0)"))),(0,esm.yg)("p",null,"Constrains the minimum time of the Day and Week views."),(0,esm.yg)(dist_esm.gG,{id:"props--min",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),min_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}},events:{control:{type:null}},min:{control:{type:"date"}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Min=Template.bind({});Min.storyName="min",Min.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.WEEK,events:events.A,localizer:mLocalizer,min:new Date(1972,0,1,8)},Min.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Min.parameters);var __namedExportsOrder=["Min"]},"./stories/props/onDoubleClickEvent.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnDoubleClickEvent:function(){return OnDoubleClickEvent},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onDoubleClickEvent_stories}});__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"ondoubleclickevent"},"onDoubleClickEvent"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (event: Object) => any"))),(0,esm.yg)("p",null,"Callback fired when a calendar event is clicked twice. (i.e.: an ",(0,esm.yg)("inlineCode",{parentName:"p"},"onDoubleClick")," handler)."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Note:")," The ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")," prop is ",(0,esm.yg)("em",{parentName:"p"},"not")," required for this prop to function."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Important:")," The event passed into the function is the Calendar Event, not the SyntheticEvent expected by most click handlers."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-double-click-event",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onDoubleClickEvent_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}};function buildMessage(calEvent,eventName){return"[".concat(eventName,"] an 'event' selection was made with:\n ").concat(JSON.stringify(calEvent,null,2))}var OnDoubleClickEvent=function OnDoubleClickEvent(){var clickRef=(0,react.useRef)(null);(0,react.useEffect)((function(){return function(){window.clearTimeout(null==clickRef?void 0:clickRef.current)}}),[]);var onSelectEvent=(0,react.useCallback)((function(calEvent){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){window.alert(buildMessage(calEvent,"onSelectEvent"))}),250)}),[]),onDoubleClickEvent=(0,react.useCallback)((function(calEvent){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){window.alert(buildMessage(calEvent,"onDoubleClickEvent"))}),250)}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,onDoubleClickEvent:onDoubleClickEvent,onSelectEvent:onSelectEvent})})};OnDoubleClickEvent.displayName="OnDoubleClickEvent",OnDoubleClickEvent.storyName="onDoubleClickEvent",OnDoubleClickEvent.parameters=Object.assign({storySource:{source:"function OnDoubleClickEvent() {\n const clickRef = useRef(null)\n\n useEffect(() => {\n /**\n * What Is This?\n * This is to prevent a memory leak, in the off chance that you\n * teardown your interface prior to the timed method being called.\n */\n return () => {\n window.clearTimeout(clickRef?.current)\n }\n }, [])\n\n const onSelectEvent = useCallback((calEvent) => {\n /**\n * Here we are waiting 250 milliseconds (use what you want) prior to firing\n * our method. Why? Because both 'click' and 'doubleClick'\n * would fire, in the event of a 'doubleClick'. By doing\n * this, the 'click' handler is overridden by the 'doubleClick'\n * action.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n window.alert(buildMessage(calEvent, 'onSelectEvent'))\n }, 250)\n }, [])\n\n const onDoubleClickEvent = useCallback((calEvent) => {\n /**\n * Notice our use of the same ref as above.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n window.alert(buildMessage(calEvent, 'onDoubleClickEvent'))\n }, 250)\n }, [])\n\n const defaultDate = useMemo(() => new Date(2015, 3, 1), [])\n\n return (\n
\n \n
\n )\n}"}},OnDoubleClickEvent.parameters);var __namedExportsOrder=["OnDoubleClickEvent"];OnDoubleClickEvent.__docgenInfo={description:"",methods:[],displayName:"OnDoubleClickEvent"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onDoubleClickEvent.stories.js"]={name:"OnDoubleClickEvent",docgenInfo:OnDoubleClickEvent.__docgenInfo,path:"stories/props/onDoubleClickEvent.stories.js"})},"./stories/props/onDrillDown.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnDrillDown:function(){return OnDrillDown},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onDrillDown_stories}});var slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"ondrilldown"},"onDrillDown"),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-drill-down",mdxType:"Story"})),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date) => // do something"))),(0,esm.yg)("p",null,"Callback fired when date header, or the truncated event links are clicked. When included, it will override the default drilldown behavior."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onDrillDown_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},OnDrillDown=function OnDrillDown(){var _useState=(0,react.useState)(src.Pp.MONTH),_useState2=(0,slicedToArray.A)(_useState,2),view=_useState2[0],setView=_useState2[1],_useState3=(0,react.useState)(new Date(2015,3,13)),_useState4=(0,slicedToArray.A)(_useState3,2),date=_useState4[0],setDate=_useState4[1],onNavigate=(0,react.useCallback)((function(newDate){return setDate(newDate)}),[setDate]),onView=(0,react.useCallback)((function(newView){return setView(newView)}),[setView]),onDrillDown=(0,react.useCallback)((function(newDate){setDate(newDate),setView(src.Pp.AGENDA)}),[setDate,setView]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{date:date,events:events.A,localizer:mLocalizer,onDrillDown:onDrillDown,onNavigate:onNavigate,onView:onView,view:view})})};OnDrillDown.displayName="OnDrillDown",OnDrillDown.storyName="onDrillDown",OnDrillDown.parameters=Object.assign({storySource:{source:'function OnDrillDown() {\n const [view, setView] = useState(Views.MONTH)\n const [date, setDate] = useState(new Date(2015, 3, 13))\n const onNavigate = useCallback((newDate) => setDate(newDate), [setDate])\n const onView = useCallback((newView) => setView(newView), [setView])\n const onDrillDown = useCallback(\n (newDate) => {\n setDate(newDate)\n setView(Views.AGENDA)\n },\n [setDate, setView]\n )\n return (\n
\n \n
\n )\n}'}},OnDrillDown.parameters);var __namedExportsOrder=["OnDrillDown"];OnDrillDown.__docgenInfo={description:"",methods:[],displayName:"OnDrillDown"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onDrillDown.stories.js"]={name:"OnDrillDown",docgenInfo:OnDrillDown.__docgenInfo,path:"stories/props/onDrillDown.stories.js"})},"./stories/props/onKeyPressEvent.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnKeyPressEvent:function(){return OnKeyPressEvent},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onKeyPressEvent_stories}});__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"onkeypressevent"},"onKeyPressEvent"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (event: Object, e: SyntheticEvent) => void"))),(0,esm.yg)("p",null,"Callback fired when a focused calendar event receives a key press."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-key-press-event",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onKeyPressEvent_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}};var OnKeyPressEvent=function OnKeyPressEvent(){var pressRef=(0,react.useRef)(null);(0,react.useEffect)((function(){return function(){window.clearTimeout(null==pressRef?void 0:pressRef.current)}}),[]);var onKeyPressEvent=(0,react.useCallback)((function(event,keypressEvent){pressRef.current=window.setTimeout((function(){window.alert(function buildMessage(event,_ref){var altKey=_ref.altKey,ctrlKey=_ref.ctrlKey,shiftKey=_ref.shiftKey,metaKey=_ref.metaKey,key=_ref.key,prefix="";return altKey?prefix="ALT + ":ctrlKey?prefix="CTRL + ":shiftKey?prefix="SHIFT + ":metaKey&&(prefix="CMD + "),'You pressed on the "'.concat(prefix).concat(key,'" on "event":\nJSON.stringify(event, null, 2)')}(0,keypressEvent))}),250)}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,13)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,onKeyPressEvent:onKeyPressEvent})})};OnKeyPressEvent.displayName="OnKeyPressEvent",OnKeyPressEvent.storyName="onKeypressEvent",OnKeyPressEvent.parameters=Object.assign({storySource:{source:'function OnKeyPressEvent() {\n const pressRef = useRef(null)\n\n useEffect(() => {\n return () => {\n // To prevent possible memory leak on unmount\n window.clearTimeout(pressRef?.current)\n }\n }, [])\n\n const onKeyPressEvent = useCallback((event, keypressEvent) => {\n /**\n * We delay our response to capture ctrl/shift/alt + key\n * *Storybook will swallow some presses from it\'s own built-ins\n */\n pressRef.current = window.setTimeout(() => {\n window.alert(buildMessage(event, keypressEvent))\n }, 250)\n }, [])\n\n const defaultDate = useMemo(() => new Date(2015, 3, 13), [])\n\n return (\n
\n \n
\n )\n}'}},OnKeyPressEvent.parameters);var __namedExportsOrder=["OnKeyPressEvent"];OnKeyPressEvent.__docgenInfo={description:"",methods:[],displayName:"OnKeyPressEvent"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onKeyPressEvent.stories.js"]={name:"OnKeyPressEvent",docgenInfo:OnKeyPressEvent.__docgenInfo,path:"stories/props/onKeyPressEvent.stories.js"})},"./stories/props/onNavigate.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnNavigate:function(){return OnNavigate},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onNavigate_stories}});var slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"onnavigate"},"onNavigate"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function")),(0,esm.yg)("li",{parentName:"ul"},"controls: ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"date",mdxType:"LinkTo"},"date")),(0,esm.yg)("li",{parentName:"ul"},"example: ",(0,esm.yg)("inlineCode",{parentName:"li"},"(newDate) => setDate(newDate)"))),(0,esm.yg)("p",null,"Callback fired when the ",(0,esm.yg)("inlineCode",{parentName:"p"},"date")," value changes. When included it is used to 'control' the ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"date",mdxType:"LinkTo"},"date")," prop value."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-navigate",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onNavigate_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},OnNavigate=function OnNavigate(){var _useState=(0,react.useState)(new Date(2015,3,1)),_useState2=(0,slicedToArray.A)(_useState,2),date=_useState2[0],setDate=_useState2[1],onNavigate=(0,react.useCallback)((function(newDate){return setDate(newDate)}),[setDate]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{date:date,events:events.A,localizer:mLocalizer,onNavigate:onNavigate})})};OnNavigate.displayName="OnNavigate",OnNavigate.storyName="onNavigate",OnNavigate.parameters=Object.assign({storySource:{source:'function OnNavigate() {\n const [date, setDate] = useState(new Date(2015, 3, 1))\n\n const onNavigate = useCallback((newDate) => setDate(newDate), [setDate])\n\n return (\n
\n \n
\n )\n}'}},OnNavigate.parameters);var __namedExportsOrder=["OnNavigate"];OnNavigate.__docgenInfo={description:"",methods:[],displayName:"OnNavigate"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onNavigate.stories.js"]={name:"OnNavigate",docgenInfo:OnNavigate.__docgenInfo,path:"stories/props/onNavigate.stories.js"})},"./stories/props/onRangeChange.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnRangeChange:function(){return OnRangeChange},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onRangeChange_stories}});var slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"onrangechange"},"onRangeChange"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (range: Array [1|7] | Object {start: Date, end: Date}) => // do something"))),(0,esm.yg)("p",null,"Callback fired when the visible date range changes. Returns an Array of dates or an object with start and end dates for BUILTIN views."),(0,esm.yg)("p",null,"Custom views may return something different."),(0,esm.yg)("p",null,(0,esm.yg)("em",{parentName:"p"},"Note:")," This method is not fired on initial render. Only as the user navigates through Big Calendar."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-range-change",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onRangeChange_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}};var OnRangeChange=function OnRangeChange(){var _useState=(0,react.useState)(new Date(2015,3,1)),_useState2=(0,slicedToArray.A)(_useState,2),date=_useState2[0],setDate=_useState2[1],onNavigate=(0,react.useCallback)((function(newDate){return setDate(newDate)}),[setDate]),onRangeChange=(0,react.useCallback)((function(range){window.alert(function buildMessage(range){return range?Array.isArray(range)?1===range.length?"[onRangeChange] was given an array with\n a single item of ".concat(range[0].toLocaleString(),",\n which only occurs within the 'day' view."):"[onRangeChange] was given an array of seven dates,\n starting with ".concat(range[0].toLocaleString(),"\n and ending with ").concat(range[6].toLocaleString(),".\n This occurs when within the 'week' or 'work week' views."):"[onRangeChange] was given an object with\n a start of ".concat(range.start.toLocaleString(),"\n and an end of ").concat(range.end.toLocaleString(),".\n An object with 'start' and 'end' is passed\n when in the 'month' or 'agenda' views."):"no range"}(range))}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{date:date,events:events.A,localizer:mLocalizer,onNavigate:onNavigate,onRangeChange:onRangeChange})})};OnRangeChange.displayName="OnRangeChange",OnRangeChange.storyName="onRangeChange",OnRangeChange.parameters=Object.assign({storySource:{source:'function OnRangeChange() {\n const [date, setDate] = useState(new Date(2015, 3, 1))\n\n const onNavigate = useCallback((newDate) => setDate(newDate), [setDate])\n\n const onRangeChange = useCallback((range) => {\n window.alert(buildMessage(range))\n }, [])\n\n return (\n
\n \n
\n )\n}'}},OnRangeChange.parameters);var __namedExportsOrder=["OnRangeChange"];OnRangeChange.__docgenInfo={description:"",methods:[],displayName:"OnRangeChange"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onRangeChange.stories.js"]={name:"OnRangeChange",docgenInfo:OnRangeChange.__docgenInfo,path:"stories/props/onRangeChange.stories.js"})},"./stories/props/onSelectEvent.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnSelectEvent:function(){return OnSelectEvent},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onSelectEvent_stories}});__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"onselectevent"},"onSelectEvent"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (event: Object) => any"))),(0,esm.yg)("p",null,"Callback fired when a calendar event is selected (i.e.: an ",(0,esm.yg)("inlineCode",{parentName:"p"},"onClick")," handler)."),(0,esm.yg)("p",null,"The method receives the selected event as a parameter. If using ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"resources",mdxType:"LinkTo"},"resources"),", and are in a TimeGrid view ('day' or 'week'), the ",(0,esm.yg)("inlineCode",{parentName:"p"},"event")," will have an additional ",(0,esm.yg)("inlineCode",{parentName:"p"},"sourceResource")," property containing the resource object that the event is associated with."),(0,esm.yg)("p",null,"Clicking on a ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"backgroundEvents",mdxType:"LinkTo"},"backgroundEvent")," will also fire the ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelectEvent")," callback. It will also receive the ",(0,esm.yg)("inlineCode",{parentName:"p"},"backgroundEvent")," as the ",(0,esm.yg)("inlineCode",{parentName:"p"},"event")," object, but contain a ",(0,esm.yg)("inlineCode",{parentName:"p"},"isBackgroundEvent")," property set to ",(0,esm.yg)("inlineCode",{parentName:"p"},"true"),". This will allow you to distinguish between a background event and a regular event within your ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelectEvent")," handler."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Note:")," The ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")," prop is ",(0,esm.yg)("em",{parentName:"p"},"not")," required for this prop to function."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Important:")," The event passed into the function is the Calendar Event, not the SyntheticEvent expected by most click handlers."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-select-event",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onSelectEvent_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}};function buildMessage(calEvent,eventName){return"[".concat(eventName,"] an 'event' selection was made with:\n ").concat(JSON.stringify(calEvent,null,2))}var OnSelectEvent=function OnSelectEvent(){var clickRef=(0,react.useRef)(null);(0,react.useEffect)((function(){return function(){window.clearTimeout(null==clickRef?void 0:clickRef.current)}}),[]);var onSelectEvent=(0,react.useCallback)((function(calEvent){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){window.alert(buildMessage(calEvent,"onSelectEvent"))}),250)}),[]),onDoubleClickEvent=(0,react.useCallback)((function(calEvent){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){window.alert(buildMessage(calEvent,"onDoubleClickEvent"))}),250)}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,onDoubleClickEvent:onDoubleClickEvent,onSelectEvent:onSelectEvent})})};OnSelectEvent.displayName="OnSelectEvent",OnSelectEvent.storyName="onSelectEvent",OnSelectEvent.parameters=Object.assign({storySource:{source:"function OnSelectEvent() {\n const clickRef = useRef(null)\n\n useEffect(() => {\n /**\n * What Is This?\n * This is to prevent a memory leak, in the off chance that you\n * teardown your interface prior to the timed method being called.\n */\n return () => {\n window.clearTimeout(clickRef?.current)\n }\n }, [])\n\n const onSelectEvent = useCallback((calEvent) => {\n /**\n * Here we are waiting 250 milliseconds (use what you want) prior to firing\n * our method. Why? Because both 'click' and 'doubleClick'\n * would fire, in the event of a 'doubleClick'. By doing\n * this, the 'click' handler is overridden by the 'doubleClick'\n * action.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n window.alert(buildMessage(calEvent, 'onSelectEvent'))\n }, 250)\n }, [])\n\n const onDoubleClickEvent = useCallback((calEvent) => {\n /**\n * Notice our use of the same ref as above.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n window.alert(buildMessage(calEvent, 'onDoubleClickEvent'))\n }, 250)\n }, [])\n\n const defaultDate = useMemo(() => new Date(2015, 3, 1), [])\n\n return (\n
\n \n
\n )\n}"}},OnSelectEvent.parameters);var __namedExportsOrder=["OnSelectEvent"];OnSelectEvent.__docgenInfo={description:"",methods:[],displayName:"OnSelectEvent"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onSelectEvent.stories.js"]={name:"OnSelectEvent",docgenInfo:OnSelectEvent.__docgenInfo,path:"stories/props/onSelectEvent.stories.js"})},"./stories/props/onSelectSlot.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnSelectSlot:function(){return OnSelectSlot},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onSelectSlot_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"onselectslot"},"onSelectSlot"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (Object: slotInfo) => any")),(0,esm.yg)("li",{parentName:"ul"},"requires: ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable"))),(0,esm.yg)("p",null,"A callback fired when a date selection is made. Only fires when ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")," is true."),(0,esm.yg)("p",null,(0,esm.yg)("em",{parentName:"p"},"Things To Know:")," When you 'doubleClick', both 'click' and 'doubleClick' will fire. Click on the 'showCode' button, at the bottom of the example below, to see how you can get around this issue."),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},";(slotInfo: {\n start: Date,\n end: Date,\n slots: Array,\n action: 'select' | 'click' | 'doubleClick',\n resourceId: ?number, // only if the calendar is resource view\n bounds: ?{\n // For \"select\" action\n x: number,\n y: number,\n top: number,\n right: number,\n left: number,\n bottom: number,\n },\n box: ?{\n // For \"click\" or \"doubleClick\" actions\n clientX: number,\n clientY: number,\n x: number,\n y: number,\n },\n}) => any\n")),(0,esm.yg)("h2",{id:"whats-the-difference"},"What's The Difference?"),(0,esm.yg)("p",null,"How is this different from ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"on-selecting",mdxType:"LinkTo"},"onSelecting"),"? That is a very good question. The ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelecting")," method is only available in the Time views (",(0,esm.yg)("inlineCode",{parentName:"p"},"week"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"work week"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"day"),"), whereas ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelectSlot")," is also available in the ",(0,esm.yg)("inlineCode",{parentName:"p"},"month")," view. The ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelecting")," method allows you to 'cancel' your selection by returning ",(0,esm.yg)("inlineCode",{parentName:"p"},"false"),". The ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelectSlot")," method returns a ",(0,esm.yg)("inlineCode",{parentName:"p"},"slotInfo")," object, containing a lot of additional information about your selection."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-select-slot",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onSelectSlot_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}};var OnSelectSlot=function OnSelectSlot(){var clickRef=(0,react.useRef)(null);(0,react.useEffect)((function(){return function(){window.clearTimeout(null==clickRef?void 0:clickRef.current)}}),[]);var onSelectSlot=(0,react.useCallback)((function(slotInfo){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){window.alert(function buildMessage(slotInfo){return"[onSelectSlot] a date selection was made, passing 'slotInfo'\n ".concat(JSON.stringify(slotInfo,null,2))}(slotInfo))}),250)}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,onSelectSlot:onSelectSlot,selectable:!0})})};OnSelectSlot.displayName="OnSelectSlot",OnSelectSlot.storyName="onSelectSlot",OnSelectSlot.parameters=Object.assign({storySource:{source:"function OnSelectSlot() {\n const clickRef = useRef(null)\n\n useEffect(() => {\n /**\n * What Is This?\n * This is to prevent a memory leak, in the off chance that you\n * teardown your interface prior to the timed method being called.\n */\n return () => {\n window.clearTimeout(clickRef?.current)\n }\n }, [])\n\n const onSelectSlot = useCallback((slotInfo) => {\n /**\n * Here we are waiting 250 milliseconds (use what you want) prior to firing\n * our method. Why? Because both 'click' and 'doubleClick'\n * would fire, in the event of a 'doubleClick'. By doing\n * this, the 'click' handler is overridden by the 'doubleClick'\n * action.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n window.alert(buildMessage(slotInfo))\n }, 250)\n }, [])\n\n const defaultDate = useMemo(() => new Date(2015, 3, 1), [])\n\n return (\n
\n \n
\n )\n}"}},OnSelectSlot.parameters);var __namedExportsOrder=["OnSelectSlot"];OnSelectSlot.__docgenInfo={description:"",methods:[],displayName:"OnSelectSlot"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onSelectSlot.stories.js"]={name:"OnSelectSlot",docgenInfo:OnSelectSlot.__docgenInfo,path:"stories/props/onSelectSlot.stories.js"})},"./stories/props/onSelecting.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnSelecting:function(){return OnSelecting},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onSelecting_stories}});__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"onselecting"},"onSelecting"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"(range: Object { start: Date, end: Date, resourceId: null|string|number }) => ?boolean")),(0,esm.yg)("li",{parentName:"ul"},"requires: ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable"))),(0,esm.yg)("p",null,"Callback fired when dragging a selection in the Time views. Only fires when ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")," is true."),(0,esm.yg)("p",null,"Returning ",(0,esm.yg)("inlineCode",{parentName:"p"},"false")," from the handler will prevent a selection."),(0,esm.yg)("h2",{id:"whats-the-difference"},"What's The Difference?"),(0,esm.yg)("p",null,"How is this different from ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"on-select-slot",mdxType:"LinkTo"},"onSelectSlot"),"? That is a very good question. The ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelecting")," method is only available in the Time views (",(0,esm.yg)("inlineCode",{parentName:"p"},"week"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"work week"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"day"),"), whereas ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelectSlot")," is also available in the ",(0,esm.yg)("inlineCode",{parentName:"p"},"month")," view. The ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelecting")," method allows you to 'cancel' your selection by returning ",(0,esm.yg)("inlineCode",{parentName:"p"},"false"),". The ",(0,esm.yg)("inlineCode",{parentName:"p"},"onSelectSlot")," method returns a ",(0,esm.yg)("inlineCode",{parentName:"p"},"slotInfo")," object, containing a lot of additional information about your selection."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-selecting",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onSelecting_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}};function buildMessage(range,eventName){return"[".concat(eventName,"] a date range selection was made, passing:\n ").concat(JSON.stringify(range,null,2))}var OnSelecting=function OnSelecting(){var clickRef=(0,react.useRef)(null);(0,react.useEffect)((function(){return function(){window.clearTimeout(null==clickRef?void 0:clickRef.current)}}),[]);var onSelectSlot=(0,react.useCallback)((function(slotInfo){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){window.alert(buildMessage(slotInfo,"onSelectSlot"))}),250)}),[]),onSelecting=(0,react.useCallback)((function(range){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){window.alert(buildMessage(range,"onSelecting"))}),250)}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,events:events.A,localizer:mLocalizer,onSelecting:onSelecting,onSelectSlot:onSelectSlot,selectable:!0})})};OnSelecting.displayName="OnSelecting",OnSelecting.storyName="onSelecting",OnSelecting.parameters=Object.assign({storySource:{source:"function OnSelecting() {\n const clickRef = useRef(null)\n\n useEffect(() => {\n /**\n * What Is This?\n * This is to prevent a memory leak, in the off chance that you\n * teardown your interface prior to the timed method being called.\n */\n return () => {\n window.clearTimeout(clickRef?.current)\n }\n }, [])\n\n const onSelectSlot = useCallback((slotInfo) => {\n /**\n * Here we are waiting 250 milliseconds (use what you want) prior to firing\n * our method. Why? Because both 'click' and 'doubleClick'\n * would fire, in the event of a 'doubleClick'. By doing\n * this, the 'click' handler is overridden by the 'doubleClick'\n * action.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n window.alert(buildMessage(slotInfo, 'onSelectSlot'))\n }, 250)\n }, [])\n\n const onSelecting = useCallback((range) => {\n /**\n * Here we are waiting 250 milliseconds (use what you want) prior to firing\n * our method. Why? Because both 'click' and 'doubleClick'\n * would fire, in the event of a 'doubleClick'. By doing\n * this, the 'click' handler is overridden by the 'doubleClick'\n * action.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n window.alert(buildMessage(range, 'onSelecting'))\n }, 250)\n }, [])\n\n const defaultDate = useMemo(() => new Date(2015, 3, 1), [])\n\n return (\n
\n \n
\n )\n}"}},OnSelecting.parameters);var __namedExportsOrder=["OnSelecting"];OnSelecting.__docgenInfo={description:"",methods:[],displayName:"OnSelecting"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onSelecting.stories.js"]={name:"OnSelecting",docgenInfo:OnSelecting.__docgenInfo,path:"stories/props/onSelecting.stories.js"})},"./stories/props/onShowMore.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnShowMore:function(){return OnShowMore},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onShowMore_stories}});__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"onshowmore"},"onShowMore"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (events: Array[event: Object], date: Date) => any"))),(0,esm.yg)("p",null,"Callback fired when a +{count} more is clicked. Receives ",(0,esm.yg)("strong",{parentName:"p"},"all")," of the ",(0,esm.yg)("inlineCode",{parentName:"p"},"events")," for the ",(0,esm.yg)("inlineCode",{parentName:"p"},"date")," on which it was selected."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-show-more",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onShowMore_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}};var OnShowMore=function OnShowMore(){var onShowMore=(0,react.useCallback)((function(events,date){return window.alert(function buildMessage(calEvents,date){return"[onShowMore] received ".concat(calEvents.length," for ").concat(date.toLocaleDateString())}(events,date))}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,onShowMore:onShowMore})})};OnShowMore.displayName="OnShowMore",OnShowMore.storyName="onShowMore",OnShowMore.parameters=Object.assign({storySource:{source:'function OnShowMore() {\n const onShowMore = useCallback(\n (events, date) => window.alert(buildMessage(events, date)),\n []\n )\n\n const defaultDate = useMemo(() => new Date(2015, 3, 1), [])\n\n return (\n
\n \n
\n )\n}'}},OnShowMore.parameters);var __namedExportsOrder=["OnShowMore"];OnShowMore.__docgenInfo={description:"",methods:[],displayName:"OnShowMore"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onShowMore.stories.js"]={name:"OnShowMore",docgenInfo:OnShowMore.__docgenInfo,path:"stories/props/onShowMore.stories.js"})},"./stories/props/onView.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{OnView:function(){return OnView},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return onView_stories}});var slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"onview"},"onView"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: 'function'"),(0,esm.yg)("li",{parentName:"ul"},"controls: ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"view",mdxType:"LinkTo"},"view")),(0,esm.yg)("li",{parentName:"ul"},"example: ",(0,esm.yg)("inlineCode",{parentName:"li"},"(newView) => setView(newView)"))),(0,esm.yg)("p",null,"Callback fired when the ",(0,esm.yg)("inlineCode",{parentName:"p"},"view")," value changes. When included it is used to 'control' the ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"view",mdxType:"LinkTo"},"view")," prop value."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--on-view",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),onView_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},OnView=function OnView(){var _useState=(0,react.useState)(new Date(2015,3,1)),_useState2=(0,slicedToArray.A)(_useState,2),date=_useState2[0],setDate=_useState2[1],_useState3=(0,react.useState)(src.Pp.WEEK),_useState4=(0,slicedToArray.A)(_useState3,2),view=_useState4[0],setView=_useState4[1],onNavigate=(0,react.useCallback)((function(newDate){return setDate(newDate)}),[setDate]),onView=(0,react.useCallback)((function(newView){return setView(newView)}),[setView]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{date:date,events:events.A,localizer:mLocalizer,onNavigate:onNavigate,onView:onView,view:view})})};OnView.displayName="OnView",OnView.storyName="onView",OnView.parameters=Object.assign({storySource:{source:'function OnView() {\n const [date, setDate] = useState(new Date(2015, 3, 1))\n const [view, setView] = useState(Views.WEEK)\n\n const onNavigate = useCallback((newDate) => setDate(newDate), [setDate])\n const onView = useCallback((newView) => setView(newView), [setView])\n\n return (\n
\n \n
\n )\n}'}},OnView.parameters);var __namedExportsOrder=["OnView"];OnView.__docgenInfo={description:"",methods:[],displayName:"OnView"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/onView.stories.js"]={name:"OnView",docgenInfo:OnView.__docgenInfo,path:"stories/props/onView.stories.js"})},"./stories/props/popup.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Popup:function(){return Popup},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return popup_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"popup"},"popup"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"true"))),(0,esm.yg)("p",null,'Show truncated events in an overlay when you click the "+',(0,esm.yg)("em",{parentName:"p"},"x"),' more" link.'),(0,esm.yg)(dist_esm.gG,{id:"props--popup",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),popup_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},popup:"boolean"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Popup=Template.bind({});Popup.storyName="popup",Popup.args={defaultDate:new Date(2015,3,13),events:events.A,localizer:mLocalizer,popup:!0},Popup.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Popup.parameters);var __namedExportsOrder=["Popup"]},"./stories/props/popupOffset.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{PopupOffset:function(){return PopupOffset},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return popupOffset_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"popupoffset"},"popupOffset"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"number|shape {x: number, y: number}"))),(0,esm.yg)("p",null,'Distance in pixels, from the edges of the viewport, the "show more" overlay should be positioned.'),(0,esm.yg)(dist_esm.gG,{id:"props--popup-offset",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),popupOffset_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},popup:"boolean"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var PopupOffset=Template.bind({});PopupOffset.storyName="popupOffset",PopupOffset.args={defaultDate:new Date(2015,3,13),events:events.A,localizer:mLocalizer,popup:!0,popupOffset:{x:30,y:20}},PopupOffset.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},PopupOffset.parameters);var __namedExportsOrder=["PopupOffset"]},"./stories/props/resourceIdAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ResourceIdAccessor:function(){return ResourceIdAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return resourceIdAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var src=__webpack_require__("./src/index.js"),storyDefaults=__webpack_require__("./stories/props/storyDefaults.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"resourceidaccessor"},"resourceIdAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string | function (resource: Object) => string | number // must be unique"))),(0,esm.yg)("p",null,"Provides a unique identifier, or an array of unique identifiers, for each resource in the ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"resources",mdxType:"LinkTo"},"resources")," array"),(0,esm.yg)(dist_esm.gG,{id:"props--resource-id-accessor",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),resourceIdAccessor_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var ResourceIdAccessor=Template.bind({});ResourceIdAccessor.storyName="resourceIdAccessor",ResourceIdAccessor.args=storyDefaults._,ResourceIdAccessor.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},ResourceIdAccessor.parameters);var __namedExportsOrder=["ResourceIdAccessor"]},"./stories/props/resourceTitleAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ResourceTitleAccessor:function(){return ResourceTitleAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return resourceTitleAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var src=__webpack_require__("./src/index.js"),storyDefaults=__webpack_require__("./stories/props/storyDefaults.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"resourcetitleaccessor"},"resourceTitleAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string | function (resource: Object) => string"))),(0,esm.yg)("p",null,"Provides a human readable name for the resource object, used in headers."),(0,esm.yg)(dist_esm.gG,{id:"props--resource-title-accessor",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),resourceTitleAccessor_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var ResourceTitleAccessor=Template.bind({});ResourceTitleAccessor.storyName="resourceTitleAccessor",ResourceTitleAccessor.args=storyDefaults._,ResourceTitleAccessor.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},ResourceTitleAccessor.parameters);var __namedExportsOrder=["ResourceTitleAccessor"]},"./stories/props/resources.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Resources:function(){return Resources},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return resources_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),resourceEvents=__webpack_require__("./stories/resources/resourceEvents.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"resources"},"resources"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"arrayOf(Resource)"))),(0,esm.yg)("p",null,"An array of resource objects that map events to a specific resource. Resource objects, like events, can be any shape or have any properties, but should be uniquly identifiable via the ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"resource-id-accessor",mdxType:"LinkTo"},"resourceIdAccessor"),', as well as a "title" or name as provided by the ',(0,esm.yg)(addon_links_react.A,{kind:"props",story:"resource-title-accessor",mdxType:"LinkTo"},"resourceTitleAccessor")," prop."),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"Resource {\n id: string | number, // must be unique\n title: string\n}\n")),(0,esm.yg)(dist_esm.gG,{id:"props--resources",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),resources_stories_resourceEvents=resourceEvents.A.events,resources=resourceEvents.A.list,mLocalizer=(0,src.ye)(moment_default()),resources_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Resources=Template.bind({});Resources.storyName="resources",Resources.args={defaultDate:new Date(2015,3,4),defaultView:src.Pp.DAY,events:resources_stories_resourceEvents,localizer:mLocalizer,resources:resources},Resources.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Resources.parameters);var __namedExportsOrder=["Resources"]},"./stories/props/rtl.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{RightToLeft:function(){return RightToLeft},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return rtl_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"rtl"},"rtl"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"false"))),(0,esm.yg)("p",null,"Switch the calendar to a right-to-left read direction. Best if used in conjunction with your ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"localizer")," and ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"messages",mdxType:"LinkTo"},"messages")," props."),(0,esm.yg)("p",null,"See the ",(0,esm.yg)(addon_links_react.A,{kind:"examples",story:"example-5",mdxType:"LinkTo"},"Localization Example")," for another example of combining ",(0,esm.yg)("inlineCode",{parentName:"p"},"rtl"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"localizer"),", ",(0,esm.yg)("inlineCode",{parentName:"p"},"culture")," and ",(0,esm.yg)("inlineCode",{parentName:"p"},"messages"),"."),(0,esm.yg)(dist_esm.gG,{id:"props--right-to-left",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),rtl_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},rtl:"boolean"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var RightToLeft=Template.bind({});RightToLeft.storyName="rtl",RightToLeft.args={defaultDate:new Date(2015,3,13),events:events.A,localizer:mLocalizer,rtl:!0,messages:{week:"أسبوع",work_week:"أسبوع العمل",day:"يوم",month:"شهر",previous:"سابق",next:"التالي",today:"اليوم",agenda:"جدول أعمال",showMore:function showMore(total){return"+".concat(total," إضافي")}}},RightToLeft.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},RightToLeft.parameters);var __namedExportsOrder=["RightToLeft"]},"./stories/props/scrollToTime.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ScrollToTime:function(){return ScrollToTime},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return scrollToTime_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"scrolltotime"},"scrollToTime"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"new Date()"))),(0,esm.yg)("p",null,"Determines how far down the scroll pane is initially scrolled down."),(0,esm.yg)(dist_esm.gG,{id:"props--scroll-to-time",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),scrollToTime_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}},events:{control:{type:null}},scrollToTime:{control:{type:"date"}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var ScrollToTime=Template.bind({});ScrollToTime.storyName="scrollToTime",ScrollToTime.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.WEEK,events:events.A,localizer:mLocalizer,scrollToTime:new Date(1972,0,1,22)},ScrollToTime.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},ScrollToTime.parameters);var __namedExportsOrder=["ScrollToTime"]},"./stories/props/selectable.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Selectable:function(){return Selectable},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return selectable_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"selectable"},"selectable"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"boolean | 'ignoreEvents'"))),(0,esm.yg)("p",null,"Allows mouse selection of ranges of dates/times."),(0,esm.yg)("p",null,"The 'ignoreEvents' option prevents selection code from running when a drag begins over an event. Useful when you want custom event click or drag logic"),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--selectable",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),selectable_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}};var Selectable=function Selectable(){var clickRef=(0,react.useRef)(null);(0,react.useEffect)((function(){return function(){window.clearTimeout(null==clickRef?void 0:clickRef.current)}}),[]);var onSelectSlot=(0,react.useCallback)((function(slotInfo){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){window.alert(function buildMessage(slotInfo){return"[onSelectSlot] a date selection was made, passing 'slotInfo'\n ".concat(JSON.stringify(slotInfo,null,2))}(slotInfo))}),250)}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,onSelectSlot:onSelectSlot,selectable:!0})})};Selectable.displayName="Selectable",Selectable.storyName="selectable",Selectable.parameters=Object.assign({storySource:{source:"function Selectable() {\n const clickRef = useRef(null)\n\n useEffect(() => {\n /**\n * What Is This?\n * This is to prevent a memory leak, in the off chance that you\n * teardown your interface prior to the timed method being called.\n */\n return () => {\n window.clearTimeout(clickRef?.current)\n }\n }, [])\n\n const onSelectSlot = useCallback((slotInfo) => {\n /**\n * Here we are waiting 250 milliseconds prior to firing\n * our method. Why? Because both 'click' and 'doubleClick'\n * would fire, in the event of a 'doubleClick'. By doing\n * this, the 'click' handler is overridden by the 'doubleClick'\n * action.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n window.alert(buildMessage(slotInfo))\n }, 250)\n }, [])\n\n const defaultDate = useMemo(() => new Date(2015, 3, 1), [])\n\n return (\n
\n \n
\n )\n}"}},Selectable.parameters);var __namedExportsOrder=["Selectable"];Selectable.__docgenInfo={description:"",methods:[],displayName:"Selectable"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/selectable.stories.js"]={name:"Selectable",docgenInfo:Selectable.__docgenInfo,path:"stories/props/selectable.stories.js"})},"./stories/props/selected.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Selected:function(){return Selected},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return selected_stories}});var slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.array.find.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"selected"},"selected"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"Event: Object"))),(0,esm.yg)("p",null,"The selected event, if any. By default, Big Calendar 'controls' the ",(0,esm.yg)("inlineCode",{parentName:"p"},"selected")," (highlighted) event in the display. You can use this prop to control which event is highlighted. The ",(0,esm.yg)("inlineCode",{parentName:"p"},"selected")," event must be a object reference to the event within the ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events")," array."),(0,esm.yg)("p",null,"Often used in conjunction with ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"on-select-event",mdxType:"LinkTo"},"OnSelectEvent")," and/or ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"on-double-click-event",mdxType:"LinkTo"},"onDoubleClickEvent"),"."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--selected",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),selected_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},Selected=function Selected(){var _useState=(0,react.useState)((function(){return events.A.find((function(event){return"Itaewon Halloween Meeting"===event.title}))})),_useState2=(0,slicedToArray.A)(_useState,2),selected=_useState2[0],setSelected=_useState2[1],clickRef=(0,react.useRef)(null);(0,react.useEffect)((function(){return function(){window.clearTimeout(null==clickRef?void 0:clickRef.current)}}),[]);var onSelectEvent=(0,react.useCallback)((function(calEvent){window.clearTimeout(null==clickRef?void 0:clickRef.current),clickRef.current=window.setTimeout((function(){setSelected(calEvent)}),250)}),[setSelected]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,1)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,onSelectEvent:onSelectEvent,selected:selected})})};Selected.displayName="Selected",Selected.storyName="selected",Selected.parameters=Object.assign({storySource:{source:"function Selected() {\n const [selected, setSelected] = useState(() => {\n // let's make an initial selection\n return demoEvents.find(\n (event) => event.title === 'Itaewon Halloween Meeting'\n )\n })\n const clickRef = useRef(null)\n\n useEffect(() => {\n /**\n * What Is This?\n * This is to prevent a memory leak, in the off chance that you\n * teardown your interface prior to the timed method being called.\n */\n return () => {\n window.clearTimeout(clickRef?.current)\n }\n }, [])\n\n const onSelectEvent = useCallback(\n (calEvent) => {\n /**\n * Here we are waiting 250 milliseconds (use what you want) prior to firing\n * our method. Why? Because both 'click' and 'doubleClick'\n * would fire, in the event of a 'doubleClick'. By doing\n * this, the 'click' handler is overridden by the 'doubleClick'\n * action.\n */\n window.clearTimeout(clickRef?.current)\n clickRef.current = window.setTimeout(() => {\n setSelected(calEvent)\n }, 250)\n },\n [setSelected]\n )\n\n const defaultDate = useMemo(() => new Date(2015, 3, 1), [])\n\n return (\n
\n \n
\n )\n}"}},Selected.parameters);var __namedExportsOrder=["Selected"];Selected.__docgenInfo={description:"",methods:[],displayName:"Selected"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/selected.stories.js"]={name:"Selected",docgenInfo:Selected.__docgenInfo,path:"stories/props/selected.stories.js"})},"./stories/props/showAllEvents.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ShowAllEvents:function(){return ShowAllEvents},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return showAllEvents_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"showallevents"},"showAllEvents"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"false"))),(0,esm.yg)("p",null,"Displays all events on the month view instead of having some hidden behind +{count} more. This will cause the rows in the month view to be scrollable if the number of events exceed the height of the row."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--show-all-events",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),showAllEvents_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},showAllEvents:"boolean"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var ShowAllEvents=Template.bind({});ShowAllEvents.storyName="showAllEvents",ShowAllEvents.args={defaultDate:new Date(2015,3,13),events:events.A,localizer:mLocalizer,showAllEvents:!0},ShowAllEvents.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},ShowAllEvents.parameters);var __namedExportsOrder=["ShowAllEvents"]},"./stories/props/showMultiDayTimes.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ShowMultiDayTimes:function(){return ShowMultiDayTimes},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return showMultiDayTimes_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"showmultidaytimes"},"showMultiDayTimes"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"false"))),(0,esm.yg)("p",null,"Support to show multi-day events with specific start and end times in the main time grid (rather than in the all day header)."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Note: This may cause calendars with several events to look very busy in the week and day views.")),(0,esm.yg)(dist_esm.gG,{id:"props--show-multi-day-times",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),showMultiDayTimes_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}},max:{control:{type:null}},showMultiDayTimes:"boolean"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var ShowMultiDayTimes=Template.bind({});ShowMultiDayTimes.storyName="showMultiDayTimes",ShowMultiDayTimes.args={defaultDate:new Date(2016,11,4),defaultView:src.Pp.WEEK,events:[{title:"start of the week",start:new Date(2016,11,4,15),end:new Date(2016,11,5,3)},{title:"single day longer than max",start:new Date(2016,11,4,15),end:new Date(2016,11,4,23,30)},{title:"end of the week",start:new Date(2016,11,3),end:new Date(2016,11,3)},{title:"middle",start:new Date(2016,11,6),end:new Date(2016,11,6)}],localizer:mLocalizer,max:moment_default()().endOf("day").add(-1,"hours").toDate(),showMultiDayTimes:!0},ShowMultiDayTimes.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},ShowMultiDayTimes.parameters);var __namedExportsOrder=["ShowMultiDayTimes"]},"./stories/props/slotGroupPropGetter.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{SlotGroupPropGetter:function(){return SlotGroupPropGetter},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return slotGroupPropGetter_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"slotgrouppropgetter"},"slotGroupPropGetter"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (group: Date[]) => { style?: Object }"))),(0,esm.yg)("p",null,"Optionally provide a function that returns an object of className or style props to be applied to the time-slot node."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Caution! Styles that change layout or position may break the calendar in unexpected ways.")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--slot-group-prop-getter",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;__webpack_require__("./stories/resources/propGetter.scss");var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),slotGroupPropGetter_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},SlotGroupPropGetter=function SlotGroupPropGetter(){var slotGroupPropGetter=(0,react.useCallback)((function(){return{style:{minHeight:60}}}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,13)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,slotGroupPropGetter:slotGroupPropGetter,events:events.A,localizer:mLocalizer})})};SlotGroupPropGetter.displayName="SlotGroupPropGetter",SlotGroupPropGetter.storyName="slotGroupPropGetter",SlotGroupPropGetter.parameters=Object.assign({storySource:{source:'function SlotGroupPropGetter() {\n const slotGroupPropGetter = useCallback(\n () => ({\n style: {\n minHeight: 60,\n },\n }),\n []\n )\n\n const defaultDate = useMemo(() => new Date(2015, 3, 13), [])\n\n return (\n
\n \n
\n )\n}'}},SlotGroupPropGetter.parameters);var __namedExportsOrder=["SlotGroupPropGetter"];SlotGroupPropGetter.__docgenInfo={description:"",methods:[],displayName:"SlotGroupPropGetter"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/slotGroupPropGetter.stories.js"]={name:"SlotGroupPropGetter",docgenInfo:SlotGroupPropGetter.__docgenInfo,path:"stories/props/slotGroupPropGetter.stories.js"})},"./stories/props/slotPropGetter.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{SlotPropGetter:function(){return SlotPropGetter},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return slotPropGetter_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"slotpropgetter"},"slotPropGetter"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"function (date: Date) => {className?: string, style?: Object}"))),(0,esm.yg)("p",null,"Optionally provide a function that returns an object of className or style props to be applied to the the time-slot node."),(0,esm.yg)("p",null,(0,esm.yg)("strong",{parentName:"p"},"Caution!")," Styles that change layout or position may break the calendar in unexpected ways."),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--slot-prop-getter",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;__webpack_require__("./stories/resources/propGetter.scss");var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),slotPropGetter_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},SlotPropGetter=function SlotPropGetter(){var slotPropGetter=(0,react.useCallback)((function(date){return Object.assign({className:"slotDefault"},moment_default()(date).hour()<8&&{style:{backgroundColor:"powderblue",color:"black"}},moment_default()(date).hour()>12&&{style:{backgroundColor:"darkgreen",color:"white"}})}),[]),defaultDate=(0,react.useMemo)((function(){return new Date(2015,3,13)}),[]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,defaultView:src.Pp.WEEK,slotPropGetter:slotPropGetter,events:events.A,localizer:mLocalizer})})};SlotPropGetter.displayName="SlotPropGetter",SlotPropGetter.storyName="slotPropGetter",SlotPropGetter.parameters=Object.assign({storySource:{source:"function SlotPropGetter() {\n const slotPropGetter = useCallback(\n (date) => ({\n className: 'slotDefault',\n ...(moment(date).hour() < 8 && {\n style: {\n backgroundColor: 'powderblue',\n color: 'black',\n },\n }),\n ...(moment(date).hour() > 12 && {\n style: {\n backgroundColor: 'darkgreen',\n color: 'white',\n },\n }),\n }),\n []\n )\n\n const defaultDate = useMemo(() => new Date(2015, 3, 13), [])\n\n return (\n
\n \n
\n )\n}"}},SlotPropGetter.parameters);var __namedExportsOrder=["SlotPropGetter"];SlotPropGetter.__docgenInfo={description:"",methods:[],displayName:"SlotPropGetter"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/slotPropGetter.stories.js"]={name:"SlotPropGetter",docgenInfo:SlotPropGetter.__docgenInfo,path:"stories/props/slotPropGetter.stories.js"})},"./stories/props/startAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{StartAccessor:function(){return StartAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return startAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var src=__webpack_require__("./src/index.js"),storyDefaults=__webpack_require__("./stories/props/storyDefaults.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"startaccessor"},"startAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => Date")),(0,esm.yg)("li",{parentName:"ul"},"default: 'start'")),(0,esm.yg)("p",null,"The start date/time of the event. Must resolve to a JavaScript ",(0,esm.yg)("inlineCode",{parentName:"p"},"Date")," object."),(0,esm.yg)(dist_esm.gG,{id:"props--start-accessor",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),startAccessor_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var StartAccessor=Template.bind({});StartAccessor.storyName="startAccessor",StartAccessor.args=storyDefaults.o,StartAccessor.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},StartAccessor.parameters);var __namedExportsOrder=["StartAccessor"]},"./stories/props/step.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Step:function(){return Step},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return step_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"step"},"step"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"number")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"30"))),(0,esm.yg)("p",null,"Determines the selectable time increments in week and day views"),(0,esm.yg)(dist_esm.gG,{id:"props--step",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),step_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}},step:"number"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Step=Template.bind({});Step.storyName="step",Step.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.WEEK,events:events.A,localizer:mLocalizer,step:15},Step.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Step.parameters);var __namedExportsOrder=["Step"]},"./stories/props/timeslots.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Timeslots:function(){return Timeslots},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return timeslots_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"timeslots"},"timeslots"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"number"))),(0,esm.yg)("p",null,'The number of slots per "section" in the time grid views. Adjust with ',(0,esm.yg)(addon_links_react.A,{kind:"props",story:"step",mdxType:"LinkTo"},"step")," to change the default of 1 hour long groups, with 30 minute slots."),(0,esm.yg)(dist_esm.gG,{id:"props--timeslots",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),timeslots_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},defaultView:{control:{type:null}},step:"number",timeslots:"number"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Timeslots=Template.bind({});Timeslots.storyName="timeslots",Timeslots.args={defaultDate:new Date(2015,3,13),defaultView:src.Pp.WEEK,events:events.A,localizer:mLocalizer,step:15,timeslots:4},Timeslots.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Timeslots.parameters);var __namedExportsOrder=["Timeslots"]},"./stories/props/titleAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{TitleAccessor:function(){return TitleAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return titleAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var src=__webpack_require__("./src/index.js"),storyDefaults=__webpack_require__("./stories/props/storyDefaults.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"titleaccessor"},"titleAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => string")),(0,esm.yg)("li",{parentName:"ul"},"default: 'title'")),(0,esm.yg)("p",null,"Accessor for the event title, used to display event information. Should resolve to a ",(0,esm.yg)("inlineCode",{parentName:"p"},"renderable")," value."),(0,esm.yg)(dist_esm.gG,{id:"props--title-accessor",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),titleAccessor_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var TitleAccessor=Template.bind({});TitleAccessor.storyName="titleAccessor",TitleAccessor.args=storyDefaults.o,TitleAccessor.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},TitleAccessor.parameters);var __namedExportsOrder=["TitleAccessor"]},"./stories/props/toolbar.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Toolbar:function(){return Toolbar},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return toolbar_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"toolbar"},"toolbar"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"boolean")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"true"))),(0,esm.yg)("p",null,"Determines whether the toolbar is displayed"),(0,esm.yg)(dist_esm.gG,{id:"props--toolbar",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),toolbar_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}},toolbar:"boolean"},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var Toolbar=Template.bind({});Toolbar.storyName="toolbar",Toolbar.args={defaultDate:new Date(2015,3,13),events:events.A,localizer:mLocalizer,toolbar:!0},Toolbar.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},Toolbar.parameters);var __namedExportsOrder=["Toolbar"]},"./stories/props/tooltipAccessor.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{TooltipAccessor:function(){return TooltipAccessor},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return tooltipAccessor_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var src=__webpack_require__("./src/index.js"),storyDefaults=__webpack_require__("./stories/props/storyDefaults.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"tooltipaccessor"},"tooltipAccessor"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => string")),(0,esm.yg)("li",{parentName:"ul"},"default: 'title'")),(0,esm.yg)("p",null,"Accessor for the event tooltip, used to display event information. Should resolve to a ",(0,esm.yg)("inlineCode",{parentName:"p"},"renderable")," value. Removes the tooltip if null."),(0,esm.yg)(dist_esm.gG,{id:"props--tooltip-accessor",mdxType:"Story"}))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),tooltipAccessor_stories={title:"props",component:src.Vv,argTypes:{localizer:{control:{type:null}},events:{control:{type:null}},defaultDate:{control:{type:null}}},parameters:{docs:{page:MDXContent}}},Template=function Template(args){return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,Object.assign({},args))})};Template.displayName="Template";var TooltipAccessor=Template.bind({});TooltipAccessor.storyName="tooltipAccessor",TooltipAccessor.args=storyDefaults.o,TooltipAccessor.parameters=Object.assign({storySource:{source:'(args) => (\n
\n \n
\n)'}},TooltipAccessor.parameters);var __namedExportsOrder=["TooltipAccessor"]},"./stories/props/view.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{View:function(){return View},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return view_stories}});var slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),addon_links_react=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"view"},"view"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"string")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"Views.MONTH (month|week|work_week|day|agenda)")),(0,esm.yg)("li",{parentName:"ul"},"controlled by: ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"on-view",mdxType:"LinkTo"},"onView"))),(0,esm.yg)("p",null,"The current view value of the calendar. Determines the visible 'view'.\nIf ",(0,esm.yg)("inlineCode",{parentName:"p"},"view")," is omitted then it is defaulted to 'month'."),(0,esm.yg)("p",null,"This is a controllable prop, when using ",(0,esm.yg)(addon_links_react.A,{kind:"props",story:"on-view",mdxType:"LinkTo"},"onView")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--view",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),view_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},View=function View(){var _useState=(0,react.useState)(new Date(2015,3,1)),_useState2=(0,slicedToArray.A)(_useState,2),date=_useState2[0],setDate=_useState2[1],_useState3=(0,react.useState)(src.Pp.WEEK),_useState4=(0,slicedToArray.A)(_useState3,2),view=_useState4[0],setView=_useState4[1],onNavigate=(0,react.useCallback)((function(newDate){return setDate(newDate)}),[setDate]),onView=(0,react.useCallback)((function(newView){return setView(newView)}),[setView]);return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{date:date,events:events.A,localizer:mLocalizer,onNavigate:onNavigate,onView:onView,view:view})})};View.displayName="View",View.storyName="view",View.parameters=Object.assign({storySource:{source:'function View() {\n const [date, setDate] = useState(new Date(2015, 3, 1))\n const [view, setView] = useState(Views.WEEK)\n\n const onNavigate = useCallback((newDate) => setDate(newDate), [setDate])\n const onView = useCallback((newView) => setView(newView), [setView])\n\n return (\n
\n \n
\n )\n}'}},View.parameters);var __namedExportsOrder=["View"];View.__docgenInfo={description:"",methods:[],displayName:"View"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/view.stories.js"]={name:"View",docgenInfo:View.__docgenInfo,path:"stories/props/view.stories.js"})},"./stories/props/views.stories.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{CalViews:function(){return CalViews},__namedExportsOrder:function(){return __namedExportsOrder},default:function(){return views_stories}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),moment=__webpack_require__("./node_modules/moment/moment.js"),moment_default=__webpack_require__.n(moment),src=__webpack_require__("./src/index.js"),events=__webpack_require__("./stories/resources/events.js"),esm=(__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js")),dist_esm=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,esm.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,esm.yg)("h1",{id:"views"},"views"),(0,esm.yg)("ul",null,(0,esm.yg)("li",{parentName:"ul"},"type: ",(0,esm.yg)("inlineCode",{parentName:"li"},"Views ('month'|'week'|'work_week'|'day'|'agenda')")),(0,esm.yg)("li",{parentName:"ul"},"default: ",(0,esm.yg)("inlineCode",{parentName:"li"},"[views.MONTH, views.WEEK, views.DAY, views.AGENDA]"))),(0,esm.yg)("p",null,"An array of built-in view names to allow the calendar to display. accepts either an array of builtin view names,"),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"views={['month', 'day', 'agenda']}\n")),(0,esm.yg)("p",null,"or an object hash of the view name and the component (or boolean for builtin)."),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"views={{\n month: true,\n week: false,\n myweek: WorkWeekViewComponent,\n}}\n")),(0,esm.yg)("p",null,"Custom views can be any React component, that implements the following interface:"),(0,esm.yg)("pre",null,(0,esm.yg)("code",{parentName:"pre",className:"language-js"},"interface View {\n static title(date: Date, { formats: DateFormat[], culture: string?, ...props }): string\n static navigate(date: Date, action: 'PREV' | 'NEXT' | 'DATE'): Date\n}\n")),(0,esm.yg)(dist_esm.Hl,{mdxType:"Canvas"},(0,esm.yg)(dist_esm.gG,{id:"props--cal-views",mdxType:"Story"})))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),mLocalizer=(0,src.ye)(moment_default()),views_stories={title:"props",component:src.Vv,parameters:{docs:{page:MDXContent}}},CalViews=function CalViews(){var _useMemo=(0,react.useMemo)((function(){return{defaultDate:new Date(2015,3,1),views:[src.Pp.MONTH,src.Pp.DAY,src.Pp.AGENDA]}}),[]),defaultDate=_useMemo.defaultDate,views=_useMemo.views;return(0,jsx_runtime.jsx)("div",{className:"height600",children:(0,jsx_runtime.jsx)(src.Vv,{defaultDate:defaultDate,events:events.A,localizer:mLocalizer,views:views})})};CalViews.displayName="CalViews",CalViews.storyName="views",CalViews.parameters=Object.assign({storySource:{source:'function CalViews() {\n const { defaultDate, views } = useMemo(\n () => ({\n defaultDate: new Date(2015, 3, 1),\n views: [Views.MONTH, Views.DAY, Views.AGENDA],\n }),\n []\n )\n\n return (\n
\n \n
\n )\n}'}},CalViews.parameters);var __namedExportsOrder=["CalViews"];CalViews.__docgenInfo={description:"",methods:[],displayName:"CalViews"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/props/views.stories.js"]={name:"CalViews",docgenInfo:CalViews.__docgenInfo,path:"stories/props/views.stories.js"})},"./src/BackgroundWrapper.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";var _NoopWrapper__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./src/NoopWrapper.js");__webpack_exports__.A=_NoopWrapper__WEBPACK_IMPORTED_MODULE_0__.A},"./src/DateContentRow.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return src_DateContentRow}});var classCallCheck=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/classCallCheck.js"),createClass=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/createClass.js"),callSuper=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/callSuper.js"),inherits=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/inherits.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.array.slice.js"),__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),clsx_m=__webpack_require__("./node_modules/clsx/dist/clsx.m.js"),height=__webpack_require__("./node_modules/dom-helpers/esm/height.js"),querySelectorAll=__webpack_require__("./node_modules/dom-helpers/esm/querySelectorAll.js"),helpers=__webpack_require__("./src/utils/helpers.js"),selection=__webpack_require__("./src/utils/selection.js"),Selection=__webpack_require__("./src/Selection.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),BackgroundCells=function(_React$Component){function BackgroundCells(props,context){var _this;return(0,classCallCheck.default)(this,BackgroundCells),(_this=(0,callSuper.default)(this,BackgroundCells,[props,context])).state={selecting:!1},_this.containerRef=(0,react.createRef)(),_this}return(0,inherits.default)(BackgroundCells,_React$Component),(0,createClass.default)(BackgroundCells,[{key:"componentDidMount",value:function componentDidMount(){this.props.selectable&&this._selectable()}},{key:"componentWillUnmount",value:function componentWillUnmount(){this._teardownSelectable()}},{key:"componentDidUpdate",value:function componentDidUpdate(prevProps){!prevProps.selectable&&this.props.selectable&&this._selectable(),prevProps.selectable&&!this.props.selectable&&this._teardownSelectable()}},{key:"render",value:function render(){var _this$props=this.props,range=_this$props.range,getNow=_this$props.getNow,getters=_this$props.getters,currentDate=_this$props.date,Wrapper=_this$props.components.dateCellWrapper,localizer=_this$props.localizer,_this$state=this.state,selecting=_this$state.selecting,startIdx=_this$state.startIdx,endIdx=_this$state.endIdx,current=getNow();return(0,jsx_runtime.jsx)("div",{className:"rbc-row-bg",ref:this.containerRef,children:range.map((function(date,index){var selected=selecting&&index>=startIdx&&index<=endIdx,_getters$dayProp=getters.dayProp(date),className=_getters$dayProp.className,style=_getters$dayProp.style;return(0,jsx_runtime.jsx)(Wrapper,{value:date,range:range,children:(0,jsx_runtime.jsx)("div",{style:style,className:(0,clsx_m.A)("rbc-day-bg",className,selected&&"rbc-selected-cell",localizer.isSameDate(date,current)&&"rbc-today",currentDate&&localizer.neq(currentDate,date,"month")&&"rbc-off-range-bg")})},index)}))})}},{key:"_selectable",value:function _selectable(){var _this2=this,node=this.containerRef.current,selector=this._selector=new Selection.Ay(this.props.container,{longPressThreshold:this.props.longPressThreshold}),selectorClicksHandler=function selectorClicksHandler(point,actionType){if(!(0,Selection.xH)(node,point)&&!(0,Selection.fN)(node,point)){var rowBox=(0,Selection.rF)(node),_this2$props=_this2.props,range=_this2$props.range,rtl=_this2$props.rtl;if((0,selection.bY)(rowBox,point)){var currentCell=(0,selection.sU)(rowBox,point.x,rtl,range.length);_this2._selectSlot({startIdx:currentCell,endIdx:currentCell,action:actionType,box:point})}}_this2._initial={},_this2.setState({selecting:!1})};selector.on("selecting",(function(box){var _this2$props2=_this2.props,range=_this2$props2.range,rtl=_this2$props2.rtl,startIdx=-1,endIdx=-1;if(_this2.state.selecting||((0,helpers.me)(_this2.props.onSelectStart,[box]),_this2._initial={x:box.x,y:box.y}),selector.isSelected(node)){var nodeBox=(0,Selection.rF)(node),_dateCellSelection=(0,selection.bx)(_this2._initial,nodeBox,box,range.length,rtl);startIdx=_dateCellSelection.startIdx,endIdx=_dateCellSelection.endIdx}_this2.setState({selecting:!0,startIdx:startIdx,endIdx:endIdx})})),selector.on("beforeSelect",(function(box){if("ignoreEvents"===_this2.props.selectable)return!(0,Selection.xH)(_this2.containerRef.current,box)})),selector.on("click",(function(point){return selectorClicksHandler(point,"click")})),selector.on("doubleClick",(function(point){return selectorClicksHandler(point,"doubleClick")})),selector.on("select",(function(bounds){_this2._selectSlot(Object.assign({},_this2.state,{action:"select",bounds:bounds})),_this2._initial={},_this2.setState({selecting:!1}),(0,helpers.me)(_this2.props.onSelectEnd,[_this2.state])}))}},{key:"_teardownSelectable",value:function _teardownSelectable(){this._selector&&(this._selector.teardown(),this._selector=null)}},{key:"_selectSlot",value:function _selectSlot(_ref){var endIdx=_ref.endIdx,startIdx=_ref.startIdx,action=_ref.action,bounds=_ref.bounds,box=_ref.box;-1!==endIdx&&-1!==startIdx&&this.props.onSelectSlot&&this.props.onSelectSlot({start:startIdx,end:endIdx,action:action,bounds:bounds,box:box,resourceId:this.props.resourceId})}}])}(react.Component);BackgroundCells.__docgenInfo={description:"",methods:[{name:"_selectable",docblock:null,modifiers:[],params:[],returns:null},{name:"_teardownSelectable",docblock:null,modifiers:[],params:[],returns:null},{name:"_selectSlot",docblock:null,modifiers:[],params:[{name:"{ endIdx, startIdx, action, bounds, box }",type:null}],returns:null}],displayName:"BackgroundCells",props:{date:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},getNow:{description:"",type:{name:"func"},required:!0},getters:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},container:{description:"",type:{name:"func"},required:!1},dayPropGetter:{description:"",type:{name:"func"},required:!1},selectable:{description:"",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},longPressThreshold:{description:"",type:{name:"number"},required:!1},onSelectSlot:{description:"",type:{name:"func"},required:!0},onSelectEnd:{description:"",type:{name:"func"},required:!1},onSelectStart:{description:"",type:{name:"func"},required:!1},range:{description:"",type:{name:"arrayOf",value:{name:"instanceOf",value:"Date"}},required:!1},rtl:{description:"",type:{name:"bool"},required:!1},type:{description:"",type:{name:"string"},required:!1},resourceId:{description:"",type:{name:"any"},required:!1},localizer:{description:"",type:{name:"any"},required:!1}}};var src_BackgroundCells=BackgroundCells;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/BackgroundCells.js"]={name:"BackgroundCells",docgenInfo:BackgroundCells.__docgenInfo,path:"src/BackgroundCells.js"});var EventRow=__webpack_require__("./src/EventRow.js"),EventRowMixin=(__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./src/EventRowMixin.js")),eventLevels=__webpack_require__("./src/utils/eventLevels.js"),range=__webpack_require__("./node_modules/lodash/range.js"),range_default=__webpack_require__.n(range),isSegmentInSlot=function isSegmentInSlot(seg,slot){return seg.left<=slot&&seg.right>=slot},eventsInSlot=function eventsInSlot(segments,slot){return segments.filter((function(seg){return isSegmentInSlot(seg,slot)})).map((function(seg){return seg.event}))},EventEndingRow=function(_React$Component){function EventEndingRow(){return(0,classCallCheck.default)(this,EventEndingRow),(0,callSuper.default)(this,EventEndingRow,arguments)}return(0,inherits.default)(EventEndingRow,_React$Component),(0,createClass.default)(EventEndingRow,[{key:"render",value:function render(){for(var _this$props=this.props,segments=_this$props.segments,slots=_this$props.slotMetrics.slots,rowSegments=(0,eventLevels.O_)(segments).levels[0],current=1,lastEnd=1,row=[];current<=slots;){var key="_lvl_"+current,_ref=rowSegments.filter((function(seg){return isSegmentInSlot(seg,current)}))[0]||{},event=_ref.event,left=_ref.left,right=_ref.right,span=_ref.span;if(event){var gap=Math.max(0,left-lastEnd);if(this.canRenderSlotEvent(left,span)){var content=EventRowMixin.A.renderEvent(this.props,event);gap&&row.push(EventRowMixin.A.renderSpan(slots,gap,key+"_gap")),row.push(EventRowMixin.A.renderSpan(slots,span,key,content)),lastEnd=current=right+1}else gap&&row.push(EventRowMixin.A.renderSpan(slots,gap,key+"_gap")),row.push(EventRowMixin.A.renderSpan(slots,1,key,this.renderShowMore(segments,current))),lastEnd=current+=1}else current++}return(0,jsx_runtime.jsx)("div",{className:"rbc-row",children:row})}},{key:"canRenderSlotEvent",value:function canRenderSlotEvent(slot,span){var segments=this.props.segments;return range_default()(slot,slot+span).every((function(s){return 1===eventsInSlot(segments,s).length}))}},{key:"renderShowMore",value:function renderShowMore(segments,slot){var _this=this,_this$props2=this.props,localizer=_this$props2.localizer,events=_this$props2.slotMetrics.getEventsForSlot(slot),remainingEvents=eventsInSlot(segments,slot),count=remainingEvents.length;return!!count&&(0,jsx_runtime.jsx)("button",{type:"button",className:(0,clsx_m.A)("rbc-button-link","rbc-show-more"),onClick:function onClick(e){return _this.showMore(slot,e)},children:localizer.messages.showMore(count,remainingEvents,events)},"sm_"+slot)}},{key:"showMore",value:function showMore(slot,e){e.preventDefault(),e.stopPropagation(),this.props.onShowMore(slot,e.target)}}])}(react.Component);EventEndingRow.defaultProps=Object.assign({},EventRowMixin.A.defaultProps),EventEndingRow.__docgenInfo={description:"",methods:[{name:"canRenderSlotEvent",docblock:null,modifiers:[],params:[{name:"slot",type:null},{name:"span",type:null}],returns:null},{name:"renderShowMore",docblock:null,modifiers:[],params:[{name:"segments",type:null},{name:"slot",type:null}],returns:null},{name:"showMore",docblock:null,modifiers:[],params:[{name:"slot",type:null},{name:"e",type:null}],returns:null}],displayName:"EventEndingRow",props:{segments:{description:"",type:{name:"array"},required:!1},slots:{description:"",type:{name:"number"},required:!1},onShowMore:{description:"",type:{name:"func"},required:!1}},composes:["./EventRowMixin"]};var src_EventEndingRow=EventEndingRow;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/EventEndingRow.js"]={name:"EventEndingRow",docgenInfo:EventEndingRow.__docgenInfo,path:"src/EventEndingRow.js"});var NoopWrapper=__webpack_require__("./src/NoopWrapper.js"),ScrollableWeekWrapper=function ScrollableWeekWrapper(_ref){var children=_ref.children;return(0,jsx_runtime.jsx)("div",{className:"rbc-row-content-scroll-container",children:children})};ScrollableWeekWrapper.displayName="ScrollableWeekWrapper",ScrollableWeekWrapper.__docgenInfo={description:"",methods:[],displayName:"ScrollableWeekWrapper"};var src_ScrollableWeekWrapper=ScrollableWeekWrapper;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/ScrollableWeekWrapper.js"]={name:"ScrollableWeekWrapper",docgenInfo:ScrollableWeekWrapper.__docgenInfo,path:"src/ScrollableWeekWrapper.js"});__webpack_require__("./node_modules/core-js/modules/es.array.find.js");var memoize_one_esm=__webpack_require__("./node_modules/memoize-one/dist/memoize-one.esm.js"),isEqual=function isEqual(a,b){return a[0].range===b[0].range&&a[0].events===b[0].events};function getSlotMetrics(){return(0,memoize_one_esm.A)((function(options){for(var range=options.range,events=options.events,maxRows=options.maxRows,minRows=options.minRows,accessors=options.accessors,localizer=options.localizer,_endOfRange=(0,eventLevels.qO)({dateRange:range,localizer:localizer}),first=_endOfRange.first,last=_endOfRange.last,segments=events.map((function(evt){return(0,eventLevels.FA)(evt,range,accessors,localizer)})),_eventLevels=(0,eventLevels.O_)(segments,Math.max(maxRows-1,1)),levels=_eventLevels.levels,extra=_eventLevels.extra,minEventRows=extra.length>0?minRows-1:minRows;levels.length=slot}(seg,slot)})).map((function(seg){return seg.event}))},continuesPrior:function continuesPrior(event){return localizer.continuesPrior(accessors.start(event),first)},continuesAfter:function continuesAfter(event){var start=accessors.start(event),end=accessors.end(event);return localizer.continuesAfter(start,end,last)}}}),isEqual)}var DateContentRow=function(_React$Component){function DateContentRow(){var _this;(0,classCallCheck.default)(this,DateContentRow);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,DateContentRow,[].concat(args))).handleSelectSlot=function(slot){var _this$props=_this.props,range=_this$props.range;(0,_this$props.onSelectSlot)(range.slice(slot.start,slot.end+1),slot)},_this.handleShowMore=function(slot,target){var cell,_this$props2=_this.props,range=_this$props2.range,onShowMore=_this$props2.onShowMore,metrics=_this.slotMetrics(_this.props),row=(0,querySelectorAll.A)(_this.containerRef.current,".rbc-row-bg")[0];row&&(cell=row.children[slot-1]),onShowMore(metrics.getEventsForSlot(slot),range[slot-1],cell,slot,target)},_this.getContainer=function(){var container=_this.props.container;return container?container():_this.containerRef.current},_this.renderHeadingCell=function(date,index){var _this$props3=_this.props,renderHeader=_this$props3.renderHeader,getNow=_this$props3.getNow,localizer=_this$props3.localizer;return renderHeader({date:date,key:"header_".concat(index),className:(0,clsx_m.A)("rbc-date-cell",localizer.isSameDate(date,getNow())&&"rbc-now")})},_this.renderDummy=function(){var _this$props4=_this.props,className=_this$props4.className,range=_this$props4.range,renderHeader=_this$props4.renderHeader,showAllEvents=_this$props4.showAllEvents;return(0,jsx_runtime.jsx)("div",{className:className,ref:_this.containerRef,children:(0,jsx_runtime.jsxs)("div",{className:(0,clsx_m.A)("rbc-row-content",showAllEvents&&"rbc-row-content-scrollable"),children:[renderHeader&&(0,jsx_runtime.jsx)("div",{className:"rbc-row",ref:_this.headingRowRef,children:range.map(_this.renderHeadingCell)}),(0,jsx_runtime.jsx)("div",{className:"rbc-row",ref:_this.eventRowRef,children:(0,jsx_runtime.jsx)("div",{className:"rbc-row-segment",children:(0,jsx_runtime.jsx)("div",{className:"rbc-event",children:(0,jsx_runtime.jsx)("div",{className:"rbc-event-content",children:" "})})})})]})})},_this.containerRef=(0,react.createRef)(),_this.headingRowRef=(0,react.createRef)(),_this.eventRowRef=(0,react.createRef)(),_this.slotMetrics=getSlotMetrics(),_this}return(0,inherits.default)(DateContentRow,_React$Component),(0,createClass.default)(DateContentRow,[{key:"getRowLimit",value:function getRowLimit(){var _this$headingRowRef,eventHeight=(0,height.A)(this.eventRowRef.current),headingHeight=null!==(_this$headingRowRef=this.headingRowRef)&&void 0!==_this$headingRowRef&&_this$headingRowRef.current?(0,height.A)(this.headingRowRef.current):0,eventSpace=(0,height.A)(this.containerRef.current)-headingHeight;return Math.max(Math.floor(eventSpace/eventHeight),1)}},{key:"render",value:function render(){var _this$props5=this.props,date=_this$props5.date,rtl=_this$props5.rtl,range=_this$props5.range,className=_this$props5.className,selected=_this$props5.selected,selectable=_this$props5.selectable,renderForMeasure=_this$props5.renderForMeasure,accessors=_this$props5.accessors,getters=_this$props5.getters,components=_this$props5.components,getNow=_this$props5.getNow,renderHeader=_this$props5.renderHeader,onSelect=_this$props5.onSelect,localizer=_this$props5.localizer,onSelectStart=_this$props5.onSelectStart,onSelectEnd=_this$props5.onSelectEnd,onDoubleClick=_this$props5.onDoubleClick,onKeyPress=_this$props5.onKeyPress,resourceId=_this$props5.resourceId,longPressThreshold=_this$props5.longPressThreshold,isAllDay=_this$props5.isAllDay,resizable=_this$props5.resizable,showAllEvents=_this$props5.showAllEvents;if(renderForMeasure)return this.renderDummy();var metrics=this.slotMetrics(this.props),levels=metrics.levels,extra=metrics.extra,ScrollableWeekComponent=showAllEvents?src_ScrollableWeekWrapper:NoopWrapper.A,WeekWrapper=components.weekWrapper,eventRowProps={selected:selected,accessors:accessors,getters:getters,localizer:localizer,components:components,onSelect:onSelect,onDoubleClick:onDoubleClick,onKeyPress:onKeyPress,resourceId:resourceId,slotMetrics:metrics,resizable:resizable};return(0,jsx_runtime.jsxs)("div",{className:className,role:"rowgroup",ref:this.containerRef,children:[(0,jsx_runtime.jsx)(src_BackgroundCells,{localizer:localizer,date:date,getNow:getNow,rtl:rtl,range:range,selectable:selectable,container:this.getContainer,getters:getters,onSelectStart:onSelectStart,onSelectEnd:onSelectEnd,onSelectSlot:this.handleSelectSlot,components:components,longPressThreshold:longPressThreshold,resourceId:resourceId}),(0,jsx_runtime.jsxs)("div",{className:(0,clsx_m.A)("rbc-row-content",showAllEvents&&"rbc-row-content-scrollable"),role:"row",children:[renderHeader&&(0,jsx_runtime.jsx)("div",{className:"rbc-row ",ref:this.headingRowRef,children:range.map(this.renderHeadingCell)}),(0,jsx_runtime.jsx)(ScrollableWeekComponent,{children:(0,jsx_runtime.jsxs)(WeekWrapper,Object.assign({isAllDay:isAllDay},eventRowProps,{rtl:this.props.rtl,children:[levels.map((function(segs,idx){return(0,jsx_runtime.jsx)(EventRow.A,Object.assign({segments:segs},eventRowProps),idx)})),!!extra.length&&(0,jsx_runtime.jsx)(src_EventEndingRow,Object.assign({segments:extra,onShowMore:this.handleShowMore},eventRowProps))]}))})]})]})}}])}(react.Component);DateContentRow.defaultProps={minRows:0,maxRows:1/0},DateContentRow.__docgenInfo={description:"",methods:[{name:"handleSelectSlot",docblock:null,modifiers:[],params:[{name:"slot",type:null}],returns:null},{name:"handleShowMore",docblock:null,modifiers:[],params:[{name:"slot",type:null},{name:"target",type:null}],returns:null},{name:"getContainer",docblock:null,modifiers:[],params:[],returns:null},{name:"getRowLimit",docblock:null,modifiers:[],params:[],returns:null},{name:"renderHeadingCell",docblock:null,modifiers:[],params:[{name:"date",type:null},{name:"index",type:null}],returns:null},{name:"renderDummy",docblock:null,modifiers:[],params:[],returns:null}],displayName:"DateContentRow",props:{minRows:{defaultValue:{value:"0",computed:!1},description:"",type:{name:"number"},required:!1},maxRows:{defaultValue:{value:"Infinity",computed:!0},description:"",type:{name:"number"},required:!1},date:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},events:{description:"",type:{name:"array"},required:!0},range:{description:"",type:{name:"array"},required:!0},rtl:{description:"",type:{name:"bool"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1},resourceId:{description:"",type:{name:"any"},required:!1},renderForMeasure:{description:"",type:{name:"bool"},required:!1},renderHeader:{description:"",type:{name:"func"},required:!1},container:{description:"",type:{name:"func"},required:!1},selected:{description:"",type:{name:"object"},required:!1},selectable:{description:"",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},longPressThreshold:{description:"",type:{name:"number"},required:!1},onShowMore:{description:"",type:{name:"func"},required:!1},showAllEvents:{description:"",type:{name:"bool"},required:!1},onSelectSlot:{description:"",type:{name:"func"},required:!1},onSelect:{description:"",type:{name:"func"},required:!1},onSelectEnd:{description:"",type:{name:"func"},required:!1},onSelectStart:{description:"",type:{name:"func"},required:!1},onDoubleClick:{description:"",type:{name:"func"},required:!1},onKeyPress:{description:"",type:{name:"func"},required:!1},dayPropGetter:{description:"",type:{name:"func"},required:!1},getNow:{description:"",type:{name:"func"},required:!0},isAllDay:{description:"",type:{name:"bool"},required:!1},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0}}};var src_DateContentRow=DateContentRow;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/DateContentRow.js"]={name:"DateContentRow",docgenInfo:DateContentRow.__docgenInfo,path:"src/DateContentRow.js"})},"./src/EventCell.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/classCallCheck.js"),_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/createClass.js"),_babel_runtime_helpers_esm_callSuper__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/callSuper.js"),_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/inherits.js"),react__WEBPACK_IMPORTED_MODULE_1__=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),clsx__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__("./node_modules/clsx/dist/clsx.m.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/react/jsx-runtime.js"),_excluded=["style","className","event","selected","isAllDay","onSelect","onDoubleClick","onKeyPress","localizer","continuesPrior","continuesAfter","accessors","getters","children","components","slotStart","slotEnd"],EventCell=function(_React$Component){function EventCell(){return(0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_3__.default)(this,EventCell),(0,_babel_runtime_helpers_esm_callSuper__WEBPACK_IMPORTED_MODULE_4__.default)(this,EventCell,arguments)}return(0,_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__.default)(EventCell,_React$Component),(0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_6__.default)(EventCell,[{key:"render",value:function render(){var _this$props=this.props,style=_this$props.style,className=_this$props.className,event=_this$props.event,selected=_this$props.selected,isAllDay=_this$props.isAllDay,onSelect=_this$props.onSelect,_onDoubleClick=_this$props.onDoubleClick,onKeyPress=_this$props.onKeyPress,localizer=_this$props.localizer,continuesPrior=_this$props.continuesPrior,continuesAfter=_this$props.continuesAfter,accessors=_this$props.accessors,getters=_this$props.getters,children=_this$props.children,_this$props$component=_this$props.components,Event=_this$props$component.event,EventWrapper=_this$props$component.eventWrapper,slotStart=_this$props.slotStart,slotEnd=_this$props.slotEnd,props=(0,_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_7__.A)(_this$props,_excluded);delete props.resizable;var title=accessors.title(event),tooltip=accessors.tooltip(event),end=accessors.end(event),start=accessors.start(event),allDay=accessors.allDay(event),showAsAllDay=isAllDay||allDay||localizer.diff(start,localizer.ceil(end,"day"),"day")>1,userProps=getters.eventProp(event,start,end,selected),content=(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("div",{className:"rbc-event-content",title:tooltip||void 0,children:Event?(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Event,{event:event,continuesPrior:continuesPrior,continuesAfter:continuesAfter,title:title,isAllDay:allDay,localizer:localizer,slotStart:slotStart,slotEnd:slotEnd}):title});return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(EventWrapper,Object.assign({},this.props,{type:"date",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("div",Object.assign({},props,{style:Object.assign({},userProps.style,style),className:(0,clsx__WEBPACK_IMPORTED_MODULE_8__.A)("rbc-event",className,userProps.className,{"rbc-selected":selected,"rbc-event-allday":showAsAllDay,"rbc-event-continues-prior":continuesPrior,"rbc-event-continues-after":continuesAfter}),onClick:function onClick(e){return onSelect&&onSelect(event,e)},onDoubleClick:function onDoubleClick(e){return _onDoubleClick&&_onDoubleClick(event,e)},onKeyDown:function onKeyDown(e){return onKeyPress&&onKeyPress(event,e)},children:"function"==typeof children?children(content):content}))}))}}])}(react__WEBPACK_IMPORTED_MODULE_1__.Component);EventCell.__docgenInfo={description:"",methods:[],displayName:"EventCell",props:{event:{description:"",type:{name:"object"},required:!0},slotStart:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},slotEnd:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1},selected:{description:"",type:{name:"bool"},required:!1},isAllDay:{description:"",type:{name:"bool"},required:!1},continuesPrior:{description:"",type:{name:"bool"},required:!1},continuesAfter:{description:"",type:{name:"bool"},required:!1},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!1},onSelect:{description:"",type:{name:"func"},required:!1},onDoubleClick:{description:"",type:{name:"func"},required:!1},onKeyPress:{description:"",type:{name:"func"},required:!1}}},__webpack_exports__.A=EventCell,"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/EventCell.js"]={name:"EventCell",docgenInfo:EventCell.__docgenInfo,path:"src/EventCell.js"})},"./src/EventRow.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/classCallCheck.js"),_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/createClass.js"),_babel_runtime_helpers_esm_callSuper__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/callSuper.js"),_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/inherits.js"),clsx__WEBPACK_IMPORTED_MODULE_8__=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/clsx/dist/clsx.m.js")),react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/react/index.js"),_EventRowMixin__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./src/EventRowMixin.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/react/jsx-runtime.js"),EventRow=function(_React$Component){function EventRow(){return(0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_4__.default)(this,EventRow),(0,_babel_runtime_helpers_esm_callSuper__WEBPACK_IMPORTED_MODULE_5__.default)(this,EventRow,arguments)}return(0,_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_6__.default)(EventRow,_React$Component),(0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_7__.default)(EventRow,[{key:"render",value:function render(){var _this=this,_this$props=this.props,segments=_this$props.segments,slots=_this$props.slotMetrics.slots,className=_this$props.className,lastEnd=1;return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div",{className:(0,clsx__WEBPACK_IMPORTED_MODULE_8__.A)(className,"rbc-row"),children:segments.reduce((function(row,_ref,li){var event=_ref.event,left=_ref.left,right=_ref.right,span=_ref.span,key="_lvl_"+li,gap=left-lastEnd,content=_EventRowMixin__WEBPACK_IMPORTED_MODULE_2__.A.renderEvent(_this.props,event);return gap&&row.push(_EventRowMixin__WEBPACK_IMPORTED_MODULE_2__.A.renderSpan(slots,gap,"".concat(key,"_gap"))),row.push(_EventRowMixin__WEBPACK_IMPORTED_MODULE_2__.A.renderSpan(slots,span,key,content)),lastEnd=right+1,row}),[])})}}])}(react__WEBPACK_IMPORTED_MODULE_1__.Component);EventRow.defaultProps=Object.assign({},_EventRowMixin__WEBPACK_IMPORTED_MODULE_2__.A.defaultProps),EventRow.__docgenInfo={description:"",methods:[],displayName:"EventRow",props:{segments:{description:"",type:{name:"array"},required:!1}},composes:["./EventRowMixin"]},__webpack_exports__.A=EventRow,"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/EventRow.js"]={name:"EventRow",docgenInfo:EventRow.__docgenInfo,path:"src/EventRow.js"})},"./src/EventRowMixin.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";var prop_types__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/prop-types/index.js"),prop_types__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__),_EventCell__WEBPACK_IMPORTED_MODULE_1__=(__webpack_require__("./node_modules/react/index.js"),__webpack_require__("./src/EventCell.js")),_utils_selection__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./src/utils/selection.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/react/jsx-runtime.js");__webpack_exports__.A={propTypes:{slotMetrics:prop_types__WEBPACK_IMPORTED_MODULE_4___default().object.isRequired,selected:prop_types__WEBPACK_IMPORTED_MODULE_4___default().object,isAllDay:prop_types__WEBPACK_IMPORTED_MODULE_4___default().bool,accessors:prop_types__WEBPACK_IMPORTED_MODULE_4___default().object.isRequired,localizer:prop_types__WEBPACK_IMPORTED_MODULE_4___default().object.isRequired,components:prop_types__WEBPACK_IMPORTED_MODULE_4___default().object.isRequired,getters:prop_types__WEBPACK_IMPORTED_MODULE_4___default().object.isRequired,onSelect:prop_types__WEBPACK_IMPORTED_MODULE_4___default().func,onDoubleClick:prop_types__WEBPACK_IMPORTED_MODULE_4___default().func,onKeyPress:prop_types__WEBPACK_IMPORTED_MODULE_4___default().func},defaultProps:{segments:[],selected:{}},renderEvent:function renderEvent(props,event){var selected=props.selected,accessors=(props.isAllDay,props.accessors),getters=props.getters,onSelect=props.onSelect,onDoubleClick=props.onDoubleClick,onKeyPress=props.onKeyPress,localizer=props.localizer,slotMetrics=props.slotMetrics,components=props.components,resizable=props.resizable,continuesPrior=slotMetrics.continuesPrior(event),continuesAfter=slotMetrics.continuesAfter(event);return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_EventCell__WEBPACK_IMPORTED_MODULE_1__.A,{event:event,getters:getters,localizer:localizer,accessors:accessors,components:components,onSelect:onSelect,onDoubleClick:onDoubleClick,onKeyPress:onKeyPress,continuesPrior:continuesPrior,continuesAfter:continuesAfter,slotStart:slotMetrics.first,slotEnd:slotMetrics.last,selected:(0,_utils_selection__WEBPACK_IMPORTED_MODULE_2__.sp)(event,selected),resizable:resizable})},renderSpan:function renderSpan(slots,len,key){var content=arguments.length>3&&void 0!==arguments[3]?arguments[3]:" ",per=Math.abs(len)/slots*100+"%";return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div",{className:"rbc-row-segment",style:{WebkitFlexBasis:per,flexBasis:per,maxWidth:per},children:content},key)}}},"./src/Header.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__("./node_modules/react/index.js");var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/react/jsx-runtime.js"),Header=function Header(_ref){var label=_ref.label;return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)("span",{role:"columnheader","aria-sort":"none",children:label})};Header.displayName="Header",Header.__docgenInfo={description:"",methods:[],displayName:"Header",props:{label:{description:"",type:{name:"node"},required:!1}}},__webpack_exports__.A=Header,"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/Header.js"]={name:"Header",docgenInfo:Header.__docgenInfo,path:"src/Header.js"})},"./src/NoopWrapper.js":function(__unused_webpack_module,__webpack_exports__){"use strict";__webpack_exports__.A=function NoopWrapper(props){return props.children}},"./src/PopOverlay.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return src_PopOverlay}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var react=__webpack_require__("./node_modules/react/index.js"),prop_types=__webpack_require__("./node_modules/prop-types/index.js"),prop_types_default=__webpack_require__.n(prop_types),Overlay=__webpack_require__("./node_modules/react-overlays/esm/Overlay.js"),esm_offset=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/dom-helpers/esm/offset.js"));var EventCell=__webpack_require__("./src/EventCell.js"),selection=__webpack_require__("./src/utils/selection.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js");function Pop(_ref2){var containerRef=_ref2.containerRef,accessors=_ref2.accessors,getters=_ref2.getters,selected=_ref2.selected,components=_ref2.components,localizer=_ref2.localizer,position=_ref2.position,show=_ref2.show,events=_ref2.events,slotStart=_ref2.slotStart,slotEnd=_ref2.slotEnd,onSelect=_ref2.onSelect,onDoubleClick=_ref2.onDoubleClick,onKeyPress=_ref2.onKeyPress,handleDragStart=_ref2.handleDragStart,popperRef=_ref2.popperRef,target=_ref2.target,offset=_ref2.offset;!function useClickOutside(_ref){var ref=_ref.ref,callback=_ref.callback;(0,react.useEffect)((function(){var handleClickOutside=function handleClickOutside(e){ref.current&&!ref.current.contains(e.target)&&callback()};return document.addEventListener("mousedown",handleClickOutside),function(){document.removeEventListener("mousedown",handleClickOutside)}}),[ref,callback])}({ref:popperRef,callback:show}),(0,react.useLayoutEffect)((function(){var _getPosition=function getPosition(_ref){var target=_ref.target,offset=_ref.offset,container=_ref.container,box=_ref.box,_getOffset=(0,esm_offset.A)(target),top=_getOffset.top,left=_getOffset.left,width=_getOffset.width,height=_getOffset.height,_getOffset2=(0,esm_offset.A)(container),cTop=_getOffset2.top,cLeft=_getOffset2.left,cWidth=_getOffset2.width,cHeight=_getOffset2.height,_getOffset3=(0,esm_offset.A)(box),bWidth=_getOffset3.width,bHeight=_getOffset3.height,viewBottom=cTop+cHeight,viewRight=cLeft+cWidth,bottom=top+bHeight,right=left+bWidth,x=offset.x,y=offset.y;return{topOffset:bottom>viewBottom?top-bHeight-y:top+y+height,leftOffset:right>viewRight?left+x-bWidth+width:left+x}}({target:target,offset:offset,container:containerRef.current,box:popperRef.current}),topOffset=_getPosition.topOffset,leftOffset=_getPosition.leftOffset;popperRef.current.style.top="".concat(topOffset,"px"),popperRef.current.style.left="".concat(leftOffset,"px")}),[offset.x,offset.y,target]);var width=position.width,style={minWidth:width+width/2};return(0,jsx_runtime.jsxs)("div",{style:style,className:"rbc-overlay",ref:popperRef,children:[(0,jsx_runtime.jsx)("div",{className:"rbc-overlay-header",children:localizer.format(slotStart,"dayHeaderFormat")}),events.map((function(event,idx){return(0,jsx_runtime.jsx)(EventCell.A,{type:"popup",localizer:localizer,event:event,getters:getters,onSelect:onSelect,accessors:accessors,components:components,onDoubleClick:onDoubleClick,onKeyPress:onKeyPress,continuesPrior:localizer.lt(accessors.end(event),slotStart,"day"),continuesAfter:localizer.gte(accessors.start(event),slotEnd,"day"),slotStart:slotStart,slotEnd:slotEnd,selected:(0,selection.sp)(event,selected),draggable:!0,onDragStart:function onDragStart(){return handleDragStart(event)},onDragEnd:function onDragEnd(){return show()}},idx)}))]})}Pop.displayName="Pop";var Popup=react.forwardRef((function(props,ref){return(0,jsx_runtime.jsx)(Pop,Object.assign({},props,{popperRef:ref}))}));Popup.propTypes={accessors:prop_types_default().object.isRequired,getters:prop_types_default().object.isRequired,selected:prop_types_default().object,components:prop_types_default().object.isRequired,localizer:prop_types_default().object.isRequired,position:prop_types_default().object.isRequired,show:prop_types_default().func.isRequired,events:prop_types_default().array.isRequired,slotStart:prop_types_default().instanceOf(Date).isRequired,slotEnd:prop_types_default().instanceOf(Date),onSelect:prop_types_default().func,onDoubleClick:prop_types_default().func,onKeyPress:prop_types_default().func,handleDragStart:prop_types_default().func,style:prop_types_default().object,offset:prop_types_default().shape({x:prop_types_default().number,y:prop_types_default().number})},Popup.__docgenInfo={description:"",methods:[],displayName:"Popup",props:{accessors:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},selected:{description:"",type:{name:"object"},required:!1},components:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},position:{description:"",type:{name:"object"},required:!0},show:{description:"",type:{name:"func"},required:!0},events:{description:"",type:{name:"array"},required:!0},slotStart:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},slotEnd:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},onSelect:{description:"",type:{name:"func"},required:!1},onDoubleClick:{description:"",type:{name:"func"},required:!1},onKeyPress:{description:"",type:{name:"func"},required:!1},handleDragStart:{description:"",type:{name:"func"},required:!1},style:{description:"",type:{name:"object"},required:!1},offset:{description:"",type:{name:"shape",value:{x:{name:"number",required:!1},y:{name:"number",required:!1}}},required:!1}}};var src_Popup=Popup;function CalOverlay(_ref){var containerRef=_ref.containerRef,_ref$popupOffset=_ref.popupOffset,popupOffset=void 0===_ref$popupOffset?5:_ref$popupOffset,overlay=_ref.overlay,accessors=_ref.accessors,localizer=_ref.localizer,components=_ref.components,getters=_ref.getters,selected=_ref.selected,handleSelectEvent=_ref.handleSelectEvent,handleDoubleClickEvent=_ref.handleDoubleClickEvent,handleKeyPressEvent=_ref.handleKeyPressEvent,handleDragStart=_ref.handleDragStart,onHide=_ref.onHide,overlayDisplay=_ref.overlayDisplay,popperRef=(0,react.useRef)(null);if(!overlay.position)return null;var offset=popupOffset;isNaN(popupOffset)||(offset={x:popupOffset,y:popupOffset});var position=overlay.position,events=overlay.events,date=overlay.date,end=overlay.end;return(0,jsx_runtime.jsx)(Overlay.A,{rootClose:!0,flip:!0,show:!0,placement:"bottom",onHide:onHide,target:overlay.target,children:function children(_ref2){var props=_ref2.props;return(0,jsx_runtime.jsx)(src_Popup,Object.assign({},props,{containerRef:containerRef,ref:popperRef,target:overlay.target,offset:offset,accessors:accessors,getters:getters,selected:selected,components:components,localizer:localizer,position:position,show:overlayDisplay,events:events,slotStart:date,slotEnd:end,onSelect:handleSelectEvent,onDoubleClick:handleDoubleClickEvent,onKeyPress:handleKeyPressEvent,handleDragStart:handleDragStart}))}})}"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/Popup.js"]={name:"Popup",docgenInfo:Popup.__docgenInfo,path:"src/Popup.js"}),CalOverlay.displayName="CalOverlay";var PopOverlay=react.forwardRef((function(props,ref){return(0,jsx_runtime.jsx)(CalOverlay,Object.assign({},props,{containerRef:ref}))}));PopOverlay.propTypes={popupOffset:prop_types_default().oneOfType([prop_types_default().number,prop_types_default().shape({x:prop_types_default().number,y:prop_types_default().number})]),overlay:prop_types_default().shape({position:prop_types_default().object,events:prop_types_default().array,date:prop_types_default().instanceOf(Date),end:prop_types_default().instanceOf(Date)}),accessors:prop_types_default().object.isRequired,localizer:prop_types_default().object.isRequired,components:prop_types_default().object.isRequired,getters:prop_types_default().object.isRequired,selected:prop_types_default().object,handleSelectEvent:prop_types_default().func,handleDoubleClickEvent:prop_types_default().func,handleKeyPressEvent:prop_types_default().func,handleDragStart:prop_types_default().func,onHide:prop_types_default().func,overlayDisplay:prop_types_default().func},PopOverlay.__docgenInfo={description:"",methods:[],displayName:"PopOverlay",props:{popupOffset:{description:"",type:{name:"union",value:[{name:"number"},{name:"shape",value:{x:{name:"number",required:!1},y:{name:"number",required:!1}}}]},required:!1},overlay:{description:"",type:{name:"shape",value:{position:{name:"object",required:!1},events:{name:"array",required:!1},date:{name:"instanceOf",value:"Date",required:!1},end:{name:"instanceOf",value:"Date",required:!1}}},required:!1},accessors:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},selected:{description:"",type:{name:"object"},required:!1},handleSelectEvent:{description:"",type:{name:"func"},required:!1},handleDoubleClickEvent:{description:"",type:{name:"func"},required:!1},handleKeyPressEvent:{description:"",type:{name:"func"},required:!1},handleDragStart:{description:"",type:{name:"func"},required:!1},onHide:{description:"",type:{name:"func"},required:!1},overlayDisplay:{description:"",type:{name:"func"},required:!1}}};var src_PopOverlay=PopOverlay;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/PopOverlay.js"]={name:"PopOverlay",docgenInfo:PopOverlay.__docgenInfo,path:"src/PopOverlay.js"})},"./src/Selection.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{LP:function(){return getEventNodeFromPoint},fN:function(){return isShowMore},rF:function(){return getBoundsForNode},xH:function(){return isEvent}});var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/classCallCheck.js"),_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/createClass.js"),dom_helpers_contains__WEBPACK_IMPORTED_MODULE_6__=(__webpack_require__("./node_modules/core-js/modules/es.array.splice.js"),__webpack_require__("./node_modules/core-js/modules/web.dom-collections.for-each.js"),__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/es.array.includes.js"),__webpack_require__("./node_modules/core-js/modules/es.string.includes.js"),__webpack_require__("./node_modules/dom-helpers/esm/contains.js")),dom_helpers_closest__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("./node_modules/dom-helpers/esm/closest.js"),dom_helpers_listen__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/dom-helpers/esm/listen.js");function addEventListener(type,handler){var target=arguments.length>2&&void 0!==arguments[2]?arguments[2]:document;return(0,dom_helpers_listen__WEBPACK_IMPORTED_MODULE_5__.A)(target,type,handler,{passive:!1})}function getEventNodeFromPoint(node,_ref){var clientX=_ref.clientX,clientY=_ref.clientY,target=document.elementFromPoint(clientX,clientY);return(0,dom_helpers_closest__WEBPACK_IMPORTED_MODULE_7__.A)(target,".rbc-event",node)}function isEvent(node,bounds){return!!getEventNodeFromPoint(node,bounds)}function isShowMore(node,bounds){return!!function getShowMoreNodeFromPoint(node,_ref2){var clientX=_ref2.clientX,clientY=_ref2.clientY,target=document.elementFromPoint(clientX,clientY);return(0,dom_helpers_closest__WEBPACK_IMPORTED_MODULE_7__.A)(target,".rbc-show-more",node)}(node,bounds)}function getEventCoordinates(e){var target=e;return e.touches&&e.touches.length&&(target=e.touches[0]),{clientX:target.clientX,clientY:target.clientY,pageX:target.pageX,pageY:target.pageY}}var Selection=function(){return(0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_9__.default)((function Selection(node){var _ref3=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},_ref3$global=_ref3.global,global=void 0!==_ref3$global&&_ref3$global,_ref3$longPressThresh=_ref3.longPressThreshold,longPressThreshold=void 0===_ref3$longPressThresh?250:_ref3$longPressThresh,_ref3$validContainers=_ref3.validContainers,validContainers=void 0===_ref3$validContainers?[]:_ref3$validContainers;(0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_8__.default)(this,Selection),this._initialEvent=null,this.selecting=!1,this.isDetached=!1,this.container=node,this.globalMouse=!node||global,this.longPressThreshold=longPressThreshold,this.validContainers=validContainers,this._listeners=Object.create(null),this._handleInitialEvent=this._handleInitialEvent.bind(this),this._handleMoveEvent=this._handleMoveEvent.bind(this),this._handleTerminatingEvent=this._handleTerminatingEvent.bind(this),this._keyListener=this._keyListener.bind(this),this._dropFromOutsideListener=this._dropFromOutsideListener.bind(this),this._dragOverFromOutsideListener=this._dragOverFromOutsideListener.bind(this),this._removeTouchMoveWindowListener=addEventListener("touchmove",(function(){}),window),this._removeKeyDownListener=addEventListener("keydown",this._keyListener),this._removeKeyUpListener=addEventListener("keyup",this._keyListener),this._removeDropFromOutsideListener=addEventListener("drop",this._dropFromOutsideListener),this._removeDragOverFromOutsideListener=addEventListener("dragover",this._dragOverFromOutsideListener),this._addInitialEventListener()}),[{key:"on",value:function on(type,handler){var handlers=this._listeners[type]||(this._listeners[type]=[]);return handlers.push(handler),{remove:function remove(){var idx=handlers.indexOf(handler);-1!==idx&&handlers.splice(idx,1)}}}},{key:"emit",value:function emit(type){for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)args[_key-1]=arguments[_key];var result;return(this._listeners[type]||[]).forEach((function(fn){void 0===result&&(result=fn.apply(void 0,args))})),result}},{key:"teardown",value:function teardown(){this._initialEvent=null,this._initialEventData=null,this._selectRect=null,this.selecting=!1,this._lastClickData=null,this.isDetached=!0,this._listeners=Object.create(null),this._removeTouchMoveWindowListener&&this._removeTouchMoveWindowListener(),this._removeInitialEventListener&&this._removeInitialEventListener(),this._removeEndListener&&this._removeEndListener(),this._onEscListener&&this._onEscListener(),this._removeMoveListener&&this._removeMoveListener(),this._removeKeyUpListener&&this._removeKeyUpListener(),this._removeKeyDownListener&&this._removeKeyDownListener(),this._removeDropFromOutsideListener&&this._removeDropFromOutsideListener(),this._removeDragOverFromOutsideListener&&this._removeDragOverFromOutsideListener()}},{key:"isSelected",value:function isSelected(node){var box=this._selectRect;return!(!box||!this.selecting)&&objectsCollide(box,getBoundsForNode(node))}},{key:"filter",value:function filter(items){return this._selectRect&&this.selecting?items.filter(this.isSelected,this):[]}},{key:"_addLongPressListener",value:function _addLongPressListener(handler,initialEvent){var _this=this,timer=null,removeTouchMoveListener=null,removeTouchEndListener=null,handleTouchStart=function handleTouchStart(initialEvent){timer=setTimeout((function(){cleanup(),handler(initialEvent)}),_this.longPressThreshold),removeTouchMoveListener=addEventListener("touchmove",(function(){return cleanup()})),removeTouchEndListener=addEventListener("touchend",(function(){return cleanup()}))},removeTouchStartListener=addEventListener("touchstart",handleTouchStart),cleanup=function cleanup(){timer&&clearTimeout(timer),removeTouchMoveListener&&removeTouchMoveListener(),removeTouchEndListener&&removeTouchEndListener(),timer=null,removeTouchMoveListener=null,removeTouchEndListener=null};return initialEvent&&handleTouchStart(initialEvent),function(){cleanup(),removeTouchStartListener()}}},{key:"_addInitialEventListener",value:function _addInitialEventListener(){var _this2=this,removeMouseDownListener=addEventListener("mousedown",(function(e){_this2._removeInitialEventListener(),_this2._handleInitialEvent(e),_this2._removeInitialEventListener=addEventListener("mousedown",_this2._handleInitialEvent)})),removeTouchStartListener=addEventListener("touchstart",(function(e){_this2._removeInitialEventListener(),_this2._removeInitialEventListener=_this2._addLongPressListener(_this2._handleInitialEvent,e)}));this._removeInitialEventListener=function(){removeMouseDownListener(),removeTouchStartListener()}}},{key:"_dropFromOutsideListener",value:function _dropFromOutsideListener(e){var _getEventCoordinates=getEventCoordinates(e),pageX=_getEventCoordinates.pageX,pageY=_getEventCoordinates.pageY,clientX=_getEventCoordinates.clientX,clientY=_getEventCoordinates.clientY;this.emit("dropFromOutside",{x:pageX,y:pageY,clientX:clientX,clientY:clientY}),e.preventDefault()}},{key:"_dragOverFromOutsideListener",value:function _dragOverFromOutsideListener(e){var _getEventCoordinates2=getEventCoordinates(e),pageX=_getEventCoordinates2.pageX,pageY=_getEventCoordinates2.pageY,clientX=_getEventCoordinates2.clientX,clientY=_getEventCoordinates2.clientY;this.emit("dragOverFromOutside",{x:pageX,y:pageY,clientX:clientX,clientY:clientY}),e.preventDefault()}},{key:"_handleInitialEvent",value:function _handleInitialEvent(e){if(this._initialEvent=e,!this.isDetached){var offsetData,_getEventCoordinates3=getEventCoordinates(e),clientX=_getEventCoordinates3.clientX,clientY=_getEventCoordinates3.clientY,pageX=_getEventCoordinates3.pageX,pageY=_getEventCoordinates3.pageY,node=this.container();if(3!==e.which&&2!==e.button&&function isOverContainer(container,x,y){return!container||(0,dom_helpers_contains__WEBPACK_IMPORTED_MODULE_6__.A)(container,document.elementFromPoint(x,y))}(node,clientX,clientY)){if(!this.globalMouse&&node&&!(0,dom_helpers_contains__WEBPACK_IMPORTED_MODULE_6__.A)(node,e.target)){var _normalizeDistance=function normalizeDistance(){var distance=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;"object"!=typeof distance&&(distance={top:distance,left:distance,right:distance,bottom:distance});return distance}(0),top=_normalizeDistance.top,left=_normalizeDistance.left,bottom=_normalizeDistance.bottom,right=_normalizeDistance.right;if(!objectsCollide({top:(offsetData=getBoundsForNode(node)).top-top,left:offsetData.left-left,bottom:offsetData.bottom+bottom,right:offsetData.right+right},{top:pageY,left:pageX}))return}if(!1!==this.emit("beforeSelect",this._initialEventData={isTouch:/^touch/.test(e.type),x:pageX,y:pageY,clientX:clientX,clientY:clientY}))switch(e.type){case"mousedown":this._removeEndListener=addEventListener("mouseup",this._handleTerminatingEvent),this._onEscListener=addEventListener("keydown",this._handleTerminatingEvent),this._removeMoveListener=addEventListener("mousemove",this._handleMoveEvent);break;case"touchstart":this._handleMoveEvent(e),this._removeEndListener=addEventListener("touchend",this._handleTerminatingEvent),this._removeMoveListener=addEventListener("touchmove",this._handleMoveEvent)}}}}},{key:"_isWithinValidContainer",value:function _isWithinValidContainer(e){var eventTarget=e.target,containers=this.validContainers;return!(containers&&containers.length&&eventTarget)||containers.some((function(target){return!!eventTarget.closest(target)}))}},{key:"_handleTerminatingEvent",value:function _handleTerminatingEvent(e){var selecting=this.selecting,bounds=this._selectRect;if(!selecting&&e.type.includes("key")&&(e=this._initialEvent),this.selecting=!1,this._removeEndListener&&this._removeEndListener(),this._removeMoveListener&&this._removeMoveListener(),this._selectRect=null,this._initialEvent=null,this._initialEventData=null,e){var inRoot=!this.container||(0,dom_helpers_contains__WEBPACK_IMPORTED_MODULE_6__.A)(this.container(),e.target),isWithinValidContainer=this._isWithinValidContainer(e);return"Escape"!==e.key&&isWithinValidContainer?!selecting&&inRoot?this._handleClickEvent(e):selecting?this.emit("select",bounds):this.emit("reset"):this.emit("reset")}}},{key:"_handleClickEvent",value:function _handleClickEvent(e){var _getEventCoordinates4=getEventCoordinates(e),pageX=_getEventCoordinates4.pageX,pageY=_getEventCoordinates4.pageY,clientX=_getEventCoordinates4.clientX,clientY=_getEventCoordinates4.clientY,now=(new Date).getTime();return this._lastClickData&&now-this._lastClickData.timestamp<250?(this._lastClickData=null,this.emit("doubleClick",{x:pageX,y:pageY,clientX:clientX,clientY:clientY})):(this._lastClickData={timestamp:now},this.emit("click",{x:pageX,y:pageY,clientX:clientX,clientY:clientY}))}},{key:"_handleMoveEvent",value:function _handleMoveEvent(e){if(null!==this._initialEventData&&!this.isDetached){var _this$_initialEventDa=this._initialEventData,x=_this$_initialEventDa.x,y=_this$_initialEventDa.y,_getEventCoordinates5=getEventCoordinates(e),pageX=_getEventCoordinates5.pageX,pageY=_getEventCoordinates5.pageY,w=Math.abs(x-pageX),h=Math.abs(y-pageY),left=Math.min(pageX,x),top=Math.min(pageY,y),old=this.selecting,click=this.isClick(pageX,pageY);(!click||old||w||h)&&(old||click||this.emit("selectStart",this._initialEventData),click||(this.selecting=!0,this._selectRect={top:top,left:left,x:pageX,y:pageY,right:left+w,bottom:top+h},this.emit("selecting",this._selectRect)),e.preventDefault())}}},{key:"_keyListener",value:function _keyListener(e){this.ctrl=e.metaKey||e.ctrlKey}},{key:"isClick",value:function isClick(pageX,pageY){var _this$_initialEventDa2=this._initialEventData,x=_this$_initialEventDa2.x,y=_this$_initialEventDa2.y;return!_this$_initialEventDa2.isTouch&&Math.abs(pageX-x)<=5&&Math.abs(pageY-y)<=5}}])}();function objectsCollide(nodeA,nodeB){var tolerance=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,_getBoundsForNode=getBoundsForNode(nodeA),aTop=_getBoundsForNode.top,aLeft=_getBoundsForNode.left,_getBoundsForNode$rig=_getBoundsForNode.right,aRight=void 0===_getBoundsForNode$rig?aLeft:_getBoundsForNode$rig,_getBoundsForNode$bot=_getBoundsForNode.bottom,aBottom=void 0===_getBoundsForNode$bot?aTop:_getBoundsForNode$bot,_getBoundsForNode2=getBoundsForNode(nodeB),bTop=_getBoundsForNode2.top,bLeft=_getBoundsForNode2.left,_getBoundsForNode2$ri=_getBoundsForNode2.right,bRight=void 0===_getBoundsForNode2$ri?bLeft:_getBoundsForNode2$ri,_getBoundsForNode2$bo=_getBoundsForNode2.bottom;return!(aBottom-tolerance(void 0===_getBoundsForNode2$bo?bTop:_getBoundsForNode2$bo)||aRight-tolerancebRight)}function getBoundsForNode(node){if(!node.getBoundingClientRect)return node;var rect=node.getBoundingClientRect(),left=rect.left+pageOffset("left"),top=rect.top+pageOffset("top");return{top:top,left:left,right:(node.offsetWidth||0)+left,bottom:(node.offsetHeight||0)+top}}function pageOffset(dir){return"left"===dir?window.pageXOffset||document.body.scrollLeft||0:"top"===dir?window.pageYOffset||document.body.scrollTop||0:void 0}__webpack_exports__.Ay=Selection},"./src/TimeGrid.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return TimeGrid}});var slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),classCallCheck=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/classCallCheck.js"),createClass=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/createClass.js"),callSuper=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/callSuper.js"),inherits=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/inherits.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/web.dom-collections.for-each.js"),__webpack_require__("./node_modules/core-js/modules/es.array.sort.js"),__webpack_require__("./node_modules/react/index.js")),clsx_m=__webpack_require__("./node_modules/clsx/dist/clsx.m.js"),animationFrame=__webpack_require__("./node_modules/dom-helpers/esm/animationFrame.js"),memoize_one_esm=__webpack_require__("./node_modules/memoize-one/dist/memoize-one.esm.js"),objectWithoutProperties=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),Selection=(__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./src/Selection.js")),getKey=(__webpack_require__("./node_modules/core-js/modules/es.array.find-index.js"),function getKey(_ref){var min=_ref.min,max=_ref.max,step=_ref.step,slots=_ref.slots,localizer=_ref.localizer;return"".concat(+localizer.startOf(min,"minutes"))+"".concat(+localizer.startOf(max,"minutes"))+"".concat(step,"-").concat(slots)});function getSlotMetrics(_ref2){for(var start=_ref2.min,end=_ref2.max,step=_ref2.step,timeslots=_ref2.timeslots,localizer=_ref2.localizer,key=getKey({start:start,end:end,step:step,timeslots:timeslots,localizer:localizer}),totalMin=1+localizer.getTotalMin(start,end),minutesFromMidnight=localizer.getMinutesFromMidnight(start),numGroups=Math.ceil((totalMin-1)/(step*timeslots)),numSlots=numGroups*timeslots,groups=new Array(numGroups),slots=new Array(numSlots),grp=0;grp1&&void 0!==arguments[1]?arguments[1]:0;if(localizer.lt(date,start,"minutes"))return slots[0];if(localizer.gt(date,end,"minutes"))return slots[slots.length-1];var diffMins=localizer.diff(start,date,"minutes");return slots[(diffMins-diffMins%step)/step+offset]},startsBeforeDay:function startsBeforeDay(date){return localizer.lt(date,start,"day")},startsAfterDay:function startsAfterDay(date){return localizer.gt(date,end,"day")},startsBefore:function startsBefore(date){return localizer.lt(localizer.merge(start,date),start,"minutes")},startsAfter:function startsAfter(date){return localizer.gt(localizer.merge(end,date),end,"minutes")},getRange:function getRange(rangeStart,rangeEnd,ignoreMin,ignoreMax){ignoreMin||(rangeStart=localizer.min(end,localizer.max(start,rangeStart))),ignoreMax||(rangeEnd=localizer.min(end,localizer.max(start,rangeEnd)));var rangeStartMin=positionFromDate(rangeStart),rangeEndMin=positionFromDate(rangeEnd),top=rangeEndMin>step*numSlots&&!localizer.eq(end,rangeEnd)?(rangeStartMin-step)/(step*numSlots)*100:rangeStartMin/(step*numSlots)*100;return{top:top,height:rangeEndMin/(step*numSlots)*100-top,start:positionFromDate(rangeStart),startDate:rangeStart,end:positionFromDate(rangeEnd),endDate:rangeEnd}},getCurrentTimePosition:function getCurrentTimePosition(rangeStart){return positionFromDate(rangeStart)/(step*numSlots)*100}}}var selection=__webpack_require__("./src/utils/selection.js"),helpers=__webpack_require__("./src/utils/helpers.js"),sortBy=(__webpack_require__("./node_modules/core-js/modules/es.array.splice.js"),__webpack_require__("./node_modules/core-js/modules/es.array.find.js"),__webpack_require__("./node_modules/lodash/sortBy.js")),sortBy_default=__webpack_require__.n(sortBy),Event=function(){return(0,createClass.default)((function Event(data,_ref){var accessors=_ref.accessors,slotMetrics=_ref.slotMetrics;(0,classCallCheck.default)(this,Event);var _slotMetrics$getRange=slotMetrics.getRange(accessors.start(data),accessors.end(data)),start=_slotMetrics$getRange.start,startDate=_slotMetrics$getRange.startDate,end=_slotMetrics$getRange.end,endDate=_slotMetrics$getRange.endDate,top=_slotMetrics$getRange.top,height=_slotMetrics$getRange.height;this.start=start,this.end=end,this.startMs=+startDate,this.endMs=+endDate,this.top=top,this.height=height,this.data=data}),[{key:"_width",get:function get(){return this.rows?100/(this.rows.reduce((function(max,row){return Math.max(max,row.leaves.length+1)}),0)+1):this.leaves?(100-this.container._width)/(this.leaves.length+1):this.row._width}},{key:"width",get:function get(){var noOverlap=this._width,overlap=Math.min(100,1.7*this._width);if(this.rows)return overlap;if(this.leaves)return this.leaves.length>0?overlap:noOverlap;var leaves=this.row.leaves;return leaves.indexOf(this)===leaves.length-1?noOverlap:overlap}},{key:"xOffset",get:function get(){if(this.rows)return 0;if(this.leaves)return this.container._width;var _this$row=this.row,leaves=_this$row.leaves,xOffset=_this$row.xOffset,_width=_this$row._width;return xOffset+(leaves.indexOf(this)+1)*_width}}])}();function onSameRow(a,b,minimumStartDifference){return Math.abs(b.start-a.start)a.start&&b.start0;){var event=sortedByTime.shift();sorted.push(event);for(var i=0;itest.startMs)){if(i>0){var _event=sortedByTime.splice(i,1)[0];sorted.push(_event)}break}}}return sorted}(events.map((function(event){return new Event(event,{slotMetrics:slotMetrics,accessors:accessors})}))),containerEvents=[],_loop=function _loop(){var event=eventsInRenderOrder[i],container=containerEvents.find((function(c){return c.end>event.start||Math.abs(event.start-c.start)=0;j--)onSameRow(container.rows[j],event,minimumStartDifference)&&(row=container.rows[j]);row?(row.leaves.push(event),event.row=row):(event.leaves=[],container.rows.push(event))},i=0;i-1)){maxIdx=maxIdx>node.friends[i].idx?maxIdx:node.friends[i].idx,visited.push(node.friends[i]);var newIdx=getMaxIdxDFS(node.friends[i],maxIdx,visited);maxIdx=maxIdx>newIdx?maxIdx:newIdx}return maxIdx}var DefaultAlgorithms={overlap:getStyledEvents,"no-overlap":function no_overlap(_ref){var styledEvents=getStyledEvents({events:_ref.events,minimumStartDifference:_ref.minimumStartDifference,slotMetrics:_ref.slotMetrics,accessors:_ref.accessors});styledEvents.sort((function(a,b){return a=a.style,b=b.style,a.top!==b.top?a.top>b.top?1:-1:a.height!==b.height?a.top+a.height=y1&&y4<=y2||y4>y1&&y4<=y2||y3>=y1&&y3idx?_maxIdx:idx}_maxIdx<=e.idx&&(e.size=100-e.idx*e.size);var padding=0===e.idx?0:3;e.style.width="calc(".concat(e.size,"% - ").concat(padding,"px)"),e.style.height="calc(".concat(e.style.height,"% - 2px)"),e.style.xOffset="calc(".concat(e.style.left,"% + ").concat(padding,"px)")}return styledEvents}};var BackgroundWrapper=__webpack_require__("./src/BackgroundWrapper.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),TimeSlotGroup=function(_Component){function TimeSlotGroup(){return(0,classCallCheck.default)(this,TimeSlotGroup),(0,callSuper.default)(this,TimeSlotGroup,arguments)}return(0,inherits.default)(TimeSlotGroup,_Component),(0,createClass.default)(TimeSlotGroup,[{key:"render",value:function render(){var _this$props=this.props,renderSlot=_this$props.renderSlot,resource=_this$props.resource,group=_this$props.group,getters=_this$props.getters,_this$props$component=_this$props.components,_this$props$component2=(_this$props$component=void 0===_this$props$component?{}:_this$props$component).timeSlotWrapper,Wrapper=void 0===_this$props$component2?BackgroundWrapper.A:_this$props$component2,groupProps=getters?getters.slotGroupProp(group):{};return(0,jsx_runtime.jsx)("div",Object.assign({className:"rbc-timeslot-group"},groupProps,{children:group.map((function(value,idx){var slotProps=getters?getters.slotProp(value,resource):{};return(0,jsx_runtime.jsx)(Wrapper,{value:value,resource:resource,children:(0,jsx_runtime.jsx)("div",Object.assign({},slotProps,{className:(0,clsx_m.A)("rbc-time-slot",slotProps.className),children:renderSlot&&renderSlot(value,idx)}))},idx)}))}))}}])}(react.Component);TimeSlotGroup.__docgenInfo={description:"",methods:[],displayName:"TimeSlotGroup",props:{renderSlot:{description:"",type:{name:"func"},required:!1},group:{description:"",type:{name:"array"},required:!0},resource:{description:"",type:{name:"any"},required:!1},components:{description:"",type:{name:"object"},required:!1},getters:{description:"",type:{name:"object"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/TimeSlotGroup.js"]={name:"TimeSlotGroup",docgenInfo:TimeSlotGroup.__docgenInfo,path:"src/TimeSlotGroup.js"});var TimeGridEvent=__webpack_require__("./src/TimeGridEvent.js"),DayColumnWrapper=(__webpack_require__("./src/utils/propTypes.js"),function DayColumnWrapper(_ref){var children=_ref.children,className=_ref.className,style=_ref.style,innerRef=_ref.innerRef;return(0,jsx_runtime.jsx)("div",{className:className,style:style,ref:innerRef,children:children})});DayColumnWrapper.displayName="DayColumnWrapper";var src_DayColumnWrapper=react.forwardRef((function(props,ref){return(0,jsx_runtime.jsx)(DayColumnWrapper,Object.assign({},props,{innerRef:ref}))})),_excluded=["dayProp"],_excluded2=["eventContainerWrapper"],DayColumn=function(_React$Component){function DayColumn(){var _this;(0,classCallCheck.default)(this,DayColumn);for(var _len=arguments.length,_args=new Array(_len),_key=0;_key<_len;_key++)_args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,DayColumn,[].concat(_args))).state={selecting:!1,timeIndicatorPosition:null},_this.intervalTriggered=!1,_this.renderEvents=function(_ref){var events=_ref.events,isBackgroundEvent=_ref.isBackgroundEvent,_this$props=_this.props,rtl=_this$props.rtl,selected=_this$props.selected,accessors=_this$props.accessors,localizer=_this$props.localizer,getters=_this$props.getters,components=_this$props.components,step=_this$props.step,timeslots=_this$props.timeslots,dayLayoutAlgorithm=_this$props.dayLayoutAlgorithm,resizable=_this$props.resizable,slotMetrics=_this.slotMetrics,messages=localizer.messages,styledEvents=function DayEventLayout_getStyledEvents(_ref){_ref.events,_ref.minimumStartDifference,_ref.slotMetrics,_ref.accessors;var dayLayoutAlgorithm=_ref.dayLayoutAlgorithm,algorithm=dayLayoutAlgorithm;return dayLayoutAlgorithm in DefaultAlgorithms&&(algorithm=DefaultAlgorithms[dayLayoutAlgorithm]),function isFunction(a){return!!(a&&a.constructor&&a.call&&a.apply)}(algorithm)?algorithm.apply(this,arguments):[]}({events:events,accessors:accessors,slotMetrics:slotMetrics,minimumStartDifference:Math.ceil(step*timeslots/2),dayLayoutAlgorithm:dayLayoutAlgorithm});return styledEvents.map((function(_ref2,idx){var label,event=_ref2.event,style=_ref2.style,end=accessors.end(event),start=accessors.start(event),format="eventTimeRangeFormat",startsBeforeDay=slotMetrics.startsBeforeDay(start),startsAfterDay=slotMetrics.startsAfterDay(end);startsBeforeDay?format="eventTimeRangeEndFormat":startsAfterDay&&(format="eventTimeRangeStartFormat"),label=startsBeforeDay&&startsAfterDay?messages.allDay:localizer.format({start:start,end:end},format);var continuesPrior=startsBeforeDay||slotMetrics.startsBefore(start),continuesAfter=startsAfterDay||slotMetrics.startsAfter(end);return(0,jsx_runtime.jsx)(TimeGridEvent.A,{style:style,event:event,label:label,getters:getters,rtl:rtl,components:components,continuesPrior:continuesPrior,continuesAfter:continuesAfter,accessors:accessors,resource:_this.props.resource,selected:(0,selection.sp)(event,selected),onClick:function onClick(e){return _this._select(Object.assign({},event,_this.props.resource&&{sourceResource:_this.props.resource},isBackgroundEvent&&{isBackgroundEvent:!0}),e)},onDoubleClick:function onDoubleClick(e){return _this._doubleClick(event,e)},isBackgroundEvent:isBackgroundEvent,onKeyPress:function onKeyPress(e){return _this._keyPress(event,e)},resizable:resizable},"evt_"+idx)}))},_this._selectable=function(){var node=_this.containerRef.current,_this$props2=_this.props,longPressThreshold=_this$props2.longPressThreshold,localizer=_this$props2.localizer,selector=_this._selector=new Selection.Ay((function(){return node}),{longPressThreshold:longPressThreshold}),maybeSelect=function maybeSelect(box){var onSelecting=_this.props.onSelecting,current=_this.state||{},state=selectionState(box),start=state.startDate,end=state.endDate;onSelecting&&(localizer.eq(current.startDate,start,"minutes")&&localizer.eq(current.endDate,end,"minutes")||!1===onSelecting({start:start,end:end,resourceId:_this.props.resource}))||_this.state.start===state.start&&_this.state.end===state.end&&_this.state.selecting===state.selecting||_this.setState(state)},selectionState=function selectionState(point){var currentSlot=_this.slotMetrics.closestSlotFromPoint(point,(0,Selection.rF)(node));_this.state.selecting||(_this._initialSlot=currentSlot);var initialSlot=_this._initialSlot;localizer.lte(initialSlot,currentSlot)?currentSlot=_this.slotMetrics.nextSlot(currentSlot):localizer.gt(initialSlot,currentSlot)&&(initialSlot=_this.slotMetrics.nextSlot(initialSlot));var selectRange=_this.slotMetrics.getRange(localizer.min(initialSlot,currentSlot),localizer.max(initialSlot,currentSlot));return Object.assign({},selectRange,{selecting:!0,top:"".concat(selectRange.top,"%"),height:"".concat(selectRange.height,"%")})},selectorClicksHandler=function selectorClicksHandler(box,actionType){if(!(0,Selection.xH)(_this.containerRef.current,box)){var _selectionState=selectionState(box),startDate=_selectionState.startDate,endDate=_selectionState.endDate;_this._selectSlot({startDate:startDate,endDate:endDate,action:actionType,box:box})}_this.setState({selecting:!1})};selector.on("selecting",maybeSelect),selector.on("selectStart",maybeSelect),selector.on("beforeSelect",(function(box){if("ignoreEvents"===_this.props.selectable)return!(0,Selection.xH)(_this.containerRef.current,box)})),selector.on("click",(function(box){return selectorClicksHandler(box,"click")})),selector.on("doubleClick",(function(box){return selectorClicksHandler(box,"doubleClick")})),selector.on("select",(function(bounds){_this.state.selecting&&(_this._selectSlot(Object.assign({},_this.state,{action:"select",bounds:bounds})),_this.setState({selecting:!1}))})),selector.on("reset",(function(){_this.state.selecting&&_this.setState({selecting:!1})}))},_this._teardownSelectable=function(){_this._selector&&(_this._selector.teardown(),_this._selector=null)},_this._selectSlot=function(_ref3){for(var startDate=_ref3.startDate,endDate=_ref3.endDate,action=_ref3.action,bounds=_ref3.bounds,box=_ref3.box,current=startDate,slots=[];_this.props.localizer.lte(current,endDate);)slots.push(current),current=new Date(+current+60*_this.props.step*1e3);(0,helpers.me)(_this.props.onSelectSlot,{slots:slots,start:startDate,end:endDate,resourceId:_this.props.resource,action:action,bounds:bounds,box:box})},_this._select=function(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++)args[_key2]=arguments[_key2];(0,helpers.me)(_this.props.onSelectEvent,args)},_this._doubleClick=function(){for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++)args[_key3]=arguments[_key3];(0,helpers.me)(_this.props.onDoubleClickEvent,args)},_this._keyPress=function(){for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++)args[_key4]=arguments[_key4];(0,helpers.me)(_this.props.onKeyPressEvent,args)},_this.slotMetrics=getSlotMetrics(_this.props),_this.containerRef=(0,react.createRef)(),_this}return(0,inherits.default)(DayColumn,_React$Component),(0,createClass.default)(DayColumn,[{key:"componentDidMount",value:function componentDidMount(){this.props.selectable&&this._selectable(),this.props.isNow&&this.setTimeIndicatorPositionUpdateInterval()}},{key:"componentWillUnmount",value:function componentWillUnmount(){this._teardownSelectable(),this.clearTimeIndicatorInterval()}},{key:"componentDidUpdate",value:function componentDidUpdate(prevProps,prevState){this.props.selectable&&!prevProps.selectable&&this._selectable(),!this.props.selectable&&prevProps.selectable&&this._teardownSelectable();var _this$props3=this.props,getNow=_this$props3.getNow,isNow=_this$props3.isNow,localizer=_this$props3.localizer,date=_this$props3.date,min=_this$props3.min,max=_this$props3.max,getNowChanged=localizer.neq(prevProps.getNow(),getNow(),"minutes");if(prevProps.isNow!==isNow||getNowChanged){if(this.clearTimeIndicatorInterval(),isNow){var tail=!getNowChanged&&localizer.eq(prevProps.date,date,"minutes")&&prevState.timeIndicatorPosition===this.state.timeIndicatorPosition;this.setTimeIndicatorPositionUpdateInterval(tail)}}else isNow&&(localizer.neq(prevProps.min,min,"minutes")||localizer.neq(prevProps.max,max,"minutes"))&&this.positionTimeIndicator()}},{key:"setTimeIndicatorPositionUpdateInterval",value:function setTimeIndicatorPositionUpdateInterval(){var _this3=this,tail=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.intervalTriggered||tail||this.positionTimeIndicator(),this._timeIndicatorTimeout=window.setTimeout((function(){_this3.intervalTriggered=!0,_this3.positionTimeIndicator(),_this3.setTimeIndicatorPositionUpdateInterval()}),6e4)}},{key:"clearTimeIndicatorInterval",value:function clearTimeIndicatorInterval(){this.intervalTriggered=!1,window.clearTimeout(this._timeIndicatorTimeout)}},{key:"positionTimeIndicator",value:function positionTimeIndicator(){var _this$props4=this.props,min=_this$props4.min,max=_this$props4.max,current=(0,_this$props4.getNow)();if(current>=min&¤t<=max){var top=this.slotMetrics.getCurrentTimePosition(current);this.intervalTriggered=!0,this.setState({timeIndicatorPosition:top})}else this.clearTimeIndicatorInterval()}},{key:"render",value:function render(){var _this$props5=this.props,date=_this$props5.date,max=_this$props5.max,rtl=_this$props5.rtl,isNow=_this$props5.isNow,resource=_this$props5.resource,accessors=_this$props5.accessors,localizer=_this$props5.localizer,_this$props5$getters=_this$props5.getters,dayProp=_this$props5$getters.dayProp,getters=(0,objectWithoutProperties.A)(_this$props5$getters,_excluded),_this$props5$componen=_this$props5.components,EventContainer=_this$props5$componen.eventContainerWrapper,components=(0,objectWithoutProperties.A)(_this$props5$componen,_excluded2);this.slotMetrics=this.slotMetrics.update(this.props);var slotMetrics=this.slotMetrics,_this$state=this.state,selecting=_this$state.selecting,top=_this$state.top,height=_this$state.height,selectDates={start:_this$state.startDate,end:_this$state.endDate},_dayProp=dayProp(max),className=_dayProp.className,style=_dayProp.style,DayColumnWrapperComponent=components.dayColumnWrapper||src_DayColumnWrapper;return(0,jsx_runtime.jsxs)(DayColumnWrapperComponent,{ref:this.containerRef,date:date,style:style,className:(0,clsx_m.A)(className,"rbc-day-slot","rbc-time-column",isNow&&"rbc-now",isNow&&"rbc-today",selecting&&"rbc-slot-selecting"),slotMetrics:slotMetrics,resource:resource,children:[slotMetrics.groups.map((function(grp,idx){return(0,jsx_runtime.jsx)(TimeSlotGroup,{group:grp,resource:resource,getters:getters,components:components},idx)})),(0,jsx_runtime.jsx)(EventContainer,{localizer:localizer,resource:resource,accessors:accessors,getters:getters,components:components,slotMetrics:slotMetrics,children:(0,jsx_runtime.jsxs)("div",{className:(0,clsx_m.A)("rbc-events-container",rtl&&"rtl"),children:[this.renderEvents({events:this.props.backgroundEvents,isBackgroundEvent:!0}),this.renderEvents({events:this.props.events})]})}),selecting&&(0,jsx_runtime.jsx)("div",{className:"rbc-slot-selection",style:{top:top,height:height},children:(0,jsx_runtime.jsx)("span",{children:localizer.format(selectDates,"selectRangeFormat")})}),isNow&&this.intervalTriggered&&(0,jsx_runtime.jsx)("div",{className:"rbc-current-time-indicator",style:{top:"".concat(this.state.timeIndicatorPosition,"%")}})]})}}])}(react.Component);DayColumn.defaultProps={dragThroughEvents:!0,timeslots:2},DayColumn.__docgenInfo={description:"",methods:[{name:"setTimeIndicatorPositionUpdateInterval",docblock:"@param tail {Boolean} - whether `positionTimeIndicator` call should be\n deferred or called upon setting interval (`true` - if deferred);",modifiers:[],params:[{name:"tail",description:"{Boolean} - whether `positionTimeIndicator` call should be\n deferred or called upon setting interval (`true` - if deferred);",type:null,optional:!1}],returns:null,description:null},{name:"clearTimeIndicatorInterval",docblock:null,modifiers:[],params:[],returns:null},{name:"positionTimeIndicator",docblock:null,modifiers:[],params:[],returns:null},{name:"renderEvents",docblock:null,modifiers:[],params:[{name:"{ events, isBackgroundEvent }",type:null}],returns:null},{name:"_selectable",docblock:null,modifiers:[],params:[],returns:null},{name:"_teardownSelectable",docblock:null,modifiers:[],params:[],returns:null},{name:"_selectSlot",docblock:null,modifiers:[],params:[{name:"{ startDate, endDate, action, bounds, box }",type:null}],returns:null},{name:"_select",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"_doubleClick",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"_keyPress",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null}],displayName:"DayColumn",props:{dragThroughEvents:{defaultValue:{value:"true",computed:!1},description:"",type:{name:"bool"},required:!1},timeslots:{defaultValue:{value:"2",computed:!1},description:"",type:{name:"number"},required:!1},events:{description:"",type:{name:"array"},required:!0},backgroundEvents:{description:"",type:{name:"array"},required:!0},step:{description:"",type:{name:"number"},required:!0},date:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},min:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},max:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},getNow:{description:"",type:{name:"func"},required:!0},isNow:{description:"",type:{name:"bool"},required:!1},rtl:{description:"",type:{name:"bool"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},showMultiDayTimes:{description:"",type:{name:"bool"},required:!1},culture:{description:"",type:{name:"string"},required:!1},selected:{description:"",type:{name:"object"},required:!1},selectable:{description:"",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},eventOffset:{description:"",type:{name:"number"},required:!1},longPressThreshold:{description:"",type:{name:"number"},required:!1},onSelecting:{description:"",type:{name:"func"},required:!1},onSelectSlot:{description:"",type:{name:"func"},required:!0},onSelectEvent:{description:"",type:{name:"func"},required:!0},onDoubleClickEvent:{description:"",type:{name:"func"},required:!0},onKeyPressEvent:{description:"",type:{name:"func"},required:!1},className:{description:"",type:{name:"string"},required:!1},resource:{description:"",type:{name:"any"},required:!1},dayLayoutAlgorithm:{description:"",type:{name:"custom",raw:"DayLayoutAlgorithmPropType"},required:!1}}};var src_DayColumn=DayColumn;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/DayColumn.js"]={name:"DayColumn",docgenInfo:DayColumn.__docgenInfo,path:"src/DayColumn.js"});var TimeGutter=function TimeGutter(_ref2){var min=_ref2.min,max=_ref2.max,timeslots=_ref2.timeslots,step=_ref2.step,localizer=_ref2.localizer,getNow=_ref2.getNow,resource=_ref2.resource,components=_ref2.components,getters=_ref2.getters,gutterRef=_ref2.gutterRef,TimeGutterWrapper=components.timeGutterWrapper,_useMemo=(0,react.useMemo)((function(){return function adjustForDST(_ref){var min=_ref.min,max=_ref.max,localizer=_ref.localizer;return localizer.getTimezoneOffset(min)!==localizer.getTimezoneOffset(max)?{start:localizer.add(min,-1,"day"),end:localizer.add(max,-1,"day")}:{start:min,end:max}}({min:min,max:max,localizer:localizer})}),[null==min?void 0:min.toISOString(),null==max?void 0:max.toISOString(),localizer]),start=_useMemo.start,end=_useMemo.end,_useState=(0,react.useState)(getSlotMetrics({min:start,max:end,timeslots:timeslots,step:step,localizer:localizer})),_useState2=(0,slicedToArray.A)(_useState,2),slotMetrics=_useState2[0],setSlotMetrics=_useState2[1];(0,react.useEffect)((function(){slotMetrics&&setSlotMetrics(slotMetrics.update({min:start,max:end,timeslots:timeslots,step:step,localizer:localizer}))}),[null==start?void 0:start.toISOString(),null==end?void 0:end.toISOString(),timeslots,step]);var renderSlot=(0,react.useCallback)((function(value,idx){if(idx)return null;var isNow=slotMetrics.dateIsInGroup(getNow(),idx);return(0,jsx_runtime.jsx)("span",{className:(0,clsx_m.A)("rbc-label",isNow&&"rbc-now"),children:localizer.format(value,"timeGutterFormat")})}),[slotMetrics,localizer,getNow]);return(0,jsx_runtime.jsx)(TimeGutterWrapper,{slotMetrics:slotMetrics,children:(0,jsx_runtime.jsx)("div",{className:"rbc-time-gutter rbc-time-column",ref:gutterRef,children:slotMetrics.groups.map((function(grp,idx){return(0,jsx_runtime.jsx)(TimeSlotGroup,{group:grp,resource:resource,components:components,renderSlot:renderSlot,getters:getters},idx)}))})})};TimeGutter.displayName="TimeGutter";var src_TimeGutter=react.forwardRef((function(props,ref){return(0,jsx_runtime.jsx)(TimeGutter,Object.assign({gutterRef:ref},props))})),scrollbarSize=__webpack_require__("./node_modules/dom-helpers/esm/scrollbarSize.js"),DateContentRow=__webpack_require__("./src/DateContentRow.js"),Header=__webpack_require__("./src/Header.js"),ResourceHeader=function ResourceHeader(_ref){var label=_ref.label;return(0,jsx_runtime.jsx)(react.Fragment,{children:label})};ResourceHeader.displayName="ResourceHeader",ResourceHeader.__docgenInfo={description:"",methods:[],displayName:"ResourceHeader",props:{label:{description:"",type:{name:"node"},required:!1},index:{description:"",type:{name:"number"},required:!1},resource:{description:"",type:{name:"object"},required:!1}}};var src_ResourceHeader=ResourceHeader;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/ResourceHeader.js"]={name:"ResourceHeader",docgenInfo:ResourceHeader.__docgenInfo,path:"src/ResourceHeader.js"});var TimeGridHeader=function(_React$Component){function TimeGridHeader(){var _this;(0,classCallCheck.default)(this,TimeGridHeader);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,TimeGridHeader,[].concat(args))).handleHeaderClick=function(date,view,e){e.preventDefault(),(0,helpers.me)(_this.props.onDrillDown,[date,view])},_this.renderRow=function(resource){var _this$props=_this.props,events=_this$props.events,rtl=_this$props.rtl,selectable=_this$props.selectable,getNow=_this$props.getNow,range=_this$props.range,getters=_this$props.getters,localizer=_this$props.localizer,accessors=_this$props.accessors,components=_this$props.components,resizable=_this$props.resizable,resourceId=accessors.resourceId(resource),eventsToDisplay=resource?events.filter((function(event){return accessors.resource(event)===resourceId})):events;return(0,jsx_runtime.jsx)(DateContentRow.A,{isAllDay:!0,rtl:rtl,getNow:getNow,minRows:2,maxRows:_this.props.allDayMaxRows+1,range:range,events:eventsToDisplay,resourceId:resourceId,className:"rbc-allday-cell",selectable:selectable,selected:_this.props.selected,components:components,accessors:accessors,getters:getters,localizer:localizer,onSelect:_this.props.onSelectEvent,onShowMore:_this.props.onShowMore,onDoubleClick:_this.props.onDoubleClickEvent,onKeyPress:_this.props.onKeyPressEvent,onSelectSlot:_this.props.onSelectSlot,longPressThreshold:_this.props.longPressThreshold,resizable:resizable})},_this}return(0,inherits.default)(TimeGridHeader,_React$Component),(0,createClass.default)(TimeGridHeader,[{key:"renderHeaderCells",value:function renderHeaderCells(range){var _this2=this,_this$props2=this.props,localizer=_this$props2.localizer,getDrilldownView=_this$props2.getDrilldownView,getNow=_this$props2.getNow,dayProp=_this$props2.getters.dayProp,_this$props2$componen=_this$props2.components.header,HeaderComponent=void 0===_this$props2$componen?Header.A:_this$props2$componen,today=getNow();return range.map((function(date,i){var drilldownView=getDrilldownView(date),label=localizer.format(date,"dayFormat"),_dayProp=dayProp(date),className=_dayProp.className,style=_dayProp.style,header=(0,jsx_runtime.jsx)(HeaderComponent,{date:date,label:label,localizer:localizer});return(0,jsx_runtime.jsx)("div",{style:style,className:(0,clsx_m.A)("rbc-header",className,localizer.isSameDate(date,today)&&"rbc-today"),children:drilldownView?(0,jsx_runtime.jsx)("button",{type:"button",className:"rbc-button-link",onClick:function onClick(e){return _this2.handleHeaderClick(date,drilldownView,e)},children:header}):(0,jsx_runtime.jsx)("span",{children:header})},i)}))}},{key:"render",value:function render(){var _this3=this,_this$props3=this.props,width=_this$props3.width,rtl=_this$props3.rtl,resources=_this$props3.resources,range=_this$props3.range,events=_this$props3.events,getNow=_this$props3.getNow,accessors=_this$props3.accessors,selectable=_this$props3.selectable,components=_this$props3.components,getters=_this$props3.getters,scrollRef=_this$props3.scrollRef,localizer=_this$props3.localizer,isOverflowing=_this$props3.isOverflowing,_this$props3$componen=_this$props3.components,TimeGutterHeader=_this$props3$componen.timeGutterHeader,_this$props3$componen2=_this$props3$componen.resourceHeader,ResourceHeaderComponent=void 0===_this$props3$componen2?src_ResourceHeader:_this$props3$componen2,resizable=_this$props3.resizable,style={};isOverflowing&&(style[rtl?"marginLeft":"marginRight"]="".concat((0,scrollbarSize.A)()-1,"px"));var groupedEvents=resources.groupEvents(events);return(0,jsx_runtime.jsxs)("div",{style:style,ref:scrollRef,className:(0,clsx_m.A)("rbc-time-header",isOverflowing&&"rbc-overflowing"),children:[(0,jsx_runtime.jsx)("div",{className:"rbc-label rbc-time-header-gutter",style:{width:width,minWidth:width,maxWidth:width},children:TimeGutterHeader&&(0,jsx_runtime.jsx)(TimeGutterHeader,{})}),resources.map((function(_ref,idx){var _ref2=(0,slicedToArray.A)(_ref,2),id=_ref2[0],resource=_ref2[1];return(0,jsx_runtime.jsxs)("div",{className:"rbc-time-header-content",children:[resource&&(0,jsx_runtime.jsx)("div",{className:"rbc-row rbc-row-resource",children:(0,jsx_runtime.jsx)("div",{className:"rbc-header",children:(0,jsx_runtime.jsx)(ResourceHeaderComponent,{index:idx,label:accessors.resourceTitle(resource),resource:resource})})},"resource_".concat(idx)),(0,jsx_runtime.jsx)("div",{className:"rbc-row rbc-time-header-cell".concat(range.length<=1?" rbc-time-header-cell-single-day":""),children:_this3.renderHeaderCells(range)}),(0,jsx_runtime.jsx)(DateContentRow.A,{isAllDay:!0,rtl:rtl,getNow:getNow,minRows:2,maxRows:_this3.props.allDayMaxRows+1,range:range,events:groupedEvents.get(id)||[],resourceId:resource&&id,className:"rbc-allday-cell",selectable:selectable,selected:_this3.props.selected,components:components,accessors:accessors,getters:getters,localizer:localizer,onSelect:_this3.props.onSelectEvent,onShowMore:_this3.props.onShowMore,onDoubleClick:_this3.props.onDoubleClickEvent,onKeyDown:_this3.props.onKeyPressEvent,onSelectSlot:_this3.props.onSelectSlot,longPressThreshold:_this3.props.longPressThreshold,resizable:resizable})]},id||idx)}))]})}}])}(react.Component);TimeGridHeader.__docgenInfo={description:"",methods:[{name:"handleHeaderClick",docblock:null,modifiers:[],params:[{name:"date",type:null},{name:"view",type:null},{name:"e",type:null}],returns:null},{name:"renderHeaderCells",docblock:null,modifiers:[],params:[{name:"range",type:null}],returns:null},{name:"renderRow",docblock:null,modifiers:[],params:[{name:"resource",type:null}],returns:null}],displayName:"TimeGridHeader",props:{range:{description:"",type:{name:"array"},required:!0},events:{description:"",type:{name:"array"},required:!0},resources:{description:"",type:{name:"object"},required:!1},getNow:{description:"",type:{name:"func"},required:!0},isOverflowing:{description:"",type:{name:"bool"},required:!1},rtl:{description:"",type:{name:"bool"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1},width:{description:"",type:{name:"number"},required:!1},localizer:{description:"",type:{name:"object"},required:!0},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},selected:{description:"",type:{name:"object"},required:!1},selectable:{description:"",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},longPressThreshold:{description:"",type:{name:"number"},required:!1},allDayMaxRows:{description:"",type:{name:"number"},required:!1},onSelectSlot:{description:"",type:{name:"func"},required:!1},onSelectEvent:{description:"",type:{name:"func"},required:!1},onDoubleClickEvent:{description:"",type:{name:"func"},required:!1},onKeyPressEvent:{description:"",type:{name:"func"},required:!1},onDrillDown:{description:"",type:{name:"func"},required:!1},onShowMore:{description:"",type:{name:"func"},required:!1},getDrilldownView:{description:"",type:{name:"func"},required:!0},scrollRef:{description:"",type:{name:"any"},required:!1}}};var src_TimeGridHeader=TimeGridHeader;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/TimeGridHeader.js"]={name:"TimeGridHeader",docgenInfo:TimeGridHeader.__docgenInfo,path:"src/TimeGridHeader.js"});var PopOverlay=__webpack_require__("./src/PopOverlay.js"),esm_width=__webpack_require__("./node_modules/dom-helpers/esm/width.js"),esm_position=__webpack_require__("./node_modules/dom-helpers/esm/position.js"),constants=__webpack_require__("./src/utils/constants.js"),eventLevels=__webpack_require__("./src/utils/eventLevels.js"),NONE=(__webpack_require__("./node_modules/core-js/modules/es.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.to-string.js"),__webpack_require__("./node_modules/core-js/modules/es.string.iterator.js"),__webpack_require__("./node_modules/core-js/modules/es.array.iterator.js"),__webpack_require__("./node_modules/core-js/modules/web.dom-collections.iterator.js"),{});var TimeGrid=function(_Component){function TimeGrid(props){var _this;return(0,classCallCheck.default)(this,TimeGrid),(_this=(0,callSuper.default)(this,TimeGrid,[props])).handleScroll=function(e){_this.scrollRef.current&&(_this.scrollRef.current.scrollLeft=e.target.scrollLeft)},_this.handleResize=function(){animationFrame.Z(_this.rafHandle),_this.rafHandle=animationFrame.E(_this.checkOverflow)},_this.handleKeyPressEvent=function(){_this.clearSelection();for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];(0,helpers.me)(_this.props.onKeyPressEvent,args)},_this.handleSelectEvent=function(){_this.clearSelection();for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++)args[_key2]=arguments[_key2];(0,helpers.me)(_this.props.onSelectEvent,args)},_this.handleDoubleClickEvent=function(){_this.clearSelection();for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++)args[_key3]=arguments[_key3];(0,helpers.me)(_this.props.onDoubleClickEvent,args)},_this.handleShowMore=function(events,date,cell,slot,target){var _this$props=_this.props,popup=_this$props.popup,onDrillDown=_this$props.onDrillDown,onShowMore=_this$props.onShowMore,getDrilldownView=_this$props.getDrilldownView,doShowMoreDrillDown=_this$props.doShowMoreDrillDown;if(_this.clearSelection(),popup){var position=(0,esm_position.A)(cell,_this.containerRef.current);_this.setState({overlay:{date:date,events:events,position:Object.assign({},position,{width:"200px"}),target:target}})}else doShowMoreDrillDown&&(0,helpers.me)(onDrillDown,[date,getDrilldownView(date)||constants.l.DAY]);(0,helpers.me)(onShowMore,[events,date,slot])},_this.handleSelectAllDaySlot=function(slots,slotInfo){var onSelectSlot=_this.props.onSelectSlot,start=new Date(slots[0]),end=new Date(slots[slots.length-1]);end.setDate(slots[slots.length-1].getDate()+1),(0,helpers.me)(onSelectSlot,{slots:slots,start:start,end:end,action:slotInfo.action,resourceId:slotInfo.resourceId})},_this.overlayDisplay=function(){_this.setState({overlay:null})},_this.checkOverflow=function(){if(!_this._updatingOverflow){var content=_this.contentRef.current;if(null!=content&&content.scrollHeight){var isOverflowing=content.scrollHeight>content.clientHeight;_this.state.isOverflowing!==isOverflowing&&(_this._updatingOverflow=!0,_this.setState({isOverflowing:isOverflowing},(function(){_this._updatingOverflow=!1})))}}},_this.memoizedResources=(0,memoize_one_esm.A)((function(resources,accessors){return function Resources(resources,accessors){return{map:function map(fn){return resources?resources.map((function(resource,idx){return fn([accessors.resourceId(resource),resource],idx)})):[fn([NONE,null],0)]},groupEvents:function groupEvents(events){var eventsByResource=new Map;return resources?(events.forEach((function(event){var id=accessors.resource(event)||NONE;if(Array.isArray(id))id.forEach((function(item){var resourceEvents=eventsByResource.get(item)||[];resourceEvents.push(event),eventsByResource.set(item,resourceEvents)}));else{var resourceEvents=eventsByResource.get(id)||[];resourceEvents.push(event),eventsByResource.set(id,resourceEvents)}})),eventsByResource):(eventsByResource.set(NONE,events),eventsByResource)}}}(resources,accessors)})),_this.state={gutterWidth:void 0,isOverflowing:null},_this.scrollRef=react.createRef(),_this.contentRef=react.createRef(),_this.containerRef=react.createRef(),_this._scrollRatio=null,_this.gutterRef=(0,react.createRef)(),_this}return(0,inherits.default)(TimeGrid,_Component),(0,createClass.default)(TimeGrid,[{key:"getSnapshotBeforeUpdate",value:function getSnapshotBeforeUpdate(){return this.checkOverflow(),null}},{key:"componentDidMount",value:function componentDidMount(){null==this.props.width&&this.measureGutter(),this.calculateScroll(),this.applyScroll(),window.addEventListener("resize",this.handleResize)}},{key:"componentWillUnmount",value:function componentWillUnmount(){window.removeEventListener("resize",this.handleResize),animationFrame.Z(this.rafHandle),this.measureGutterAnimationFrameRequest&&window.cancelAnimationFrame(this.measureGutterAnimationFrameRequest)}},{key:"componentDidUpdate",value:function componentDidUpdate(){this.applyScroll()}},{key:"renderEvents",value:function renderEvents(range,events,backgroundEvents,now){var _this2=this,_this$props2=this.props,min=_this$props2.min,max=_this$props2.max,components=_this$props2.components,accessors=_this$props2.accessors,localizer=_this$props2.localizer,dayLayoutAlgorithm=_this$props2.dayLayoutAlgorithm,resources=this.memoizedResources(this.props.resources,accessors),groupedEvents=resources.groupEvents(events),groupedBackgroundEvents=resources.groupEvents(backgroundEvents);return resources.map((function(_ref,i){var _ref2=(0,slicedToArray.A)(_ref,2),id=_ref2[0],resource=_ref2[1];return range.map((function(date,jj){var daysEvents=(groupedEvents.get(id)||[]).filter((function(event){return localizer.inRange(date,accessors.start(event),accessors.end(event),"day")})),daysBackgroundEvents=(groupedBackgroundEvents.get(id)||[]).filter((function(event){return localizer.inRange(date,accessors.start(event),accessors.end(event),"day")}));return(0,react.createElement)(src_DayColumn,Object.assign({},_this2.props,{localizer:localizer,min:localizer.merge(date,min),max:localizer.merge(date,max),resource:resource&&id,components:components,isNow:localizer.isSameDate(date,now),key:i+"-"+jj,date:date,events:daysEvents,backgroundEvents:daysBackgroundEvents,dayLayoutAlgorithm:dayLayoutAlgorithm}))}))}))}},{key:"render",value:function render(){var _this$props$allDayMax,_this$props3=this.props,events=_this$props3.events,backgroundEvents=_this$props3.backgroundEvents,range=_this$props3.range,width=_this$props3.width,rtl=_this$props3.rtl,selected=_this$props3.selected,getNow=_this$props3.getNow,resources=_this$props3.resources,components=_this$props3.components,accessors=_this$props3.accessors,getters=_this$props3.getters,localizer=_this$props3.localizer,min=_this$props3.min,max=_this$props3.max,showMultiDayTimes=_this$props3.showMultiDayTimes,longPressThreshold=_this$props3.longPressThreshold,resizable=_this$props3.resizable;width=width||this.state.gutterWidth;var start=range[0],end=range[range.length-1];this.slots=range.length;var allDayEvents=[],rangeEvents=[],rangeBackgroundEvents=[];return events.forEach((function(event){if((0,eventLevels.r4)(event,start,end,accessors,localizer)){var eStart=accessors.start(event),eEnd=accessors.end(event);accessors.allDay(event)||localizer.startAndEndAreDateOnly(eStart,eEnd)||!showMultiDayTimes&&!localizer.isSameDate(eStart,eEnd)?allDayEvents.push(event):rangeEvents.push(event)}})),backgroundEvents.forEach((function(event){(0,eventLevels.r4)(event,start,end,accessors,localizer)&&rangeBackgroundEvents.push(event)})),allDayEvents.sort((function(a,b){return(0,eventLevels.kD)(a,b,accessors,localizer)})),(0,jsx_runtime.jsxs)("div",{className:(0,clsx_m.A)("rbc-time-view",resources&&"rbc-time-view-resources"),ref:this.containerRef,children:[(0,jsx_runtime.jsx)(src_TimeGridHeader,{range:range,events:allDayEvents,width:width,rtl:rtl,getNow:getNow,localizer:localizer,selected:selected,allDayMaxRows:this.props.showAllEvents?1/0:null!==(_this$props$allDayMax=this.props.allDayMaxRows)&&void 0!==_this$props$allDayMax?_this$props$allDayMax:1/0,resources:this.memoizedResources(resources,accessors),selectable:this.props.selectable,accessors:accessors,getters:getters,components:components,scrollRef:this.scrollRef,isOverflowing:this.state.isOverflowing,longPressThreshold:longPressThreshold,onSelectSlot:this.handleSelectAllDaySlot,onSelectEvent:this.handleSelectEvent,onShowMore:this.handleShowMore,onDoubleClickEvent:this.props.onDoubleClickEvent,onKeyPressEvent:this.props.onKeyPressEvent,onDrillDown:this.props.onDrillDown,getDrilldownView:this.props.getDrilldownView,resizable:resizable}),this.props.popup&&this.renderOverlay(),(0,jsx_runtime.jsxs)("div",{ref:this.contentRef,className:"rbc-time-content",onScroll:this.handleScroll,children:[(0,jsx_runtime.jsx)(src_TimeGutter,{date:start,ref:this.gutterRef,localizer:localizer,min:localizer.merge(start,min),max:localizer.merge(start,max),step:this.props.step,getNow:this.props.getNow,timeslots:this.props.timeslots,components:components,className:"rbc-time-gutter",getters:getters}),this.renderEvents(range,rangeEvents,rangeBackgroundEvents,getNow())]})]})}},{key:"renderOverlay",value:function renderOverlay(){var _this$state$overlay,_this$state,_this3=this,overlay=null!==(_this$state$overlay=null===(_this$state=this.state)||void 0===_this$state?void 0:_this$state.overlay)&&void 0!==_this$state$overlay?_this$state$overlay:{},_this$props4=this.props,accessors=_this$props4.accessors,localizer=_this$props4.localizer,components=_this$props4.components,getters=_this$props4.getters,selected=_this$props4.selected,popupOffset=_this$props4.popupOffset,handleDragStart=_this$props4.handleDragStart;return(0,jsx_runtime.jsx)(PopOverlay.A,{overlay:overlay,accessors:accessors,localizer:localizer,components:components,getters:getters,selected:selected,popupOffset:popupOffset,ref:this.containerRef,handleKeyPressEvent:this.handleKeyPressEvent,handleSelectEvent:this.handleSelectEvent,handleDoubleClickEvent:this.handleDoubleClickEvent,handleDragStart:handleDragStart,show:!!overlay.position,overlayDisplay:this.overlayDisplay,onHide:function onHide(){return _this3.setState({overlay:null})}})}},{key:"clearSelection",value:function clearSelection(){clearTimeout(this._selectTimer),this._pendingSelection=[]}},{key:"measureGutter",value:function measureGutter(){var _this4=this;this.measureGutterAnimationFrameRequest&&window.cancelAnimationFrame(this.measureGutterAnimationFrameRequest),this.measureGutterAnimationFrameRequest=window.requestAnimationFrame((function(){var _this4$gutterRef,width=null!==(_this4$gutterRef=_this4.gutterRef)&&void 0!==_this4$gutterRef&&_this4$gutterRef.current?(0,esm_width.A)(_this4.gutterRef.current):void 0;width&&_this4.state.gutterWidth!==width&&_this4.setState({gutterWidth:width})}))}},{key:"applyScroll",value:function applyScroll(){if(null!=this._scrollRatio&&!0===this.props.enableAutoScroll){var content=this.contentRef.current;content.scrollTop=content.scrollHeight*this._scrollRatio,this._scrollRatio=null}}},{key:"calculateScroll",value:function calculateScroll(){var props=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props,min=props.min,max=props.max,scrollToTime=props.scrollToTime,localizer=props.localizer,diffMillis=localizer.diff(localizer.merge(scrollToTime,min),scrollToTime,"milliseconds"),totalMillis=localizer.diff(min,max,"milliseconds");this._scrollRatio=diffMillis/totalMillis}}])}(react.Component);TimeGrid.defaultProps={step:30,timeslots:2},TimeGrid.__docgenInfo={description:"",methods:[{name:"handleScroll",docblock:null,modifiers:[],params:[{name:"e",type:null}],returns:null},{name:"handleResize",docblock:null,modifiers:[],params:[],returns:null},{name:"handleKeyPressEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleSelectEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleDoubleClickEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleShowMore",docblock:null,modifiers:[],params:[{name:"events",type:null},{name:"date",type:null},{name:"cell",type:null},{name:"slot",type:null},{name:"target",type:null}],returns:null},{name:"handleSelectAllDaySlot",docblock:null,modifiers:[],params:[{name:"slots",type:null},{name:"slotInfo",type:null}],returns:null},{name:"renderEvents",docblock:null,modifiers:[],params:[{name:"range",type:null},{name:"events",type:null},{name:"backgroundEvents",type:null},{name:"now",type:null}],returns:null},{name:"renderOverlay",docblock:null,modifiers:[],params:[],returns:null},{name:"overlayDisplay",docblock:null,modifiers:[],params:[],returns:null},{name:"clearSelection",docblock:null,modifiers:[],params:[],returns:null},{name:"measureGutter",docblock:null,modifiers:[],params:[],returns:null},{name:"applyScroll",docblock:null,modifiers:[],params:[],returns:null},{name:"calculateScroll",docblock:null,modifiers:[],params:[{name:"props",type:null}],returns:null},{name:"checkOverflow",docblock:null,modifiers:[],params:[],returns:null}],displayName:"TimeGrid",props:{step:{defaultValue:{value:"30",computed:!1},description:"",type:{name:"number"},required:!1},timeslots:{defaultValue:{value:"2",computed:!1},description:"",type:{name:"number"},required:!1},events:{description:"",type:{name:"array"},required:!0},backgroundEvents:{description:"",type:{name:"array"},required:!0},resources:{description:"",type:{name:"array"},required:!1},range:{description:"",type:{name:"arrayOf",value:{name:"instanceOf",value:"Date"}},required:!1},min:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},max:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},getNow:{description:"",type:{name:"func"},required:!0},scrollToTime:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},enableAutoScroll:{description:"",type:{name:"bool"},required:!1},showMultiDayTimes:{description:"",type:{name:"bool"},required:!1},rtl:{description:"",type:{name:"bool"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1},width:{description:"",type:{name:"number"},required:!1},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},allDayMaxRows:{description:"",type:{name:"number"},required:!1},selected:{description:"",type:{name:"object"},required:!1},selectable:{description:"",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},longPressThreshold:{description:"",type:{name:"number"},required:!1},onNavigate:{description:"",type:{name:"func"},required:!1},onSelectSlot:{description:"",type:{name:"func"},required:!1},onSelectEnd:{description:"",type:{name:"func"},required:!1},onSelectStart:{description:"",type:{name:"func"},required:!1},onSelectEvent:{description:"",type:{name:"func"},required:!1},onShowMore:{description:"",type:{name:"func"},required:!1},onDoubleClickEvent:{description:"",type:{name:"func"},required:!1},onKeyPressEvent:{description:"",type:{name:"func"},required:!1},onDrillDown:{description:"",type:{name:"func"},required:!1},getDrilldownView:{description:"",type:{name:"func"},required:!0},dayLayoutAlgorithm:{description:"",type:{name:"custom",raw:"DayLayoutAlgorithmPropType"},required:!1},showAllEvents:{description:"",type:{name:"bool"},required:!1},doShowMoreDrillDown:{description:"",type:{name:"bool"},required:!1},popup:{description:"",type:{name:"bool"},required:!1},handleDragStart:{description:"",type:{name:"func"},required:!1},popupOffset:{description:"",type:{name:"union",value:[{name:"number"},{name:"shape",value:{x:{name:"number",required:!1},y:{name:"number",required:!1}}}]},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/TimeGrid.js"]={name:"TimeGrid",docgenInfo:TimeGrid.__docgenInfo,path:"src/TimeGrid.js"})},"./src/TimeGridEvent.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/defineProperty.js"),clsx__WEBPACK_IMPORTED_MODULE_4__=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/clsx/dist/clsx.m.js")),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__=(__webpack_require__("./node_modules/react/index.js"),__webpack_require__("./node_modules/react/jsx-runtime.js"));function stringifyPercent(v){return"string"==typeof v?v:v+"%"}function TimeGridEvent(props){var style=props.style,className=props.className,event=props.event,accessors=props.accessors,rtl=props.rtl,selected=props.selected,label=props.label,continuesPrior=props.continuesPrior,continuesAfter=props.continuesAfter,getters=props.getters,onClick=props.onClick,onDoubleClick=props.onDoubleClick,isBackgroundEvent=props.isBackgroundEvent,onKeyPress=props.onKeyPress,_props$components=props.components,Event=_props$components.event,EventWrapper=_props$components.eventWrapper,title=accessors.title(event),tooltip=accessors.tooltip(event),end=accessors.end(event),start=accessors.start(event),userProps=getters.eventProp(event,start,end,selected),inner=[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("div",{className:"rbc-event-label",children:label},"1"),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("div",{className:"rbc-event-content",children:Event?(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Event,{event:event,title:title}):title},"2")],height=style.height,top=style.top,width=style.width,xOffset=style.xOffset,eventStyle=Object.assign({},userProps.style,(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_3__.A)({top:stringifyPercent(top),height:stringifyPercent(height),width:stringifyPercent(width)},rtl?"right":"left",stringifyPercent(xOffset)));return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(EventWrapper,Object.assign({type:"time"},props,{children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("div",{role:"button",tabIndex:0,onClick:onClick,onDoubleClick:onDoubleClick,style:eventStyle,onKeyDown:onKeyPress,title:tooltip?("string"==typeof label?label+": ":"")+tooltip:void 0,className:(0,clsx__WEBPACK_IMPORTED_MODULE_4__.A)(isBackgroundEvent?"rbc-background-event":"rbc-event",className,userProps.className,{"rbc-selected":selected,"rbc-event-continues-earlier":continuesPrior,"rbc-event-continues-later":continuesAfter}),children:inner})}))}TimeGridEvent.displayName="TimeGridEvent",TimeGridEvent.__docgenInfo={description:"",methods:[],displayName:"TimeGridEvent"},__webpack_exports__.A=TimeGridEvent,"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/TimeGridEvent.js"]={name:"TimeGridEvent",docgenInfo:TimeGridEvent.__docgenInfo,path:"src/TimeGridEvent.js"})},"./src/addons/dragAndDrop/index.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return dragAndDrop}});var objectWithoutProperties=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),classCallCheck=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/classCallCheck.js"),createClass=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/createClass.js"),callSuper=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/callSuper.js"),inherits=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/inherits.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),clsx_m=__webpack_require__("./node_modules/clsx/dist/clsx.m.js"),accessors=(__webpack_require__("./src/utils/propTypes.js"),__webpack_require__("./node_modules/core-js/modules/es.array.includes.js"),__webpack_require__("./node_modules/core-js/modules/es.string.includes.js"),__webpack_require__("./src/utils/accessors.js")),DnDContext=react.createContext(),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),EventWrapper=function(_React$Component){function EventWrapper(){var _this;(0,classCallCheck.default)(this,EventWrapper);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,EventWrapper,[].concat(args))).handleResizeUp=function(e){0===e.button&&_this.context.draggable.onBeginAction(_this.props.event,"resize","UP")},_this.handleResizeDown=function(e){0===e.button&&_this.context.draggable.onBeginAction(_this.props.event,"resize","DOWN")},_this.handleResizeLeft=function(e){0===e.button&&_this.context.draggable.onBeginAction(_this.props.event,"resize","LEFT")},_this.handleResizeRight=function(e){0===e.button&&_this.context.draggable.onBeginAction(_this.props.event,"resize","RIGHT")},_this.handleStartDragging=function(e){var _e$target$getAttribut;0===e.button&&((null===(_e$target$getAttribut=e.target.getAttribute("class"))||void 0===_e$target$getAttribut?void 0:_e$target$getAttribut.includes("rbc-addons-dnd-resize"))||(Object.assign({},_this.props.event).sourceResource=_this.props.resource,_this.context.draggable.onBeginAction(_this.props.event,"move")))},_this}return(0,inherits.default)(EventWrapper,_React$Component),(0,createClass.default)(EventWrapper,[{key:"renderAnchor",value:function renderAnchor(direction){var cls="Up"===direction||"Down"===direction?"ns":"ew";return(0,jsx_runtime.jsx)("div",{className:"rbc-addons-dnd-resize-".concat(cls,"-anchor"),onMouseDown:this["handleResize".concat(direction)],children:(0,jsx_runtime.jsx)("div",{className:"rbc-addons-dnd-resize-".concat(cls,"-icon")})})}},{key:"render",value:function render(){var _this$props=this.props,event=_this$props.event,type=_this$props.type,continuesPrior=_this$props.continuesPrior,continuesAfter=_this$props.continuesAfter,resizable=_this$props.resizable,children=this.props.children;if(event.__isPreview)return react.cloneElement(children,{className:(0,clsx_m.A)(children.props.className,"rbc-addons-dnd-drag-preview")});var draggable=this.context.draggable,draggableAccessor=draggable.draggableAccessor,resizableAccessor=draggable.resizableAccessor,isDraggable=!draggableAccessor||!!(0,accessors.s)(event,draggableAccessor);if(!isDraggable)return children;var isResizable=resizable&&(!resizableAccessor||!!(0,accessors.s)(event,resizableAccessor));if(isResizable||isDraggable){var newProps={onMouseDown:this.handleStartDragging,onTouchStart:this.handleStartDragging};if(isResizable){var StartAnchor=null,EndAnchor=null;"date"===type?(StartAnchor=!continuesPrior&&this.renderAnchor("Left"),EndAnchor=!continuesAfter&&this.renderAnchor("Right")):(StartAnchor=!continuesPrior&&this.renderAnchor("Up"),EndAnchor=!continuesAfter&&this.renderAnchor("Down")),newProps.children=(0,jsx_runtime.jsxs)("div",{className:"rbc-addons-dnd-resizable",children:[StartAnchor,children.props.children,EndAnchor]})}draggable.dragAndDropAction.interacting&&draggable.dragAndDropAction.event===event&&(newProps.className=(0,clsx_m.A)(children.props.className,"rbc-addons-dnd-dragged-event")),children=react.cloneElement(children,newProps)}return children}}])}(react.Component);EventWrapper.contextType=DnDContext,EventWrapper.__docgenInfo={description:"",methods:[{name:"handleResizeUp",docblock:null,modifiers:[],params:[{name:"e",type:null}],returns:null},{name:"handleResizeDown",docblock:null,modifiers:[],params:[{name:"e",type:null}],returns:null},{name:"handleResizeLeft",docblock:null,modifiers:[],params:[{name:"e",type:null}],returns:null},{name:"handleResizeRight",docblock:null,modifiers:[],params:[{name:"e",type:null}],returns:null},{name:"handleStartDragging",docblock:null,modifiers:[],params:[{name:"e",type:null}],returns:null},{name:"renderAnchor",docblock:null,modifiers:[],params:[{name:"direction",type:null}],returns:null}],displayName:"EventWrapper",props:{type:{description:"",type:{name:"enum",value:[{value:"'date'",computed:!1},{value:"'time'",computed:!1}]},required:!1},event:{description:"",type:{name:"object"},required:!0},draggable:{description:"",type:{name:"bool"},required:!1},allDay:{description:"",type:{name:"bool"},required:!1},isRow:{description:"",type:{name:"bool"},required:!1},continuesPrior:{description:"",type:{name:"bool"},required:!1},continuesAfter:{description:"",type:{name:"bool"},required:!1},isDragging:{description:"",type:{name:"bool"},required:!1},isResizing:{description:"",type:{name:"bool"},required:!1},resource:{description:"",type:{name:"number"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1}}};var dragAndDrop_EventWrapper=EventWrapper;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/addons/dragAndDrop/EventWrapper.js"]={name:"EventWrapper",docgenInfo:EventWrapper.__docgenInfo,path:"src/addons/dragAndDrop/EventWrapper.js"});var esm=__webpack_require__("./node_modules/dom-helpers/esm/index.js"),querySelectorAll=__webpack_require__("./node_modules/dom-helpers/cjs/querySelectorAll.js"),querySelectorAll_default=__webpack_require__.n(querySelectorAll),Selection=__webpack_require__("./src/Selection.js"),TimeGridEvent=__webpack_require__("./src/TimeGridEvent.js"),_excluded=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/es.object.keys.js"),__webpack_require__("./node_modules/core-js/modules/web.dom-collections.for-each.js"),["children"]),dragAccessors={start:(0,accessors.C)((function(e){return e.start})),end:(0,accessors.C)((function(e){return e.end}))};function mergeComponents(){var components=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},addons=arguments.length>1?arguments[1]:void 0,keys=Object.keys(addons),result=Object.assign({},components);return keys.forEach((function(key){result[key]=components[key]?function nest(){for(var _len=arguments.length,Components=new Array(_len),_key=0;_key<_len;_key++)Components[_key]=arguments[_key];var factories=Components.filter(Boolean).map(react.createFactory);return function Nest(_ref){var children=_ref.children,props=(0,objectWithoutProperties.A)(_ref,_excluded);return factories.reduceRight((function(child,factory){return factory(props,child)}),children)}}(components[key],addons[key]):addons[key]})),result}function pointInColumn(bounds,point){var left=bounds.left,right=bounds.right,top=bounds.top,x=point.x,y=point.y;return xleft&&y>top}function eventTimes(event,accessors,localizer){var start=accessors.start(event),end=accessors.end(event);return localizer.eq(start,end,"minutes")&&0===localizer.diff(start,end,"minutes")&&(end=localizer.add(end,1,"day")),{start:start,end:end,duration:localizer.diff(start,end,"milliseconds")}}var EventContainerWrapper=function(_React$Component){function EventContainerWrapper(){var _this;(0,classCallCheck.default)(this,EventContainerWrapper);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,EventContainerWrapper,[].concat(args))).handleMove=function(point,bounds){if(!pointInColumn(bounds,point))return _this.reset();var event=_this.context.draggable.dragAndDropAction.event,_this$props=_this.props,accessors=_this$props.accessors,slotMetrics=_this$props.slotMetrics,newSlot=slotMetrics.closestSlotFromPoint({y:point.y-_this.eventOffsetTop,x:point.x},bounds),duration=eventTimes(event,accessors,_this.props.localizer).duration,newEnd=_this.props.localizer.add(newSlot,duration,"milliseconds");_this.update(event,slotMetrics.getRange(newSlot,newEnd,!1,!0))},_this.handleDropFromOutside=function(point,boundaryBox){var _this$props2=_this.props,slotMetrics=_this$props2.slotMetrics,resource=_this$props2.resource,start=slotMetrics.closestSlotFromPoint({y:point.y,x:point.x},boundaryBox);_this.context.draggable.onDropFromOutside({start:start,end:slotMetrics.nextSlot(start),allDay:!1,resource:resource})},_this.updateParentScroll=function(parent,node){setTimeout((function(){var draggedEl=querySelectorAll_default()(node,".rbc-addons-dnd-drag-preview")[0];draggedEl&&(draggedEl.offsetTopparent.scrollTop+parent.clientHeight&&(0,esm.F1)(parent,Math.min(draggedEl.offsetTop-parent.offsetHeight+draggedEl.offsetHeight,parent.scrollHeight)))}))},_this._selectable=function(){var wrapper=_this.ref.current,node=wrapper.children[0],isBeingDragged=!1,selector=_this._selector=new Selection.Ay((function(){return wrapper.closest(".rbc-time-view")})),parent=(0,esm.mi)(wrapper);selector.on("beforeSelect",(function(point){var dragAndDropAction=_this.context.draggable.dragAndDropAction;if(!dragAndDropAction.action)return!1;if("resize"===dragAndDropAction.action)return pointInColumn((0,Selection.rF)(node),point);var eventNode=(0,Selection.LP)(node,point);if(!eventNode)return!1;_this.eventOffsetTop=point.y-(0,Selection.rF)(eventNode).top})),selector.on("selecting",(function(box){var bounds=(0,Selection.rF)(node),dragAndDropAction=_this.context.draggable.dragAndDropAction;"move"===dragAndDropAction.action&&(_this.updateParentScroll(parent,node),_this.handleMove(box,bounds)),"resize"===dragAndDropAction.action&&(_this.updateParentScroll(parent,node),_this.handleResize(box,bounds))})),selector.on("dropFromOutside",(function(point){if(_this.context.draggable.onDropFromOutside){var bounds=(0,Selection.rF)(node);pointInColumn(bounds,point)&&_this.handleDropFromOutside(point,bounds)}})),selector.on("dragOver",(function(point){if(_this.context.draggable.dragFromOutsideItem){var bounds=(0,Selection.rF)(node);_this.handleDropFromOutside(point,bounds)}})),selector.on("selectStart",(function(){isBeingDragged=!0,_this.context.draggable.onStart()})),selector.on("select",(function(point){var bounds=(0,Selection.rF)(node);if(isBeingDragged=!1,"resize"===_this.context.draggable.dragAndDropAction.action)_this.handleInteractionEnd();else{if(!_this.state.event||!pointInColumn(bounds,point))return;_this.handleInteractionEnd()}})),selector.on("click",(function(){isBeingDragged&&_this.reset(),_this.context.draggable.onEnd(null)})),selector.on("reset",(function(){_this.reset(),_this.context.draggable.onEnd(null)}))},_this.handleInteractionEnd=function(){var resource=_this.props.resource,event=_this.state.event;_this.reset(),_this.context.draggable.onEnd({start:event.start,end:event.end,resourceId:resource})},_this._teardownSelectable=function(){_this._selector&&(_this._selector.teardown(),_this._selector=null)},_this.state={},_this.ref=react.createRef(),_this}return(0,inherits.default)(EventContainerWrapper,_React$Component),(0,createClass.default)(EventContainerWrapper,[{key:"componentDidMount",value:function componentDidMount(){this._selectable()}},{key:"componentWillUnmount",value:function componentWillUnmount(){this._teardownSelectable()}},{key:"reset",value:function reset(){this.state.event&&this.setState({event:null,top:null,height:null})}},{key:"update",value:function update(event,_ref){var startDate=_ref.startDate,endDate=_ref.endDate,top=_ref.top,height=_ref.height,lastEvent=this.state.event;lastEvent&&startDate===lastEvent.start&&endDate===lastEvent.end||this.setState({top:top,height:height,event:Object.assign({},event,{start:startDate,end:endDate})})}},{key:"handleResize",value:function handleResize(point,bounds){var newRange,_this$props3=this.props,accessors=_this$props3.accessors,slotMetrics=_this$props3.slotMetrics,localizer=_this$props3.localizer,_this$context$draggab=this.context.draggable.dragAndDropAction,event=_this$context$draggab.event,direction=_this$context$draggab.direction,newTime=slotMetrics.closestSlotFromPoint(point,bounds),_eventTimes2=eventTimes(event,accessors,localizer),start=_eventTimes2.start,end=_eventTimes2.end;if("UP"===direction){var newStart=localizer.min(newTime,slotMetrics.closestSlotFromDate(end,-1));newRange=slotMetrics.getRange(newStart,end),newRange=Object.assign({},newRange,{endDate:end})}else if("DOWN"===direction){var newEnd=localizer.max(newTime,slotMetrics.closestSlotFromDate(start));newRange=slotMetrics.getRange(start,newEnd),newRange=Object.assign({},newRange,{startDate:start})}this.update(event,newRange)}},{key:"renderContent",value:function renderContent(){var _this$props4=this.props,children=_this$props4.children,accessors=_this$props4.accessors,components=_this$props4.components,getters=_this$props4.getters,slotMetrics=_this$props4.slotMetrics,localizer=_this$props4.localizer,_this$state=this.state,event=_this$state.event,top=_this$state.top,height=_this$state.height;if(!event)return children;var label,events=children.props.children,start=event.start,end=event.end,format="eventTimeRangeFormat",startsBeforeDay=slotMetrics.startsBeforeDay(start),startsAfterDay=slotMetrics.startsAfterDay(end);return startsBeforeDay?format="eventTimeRangeEndFormat":startsAfterDay&&(format="eventTimeRangeStartFormat"),label=startsBeforeDay&&startsAfterDay?localizer.messages.allDay:localizer.format({start:start,end:end},format),react.cloneElement(children,{children:(0,jsx_runtime.jsxs)(react.Fragment,{children:[events,event&&(0,jsx_runtime.jsx)(TimeGridEvent.A,{event:event,label:label,className:"rbc-addons-dnd-drag-preview",style:{top:top,height:height,width:100},getters:getters,components:components,accessors:Object.assign({},accessors,dragAccessors),continuesPrior:startsBeforeDay,continuesAfter:startsAfterDay})]})})}},{key:"render",value:function render(){return(0,jsx_runtime.jsx)("div",{ref:this.ref,children:this.renderContent()})}}])}(react.Component);EventContainerWrapper.contextType=DnDContext,EventContainerWrapper.__docgenInfo={description:"",methods:[{name:"reset",docblock:null,modifiers:[],params:[],returns:null},{name:"update",docblock:null,modifiers:[],params:[{name:"event",type:null},{name:"{ startDate, endDate, top, height }",type:null}],returns:null},{name:"handleMove",docblock:null,modifiers:[],params:[{name:"point",type:null},{name:"bounds",type:null}],returns:null},{name:"handleResize",docblock:null,modifiers:[],params:[{name:"point",type:null},{name:"bounds",type:null}],returns:null},{name:"handleDropFromOutside",docblock:null,modifiers:[],params:[{name:"point",type:null},{name:"boundaryBox",type:null}],returns:null},{name:"updateParentScroll",docblock:null,modifiers:[],params:[{name:"parent",type:null},{name:"node",type:null}],returns:null},{name:"_selectable",docblock:null,modifiers:[],params:[],returns:null},{name:"handleInteractionEnd",docblock:null,modifiers:[],params:[],returns:null},{name:"_teardownSelectable",docblock:null,modifiers:[],params:[],returns:null},{name:"renderContent",docblock:null,modifiers:[],params:[],returns:null}],displayName:"EventContainerWrapper",props:{accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},slotMetrics:{description:"",type:{name:"object"},required:!0},resource:{description:"",type:{name:"any"},required:!1}}};var dragAndDrop_EventContainerWrapper=EventContainerWrapper;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/addons/dragAndDrop/EventContainerWrapper.js"]={name:"EventContainerWrapper",docgenInfo:EventContainerWrapper.__docgenInfo,path:"src/addons/dragAndDrop/EventContainerWrapper.js"});var toConsumableArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),EventRow=__webpack_require__("./src/EventRow.js"),eventLevels=__webpack_require__("./src/utils/eventLevels.js"),selection=__webpack_require__("./src/utils/selection.js"),WeekWrapper=function(_React$Component){function WeekWrapper(){var _this;(0,classCallCheck.default)(this,WeekWrapper);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,WeekWrapper,[].concat(args))).handleMove=function(point,bounds,draggedEvent){if(!(0,selection.bY)(bounds,point))return _this.reset();var event=_this.context.draggable.dragAndDropAction.event||draggedEvent,_this$props=_this.props,accessors=_this$props.accessors,slotMetrics=_this$props.slotMetrics,rtl=_this$props.rtl,localizer=_this$props.localizer,slot=(0,selection.sU)(bounds,point.x,rtl,slotMetrics.slots),date=slotMetrics.getDateForSlot(slot),_eventTimes=eventTimes(event,accessors,localizer),start=_eventTimes.start,duration=_eventTimes.duration;start=localizer.merge(date,start);var end=localizer.add(start,duration,"milliseconds");_this.update(event,start,end)},_this.handleDropFromOutside=function(point,bounds){if(_this.context.draggable.onDropFromOutside){var _this$props2=_this.props,slotMetrics=_this$props2.slotMetrics,rtl=_this$props2.rtl,localizer=_this$props2.localizer,slot=(0,selection.sU)(bounds,point.x,rtl,slotMetrics.slots),start=slotMetrics.getDateForSlot(slot);_this.context.draggable.onDropFromOutside({start:start,end:localizer.add(start,1,"day"),allDay:!1})}},_this.handleDragOverFromOutside=function(point,node){_this.context.draggable.dragFromOutsideItem&&_this.handleMove(point,node,_this.context.draggable.dragFromOutsideItem())},_this._selectable=function(){var node=_this.ref.current.closest(".rbc-month-row, .rbc-allday-cell"),container=node.closest(".rbc-month-view, .rbc-time-view"),isMonthRow=node.classList.contains("rbc-month-row"),selector=_this._selector=new Selection.Ay((function(){return container}),{validContainers:(0,toConsumableArray.A)(isMonthRow?[]:[".rbc-day-slot",".rbc-allday-cell"])});selector.on("beforeSelect",(function(point){var isAllDay=_this.props.isAllDay,action=_this.context.draggable.dragAndDropAction.action,bounds=(0,Selection.rF)(node),isInBox=(0,selection.bY)(bounds,point);return"move"===action||"resize"===action&&(!isAllDay||isInBox)})),selector.on("selecting",(function(box){var bounds=(0,Selection.rF)(node),dragAndDropAction=_this.context.draggable.dragAndDropAction;"move"===dragAndDropAction.action&&_this.handleMove(box,bounds),"resize"===dragAndDropAction.action&&_this.handleResize(box,bounds)})),selector.on("selectStart",(function(){return _this.context.draggable.onStart()})),selector.on("select",(function(point){var bounds=(0,Selection.rF)(node);_this.state.segment&&((0,selection.bY)(bounds,point)?_this.handleInteractionEnd():_this.reset())})),selector.on("dropFromOutside",(function(point){if(_this.context.draggable.onDropFromOutside){var bounds=(0,Selection.rF)(node);(0,selection.bY)(bounds,point)&&_this.handleDropFromOutside(point,bounds)}})),selector.on("dragOverFromOutside",(function(point){if(_this.context.draggable.dragFromOutsideItem){var bounds=(0,Selection.rF)(node);_this.handleDragOverFromOutside(point,bounds)}})),selector.on("click",(function(){return _this.context.draggable.onEnd(null)})),selector.on("reset",(function(){_this.reset(),_this.context.draggable.onEnd(null)}))},_this.handleInteractionEnd=function(){var _this$props3=_this.props,resourceId=_this$props3.resourceId,isAllDay=_this$props3.isAllDay,event=_this.state.segment.event;_this.reset(),_this.context.draggable.onEnd({start:event.start,end:event.end,resourceId:resourceId,isAllDay:isAllDay})},_this._teardownSelectable=function(){_this._selector&&(_this._selector.teardown(),_this._selector=null)},_this.state={},_this.ref=react.createRef(),_this}return(0,inherits.default)(WeekWrapper,_React$Component),(0,createClass.default)(WeekWrapper,[{key:"componentDidMount",value:function componentDidMount(){this._selectable()}},{key:"componentWillUnmount",value:function componentWillUnmount(){this._teardownSelectable()}},{key:"reset",value:function reset(){this.state.segment&&this.setState({segment:null})}},{key:"update",value:function update(event,start,end){var segment=(0,eventLevels.FA)(Object.assign({},event,{end:end,start:start,__isPreview:!0}),this.props.slotMetrics.range,dragAccessors,this.props.localizer),lastSegment=this.state.segment;lastSegment&&segment.span===lastSegment.span&&segment.left===lastSegment.left&&segment.right===lastSegment.right||this.setState({segment:segment})}},{key:"handleResize",value:function handleResize(point,bounds){var _this$context$draggab=this.context.draggable.dragAndDropAction,event=_this$context$draggab.event,direction=_this$context$draggab.direction,_this$props4=this.props,accessors=_this$props4.accessors,slotMetrics=_this$props4.slotMetrics,rtl=_this$props4.rtl,localizer=_this$props4.localizer,_eventTimes2=eventTimes(event,accessors,localizer),start=_eventTimes2.start,end=_eventTimes2.end,slot=(0,selection.sU)(bounds,point.x,rtl,slotMetrics.slots),date=slotMetrics.getDateForSlot(slot),cursorInRow=(0,selection.bY)(bounds,point);if("RIGHT"===direction){if(cursorInRow){if(slotMetrics.last+start))return void this.setState({segment:null});end=localizer.add(slotMetrics.last,1,"milliseconds")}var originalEnd=accessors.end(event);end=localizer.merge(end,originalEnd),localizer.lt(end,start)&&(end=originalEnd)}else if("LEFT"===direction){if(cursorInRow){if(slotMetrics.first>end)return this.reset();start=date}else{if(!(localizer.inRange(end,slotMetrics.first,slotMetrics.last)||bounds.top>point.y&&localizer.lt(slotMetrics.last,end)))return void this.reset();start=localizer.add(slotMetrics.first,-1,"milliseconds")}var originalStart=accessors.start(event);start=localizer.merge(start,originalStart),localizer.gt(start,end)&&(start=originalStart)}this.update(event,start,end)}},{key:"render",value:function render(){var _this$props5=this.props,children=_this$props5.children,accessors=_this$props5.accessors,segment=this.state.segment;return(0,jsx_runtime.jsxs)("div",{ref:this.ref,className:"rbc-addons-dnd-row-body",children:[children,segment&&(0,jsx_runtime.jsx)(EventRow.A,Object.assign({},this.props,{selected:null,className:"rbc-addons-dnd-drag-row",segments:[segment],accessors:Object.assign({},accessors,dragAccessors)}))]})}}])}(react.Component);WeekWrapper.contextType=DnDContext,WeekWrapper.__docgenInfo={description:"",methods:[{name:"reset",docblock:null,modifiers:[],params:[],returns:null},{name:"update",docblock:null,modifiers:[],params:[{name:"event",type:null},{name:"start",type:null},{name:"end",type:null}],returns:null},{name:"handleMove",docblock:null,modifiers:[],params:[{name:"point",type:null},{name:"bounds",type:null},{name:"draggedEvent",type:null}],returns:null},{name:"handleDropFromOutside",docblock:null,modifiers:[],params:[{name:"point",type:null},{name:"bounds",type:null}],returns:null},{name:"handleDragOverFromOutside",docblock:null,modifiers:[],params:[{name:"point",type:null},{name:"node",type:null}],returns:null},{name:"handleResize",docblock:null,modifiers:[],params:[{name:"point",type:null},{name:"bounds",type:null}],returns:null},{name:"_selectable",docblock:null,modifiers:[],params:[],returns:null},{name:"handleInteractionEnd",docblock:null,modifiers:[],params:[],returns:null},{name:"_teardownSelectable",docblock:null,modifiers:[],params:[],returns:null}],displayName:"WeekWrapper",props:{isAllDay:{description:"",type:{name:"bool"},required:!1},slotMetrics:{description:"",type:{name:"object"},required:!0},accessors:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},resourceId:{description:"",type:{name:"any"},required:!1},rtl:{description:"",type:{name:"bool"},required:!1},localizer:{description:"",type:{name:"any"},required:!1}}};var dragAndDrop_WeekWrapper=WeekWrapper;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/addons/dragAndDrop/WeekWrapper.js"]={name:"WeekWrapper",docgenInfo:WeekWrapper.__docgenInfo,path:"src/addons/dragAndDrop/WeekWrapper.js"});var withDragAndDrop_excluded=["selectable","elementProps","components"];var dragAndDrop=function withDragAndDrop(Calendar){var DragAndDropCalendar=function(_React$Component){function DragAndDropCalendar(){var _this;(0,classCallCheck.default)(this,DragAndDropCalendar);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,DragAndDropCalendar,[].concat(args))).defaultOnDragOver=function(event){event.preventDefault()},_this.handleBeginAction=function(event,action,direction){_this.setState({event:event,action:action,direction:direction});var onDragStart=_this.props.onDragStart;onDragStart&&onDragStart({event:event,action:action,direction:direction})},_this.handleInteractionStart=function(){!1===_this.state.interacting&&_this.setState({interacting:!0})},_this.handleInteractionEnd=function(interactionInfo){var _this$state=_this.state,action=_this$state.action,event=_this$state.event;if(action&&(_this.setState({action:null,event:null,interacting:!1,direction:null}),null!=interactionInfo)){interactionInfo.event=event;var _this$props=_this.props,onEventDrop=_this$props.onEventDrop,onEventResize=_this$props.onEventResize;"move"===action&&onEventDrop&&onEventDrop(interactionInfo),"resize"===action&&onEventResize&&onEventResize(interactionInfo)}},_this.state={interacting:!1},_this}return(0,inherits.default)(DragAndDropCalendar,_React$Component),(0,createClass.default)(DragAndDropCalendar,[{key:"getDnDContextValue",value:function getDnDContextValue(){return{draggable:{onStart:this.handleInteractionStart,onEnd:this.handleInteractionEnd,onBeginAction:this.handleBeginAction,onDropFromOutside:this.props.onDropFromOutside,dragFromOutsideItem:this.props.dragFromOutsideItem,draggableAccessor:this.props.draggableAccessor,resizableAccessor:this.props.resizableAccessor,dragAndDropAction:this.state}}}},{key:"render",value:function render(){var _this$props2=this.props,selectable=_this$props2.selectable,elementProps=_this$props2.elementProps,components=_this$props2.components,props=(0,objectWithoutProperties.A)(_this$props2,withDragAndDrop_excluded),interacting=this.state.interacting;delete props.onEventDrop,delete props.onEventResize,props.selectable=!!selectable&&"ignoreEvents",this.components=mergeComponents(components,{eventWrapper:dragAndDrop_EventWrapper,eventContainerWrapper:dragAndDrop_EventContainerWrapper,weekWrapper:dragAndDrop_WeekWrapper});var elementPropsWithDropFromOutside=this.props.onDropFromOutside?Object.assign({},elementProps,{onDragOver:this.props.onDragOver||this.defaultOnDragOver}):elementProps;props.className=(0,clsx_m.A)(props.className,"rbc-addons-dnd",!!interacting&&"rbc-addons-dnd-is-dragging");var context=this.getDnDContextValue();return(0,jsx_runtime.jsx)(DnDContext.Provider,{value:context,children:(0,jsx_runtime.jsx)(Calendar,Object.assign({},props,{elementProps:elementPropsWithDropFromOutside,components:this.components}))})}}])}(react.Component);return DragAndDropCalendar.defaultProps=Object.assign({},Calendar.defaultProps,{draggableAccessor:null,resizableAccessor:null,resizable:!0}),DragAndDropCalendar}},"./src/index.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{Vv:function(){return src_Calendar},C5:function(){return constants.o},Pp:function(){return constants.l},vH:function(){return dayjs},fk:function(){return globalize},AW:function(){return luxon},ye:function(){return moment}});var NoopWrapper=__webpack_require__("./src/NoopWrapper.js"),BackgroundWrapper=(NoopWrapper.A,__webpack_require__("./src/BackgroundWrapper.js")),objectWithoutProperties=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),classCallCheck=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/classCallCheck.js"),createClass=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/createClass.js"),callSuper=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/callSuper.js"),inherits=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/inherits.js"),slicedToArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react=(__webpack_require__("./node_modules/core-js/modules/es.object.entries.js"),__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.object.keys.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),esm=__webpack_require__("./node_modules/uncontrollable/lib/esm/index.js"),clsx_m=__webpack_require__("./node_modules/clsx/dist/clsx.m.js"),helpers=(__webpack_require__("./src/utils/propTypes.js"),__webpack_require__("./src/utils/helpers.js")),constants=__webpack_require__("./src/utils/constants.js"),prop_types=__webpack_require__("./node_modules/prop-types/index.js"),prop_types_default=__webpack_require__.n(prop_types),browser=__webpack_require__("./node_modules/invariant/browser.js"),browser_default=__webpack_require__.n(browser),dates=__webpack_require__("./src/utils/dates.js"),localePropType=prop_types_default().oneOfType([prop_types_default().string,prop_types_default().func]);function _format(localizer,formatter,value,format,culture){var result="function"==typeof format?format(value,culture,localizer):formatter.call(localizer,value,format,culture);return browser_default()(null==result||"string"==typeof result,"`localizer format(..)` must return a string, null, or undefined"),result}function getSlotDate(dt,minutesFromMidnight,offset){return new Date(dt.getFullYear(),dt.getMonth(),dt.getDate(),0,minutesFromMidnight+offset,0,0)}function getDstOffset(start,end){return start.getTimezoneOffset()-end.getTimezoneOffset()}function getTotalMin(start,end){return(0,dates.Ui)(start,end,"minutes")+getDstOffset(start,end)}function getMinutesFromMidnight(start){var daystart=(0,dates.GH)(start,"day");return(0,dates.Ui)(daystart,start,"minutes")+getDstOffset(daystart,start)}function continuesPrior(start,first){return(0,dates.lt)(start,first,"day")}function continuesAfter(start,end,last){return(0,dates.eq)(start,end,"minutes")?(0,dates.RO)(end,last,"minutes"):(0,dates.gt)(end,last,"minutes")}function daySpan(start,end){return(0,dates.p0)(start,end,"day")}function sortEvents(_ref){var _ref$evtA=_ref.evtA,aStart=_ref$evtA.start,aEnd=_ref$evtA.end,aAllDay=_ref$evtA.allDay,_ref$evtB=_ref.evtB,bStart=_ref$evtB.start,bEnd=_ref$evtB.end,bAllDay=_ref$evtB.allDay,startSort=+(0,dates.GH)(aStart,"day")-+(0,dates.GH)(bStart,"day"),durA=daySpan(aStart,aEnd),durB=daySpan(bStart,bEnd);return startSort||durB-durA||!!bAllDay-!!aAllDay||+aStart-+bStart||+aEnd-+bEnd}function inEventRange(_ref2){var _ref2$event=_ref2.event,start=_ref2$event.start,end=_ref2$event.end,_ref2$range=_ref2.range,rangeStart=_ref2$range.start,rangeEnd=_ref2$range.end,eStart=(0,dates.GH)(start,"day"),startsBeforeEnd=(0,dates.wJ)(eStart,rangeEnd,"day"),endsAfterStart=(0,dates.t7)(eStart,end,"minutes")?(0,dates.gt)(end,rangeStart,"minutes"):(0,dates.RO)(end,rangeStart,"minutes");return startsBeforeEnd&&endsAfterStart}function isSameDate(date1,date2){return(0,dates.eq)(date1,date2,"day")}function startAndEndAreDateOnly(start,end){return(0,dates.pR)(start)&&(0,dates.pR)(end)}var localizer_DateLocalizer=(0,createClass.default)((function DateLocalizer(spec){var _this=this;(0,classCallCheck.default)(this,DateLocalizer),browser_default()("function"==typeof spec.format,"date localizer `format(..)` must be a function"),browser_default()("function"==typeof spec.firstOfWeek,"date localizer `firstOfWeek(..)` must be a function"),this.propType=spec.propType||localePropType,this.formats=spec.formats,this.format=function(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return _format.apply(void 0,[_this,spec.format].concat(args))},this.startOfWeek=spec.firstOfWeek,this.merge=spec.merge||dates.h1,this.inRange=spec.inRange||dates.r4,this.lt=spec.lt||dates.lt,this.lte=spec.lte||dates.wJ,this.gt=spec.gt||dates.gt,this.gte=spec.gte||dates.RO,this.eq=spec.eq||dates.eq,this.neq=spec.neq||dates.t7,this.startOf=spec.startOf||dates.GH,this.endOf=spec.endOf||dates.pJ,this.add=spec.add||dates.WQ,this.range=spec.range||dates.y1,this.diff=spec.diff||dates.Ui,this.ceil=spec.ceil||dates.mk,this.min=spec.min||dates.jk,this.max=spec.max||dates.T9,this.minutes=spec.minutes||dates.Gx,this.daySpan=spec.daySpan||daySpan,this.firstVisibleDay=spec.firstVisibleDay||dates.tk,this.lastVisibleDay=spec.lastVisibleDay||dates.Jo,this.visibleDays=spec.visibleDays||dates.IC,this.getSlotDate=spec.getSlotDate||getSlotDate,this.getTimezoneOffset=spec.getTimezoneOffset||function(value){return value.getTimezoneOffset()},this.getDstOffset=spec.getDstOffset||getDstOffset,this.getTotalMin=spec.getTotalMin||getTotalMin,this.getMinutesFromMidnight=spec.getMinutesFromMidnight||getMinutesFromMidnight,this.continuesPrior=spec.continuesPrior||continuesPrior,this.continuesAfter=spec.continuesAfter||continuesAfter,this.sortEvents=spec.sortEvents||sortEvents,this.inEventRange=spec.inEventRange||inEventRange,this.isSameDate=spec.isSameDate||isSameDate,this.startAndEndAreDateOnly=spec.startAndEndAreDateOnly||startAndEndAreDateOnly,this.segmentOffset=spec.browserTZOffset?spec.browserTZOffset():0}));function mergeWithDefaults(localizer,culture,formatOverrides,messages){var formats=Object.assign({},localizer.formats,formatOverrides);return Object.assign({},localizer,{messages:messages,startOfWeek:function startOfWeek(){return localizer.startOfWeek(culture)},format:function format(value,_format2){return localizer.format(value,formats[_format2]||_format2,culture)}})}var defaultMessages={date:"Date",time:"Time",event:"Event",allDay:"All Day",week:"Week",work_week:"Work Week",day:"Day",month:"Month",previous:"Back",next:"Next",yesterday:"Yesterday",tomorrow:"Tomorrow",today:"Today",agenda:"Agenda",noEventsInRange:"There are no events in this range.",showMore:function showMore(total){return"+".concat(total," more")}};var defineProperty=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/defineProperty.js"),toConsumableArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),chunk=(__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.array.slice.js"),__webpack_require__("./node_modules/core-js/modules/es.array.sort.js"),__webpack_require__("./node_modules/lodash/chunk.js")),chunk_default=__webpack_require__.n(chunk),esm_position=__webpack_require__("./node_modules/dom-helpers/esm/position.js"),animationFrame=__webpack_require__("./node_modules/dom-helpers/esm/animationFrame.js"),PopOverlay=__webpack_require__("./src/PopOverlay.js"),DateContentRow=__webpack_require__("./src/DateContentRow.js"),Header=__webpack_require__("./src/Header.js"),jsx_runtime=__webpack_require__("./node_modules/react/jsx-runtime.js"),DateHeader=function DateHeader(_ref){var label=_ref.label,drilldownView=_ref.drilldownView,onDrillDown=_ref.onDrillDown;return drilldownView?(0,jsx_runtime.jsx)("button",{type:"button",className:"rbc-button-link",onClick:onDrillDown,role:"cell",children:label}):(0,jsx_runtime.jsx)("span",{children:label})};DateHeader.displayName="DateHeader",DateHeader.__docgenInfo={description:"",methods:[],displayName:"DateHeader",props:{label:{description:"",type:{name:"node"},required:!1},date:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},drilldownView:{description:"",type:{name:"string"},required:!1},onDrillDown:{description:"",type:{name:"func"},required:!1},isOffRange:{description:"",type:{name:"bool"},required:!1}}};var src_DateHeader=DateHeader;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/DateHeader.js"]={name:"DateHeader",docgenInfo:DateHeader.__docgenInfo,path:"src/DateHeader.js"});var eventLevels=__webpack_require__("./src/utils/eventLevels.js"),_excluded=["date","className"],MonthView=function(_React$Component){function MonthView(){var _this;(0,classCallCheck.default)(this,MonthView);for(var _len=arguments.length,_args=new Array(_len),_key=0;_key<_len;_key++)_args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,MonthView,[].concat(_args))).getContainer=function(){return _this.containerRef.current},_this.renderWeek=function(week,weekIdx){var _this$props=_this.props,events=_this$props.events,components=_this$props.components,selectable=_this$props.selectable,getNow=_this$props.getNow,selected=_this$props.selected,date=_this$props.date,localizer=_this$props.localizer,longPressThreshold=_this$props.longPressThreshold,accessors=_this$props.accessors,getters=_this$props.getters,showAllEvents=_this$props.showAllEvents,_this$state=_this.state,needLimitMeasure=_this$state.needLimitMeasure,rowLimit=_this$state.rowLimit,weeksEvents=function eventsForWeek(evts,start,end,accessors,localizer){return evts.filter((function(e){return(0,eventLevels.r4)(e,start,end,accessors,localizer)}))}((0,toConsumableArray.A)(events),week[0],week[week.length-1],accessors,localizer),sorted=(0,eventLevels.SY)(weeksEvents,accessors,localizer);return(0,jsx_runtime.jsx)(DateContentRow.A,{ref:0===weekIdx?_this.slotRowRef:void 0,container:_this.getContainer,className:"rbc-month-row",getNow:getNow,date:date,range:week,events:sorted,maxRows:showAllEvents?1/0:rowLimit,selected:selected,selectable:selectable,components:components,accessors:accessors,getters:getters,localizer:localizer,renderHeader:_this.readerDateHeading,renderForMeasure:needLimitMeasure,onShowMore:_this.handleShowMore,onSelect:_this.handleSelectEvent,onDoubleClick:_this.handleDoubleClickEvent,onKeyPress:_this.handleKeyPressEvent,onSelectSlot:_this.handleSelectSlot,longPressThreshold:longPressThreshold,rtl:_this.props.rtl,resizable:_this.props.resizable,showAllEvents:showAllEvents},weekIdx)},_this.readerDateHeading=function(_ref){var date=_ref.date,className=_ref.className,props=(0,objectWithoutProperties.A)(_ref,_excluded),_this$props2=_this.props,currentDate=_this$props2.date,getDrilldownView=_this$props2.getDrilldownView,localizer=_this$props2.localizer,isOffRange=localizer.neq(date,currentDate,"month"),isCurrent=localizer.isSameDate(date,currentDate),drilldownView=getDrilldownView(date),label=localizer.format(date,"dateFormat"),DateHeaderComponent=_this.props.components.dateHeader||src_DateHeader;return(0,jsx_runtime.jsx)("div",Object.assign({},props,{className:(0,clsx_m.A)(className,isOffRange&&"rbc-off-range",isCurrent&&"rbc-current"),role:"cell",children:(0,jsx_runtime.jsx)(DateHeaderComponent,{label:label,date:date,drilldownView:drilldownView,isOffRange:isOffRange,onDrillDown:function onDrillDown(e){return _this.handleHeadingClick(date,drilldownView,e)}})}))},_this.handleSelectSlot=function(range,slotInfo){_this._pendingSelection=_this._pendingSelection.concat(range),clearTimeout(_this._selectTimer),_this._selectTimer=setTimeout((function(){return _this.selectDates(slotInfo)}))},_this.handleHeadingClick=function(date,view,e){e.preventDefault(),_this.clearSelection(),(0,helpers.me)(_this.props.onDrillDown,[date,view])},_this.handleSelectEvent=function(){_this.clearSelection();for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++)args[_key2]=arguments[_key2];(0,helpers.me)(_this.props.onSelectEvent,args)},_this.handleDoubleClickEvent=function(){_this.clearSelection();for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++)args[_key3]=arguments[_key3];(0,helpers.me)(_this.props.onDoubleClickEvent,args)},_this.handleKeyPressEvent=function(){_this.clearSelection();for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++)args[_key4]=arguments[_key4];(0,helpers.me)(_this.props.onKeyPressEvent,args)},_this.handleShowMore=function(events,date,cell,slot,target){var _this$props3=_this.props,popup=_this$props3.popup,onDrillDown=_this$props3.onDrillDown,onShowMore=_this$props3.onShowMore,getDrilldownView=_this$props3.getDrilldownView,doShowMoreDrillDown=_this$props3.doShowMoreDrillDown;if(_this.clearSelection(),popup){var position=(0,esm_position.A)(cell,_this.containerRef.current);_this.setState({overlay:{date:date,events:events,position:position,target:target}})}else doShowMoreDrillDown&&(0,helpers.me)(onDrillDown,[date,getDrilldownView(date)||constants.l.DAY]);(0,helpers.me)(onShowMore,[events,date,slot])},_this.overlayDisplay=function(){_this.setState({overlay:null})},_this.state={rowLimit:5,needLimitMeasure:!0,date:null},_this.containerRef=(0,react.createRef)(),_this.slotRowRef=(0,react.createRef)(),_this._bgRows=[],_this._pendingSelection=[],_this}return(0,inherits.default)(MonthView,_React$Component),(0,createClass.default)(MonthView,[{key:"componentDidMount",value:function componentDidMount(){var running,_this2=this;this.state.needLimitMeasure&&this.measureRowLimit(this.props),window.addEventListener("resize",this._resizeListener=function(){running||animationFrame.E((function(){running=!1,_this2.setState({needLimitMeasure:!0})}))},!1)}},{key:"componentDidUpdate",value:function componentDidUpdate(){this.state.needLimitMeasure&&this.measureRowLimit(this.props)}},{key:"componentWillUnmount",value:function componentWillUnmount(){window.removeEventListener("resize",this._resizeListener,!1)}},{key:"render",value:function render(){var _this$props4=this.props,date=_this$props4.date,localizer=_this$props4.localizer,className=_this$props4.className,month=localizer.visibleDays(date,localizer),weeks=chunk_default()(month,7);return this._weekCount=weeks.length,(0,jsx_runtime.jsxs)("div",{className:(0,clsx_m.A)("rbc-month-view",className),role:"table","aria-label":"Month View",ref:this.containerRef,children:[(0,jsx_runtime.jsx)("div",{className:"rbc-row rbc-month-header",role:"row",children:this.renderHeaders(weeks[0])}),weeks.map(this.renderWeek),this.props.popup&&this.renderOverlay()]})}},{key:"renderHeaders",value:function renderHeaders(row){var _this$props5=this.props,localizer=_this$props5.localizer,components=_this$props5.components,first=row[0],last=row[row.length-1],HeaderComponent=components.header||Header.A;return localizer.range(first,last,"day").map((function(day,idx){return(0,jsx_runtime.jsx)("div",{className:"rbc-header",children:(0,jsx_runtime.jsx)(HeaderComponent,{date:day,localizer:localizer,label:localizer.format(day,"weekdayFormat")})},"header_"+idx)}))}},{key:"renderOverlay",value:function renderOverlay(){var _this$state$overlay,_this$state2,_this3=this,overlay=null!==(_this$state$overlay=null===(_this$state2=this.state)||void 0===_this$state2?void 0:_this$state2.overlay)&&void 0!==_this$state$overlay?_this$state$overlay:{},_this$props6=this.props,accessors=_this$props6.accessors,localizer=_this$props6.localizer,components=_this$props6.components,getters=_this$props6.getters,selected=_this$props6.selected,popupOffset=_this$props6.popupOffset,handleDragStart=_this$props6.handleDragStart;return(0,jsx_runtime.jsx)(PopOverlay.A,{overlay:overlay,accessors:accessors,localizer:localizer,components:components,getters:getters,selected:selected,popupOffset:popupOffset,ref:this.containerRef,handleKeyPressEvent:this.handleKeyPressEvent,handleSelectEvent:this.handleSelectEvent,handleDoubleClickEvent:this.handleDoubleClickEvent,handleDragStart:handleDragStart,show:!!overlay.position,overlayDisplay:this.overlayDisplay,onHide:function onHide(){return _this3.setState({overlay:null})}})}},{key:"measureRowLimit",value:function measureRowLimit(){this.setState({needLimitMeasure:!1,rowLimit:this.slotRowRef.current.getRowLimit()})}},{key:"selectDates",value:function selectDates(slotInfo){var slots=this._pendingSelection.slice();this._pendingSelection=[],slots.sort((function(a,b){return+a-+b}));var start=new Date(slots[0]),end=new Date(slots[slots.length-1]);end.setDate(slots[slots.length-1].getDate()+1),(0,helpers.me)(this.props.onSelectSlot,{slots:slots,start:start,end:end,action:slotInfo.action,bounds:slotInfo.bounds,box:slotInfo.box})}},{key:"clearSelection",value:function clearSelection(){clearTimeout(this._selectTimer),this._pendingSelection=[]}}],[{key:"getDerivedStateFromProps",value:function getDerivedStateFromProps(_ref2,state){var date=_ref2.date;return{date:date,needLimitMeasure:_ref2.localizer.neq(date,state.date,"month")}}}])}(react.Component);MonthView.range=function(date,_ref3){var localizer=_ref3.localizer;return{start:localizer.firstVisibleDay(date,localizer),end:localizer.lastVisibleDay(date,localizer)}},MonthView.navigate=function(date,action,_ref4){var localizer=_ref4.localizer;switch(action){case constants.o.PREVIOUS:return localizer.add(date,-1,"month");case constants.o.NEXT:return localizer.add(date,1,"month");default:return date}},MonthView.title=function(date,_ref5){return _ref5.localizer.format(date,"monthHeaderFormat")},MonthView.__docgenInfo={description:"",methods:[{name:"getContainer",docblock:null,modifiers:[],params:[],returns:null},{name:"renderWeek",docblock:null,modifiers:[],params:[{name:"week",type:null},{name:"weekIdx",type:null}],returns:null},{name:"readerDateHeading",docblock:null,modifiers:[],params:[{name:"{ date, className, ...props }",type:null}],returns:null},{name:"renderHeaders",docblock:null,modifiers:[],params:[{name:"row",type:null}],returns:null},{name:"renderOverlay",docblock:null,modifiers:[],params:[],returns:null},{name:"measureRowLimit",docblock:null,modifiers:[],params:[],returns:null},{name:"handleSelectSlot",docblock:null,modifiers:[],params:[{name:"range",type:null},{name:"slotInfo",type:null}],returns:null},{name:"handleHeadingClick",docblock:null,modifiers:[],params:[{name:"date",type:null},{name:"view",type:null},{name:"e",type:null}],returns:null},{name:"handleSelectEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleDoubleClickEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleKeyPressEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleShowMore",docblock:null,modifiers:[],params:[{name:"events",type:null},{name:"date",type:null},{name:"cell",type:null},{name:"slot",type:null},{name:"target",type:null}],returns:null},{name:"overlayDisplay",docblock:null,modifiers:[],params:[],returns:null},{name:"selectDates",docblock:null,modifiers:[],params:[{name:"slotInfo",type:null}],returns:null},{name:"clearSelection",docblock:null,modifiers:[],params:[],returns:null},{name:"range",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null},{name:"navigate",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"action",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null},{name:"title",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null}],displayName:"MonthView",props:{events:{description:"",type:{name:"array"},required:!0},date:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},min:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},max:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},step:{description:"",type:{name:"number"},required:!1},getNow:{description:"",type:{name:"func"},required:!0},scrollToTime:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},enableAutoScroll:{description:"",type:{name:"bool"},required:!1},rtl:{description:"",type:{name:"bool"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1},width:{description:"",type:{name:"number"},required:!1},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},selected:{description:"",type:{name:"object"},required:!1},selectable:{description:"",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},longPressThreshold:{description:"",type:{name:"number"},required:!1},onNavigate:{description:"",type:{name:"func"},required:!1},onSelectSlot:{description:"",type:{name:"func"},required:!1},onSelectEvent:{description:"",type:{name:"func"},required:!1},onDoubleClickEvent:{description:"",type:{name:"func"},required:!1},onKeyPressEvent:{description:"",type:{name:"func"},required:!1},onShowMore:{description:"",type:{name:"func"},required:!1},showAllEvents:{description:"",type:{name:"bool"},required:!1},doShowMoreDrillDown:{description:"",type:{name:"bool"},required:!1},onDrillDown:{description:"",type:{name:"func"},required:!1},getDrilldownView:{description:"",type:{name:"func"},required:!0},popup:{description:"",type:{name:"bool"},required:!1},handleDragStart:{description:"",type:{name:"func"},required:!1},popupOffset:{description:"",type:{name:"union",value:[{name:"number"},{name:"shape",value:{x:{name:"number",required:!1},y:{name:"number",required:!1}}}]},required:!1}}};var Month=MonthView;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/Month.js"]={name:"MonthView",docgenInfo:MonthView.__docgenInfo,path:"src/Month.js"});var TimeGrid=__webpack_require__("./src/TimeGrid.js"),Day_excluded=["date","localizer","min","max","scrollToTime","enableAutoScroll"],Day=function(_React$Component){function Day(){return(0,classCallCheck.default)(this,Day),(0,callSuper.default)(this,Day,arguments)}return(0,inherits.default)(Day,_React$Component),(0,createClass.default)(Day,[{key:"render",value:function render(){var _this$props=this.props,date=_this$props.date,localizer=_this$props.localizer,_this$props$min=_this$props.min,min=void 0===_this$props$min?localizer.startOf(new Date,"day"):_this$props$min,_this$props$max=_this$props.max,max=void 0===_this$props$max?localizer.endOf(new Date,"day"):_this$props$max,_this$props$scrollToT=_this$props.scrollToTime,scrollToTime=void 0===_this$props$scrollToT?localizer.startOf(new Date,"day"):_this$props$scrollToT,_this$props$enableAut=_this$props.enableAutoScroll,enableAutoScroll=void 0===_this$props$enableAut||_this$props$enableAut,props=(0,objectWithoutProperties.A)(_this$props,Day_excluded),range=Day.range(date,{localizer:localizer});return(0,jsx_runtime.jsx)(TimeGrid.A,Object.assign({},props,{range:range,eventOffset:10,localizer:localizer,min:min,max:max,scrollToTime:scrollToTime,enableAutoScroll:enableAutoScroll}))}}])}(react.Component);Day.range=function(date,_ref){return[_ref.localizer.startOf(date,"day")]},Day.navigate=function(date,action,_ref2){var localizer=_ref2.localizer;switch(action){case constants.o.PREVIOUS:return localizer.add(date,-1,"day");case constants.o.NEXT:return localizer.add(date,1,"day");default:return date}},Day.title=function(date,_ref3){return _ref3.localizer.format(date,"dayHeaderFormat")},Day.__docgenInfo={description:"",methods:[{name:"range",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null},{name:"navigate",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"action",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null},{name:"title",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null}],displayName:"Day",props:{date:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},events:{description:"",type:{name:"array"},required:!0},backgroundEvents:{description:"",type:{name:"array"},required:!0},resources:{description:"",type:{name:"array"},required:!1},step:{description:"",type:{name:"number"},required:!1},timeslots:{description:"",type:{name:"number"},required:!1},range:{description:"",type:{name:"arrayOf",value:{name:"instanceOf",value:"Date"}},required:!1},min:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},max:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},getNow:{description:"",type:{name:"func"},required:!0},scrollToTime:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},enableAutoScroll:{description:"",type:{name:"bool"},required:!1},showMultiDayTimes:{description:"",type:{name:"bool"},required:!1},rtl:{description:"",type:{name:"bool"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1},width:{description:"",type:{name:"number"},required:!1},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},allDayMaxRows:{description:"",type:{name:"number"},required:!1},selected:{description:"",type:{name:"object"},required:!1},selectable:{description:"",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},longPressThreshold:{description:"",type:{name:"number"},required:!1},onNavigate:{description:"",type:{name:"func"},required:!1},onSelectSlot:{description:"",type:{name:"func"},required:!1},onSelectEnd:{description:"",type:{name:"func"},required:!1},onSelectStart:{description:"",type:{name:"func"},required:!1},onSelectEvent:{description:"",type:{name:"func"},required:!1},onDoubleClickEvent:{description:"",type:{name:"func"},required:!1},onKeyPressEvent:{description:"",type:{name:"func"},required:!1},onShowMore:{description:"",type:{name:"func"},required:!1},onDrillDown:{description:"",type:{name:"func"},required:!1},getDrilldownView:{description:"",type:{name:"func"},required:!0},dayLayoutAlgorithm:{description:"",type:{name:"custom",raw:"DayLayoutAlgorithmPropType"},required:!1},showAllEvents:{description:"",type:{name:"bool"},required:!1},doShowMoreDrillDown:{description:"",type:{name:"bool"},required:!1},popup:{description:"",type:{name:"bool"},required:!1},handleDragStart:{description:"",type:{name:"func"},required:!1},popupOffset:{description:"",type:{name:"union",value:[{name:"number"},{name:"shape",value:{x:{name:"number",required:!1},y:{name:"number",required:!1}}}]},required:!1}}};var src_Day=Day;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/Day.js"]={name:"Day",docgenInfo:Day.__docgenInfo,path:"src/Day.js"});var toArray=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toArray.js"),Week_excluded=["date","localizer","min","max","scrollToTime","enableAutoScroll"],Week=function(_React$Component){function Week(){return(0,classCallCheck.default)(this,Week),(0,callSuper.default)(this,Week,arguments)}return(0,inherits.default)(Week,_React$Component),(0,createClass.default)(Week,[{key:"render",value:function render(){var _this$props=this.props,date=_this$props.date,localizer=_this$props.localizer,_this$props$min=_this$props.min,min=void 0===_this$props$min?localizer.startOf(new Date,"day"):_this$props$min,_this$props$max=_this$props.max,max=void 0===_this$props$max?localizer.endOf(new Date,"day"):_this$props$max,_this$props$scrollToT=_this$props.scrollToTime,scrollToTime=void 0===_this$props$scrollToT?localizer.startOf(new Date,"day"):_this$props$scrollToT,_this$props$enableAut=_this$props.enableAutoScroll,enableAutoScroll=void 0===_this$props$enableAut||_this$props$enableAut,props=(0,objectWithoutProperties.A)(_this$props,Week_excluded),range=Week.range(date,this.props);return(0,jsx_runtime.jsx)(TimeGrid.A,Object.assign({},props,{range:range,eventOffset:15,localizer:localizer,min:min,max:max,scrollToTime:scrollToTime,enableAutoScroll:enableAutoScroll}))}}])}(react.Component);Week.defaultProps=TimeGrid.A.defaultProps,Week.navigate=function(date,action,_ref){var localizer=_ref.localizer;switch(action){case constants.o.PREVIOUS:return localizer.add(date,-1,"week");case constants.o.NEXT:return localizer.add(date,1,"week");default:return date}},Week.range=function(date,_ref2){var localizer=_ref2.localizer,firstOfWeek=localizer.startOfWeek(),start=localizer.startOf(date,"week",firstOfWeek),end=localizer.endOf(date,"week",firstOfWeek);return localizer.range(start,end)},Week.title=function(date,_ref3){var localizer=_ref3.localizer,_Week$range=Week.range(date,{localizer:localizer}),_Week$range2=(0,toArray.A)(_Week$range),start=_Week$range2[0],rest=_Week$range2.slice(1);return localizer.format({start:start,end:rest.pop()},"dayRangeHeaderFormat")},Week.__docgenInfo={description:"",methods:[{name:"navigate",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"action",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null},{name:"range",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null},{name:"title",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null}],displayName:"Week",props:{date:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},events:{description:"",type:{name:"array"},required:!0},backgroundEvents:{description:"",type:{name:"array"},required:!0},resources:{description:"",type:{name:"array"},required:!1},step:{description:"",type:{name:"number"},required:!1},timeslots:{description:"",type:{name:"number"},required:!1},range:{description:"",type:{name:"arrayOf",value:{name:"instanceOf",value:"Date"}},required:!1},min:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},max:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},getNow:{description:"",type:{name:"func"},required:!0},scrollToTime:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},enableAutoScroll:{description:"",type:{name:"bool"},required:!1},showMultiDayTimes:{description:"",type:{name:"bool"},required:!1},rtl:{description:"",type:{name:"bool"},required:!1},resizable:{description:"",type:{name:"bool"},required:!1},width:{description:"",type:{name:"number"},required:!1},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},allDayMaxRows:{description:"",type:{name:"number"},required:!1},selected:{description:"",type:{name:"object"},required:!1},selectable:{description:"",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},longPressThreshold:{description:"",type:{name:"number"},required:!1},onNavigate:{description:"",type:{name:"func"},required:!1},onSelectSlot:{description:"",type:{name:"func"},required:!1},onSelectEnd:{description:"",type:{name:"func"},required:!1},onSelectStart:{description:"",type:{name:"func"},required:!1},onSelectEvent:{description:"",type:{name:"func"},required:!1},onDoubleClickEvent:{description:"",type:{name:"func"},required:!1},onKeyPressEvent:{description:"",type:{name:"func"},required:!1},onShowMore:{description:"",type:{name:"func"},required:!1},onDrillDown:{description:"",type:{name:"func"},required:!1},getDrilldownView:{description:"",type:{name:"func"},required:!0},dayLayoutAlgorithm:{description:"",type:{name:"custom",raw:"DayLayoutAlgorithmPropType"},required:!1},showAllEvents:{description:"",type:{name:"bool"},required:!1},doShowMoreDrillDown:{description:"",type:{name:"bool"},required:!1},popup:{description:"",type:{name:"bool"},required:!1},handleDragStart:{description:"",type:{name:"func"},required:!1},popupOffset:{description:"",type:{name:"union",value:[{name:"number"},{name:"shape",value:{x:{name:"number",required:!1},y:{name:"number",required:!1}}}]},required:!1}}};var src_Week=Week;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/Week.js"]={name:"Week",docgenInfo:Week.__docgenInfo,path:"src/Week.js"});var WorkWeek_excluded=["date","localizer","min","max","scrollToTime","enableAutoScroll"];function workWeekRange(date,options){return src_Week.range(date,options).filter((function(d){return-1===[6,0].indexOf(d.getDay())}))}var WorkWeek=function(_React$Component){function WorkWeek(){return(0,classCallCheck.default)(this,WorkWeek),(0,callSuper.default)(this,WorkWeek,arguments)}return(0,inherits.default)(WorkWeek,_React$Component),(0,createClass.default)(WorkWeek,[{key:"render",value:function render(){var _this$props=this.props,date=_this$props.date,localizer=_this$props.localizer,_this$props$min=_this$props.min,min=void 0===_this$props$min?localizer.startOf(new Date,"day"):_this$props$min,_this$props$max=_this$props.max,max=void 0===_this$props$max?localizer.endOf(new Date,"day"):_this$props$max,_this$props$scrollToT=_this$props.scrollToTime,scrollToTime=void 0===_this$props$scrollToT?localizer.startOf(new Date,"day"):_this$props$scrollToT,_this$props$enableAut=_this$props.enableAutoScroll,enableAutoScroll=void 0===_this$props$enableAut||_this$props$enableAut,props=(0,objectWithoutProperties.A)(_this$props,WorkWeek_excluded),range=workWeekRange(date,this.props);return(0,jsx_runtime.jsx)(TimeGrid.A,Object.assign({},props,{range:range,eventOffset:15,localizer:localizer,min:min,max:max,scrollToTime:scrollToTime,enableAutoScroll:enableAutoScroll}))}}])}(react.Component);WorkWeek.defaultProps=TimeGrid.A.defaultProps,WorkWeek.range=workWeekRange,WorkWeek.navigate=src_Week.navigate,WorkWeek.title=function(date,_ref){var localizer=_ref.localizer,_workWeekRange=workWeekRange(date,{localizer:localizer}),_workWeekRange2=(0,toArray.A)(_workWeekRange),start=_workWeekRange2[0],rest=_workWeekRange2.slice(1);return localizer.format({start:start,end:rest.pop()},"dayRangeHeaderFormat")},WorkWeek.__docgenInfo={description:"",methods:[{name:"title",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"{ localizer }",type:null}],returns:null}],displayName:"WorkWeek",props:{date:{description:"",type:{name:"instanceOf",value:"Date"},required:!0},localizer:{description:"",type:{name:"any"},required:!1},min:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},max:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},scrollToTime:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},enableAutoScroll:{description:"",type:{name:"bool"},required:!1}}};var src_WorkWeek=WorkWeek;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/WorkWeek.js"]={name:"WorkWeek",docgenInfo:WorkWeek.__docgenInfo,path:"src/WorkWeek.js"});__webpack_require__("./node_modules/core-js/modules/es.string.trim.js");var addClass=__webpack_require__("./node_modules/dom-helpers/esm/addClass.js"),removeClass=__webpack_require__("./node_modules/dom-helpers/esm/removeClass.js"),width=__webpack_require__("./node_modules/dom-helpers/esm/width.js"),scrollbarSize=__webpack_require__("./node_modules/dom-helpers/esm/scrollbarSize.js"),selection=__webpack_require__("./src/utils/selection.js");function Agenda(_ref){var accessors=_ref.accessors,components=_ref.components,date=_ref.date,events=_ref.events,getters=_ref.getters,_ref$length=_ref.length,length=void 0===_ref$length?30:_ref$length,localizer=_ref.localizer,onDoubleClickEvent=_ref.onDoubleClickEvent,onSelectEvent=_ref.onSelectEvent,selected=_ref.selected,headerRef=(0,react.useRef)(null),dateColRef=(0,react.useRef)(null),timeColRef=(0,react.useRef)(null),contentRef=(0,react.useRef)(null),tbodyRef=(0,react.useRef)(null);(0,react.useEffect)((function(){_adjustHeader()}));var timeRangeLabel=function timeRangeLabel(day,event){var labelClass="",TimeComponent=components.time,label=localizer.messages.allDay,end=accessors.end(event),start=accessors.start(event);return accessors.allDay(event)||(localizer.eq(start,end)?label=localizer.format(start,"agendaTimeFormat"):localizer.isSameDate(start,end)?label=localizer.format({start:start,end:end},"agendaTimeRangeFormat"):localizer.isSameDate(day,start)?label=localizer.format(start,"agendaTimeFormat"):localizer.isSameDate(day,end)&&(label=localizer.format(end,"agendaTimeFormat"))),localizer.gt(day,start,"day")&&(labelClass="rbc-continues-prior"),localizer.lt(day,end,"day")&&(labelClass+=" rbc-continues-after"),(0,jsx_runtime.jsx)("span",{className:labelClass.trim(),children:TimeComponent?(0,jsx_runtime.jsx)(TimeComponent,{event:event,day:day,label:label}):label})},_adjustHeader=function _adjustHeader(){if(tbodyRef.current){var header=headerRef.current,firstRow=tbodyRef.current.firstChild;if(firstRow){var isOverflowing=contentRef.current.scrollHeight>contentRef.current.clientHeight,_widths=[],widths=_widths;_widths=[(0,width.A)(firstRow.children[0]),(0,width.A)(firstRow.children[1])],widths[0]===_widths[0]&&widths[1]===_widths[1]||(dateColRef.current.style.width=_widths[0]+"px",timeColRef.current.style.width=_widths[1]+"px"),isOverflowing?((0,addClass.A)(header,"rbc-header-overflowing"),header.style.marginRight=(0,scrollbarSize.A)()+"px"):(0,removeClass.A)(header,"rbc-header-overflowing")}}},messages=localizer.messages,end=localizer.add(date,length,"day"),range=localizer.range(date,end,"day");return(events=events.filter((function(event){return(0,eventLevels.r4)(event,localizer.startOf(date,"day"),localizer.endOf(end,"day"),accessors,localizer)}))).sort((function(a,b){return+accessors.start(a)-+accessors.start(b)})),(0,jsx_runtime.jsx)("div",{className:"rbc-agenda-view",children:0!==events.length?(0,jsx_runtime.jsxs)(react.Fragment,{children:[(0,jsx_runtime.jsx)("table",{ref:headerRef,className:"rbc-agenda-table",children:(0,jsx_runtime.jsx)("thead",{children:(0,jsx_runtime.jsxs)("tr",{children:[(0,jsx_runtime.jsx)("th",{className:"rbc-header",ref:dateColRef,children:messages.date}),(0,jsx_runtime.jsx)("th",{className:"rbc-header",ref:timeColRef,children:messages.time}),(0,jsx_runtime.jsx)("th",{className:"rbc-header",children:messages.event})]})})}),(0,jsx_runtime.jsx)("div",{className:"rbc-agenda-content",ref:contentRef,children:(0,jsx_runtime.jsx)("table",{className:"rbc-agenda-table",children:(0,jsx_runtime.jsx)("tbody",{ref:tbodyRef,children:range.map((function(day,idx){return function renderDay(day,events,dayKey){var Event=components.event,AgendaDate=components.date;return(events=events.filter((function(e){return(0,eventLevels.r4)(e,localizer.startOf(day,"day"),localizer.endOf(day,"day"),accessors,localizer)}))).map((function(event,idx){var title=accessors.title(event),end=accessors.end(event),start=accessors.start(event),userProps=getters.eventProp(event,start,end,(0,selection.sp)(event,selected)),dateLabel=0===idx&&localizer.format(day,"agendaDateFormat"),first=0===idx&&(0,jsx_runtime.jsx)("td",{rowSpan:events.length,className:"rbc-agenda-date-cell",children:AgendaDate?(0,jsx_runtime.jsx)(AgendaDate,{day:day,label:dateLabel}):dateLabel});return(0,jsx_runtime.jsxs)("tr",{className:userProps.className,style:userProps.style,children:[first,(0,jsx_runtime.jsx)("td",{className:"rbc-agenda-time-cell",children:timeRangeLabel(day,event)}),(0,jsx_runtime.jsx)("td",{className:"rbc-agenda-event-cell",onClick:function onClick(e){return onSelectEvent&&onSelectEvent(event,e)},onDoubleClick:function onDoubleClick(e){return onDoubleClickEvent&&onDoubleClickEvent(event,e)},children:Event?(0,jsx_runtime.jsx)(Event,{event:event,title:title}):title})]},dayKey+"_"+idx)}),[])}(day,events,idx)}))})})})]}):(0,jsx_runtime.jsx)("span",{className:"rbc-agenda-empty",children:messages.noEventsInRange})})}Agenda.displayName="Agenda",Agenda.range=function(start,_ref2){var _ref2$length=_ref2.length,length=void 0===_ref2$length?30:_ref2$length;return{start:start,end:_ref2.localizer.add(start,length,"day")}},Agenda.navigate=function(date,action,_ref3){var _ref3$length=_ref3.length,length=void 0===_ref3$length?30:_ref3$length,localizer=_ref3.localizer;switch(action){case constants.o.PREVIOUS:return localizer.add(date,-length,"day");case constants.o.NEXT:return localizer.add(date,length,"day");default:return date}},Agenda.title=function(start,_ref4){var _ref4$length=_ref4.length,length=void 0===_ref4$length?30:_ref4$length,localizer=_ref4.localizer,end=localizer.add(start,length,"day");return localizer.format({start:start,end:end},"agendaHeaderFormat")},Agenda.__docgenInfo={description:"",methods:[{name:"range",docblock:null,modifiers:["static"],params:[{name:"start",optional:!1,type:null},{name:"{ length = DEFAULT_LENGTH, localizer }",type:null}],returns:null},{name:"navigate",docblock:null,modifiers:["static"],params:[{name:"date",optional:!1,type:null},{name:"action",optional:!1,type:null},{name:"{ length = DEFAULT_LENGTH, localizer }",type:null}],returns:null},{name:"title",docblock:null,modifiers:["static"],params:[{name:"start",optional:!1,type:null},{name:"{ length = DEFAULT_LENGTH, localizer }",type:null}],returns:null}],displayName:"Agenda",props:{length:{defaultValue:{value:"30",computed:!1},description:"",type:{name:"number"},required:!1},accessors:{description:"",type:{name:"object"},required:!0},components:{description:"",type:{name:"object"},required:!0},date:{description:"",type:{name:"instanceOf",value:"Date"},required:!1},events:{description:"",type:{name:"array"},required:!1},getters:{description:"",type:{name:"object"},required:!0},localizer:{description:"",type:{name:"object"},required:!0},onSelectEvent:{description:"",type:{name:"func"},required:!1},onDoubleClickEvent:{description:"",type:{name:"func"},required:!1},selected:{description:"",type:{name:"object"},required:!1}}};var src_Agenda=Agenda;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/Agenda.js"]={name:"Agenda",docgenInfo:Agenda.__docgenInfo,path:"src/Agenda.js"});var Views=(0,defineProperty.A)((0,defineProperty.A)((0,defineProperty.A)((0,defineProperty.A)((0,defineProperty.A)({},constants.l.MONTH,Month),constants.l.WEEK,src_Week),constants.l.WORK_WEEK,src_WorkWeek),constants.l.DAY,src_Day),constants.l.AGENDA,src_Agenda),move_excluded=["action","date","today"];var Toolbar=function(_React$Component){function Toolbar(){var _this;(0,classCallCheck.default)(this,Toolbar);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,Toolbar,[].concat(args))).navigate=function(action){_this.props.onNavigate(action)},_this.view=function(view){_this.props.onView(view)},_this}return(0,inherits.default)(Toolbar,_React$Component),(0,createClass.default)(Toolbar,[{key:"render",value:function render(){var _this$props=this.props,messages=_this$props.localizer.messages,label=_this$props.label;return(0,jsx_runtime.jsxs)("div",{className:"rbc-toolbar",children:[(0,jsx_runtime.jsxs)("span",{className:"rbc-btn-group",children:[(0,jsx_runtime.jsx)("button",{type:"button",onClick:this.navigate.bind(null,constants.o.TODAY),children:messages.today}),(0,jsx_runtime.jsx)("button",{type:"button",onClick:this.navigate.bind(null,constants.o.PREVIOUS),children:messages.previous}),(0,jsx_runtime.jsx)("button",{type:"button",onClick:this.navigate.bind(null,constants.o.NEXT),children:messages.next})]}),(0,jsx_runtime.jsx)("span",{className:"rbc-toolbar-label",children:label}),(0,jsx_runtime.jsx)("span",{className:"rbc-btn-group",children:this.viewNamesGroup(messages)})]})}},{key:"viewNamesGroup",value:function viewNamesGroup(messages){var _this2=this,viewNames=this.props.views,view=this.props.view;if(viewNames.length>1)return viewNames.map((function(name){return(0,jsx_runtime.jsx)("button",{type:"button",className:(0,clsx_m.A)({"rbc-active":view===name}),onClick:_this2.view.bind(null,name),children:messages[name]},name)}))}}])}(react.Component);Toolbar.__docgenInfo={description:"",methods:[{name:"navigate",docblock:null,modifiers:[],params:[{name:"action",type:null}],returns:null},{name:"view",docblock:null,modifiers:[],params:[{name:"view",type:null}],returns:null},{name:"viewNamesGroup",docblock:null,modifiers:[],params:[{name:"messages",type:null}],returns:null}],displayName:"Toolbar",props:{view:{description:"",type:{name:"string"},required:!0},views:{description:"",type:{name:"arrayOf",value:{name:"string"}},required:!0},label:{description:"",type:{name:"node"},required:!0},localizer:{description:"",type:{name:"object"},required:!1},onNavigate:{description:"",type:{name:"func"},required:!0},onView:{description:"",type:{name:"func"},required:!0}}};var src_Toolbar=Toolbar;"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/Toolbar.js"]={name:"Toolbar",docgenInfo:Toolbar.__docgenInfo,path:"src/Toolbar.js"});var omit=__webpack_require__("./node_modules/lodash/omit.js"),omit_default=__webpack_require__.n(omit),defaults=__webpack_require__("./node_modules/lodash/defaults.js"),defaults_default=__webpack_require__.n(defaults),transform=__webpack_require__("./node_modules/lodash/transform.js"),transform_default=__webpack_require__.n(transform),mapValues=__webpack_require__("./node_modules/lodash/mapValues.js"),mapValues_default=__webpack_require__.n(mapValues),accessors=__webpack_require__("./src/utils/accessors.js"),Calendar_excluded=["view","date","getNow","onNavigate"],_excluded2=["view","toolbar","events","backgroundEvents","style","className","elementProps","date","getNow","length","showMultiDayTimes","onShowMore","doShowMoreDrillDown","components","formats","messages","culture"];function viewNames(_views){if(Array.isArray(_views))return _views;for(var views=[],_i=0,_Object$entries=Object.entries(_views);_i<_Object$entries.length;_i++){var _ref=_Object$entries[_i],_ref2=(0,slicedToArray.A)(_ref,2),key=_ref2[0];_ref2[1]&&views.push(key)}return views}var Calendar=function(_React$Component){function Calendar(){var _this;(0,classCallCheck.default)(this,Calendar);for(var _len=arguments.length,_args=new Array(_len),_key=0;_key<_len;_key++)_args[_key]=arguments[_key];return(_this=(0,callSuper.default)(this,Calendar,[].concat(_args))).getViews=function(){var views=_this.props.views;return Array.isArray(views)?transform_default()(views,(function(obj,name){return obj[name]=Views[name]}),{}):"object"==typeof views?mapValues_default()(views,(function(value,key){return!0===value?Views[key]:value})):Views},_this.getView=function(){return _this.getViews()[_this.props.view]},_this.getDrilldownView=function(date){var _this$props=_this.props,view=_this$props.view,drilldownView=_this$props.drilldownView,getDrilldownView=_this$props.getDrilldownView;return getDrilldownView?getDrilldownView(date,view,Object.keys(_this.getViews())):drilldownView},_this.handleRangeChange=function(date,viewComponent,view){var _this$props2=_this.props,onRangeChange=_this$props2.onRangeChange,localizer=_this$props2.localizer;onRangeChange&&viewComponent.range&&onRangeChange(viewComponent.range(date,{localizer:localizer}),view)},_this.handleNavigate=function(action,newDate){var _this$props3=_this.props,view=_this$props3.view,date=_this$props3.date,getNow=_this$props3.getNow,onNavigate=_this$props3.onNavigate,props=(0,objectWithoutProperties.A)(_this$props3,Calendar_excluded),ViewComponent=_this.getView(),today=getNow();date=function moveDate(View,_ref){var action=_ref.action,date=_ref.date,today=_ref.today,props=(0,objectWithoutProperties.A)(_ref,move_excluded);switch(View="string"==typeof View?Views[View]:View,action){case constants.o.TODAY:date=today||new Date;break;case constants.o.DATE:break;default:browser_default()(View&&"function"==typeof View.navigate,"Calendar View components must implement a static `.navigate(date, action)` method.s"),date=View.navigate(date,action,props)}return date}(ViewComponent,Object.assign({},props,{action:action,date:newDate||date||today,today:today})),onNavigate(date,view,action),_this.handleRangeChange(date,ViewComponent)},_this.handleViewChange=function(view){view!==_this.props.view&&function isValidView(view,_ref3){return-1!==viewNames(_ref3.views).indexOf(view)}(view,_this.props)&&_this.props.onView(view);var views=_this.getViews();_this.handleRangeChange(_this.props.date||_this.props.getNow(),views[view],view)},_this.handleSelectEvent=function(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++)args[_key2]=arguments[_key2];(0,helpers.me)(_this.props.onSelectEvent,args)},_this.handleDoubleClickEvent=function(){for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++)args[_key3]=arguments[_key3];(0,helpers.me)(_this.props.onDoubleClickEvent,args)},_this.handleKeyPressEvent=function(){for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++)args[_key4]=arguments[_key4];(0,helpers.me)(_this.props.onKeyPressEvent,args)},_this.handleSelectSlot=function(slotInfo){(0,helpers.me)(_this.props.onSelectSlot,slotInfo)},_this.handleDrillDown=function(date,view){var onDrillDown=_this.props.onDrillDown;onDrillDown?onDrillDown(date,view,_this.drilldownView):(view&&_this.handleViewChange(view),_this.handleNavigate(constants.o.DATE,date))},_this.state={context:Calendar.getContext(_this.props)},_this}return(0,inherits.default)(Calendar,_React$Component),(0,createClass.default)(Calendar,[{key:"render",value:function render(){var _this$props4=this.props,view=_this$props4.view,toolbar=_this$props4.toolbar,events=_this$props4.events,backgroundEvents=_this$props4.backgroundEvents,style=_this$props4.style,className=_this$props4.className,elementProps=_this$props4.elementProps,current=_this$props4.date,getNow=_this$props4.getNow,length=_this$props4.length,showMultiDayTimes=_this$props4.showMultiDayTimes,onShowMore=_this$props4.onShowMore,doShowMoreDrillDown=_this$props4.doShowMoreDrillDown,props=(_this$props4.components,_this$props4.formats,_this$props4.messages,_this$props4.culture,(0,objectWithoutProperties.A)(_this$props4,_excluded2));current=current||getNow();var View=this.getView(),_this$state$context=this.state.context,accessors=_this$state$context.accessors,components=_this$state$context.components,getters=_this$state$context.getters,localizer=_this$state$context.localizer,viewNames=_this$state$context.viewNames,CalToolbar=components.toolbar||src_Toolbar,label=View.title(current,{localizer:localizer,length:length});return(0,jsx_runtime.jsxs)("div",Object.assign({},elementProps,{className:(0,clsx_m.A)(className,"rbc-calendar",props.rtl&&"rbc-rtl"),style:style,children:[toolbar&&(0,jsx_runtime.jsx)(CalToolbar,{date:current,view:view,views:viewNames,label:label,onView:this.handleViewChange,onNavigate:this.handleNavigate,localizer:localizer}),(0,jsx_runtime.jsx)(View,Object.assign({},props,{events:events,backgroundEvents:backgroundEvents,date:current,getNow:getNow,length:length,localizer:localizer,getters:getters,components:components,accessors:accessors,showMultiDayTimes:showMultiDayTimes,getDrilldownView:this.getDrilldownView,onNavigate:this.handleNavigate,onDrillDown:this.handleDrillDown,onSelectEvent:this.handleSelectEvent,onDoubleClickEvent:this.handleDoubleClickEvent,onKeyPressEvent:this.handleKeyPressEvent,onSelectSlot:this.handleSelectSlot,onShowMore:onShowMore,doShowMoreDrillDown:doShowMoreDrillDown}))]}))}}],[{key:"getDerivedStateFromProps",value:function getDerivedStateFromProps(nextProps){return{context:Calendar.getContext(nextProps)}}},{key:"getContext",value:function getContext(_ref4){var startAccessor=_ref4.startAccessor,endAccessor=_ref4.endAccessor,allDayAccessor=_ref4.allDayAccessor,tooltipAccessor=_ref4.tooltipAccessor,titleAccessor=_ref4.titleAccessor,resourceAccessor=_ref4.resourceAccessor,resourceIdAccessor=_ref4.resourceIdAccessor,resourceTitleAccessor=_ref4.resourceTitleAccessor,eventPropGetter=_ref4.eventPropGetter,backgroundEventPropGetter=_ref4.backgroundEventPropGetter,slotPropGetter=_ref4.slotPropGetter,slotGroupPropGetter=_ref4.slotGroupPropGetter,dayPropGetter=_ref4.dayPropGetter,view=_ref4.view,views=_ref4.views,localizer=_ref4.localizer,culture=_ref4.culture,_ref4$messages=_ref4.messages,messages=void 0===_ref4$messages?{}:_ref4$messages,_ref4$components=_ref4.components,components=void 0===_ref4$components?{}:_ref4$components,_ref4$formats=_ref4.formats,formats=void 0===_ref4$formats?{}:_ref4$formats,names=viewNames(views);return{viewNames:names,localizer:mergeWithDefaults(localizer,culture,formats,function messages_messages(msgs){return Object.assign({},defaultMessages,msgs)}(messages)),getters:{eventProp:function eventProp(){return eventPropGetter&&eventPropGetter.apply(void 0,arguments)||{}},backgroundEventProp:function backgroundEventProp(){return backgroundEventPropGetter&&backgroundEventPropGetter.apply(void 0,arguments)||{}},slotProp:function slotProp(){return slotPropGetter&&slotPropGetter.apply(void 0,arguments)||{}},slotGroupProp:function slotGroupProp(){return slotGroupPropGetter&&slotGroupPropGetter.apply(void 0,arguments)||{}},dayProp:function dayProp(){return dayPropGetter&&dayPropGetter.apply(void 0,arguments)||{}}},components:defaults_default()(components[view]||{},omit_default()(components,names),{eventWrapper:NoopWrapper.A,backgroundEventWrapper:NoopWrapper.A,eventContainerWrapper:NoopWrapper.A,dateCellWrapper:NoopWrapper.A,weekWrapper:NoopWrapper.A,timeSlotWrapper:NoopWrapper.A,timeGutterWrapper:NoopWrapper.A}),accessors:{start:(0,accessors.C)(startAccessor),end:(0,accessors.C)(endAccessor),allDay:(0,accessors.C)(allDayAccessor),tooltip:(0,accessors.C)(tooltipAccessor),title:(0,accessors.C)(titleAccessor),resource:(0,accessors.C)(resourceAccessor),resourceId:(0,accessors.C)(resourceIdAccessor),resourceTitle:(0,accessors.C)(resourceTitleAccessor)}}}}])}(react.Component);Calendar.defaultProps={events:[],backgroundEvents:[],elementProps:{},popup:!1,toolbar:!0,view:constants.l.MONTH,views:[constants.l.MONTH,constants.l.WEEK,constants.l.DAY,constants.l.AGENDA],step:30,length:30,allDayMaxRows:1/0,doShowMoreDrillDown:!0,drilldownView:constants.l.DAY,titleAccessor:"title",tooltipAccessor:"title",allDayAccessor:"allDay",startAccessor:"start",endAccessor:"end",resourceAccessor:"resourceId",resourceIdAccessor:"id",resourceTitleAccessor:"title",longPressThreshold:250,getNow:function getNow(){return new Date},dayLayoutAlgorithm:"overlap"},Calendar.__docgenInfo={description:"",methods:[{name:"getContext",docblock:null,modifiers:["static"],params:[{name:"{\n startAccessor,\n endAccessor,\n allDayAccessor,\n tooltipAccessor,\n titleAccessor,\n resourceAccessor,\n resourceIdAccessor,\n resourceTitleAccessor,\n eventPropGetter,\n backgroundEventPropGetter,\n slotPropGetter,\n slotGroupPropGetter,\n dayPropGetter,\n view,\n views,\n localizer,\n culture,\n messages = {},\n components = {},\n formats = {},\n}",type:null}],returns:null},{name:"getViews",docblock:null,modifiers:[],params:[],returns:null},{name:"getView",docblock:null,modifiers:[],params:[],returns:null},{name:"getDrilldownView",docblock:null,modifiers:[],params:[{name:"date",type:null}],returns:null},{name:"handleRangeChange",docblock:"@param date\n@param viewComponent\n@param {'month'|'week'|'work_week'|'day'|'agenda'} [view] - optional\nparameter. It appears when range change on view changing. It could be handy\nwhen you need to have both: range and view type at once, i.e. for manage rbc\nstate via url",modifiers:[],params:[{name:"date",description:null,type:null,optional:!1},{name:"viewComponent",description:null,type:null,optional:!1},{name:"view"}],returns:null,description:null},{name:"handleNavigate",docblock:null,modifiers:[],params:[{name:"action",type:null},{name:"newDate",type:null}],returns:null},{name:"handleViewChange",docblock:null,modifiers:[],params:[{name:"view",type:null}],returns:null},{name:"handleSelectEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleDoubleClickEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleKeyPressEvent",docblock:null,modifiers:[],params:[{name:"...args",type:null}],returns:null},{name:"handleSelectSlot",docblock:null,modifiers:[],params:[{name:"slotInfo",type:null}],returns:null},{name:"handleDrillDown",docblock:null,modifiers:[],params:[{name:"date",type:null},{name:"view",type:null}],returns:null}],displayName:"Calendar",props:{events:{defaultValue:{value:"[]",computed:!1},description:'An array of event objects to display on the calendar. Events objects\ncan be any shape, as long as the Calendar knows how to retrieve the\nfollowing details of the event:\n\n - start time\n - end time\n - title\n - whether its an "all day" event or not\n - any resource the event may be related to\n\nEach of these properties can be customized or generated dynamically by\nsetting the various "accessor" props. Without any configuration the default\nevent should look like:\n\n```js\nEvent {\n title: string,\n start: Date,\n end: Date,\n allDay?: boolean\n resource?: any,\n}\n```',type:{name:"arrayOf",value:{name:"object"}},required:!1},backgroundEvents:{defaultValue:{value:"[]",computed:!1},description:'An array of background event objects to display on the calendar. Background\nEvents behave similarly to Events but are not factored into Event overlap logic,\nallowing them to sit behind any Events that may occur during the same period.\nBackground Events objects can be any shape, as long as the Calendar knows how to\nretrieve the following details of the event:\n\n - start time\n - end time\n\nEach of these properties can be customized or generated dynamically by\nsetting the various "accessor" props. Without any configuration the default\nevent should look like:\n\n```js\nBackgroundEvent {\n start: Date,\n end: Date,\n}\n```',type:{name:"arrayOf",value:{name:"object"}},required:!1},elementProps:{defaultValue:{value:"{}",computed:!1},description:"Props passed to main calendar `
`.",type:{name:"object"},required:!1},popup:{defaultValue:{value:"false",computed:!1},description:'Show truncated events in an overlay when you click the "+_x_ more" link.',type:{name:"bool"},required:!1},toolbar:{defaultValue:{value:"true",computed:!1},description:"Determines whether the toolbar is displayed",type:{name:"bool"},required:!1},view:{defaultValue:{value:"views.MONTH",computed:!0},description:"The current view of the calendar.\n\n@default 'month'\n@controllable onView",type:{name:"string"},required:!1},views:{defaultValue:{value:"[views.MONTH, views.WEEK, views.DAY, views.AGENDA]",computed:!1},description:"An array of built-in view names to allow the calendar to display.\naccepts either an array of builtin view names,\n\n```jsx\nviews={['month', 'day', 'agenda']}\n```\nor an object hash of the view name and the component (or boolean for builtin).\n\n```jsx\nviews={{\n month: true,\n week: false,\n myweek: WorkWeekViewComponent,\n}}\n```\n\nCustom views can be any React component, that implements the following\ninterface:\n\n```js\ninterface View {\n static title(date: Date, { formats: DateFormat[], culture: string?, ...props }): string\n static navigate(date: Date, action: 'PREV' | 'NEXT' | 'DATE'): Date\n}\n```\n\n@type Views ('month'|'week'|'work_week'|'day'|'agenda')\n@View\n ['month', 'week', 'day', 'agenda']",type:{name:"custom",raw:"componentViews"},required:!1},step:{defaultValue:{value:"30",computed:!1},description:"Determines the selectable time increments in week and day views, in minutes.",type:{name:"number"},required:!1},length:{defaultValue:{value:"30",computed:!1},description:"Determines the end date from date prop in the agenda view\ndate prop + length (in number of days) = end date",type:{name:"number"},required:!1},allDayMaxRows:{defaultValue:{value:"Infinity",computed:!0},description:"Determines a maximum amount of rows of events to display in the all day\nsection for Week and Day views, will display `showMore` button if\nevents excede this number.\n\nDefaults to `Infinity`",type:{name:"number"},required:!1},doShowMoreDrillDown:{defaultValue:{value:"true",computed:!1},description:'Determines whether the drill down should occur when clicking on the "+_x_ more" link.\nIf `popup` is false, and `doShowMoreDrillDown` is true, the drill down will occur as usual.\nIf `popup` is false, and `doShowMoreDrillDown` is false, the drill down will not occur and the `onShowMore` function will trigger.',type:{name:"bool"},required:!1},drilldownView:{defaultValue:{value:"views.DAY",computed:!0},description:'The string name of the destination view for drill-down actions, such\nas clicking a date header, or the truncated events links. If\n`getDrilldownView` is also specified it will be used instead.\n\nSet to `null` to disable drill-down actions.\n\n```js\n\n```',type:{name:"string"},required:!1},titleAccessor:{defaultValue:{value:"'title'",computed:!1},description:"Accessor for the event title, used to display event information. Should\nresolve to a `renderable` value.\n\n```js\nstring | (event: Object) => string\n```\n\n@type {(func|string)}",type:{name:"custom",raw:"accessor"},required:!1},tooltipAccessor:{defaultValue:{value:"'title'",computed:!1},description:"Accessor for the event tooltip. Should\nresolve to a `renderable` value. Removes the tooltip if null.\n\n```js\nstring | (event: Object) => string\n```\n\n@type {(func|string)}",type:{name:"custom",raw:"accessor"},required:!1},allDayAccessor:{defaultValue:{value:"'allDay'",computed:!1},description:'Determines whether the event should be considered an "all day" event and ignore time.\nMust resolve to a `boolean` value.\n\n```js\nstring | (event: Object) => boolean\n```\n\n@type {(func|string)}',type:{name:"custom",raw:"accessor"},required:!1},startAccessor:{defaultValue:{value:"'start'",computed:!1},description:"The start date/time of the event. Must resolve to a JavaScript `Date` object.\n\n```js\nstring | (event: Object) => Date\n```\n\n@type {(func|string)}",type:{name:"custom",raw:"accessor"},required:!1},endAccessor:{defaultValue:{value:"'end'",computed:!1},description:"The end date/time of the event. Must resolve to a JavaScript `Date` object.\n\n```js\nstring | (event: Object) => Date\n```\n\n@type {(func|string)}",type:{name:"custom",raw:"accessor"},required:!1},resourceAccessor:{defaultValue:{value:"'resourceId'",computed:!1},description:"Returns the id of the `resource` that the event is a member of. This\nid should match at least one resource in the `resources` array.\n\n```js\nstring | (event: Object) => Date\n```\n\n@type {(func|string)}",type:{name:"custom",raw:"accessor"},required:!1},resourceIdAccessor:{defaultValue:{value:"'id'",computed:!1},description:"Provides a unique identifier, or an array of unique identifiers, for each resource in the `resources` array\n\n```js\nstring | (resource: Object) => any\n```\n\n@type {(func|string)}",type:{name:"custom",raw:"accessor"},required:!1},resourceTitleAccessor:{defaultValue:{value:"'title'",computed:!1},description:"Provides a human readable name for the resource object, used in headers.\n\n```js\nstring | (resource: Object) => any\n```\n\n@type {(func|string)}",type:{name:"custom",raw:"accessor"},required:!1},longPressThreshold:{defaultValue:{value:"250",computed:!1},description:'Specifies the number of milliseconds the user must press and hold on the screen for a touch\nto be considered a "long press." Long presses are used for time slot selection on touch\ndevices.\n\n@type {number}\n@default 250',type:{name:"number"},required:!1},getNow:{defaultValue:{value:"() => new Date()",computed:!1},description:"Determines the current date/time which is highlighted in the views.\n\nThe value affects which day is shaded and which time is shown as\nthe current time. It also affects the date used by the Today button in\nthe toolbar.\n\nProviding a value here can be useful when you are implementing time zones\nusing the `startAccessor` and `endAccessor` properties.\n\n@type {func}\n@default () => new Date()",type:{name:"func"},required:!1},dayLayoutAlgorithm:{defaultValue:{value:"'overlap'",computed:!1},description:"A day event layout(arrangement) algorithm.\n\n`overlap` allows events to be overlapped.\n\n`no-overlap` resizes events to avoid overlap.\n\nor custom `Function(events, minimumStartDifference, slotMetrics, accessors)`",type:{name:"custom",raw:"DayLayoutAlgorithmPropType"},required:!1},localizer:{description:"The localizer used for formatting dates and times according to the `format` and `culture`\n\nglobalize\n```js\nimport {globalizeLocalizer} from 'react-big-calendar'\nimport globalize from 'globalize'\n\nconst localizer = globalizeLocalizer(globalize)\n```\nmoment\n``js\nimport {momentLocalizer} from 'react-big-calendar'\nimport moment from 'moment'\n// and, for optional time zone support\nimport 'moment-timezone'\n\nmoment.tz.setDefault('America/Los_Angeles')\n// end optional time zone support\n\nconst localizer = momentLocalizer(moment)\n```\n\nLuxon\n```js\nimport {luxonLocalizer} from 'react-big-calendar'\nimport {DateTime, Settings} from 'luxon'\n// only use `Settings` if you require optional time zone support\nSettings.defaultZone = 'America/Los_Angeles'\n// end optional time zone support\n\n// Luxon uses the Intl API, which currently does not contain `weekInfo`\n// to determine which weekday is the start of the week by `culture`.\n// The `luxonLocalizer` defaults this to Sunday, which differs from\n// the Luxon default of Monday. The localizer requires this option\n// to change the display, and the date math for determining the\n// start of a week. Luxon uses non-zero based values for `weekday`.\nconst localizer = luxonLocalizer(DateTime, {firstDayOfWeek: 7})\n```",type:{name:"object"},required:!0},date:{description:"The current date value of the calendar. Determines the visible view range.\nIf `date` is omitted then the result of `getNow` is used; otherwise the\ncurrent date is used.\n\n@controllable onNavigate",type:{name:"instanceOf",value:"Date"},required:!1},defaultView:{description:"The initial view set for the Calendar.\n@type Calendar.Views ('month'|'week'|'work_week'|'day'|'agenda')\n@default 'month'",type:{name:"string"},required:!1},resources:{description:'An array of resource objects that map events to a specific resource.\nResource objects, like events, can be any shape or have any properties,\nbut should be uniquly identifiable via the `resourceIdAccessor`, as\nwell as a "title" or name as provided by the `resourceTitleAccessor` prop.',type:{name:"arrayOf",value:{name:"object"}},required:!1},onNavigate:{description:"Callback fired when the `date` value changes.\n\n@controllable date",type:{name:"func"},required:!1},onView:{description:"Callback fired when the `view` value changes.\n\n@controllable view",type:{name:"func"},required:!1},onDrillDown:{description:"Callback fired when date header, or the truncated events links are clicked",type:{name:"func"},required:!1},onRangeChange:{description:"```js\n(dates: Date[] | { start: Date; end: Date }, view: 'month'|'week'|'work_week'|'day'|'agenda'|undefined) => void\n```\n\nCallback fired when the visible date range changes. Returns an Array of dates\nor an object with start and end dates for BUILTIN views. Optionally new `view`\nwill be returned when callback called after view change.\n\nCustom views may return something different.",type:{name:"func"},required:!1},onSelectSlot:{description:'A callback fired when a date selection is made. Only fires when `selectable` is `true`.\n\n```js\n(\n slotInfo: {\n start: Date,\n end: Date,\n resourceId: (number|string),\n slots: Array,\n action: "select" | "click" | "doubleClick",\n bounds: ?{ // For "select" action\n x: number,\n y: number,\n top: number,\n right: number,\n left: number,\n bottom: number,\n },\n box: ?{ // For "click" or "doubleClick" actions\n clientX: number,\n clientY: number,\n x: number,\n y: number,\n },\n }\n) => any\n```',type:{name:"func"},required:!1},onSelectEvent:{description:"Callback fired when a calendar event is selected.\n\n```js\n(event: Object, e: SyntheticEvent) => any\n```\n\n@controllable selected",type:{name:"func"},required:!1},onDoubleClickEvent:{description:"Callback fired when a calendar event is clicked twice.\n\n```js\n(event: Object, e: SyntheticEvent) => void\n```",type:{name:"func"},required:!1},onKeyPressEvent:{description:"Callback fired when a focused calendar event receives a key press.\n\n```js\n(event: Object, e: SyntheticEvent) => void\n```",type:{name:"func"},required:!1},onSelecting:{description:"Callback fired when dragging a selection in the Time views.\n\nReturning `false` from the handler will prevent a selection.\n\n```js\n(range: { start: Date, end: Date, resourceId: (number|string) }) => ?boolean\n```",type:{name:"func"},required:!1},onShowMore:{description:"Callback fired when a +{count} more is clicked\n\n```js\n(events: Object, date: Date) => any\n```",type:{name:"func"},required:!1},showAllEvents:{description:"Displays all events on the month view instead of\nhaving some hidden behind +{count} more. This will\ncause the rows in the month view to be scrollable if\nthe number of events exceed the height of the row.",type:{name:"bool"},required:!1},selected:{description:"The selected event, if any.",type:{name:"object"},required:!1},getDrilldownView:{description:"Functionally equivalent to `drilldownView`, but accepts a function\nthat can return a view name. It's useful for customizing the drill-down\nactions depending on the target date and triggering view.\n\nReturn `null` to disable drill-down actions.\n\n```js\n\n if (currentViewName === 'month' && configuredViewNames.includes('week'))\n return 'week'\n\n return null;\n }}\n/>\n```",type:{name:"func"},required:!1},popupOffset:{description:'Distance in pixels, from the edges of the viewport, the "show more" overlay should be positioned.\n\n```jsx\n\n\n```',type:{name:"union",value:[{name:"number"},{name:"shape",value:{x:{name:"number",required:!1},y:{name:"number",required:!1}}}]},required:!1},selectable:{description:"Allows mouse selection of ranges of dates/times.\n\nThe 'ignoreEvents' option prevents selection code from running when a\ndrag begins over an event. Useful when you want custom event click or drag\nlogic",type:{name:"enum",value:[{value:"true",computed:!1},{value:"false",computed:!1},{value:"'ignoreEvents'",computed:!1}]},required:!1},timeslots:{description:'The number of slots per "section" in the time grid views. Adjust with `step`\nto change the default of 1 hour long groups, with 30 minute slots.',type:{name:"number"},required:!1},rtl:{description:"Switch the calendar to a `right-to-left` read direction.",type:{name:"bool"},required:!1},eventPropGetter:{description:"Optionally provide a function that returns an object of className or style props\nto be applied to the the event node.\n\n```js\n(\n\tevent: Object,\n\tstart: Date,\n\tend: Date,\n\tisSelected: boolean\n) => { className?: string, style?: Object }\n```",type:{name:"func"},required:!1},slotPropGetter:{description:"Optionally provide a function that returns an object of className or style props\nto be applied to the time-slot node. Caution! Styles that change layout or\nposition may break the calendar in unexpected ways.\n\n```js\n(date: Date, resourceId: (number|string)) => { className?: string, style?: Object }\n```",type:{name:"func"},required:!1},slotGroupPropGetter:{description:"Optionally provide a function that returns an object of props to be applied\nto the time-slot group node. Useful to dynamically change the sizing of time nodes.\n```js\n(group: Date[]) => { style?: Object }\n```",type:{name:"func"},required:!1},dayPropGetter:{description:"Optionally provide a function that returns an object of className or style props\nto be applied to the the day background. Caution! Styles that change layout or\nposition may break the calendar in unexpected ways.\n\n```js\n(date: Date) => { className?: string, style?: Object }\n```",type:{name:"func"},required:!1},showMultiDayTimes:{description:"Support to show multi-day events with specific start and end times in the\nmain time grid (rather than in the all day header).\n\n**Note: This may cause calendars with several events to look very busy in\nthe week and day views.**",type:{name:"bool"},required:!1},min:{description:"Constrains the minimum _time_ of the Day and Week views.",type:{name:"instanceOf",value:"Date"},required:!1},max:{description:"Constrains the maximum _time_ of the Day and Week views.",type:{name:"instanceOf",value:"Date"},required:!1},scrollToTime:{description:"Determines how far down the scroll pane is initially scrolled down.",type:{name:"instanceOf",value:"Date"},required:!1},enableAutoScroll:{description:"Determines whether the scroll pane is automatically scrolled down or not.",type:{name:"bool"},required:!1},culture:{description:"Specify a specific culture code for the Calendar.\n\n**Note: it's generally better to handle this globally via your i18n library.**",type:{name:"string"},required:!1},formats:{description:"Localizer specific formats, tell the Calendar how to format and display dates.\n\n`format` types are dependent on the configured localizer; Moment, Luxon and Globalize\naccept strings of tokens according to their own specification, such as: `'DD mm yyyy'`.\n\n```jsx\nlet formats = {\n dateFormat: 'dd',\n\n dayFormat: (date, , localizer) =>\n localizer.format(date, 'DDD', culture),\n\n dayRangeHeaderFormat: ({ start, end }, culture, localizer) =>\n localizer.format(start, { date: 'short' }, culture) + ' – ' +\n localizer.format(end, { date: 'short' }, culture)\n}\n\n\n```\n\nAll localizers accept a function of\nthe form `(date: Date, culture: ?string, localizer: Localizer) -> string`",type:{name:"shape",value:{dateFormat:{name:"custom",raw:"dateFormat",description:'Format for the day of the month heading in the Month view.\ne.g. "01", "02", "03", etc',required:!1},dayFormat:{name:"custom",raw:"dateFormat",description:'A day of the week format for Week and Day headings,\ne.g. "Wed 01/04"',required:!1},weekdayFormat:{name:"custom",raw:"dateFormat",description:'Week day name format for the Month week day headings,\ne.g: "Sun", "Mon", "Tue", etc',required:!1},timeGutterFormat:{name:"custom",raw:"dateFormat",description:'The timestamp cell formats in Week and Time views, e.g. "4:00 AM"',required:!1},monthHeaderFormat:{name:"custom",raw:"dateFormat",description:'Toolbar header format for the Month view, e.g "2015 April"',required:!1},dayRangeHeaderFormat:{name:"custom",raw:"dateRangeFormat",description:'Toolbar header format for the Week views, e.g. "Mar 29 - Apr 04"',required:!1},dayHeaderFormat:{name:"custom",raw:"dateFormat",description:'Toolbar header format for the Day view, e.g. "Wednesday Apr 01"',required:!1},agendaHeaderFormat:{name:"custom",raw:"dateRangeFormat",description:'Toolbar header format for the Agenda view, e.g. "4/1/2015 – 5/1/2015"',required:!1},selectRangeFormat:{name:"custom",raw:"dateRangeFormat",description:'A time range format for selecting time slots, e.g "8:00am – 2:00pm"',required:!1},agendaDateFormat:{name:"custom",raw:"dateFormat",required:!1},agendaTimeFormat:{name:"custom",raw:"dateFormat",required:!1},agendaTimeRangeFormat:{name:"custom",raw:"dateRangeFormat",required:!1},eventTimeRangeFormat:{name:"custom",raw:"dateRangeFormat",description:"Time range displayed on events.",required:!1},eventTimeRangeStartFormat:{name:"custom",raw:"dateFormat",description:"An optional event time range for events that continue onto another day",required:!1},eventTimeRangeEndFormat:{name:"custom",raw:"dateFormat",description:"An optional event time range for events that continue from another day",required:!1}}},required:!1},components:{description:"Customize how different sections of the calendar render by providing custom Components.\nIn particular the `Event` component can be specified for the entire calendar, or you can\nprovide an individual component for each view type.\n\n```jsx\nlet components = {\n event: MyEvent, // used by each view (Month, Day, Week)\n eventWrapper: MyEventWrapper,\n eventContainerWrapper: MyEventContainerWrapper,\n dateCellWrapper: MyDateCellWrapper,\n timeSlotWrapper: MyTimeSlotWrapper,\n timeGutterHeader: MyTimeGutterWrapper,\n timeGutterWrapper: MyTimeGutterWrapper,\n resourceHeader: MyResourceHeader,\n toolbar: MyToolbar,\n agenda: {\n \t event: MyAgendaEvent, // with the agenda view use a different component to render events\n time: MyAgendaTime,\n date: MyAgendaDate,\n },\n day: {\n header: MyDayHeader,\n event: MyDayEvent,\n },\n week: {\n header: MyWeekHeader,\n event: MyWeekEvent,\n },\n month: {\n header: MyMonthHeader,\n dateHeader: MyMonthDateHeader,\n event: MyMonthEvent,\n }\n}\n\n```",type:{name:"shape",value:{event:{name:"elementType",required:!1},eventWrapper:{name:"elementType",required:!1},eventContainerWrapper:{name:"elementType",required:!1},dateCellWrapper:{name:"elementType",required:!1},dayColumnWrapper:{name:"elementType",required:!1},timeSlotWrapper:{name:"elementType",required:!1},timeGutterHeader:{name:"elementType",required:!1},timeGutterWrapper:{name:"elementType",required:!1},resourceHeader:{name:"elementType",required:!1},toolbar:{name:"elementType",required:!1},agenda:{name:"shape",value:{date:{name:"elementType",required:!1},time:{name:"elementType",required:!1},event:{name:"elementType",required:!1}},required:!1},day:{name:"shape",value:{header:{name:"elementType",required:!1},event:{name:"elementType",required:!1}},required:!1},week:{name:"shape",value:{header:{name:"elementType",required:!1},event:{name:"elementType",required:!1}},required:!1},month:{name:"shape",value:{header:{name:"elementType",required:!1},dateHeader:{name:"elementType",required:!1},event:{name:"elementType",required:!1}},required:!1}}},required:!1},messages:{description:"String messages used throughout the component, override to provide localizations\n\n```jsx\nconst messages = {\n date: 'Date',\n time: 'Time',\n event: 'Event',\n allDay: 'All Day',\n week: 'Week',\n work_week: 'Work Week',\n day: 'Day',\n month: 'Month',\n previous: 'Back',\n next: 'Next',\n yesterday: 'Yesterday',\n tomorrow: 'Tomorrow',\n today: 'Today',\n agenda: 'Agenda',\n\n noEventsInRange: 'There are no events in this range.',\n\n showMore: total => `+ ${total} more`,\n}\n\n\n```",type:{name:"shape",value:{allDay:{name:"node",required:!1},previous:{name:"node",required:!1},next:{name:"node",required:!1},today:{name:"node",required:!1},month:{name:"node",required:!1},week:{name:"node",required:!1},day:{name:"node",required:!1},agenda:{name:"node",required:!1},date:{name:"node",required:!1},time:{name:"node",required:!1},event:{name:"node",required:!1},noEventsInRange:{name:"node",required:!1},showMore:{name:"func",required:!1}}},required:!1}}};var src_Calendar=(0,esm.Pd)(Calendar,{view:"onView",date:"onNavigate",selected:"onSelectEvent"});"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/Calendar.js"]={name:"Calendar",docgenInfo:Calendar.__docgenInfo,path:"src/Calendar.js"});__webpack_require__("./node_modules/core-js/modules/es.function.name.js"),__webpack_require__("./node_modules/core-js/modules/es.object.to-string.js"),__webpack_require__("./node_modules/core-js/modules/es.regexp.to-string.js"),__webpack_require__("./node_modules/core-js/modules/es.number.constructor.js");var timeRangeFormat=function timeRangeFormat(_ref3,culture,local){var start=_ref3.start,end=_ref3.end;return local.format(start,"LT",culture)+" – "+local.format(end,"LT",culture)},formats={dateFormat:"DD",dayFormat:"DD ddd",weekdayFormat:"ddd",selectRangeFormat:timeRangeFormat,eventTimeRangeFormat:timeRangeFormat,eventTimeRangeStartFormat:function timeRangeStartFormat(_ref4,culture,local){var start=_ref4.start;return local.format(start,"LT",culture)+" – "},eventTimeRangeEndFormat:function timeRangeEndFormat(_ref5,culture,local){var end=_ref5.end;return" – "+local.format(end,"LT",culture)},timeGutterFormat:"LT",monthHeaderFormat:"MMMM YYYY",dayHeaderFormat:"dddd MMM DD",dayRangeHeaderFormat:function weekRangeFormat(_ref,culture,local){var start=_ref.start,end=_ref.end;return local.format(start,"MMMM DD",culture)+" – "+local.format(end,local.eq(start,end,"month")?"DD":"MMMM DD",culture)},agendaHeaderFormat:function dateRangeFormat(_ref2,culture,local){var start=_ref2.start,end=_ref2.end;return local.format(start,"L",culture)+" – "+local.format(end,"L",culture)},agendaDateFormat:"ddd MMM DD",agendaTimeFormat:"LT",agendaTimeRangeFormat:timeRangeFormat};function fixUnit(unit){var datePart=unit?unit.toLowerCase():unit;return"FullYear"===datePart?datePart="year":datePart||(datePart=void 0),datePart}function moment(moment){function getDstOffset(start,end){var _st$_z$name,_st$_z,st=moment(start).local(),ed=moment(end).local();if(!moment.tz)return st.toDate().getTimezoneOffset()-ed.toDate().getTimezoneOffset();var tzName=null!==(_st$_z$name=null==st||null===(_st$_z=st._z)||void 0===_st$_z?void 0:_st$_z.name)&&void 0!==_st$_z$name?_st$_z$name:moment.tz.guess();return moment.tz.zone(tzName).utcOffset(+st)-moment.tz.zone(tzName).utcOffset(+ed)}function defineComparators(a,b,unit){var datePart=fixUnit(unit);return[datePart?moment(a).startOf(datePart):moment(a),datePart?moment(b).startOf(datePart):moment(b),datePart]}function startOf(){var date=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,datePart=fixUnit(arguments.length>1?arguments[1]:void 0);return datePart?moment(date).startOf(datePart).toDate():moment(date).toDate()}function eq(a,b,unit){var _defineComparators=defineComparators(a,b,unit),_defineComparators2=(0,slicedToArray.A)(_defineComparators,3),dtA=_defineComparators2[0],dtB=_defineComparators2[1],datePart=_defineComparators2[2];return dtA.isSame(dtB,datePart)}function lte(a,b,unit){var _defineComparators9=defineComparators(a,b,unit),_defineComparators10=(0,slicedToArray.A)(_defineComparators9,3),dtA=_defineComparators10[0],dtB=_defineComparators10[1],datePart=_defineComparators10[2];return dtA.isSameOrBefore(dtB,datePart)}function add(date,adder,unit){var datePart=fixUnit(unit);return moment(date).add(adder,datePart).toDate()}function diff(a,b){var datePart=fixUnit(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"day"),dtA=moment(a);return moment(b).diff(dtA,datePart)}function firstVisibleDay(date){return moment(date).startOf("month").startOf("week").toDate()}function lastVisibleDay(date){return moment(date).endOf("month").endOf("week").toDate()}function daySpan(start,end){var mStart=moment(start),mEnd=moment(end);return moment.duration(mEnd.diff(mStart)).days()}return new localizer_DateLocalizer({formats:formats,firstOfWeek:function firstOfWeek(culture){var data=culture?moment.localeData(culture):moment.localeData();return data?data.firstDayOfWeek():0},firstVisibleDay:firstVisibleDay,lastVisibleDay:lastVisibleDay,visibleDays:function visibleDays(date){for(var current=firstVisibleDay(date),last=lastVisibleDay(date),days=[];lte(current,last);)days.push(current),current=add(current,1,"d");return days},format:function format(value,_format,culture){return function locale(m,c){return c?m.locale(c):m}(moment(value),culture).format(_format)},lt:function lt(a,b,unit){var _defineComparators5=defineComparators(a,b,unit),_defineComparators6=(0,slicedToArray.A)(_defineComparators5,3),dtA=_defineComparators6[0],dtB=_defineComparators6[1],datePart=_defineComparators6[2];return dtA.isBefore(dtB,datePart)},lte:lte,gt:function gt(a,b,unit){var _defineComparators3=defineComparators(a,b,unit),_defineComparators4=(0,slicedToArray.A)(_defineComparators3,3),dtA=_defineComparators4[0],dtB=_defineComparators4[1],datePart=_defineComparators4[2];return dtA.isAfter(dtB,datePart)},gte:function gte(a,b,unit){var _defineComparators7=defineComparators(a,b,unit),_defineComparators8=(0,slicedToArray.A)(_defineComparators7,3),dtA=_defineComparators8[0],dtB=_defineComparators8[1],datePart=_defineComparators8[2];return dtA.isSameOrBefore(dtB,datePart)},eq:eq,neq:function neq(a,b,unit){return!eq(a,b,unit)},merge:function merge(date,time){if(!date&&!time)return null;var tm=moment(time).format("HH:mm:ss"),dt=moment(date).startOf("day").format("MM/DD/YYYY");return moment("".concat(dt," ").concat(tm),"MM/DD/YYYY HH:mm:ss").toDate()},inRange:function inRange(day,min,max){var datePart=fixUnit(arguments.length>3&&void 0!==arguments[3]?arguments[3]:"day"),mDay=moment(day),mMin=moment(min),mMax=moment(max);return mDay.isBetween(mMin,mMax,datePart,"[]")},startOf:startOf,endOf:function endOf(){var date=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,datePart=fixUnit(arguments.length>1?arguments[1]:void 0);return datePart?moment(date).endOf(datePart).toDate():moment(date).toDate()},range:function range(start,end){for(var datePart=fixUnit(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"day"),current=moment(start).toDate(),days=[];lte(current,end);)days.push(current),current=add(current,1,datePart);return days},add:add,diff:diff,ceil:function ceil(date,unit){var datePart=fixUnit(unit),floor=startOf(date,datePart);return eq(floor,date)?floor:add(floor,1,datePart)},min:function min(dateA,dateB){var dtA=moment(dateA),dtB=moment(dateB);return moment.min(dtA,dtB).toDate()},max:function max(dateA,dateB){var dtA=moment(dateA),dtB=moment(dateB);return moment.max(dtA,dtB).toDate()},minutes:function minutes(date){return moment(date).minutes()},getSlotDate:function getSlotDate(dt,minutesFromMidnight,offset){return moment(dt).startOf("day").minute(minutesFromMidnight+offset).toDate()},getTimezoneOffset:function getTimezoneOffset(date){return moment(date).toDate().getTimezoneOffset()},getDstOffset:getDstOffset,getTotalMin:function getTotalMin(start,end){return diff(start,end,"minutes")},getMinutesFromMidnight:function getMinutesFromMidnight(start){var dayStart=moment(start).startOf("day");return moment(start).diff(dayStart,"minutes")+function getDayStartDstOffset(start){return getDstOffset(moment(start).startOf("day"),start)}(start)},continuesPrior:function continuesPrior(start,first){var mStart=moment(start),mFirst=moment(first);return mStart.isBefore(mFirst,"day")},continuesAfter:function continuesAfter(start,end,last){var mEnd=moment(end),mLast=moment(last);return mEnd.isSameOrAfter(mLast,"minutes")},sortEvents:function sortEvents(_ref6){var _ref6$evtA=_ref6.evtA,aStart=_ref6$evtA.start,aEnd=_ref6$evtA.end,aAllDay=_ref6$evtA.allDay,_ref6$evtB=_ref6.evtB,bStart=_ref6$evtB.start,bEnd=_ref6$evtB.end,bAllDay=_ref6$evtB.allDay,startSort=+startOf(aStart,"day")-+startOf(bStart,"day"),durA=daySpan(aStart,aEnd),durB=daySpan(bStart,bEnd);return startSort||durB-durA||!!bAllDay-!!aAllDay||+aStart-+bStart||+aEnd-+bEnd},inEventRange:function inEventRange(_ref7){var _ref7$event=_ref7.event,start=_ref7$event.start,end=_ref7$event.end,_ref7$range=_ref7.range,rangeStart=_ref7$range.start,rangeEnd=_ref7$range.end,startOfDay=moment(start).startOf("day"),eEnd=moment(end),rStart=moment(rangeStart),rEnd=moment(rangeEnd),startsBeforeEnd=startOfDay.isSameOrBefore(rEnd,"day"),endsAfterStart=!startOfDay.isSame(eEnd,"minutes")?eEnd.isAfter(rStart,"minutes"):eEnd.isSameOrAfter(rStart,"minutes");return startsBeforeEnd&&endsAfterStart},isSameDate:function isSameDate(date1,date2){var dt=moment(date1),dt2=moment(date2);return dt.isSame(dt2,"day")},daySpan:daySpan,browserTZOffset:function browserTZOffset(){var dt=new Date,neg=/-/.test(dt.toString())?"-":"",dtOffset=dt.getTimezoneOffset(),comparator=Number("".concat(neg).concat(Math.abs(dtOffset)));return moment().utcOffset()>comparator?1:0}})}__webpack_require__("./node_modules/core-js/modules/es.array.includes.js"),__webpack_require__("./node_modules/core-js/modules/es.string.includes.js");var luxon_timeRangeFormat=function timeRangeFormat(_ref3,culture,local){var start=_ref3.start,end=_ref3.end;return local.format(start,"t",culture)+" – "+local.format(end,"t",culture)},luxon_formats={dateFormat:"dd",dayFormat:"dd EEE",weekdayFormat:"EEE",selectRangeFormat:luxon_timeRangeFormat,eventTimeRangeFormat:luxon_timeRangeFormat,eventTimeRangeStartFormat:function timeRangeStartFormat(_ref4,culture,local){var start=_ref4.start;return local.format(start,"t",culture)+" – "},eventTimeRangeEndFormat:function timeRangeEndFormat(_ref5,culture,local){var end=_ref5.end;return" – "+local.format(end,"t",culture)},timeGutterFormat:"t",monthHeaderFormat:"MMMM yyyy",dayHeaderFormat:"EEEE MMM dd",dayRangeHeaderFormat:function weekRangeFormat(_ref,culture,local){var start=_ref.start,end=_ref.end;return local.format(start,"MMMM dd",culture)+" – "+local.format(end,local.eq(start,end,"month")?"dd":"MMMM dd",culture)},agendaHeaderFormat:function dateRangeFormat(_ref2,culture,local){var start=_ref2.start,end=_ref2.end;return local.format(start,"D",culture)+" – "+local.format(end,"D",culture)},agendaDateFormat:"EEE MMM dd",agendaTimeFormat:"t",agendaTimeRangeFormat:luxon_timeRangeFormat};function luxon_fixUnit(unit){var datePart=unit?function pluralizeUnit(unit){return/s$/.test(unit)?unit:unit+"s"}(unit.toLowerCase()):unit;return"FullYear"===datePart?datePart="year":datePart||(datePart=void 0),datePart}function luxon(DateTime){var _ref6$firstDayOfWeek=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).firstDayOfWeek,firstDayOfWeek=void 0===_ref6$firstDayOfWeek?7:_ref6$firstDayOfWeek;function defineComparators(a,b,unit){var datePart=luxon_fixUnit(unit);return[datePart?DateTime.fromJSDate(a).startOf(datePart):DateTime.fromJSDate(a),datePart?DateTime.fromJSDate(b).startOf(datePart):DateTime.fromJSDate(b),datePart]}function startOfDTWeek(dtObj){var weekday=dtObj.weekday;if(weekday===firstDayOfWeek)return dtObj.startOf("day");if(1===firstDayOfWeek)return dtObj.startOf("week");var diff=7===firstDayOfWeek?weekday:weekday+(7-firstDayOfWeek);return dtObj.minus({day:diff}).startOf("day")}function endOfDTWeek(dtObj){var weekday=dtObj.weekday,eow=1===firstDayOfWeek?7:firstDayOfWeek-1;return weekday===eow?dtObj.endOf("day"):1===firstDayOfWeek?dtObj.endOf("week"):(firstDayOfWeek>eow?dtObj.plus({day:firstDayOfWeek-eow}):dtObj).set({weekday:eow}).endOf("day")}function startOfDT(){var date=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date,datePart=luxon_fixUnit(arguments.length>1?arguments[1]:void 0);if(datePart){var dt=DateTime.fromJSDate(date);return datePart.includes("week")?startOfDTWeek(dt):dt.startOf(datePart)}return DateTime.fromJSDate(date)}function startOf(){return startOfDT(arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date,arguments.length>1?arguments[1]:void 0).toJSDate()}function endOfDT(){var date=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date,datePart=luxon_fixUnit(arguments.length>1?arguments[1]:void 0);if(datePart){var dt=DateTime.fromJSDate(date);return datePart.includes("week")?endOfDTWeek(dt):dt.endOf(datePart)}return DateTime.fromJSDate(date)}function eq(a,b,unit){var _defineComparators=defineComparators(a,b,unit),_defineComparators2=(0,slicedToArray.A)(_defineComparators,2);return+_defineComparators2[0]==+_defineComparators2[1]}function neq(a,b,unit){return!eq(a,b,unit)}function gt(a,b,unit){var _defineComparators3=defineComparators(a,b,unit),_defineComparators4=(0,slicedToArray.A)(_defineComparators3,2);return+_defineComparators4[0]>+_defineComparators4[1]}function lt(a,b,unit){var _defineComparators5=defineComparators(a,b,unit),_defineComparators6=(0,slicedToArray.A)(_defineComparators5,2);return+_defineComparators6[0]<+_defineComparators6[1]}function gte(a,b,unit){var _defineComparators7=defineComparators(a,b,unit),_defineComparators8=(0,slicedToArray.A)(_defineComparators7,2);return+_defineComparators8[0]>=+_defineComparators8[1]}function lte(a,b,unit){var _defineComparators9=defineComparators(a,b,unit),_defineComparators10=(0,slicedToArray.A)(_defineComparators9,2);return+_defineComparators10[0]<=+_defineComparators10[1]}function add(date,adder,unit){var datePart=luxon_fixUnit(unit);return DateTime.fromJSDate(date).plus((0,defineProperty.A)({},datePart,adder)).toJSDate()}function diff(a,b){var datePart=luxon_fixUnit(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"day"),dtA=DateTime.fromJSDate(a),dtB=DateTime.fromJSDate(b);return Math.floor(dtB.diff(dtA,datePart,{conversionAccuracy:"longterm"}).toObject()[datePart])}function firstVisibleDay(date){return startOfDTWeek(startOfDT(date,"month")).toJSDate()}function lastVisibleDay(date){return endOfDTWeek(endOfDT(date,"month")).toJSDate()}function daySpan(start,end){var dtStart=DateTime.fromJSDate(start);return DateTime.fromJSDate(end).diff(dtStart).as("days")}return new localizer_DateLocalizer({format:function format(value,_format,culture){return culture?function formatDateWithCulture(value,culture,format){return DateTime.fromJSDate(value).setLocale(culture).toFormat(format)}(value,culture,_format):function formatDate(value,format){return DateTime.fromJSDate(value).toFormat(format)}(value,_format)},formats:luxon_formats,firstOfWeek:function firstOfWeek(){return firstDayOfWeek},firstVisibleDay:firstVisibleDay,lastVisibleDay:lastVisibleDay,visibleDays:function visibleDays(date){for(var current=firstVisibleDay(date),last=lastVisibleDay(date),days=[];lte(current,last);)days.push(current),current=add(current,1,"day");return days},lt:lt,lte:lte,gt:gt,gte:gte,eq:eq,neq:neq,merge:function merge(date,time){if(!date&&!time)return null;var tm=DateTime.fromJSDate(time);return startOfDT(date,"day").set({hour:tm.hour,minute:tm.minute,second:tm.second,millisecond:tm.millisecond}).toJSDate()},inRange:function inRange(day,min,max){var datePart=luxon_fixUnit(arguments.length>3&&void 0!==arguments[3]?arguments[3]:"day"),mDay=startOfDT(day,datePart),mMin=startOfDT(min,datePart),mMax=startOfDT(max,datePart);return+mDay>=+mMin&&+mDay<=+mMax},startOf:startOf,endOf:function endOf(){return endOfDT(arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date,arguments.length>1?arguments[1]:void 0).toJSDate()},range:function range(start,end){for(var datePart=luxon_fixUnit(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"day"),current=DateTime.fromJSDate(start).toJSDate(),days=[];lte(current,end);)days.push(current),current=add(current,1,datePart);return days},add:add,diff:diff,ceil:function ceil(date,unit){var datePart=luxon_fixUnit(unit),floor=startOf(date,datePart);return eq(floor,date)?floor:add(floor,1,datePart)},min:function min(dateA,dateB){var dtA=DateTime.fromJSDate(dateA),dtB=DateTime.fromJSDate(dateB);return DateTime.min(dtA,dtB).toJSDate()},max:function max(dateA,dateB){var dtA=DateTime.fromJSDate(dateA),dtB=DateTime.fromJSDate(dateB);return DateTime.max(dtA,dtB).toJSDate()},getSlotDate:function getSlotDate(dt,minutesFromMidnight,offset){return startOfDT(dt,"day").set({minutes:minutesFromMidnight+offset}).toJSDate()},getTotalMin:function getTotalMin(start,end){return diff(start,end,"minutes")},getMinutesFromMidnight:function getMinutesFromMidnight(start){var dayStart=startOfDT(start,"day"),day=DateTime.fromJSDate(start);return Math.round(day.diff(dayStart,"minutes",{conversionAccuracy:"longterm"}).toObject().minutes)},continuesPrior:function continuesPrior(start,first){return lt(start,first)},continuesAfter:function continuesAfter(start,end,last){return gte(end,last)},sortEvents:function sortEvents(_ref7){var _ref7$evtA=_ref7.evtA,aStart=_ref7$evtA.start,aEnd=_ref7$evtA.end,aAllDay=_ref7$evtA.allDay,_ref7$evtB=_ref7.evtB,bStart=_ref7$evtB.start,bEnd=_ref7$evtB.end,bAllDay=_ref7$evtB.allDay,startSort=+startOf(aStart,"day")-+startOf(bStart,"day"),durA=daySpan(aStart,aEnd),durB=daySpan(bStart,bEnd);return startSort||durB-durA||!!bAllDay-!!aAllDay||+aStart-+bStart||+aEnd-+bEnd},inEventRange:function inEventRange(_ref8){var _ref8$event=_ref8.event,start=_ref8$event.start,end=_ref8$event.end,_ref8$range=_ref8.range,rangeStart=_ref8$range.start,rangeEnd=_ref8$range.end,eStart=startOf(start,"day"),startsBeforeEnd=lte(eStart,rangeEnd,"day"),endsAfterStart=neq(eStart,end,"minutes")?gt(end,rangeStart,"minutes"):gte(end,rangeStart,"minutes");return startsBeforeEnd&&endsAfterStart},isSameDate:function isSameDate(date1,date2){var dt=DateTime.fromJSDate(date1),dt2=DateTime.fromJSDate(date2);return dt.hasSame(dt2,"day")},daySpan:daySpan,browserTZOffset:function browserTZOffset(){var dt=new Date,neg=/-/.test(dt.toString())?"-":"",dtOffset=dt.getTimezoneOffset(),comparator=Number("".concat(neg).concat(Math.abs(dtOffset)));return DateTime.local().offset>comparator?1:0}})}var oldGlobalize_timeRangeFormat=function timeRangeFormat(_ref2,culture,local){var start=_ref2.start,end=_ref2.end;return local.format(start,"t",culture)+" – "+local.format(end,"t",culture)},oldGlobalize_formats={dateFormat:"dd",dayFormat:"ddd dd/MM",weekdayFormat:"ddd",selectRangeFormat:oldGlobalize_timeRangeFormat,eventTimeRangeFormat:oldGlobalize_timeRangeFormat,eventTimeRangeStartFormat:function timeRangeStartFormat(_ref3,culture,local){var start=_ref3.start;return local.format(start,"t",culture)+" – "},eventTimeRangeEndFormat:function timeRangeEndFormat(_ref4,culture,local){var end=_ref4.end;return" – "+local.format(end,"t",culture)},timeGutterFormat:"t",monthHeaderFormat:"Y",dayHeaderFormat:"dddd MMM dd",dayRangeHeaderFormat:function weekRangeFormat(_ref5,culture,local){var start=_ref5.start,end=_ref5.end;return local.format(start,"MMM dd",culture)+" – "+local.format(end,dates.eq(start,end,"month")?"dd":"MMM dd",culture)},agendaHeaderFormat:function dateRangeFormat(_ref,culture,local){var start=_ref.start,end=_ref.end;return local.format(start,"d",culture)+" – "+local.format(end,"d",culture)},agendaDateFormat:"ddd MMM dd",agendaTimeFormat:"t",agendaTimeRangeFormat:oldGlobalize_timeRangeFormat};function oldGlobalize(globalize){return new localizer_DateLocalizer({firstOfWeek:function firstOfWeek(culture){return(culture=function getCulture(culture){return culture?globalize.findClosestCulture(culture):globalize.culture()}(culture))&&culture.calendar.firstDay||0},formats:oldGlobalize_formats,format:function format(value,_format,culture){return globalize.format(value,_format,culture)}})}var globalize_timeRangeFormat=function timeRangeFormat(_ref2,culture,local){var start=_ref2.start,end=_ref2.end;return local.format(start,{time:"short"},culture)+" – "+local.format(end,{time:"short"},culture)},globalize_formats={dateFormat:"dd",dayFormat:"eee dd/MM",weekdayFormat:"eee",selectRangeFormat:globalize_timeRangeFormat,eventTimeRangeFormat:globalize_timeRangeFormat,eventTimeRangeStartFormat:function timeRangeStartFormat(_ref3,culture,local){var start=_ref3.start;return local.format(start,{time:"short"},culture)+" – "},eventTimeRangeEndFormat:function timeRangeEndFormat(_ref4,culture,local){var end=_ref4.end;return" – "+local.format(end,{time:"short"},culture)},timeGutterFormat:{time:"short"},monthHeaderFormat:"MMMM yyyy",dayHeaderFormat:"eeee MMM dd",dayRangeHeaderFormat:function weekRangeFormat(_ref5,culture,local){var start=_ref5.start,end=_ref5.end;return local.format(start,"MMM dd",culture)+" – "+local.format(end,dates.eq(start,end,"month")?"dd":"MMM dd",culture)},agendaHeaderFormat:function dateRangeFormat(_ref,culture,local){var start=_ref.start,end=_ref.end;return local.format(start,{date:"short"},culture)+" – "+local.format(end,{date:"short"},culture)},agendaDateFormat:"eee MMM dd",agendaTimeFormat:{time:"short"},agendaTimeRangeFormat:globalize_timeRangeFormat};function globalize(globalize){var locale=function locale(culture){return culture?globalize(culture):globalize};return globalize.load?new localizer_DateLocalizer({firstOfWeek:function firstOfWeek(culture){try{var cldr=locale(culture).cldr,territory=cldr.attributes.territory,firstDay=cldr.get("supplemental").weekData.firstDay[territory||"001"];return["sun","mon","tue","wed","thu","fri","sat"].indexOf(firstDay)}catch(e){0;var date=new Date,localeDay=Math.max(parseInt(locale(culture).formatDate(date,{raw:"e"}),10)-1,0);return Math.abs(date.getDay()-localeDay)}},formats:globalize_formats,format:function format(value,_format,culture){return _format="string"==typeof _format?{raw:_format}:_format,locale(culture).formatDate(value,_format)}}):oldGlobalize(globalize)}var isBetween=__webpack_require__("./node_modules/dayjs/plugin/isBetween.js"),isBetween_default=__webpack_require__.n(isBetween),isSameOrAfter=__webpack_require__("./node_modules/dayjs/plugin/isSameOrAfter.js"),isSameOrAfter_default=__webpack_require__.n(isSameOrAfter),isSameOrBefore=__webpack_require__("./node_modules/dayjs/plugin/isSameOrBefore.js"),isSameOrBefore_default=__webpack_require__.n(isSameOrBefore),localeData=__webpack_require__("./node_modules/dayjs/plugin/localeData.js"),localeData_default=__webpack_require__.n(localeData),localizedFormat=__webpack_require__("./node_modules/dayjs/plugin/localizedFormat.js"),localizedFormat_default=__webpack_require__.n(localizedFormat),minMax=__webpack_require__("./node_modules/dayjs/plugin/minMax.js"),minMax_default=__webpack_require__.n(minMax),utc=__webpack_require__("./node_modules/dayjs/plugin/utc.js"),utc_default=__webpack_require__.n(utc),dayjs_timeRangeFormat=function timeRangeFormat(_ref3,culture,local){var start=_ref3.start,end=_ref3.end;return local.format(start,"LT",culture)+" – "+local.format(end,"LT",culture)},dayjs_formats={dateFormat:"DD",dayFormat:"DD ddd",weekdayFormat:"ddd",selectRangeFormat:dayjs_timeRangeFormat,eventTimeRangeFormat:dayjs_timeRangeFormat,eventTimeRangeStartFormat:function timeRangeStartFormat(_ref4,culture,local){var start=_ref4.start;return local.format(start,"LT",culture)+" – "},eventTimeRangeEndFormat:function timeRangeEndFormat(_ref5,culture,local){var end=_ref5.end;return" – "+local.format(end,"LT",culture)},timeGutterFormat:"LT",monthHeaderFormat:"MMMM YYYY",dayHeaderFormat:"dddd MMM DD",dayRangeHeaderFormat:function weekRangeFormat(_ref,culture,local){var start=_ref.start,end=_ref.end;return local.format(start,"MMMM DD",culture)+" – "+local.format(end,local.eq(start,end,"month")?"DD":"MMMM DD",culture)},agendaHeaderFormat:function dateRangeFormat(_ref2,culture,local){var start=_ref2.start,end=_ref2.end;return local.format(start,"L",culture)+" – "+local.format(end,"L",culture)},agendaDateFormat:"ddd MMM DD",agendaTimeFormat:"LT",agendaTimeRangeFormat:dayjs_timeRangeFormat};function dayjs_fixUnit(unit){var datePart=unit?unit.toLowerCase():unit;return"FullYear"===datePart?datePart="year":datePart||(datePart=void 0),datePart}function dayjs(dayjsLib){dayjsLib.extend(isBetween_default()),dayjsLib.extend(isSameOrAfter_default()),dayjsLib.extend(isSameOrBefore_default()),dayjsLib.extend(localeData_default()),dayjsLib.extend(localizedFormat_default()),dayjsLib.extend(minMax_default()),dayjsLib.extend(utc_default());var dayjs=dayjsLib.tz?dayjsLib.tz:dayjsLib;function getDstOffset(start,end){var _st$tz$$x$$timezone,st=dayjs(start),ed=dayjs(end);if(!dayjs.tz)return st.toDate().getTimezoneOffset()-ed.toDate().getTimezoneOffset();var tzName=null!==(_st$tz$$x$$timezone=st.tz().$x.$timezone)&&void 0!==_st$tz$$x$$timezone?_st$tz$$x$$timezone:dayjsLib.tz.guess();return-dayjs.tz(+st,tzName).utcOffset()- -dayjs.tz(+ed,tzName).utcOffset()}function defineComparators(a,b,unit){var datePart=dayjs_fixUnit(unit);return[datePart?dayjs(a).startOf(datePart):dayjs(a),datePart?dayjs(b).startOf(datePart):dayjs(b),datePart]}function startOf(){var date=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,datePart=dayjs_fixUnit(arguments.length>1?arguments[1]:void 0);return datePart?dayjs(date).startOf(datePart).toDate():dayjs(date).toDate()}function eq(a,b,unit){var _defineComparators=defineComparators(a,b,unit),_defineComparators2=(0,slicedToArray.A)(_defineComparators,3),dtA=_defineComparators2[0],dtB=_defineComparators2[1],datePart=_defineComparators2[2];return dtA.isSame(dtB,datePart)}function lte(a,b,unit){var _defineComparators9=defineComparators(a,b,unit),_defineComparators10=(0,slicedToArray.A)(_defineComparators9,3),dtA=_defineComparators10[0],dtB=_defineComparators10[1],datePart=_defineComparators10[2];return dtA.isSameOrBefore(dtB,datePart)}function add(date,adder,unit){var datePart=dayjs_fixUnit(unit);return dayjs(date).add(adder,datePart).toDate()}function diff(a,b){var datePart=dayjs_fixUnit(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"day"),dtA=dayjs(a);return dayjs(b).diff(dtA,datePart)}function firstVisibleDay(date){return dayjs(date).startOf("month").startOf("week").toDate()}function lastVisibleDay(date){return dayjs(date).endOf("month").endOf("week").toDate()}function daySpan(start,end){var startDay=dayjs(start);return dayjs(end).diff(startDay,"day")}return new localizer_DateLocalizer({formats:dayjs_formats,firstOfWeek:function firstOfWeek(culture){var data=culture?dayjsLib.localeData(culture):dayjsLib.localeData();return data?data.firstDayOfWeek():0},firstVisibleDay:firstVisibleDay,lastVisibleDay:lastVisibleDay,visibleDays:function visibleDays(date){for(var current=firstVisibleDay(date),last=lastVisibleDay(date),days=[];lte(current,last);)days.push(current),current=add(current,1,"d");return days},format:function format(value,_format,culture){return function locale(dj,c){return c?dj.locale(c):dj}(dayjs(value),culture).format(_format)},lt:function lt(a,b,unit){var _defineComparators5=defineComparators(a,b,unit),_defineComparators6=(0,slicedToArray.A)(_defineComparators5,3),dtA=_defineComparators6[0],dtB=_defineComparators6[1],datePart=_defineComparators6[2];return dtA.isBefore(dtB,datePart)},lte:lte,gt:function gt(a,b,unit){var _defineComparators3=defineComparators(a,b,unit),_defineComparators4=(0,slicedToArray.A)(_defineComparators3,3),dtA=_defineComparators4[0],dtB=_defineComparators4[1],datePart=_defineComparators4[2];return dtA.isAfter(dtB,datePart)},gte:function gte(a,b,unit){var _defineComparators7=defineComparators(a,b,unit),_defineComparators8=(0,slicedToArray.A)(_defineComparators7,3),dtA=_defineComparators8[0],dtB=_defineComparators8[1],datePart=_defineComparators8[2];return dtA.isSameOrBefore(dtB,datePart)},eq:eq,neq:function neq(a,b,unit){return!eq(a,b,unit)},merge:function merge(date,time){if(!date&&!time)return null;var tm=dayjs(time).format("HH:mm:ss"),dt=dayjs(date).startOf("day").format("MM/DD/YYYY");return dayjsLib("".concat(dt," ").concat(tm),"MM/DD/YYYY HH:mm:ss").toDate()},inRange:function inRange(day,min,max){var datePart=dayjs_fixUnit(arguments.length>3&&void 0!==arguments[3]?arguments[3]:"day"),djDay=dayjs(day),djMin=dayjs(min),djMax=dayjs(max);return djDay.isBetween(djMin,djMax,datePart,"[]")},startOf:startOf,endOf:function endOf(){var date=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,datePart=dayjs_fixUnit(arguments.length>1?arguments[1]:void 0);return datePart?dayjs(date).endOf(datePart).toDate():dayjs(date).toDate()},range:function range(start,end){for(var datePart=dayjs_fixUnit(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"day"),current=dayjs(start).toDate(),days=[];lte(current,end);)days.push(current),current=add(current,1,datePart);return days},add:add,diff:diff,ceil:function ceil(date,unit){var datePart=dayjs_fixUnit(unit),floor=startOf(date,datePart);return eq(floor,date)?floor:add(floor,1,datePart)},min:function min(dateA,dateB){var dtA=dayjs(dateA),dtB=dayjs(dateB);return dayjsLib.min(dtA,dtB).toDate()},max:function max(dateA,dateB){var dtA=dayjs(dateA),dtB=dayjs(dateB);return dayjsLib.max(dtA,dtB).toDate()},minutes:function minutes(date){return dayjs(date).minutes()},getSlotDate:function getSlotDate(dt,minutesFromMidnight,offset){return dayjs(dt).startOf("day").minute(minutesFromMidnight+offset).toDate()},getTimezoneOffset:function getTimezoneOffset(date){return dayjs(date).toDate().getTimezoneOffset()},getDstOffset:getDstOffset,getTotalMin:function getTotalMin(start,end){return diff(start,end,"minutes")},getMinutesFromMidnight:function getMinutesFromMidnight(start){var dayStart=dayjs(start).startOf("day");return dayjs(start).diff(dayStart,"minutes")+function getDayStartDstOffset(start){return getDstOffset(dayjs(start).startOf("day"),start)}(start)},continuesPrior:function continuesPrior(start,first){var djStart=dayjs(start),djFirst=dayjs(first);return djStart.isBefore(djFirst,"day")},continuesAfter:function continuesAfter(start,end,last){var djEnd=dayjs(end),djLast=dayjs(last);return djEnd.isSameOrAfter(djLast,"minutes")},sortEvents:function sortEvents(_ref6){var _ref6$evtA=_ref6.evtA,aStart=_ref6$evtA.start,aEnd=_ref6$evtA.end,aAllDay=_ref6$evtA.allDay,_ref6$evtB=_ref6.evtB,bStart=_ref6$evtB.start,bEnd=_ref6$evtB.end,bAllDay=_ref6$evtB.allDay,startSort=+startOf(aStart,"day")-+startOf(bStart,"day"),durA=daySpan(aStart,aEnd),durB=daySpan(bStart,bEnd);return startSort||durB-durA||!!bAllDay-!!aAllDay||+aStart-+bStart||+aEnd-+bEnd},inEventRange:function inEventRange(_ref7){var _ref7$event=_ref7.event,start=_ref7$event.start,end=_ref7$event.end,_ref7$range=_ref7.range,rangeStart=_ref7$range.start,rangeEnd=_ref7$range.end,startOfDay=dayjs(start).startOf("day"),eEnd=dayjs(end),rStart=dayjs(rangeStart),rEnd=dayjs(rangeEnd),startsBeforeEnd=startOfDay.isSameOrBefore(rEnd,"day"),endsAfterStart=!startOfDay.isSame(eEnd,"minutes")?eEnd.isAfter(rStart,"minutes"):eEnd.isSameOrAfter(rStart,"minutes");return startsBeforeEnd&&endsAfterStart},isSameDate:function isSameDate(date1,date2){var dt=dayjs(date1),dt2=dayjs(date2);return dt.isSame(dt2,"day")},browserTZOffset:function browserTZOffset(){var dt=new Date,neg=/-/.test(dt.toString())?"-":"",dtOffset=dt.getTimezoneOffset(),comparator=Number("".concat(neg).concat(Math.abs(dtOffset)));return dayjs().utcOffset()>comparator?1:0}})}BackgroundWrapper.A,BackgroundWrapper.A},"./src/utils/accessors.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";function accessor(data,field){var value=null;return"function"==typeof field?value=field(data):"string"==typeof field&&"object"==typeof data&&null!=data&&field in data&&(value=data[field]),value}__webpack_require__.d(__webpack_exports__,{C:function(){return wrapAccessor},s:function(){return accessor}});var wrapAccessor=function wrapAccessor(acc){return function(data){return accessor(data,acc)}}},"./src/utils/constants.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{l:function(){return views},o:function(){return navigate}});var navigate={PREVIOUS:"PREV",NEXT:"NEXT",TODAY:"TODAY",DATE:"DATE"},views={MONTH:"month",WEEK:"week",WORK_WEEK:"work_week",DAY:"day",AGENDA:"agenda"}},"./src/utils/dates.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{GH:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.startOf},Gx:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.minutes},IC:function(){return visibleDays},Jo:function(){return lastVisibleDay},RO:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.gte},T9:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.max},Ui:function(){return diff},WQ:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.add},eq:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.eq},gt:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.gt},h1:function(){return merge},jk:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.min},lt:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.lt},mk:function(){return ceil},p0:function(){return duration},pJ:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.endOf},pR:function(){return isJustDate},r4:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.inRange},t7:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.neq},tk:function(){return firstVisibleDay},wJ:function(){return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.lte},y1:function(){return range}});__webpack_require__("./node_modules/core-js/modules/es.array.map.js");var date_arithmetic__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/date-arithmetic/index.js"),MILLI={seconds:1e3,minutes:6e4,hours:36e5,day:864e5};function firstVisibleDay(date,localizer){var firstOfMonth=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.startOf(date,"month");return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.startOf(firstOfMonth,"week",localizer.startOfWeek())}function lastVisibleDay(date,localizer){var endOfMonth=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.endOf(date,"month");return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.endOf(endOfMonth,"week",localizer.startOfWeek())}function visibleDays(date,localizer){for(var current=firstVisibleDay(date,localizer),last=lastVisibleDay(date,localizer),days=[];date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.lte(current,last,"day");)days.push(current),current=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.add(current,1,"day");return days}function ceil(date,unit){var floor=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.startOf(date,unit);return date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.eq(floor,date)?floor:date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.add(floor,1,unit)}function range(start,end){for(var unit=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"day",current=start,days=[];date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.lte(current,end,unit);)days.push(current),current=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.add(current,1,unit);return days}function merge(date,time){return null==time&&null==date?null:(null==time&&(time=new Date),null==date&&(date=new Date),date=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.startOf(date,"day"),date=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.hours(date,date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.hours(time)),date=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.minutes(date,date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.minutes(time)),date=date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.seconds(date,date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.seconds(time)),date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.milliseconds(date,date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.milliseconds(time)))}function isJustDate(date){return 0===date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.hours(date)&&0===date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.minutes(date)&&0===date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.seconds(date)&&0===date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.milliseconds(date)}function duration(start,end,unit,firstOfWeek){return"day"===unit&&(unit="date"),Math.abs(date_arithmetic__WEBPACK_IMPORTED_MODULE_1__[unit](start,void 0,firstOfWeek)-date_arithmetic__WEBPACK_IMPORTED_MODULE_1__[unit](end,void 0,firstOfWeek))}function diff(dateA,dateB,unit){return unit&&"milliseconds"!==unit?Math.round(Math.abs(+date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.startOf(dateA,unit)/MILLI[unit]-+date_arithmetic__WEBPACK_IMPORTED_MODULE_1__.startOf(dateB,unit)/MILLI[unit])):Math.abs(+dateA-+dateB)}},"./src/utils/eventLevels.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{FA:function(){return eventSegments},O_:function(){return eventLevels},SY:function(){return sortWeekEvents},kD:function(){return sortEvents},qO:function(){return endOfRange},r4:function(){return inRange}});var _babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),lodash_findIndex__WEBPACK_IMPORTED_MODULE_3__=(__webpack_require__("./node_modules/core-js/modules/es.array.sort.js"),__webpack_require__("./node_modules/core-js/modules/web.dom-collections.for-each.js"),__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/lodash/findIndex.js")),lodash_findIndex__WEBPACK_IMPORTED_MODULE_3___default=__webpack_require__.n(lodash_findIndex__WEBPACK_IMPORTED_MODULE_3__);function endOfRange(_ref){var dateRange=_ref.dateRange,_ref$unit=_ref.unit,unit=void 0===_ref$unit?"day":_ref$unit,localizer=_ref.localizer;return{first:dateRange[0],last:localizer.add(dateRange[dateRange.length-1],1,unit)}}function eventSegments(event,range,accessors,localizer){var _endOfRange=endOfRange({dateRange:range,localizer:localizer}),first=_endOfRange.first,last=_endOfRange.last,slots=localizer.diff(first,last,"day"),start=localizer.max(localizer.startOf(accessors.start(event),"day"),first),end=localizer.min(localizer.ceil(accessors.end(event),"day"),last),padding=lodash_findIndex__WEBPACK_IMPORTED_MODULE_3___default()(range,(function(x){return localizer.isSameDate(x,start)})),span=localizer.diff(start,end,"day");return span=Math.min(span,slots),{event:event,span:span=Math.max(span-localizer.segmentOffset,1),left:padding+1,right:Math.max(padding+span,1)}}function eventLevels(rowSegments){var i,j,seg,limit=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1/0,levels=[],extra=[];for(i=0;i=limit?extra.push(seg):(levels[j]||(levels[j]=[])).push(seg)}for(i=0;i=seg.left}))}function sortWeekEvents(events,accessors,localizer){var base=(0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_4__.A)(events),multiDayEvents=[],standardEvents=[];base.forEach((function(event){var startCheck=accessors.start(event),endCheck=accessors.end(event);localizer.daySpan(startCheck,endCheck)>1?multiDayEvents.push(event):standardEvents.push(event)}));var multiSorted=multiDayEvents.sort((function(a,b){return sortEvents(a,b,accessors,localizer)})),standardSorted=standardEvents.sort((function(a,b){return sortEvents(a,b,accessors,localizer)}));return[].concat((0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_4__.A)(multiSorted),(0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_4__.A)(standardSorted))}function sortEvents(eventA,eventB,accessors,localizer){var evtA={start:accessors.start(eventA),end:accessors.end(eventA),allDay:accessors.allDay(eventA)},evtB={start:accessors.start(eventB),end:accessors.end(eventB),allDay:accessors.allDay(eventB)};return localizer.sortEvents({evtA:evtA,evtB:evtB})}},"./src/utils/helpers.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{me:function(){return notify}});__webpack_require__("./node_modules/core-js/modules/es.array.concat.js");function notify(handler,args){handler&&handler.apply(null,[].concat(args))}},"./src/utils/propTypes.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.keys.js"),__webpack_require__("./node_modules/core-js/modules/es.array.concat.js");var prop_types__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/prop-types/index.js"),prop_types__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__),_constants__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./src/utils/constants.js"),viewNames=Object.keys(_constants__WEBPACK_IMPORTED_MODULE_3__.l).map((function(k){return _constants__WEBPACK_IMPORTED_MODULE_3__.l[k]}));prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_4___default().string,prop_types__WEBPACK_IMPORTED_MODULE_4___default().func]),prop_types__WEBPACK_IMPORTED_MODULE_4___default().any,prop_types__WEBPACK_IMPORTED_MODULE_4___default().func,prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOf(viewNames)),prop_types__WEBPACK_IMPORTED_MODULE_4___default().objectOf((function(prop,key){if(-1!==viewNames.indexOf(key)&&"boolean"==typeof prop[key])return null;for(var _len=arguments.length,args=new Array(_len>2?_len-2:0),_key=2;_key<_len;_key++)args[_key-2]=arguments[_key];return prop_types__WEBPACK_IMPORTED_MODULE_4___default().elementType.apply(prop_types__WEBPACK_IMPORTED_MODULE_4___default(),[prop,key].concat(args))}))]),prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOf(["overlap","no-overlap"]),prop_types__WEBPACK_IMPORTED_MODULE_4___default().func])},"./src/utils/selection.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{bY:function(){return pointInBox},bx:function(){return dateCellSelection},sU:function(){return getSlotAtX},sp:function(){return isSelected}});var lodash_isEqual__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/lodash/isEqual.js"),lodash_isEqual__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(lodash_isEqual__WEBPACK_IMPORTED_MODULE_0__);function isSelected(event,selected){return!(!event||null==selected)&&lodash_isEqual__WEBPACK_IMPORTED_MODULE_0___default()(event,selected)}function slotWidth(rowBox,slots){return(rowBox.right-rowBox.left)/slots}function getSlotAtX(rowBox,x,rtl,slots){var cellWidth=slotWidth(rowBox,slots);return rtl?slots-1-Math.floor((x-rowBox.left)/cellWidth):Math.floor((x-rowBox.left)/cellWidth)}function pointInBox(box,_ref){var x=_ref.x,y=_ref.y;return y>=box.top&&y<=box.bottom&&x>=box.left&&x<=box.right}function dateCellSelection(start,rowBox,box,slots,rtl){var startIdx=-1,endIdx=-1,lastSlotIdx=slots-1,cellWidth=slotWidth(rowBox,slots),currentSlot=getSlotAtX(rowBox,box.x,rtl,slots),isCurrentRow=rowBox.topbox.y,isStartRow=rowBox.topstart.y,isAboveStart=start.y>rowBox.bottom,isBelowStart=rowBox.top>start.y;return box.toprowBox.bottom&&(startIdx=0,endIdx=lastSlotIdx),isCurrentRow&&(isBelowStart?(startIdx=0,endIdx=currentSlot):isAboveStart&&(startIdx=currentSlot,endIdx=lastSlotIdx)),isStartRow&&(startIdx=endIdx=rtl?lastSlotIdx-Math.floor((start.x-rowBox.left)/cellWidth):Math.floor((start.x-rowBox.left)/cellWidth),isCurrentRow?currentSlot View Example Source Code"})}),children?(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)("div",{style:{marginBottom:10},children:children}):null]})}DemoLink.displayName="DemoLink",DemoLink.__docgenInfo={description:"",methods:[],displayName:"DemoLink"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/DemoLink.component.js"]={name:"DemoLink",docgenInfo:DemoLink.__docgenInfo,path:"stories/DemoLink.component.js"})},"./stories/demos/TimezoneSelect.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return TimezoneSelect}});__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/react/index.js");var react_tackle_box_Layout__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/react-tackle-box/Layout.js"),react_tackle_box_Layout__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(react_tackle_box_Layout__WEBPACK_IMPORTED_MODULE_2__),moment__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/moment/moment.js"),moment__WEBPACK_IMPORTED_MODULE_3___default=__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_3__),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__=(__webpack_require__("./node_modules/moment-timezone/index.js"),__webpack_require__("./node_modules/react/jsx-runtime.js")),allZones=moment__WEBPACK_IMPORTED_MODULE_3___default().tz.names();function TimezoneSelect(_ref){var title=_ref.title,_ref$defaultTZ=_ref.defaultTZ,defaultTZ=void 0===_ref$defaultTZ?moment__WEBPACK_IMPORTED_MODULE_3___default().tz.guess():_ref$defaultTZ,timezone=_ref.timezone,setTimezone=_ref.setTimezone;return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div",{children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(react_tackle_box_Layout__WEBPACK_IMPORTED_MODULE_2___default(),{direction:"column",align:"center",children:[title?(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("strong",{style:{marginBottom:10},children:title}):null,(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("label",{children:"Select a Timezone"})," ",(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("select",{className:"form-control",style:{width:200,display:"inline-block"},value:timezone,onChange:function onChange(_ref2){var value=_ref2.target.value;return setTimezone(value||defaultTZ)},children:allZones.map((function(c,idx){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("option",{value:"clear"!==c?c:"",children:c},idx)}))})]})})}allZones.unshift("clear"),TimezoneSelect.displayName="TimezoneSelect",TimezoneSelect.__docgenInfo={description:"",methods:[],displayName:"TimezoneSelect",props:{defaultTZ:{defaultValue:{value:"moment.tz.guess()",computed:!0},description:"",type:{name:"string"},required:!1},title:{description:"",type:{name:"string"},required:!1},timezone:{description:"",type:{name:"string"},required:!1},setTimezone:{description:"",type:{name:"func"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/TimezoneSelect.js"]={name:"TimezoneSelect",docgenInfo:TimezoneSelect.__docgenInfo,path:"stories/demos/TimezoneSelect.js"})},"./stories/demos/exampleCode/basic.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return Basic}});var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),react__WEBPACK_IMPORTED_MODULE_3__=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.keys.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js")),moment__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/moment/moment.js"),moment__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_4__),react_big_calendar__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./src/index.js"),_DemoLink_component__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./stories/DemoLink.component.js"),_resources_events__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("./stories/resources/events.js"),_src_utils_dates__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__("./src/utils/dates.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__("./node_modules/react/jsx-runtime.js"),_excluded=["localizer","showDemoLink"],mLocalizer=(0,react_big_calendar__WEBPACK_IMPORTED_MODULE_5__.ye)(moment__WEBPACK_IMPORTED_MODULE_4___default()),ColoredDateCellWrapper=function ColoredDateCellWrapper(_ref){var children=_ref.children;return react__WEBPACK_IMPORTED_MODULE_3__.cloneElement(react__WEBPACK_IMPORTED_MODULE_3__.Children.only(children),{style:{backgroundColor:"lightblue"}})};function Basic(_ref2){var _ref2$localizer=_ref2.localizer,localizer=void 0===_ref2$localizer?mLocalizer:_ref2$localizer,_ref2$showDemoLink=_ref2.showDemoLink,showDemoLink=void 0===_ref2$showDemoLink||_ref2$showDemoLink,props=(0,_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_10__.A)(_ref2,_excluded),_useMemo=(0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)((function(){return{components:{timeSlotWrapper:ColoredDateCellWrapper},defaultDate:new Date(2015,3,1),max:_src_utils_dates__WEBPACK_IMPORTED_MODULE_8__.WQ(_src_utils_dates__WEBPACK_IMPORTED_MODULE_8__.pJ(new Date(2015,17,1),"day"),-1,"hours"),views:Object.keys(react_big_calendar__WEBPACK_IMPORTED_MODULE_5__.Pp).map((function(k){return react_big_calendar__WEBPACK_IMPORTED_MODULE_5__.Pp[k]}))}}),[]),components=_useMemo.components,defaultDate=_useMemo.defaultDate,max=_useMemo.max,views=_useMemo.views;return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(react__WEBPACK_IMPORTED_MODULE_3__.Fragment,{children:[showDemoLink?(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_DemoLink_component__WEBPACK_IMPORTED_MODULE_6__.A,{fileName:"basic"}):null,(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("div",Object.assign({className:"height600"},props,{children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(react_big_calendar__WEBPACK_IMPORTED_MODULE_5__.Vv,{components:components,defaultDate:defaultDate,events:_resources_events__WEBPACK_IMPORTED_MODULE_7__.A,localizer:localizer,max:max,showMultiDayTimes:!0,step:60,views:views})}))]})}Basic.displayName="Basic",Basic.__docgenInfo={description:"We are defaulting the localizer here because we are using this same\nexample on the main 'About' page in Storybook",methods:[],displayName:"Basic",props:{localizer:{defaultValue:{value:"momentLocalizer(moment)",computed:!0},description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1},showDemoLink:{defaultValue:{value:"true",computed:!1},description:"",type:{name:"bool"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/basic.js"]={name:"Basic",docgenInfo:Basic.__docgenInfo,path:"stories/demos/exampleCode/basic.js"})},"./stories/demos/exampleCode/dndOutsideSource.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return DnDOutsideResource}});var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_17__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/defineProperty.js"),_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_16__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_15__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react__WEBPACK_IMPORTED_MODULE_7__=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/core-js/modules/es.array.find.js"),__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/es.function.name.js"),__webpack_require__("./node_modules/core-js/modules/es.object.entries.js"),__webpack_require__("./node_modules/react/index.js")),_resources_events__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__("./stories/resources/events.js"),react_big_calendar__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__("./src/index.js"),_resources_Card__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__("./stories/resources/Card.js"),_DemoLink_component__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__("./stories/DemoLink.component.js"),_src_addons_dragAndDrop__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__("./src/addons/dragAndDrop/index.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__=(__webpack_require__("./src/addons/dragAndDrop/styles.scss"),__webpack_require__("./node_modules/react/jsx-runtime.js")),DragAndDropCalendar=(0,_src_addons_dragAndDrop__WEBPACK_IMPORTED_MODULE_12__.A)(react_big_calendar__WEBPACK_IMPORTED_MODULE_9__.Vv),adjEvents=_resources_events__WEBPACK_IMPORTED_MODULE_8__.A.map((function(it,ind){return Object.assign({},it,{isDraggable:ind%2==0})})),formatName=function formatName(name,count){return"".concat(name," ID ").concat(count)};function DnDOutsideResource(_ref){var localizer=_ref.localizer,_useState=(0,react__WEBPACK_IMPORTED_MODULE_7__.useState)(adjEvents),_useState2=(0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_15__.A)(_useState,2),myEvents=_useState2[0],setMyEvents=_useState2[1],_useState3=(0,react__WEBPACK_IMPORTED_MODULE_7__.useState)(),_useState4=(0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_15__.A)(_useState3,2),draggedEvent=_useState4[0],setDraggedEvent=_useState4[1],_useState5=(0,react__WEBPACK_IMPORTED_MODULE_7__.useState)(!0),_useState6=(0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_15__.A)(_useState5,2),displayDragItemInCell=_useState6[0],setDisplayDragItemInCell=_useState6[1],_useState7=(0,react__WEBPACK_IMPORTED_MODULE_7__.useState)({item1:0,item2:0}),_useState8=(0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_15__.A)(_useState7,2),counters=_useState8[0],setCounters=_useState8[1],eventPropGetter=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(event){return Object.assign({},event.isDraggable?{className:"isDraggable"}:{className:"nonDraggable"})}),[]),handleDragStart=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(event){return setDraggedEvent(event)}),[]),dragFromOutsideItem=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(){return draggedEvent}),[draggedEvent]),customOnDragOver=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(dragEvent){"undroppable"!==draggedEvent&&(console.log("preventDefault"),dragEvent.preventDefault())}),[draggedEvent]),handleDisplayDragItemInCell=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(){return setDisplayDragItemInCell((function(prev){return!prev}))}),[]),moveEvent=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(_ref2){var event=_ref2.event,start=_ref2.start,end=_ref2.end,_ref2$isAllDay=_ref2.isAllDay,droppedOnAllDaySlot=void 0!==_ref2$isAllDay&&_ref2$isAllDay,allDay=event.allDay;!allDay&&droppedOnAllDaySlot&&(event.allDay=!0),setMyEvents((function(prev){var _prev$find,existing=null!==(_prev$find=prev.find((function(ev){return ev.id===event.id})))&&void 0!==_prev$find?_prev$find:{},filtered=prev.filter((function(ev){return ev.id!==event.id}));return[].concat((0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_16__.A)(filtered),[Object.assign({},existing,{start:start,end:end,allDay:allDay})])}))}),[setMyEvents]),newEvent=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(event){setMyEvents((function(prev){var idList=prev.map((function(item){return item.id})),newId=Math.max.apply(Math,(0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_16__.A)(idList))+1;return[].concat((0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_16__.A)(prev),[Object.assign({},event,{id:newId})])}))}),[setMyEvents]),onDropFromOutside=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(_ref3){var start=_ref3.start,end=_ref3.end,isAllDay=_ref3.allDay;if("undroppable"!==draggedEvent){var name=draggedEvent.name,event={title:formatName(name,counters[name]),start:start,end:end,isAllDay:isAllDay};setDraggedEvent(null),setCounters((function(prev){var count=prev[name];return Object.assign({},prev,(0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_17__.A)({},name,count+1))})),newEvent(event)}else setDraggedEvent(null)}),[draggedEvent,counters,setDraggedEvent,setCounters,newEvent]),resizeEvent=(0,react__WEBPACK_IMPORTED_MODULE_7__.useCallback)((function(_ref4){var event=_ref4.event,start=_ref4.start,end=_ref4.end;setMyEvents((function(prev){var _prev$find2,existing=null!==(_prev$find2=prev.find((function(ev){return ev.id===event.id})))&&void 0!==_prev$find2?_prev$find2:{},filtered=prev.filter((function(ev){return ev.id!==event.id}));return[].concat((0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_16__.A)(filtered),[Object.assign({},existing,{start:start,end:end})])}))}),[setMyEvents]),defaultDate=(0,react__WEBPACK_IMPORTED_MODULE_7__.useMemo)((function(){return new Date(2015,3,12)}),[]);return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(react__WEBPACK_IMPORTED_MODULE_7__.Fragment,{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(_DemoLink_component__WEBPACK_IMPORTED_MODULE_11__.A,{fileName:"dndOutsideSource",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)(_resources_Card__WEBPACK_IMPORTED_MODULE_10__.A,{className:"dndOutsideSourceExample",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)("div",{className:"inner",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)("h4",{children:"Outside Drag Sources"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)("p",{children:"Lighter colored events, in the Calendar, have an `isDraggable` key of `false`."}),Object.entries(counters).map((function(_ref5){var _ref6=(0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_15__.A)(_ref5,2),name=_ref6[0],count=_ref6[1];return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)("div",{draggable:"true",onDragStart:function onDragStart(){return handleDragStart({title:formatName(name,count),name:name})},children:formatName(name,count)},name)})),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)("div",{draggable:"true",onDragStart:function onDragStart(){return handleDragStart("undroppable")},children:"Draggable but not for calendar."})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)("div",{children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsxs)("label",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)("input",{type:"checkbox",checked:displayDragItemInCell,onChange:handleDisplayDragItemInCell}),"Display dragged item in cell while dragging over"]})})]})}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)("div",{className:"height600",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_14__.jsx)(DragAndDropCalendar,{defaultDate:defaultDate,defaultView:react_big_calendar__WEBPACK_IMPORTED_MODULE_9__.Pp.MONTH,dragFromOutsideItem:displayDragItemInCell?dragFromOutsideItem:null,draggableAccessor:"isDraggable",eventPropGetter:eventPropGetter,events:myEvents,localizer:localizer,onDropFromOutside:onDropFromOutside,onDragOver:customOnDragOver,onEventDrop:moveEvent,onEventResize:resizeEvent,onSelectSlot:newEvent,resizable:!0,selectable:!0})})]})}DnDOutsideResource.displayName="DnDOutsideResource",DnDOutsideResource.__docgenInfo={description:"",methods:[],displayName:"DnDOutsideResource",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/dndOutsideSource.js"]={name:"DnDOutsideResource",docgenInfo:DnDOutsideResource.__docgenInfo,path:"stories/demos/exampleCode/dndOutsideSource.js"})},"./stories/demos/exampleCode/resizable.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return Resizable}});var _babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_14__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"),_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/slicedToArray.js"),react__WEBPACK_IMPORTED_MODULE_5__=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/core-js/modules/es.array.find.js"),__webpack_require__("./node_modules/core-js/modules/es.array.filter.js"),__webpack_require__("./node_modules/core-js/modules/es.array.concat.js"),__webpack_require__("./node_modules/react/index.js")),_resources_events__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./stories/resources/events.js"),react_big_calendar__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__("./src/index.js"),_resources_Card__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__("./stories/resources/Card.js"),_DemoLink_component__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__("./stories/DemoLink.component.js"),_src_addons_dragAndDrop__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__("./src/addons/dragAndDrop/index.js"),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__=(__webpack_require__("./src/addons/dragAndDrop/styles.scss"),__webpack_require__("./node_modules/react/jsx-runtime.js")),DragAndDropCalendar=(0,_src_addons_dragAndDrop__WEBPACK_IMPORTED_MODULE_10__.A)(react_big_calendar__WEBPACK_IMPORTED_MODULE_7__.Vv),adjEvents=_resources_events__WEBPACK_IMPORTED_MODULE_6__.A.map((function(it,ind){return Object.assign({},it,{isResizable:ind%2==0,isDraggable:ind%2==0})}));function Resizable(_ref){var localizer=_ref.localizer,_useState=(0,react__WEBPACK_IMPORTED_MODULE_5__.useState)(adjEvents),_useState2=(0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_13__.A)(_useState,2),myEvents=_useState2[0],setMyEvents=_useState2[1],_useState3=(0,react__WEBPACK_IMPORTED_MODULE_5__.useState)(!0),_useState4=(0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_13__.A)(_useState3,2),resizable=_useState4[0],setResizable=_useState4[1],eventPropGetter=(0,react__WEBPACK_IMPORTED_MODULE_5__.useCallback)((function(event){return Object.assign({},(!resizable||!event.isResizable)&&{className:"nonResizable"})}),[resizable]),toggleResizing=(0,react__WEBPACK_IMPORTED_MODULE_5__.useCallback)((function(){return setResizable((function(prev){return!prev}))}),[]),resizeEvent=(0,react__WEBPACK_IMPORTED_MODULE_5__.useCallback)((function(_ref2){var event=_ref2.event,start=_ref2.start,end=_ref2.end;setMyEvents((function(prev){var _prev$find,existing=null!==(_prev$find=prev.find((function(ev){return ev.id===event.id})))&&void 0!==_prev$find?_prev$find:{},filtered=prev.filter((function(ev){return ev.id!==event.id}));return[].concat((0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_14__.A)(filtered),[Object.assign({},existing,{start:start,end:end})])}))}),[setMyEvents]),defaultDate=(0,react__WEBPACK_IMPORTED_MODULE_5__.useMemo)((function(){return new Date(2015,3,12)}),[]);return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(react__WEBPACK_IMPORTED_MODULE_5__.Fragment,{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_DemoLink_component__WEBPACK_IMPORTED_MODULE_9__.A,{fileName:"dndOutsideSource",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(_resources_Card__WEBPACK_IMPORTED_MODULE_8__.A,{className:"dndOutsideSourceExample",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)("div",{className:"inner",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("h4",{children:"Resizing"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)("p",{children:["Events allowing resizing will show drag handles when you mouse over them.",(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("br",{}),"In this example, lighter colored events are not resizable.",(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("br",{}),"Toggling the checkbox to the right will turn off/on resizing all together."]})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("div",{children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)("label",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("input",{type:"checkbox",checked:resizable,onChange:toggleResizing}),"Allow Event Resizing"]})})]})}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("div",{className:"height600",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(DragAndDropCalendar,{defaultDate:defaultDate,defaultView:react_big_calendar__WEBPACK_IMPORTED_MODULE_7__.Pp.MONTH,draggableAccessor:"isDraggable",eventPropGetter:eventPropGetter,events:myEvents,localizer:localizer,onEventResize:resizeEvent,resizable:resizable,resizableAccessor:resizable?"isResizable":"fakeKey"})})]})}Resizable.displayName="Resizable",Resizable.__docgenInfo={description:"",methods:[],displayName:"Resizable",props:{localizer:{description:"",type:{name:"instanceOf",value:"DateLocalizer"},required:!1}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/demos/exampleCode/resizable.js"]={name:"Resizable",docgenInfo:Resizable.__docgenInfo,path:"stories/demos/exampleCode/resizable.js"})},"./stories/helpers/createEvents.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";function createEvents(){var idx=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,date=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Date,y=date.getFullYear(),m=date.getMonth(),d=date.getDate();return[[{title:"Event 1",start:new Date(y,m,d,10,30,0,0),end:new Date(y,m,d,13,30,0,0)},{title:"Event 2",start:new Date(y,m,d,10,30,0,0),end:new Date(y,m,d,13,30,0,0)},{title:"Event 3",start:new Date(y,m,d,10,30,0,0),end:new Date(y,m,d,12,30,0,0)},{title:"Event 4",start:new Date(y,m,d,8,30,0,0),end:new Date(y,m,d,18,0,0,0)},{title:"Event 5",start:new Date(y,m,d,15,30,0,0),end:new Date(y,m,d,16,0,0,0)},{title:"Event 6",start:new Date(y,m,d,11,0,0,0),end:new Date(y,m,d,12,0,0,0)},{title:"Event 7",start:new Date(y,m,d,1,0,0,0),end:new Date(y,m,d,2,0,0,0)}],[{title:"Event 1",start:new Date(y,m,d,9,30,0,0),end:new Date(y,m,d,15,30,0,0)},{title:"Event 2",start:new Date(y,m,d,11,0,0,0),end:new Date(y,m,d,13,0,0,0)},{title:"Event 3",start:new Date(y,m,d,9,30,0,0),end:new Date(y,m,d,11,30,0,0)},{title:"Event 4",start:new Date(y,m,d,9,30,0,0),end:new Date(y,m,d,10,30,0,0)},{title:"Event 5",start:new Date(y,m,d,10,0,0,0),end:new Date(y,m,d,11,0,0,0)},{title:"Event 6",start:new Date(y,m,d,10,0,0,0),end:new Date(y,m,d,11,0,0,0)},{title:"Event 7",start:new Date(y,m,d,9,30,0,0),end:new Date(y,m,d,10,30,0,0)},{title:"Event 8",start:new Date(y,m,d,9,30,0,0),end:new Date(y,m,d,10,30,0,0)},{title:"Event 9",start:new Date(y,m,d,9,30,0,0),end:new Date(y,m,d,10,30,0,0)},{title:"Event 10",start:new Date(y,m,d,10,30,0,0),end:new Date(y,m,d,12,30,0,0)},{title:"Event 11",start:new Date(y,m,d,12,0,0,0),end:new Date(y,m,d,13,0,0,0)},{title:"Event 12",start:new Date(y,m,d,12,0,0,0),end:new Date(y,m,d,13,0,0,0)},{title:"Event 13",start:new Date(y,m,d,12,0,0,0),end:new Date(y,m,d,13,0,0,0)},{title:"Event 14",start:new Date(y,m,d,12,0,0,0),end:new Date(y,m,d,13,0,0,0)},{title:"Event 15",start:new Date(y,m,d,6,30,0,0),end:new Date(y,m,d,8,0,0,0)},{title:"Event 16",start:new Date(y,m,d,16,0,0,0),end:new Date(y,m,d,17,30,0,0)}],[{title:"Event 1",start:new Date(y,m,d,2,30,0,0),end:new Date(y,m,d,4,30,0,0)},{title:"Event 2",start:new Date(y,m,d,2,30,0,0),end:new Date(y,m,d,3,30,0,0)},{title:"Event 3",start:new Date(y,m,d,3,0,0,0),end:new Date(y,m,d,4,0,0,0)}],[{title:"Event 1",start:new Date(y,m,d,6,30,0,0),end:new Date(y,m,d,7,0,0,0)},{title:"Event 2",start:new Date(y,m,d,8,0,0,0),end:new Date(y,m,d,17,0,0,0)},{title:"Event 3",start:new Date(y,m,d,8,0,0,0),end:new Date(y,m,d,11,0,0,0)},{title:"Event 4",start:new Date(y,m,d,8,0,0,0),end:new Date(y,m,d,12,0,0,0)},{title:"Event 5",start:new Date(y,m,d,10,0,0,0),end:new Date(y,m,d,13,0,0,0)},{title:"Event 6",start:new Date(y,m,d,10,0,0,0),end:new Date(y,m,d,13,0,0,0)},{title:"Event 7",start:new Date(y,m,d,10,0,0,0),end:new Date(y,m,d,13,0,0,0)}],[{title:"Event 1",start:new Date(y,m,d,19,0,0,0),end:new Date(y,m,d,20,55,0,0)},{title:"Event 2",start:new Date(y,m,d,19,15,0,0),end:new Date(y,m,d,20,15,0,0)},{title:"Event 3",start:new Date(y,m,d,19,45,0,0),end:new Date(y,m,d,22,30,0,0)},{title:"Event 4",start:new Date(y,m,d,20,45,0,0),end:new Date(y,m,d,22,5,0,0)},{title:"Event 5",start:new Date(y,m,d,10,0,0,0),end:new Date(y,m,d,11,0,0,0)},{title:"Event 6",start:new Date(y,m,d,10,30,0,0),end:new Date(y,m,d,11,30,0,0)}]][idx]}__webpack_require__.d(__webpack_exports__,{A:function(){return createEvents}})},"./stories/helpers/index.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{AZ:function(){return events},ES:function(){return resources},GI:function(){return resourceEvents},Mf:function(){return backgroundEvents},Pp:function(){return _src__WEBPACK_IMPORTED_MODULE_5__.Pp},Vv:function(){return Calendar},zm:function(){return DragAndDropCalendar}});__webpack_require__("./node_modules/core-js/modules/es.object.assign.js");var _storybook_addon_actions__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@storybook/addon-actions/dist/esm/index.js"),moment__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./node_modules/moment/moment.js"),moment__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_2__),_src__WEBPACK_IMPORTED_MODULE_5__=(__webpack_require__("./node_modules/moment-timezone/index.js"),__webpack_require__("./node_modules/react/index.js"),__webpack_require__("./src/index.js")),_src_addons_dragAndDrop__WEBPACK_IMPORTED_MODULE_8__=(__webpack_require__("./src/sass/styles.scss"),__webpack_require__("./src/addons/dragAndDrop/styles.scss"),__webpack_require__("./src/addons/dragAndDrop/index.js")),react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__("./node_modules/react/jsx-runtime.js"),localizer=(0,_src__WEBPACK_IMPORTED_MODULE_5__.ye)(moment__WEBPACK_IMPORTED_MODULE_2___default()),Calendar=function Calendar(props){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("div",{style:{height:650},children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_src__WEBPACK_IMPORTED_MODULE_5__.Vv,Object.assign({localizer:localizer},props))})};Calendar.displayName="Calendar";var DragAndDropCalendar=(0,_src_addons_dragAndDrop__WEBPACK_IMPORTED_MODULE_8__.A)(Calendar),DragableCalendar=function DragableCalendar(props){return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(DragAndDropCalendar,Object.assign({popup:!0,selectable:!0,localizer:localizer,onEventDrop:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_1__.action)("event dropped"),onSelectEvent:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_1__.action)("event selected"),onSelectSlot:(0,_storybook_addon_actions__WEBPACK_IMPORTED_MODULE_1__.action)("slot selected")},props))};DragableCalendar.displayName="DragableCalendar";var events=[{title:"test",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().add(1,"days").subtract(5,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().add(1,"days").subtract(4,"hours").toDate(),allDay:!1},{title:"test larger",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(5,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(10,"hours").toDate(),allDay:!1},{title:"test larger",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(15,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(23,"hours").toDate(),allDay:!1},{title:"test all day",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(1,"day").toDate(),allDay:!0},{title:"test 2 days",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(2,"days").toDate(),allDay:!0},{title:"test multi-day",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().add(3,"days").toDate(),allDay:!1}],backgroundEvents=[{title:"test background event",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(2,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(12,"hours").toDate(),allDay:!1}],resourceEvents=[{title:"event 1",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(1,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(2,"hours").toDate(),allDay:!1,resourceId:1},{title:"event 2",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(3,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(4,"hours").toDate(),allDay:!1,resourceId:[1,2]},{title:"event 3",start:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(1,"hours").toDate(),end:moment__WEBPACK_IMPORTED_MODULE_2___default()().startOf("day").add(3,"hours").toDate(),allDay:!1,resourceId:3}],resources=[{id:1,name:"Resource One"},{id:2,name:"Resource Two"},{id:3,name:"Resource Three"}];Calendar.__docgenInfo={description:"",methods:[],displayName:"Calendar"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/helpers/index.js"]={name:"Calendar",docgenInfo:Calendar.__docgenInfo,path:"stories/helpers/index.js"}),DragableCalendar.__docgenInfo={description:"",methods:[],displayName:"DragableCalendar"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/helpers/index.js"]={name:"DragableCalendar",docgenInfo:DragableCalendar.__docgenInfo,path:"stories/helpers/index.js"})},"./stories/props/storyDefaults.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{_:function(){return resourceAccessorStoryArgs},o:function(){return accessorStoryArgs}});var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),moment__WEBPACK_IMPORTED_MODULE_2__=(__webpack_require__("./node_modules/core-js/modules/es.array.map.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/moment/moment.js")),moment__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_2__),_src__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./src/index.js"),_resources_events__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./stories/resources/events.js"),_resources_resourceEvents__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./stories/resources/resourceEvents.js"),_excluded=["start","end","title","allDay"],resourceEvents=_resources_resourceEvents__WEBPACK_IMPORTED_MODULE_5__.A.events,resources=_resources_resourceEvents__WEBPACK_IMPORTED_MODULE_5__.A.list,mLocalizer=(0,_src__WEBPACK_IMPORTED_MODULE_3__.ye)(moment__WEBPACK_IMPORTED_MODULE_2___default()),adjusted=_resources_events__WEBPACK_IMPORTED_MODULE_4__.A.map((function(event){var startDate=event.start,endDate=event.end,label=event.title,allDayEvent=event.allDay,other=(0,_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_6__.A)(event,_excluded);return Object.assign({},other,{startDate:startDate,endDate:endDate,label:label,allDayEvent:allDayEvent})})),accessorStoryArgs={allDayAccessor:"allDayEvent",defaultDate:new Date(2015,3,13),endAccessor:"endDate",events:adjusted,localizer:mLocalizer,titleAccessor:"label",tooltipAccessor:"label",startAccessor:"startDate"},adjustedResources=resources.map((function(_ref){return{Id:_ref.id,Title:_ref.title}})),resourceAccessorStoryArgs={defaultDate:new Date(2015,3,4),defaultView:_src__WEBPACK_IMPORTED_MODULE_3__.Pp.DAY,events:resourceEvents,localizer:mLocalizer,resourceIdAccessor:"Id",resources:adjustedResources,resourceTitleAccessor:"Title"}},"./stories/resources/Card.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__("./node_modules/react/index.js");var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/react/jsx-runtime.js");function Card(_ref){var children=_ref.children,className=_ref.className,style=_ref.style;return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)("div",{className:"".concat(className||""," card"),style:style,children:children})}Card.displayName="Card",Card.__docgenInfo={description:"",methods:[],displayName:"Card"},__webpack_exports__.A=Card,"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["stories/resources/Card.js"]={name:"Card",docgenInfo:Card.__docgenInfo,path:"stories/resources/Card.js"})},"./stories/resources/customComponents.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{A:function(){return resources_customComponents}});var defineProperty=__webpack_require__("./node_modules/@babel/runtime/helpers/esm/defineProperty.js"),react=__webpack_require__("./node_modules/react/index.js"),esm=__webpack_require__("./node_modules/@storybook/addon-actions/dist/esm/index.js"),jsx_runtime=(__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/jsx-runtime.js")),DayColumnWrapper=function DayColumnWrapper(_ref){var children=_ref.children,className=_ref.className,style=_ref.style,innerRef=_ref.innerRef;return(0,jsx_runtime.jsx)("div",{className:className,style:style,ref:innerRef,children:children})};DayColumnWrapper.displayName="DayColumnWrapper";var CustomDayColumnWrapper=react.forwardRef((function(dayColumnWrapperProps,ref){var style={borderColor:dayColumnWrapperProps.resource%2==0?"red":"#fff",borderStyle:"solid",borderWidth:"1px"};return(0,jsx_runtime.jsx)(DayColumnWrapper,Object.assign({},dayColumnWrapperProps,{style:style,innerRef:ref}))})),resources_customComponents=(0,defineProperty.A)((0,defineProperty.A)({dateCellWrapper:function dateCellWrapper(dateCellWrapperProps){var hasAlert=!!dateCellWrapperProps.range&&dateCellWrapperProps.range.some((function(date){return date.getDate()%12==0})),style={display:"flex",flex:1,borderLeft:"1px solid #DDD",backgroundColor:hasAlert?"#f5f5dc":"#fff"};return(0,jsx_runtime.jsxs)("div",{style:style,children:[hasAlert&&(0,jsx_runtime.jsx)("a",{onClick:(0,esm.action)("custom dateCellWrapper component clicked"),children:"Click me"}),dateCellWrapperProps.children]})},dayColumnWrapper:CustomDayColumnWrapper,timeSlotWrapper:function timeSlotWrapper(timeSlotWrapperProps){var hasCustomInfo=!!timeSlotWrapperProps.value&&4===timeSlotWrapperProps.value.getHours(),style={display:"flex",flex:1,backgroundColor:hasCustomInfo?"#f5f5dc":"#fff"};return(0,jsx_runtime.jsxs)("div",{style:style,children:[hasCustomInfo&&"Custom Day Wrapper",timeSlotWrapperProps.children]})},eventWrapper:function eventWrapper(eventWrapperProps){var style={border:"4px solid",borderColor:eventWrapperProps.event.start.getHours()%2==0?"green":"red",padding:"5px"};return(0,jsx_runtime.jsx)("div",{style:style,children:eventWrapperProps.children})}},"timeSlotWrapper",(function timeSlotWrapper(timeSlotWrapperProps){var style=null===timeSlotWrapperProps.resource||0!==timeSlotWrapperProps.value.getMinutes()?{}:{border:"4px solid",backgroundColor:timeSlotWrapperProps.value.getHours()>=8&&timeSlotWrapperProps.value.getHours()<=17?"green":"red",padding:"5px"};return(0,jsx_runtime.jsx)("div",{style:style,children:timeSlotWrapperProps.children})})),"timeGutterWrapper",(function timeGutterWrapper(timeGutterWrapperProps){return(0,jsx_runtime.jsx)("div",{id:"my-custom-time-gutter-wrapper",style:{backgroundColor:"gray"},children:timeGutterWrapperProps.children})}))},"./stories/resources/events.js":function(__unused_webpack_module,__webpack_exports__){"use strict";var now=new Date;__webpack_exports__.A=[{id:1,title:"Long Event",start:new Date(2015,3,7),end:new Date(2015,3,10)},{id:2,title:"DTS STARTS",start:new Date(2016,2,13,0,0,0),end:new Date(2016,2,20,0,0,0)},{id:3,title:"DTS ENDS",start:new Date(2016,10,6,0,0,0),end:new Date(2016,10,13,0,0,0)},{id:4,title:"Some Event",start:new Date(2015,3,9,0,0,0),end:new Date(2015,3,9,0,0,0),allDay:!0},{id:92,title:"Some Other Event",start:new Date(2015,3,9,8,0,0),end:new Date(2015,3,10,11,30,0)},{id:5,title:"Conference",start:new Date(2015,3,11),end:new Date(2015,3,13),desc:"Big conference for important people"},{id:6,title:"Meeting",start:new Date(2015,3,12,10,30,0,0),end:new Date(2015,3,12,12,30,0,0),desc:"Pre-meeting meeting, to prepare for the meeting"},{id:7,title:"Lunch",start:new Date(2015,3,12,12,0,0,0),end:new Date(2015,3,12,13,0,0,0),desc:"Power lunch"},{id:8,title:"Meeting",start:new Date(2015,3,12,14,0,0,0),end:new Date(2015,3,12,15,0,0,0)},{id:9,title:"Happy Hour",start:new Date(2015,3,12,17,0,0,0),end:new Date(2015,3,12,17,30,0,0),desc:"Most important meal of the day"},{id:10,title:"Dinner",start:new Date(2015,3,12,20,0,0,0),end:new Date(2015,3,12,21,0,0,0)},{id:11,title:"Planning Meeting with Paige",start:new Date(2015,3,13,8,0,0),end:new Date(2015,3,13,10,30,0)},{id:11.1,title:"Inconvenient Conference Call",start:new Date(2015,3,13,9,30,0),end:new Date(2015,3,13,12,0,0)},{id:11.2,title:"Project Kickoff - Lou's Shoes",start:new Date(2015,3,13,11,30,0),end:new Date(2015,3,13,14,0,0)},{id:11.3,title:"Quote Follow-up - Tea by Tina",start:new Date(2015,3,13,15,30,0),end:new Date(2015,3,13,16,0,0)},{id:12,title:"Late Night Event",start:new Date(2015,3,17,19,30,0),end:new Date(2015,3,18,2,0,0)},{id:12.5,title:"Late Same Night Event",start:new Date(2015,3,17,19,30,0),end:new Date(2015,3,17,23,30,0)},{id:13,title:"Multi-day Event",start:new Date(2015,3,20,19,30,0),end:new Date(2015,3,22,2,0,0)},{id:14,title:"Today",start:new Date((new Date).setHours((new Date).getHours()-3)),end:new Date((new Date).setHours((new Date).getHours()+3))},{id:15,title:"Point in Time Event",start:now,end:now},{id:16,title:"Video Record",start:new Date(2015,3,14,15,30,0),end:new Date(2015,3,14,19,0,0)},{id:17,title:"Dutch Song Producing",start:new Date(2015,3,14,16,30,0),end:new Date(2015,3,14,20,0,0)},{id:18,title:"Itaewon Meeting",start:new Date(2015,3,14,16,30,0),end:new Date(2015,3,14,17,30,0)},{id:19,title:"Online Coding Test",start:new Date(2015,3,14,17,30,0),end:new Date(2015,3,14,20,30,0)},{id:20,title:"An overlapped Event",start:new Date(2015,3,14,17,0,0),end:new Date(2015,3,14,18,30,0)},{id:21,title:"Phone Interview",start:new Date(2015,3,14,17,0,0),end:new Date(2015,3,14,18,30,0)},{id:22,title:"Cooking Class",start:new Date(2015,3,14,17,30,0),end:new Date(2015,3,14,19,0,0)},{id:23,title:"Go to the gym",start:new Date(2015,3,14,18,30,0),end:new Date(2015,3,14,20,0,0)},{id:24,title:"DST ends on this day (Europe)",start:new Date(2022,9,30,0,0,0),end:new Date(2022,9,30,4,30,0)},{id:25,title:"DST ends on this day (America)",start:new Date(2022,10,6,0,0,0),end:new Date(2022,10,6,4,30,0)},{id:26,title:"DST starts on this day (America)",start:new Date(2023,2,12,0,0,0),end:new Date(2023,2,12,4,30,0)},{id:27,title:"DST starts on this day (Europe)",start:new Date(2023,2,26,0,0,0),end:new Date(2023,2,26,4,30,0)}]},"./stories/resources/resourceEvents.js":function(__unused_webpack_module,__webpack_exports__){"use strict";__webpack_exports__.A={events:[{title:"Rencontre",resourceId:"a",start:new Date(2015,3,2,5,30,0,0),end:new Date(2015,3,2,10,30,0,0)},{title:"Another Meeting",resourceId:"b",start:new Date(2015,3,1,2,30,0,0),end:new Date(2015,3,1,4,30,0,0)},{title:"A",resourceId:"a",start:new Date(2015,3,4,5,30,0,0),end:new Date(2015,3,4,10,30,0,0)},{title:"B",resourceId:"b",start:new Date(2015,3,4,5,30,0,0),end:new Date(2015,3,4,10,30,0,0)},{title:"C",resourceId:"c",start:new Date(2015,3,4,5,30,0,0),end:new Date(2015,3,4,10,30,0,0)}],list:[{id:"a",title:"Room A"},{id:"b",title:"Room B"},{id:"c",title:"Room C"}]}},"./storybook-init-framework-entry.js":function(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__){"use strict";__webpack_require__("./node_modules/@storybook/react/dist/esm/client/index.js")},"./stories/AboutBigCalendar.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_demos_exampleCode_basic_js__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__("./stories/demos/exampleCode/basic.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"About Big Calendar",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"big-calendar"},"Big Calendar"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_demos_exampleCode_basic_js__WEBPACK_IMPORTED_MODULE_6__.A,{showDemoLink:!1,style:{marginBottom:15},mdxType:"Basic"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h2",{id:"introduction"},"Introduction"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Big Calendar is a full featured Calendar component for managing events and dates. It uses modern ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"flexbox")," for layout, making it super responsive and performant. Leaving most of the layout heavy lifting to the browser."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Here you will find all of the documentation you need for implementing Big Calendar. We explain the basics of implementation, give you clear details and examples of the various props needed, and try to answer your questions on how you can use Big Calendar to implement custom scheduling solutions."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h2",{id:"getting-started"},"Getting Started"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"You can install Big Calendar via ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://yarnpkg.com/en/",target:"_blank",rel:"nofollow noopener noreferrer"},"yarn")," or ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://www.npmjs.com/",target:"_blank",rel:"nofollow noopener noreferrer"},"npm"),":"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"yarn:")," ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"yarn add react-big-calendar")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"npm:")," ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"npm install --save react-big-calendar")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"Note"),": Requires Node >= 18"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"When you include Big Calendar in your interface, you will need the core styles. We provide a precompiled style sheet (",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"react-big-calendar/lib/css/react-big-calendar.css"),") for you, or you can directly import the SASS into your implementation. For more information on this, see the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"guides-custom-styling",mdxType:"LinkTo"},"Custom Styling")," guide for more details."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Also make sure that your calendar's container element has a height, or the calendar won't be visible (see why below)."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Date internationalization and localization is ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"hard")," and Big Calendar doesn't even attempt to\nsolve that problem. Instead you can use one of the many excellent solutions already\nout there, via adapters called ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"localizers"),". Big Calendar comes with three localizers for use\nwith ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://github.com/jquery/globalize",target:"_blank",rel:"nofollow noopener noreferrer"},"Globalize.js"),", ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"http://momentjs.com/",target:"_blank",rel:"nofollow noopener noreferrer"},"Moment.js")," or ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://moment.github.io/luxon",target:"_blank",rel:"nofollow noopener noreferrer"},"Luxon"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Choose the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"localizer")," that best suits your needs, or write your own. Whatever you do, you'll need to set it up before you can use the calendar (you only need to set it up once)."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-jsx"},'import { Calendar, momentLocalizer } from \'react-big-calendar\'\nimport moment from \'moment\'\n\n// Setup the localizer by providing the moment (or globalize, or Luxon) Object\n// to the correct localizer.\nconst localizer = momentLocalizer(moment) // or globalizeLocalizer\n\nconst MyCalendar = (props) => (\n
\n \n
\n)\n')),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Once you've configured a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"localizer"),", the Calendar is ready to accept ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"dateFormat")," props. These props determine how dates will be displayed throughout the component and are specific to the localizer of your choice. For instance if you are using the Moment localizer, then any ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"http://momentjs.com/docs/#/displaying/format/",target:"_blank",rel:"nofollow noopener noreferrer"},"Moment format pattern")," is valid!"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"One thing to note is that, Big Calendar treats event start/end dates as an ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"exclusive")," range which means that the event spans up to, but not including, the end date. In the case of displaying events on whole days, end dates are rounded ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"up")," to the next day. So an event ending on ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Apr 8th 12:00:00 am")," will not appear on the 8th, whereas one ending\non ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Apr 8th 12:01:00 am")," will. If you want ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"inclusive")," ranges consider providing a function ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"end-accessor",mdxType:"LinkTo"},"endAccessor")," that returns the end date + 1 day for those events that end at midnight."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h2",{id:"next-steps"},"Next Steps"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"We have provided a number of ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"about-our-examples",mdxType:"LinkTo"},"Examples")," within this documentation, including individual examples of each and every ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props-full-prop-list",mdxType:"LinkTo"},"prop"),", as well as the Drag and Drop ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-introduction",mdxType:"LinkTo"},"Addon"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The documentation 'Canvas' tab, at the top of the page, will show you the component example for that specific piece of documentation. While in the 'Canvas' you may also have interactive controls in the 'Controls' panel, allowing you to play with a prop's different values."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The 'Docs' tab will contain additional information, special case scenarios, and the rendered example. Most of these examples contain a 'Show code' button (bottom right), or even a special link at the top to 'View Example Source Code'."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h2",{id:"join-the-community"},"Join the Community"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Help us improve Big Calendar! Join us on ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://join.slack.com/t/bigcalendar/shared_invite/zt-1ml1j99af-qIvqOfosMog1W7WxM0~j2Q",target:"_blank",rel:"nofollow noopener noreferrer"},"Slack"),"."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"About Big Calendar",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/AboutExamples.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"About Our Examples",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"about-our-examples"},"About Our Examples"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"We have attempted to provide best practice code examples for using Big Calendar."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Big Calendar is... well, "big". It has dozens of props, and can be configured in a lot of different ways to meet a wide number of use cases. It also has quite a number of subcomponents, and provides the ability to override most all of them.'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Because of this, it's important to think about how you initialize your properties as you pass them to Big Calendar. Let's look at a small example:"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// don't do this\n\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// do this\nconst {defaultDate} = useMemo(() => ({\n defaultDate: new Date(2015, 3, 13)\n}), [])\n//...\n\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Instantiating a new JS ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Date")," creates a new object. React will see this 'new' prop and re-render every subcomponent that relies upon ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"defaultDate"),", even if (technically) it did not change."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// don't do this\n setView(newView)} {...otherProps} />\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// and don't do this\nconst onView = (newView) => setView(newView)\n\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// do this\nconst onView = useCallback((newView) => setView(newView), [setView])\n\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"If a prop takes an ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Object"),", an ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Array"),", a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Date"),", a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Function"),", or any other non-simple variable type, it is always a good idea to memoize those values prior to passing them as props. Chances are that some prop or state change will trigger a re-render of your Calendar. How well you manage your props will affect overall render performance."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"About Our Examples",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/addons/addOns.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Addons/Introduction",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"addons"},"Addons"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'An "Addon" is some bit of code to enhance and expand the functionality of Big Calendar. These are typically provided by someone within the Big Calendar developer community.'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"In this section we document those Addons that we have included directly in the Big Calendar codebase. If you have additional Add-ons that you have created for Big Calendar please let us know and we may link it here in the documentation."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-introduction",mdxType:"LinkTo"},"Drag and Drop"))))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Addons/Introduction",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/addons/dragAndDrop/Introduction.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Addons/Drag and Drop/Introduction",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"drag-and-drop"},"Drag and Drop"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Creates a higher-order component (HOC) supporting drag & drop for moving and/or resizing of events:"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"import { Calendar } from 'react-big-calendar'\nimport withDragAndDrop from 'react-big-calendar/lib/addons/dragAndDrop'\nimport 'react-big-calendar/lib/addons/dragAndDrop/styles.css'\n\nconst DnDCalendar = withDragAndDrop(Calendar)\n\n/* ... */\n\nreturn (\n true}\n />\n)\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Set ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"resizable",mdxType:"LinkTo"},"resizable")," to false in your calendar if you don't want events to be resizable.\n",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"resizable")," is set to true by default."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The HOC adds ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-event-drop",mdxType:"LinkTo"},"onEventDrop"),", ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-event-resize",mdxType:"LinkTo"},"onEventResize"),", and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drag-start",mdxType:"LinkTo"},"onDragStart")," callback properties if the events are\nmoved or resized. These callbacks are called with these signatures:"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"function onEventDrop({event, start, end, allDay}) {...}\nfunction onEventResize({event, start, end, allDay}) {...}\nfunction onDragStart({event}) {...}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Moving and resizing of events has some subtlety which one should be aware of:"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",{parentName:"li"},'In some situations, non-allDay events are displayed in "row" format where they\nare rendered horizontally. This is the case for ALL events in a month view. It\nis also occurs with multi-day events in a day or week view (unless ',(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"show-multi-day-times",mdxType:"LinkTo"},"showMultiDayTimes"),"\nis set).")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",{parentName:"li"},"When dropping or resizing non-allDay events into a the header area or when\nresizing them horizontally because they are displayed in row format, their\ntimes are preserved, only their date is changed.")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",{parentName:"li"},"If you care about these corner cases, you can examine the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"allDay")," param supplied\nin the callback to determine how the user dropped or resized the event."))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Additionally, this HOC adds the callback props ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drop-from-outside",mdxType:"LinkTo"},"onDropFromOutside")," and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drag-over",mdxType:"LinkTo"},"onDragOver"),":"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",{parentName:"li"},"By default, the calendar will not respond to outside draggable items being dropped\nonto it. However, if ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drop-from-outside",mdxType:"LinkTo"},"onDropFromOutside")," callback is passed, then when draggable\nDOM elements are dropped on the calendar, the callback will fire, receiving an\nobject with start and end times, and an allDay boolean.")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",{parentName:"li"},"If ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drop-from-outside",mdxType:"LinkTo"},"onDropFromOutside")," is passed, but ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drag-over",mdxType:"LinkTo"},"onDragOver")," is not, any draggable event will be\ndroppable onto the calendar by default. On the other hand, if an ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onDragOver")," callback\n",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"is")," passed, then it can discriminate as to whether a draggable item is droppable on the\ncalendar. To designate a draggable item as droppable, call ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"event.preventDefault"),"\ninside ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onDragOver"),". If ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"event.preventDefault")," is not called in the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onDragOver"),"\ncallback, then the draggable item will not be droppable on the calendar."))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"function onDropFromOutside({ start, end, allDay }) {...}\nfunction onDragOver(DragEvent: SyntheticEvent) {...}\n")))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Addons/Drag and Drop/Introduction",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/addons/dragAndDrop/props/API.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Addons/Drag and Drop/props/Full Prop List",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"all-drag-and-drops-props"},"All Drag and Drops Props"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"oneventdrop"},"onEventDrop"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function ({ event, start, end, allDay }) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-event-drop",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"A callback fired when user drops an item from one slot to another from within the Calendar. Developers will typically use this method to update an item's ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"start")," and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"end")," in ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"ondragstart"},"onDragStart"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function ({ event, action, direction }) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drag-start",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"A callback fired when user begins to drag an event."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"ondropfromoutside"},"onDropFromOutside"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function ({ start, end, allDay }) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drop-from-outside",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"A callback fired when user drops an item onto the Calendar from outside of the Calendar. Developers will typically use this method to add new items to the Calendar's ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Important:")," The callback does ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"not")," receive the element being dropped. It only receives the details of the slot an element was dropped on."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"dragfromoutsideitem"},"dragFromOutsideItem"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function () => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"drag-from-outside-item",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"A callback to get a temporary ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"event")," to display in a slot in the process of dragging from outside. This is not required for Drag and Drop to function, but provides a nice visual cue to the user when dragging in an item from outside of the Calendar."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Tip: Toggle the checkbox, in the example, and drag an outside item in. Do this from both checkbox states to see the difference in effect."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"ondragover"},"onDragOver"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (dragEvent: SyntheticEvent) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-drag-over",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"If an ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onDragOver")," callback ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"is")," passed, then it can discriminate as to whether a draggable item is droppable on the calendar. To designate a draggable item as droppable, call ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"event.preventDefault")," inside ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onDragOver"),". If ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"event.preventDefault")," is not called in the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onDragOver")," callback, then the draggable item will not be droppable on the calendar."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"draggableaccessor"},"draggableAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string|function (event) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"() => true")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"draggable-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"When used, can determine whether an 'event' is draggable"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"resizable"},"resizable"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"true")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"resizable",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Determines if events may be resized on the Calendar. Used in conjunction with ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-event-resize",mdxType:"LinkTo"},"onEventResize"),". When used with the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"resizable-accessor",mdxType:"LinkTo"},"resizableAccessor")," the developer has even greater control."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note:")," ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"resizable")," events must also be draggable. You cannot resize an event with a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"draggable-accessor",mdxType:"LinkTo"},"draggableAccessor")," prop of ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"false"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"oneventresize"},"onEventResize"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function ({ event, start, end }) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"on-event-resize",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"A callback fired when user resizes an event. Developers will typically use this method to update an item's ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"start")," and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"end")," in ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"resizable",mdxType:"LinkTo"},"resizable")," prop must be ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"true")," (the default) to use the method."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note:")," ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"resizable")," events must also be draggable. You cannot resize an event with a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"draggable-accessor",mdxType:"LinkTo"},"draggableAccessor")," prop of ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"false"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"resizableaccessor"},"resizableAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string|function (event) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"() => true")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"resizable-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Determines if an event is resizable."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note:")," ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"resizable")," events must also be draggable. You cannot resize an event with a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-props",story:"draggable-accessor",mdxType:"LinkTo"},"draggableAccessor")," prop of ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"false"),"."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Addons/Drag and Drop/props/Full Prop List",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/demos/dragAndDrop.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Examples/Drag and Drop",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"drag-and-drop"},"Drag and Drop"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-drag-and-drop-introduction",mdxType:"LinkTo"},"Drag and Drop Examples")," have been moved into the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"addons-introduction",mdxType:"LinkTo"},"AddOns")," section of the documentation"))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Examples/Drag and Drop",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/guides/CustomStyling.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=(__webpack_require__("./node_modules/@storybook/addon-links/react.js"),["components"]);function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Guides/Custom Styling",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"custom-styling"},"Custom Styling"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Out of the box, you can include the compiled CSS files and be up and running. But, sometimes, you may want to style Big Calendar to match your application styling. For this reason, SASS files are included with Big Calendar."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-sass"},"@import 'react-big-calendar/lib/sass/styles';\n@import 'react-big-calendar/lib/addons/dragAndDrop/styles'; // if using DnD\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"SASS implementation provides a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"variables")," file containing color and sizing variables that you can update to fit your application. Note: Changing and/or overriding styles can cause rendering issues with your Big Calendar. Carefully test each change accordingly."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Guides/Custom Styling",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/guides/CustomView.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Guides/Creating Custom Views",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"creating-a-custom-view"},"Creating A Custom View"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"It is possible to override an existing Calendar ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view"),", or even create a new ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")," all together, by adhering to a specific interface."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"examples",story:"example-9",mdxType:"LinkTo"},"View An Example"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"First build your custom ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")," component. This could be based off an existing component, or something completely custom."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"import React, {useMemo} from 'react'\nimport PropTypes from 'prop-types'\nimport { Navigate } from 'react-big-calendar'\nimport TimeGrid from 'react-big-calendar/lib/TimeGrid'\n\nexport default function CustomWeekView({\n date,\n localizer,\n max = localizer.endOf(new Date(), 'day'),\n min = localizer.startOf(new Date(), 'day'),\n scrollToTime = localizer.startOf(new Date(), 'day'),\n ...props\n}) {\n const currRange = useMemo(\n () => CustomWeekView.range(date, { localizer }),\n [date, localizer]\n )\n\n return (\n \n )\n}\n\nCustomWeekView.propTypes = {\n date: PropTypes.instanceOf(Date).isRequired,\n localizer: PropTypes.object,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n scrollToTime: PropTypes.instanceOf(Date),\n}\n\nCustomWeekView.range = (date, { localizer }) => {\n const start = date\n const end = localizer.add(start, 2, 'day')\n\n let current = start\n const range = []\n\n while (localizer.lte(current, end, 'day')) {\n range.push(current)\n current = localizer.add(current, 1, 'day')\n }\n\n return range\n}\n\nCustomWeekView.navigate = (date, action, { localizer }) => {\n switch (action) {\n case Navigate.PREVIOUS:\n return localizer.add(date, -3, 'day')\n\n case Navigate.NEXT:\n return localizer.add(date, 3, 'day')\n\n default:\n return date\n }\n}\n\nCustomWeekView.title = (date, { localizer }) => {\n const [start, ...rest] = CustomWeekView.range(date, { localizer })\n return localizer.format({ start, end: rest.pop() }, 'dayRangeHeaderFormat')\n}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Pay special attention to the additional static methods attached to your component. As static methods, they have no concept of ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"this"),", and have specific arguments that will be passed into them."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"interface View {\n static title(date: Date, { formats: DateFormat[], culture: string?, ...props }): string\n static navigate(date: Date, action: 'PREV' | 'NEXT' | 'DATE'): Date\n static range?(date: Date, { localizer: DateLocalizer, ...props }): array\n}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"To implement your custom ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view"),", include it in your ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"views",mdxType:"LinkTo"},"views")," prop."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"import CustomWeekView from './CustomWeekView'\n//...\nconst {views, ...otherProps} = useMemo(() => ({\n views: {\n month: true,\n week: CustomWeekView,\n day: true\n },\n // ... other props\n}), [])\n//...\n\n")))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Guides/Creating Custom Views",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/guides/Dates.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Guides/Understanding Dates",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"understanding-dates"},"Understanding Dates"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Big Calendar is all about dates and times. Probably one of the easiest things that beginners miss, when first implementing Big Calendar, is that we ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"require")," true JS ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date",target:"_blank",rel:"nofollow noopener noreferrer"},"Date")," objects in our ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"Full Prop List",mdxType:"LinkTo"},"props")," and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"event")," definitions."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"It is ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"up to the developer")," to handle translating date/time values ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"to and from JS ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"strong"},"Date")," format"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"What does this mean?"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// will cause errors\nconst defaultDate = useMemo(() => '2015-04-12T13:45:00-05:00', [])\n\n// will work as expected\nconst defaultDate = useMemo(() => new Date('2015-04-12T13:45:00-05:00'), [])\n\n// will never display in the Calendar\nconst events = [\n {\n title: 'My Event'\n start: '2015-04-12T13:45:00-05:00',\n end: '2015-04-12T14:00:00-05:00'\n }\n]\n\n// what you must have is this\nconst events = [\n {\n title: 'My Event'\n start: new Date('2015-04-12T13:45:00-05:00'),\n end: new Date('2015-04-12T14:00:00-05:00')\n }\n]\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The other thing to remember is that the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Date"),"s you provide to the Calendar will, by default, be displayed in the browser's native local timezone and culture, regardless of any offsets. This is how JS ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Date"),"s work in browsers today. If you need to display dates and times in a specific timezone, other than the browser native, then you should review our ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"guides-timezones",mdxType:"LinkTo"},"Timezones Guide")," on using a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"localiizer",mdxType:"LinkTo"},"localizer")," that supports timezone conversions."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Side Note:")," Storing your date/time values in UTC (Zulu) date format (YYYY-MM-DDTHH:mm:ssZ) will make these types of transformations much easier to work with."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Guides/Understanding Dates",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/guides/Timezones.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Guides/Timezones",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"dealing-with-time-zones"},"Dealing With Time Zones"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Time Zones are... ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"hard"),", and while changing the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"culture")," will help with internationalization and localization, it does not adjust the dates for a specific time zone. Javascript Date objects don't really support time zone switching natively, and date math gets ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"very")," complicated. Thankfully Big Calendar does support ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"moment")," as a localizer, so if you use ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://momentjs.com/timezone/",target:"_blank",rel:"nofollow noopener noreferrer"},"moment-timezone")," you can get your events to display relevant to a time zone other than the browser native."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"To change your events to display as a specific time zone, you must ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://momentjs.com/timezone/docs/#/using-timezones/default-timezone/",target:"_blank",rel:"nofollow noopener noreferrer"},"change moment's default timezone")," for all dates, ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"using an IANA time zone"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-jsx"},"import { Calendar, momentLocalizer } from 'react-big-calendar'\nimport moment from 'moment'\nimport 'moment-timezone' // or 'moment-timezone/builds/moment-timezone-with-data[-datarange].js'. See their docs\n\n// Set the IANA time zone you want to use\nmoment.tz.setDefault('Europe/Paris')\n\n// Setup the localizer by providing the moment Object\n// to the correct localizer.\nconst localizer = momentLocalizer(moment) // or globalizeLocalizer\n\nconst MyCalendar = (props) => (\n
\n \n
\n)\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"momentLocalizer")," will now handle all dates and date math as if the date is in the timezone you specified. It is important to note that ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://momentjs.com/timezone/docs/#/using-timezones/default-timezone/",target:"_blank",rel:"nofollow noopener noreferrer"},"changing moment's default timezone")," affects all dates, created by moment, from that point forward, so you may want to reset the default when your component unmounts. And, if switching timezones 'on-the-fly', you want to update your ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer")," and any Date based props (min, max, getNow, etc) at the same time."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note:")," The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"luxonLocalizer")," and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"dayjsLocalizer")," operate in a similar fashion. View their respective demos and source for examples of their usage."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Guides/Timezones",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/guides/localizer.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"Guides/Localizers",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"what-is-a-localizer"},"What is a Localizer?"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"You have probably noticed that your Big Calendar implementations require a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"localizer")," prop. The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer")," is needed for applying formatting and culture (i18n) to your date displays throughout the Calendar."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Now the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer")," also handles all internal date math, utilizing the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer")," you provide. This is how the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://momentjs.com/",target:"_blank",rel:"nofollow noopener noreferrer"},"moment")," and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://moment.github.io/luxon/#/",target:"_blank",rel:"nofollow noopener noreferrer"},"Luxon")," localizers handle timezones, and how all of them handle things like Daylight Savings Time. Most components receive the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer")," as a prop, meaning that your override components can also take advantage of these features.\nEach ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer"),", when created, creates an instance of ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"DateLocalizer")," class, and each one has a normalized group of functions and props available for manipulating dates."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"add(date:Date, adder:number, unit:string) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"ceil(date:Date, unit:string) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"continuesAfter(start:Date, end:Date, last:Date) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"continuesPrior(start:Date, first:Date) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"diff(a:Date, b:Date, unit:string) => number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"endOf(date:Date, unit:string) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"eq(a:Date, b:Date, unit:string) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"firstVisibleDay(date:Date) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"format(value:Date, format:string) => string"),","),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"formats:object")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"getDstOffset(start:Date, end:Date) => number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"getMinutesFromMidnight(start:Date) => number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"getSlotDate(dt:Date, minutesFromMidnight:number, offset:number) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"getTimezoneOffset(date:Date) => number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"getTotalMin(start:Date, end:Date) => number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"gt(a:Date, b:Date, unit:string) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"gte(a:Date, b:Date, unit:string) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"inEventRange({event: {start:Date, end:Date}, range: {start:Date, end:Date}}) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"inRange(day:Date, start:Date, end:Date, unit:string) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"isSameDate(date1:Date, date2:Date) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"lastVisibleDay(date:Date) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"lt(a:Date, b:Date, unit:string) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"lte(a:Date, b:Date, unit:string) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"max(dateA:Date, dateB:Date) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"merge(date:Date, time:Date) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"min(dateA:Date, dateB:Date) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"minutes(date:Date) => number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"neq(a:Date, b:Date, unit:string) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"range(start:Date, end:Date, unit:string) => Array[Date]")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"sortEvents({evtA: {start:Date, end:Date, allDay:boolean}, evtB: {start:Date, end:Date, allDay:boolean}}) => number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"startAndEndAreDateOnly(start:Date, end:Date) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"startOf(date:Date, unit:string) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"startOfWeek(culture) => number")," (alias of ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"firstOfWeek()"),")"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"visibleDays(date:Date) => Array[Date]"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Many of these methods are used by Big Calendar in the background for determining layout. You can create your own custom ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer"),", to utilize some other library, as long as they implement these methods. The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"DateLocalizer")," class defaults these methods to methods from the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://www.npmjs.com/package/date-arithmetic",target:"_blank",rel:"nofollow noopener noreferrer"},"date-arithmetic")," package."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"For examples of building your own custom ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer")," take a look at the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://github.com/jquense/react-big-calendar/blob/master/src/localizers",target:"_blank",rel:"nofollow noopener noreferrer"},"currently implemented localizers"),". If you do build your own ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"localizer"),", please consider publishing it to ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("a",{parentName:"p",href:"https://npmjs.org",target:"_blank",rel:"nofollow noopener noreferrer"},"npm"),". We suggest a common naming convention like ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"rbc-addon-mylocalizername"),"."))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"Guides/Localizers",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./stories/props/API.stories.mdx":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{__namedExportsOrder:function(){return __namedExportsOrder},__page:function(){return __page}});__webpack_require__("./node_modules/core-js/modules/es.symbol.js"),__webpack_require__("./node_modules/core-js/modules/es.object.assign.js"),__webpack_require__("./node_modules/react/index.js");var _mdx_js_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./node_modules/@mdx-js/react/dist/esm.js"),_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__("./node_modules/@storybook/addon-docs/dist/esm/index.js"),_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__("./node_modules/@storybook/addon-links/react.js"),_excluded=["components"];function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e=0)continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(_ref,_excluded);return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.W8,{title:"props/Full Prop List",mdxType:"Meta"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h1",{id:"all-props"},"All Props"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"localizer"},"localizer"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"instanceOf(DateLocalizer)")," ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"li"},"required")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The localizer used for formatting dates and times according to the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"format")," and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"culture")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// When using `Globalize`\nimport { globalizeLocalizer } from 'react-big-calendar'\nimport globalize from 'globalize'\n\nconst localizer = globalizeLocalizer(globalize)\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// When using `moment`\nimport { momentLocalizer } from 'react-big-calendar'\nimport moment from 'moment'\n// and, for optional time zone support\nimport 'moment-timezone'\n\nmoment.tz.setDefault('America/Los_Angeles')\n// end optional time zone support\n\nconst localizer = momentLocalizer(moment)\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"// When using `Luxon`\nimport { luxonLocalizer } from 'react-big-calendar'\nimport { DateTime, Settings } from 'luxon'\n// only use `Settings` if you require optional time zone support\nSettings.defaultZone = 'America/Los_Angeles'\n// end optional time zone support\n\n// Luxon uses the Intl API, which currently does not contain `weekInfo`\n// to determine which weekday is the start of the week by `culture`.\n// The `luxonLocalizer` defaults this to Sunday, which differs from\n// the Luxon default of Monday. The localizer requires this option\n// to change the display, and the date math for determining the\n// start of a week. Luxon uses non-zero based values for `weekday`.\nconst localizer = luxonLocalizer(DateTime, { firstDayOfWeek: 7 })\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"elementprops"},"elementProps"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"object")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"element-props",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Props passed to main calendar ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"
"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note:")," Will not pass down ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"className"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"getnow"},"getNow"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function () => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"() => new Date()")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"get-now",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Determines the current date/time which is highlighted in the views."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The value affects which day is shaded and which time is shown as the current time. It also affects the date used by the Today button in the toolbar."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Providing a value here can be useful when you are implementing time zones using the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"start-accessor",mdxType:"LinkTo"},"startAccessor")," and ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"end-accessor",mdxType:"LinkTo"},"endAccessor")," properties."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"defaultdate"},"defaultDate"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"new Date()")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"default-date",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Sets the initial ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"date")," value in your calendar when you don't want it to be 'today', when not using ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"get-now",mdxType:"LinkTo"},"getNow"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"date"},"date"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"new Date()")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"controlled by: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-navigate",mdxType:"LinkTo"},"onNavigate")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"date",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The current date value of the calendar. Determines the visible view range.\nIf ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"date")," is omitted then the result of ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"get-now",mdxType:"LinkTo"},"getNow")," is used; otherwise the\ncurrent date is used."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"This is a controllable prop, when using ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-navigate",mdxType:"LinkTo"},"onNavigate")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"onnavigate"},"onNavigate"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"controls: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"date",mdxType:"LinkTo"},"date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"example: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"(newDate) => setDate(newDate)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-navigate",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"date")," value changes. When included it is used to 'control' the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"date",mdxType:"LinkTo"},"date")," prop value."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"defaultview"},"defaultView"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"Views.MONTH (month|week|work_week|day|agenda)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"default-view",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The initial ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")," set for your calendar when you don't want it to be the default ('month')."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"view"},"view"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"Views.MONTH (month|week|work_week|day|agenda)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"controlled by: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-view",mdxType:"LinkTo"},"onView")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"view",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The current view value of the calendar. Determines the visible 'view'.\nIf ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")," is omitted then it is defaulted to 'month'."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"This is a controllable prop, when using ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-view",mdxType:"LinkTo"},"onView")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"onview"},"onView"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: 'function'"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"controls: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"view",mdxType:"LinkTo"},"view")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"example: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"(newView) => setView(newView)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-view",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")," value changes. When included it is used to 'control' the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"view",mdxType:"LinkTo"},"view")," prop value."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"events"},"events"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"arrayOf(Event)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"[]")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"events",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"An array of event objects to display on the calendar. Event objects can be any shape, as long as the Calendar knows how to retrieve the following details of the event:"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"start time"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"end time"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"title"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},'whether its an "all day" event or not'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"any resource the event may be related to")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Each of these properties can be customized or generated dynamically by setting the various "accessor" props. Without any configuration the default event should look like:'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"Event {\n title: string,\n start: Date,\n end: Date,\n allDay?: boolean\n resource?: any,\n}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"backgroundevents"},"backgroundEvents"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"arrayOf(BackgroundEvent)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"[]")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"background-events",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"An array of background event objects to display on the calendar. Background Events behave similarly to ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events")," but are not factored into Event overlap logic, allowing them to sit behind any Events that may occur during the same period. Background Events objects can be any shape, as long as the Calendar knows how to retrieve the following details of the event:"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"start time"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"end time")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Each of these properties can be customized or generated dynamically by setting the various "accessor" props. Without any configuration the default event should look like:'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"BackgroundEvent {\n start: Date,\n end: Date,\n}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"titleaccessor"},"titleAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: 'title'"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"title-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Accessor for the event title, used to display event information. Should resolve to a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"renderable")," value."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"tooltipaccessor"},"tooltipAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: 'title'"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"tooltip-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Accessor for the event tooltip, used to display event information. Should resolve to a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"renderable")," value. Removes the tooltip if null."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"startaccessor"},"startAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: 'start'"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"start-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The start date/time of the event. Must resolve to a JavaScript ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Date")," object."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"endaccessor"},"endAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => Date")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: 'end'"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"end-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The end date/time of the event. Must resolve to a JavaScript ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Date")," object."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"alldayaccessor"},"allDayAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string | function (event: Object) => boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: 'allDay'"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"all-day-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Determines whether the event should be considered an "all day" event and ignore time. Must resolve to a ',(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"boolean")," value."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"alldaymaxrows"},"allDayMaxRows"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"Infinity")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"all-day-max-rows",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Determines a maximum amount of rows of events to display in the all day section for Week and Day views, will display ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"showMore")," button if events excede this number."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"resources"},"resources"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"arrayOf(Resource)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"resources",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"An array of resource objects that map events to a specific resource. Resource objects, like events, can be any shape or have any properties, but should be uniquly identifiable via the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"resource-id-accessor",mdxType:"LinkTo"},"resourceIdAccessor"),', as well as a "title" or name as provided by the ',(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"resource-title-accessor",mdxType:"LinkTo"},"resourceTitleAccessor")," prop."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"Resource {\n id: string | number, // must be unique\n title: string\n}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"resourceidaccessor"},"resourceIdAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string | function (resource: Object) => string | number // must be unique")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"resource-id-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Provides a unique identifier, or an array of unique identifiers, for each resource in the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"resources",mdxType:"LinkTo"},"resources")," array"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"resourcetitleaccessor"},"resourceTitleAccessor"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string | function (resource: Object) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"resource-title-accessor",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Provides a human readable name for the resource object, used in headers."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"ondrilldown"},"onDrillDown"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date) => // do something")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-drill-down",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when date header, or the truncated events links are clicked. When included, it will override the default drilldown behavior."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"onrangechange"},"onRangeChange"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (range: Array [1|7] | Object {start: Date, end: Date}) => // do something")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-range-change",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when the visible date range changes. Returns an Array of dates or an object with start and end dates for BUILTIN views."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Custom views may return something different."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"Note:")," This method is not fired on initial render. Only as the user navigates through Big Calendar."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"selectable"},"selectable"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"boolean | 'ignoreEvents'")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Allows mouse selection of ranges of dates/times."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The 'ignoreEvents' option prevents selection code from running when a drag begins over an event. Useful when you want custom event click or drag logic."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"Things To Know:")," When you 'doubleClick', both 'click' and 'doubleClick' will fire. Click on the 'showCode' button, at the bottom of the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-select-slot",mdxType:"LinkTo"},"example"),", to see how you can get around this issue."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h2",{id:"onselectslot"},"onSelectSlot"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (Object: slotInfo) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"requires: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-select-slot",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"A callback fired when a date selection is made. Only fires when ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")," is true."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"Things To Know:")," When you 'doubleClick', both 'click' and 'doubleClick' will fire. Click on the 'showCode' button, at the bottom of the example below, to see how you can get around this issue."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},";(slotInfo: {\n start: Date,\n end: Date,\n slots: Array,\n action: 'select' | 'click' | 'doubleClick',\n bounds: ?{\n // For \"select\" action\n x: number,\n y: number,\n top: number,\n right: number,\n left: number,\n bottom: number,\n },\n box: ?{\n // For \"click\" or \"doubleClick\" actions\n clientX: number,\n clientY: number,\n x: number,\n y: number,\n },\n}) => any\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h4",{id:"whats-the-difference-from-onselecting"},"What's The Difference from onSelecting?"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"How is this different from ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-selecting",mdxType:"LinkTo"},"onSelecting"),"? That is a very good question. The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onSelecting")," method is only available in the Time views (",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"week"),", ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"work week"),", ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"day"),"), whereas ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onSelectSlot")," is also available in the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"month")," view. The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onSelecting")," method allows you to 'cancel' your selection by returning ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"false"),". The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onSelectSlot")," method returns a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"slotInfo")," object, containing a lot of additional information about your selection."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"onselectevent"},"onSelectEvent"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (event: Object) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-select-event",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when a calendar event is selected (i.e.: an ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onClick")," handler)."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note:")," The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")," prop is ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"not")," required for this prop to function."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Important:")," The event passed into the function is the Calendar Event, not the SyntheticEvent expected by most click handlers."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"ondoubleclickevent"},"onDoubleClickEvent"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (event: Object) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-double-click-event",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when a calendar event is clicked twice. (i.e.: an ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onDoubleClick")," handler)."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note:")," The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")," prop is ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"not")," required for this prop to function."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Important:")," The event passed into the function is the Calendar Event, not the SyntheticEvent expected by most click handlers."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"onselecting"},"onSelecting"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"(range: Object { start: Date, end: Date, resourceId: null|string|number }) => ?boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"requires: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-selecting",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when dragging a selection in the Time views. Only fires when ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"selectable",mdxType:"LinkTo"},"selectable")," is true."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Returning ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"false")," from the handler will prevent a selection."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h4",{id:"whats-the-difference-from-onselectslot"},"What's The Difference from onSelectSlot?"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"How is this different from ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-select-slot",mdxType:"LinkTo"},"onSelectSlot"),"? That is a very good question. The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onSelecting")," method is only available in the Time views (",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"week"),", ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"work week"),", ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"day"),"), whereas ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onSelectSlot")," is also available in the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"month")," view. The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onSelecting")," method allows you to 'cancel' your selection by returning ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"false"),". The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"onSelectSlot")," method returns a ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"slotInfo")," object, containing a lot of additional information about your selection."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"onshowmore"},"onShowMore"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (events: Array[event: Object], date: Date) => any")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-show-more",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when a +{count} more is clicked. Receives ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"all")," of the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"events")," for the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"date")," on which it was selected."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"onkeypressevent"},"onKeyPressEvent"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (event: Object, e: SyntheticEvent) => void")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-key-press-event",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Callback fired when a focused calendar event receives a key press."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"showallevents"},"showAllEvents"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"false")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"show-all-events",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Displays all events on the month view instead of having some hidden behind +{count} more. This will cause the rows in the month view to be scrollable if the number of events exceed the height of the row."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h4",{id:"selected"},"selected"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"Event: Object")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"selected",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The selected event, if any. By default, Big Calendar 'controls' the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"selected")," (highlighted) event in the display. You can use this prop to control which event is highlighted. The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"selected")," event must be a object reference to the event within the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"events",mdxType:"LinkTo"},"events")," array."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Often used in conjunction with ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-select-event",mdxType:"LinkTo"},"OnSelectEvent")," and/or ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-double-click-event",mdxType:"LinkTo"},"onDoubleClickEvent"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"views"},"views"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"Views ('month'|'week'|'work_week'|'day'|'agenda')")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"[views.MONTH, views.WEEK, views.DAY, views.AGENDA]")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"cal-views",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"An array of built-in view names to allow the calendar to display. accepts either an array of builtin view names,"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"views={['month', 'day', 'agenda']}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"or an object hash of the view name and the component (or boolean for builtin)."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"views={{\n month: true,\n week: false,\n myweek: WorkWeekViewComponent,\n}}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Custom views can be any React component, that implements the following interface:"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"interface View {\n static title(date: Date, { formats: DateFormat[], culture: string?, ...props }): string\n static navigate(date: Date, action: 'PREV' | 'NEXT' | 'DATE'): Date\n}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"drilldownview"},"drilldownView"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"Views.DAY")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"drilldown-view",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The string name of the destination ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")," for drill-down actions, such as clicking a date header, or the truncated events links. If ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"getDrilldownView")," is also specified it will be used instead."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Set to ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"null")," to disable drill-down actions."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"getdrilldownview"},"getDrilldownView"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (targetDate: Date, currentViewName: string, configuredViewNames: Views[]) => string|null")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"get-drilldown-view",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Functionally equivalent to drilldownView, but accepts a function that can return a view name. It's useful for customizing the drill-down actions depending on the target date and triggering view."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Return null to disable drill-down actions."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"length"},"length"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"30")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"length",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Determines the end date from date prop in the agenda view date prop + length (in number of days) = end date."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"toolbar"},"toolbar"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"true")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"toolbar",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Determines whether the toolbar is displayed"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"popup"},"popup"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"true")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"popup",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Show truncated events in an overlay when you click the "+',(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("em",{parentName:"p"},"x"),' more" link.'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"popupoffset"},"popupOffset"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"number|shape {x: number, y: number}")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"popup-offset",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Distance in pixels, from the edges of the viewport, the "show more" overlay should be positioned.'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"longpressthreshold"},"longPressThreshold"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"250")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"long-press-threshold",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Specifies the number of miliseconds the user must press and hold on the screen for a touch to be considered a "long press." Long presses are used for time slot selection on touch devices.'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"step"},"step"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"30")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"step",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Determines the selectable time increments in week and day views"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"timeslots"},"timeslots"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"number")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"timeslots",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'The number of slots per "section" in the time grid views. Adjust with ',(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"step",mdxType:"LinkTo"},"step")," to change the default of 1 hour long groups, with 30 minute slots."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"rtl"},"rtl"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"false")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"right-to-left",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Switch the calendar to a right-to-left read direction."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"eventpropgetter"},"eventPropGetter"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (event: Object, start: Date, end: Date, isSelected: boolean) => {className?: string, style?: Object}")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"event-prop-getter",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Optionally provide a function that returns an object of className or style props to be applied to the the event node."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"slotpropgetter"},"slotPropGetter"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date) => {className?: string, style?: Object}")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"on-slot-prop-getter",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Optionally provide a function that returns an object of className or style props to be applied to the the time-slot node."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Caution!")," Styles that change layout or position may break the calendar in unexpected ways."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"slotgrouppropgetter"},"slotGroupPropGetter"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (group: Date[]) => { style?: Object }")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"slot-group-prop-getter",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Optionally provide a function that returns an object of className or style props to be applied to the time-slot node."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Caution! Styles that change layout or position may break the calendar in unexpected ways.")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"daypropgetter"},"dayPropGetter"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date) => {className?: string, style?: Object}")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"day-prop-getter",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Optionally provide a function that returns an object of className or style props to be applied to the the day background."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Caution!")," Styles that change layout or position may break the calendar in unexpected ways."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"showmultidaytimes"},"showMultiDayTimes"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"boolean")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"false")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"show-multi-day-times",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Support to show multi-day events with specific start and end times in the main time grid (rather than in the all day header)."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note: This may cause calendars with several events to look very busy in the week and day views.")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"min"},"min"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"new Date(1972, 0, 1, 0, 0, 0)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"min",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Constrains the minimum time of the Day and Week views."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"max"},"max"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"new Date(1972, 0, 1, 23, 59, 59)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"max",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Constrains the maximum time of the Day and Week views."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"scrolltotime"},"scrollToTime"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"instanceOf(Date)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"new Date()")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"scroll-to-time",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Determines how far down the scroll pane is initially scrolled down."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"culture"},"culture"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"none (browser default)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"culture",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Specify a specific culture code for the Calendar. The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"culture")," is used by ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"formats")," with your ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"localizer")," to 'format' date/time information on the Calendar. To localize messaging, use the ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"messages")," prop."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("strong",{parentName:"p"},"Note: it's generally better to handle this globally via your i18n library.")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formats"},"formats"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"Object")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"localizer",mdxType:"LinkTo"},"Localizer")," specific formats, tell the Calendar how to format and display dates and times.",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"The ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"format")," types are dependent on the configured localizer; both Moment and Globalize accept strings of tokens according to their own specification, such as: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"'DD mm yyyy'"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"const formats = useMemo(() => ({\n dateFormat: 'dd',\n\n dayFormat: (date, , localizer) =>\n localizer.format(date, 'DDD', culture),\n\n dayRangeHeaderFormat: ({ start, end }, culture, localizer) =>\n localizer.format(start, { date: 'short' }, culture) + ' — ' +\n localizer.format(end, { date: 'short' }, culture)\n}), [])\n\n\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsdateformat"},"formats.dateFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-date-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Format for the day of the month heading in the Month view. e.g. "01", "02", "03", etc'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsdayformat"},"formats.dayFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-day-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'A day of the week format for Week and Day headings, e.g. "Wed 01/04"'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsweekdayformat"},"formats.weekdayFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-weekday-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Week day name format for the Month week day headings, e.g: "Sun", "Mon", "Tue", etc'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatstimegutterformat"},"formats.timeGutterFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-time-gutter-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'The timestamp cell formats in Week and Time views, e.g. "4:00 AM"'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsmonthheaderformat"},"formats.monthHeaderFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-month-header-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Toolbar header format for the Month view, e.g "2015 April"'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsdayrangeheaderformat"},"formats.dayRangeHeaderFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-day-range-header-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Toolbar header format for the Week views, e.g. "Mar 29 - Apr 04"'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsdayheaderformat"},"formats.dayHeaderFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-day-header-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Toolbar header format for the Day view, e.g. "Wednesday Apr 01"'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsagendaheaderformat"},"formats.agendaHeaderFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-agenda-header-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'Toolbar header format for the Agenda view, e.g. "4/1/2015 — 5/1/2015"'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsselectrangeformat"},"formats.selectRangeFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-select-range-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,'A time range format shown in the highlighted area when selecting time slots, e.g "08:00 am — 12:00 pm"'),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsagendadateformat"},"formats.agendaDateFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-agenda-date-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Dates displayed in the gutter of the Agenda ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsagendatimeformat"},"formats.agendaTimeFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-agenda-time-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Time only (not range) displayed in the gutter of the Agenda ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatsagendatimerangeformat"},"formats.agendaTimeRangeFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-agenda-time-range-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Time range displayed in the gutter of the Agenda ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"view")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatseventtimerangeformat"},"formats.eventTimeRangeFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (range: Object {start: Date, end: Date}, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-event-time-range-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Time range displayed on events in Time Grid views."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatseventtimerangestartformat"},"formats.eventTimeRangeStartFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-event-time-range-start-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"An optional event time range for events that continue onto another day. Used with ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"show-multi-day-times",mdxType:"LinkTo"},"showMultiDayTimes"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"formatseventtimerangeendformat"},"formats.eventTimeRangeEndFormat"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"function (date: Date, culture: ?string, localizer: DateLocalizer) => string")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"formats-event-time-range-end-format",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"An optional event time range for events that continue onto another day. Used with ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"show-multi-day-times",mdxType:"LinkTo"},"showMultiDayTimes"),"."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"components"},"components"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"object")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"components",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"Customize how different sections of the calendar render by providing custom Components. In particular the Event component can be specified for the entire calendar, or you can provide an individual component for each view type."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"let components = useMemo({\n event: MyEvent, // used by each view (Month, Day, Week)\n toolbar: MyToolbar,\n agenda: {\n event: MyAgendaEvent // with the agenda view use a different component to render events\n }\n}, [])\n\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"messages"},"messages"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"Object")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"messages",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"String messages used throughout the component, override to provide localizations for button text, ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"title")," attributes and more."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"defualts"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("code",{parentName:"pre",className:"language-js"},"{\n date: 'Date',\n time: 'Time',\n event: 'Event',\n allDay: 'All Day',\n week: 'Week',\n work_week: 'Work Week',\n day: 'Day',\n month: 'Month',\n previous: 'Back',\n next: 'Next',\n yesterday: 'Yesterday',\n tomorrow: 'Tomorrow',\n today: 'Today',\n agenda: 'Agenda',\n\n noEventsInRange: 'There are no events in this range.',\n\n showMore: total => `+${total} more`,\n}\n")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("h3",{id:"daylayoutalgorithm"},"dayLayoutAlgorithm"),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"type: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"string | Function(events, minimumStartDifference, slotMetrics, accessors)")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},"default: ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"li"},"overlap")),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_links_react__WEBPACK_IMPORTED_MODULE_5__.A,{kind:"props",story:"day-layout-algorithm",mdxType:"LinkTo"},"Example"))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"A day event layout(arrangement) algorithm."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"overlap")," allows events to be overlapped."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"no-overlap")," resizes events to avoid overlap."),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("p",null,"or custom ",(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)("inlineCode",{parentName:"p"},"Function(events, minimumStartDifference, slotMetrics, accessors)")))}MDXContent.displayName="MDXContent",MDXContent.isMDXComponent=!0;var __page=function __page(){throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};var componentMeta={title:"props/Full Prop List",includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs=Object.assign({},componentMeta.parameters.docs||{},{page:function page(){return(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(_storybook_addon_docs__WEBPACK_IMPORTED_MODULE_4__.hT,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentAnnotations:componentMeta},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_3__.yg)(MDXContent,null))}}),__webpack_exports__.default=componentMeta;var __namedExportsOrder=["__page"]},"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/addons/dragAndDrop/styles.scss":function(module,exports,__webpack_require__){(exports=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(!1)).push([module.id,".rbc-addons-dnd .rbc-addons-dnd-row-body{position:relative}.rbc-addons-dnd .rbc-addons-dnd-drag-row{position:absolute;top:0;left:0;right:0}.rbc-addons-dnd .rbc-addons-dnd-over{background-color:rgba(0,0,0,.3)}.rbc-addons-dnd .rbc-event{transition:opacity 150ms}.rbc-addons-dnd .rbc-event:hover .rbc-addons-dnd-resize-ns-icon,.rbc-addons-dnd .rbc-event:hover .rbc-addons-dnd-resize-ew-icon{display:block}.rbc-addons-dnd .rbc-addons-dnd-dragged-event{opacity:0}.rbc-addons-dnd.rbc-addons-dnd-is-dragging .rbc-event:not(.rbc-addons-dnd-dragged-event):not(.rbc-addons-dnd-drag-preview){opacity:.5}.rbc-addons-dnd .rbc-addons-dnd-resizable{position:relative;width:100%;height:100%}.rbc-addons-dnd .rbc-addons-dnd-resize-ns-anchor{width:100%;text-align:center;position:absolute}.rbc-addons-dnd .rbc-addons-dnd-resize-ns-anchor:first-child{top:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ns-anchor:last-child{bottom:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ns-anchor .rbc-addons-dnd-resize-ns-icon{display:none;border-top:3px double;margin:0 auto;width:10px;cursor:ns-resize}.rbc-addons-dnd .rbc-addons-dnd-resize-ew-anchor{position:absolute;top:4px;bottom:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ew-anchor:first-child{left:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ew-anchor:last-child{right:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ew-anchor .rbc-addons-dnd-resize-ew-icon{display:none;border-left:3px double;margin-top:auto;margin-bottom:auto;height:10px;cursor:ew-resize}",""]),module.exports=exports},"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/sass/styles.scss":function(module,exports,__webpack_require__){(exports=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(!1)).push([module.id,'.rbc-btn{color:inherit;font:inherit;margin:0}button.rbc-btn{overflow:visible;text-transform:none;-webkit-appearance:button;cursor:pointer}button[disabled].rbc-btn{cursor:not-allowed}button.rbc-input::-moz-focus-inner{border:0;padding:0}.rbc-calendar{box-sizing:border-box;height:100%;display:flex;flex-direction:column;align-items:stretch}.rbc-calendar *,.rbc-calendar *:before,.rbc-calendar *:after{box-sizing:inherit}.rbc-abs-full,.rbc-row-bg{overflow:hidden;position:absolute;top:0;left:0;right:0;bottom:0}.rbc-ellipsis,.rbc-show-more,.rbc-row-segment .rbc-event-content,.rbc-event-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rbc-rtl{direction:rtl}.rbc-off-range{color:#999}.rbc-off-range-bg{background:#e6e6e6}.rbc-header{overflow:hidden;flex:1 0 0%;text-overflow:ellipsis;white-space:nowrap;padding:0 3px;text-align:center;vertical-align:middle;font-weight:bold;font-size:90%;min-height:0;border-bottom:1px solid #ddd}.rbc-header+.rbc-header{border-left:1px solid #ddd}.rbc-rtl .rbc-header+.rbc-header{border-left-width:0;border-right:1px solid #ddd}.rbc-header>a,.rbc-header>a:active,.rbc-header>a:visited{color:inherit;text-decoration:none}.rbc-button-link{color:inherit;background:none;margin:0;padding:0;border:none;cursor:pointer;user-select:text}.rbc-row-content{position:relative;user-select:none;-webkit-user-select:none;z-index:4}.rbc-row-content-scrollable{display:flex;flex-direction:column;height:100%}.rbc-row-content-scrollable .rbc-row-content-scroll-container{height:100%;overflow-y:scroll;-ms-overflow-style:none;scrollbar-width:none;-ms-overflow-style:none;scrollbar-width:none}.rbc-row-content-scrollable .rbc-row-content-scroll-container::-webkit-scrollbar{display:none}.rbc-today{background-color:#eaf6ff}.rbc-toolbar{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;margin-bottom:10px;font-size:16px}.rbc-toolbar .rbc-toolbar-label{flex-grow:1;padding:0 10px;text-align:center}.rbc-toolbar button{color:#373a3c;display:inline-block;margin:0;text-align:center;vertical-align:middle;background:none;background-image:none;border:1px solid #ccc;padding:.375rem 1rem;border-radius:4px;line-height:normal;white-space:nowrap}.rbc-toolbar button:active,.rbc-toolbar button.rbc-active{background-image:none;box-shadow:inset 0 3px 5px rgba(0,0,0,.125);background-color:#e6e6e6;border-color:#adadad}.rbc-toolbar button:active:hover,.rbc-toolbar button:active:focus,.rbc-toolbar button.rbc-active:hover,.rbc-toolbar button.rbc-active:focus{color:#373a3c;background-color:#d4d4d4;border-color:#8c8c8c}.rbc-toolbar button:focus{color:#373a3c;background-color:#e6e6e6;border-color:#adadad}.rbc-toolbar button:hover{color:#373a3c;background-color:#e6e6e6;border-color:#adadad}.rbc-btn-group{display:inline-block;white-space:nowrap}.rbc-btn-group>button:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.rbc-btn-group>button:last-child:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.rbc-rtl .rbc-btn-group>button:first-child:not(:last-child){border-radius:4px;border-top-left-radius:0;border-bottom-left-radius:0}.rbc-rtl .rbc-btn-group>button:last-child:not(:first-child){border-radius:4px;border-top-right-radius:0;border-bottom-right-radius:0}.rbc-btn-group>button:not(:first-child):not(:last-child){border-radius:0}.rbc-btn-group button+button{margin-left:-1px}.rbc-rtl .rbc-btn-group button+button{margin-left:0;margin-right:-1px}.rbc-btn-group+.rbc-btn-group,.rbc-btn-group+button{margin-left:10px}@media(max-width: 767px){.rbc-toolbar{flex-direction:column}}.rbc-event,.rbc-day-slot .rbc-background-event{border:none;box-sizing:border-box;box-shadow:none;margin:0;padding:2px 5px;background-color:#3174ad;border-radius:5px;color:#fff;cursor:pointer;width:100%;text-align:left}.rbc-slot-selecting .rbc-event,.rbc-slot-selecting .rbc-day-slot .rbc-background-event,.rbc-day-slot .rbc-slot-selecting .rbc-background-event{cursor:inherit;pointer-events:none}.rbc-event.rbc-selected,.rbc-day-slot .rbc-selected.rbc-background-event{background-color:#265985}.rbc-event:focus,.rbc-day-slot .rbc-background-event:focus{outline:5px auto #3b99fc}.rbc-event-label{font-size:80%}.rbc-event-overlaps{box-shadow:-1px 1px 5px 0px rgba(51,51,51,.5)}.rbc-event-continues-prior{border-top-left-radius:0;border-bottom-left-radius:0}.rbc-event-continues-after{border-top-right-radius:0;border-bottom-right-radius:0}.rbc-event-continues-earlier{border-top-left-radius:0;border-top-right-radius:0}.rbc-event-continues-later{border-bottom-left-radius:0;border-bottom-right-radius:0}.rbc-row{display:flex;flex-direction:row}.rbc-row-segment{padding:0 1px 1px 1px}.rbc-selected-cell{background-color:rgba(0,0,0,.1)}.rbc-show-more{background-color:rgba(255,255,255,.3);z-index:4;font-weight:bold;font-size:85%;height:auto;line-height:normal;color:#3174ad}.rbc-show-more:hover,.rbc-show-more:focus{color:#265985}.rbc-month-view{position:relative;border:1px solid #ddd;display:flex;flex-direction:column;flex:1 0 0;width:100%;user-select:none;-webkit-user-select:none;height:100%}.rbc-month-header{display:flex;flex-direction:row}.rbc-month-row{display:flex;position:relative;flex-direction:column;flex:1 0 0;flex-basis:0px;overflow:hidden;height:100%}.rbc-month-row+.rbc-month-row{border-top:1px solid #ddd}.rbc-date-cell{flex:1 1 0;min-width:0;padding-right:5px;text-align:right}.rbc-date-cell.rbc-now{font-weight:bold}.rbc-date-cell>a,.rbc-date-cell>a:active,.rbc-date-cell>a:visited{color:inherit;text-decoration:none}.rbc-row-bg{display:flex;flex-direction:row;flex:1 0 0;overflow:hidden}.rbc-day-bg{flex:1 0 0%}.rbc-day-bg+.rbc-day-bg{border-left:1px solid #ddd}.rbc-rtl .rbc-day-bg+.rbc-day-bg{border-left-width:0;border-right:1px solid #ddd}.rbc-overlay{position:absolute;z-index:5;border:1px solid #e5e5e5;background-color:#fff;box-shadow:0 5px 15px rgba(0,0,0,.25);padding:10px}.rbc-overlay>*+*{margin-top:1px}.rbc-overlay-header{border-bottom:1px solid #e5e5e5;margin:-10px -10px 5px -10px;padding:2px 10px}.rbc-agenda-view{display:flex;flex-direction:column;flex:1 0 0;overflow:auto}.rbc-agenda-view table.rbc-agenda-table{width:100%;border:1px solid #ddd;border-spacing:0;border-collapse:collapse}.rbc-agenda-view table.rbc-agenda-table tbody>tr>td{padding:5px 10px;vertical-align:top}.rbc-agenda-view table.rbc-agenda-table .rbc-agenda-time-cell{padding-left:15px;padding-right:15px;text-transform:lowercase}.rbc-agenda-view table.rbc-agenda-table tbody>tr>td+td{border-left:1px solid #ddd}.rbc-rtl .rbc-agenda-view table.rbc-agenda-table tbody>tr>td+td{border-left-width:0;border-right:1px solid #ddd}.rbc-agenda-view table.rbc-agenda-table tbody>tr+tr{border-top:1px solid #ddd}.rbc-agenda-view table.rbc-agenda-table thead>tr>th{padding:3px 5px;text-align:left;border-bottom:1px solid #ddd}.rbc-rtl .rbc-agenda-view table.rbc-agenda-table thead>tr>th{text-align:right}.rbc-agenda-time-cell{text-transform:lowercase}.rbc-agenda-time-cell .rbc-continues-after:after{content:" »"}.rbc-agenda-time-cell .rbc-continues-prior:before{content:"« "}.rbc-agenda-date-cell,.rbc-agenda-time-cell{white-space:nowrap}.rbc-agenda-event-cell{width:100%}.rbc-time-column{display:flex;flex-direction:column;min-height:100%}.rbc-time-column .rbc-timeslot-group{flex:1}.rbc-timeslot-group{border-bottom:1px solid #ddd;min-height:40px;display:flex;flex-flow:column nowrap}.rbc-time-gutter,.rbc-header-gutter{flex:none}.rbc-label{padding:0 5px}.rbc-day-slot{position:relative}.rbc-day-slot .rbc-events-container{bottom:0;left:0;position:absolute;right:0;margin-right:10px;top:0}.rbc-day-slot .rbc-events-container.rbc-rtl{left:10px;right:0}.rbc-day-slot .rbc-event,.rbc-day-slot .rbc-background-event{border:1px solid #265985;display:flex;max-height:100%;min-height:20px;flex-flow:column wrap;align-items:flex-start;overflow:hidden;position:absolute}.rbc-day-slot .rbc-background-event{opacity:.75}.rbc-day-slot .rbc-event-label{flex:none;padding-right:5px;width:auto}.rbc-day-slot .rbc-event-content{width:100%;flex:1 1 0;word-wrap:break-word;line-height:1;height:100%;min-height:1em}.rbc-day-slot .rbc-time-slot{border-top:1px solid #f7f7f7}.rbc-time-view-resources .rbc-time-gutter,.rbc-time-view-resources .rbc-time-header-gutter{position:sticky;left:0;background-color:#fff;border-right:1px solid #ddd;z-index:10;margin-right:-1px}.rbc-time-view-resources .rbc-time-header{overflow:hidden}.rbc-time-view-resources .rbc-time-header-content{min-width:auto;flex:1 0 0;flex-basis:0px}.rbc-time-view-resources .rbc-time-header-cell-single-day{display:none}.rbc-time-view-resources .rbc-day-slot{min-width:140px}.rbc-time-view-resources .rbc-header,.rbc-time-view-resources .rbc-day-bg{width:140px;flex:1 1 0;flex-basis:0 px}.rbc-time-header-content+.rbc-time-header-content{margin-left:-1px}.rbc-time-slot{flex:1 0 0}.rbc-time-slot.rbc-now{font-weight:bold}.rbc-day-header{text-align:center}.rbc-slot-selection{z-index:10;position:absolute;background-color:rgba(0,0,0,.5);color:#fff;font-size:75%;width:100%;padding:3px}.rbc-slot-selecting{cursor:move}.rbc-time-view{display:flex;flex-direction:column;flex:1;width:100%;border:1px solid #ddd;min-height:0}.rbc-time-view .rbc-time-gutter{white-space:nowrap;text-align:right}.rbc-time-view .rbc-allday-cell{box-sizing:content-box;width:100%;height:100%;position:relative}.rbc-time-view .rbc-allday-cell+.rbc-allday-cell{border-left:1px solid #ddd}.rbc-time-view .rbc-allday-events{position:relative;z-index:4}.rbc-time-view .rbc-row{box-sizing:border-box;min-height:20px}.rbc-time-header{display:flex;flex:0 0 auto;flex-direction:row}.rbc-time-header.rbc-overflowing{border-right:1px solid #ddd}.rbc-rtl .rbc-time-header.rbc-overflowing{border-right-width:0;border-left:1px solid #ddd}.rbc-time-header>.rbc-row:first-child{border-bottom:1px solid #ddd}.rbc-time-header>.rbc-row.rbc-row-resource{border-bottom:1px solid #ddd}.rbc-time-header-cell-single-day{display:none}.rbc-time-header-content{flex:1;display:flex;min-width:0;flex-direction:column;border-left:1px solid #ddd}.rbc-rtl .rbc-time-header-content{border-left-width:0;border-right:1px solid #ddd}.rbc-time-header-content>.rbc-row.rbc-row-resource{border-bottom:1px solid #ddd;flex-shrink:0}.rbc-time-content{display:flex;flex:1 0 0%;align-items:flex-start;width:100%;border-top:2px solid #ddd;overflow-y:auto;position:relative}.rbc-time-content>.rbc-time-gutter{flex:none}.rbc-time-content>*+*>*{border-left:1px solid #ddd}.rbc-rtl .rbc-time-content>*+*>*{border-left-width:0;border-right:1px solid #ddd}.rbc-time-content>.rbc-day-slot{width:100%;user-select:none;-webkit-user-select:none}.rbc-current-time-indicator{position:absolute;z-index:3;left:0;right:0;height:1px;background-color:#74ad31;pointer-events:none}',""]),module.exports=exports},"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./stories/resources/customToolbar.scss":function(module,exports,__webpack_require__){(exports=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(!1)).push([module.id,".examples--custom-toolbar button{font-weight:600;font-size:1rem}",""]),module.exports=exports},"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./stories/resources/main.scss":function(module,exports,__webpack_require__){(exports=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(!1)).push([module.id,'.rbc-btn{color:inherit;font:inherit;margin:0}button.rbc-btn{overflow:visible;text-transform:none;-webkit-appearance:button;cursor:pointer}button[disabled].rbc-btn{cursor:not-allowed}button.rbc-input::-moz-focus-inner{border:0;padding:0}.rbc-calendar{box-sizing:border-box;height:100%;display:flex;flex-direction:column;align-items:stretch}.rbc-calendar *,.rbc-calendar *:before,.rbc-calendar *:after{box-sizing:inherit}.rbc-abs-full,.rbc-row-bg{overflow:hidden;position:absolute;top:0;left:0;right:0;bottom:0}.rbc-ellipsis,.rbc-show-more,.rbc-row-segment .rbc-event-content,.rbc-event-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rbc-rtl{direction:rtl}.rbc-off-range{color:#999}.rbc-off-range-bg{background:#e6e6e6}.rbc-header{overflow:hidden;flex:1 0 0%;text-overflow:ellipsis;white-space:nowrap;padding:0 3px;text-align:center;vertical-align:middle;font-weight:bold;font-size:90%;min-height:0;border-bottom:1px solid #ddd}.rbc-header+.rbc-header{border-left:1px solid #ddd}.rbc-rtl .rbc-header+.rbc-header{border-left-width:0;border-right:1px solid #ddd}.rbc-header>a,.rbc-header>a:active,.rbc-header>a:visited{color:inherit;text-decoration:none}.rbc-button-link{color:inherit;background:none;margin:0;padding:0;border:none;cursor:pointer;user-select:text}.rbc-row-content{position:relative;user-select:none;-webkit-user-select:none;z-index:4}.rbc-row-content-scrollable{display:flex;flex-direction:column;height:100%}.rbc-row-content-scrollable .rbc-row-content-scroll-container{height:100%;overflow-y:scroll;-ms-overflow-style:none;scrollbar-width:none;-ms-overflow-style:none;scrollbar-width:none}.rbc-row-content-scrollable .rbc-row-content-scroll-container::-webkit-scrollbar{display:none}.rbc-today{background-color:#eaf6ff}.rbc-toolbar{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;margin-bottom:10px;font-size:16px}.rbc-toolbar .rbc-toolbar-label{flex-grow:1;padding:0 10px;text-align:center}.rbc-toolbar button{color:#373a3c;display:inline-block;margin:0;text-align:center;vertical-align:middle;background:none;background-image:none;border:1px solid #ccc;padding:.375rem 1rem;border-radius:4px;line-height:normal;white-space:nowrap}.rbc-toolbar button:active,.rbc-toolbar button.rbc-active{background-image:none;box-shadow:inset 0 3px 5px rgba(0,0,0,.125);background-color:#e6e6e6;border-color:#adadad}.rbc-toolbar button:active:hover,.rbc-toolbar button:active:focus,.rbc-toolbar button.rbc-active:hover,.rbc-toolbar button.rbc-active:focus{color:#373a3c;background-color:#d4d4d4;border-color:#8c8c8c}.rbc-toolbar button:focus{color:#373a3c;background-color:#e6e6e6;border-color:#adadad}.rbc-toolbar button:hover{color:#373a3c;background-color:#e6e6e6;border-color:#adadad}.rbc-btn-group{display:inline-block;white-space:nowrap}.rbc-btn-group>button:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.rbc-btn-group>button:last-child:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.rbc-rtl .rbc-btn-group>button:first-child:not(:last-child){border-radius:4px;border-top-left-radius:0;border-bottom-left-radius:0}.rbc-rtl .rbc-btn-group>button:last-child:not(:first-child){border-radius:4px;border-top-right-radius:0;border-bottom-right-radius:0}.rbc-btn-group>button:not(:first-child):not(:last-child){border-radius:0}.rbc-btn-group button+button{margin-left:-1px}.rbc-rtl .rbc-btn-group button+button{margin-left:0;margin-right:-1px}.rbc-btn-group+.rbc-btn-group,.rbc-btn-group+button{margin-left:10px}@media(max-width: 767px){.rbc-toolbar{flex-direction:column}}.rbc-event,.rbc-day-slot .rbc-background-event{border:none;box-sizing:border-box;box-shadow:none;margin:0;padding:2px 5px;background-color:#3174ad;border-radius:5px;color:#fff;cursor:pointer;width:100%;text-align:left}.rbc-slot-selecting .rbc-event,.rbc-slot-selecting .rbc-day-slot .rbc-background-event,.rbc-day-slot .rbc-slot-selecting .rbc-background-event{cursor:inherit;pointer-events:none}.rbc-event.rbc-selected,.rbc-day-slot .rbc-selected.rbc-background-event{background-color:#265985}.rbc-event:focus,.rbc-day-slot .rbc-background-event:focus{outline:5px auto #3b99fc}.rbc-event-label{font-size:80%}.rbc-event-overlaps{box-shadow:-1px 1px 5px 0px rgba(51,51,51,.5)}.rbc-event-continues-prior{border-top-left-radius:0;border-bottom-left-radius:0}.rbc-event-continues-after{border-top-right-radius:0;border-bottom-right-radius:0}.rbc-event-continues-earlier{border-top-left-radius:0;border-top-right-radius:0}.rbc-event-continues-later{border-bottom-left-radius:0;border-bottom-right-radius:0}.rbc-row{display:flex;flex-direction:row}.rbc-row-segment{padding:0 1px 1px 1px}.rbc-selected-cell{background-color:rgba(0,0,0,.1)}.rbc-show-more{background-color:rgba(255,255,255,.3);z-index:4;font-weight:bold;font-size:85%;height:auto;line-height:normal;color:#3174ad}.rbc-show-more:hover,.rbc-show-more:focus{color:#265985}.rbc-month-view{position:relative;border:1px solid #ddd;display:flex;flex-direction:column;flex:1 0 0;width:100%;user-select:none;-webkit-user-select:none;height:100%}.rbc-month-header{display:flex;flex-direction:row}.rbc-month-row{display:flex;position:relative;flex-direction:column;flex:1 0 0;flex-basis:0px;overflow:hidden;height:100%}.rbc-month-row+.rbc-month-row{border-top:1px solid #ddd}.rbc-date-cell{flex:1 1 0;min-width:0;padding-right:5px;text-align:right}.rbc-date-cell.rbc-now{font-weight:bold}.rbc-date-cell>a,.rbc-date-cell>a:active,.rbc-date-cell>a:visited{color:inherit;text-decoration:none}.rbc-row-bg{display:flex;flex-direction:row;flex:1 0 0;overflow:hidden}.rbc-day-bg{flex:1 0 0%}.rbc-day-bg+.rbc-day-bg{border-left:1px solid #ddd}.rbc-rtl .rbc-day-bg+.rbc-day-bg{border-left-width:0;border-right:1px solid #ddd}.rbc-overlay{position:absolute;z-index:5;border:1px solid #e5e5e5;background-color:#fff;box-shadow:0 5px 15px rgba(0,0,0,.25);padding:10px}.rbc-overlay>*+*{margin-top:1px}.rbc-overlay-header{border-bottom:1px solid #e5e5e5;margin:-10px -10px 5px -10px;padding:2px 10px}.rbc-agenda-view{display:flex;flex-direction:column;flex:1 0 0;overflow:auto}.rbc-agenda-view table.rbc-agenda-table{width:100%;border:1px solid #ddd;border-spacing:0;border-collapse:collapse}.rbc-agenda-view table.rbc-agenda-table tbody>tr>td{padding:5px 10px;vertical-align:top}.rbc-agenda-view table.rbc-agenda-table .rbc-agenda-time-cell{padding-left:15px;padding-right:15px;text-transform:lowercase}.rbc-agenda-view table.rbc-agenda-table tbody>tr>td+td{border-left:1px solid #ddd}.rbc-rtl .rbc-agenda-view table.rbc-agenda-table tbody>tr>td+td{border-left-width:0;border-right:1px solid #ddd}.rbc-agenda-view table.rbc-agenda-table tbody>tr+tr{border-top:1px solid #ddd}.rbc-agenda-view table.rbc-agenda-table thead>tr>th{padding:3px 5px;text-align:left;border-bottom:1px solid #ddd}.rbc-rtl .rbc-agenda-view table.rbc-agenda-table thead>tr>th{text-align:right}.rbc-agenda-time-cell{text-transform:lowercase}.rbc-agenda-time-cell .rbc-continues-after:after{content:" »"}.rbc-agenda-time-cell .rbc-continues-prior:before{content:"« "}.rbc-agenda-date-cell,.rbc-agenda-time-cell{white-space:nowrap}.rbc-agenda-event-cell{width:100%}.rbc-time-column{display:flex;flex-direction:column;min-height:100%}.rbc-time-column .rbc-timeslot-group{flex:1}.rbc-timeslot-group{border-bottom:1px solid #ddd;min-height:40px;display:flex;flex-flow:column nowrap}.rbc-time-gutter,.rbc-header-gutter{flex:none}.rbc-label{padding:0 5px}.rbc-day-slot{position:relative}.rbc-day-slot .rbc-events-container{bottom:0;left:0;position:absolute;right:0;margin-right:10px;top:0}.rbc-day-slot .rbc-events-container.rbc-rtl{left:10px;right:0}.rbc-day-slot .rbc-event,.rbc-day-slot .rbc-background-event{border:1px solid #265985;display:flex;max-height:100%;min-height:20px;flex-flow:column wrap;align-items:flex-start;overflow:hidden;position:absolute}.rbc-day-slot .rbc-background-event{opacity:.75}.rbc-day-slot .rbc-event-label{flex:none;padding-right:5px;width:auto}.rbc-day-slot .rbc-event-content{width:100%;flex:1 1 0;word-wrap:break-word;line-height:1;height:100%;min-height:1em}.rbc-day-slot .rbc-time-slot{border-top:1px solid #f7f7f7}.rbc-time-view-resources .rbc-time-gutter,.rbc-time-view-resources .rbc-time-header-gutter{position:sticky;left:0;background-color:#fff;border-right:1px solid #ddd;z-index:10;margin-right:-1px}.rbc-time-view-resources .rbc-time-header{overflow:hidden}.rbc-time-view-resources .rbc-time-header-content{min-width:auto;flex:1 0 0;flex-basis:0px}.rbc-time-view-resources .rbc-time-header-cell-single-day{display:none}.rbc-time-view-resources .rbc-day-slot{min-width:140px}.rbc-time-view-resources .rbc-header,.rbc-time-view-resources .rbc-day-bg{width:140px;flex:1 1 0;flex-basis:0 px}.rbc-time-header-content+.rbc-time-header-content{margin-left:-1px}.rbc-time-slot{flex:1 0 0}.rbc-time-slot.rbc-now{font-weight:bold}.rbc-day-header{text-align:center}.rbc-slot-selection{z-index:10;position:absolute;background-color:rgba(0,0,0,.5);color:#fff;font-size:75%;width:100%;padding:3px}.rbc-slot-selecting{cursor:move}.rbc-time-view{display:flex;flex-direction:column;flex:1;width:100%;border:1px solid #ddd;min-height:0}.rbc-time-view .rbc-time-gutter{white-space:nowrap;text-align:right}.rbc-time-view .rbc-allday-cell{box-sizing:content-box;width:100%;height:100%;position:relative}.rbc-time-view .rbc-allday-cell+.rbc-allday-cell{border-left:1px solid #ddd}.rbc-time-view .rbc-allday-events{position:relative;z-index:4}.rbc-time-view .rbc-row{box-sizing:border-box;min-height:20px}.rbc-time-header{display:flex;flex:0 0 auto;flex-direction:row}.rbc-time-header.rbc-overflowing{border-right:1px solid #ddd}.rbc-rtl .rbc-time-header.rbc-overflowing{border-right-width:0;border-left:1px solid #ddd}.rbc-time-header>.rbc-row:first-child{border-bottom:1px solid #ddd}.rbc-time-header>.rbc-row.rbc-row-resource{border-bottom:1px solid #ddd}.rbc-time-header-cell-single-day{display:none}.rbc-time-header-content{flex:1;display:flex;min-width:0;flex-direction:column;border-left:1px solid #ddd}.rbc-rtl .rbc-time-header-content{border-left-width:0;border-right:1px solid #ddd}.rbc-time-header-content>.rbc-row.rbc-row-resource{border-bottom:1px solid #ddd;flex-shrink:0}.rbc-time-content{display:flex;flex:1 0 0%;align-items:flex-start;width:100%;border-top:2px solid #ddd;overflow-y:auto;position:relative}.rbc-time-content>.rbc-time-gutter{flex:none}.rbc-time-content>*+*>*{border-left:1px solid #ddd}.rbc-rtl .rbc-time-content>*+*>*{border-left-width:0;border-right:1px solid #ddd}.rbc-time-content>.rbc-day-slot{width:100%;user-select:none;-webkit-user-select:none}.rbc-current-time-indicator{position:absolute;z-index:3;left:0;right:0;height:1px;background-color:#74ad31;pointer-events:none}.rbc-addons-dnd .rbc-addons-dnd-row-body{position:relative}.rbc-addons-dnd .rbc-addons-dnd-drag-row{position:absolute;top:0;left:0;right:0}.rbc-addons-dnd .rbc-addons-dnd-over{background-color:rgba(0,0,0,.3)}.rbc-addons-dnd .rbc-event,.rbc-addons-dnd .rbc-day-slot .rbc-background-event,.rbc-day-slot .rbc-addons-dnd .rbc-background-event{transition:opacity 150ms}.rbc-addons-dnd .rbc-event:hover .rbc-addons-dnd-resize-ns-icon,.rbc-addons-dnd .rbc-day-slot .rbc-background-event:hover .rbc-addons-dnd-resize-ns-icon,.rbc-day-slot .rbc-addons-dnd .rbc-background-event:hover .rbc-addons-dnd-resize-ns-icon,.rbc-addons-dnd .rbc-event:hover .rbc-addons-dnd-resize-ew-icon,.rbc-addons-dnd .rbc-day-slot .rbc-background-event:hover .rbc-addons-dnd-resize-ew-icon,.rbc-day-slot .rbc-addons-dnd .rbc-background-event:hover .rbc-addons-dnd-resize-ew-icon{display:block}.rbc-addons-dnd .rbc-addons-dnd-dragged-event{opacity:0}.rbc-addons-dnd.rbc-addons-dnd-is-dragging .rbc-event:not(.rbc-addons-dnd-dragged-event):not(.rbc-addons-dnd-drag-preview),.rbc-addons-dnd.rbc-addons-dnd-is-dragging .rbc-day-slot .rbc-background-event:not(.rbc-addons-dnd-dragged-event):not(.rbc-addons-dnd-drag-preview),.rbc-day-slot .rbc-addons-dnd.rbc-addons-dnd-is-dragging .rbc-background-event:not(.rbc-addons-dnd-dragged-event):not(.rbc-addons-dnd-drag-preview){opacity:.5}.rbc-addons-dnd .rbc-addons-dnd-resizable{position:relative;width:100%;height:100%}.rbc-addons-dnd .rbc-addons-dnd-resize-ns-anchor{width:100%;text-align:center;position:absolute}.rbc-addons-dnd .rbc-addons-dnd-resize-ns-anchor:first-child{top:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ns-anchor:last-child{bottom:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ns-anchor .rbc-addons-dnd-resize-ns-icon{display:none;border-top:3px double;margin:0 auto;width:10px;cursor:ns-resize}.rbc-addons-dnd .rbc-addons-dnd-resize-ew-anchor{position:absolute;top:4px;bottom:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ew-anchor:first-child{left:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ew-anchor:last-child{right:0}.rbc-addons-dnd .rbc-addons-dnd-resize-ew-anchor .rbc-addons-dnd-resize-ew-icon{display:none;border-left:3px double;margin-top:auto;margin-bottom:auto;height:10px;cursor:ew-resize}.height600{position:relative;height:600px}.examples--header,.dndOutsideSourceExample{margin:0 40px;text-align:center}.dndOutsideSourceExample{display:flex}.dndOutsideSourceExample>.inner{display:flex;flex:1;justify-content:center;flex-wrap:wrap}.dndOutsideSourceExample>.inner h4{color:gray;width:100%}.dndOutsideSourceExample>.inner div[draggable]{display:flex;align-items:center;justify-content:center;border:2px solid gray;border-radius:4px;width:100px;margin:10px;cursor:grab}.dndOutsideSourceExample>.inner input[type=checkbox]{margin-right:5px}.card{background-color:#fff;border:0;padding:24px;border-radius:2px;margin-bottom:20px;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.isDraggable{cursor:grab !important}.nonDraggable,.nonResizable{background-color:#bed7ec !important;color:#000 !important}',""]),module.exports=exports},"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./stories/resources/propGetter.scss":function(module,exports,__webpack_require__){(exports=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(!1)).push([module.id,'.powderBlue,#my_scheduler,.tuesday{background-color:#b0e0e6;color:#000}.darkGreen{background-color:#006400;color:#fff}.slotDefault{background-color:"#FAF0E6";color:"black"}#my_scheduler{padding:.5em;border:1px solid blue}',""]),module.exports=exports},"./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[8].use[1]!./node_modules/sass-loader/dist/cjs.js!./stories/demos/exampleCode/rendering.module.scss":function(module,exports,__webpack_require__){(exports=__webpack_require__("./node_modules/css-loader/dist/runtime/api.js")(!1)).push([module.id,".rendering-module__specialDay--3nNWi{background-color:#fec}",""]),exports.locals={specialDay:"rendering-module__specialDay--3nNWi"},module.exports=exports},"./node_modules/moment/locale sync recursive ^\\.\\/.*$":function(module,__unused_webpack_exports,__webpack_require__){var map={"./af":"./node_modules/moment/locale/af.js","./af.js":"./node_modules/moment/locale/af.js","./ar":"./node_modules/moment/locale/ar.js","./ar-dz":"./node_modules/moment/locale/ar-dz.js","./ar-dz.js":"./node_modules/moment/locale/ar-dz.js","./ar-kw":"./node_modules/moment/locale/ar-kw.js","./ar-kw.js":"./node_modules/moment/locale/ar-kw.js","./ar-ly":"./node_modules/moment/locale/ar-ly.js","./ar-ly.js":"./node_modules/moment/locale/ar-ly.js","./ar-ma":"./node_modules/moment/locale/ar-ma.js","./ar-ma.js":"./node_modules/moment/locale/ar-ma.js","./ar-ps":"./node_modules/moment/locale/ar-ps.js","./ar-ps.js":"./node_modules/moment/locale/ar-ps.js","./ar-sa":"./node_modules/moment/locale/ar-sa.js","./ar-sa.js":"./node_modules/moment/locale/ar-sa.js","./ar-tn":"./node_modules/moment/locale/ar-tn.js","./ar-tn.js":"./node_modules/moment/locale/ar-tn.js","./ar.js":"./node_modules/moment/locale/ar.js","./az":"./node_modules/moment/locale/az.js","./az.js":"./node_modules/moment/locale/az.js","./be":"./node_modules/moment/locale/be.js","./be.js":"./node_modules/moment/locale/be.js","./bg":"./node_modules/moment/locale/bg.js","./bg.js":"./node_modules/moment/locale/bg.js","./bm":"./node_modules/moment/locale/bm.js","./bm.js":"./node_modules/moment/locale/bm.js","./bn":"./node_modules/moment/locale/bn.js","./bn-bd":"./node_modules/moment/locale/bn-bd.js","./bn-bd.js":"./node_modules/moment/locale/bn-bd.js","./bn.js":"./node_modules/moment/locale/bn.js","./bo":"./node_modules/moment/locale/bo.js","./bo.js":"./node_modules/moment/locale/bo.js","./br":"./node_modules/moment/locale/br.js","./br.js":"./node_modules/moment/locale/br.js","./bs":"./node_modules/moment/locale/bs.js","./bs.js":"./node_modules/moment/locale/bs.js","./ca":"./node_modules/moment/locale/ca.js","./ca.js":"./node_modules/moment/locale/ca.js","./cs":"./node_modules/moment/locale/cs.js","./cs.js":"./node_modules/moment/locale/cs.js","./cv":"./node_modules/moment/locale/cv.js","./cv.js":"./node_modules/moment/locale/cv.js","./cy":"./node_modules/moment/locale/cy.js","./cy.js":"./node_modules/moment/locale/cy.js","./da":"./node_modules/moment/locale/da.js","./da.js":"./node_modules/moment/locale/da.js","./de":"./node_modules/moment/locale/de.js","./de-at":"./node_modules/moment/locale/de-at.js","./de-at.js":"./node_modules/moment/locale/de-at.js","./de-ch":"./node_modules/moment/locale/de-ch.js","./de-ch.js":"./node_modules/moment/locale/de-ch.js","./de.js":"./node_modules/moment/locale/de.js","./dv":"./node_modules/moment/locale/dv.js","./dv.js":"./node_modules/moment/locale/dv.js","./el":"./node_modules/moment/locale/el.js","./el.js":"./node_modules/moment/locale/el.js","./en-au":"./node_modules/moment/locale/en-au.js","./en-au.js":"./node_modules/moment/locale/en-au.js","./en-ca":"./node_modules/moment/locale/en-ca.js","./en-ca.js":"./node_modules/moment/locale/en-ca.js","./en-gb":"./node_modules/moment/locale/en-gb.js","./en-gb.js":"./node_modules/moment/locale/en-gb.js","./en-ie":"./node_modules/moment/locale/en-ie.js","./en-ie.js":"./node_modules/moment/locale/en-ie.js","./en-il":"./node_modules/moment/locale/en-il.js","./en-il.js":"./node_modules/moment/locale/en-il.js","./en-in":"./node_modules/moment/locale/en-in.js","./en-in.js":"./node_modules/moment/locale/en-in.js","./en-nz":"./node_modules/moment/locale/en-nz.js","./en-nz.js":"./node_modules/moment/locale/en-nz.js","./en-sg":"./node_modules/moment/locale/en-sg.js","./en-sg.js":"./node_modules/moment/locale/en-sg.js","./eo":"./node_modules/moment/locale/eo.js","./eo.js":"./node_modules/moment/locale/eo.js","./es":"./node_modules/moment/locale/es.js","./es-do":"./node_modules/moment/locale/es-do.js","./es-do.js":"./node_modules/moment/locale/es-do.js","./es-mx":"./node_modules/moment/locale/es-mx.js","./es-mx.js":"./node_modules/moment/locale/es-mx.js","./es-us":"./node_modules/moment/locale/es-us.js","./es-us.js":"./node_modules/moment/locale/es-us.js","./es.js":"./node_modules/moment/locale/es.js","./et":"./node_modules/moment/locale/et.js","./et.js":"./node_modules/moment/locale/et.js","./eu":"./node_modules/moment/locale/eu.js","./eu.js":"./node_modules/moment/locale/eu.js","./fa":"./node_modules/moment/locale/fa.js","./fa.js":"./node_modules/moment/locale/fa.js","./fi":"./node_modules/moment/locale/fi.js","./fi.js":"./node_modules/moment/locale/fi.js","./fil":"./node_modules/moment/locale/fil.js","./fil.js":"./node_modules/moment/locale/fil.js","./fo":"./node_modules/moment/locale/fo.js","./fo.js":"./node_modules/moment/locale/fo.js","./fr":"./node_modules/moment/locale/fr.js","./fr-ca":"./node_modules/moment/locale/fr-ca.js","./fr-ca.js":"./node_modules/moment/locale/fr-ca.js","./fr-ch":"./node_modules/moment/locale/fr-ch.js","./fr-ch.js":"./node_modules/moment/locale/fr-ch.js","./fr.js":"./node_modules/moment/locale/fr.js","./fy":"./node_modules/moment/locale/fy.js","./fy.js":"./node_modules/moment/locale/fy.js","./ga":"./node_modules/moment/locale/ga.js","./ga.js":"./node_modules/moment/locale/ga.js","./gd":"./node_modules/moment/locale/gd.js","./gd.js":"./node_modules/moment/locale/gd.js","./gl":"./node_modules/moment/locale/gl.js","./gl.js":"./node_modules/moment/locale/gl.js","./gom-deva":"./node_modules/moment/locale/gom-deva.js","./gom-deva.js":"./node_modules/moment/locale/gom-deva.js","./gom-latn":"./node_modules/moment/locale/gom-latn.js","./gom-latn.js":"./node_modules/moment/locale/gom-latn.js","./gu":"./node_modules/moment/locale/gu.js","./gu.js":"./node_modules/moment/locale/gu.js","./he":"./node_modules/moment/locale/he.js","./he.js":"./node_modules/moment/locale/he.js","./hi":"./node_modules/moment/locale/hi.js","./hi.js":"./node_modules/moment/locale/hi.js","./hr":"./node_modules/moment/locale/hr.js","./hr.js":"./node_modules/moment/locale/hr.js","./hu":"./node_modules/moment/locale/hu.js","./hu.js":"./node_modules/moment/locale/hu.js","./hy-am":"./node_modules/moment/locale/hy-am.js","./hy-am.js":"./node_modules/moment/locale/hy-am.js","./id":"./node_modules/moment/locale/id.js","./id.js":"./node_modules/moment/locale/id.js","./is":"./node_modules/moment/locale/is.js","./is.js":"./node_modules/moment/locale/is.js","./it":"./node_modules/moment/locale/it.js","./it-ch":"./node_modules/moment/locale/it-ch.js","./it-ch.js":"./node_modules/moment/locale/it-ch.js","./it.js":"./node_modules/moment/locale/it.js","./ja":"./node_modules/moment/locale/ja.js","./ja.js":"./node_modules/moment/locale/ja.js","./jv":"./node_modules/moment/locale/jv.js","./jv.js":"./node_modules/moment/locale/jv.js","./ka":"./node_modules/moment/locale/ka.js","./ka.js":"./node_modules/moment/locale/ka.js","./kk":"./node_modules/moment/locale/kk.js","./kk.js":"./node_modules/moment/locale/kk.js","./km":"./node_modules/moment/locale/km.js","./km.js":"./node_modules/moment/locale/km.js","./kn":"./node_modules/moment/locale/kn.js","./kn.js":"./node_modules/moment/locale/kn.js","./ko":"./node_modules/moment/locale/ko.js","./ko.js":"./node_modules/moment/locale/ko.js","./ku":"./node_modules/moment/locale/ku.js","./ku-kmr":"./node_modules/moment/locale/ku-kmr.js","./ku-kmr.js":"./node_modules/moment/locale/ku-kmr.js","./ku.js":"./node_modules/moment/locale/ku.js","./ky":"./node_modules/moment/locale/ky.js","./ky.js":"./node_modules/moment/locale/ky.js","./lb":"./node_modules/moment/locale/lb.js","./lb.js":"./node_modules/moment/locale/lb.js","./lo":"./node_modules/moment/locale/lo.js","./lo.js":"./node_modules/moment/locale/lo.js","./lt":"./node_modules/moment/locale/lt.js","./lt.js":"./node_modules/moment/locale/lt.js","./lv":"./node_modules/moment/locale/lv.js","./lv.js":"./node_modules/moment/locale/lv.js","./me":"./node_modules/moment/locale/me.js","./me.js":"./node_modules/moment/locale/me.js","./mi":"./node_modules/moment/locale/mi.js","./mi.js":"./node_modules/moment/locale/mi.js","./mk":"./node_modules/moment/locale/mk.js","./mk.js":"./node_modules/moment/locale/mk.js","./ml":"./node_modules/moment/locale/ml.js","./ml.js":"./node_modules/moment/locale/ml.js","./mn":"./node_modules/moment/locale/mn.js","./mn.js":"./node_modules/moment/locale/mn.js","./mr":"./node_modules/moment/locale/mr.js","./mr.js":"./node_modules/moment/locale/mr.js","./ms":"./node_modules/moment/locale/ms.js","./ms-my":"./node_modules/moment/locale/ms-my.js","./ms-my.js":"./node_modules/moment/locale/ms-my.js","./ms.js":"./node_modules/moment/locale/ms.js","./mt":"./node_modules/moment/locale/mt.js","./mt.js":"./node_modules/moment/locale/mt.js","./my":"./node_modules/moment/locale/my.js","./my.js":"./node_modules/moment/locale/my.js","./nb":"./node_modules/moment/locale/nb.js","./nb.js":"./node_modules/moment/locale/nb.js","./ne":"./node_modules/moment/locale/ne.js","./ne.js":"./node_modules/moment/locale/ne.js","./nl":"./node_modules/moment/locale/nl.js","./nl-be":"./node_modules/moment/locale/nl-be.js","./nl-be.js":"./node_modules/moment/locale/nl-be.js","./nl.js":"./node_modules/moment/locale/nl.js","./nn":"./node_modules/moment/locale/nn.js","./nn.js":"./node_modules/moment/locale/nn.js","./oc-lnc":"./node_modules/moment/locale/oc-lnc.js","./oc-lnc.js":"./node_modules/moment/locale/oc-lnc.js","./pa-in":"./node_modules/moment/locale/pa-in.js","./pa-in.js":"./node_modules/moment/locale/pa-in.js","./pl":"./node_modules/moment/locale/pl.js","./pl.js":"./node_modules/moment/locale/pl.js","./pt":"./node_modules/moment/locale/pt.js","./pt-br":"./node_modules/moment/locale/pt-br.js","./pt-br.js":"./node_modules/moment/locale/pt-br.js","./pt.js":"./node_modules/moment/locale/pt.js","./ro":"./node_modules/moment/locale/ro.js","./ro.js":"./node_modules/moment/locale/ro.js","./ru":"./node_modules/moment/locale/ru.js","./ru.js":"./node_modules/moment/locale/ru.js","./sd":"./node_modules/moment/locale/sd.js","./sd.js":"./node_modules/moment/locale/sd.js","./se":"./node_modules/moment/locale/se.js","./se.js":"./node_modules/moment/locale/se.js","./si":"./node_modules/moment/locale/si.js","./si.js":"./node_modules/moment/locale/si.js","./sk":"./node_modules/moment/locale/sk.js","./sk.js":"./node_modules/moment/locale/sk.js","./sl":"./node_modules/moment/locale/sl.js","./sl.js":"./node_modules/moment/locale/sl.js","./sq":"./node_modules/moment/locale/sq.js","./sq.js":"./node_modules/moment/locale/sq.js","./sr":"./node_modules/moment/locale/sr.js","./sr-cyrl":"./node_modules/moment/locale/sr-cyrl.js","./sr-cyrl.js":"./node_modules/moment/locale/sr-cyrl.js","./sr.js":"./node_modules/moment/locale/sr.js","./ss":"./node_modules/moment/locale/ss.js","./ss.js":"./node_modules/moment/locale/ss.js","./sv":"./node_modules/moment/locale/sv.js","./sv.js":"./node_modules/moment/locale/sv.js","./sw":"./node_modules/moment/locale/sw.js","./sw.js":"./node_modules/moment/locale/sw.js","./ta":"./node_modules/moment/locale/ta.js","./ta.js":"./node_modules/moment/locale/ta.js","./te":"./node_modules/moment/locale/te.js","./te.js":"./node_modules/moment/locale/te.js","./tet":"./node_modules/moment/locale/tet.js","./tet.js":"./node_modules/moment/locale/tet.js","./tg":"./node_modules/moment/locale/tg.js","./tg.js":"./node_modules/moment/locale/tg.js","./th":"./node_modules/moment/locale/th.js","./th.js":"./node_modules/moment/locale/th.js","./tk":"./node_modules/moment/locale/tk.js","./tk.js":"./node_modules/moment/locale/tk.js","./tl-ph":"./node_modules/moment/locale/tl-ph.js","./tl-ph.js":"./node_modules/moment/locale/tl-ph.js","./tlh":"./node_modules/moment/locale/tlh.js","./tlh.js":"./node_modules/moment/locale/tlh.js","./tr":"./node_modules/moment/locale/tr.js","./tr.js":"./node_modules/moment/locale/tr.js","./tzl":"./node_modules/moment/locale/tzl.js","./tzl.js":"./node_modules/moment/locale/tzl.js","./tzm":"./node_modules/moment/locale/tzm.js","./tzm-latn":"./node_modules/moment/locale/tzm-latn.js","./tzm-latn.js":"./node_modules/moment/locale/tzm-latn.js","./tzm.js":"./node_modules/moment/locale/tzm.js","./ug-cn":"./node_modules/moment/locale/ug-cn.js","./ug-cn.js":"./node_modules/moment/locale/ug-cn.js","./uk":"./node_modules/moment/locale/uk.js","./uk.js":"./node_modules/moment/locale/uk.js","./ur":"./node_modules/moment/locale/ur.js","./ur.js":"./node_modules/moment/locale/ur.js","./uz":"./node_modules/moment/locale/uz.js","./uz-latn":"./node_modules/moment/locale/uz-latn.js","./uz-latn.js":"./node_modules/moment/locale/uz-latn.js","./uz.js":"./node_modules/moment/locale/uz.js","./vi":"./node_modules/moment/locale/vi.js","./vi.js":"./node_modules/moment/locale/vi.js","./x-pseudo":"./node_modules/moment/locale/x-pseudo.js","./x-pseudo.js":"./node_modules/moment/locale/x-pseudo.js","./yo":"./node_modules/moment/locale/yo.js","./yo.js":"./node_modules/moment/locale/yo.js","./zh-cn":"./node_modules/moment/locale/zh-cn.js","./zh-cn.js":"./node_modules/moment/locale/zh-cn.js","./zh-hk":"./node_modules/moment/locale/zh-hk.js","./zh-hk.js":"./node_modules/moment/locale/zh-hk.js","./zh-mo":"./node_modules/moment/locale/zh-mo.js","./zh-mo.js":"./node_modules/moment/locale/zh-mo.js","./zh-tw":"./node_modules/moment/locale/zh-tw.js","./zh-tw.js":"./node_modules/moment/locale/zh-tw.js"};function webpackContext(req){var id=webpackContextResolve(req);return __webpack_require__(id)}function webpackContextResolve(req){if(!__webpack_require__.o(map,req)){var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}return map[req]}webpackContext.keys=function webpackContextKeys(){return Object.keys(map)},webpackContext.resolve=webpackContextResolve,module.exports=webpackContext,webpackContext.id="./node_modules/moment/locale sync recursive ^\\.\\/.*$"},"./src/addons/dragAndDrop/styles.scss":function(module,__unused_webpack_exports,__webpack_require__){var api=__webpack_require__("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),content=__webpack_require__("./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/addons/dragAndDrop/styles.scss");"string"==typeof(content=content.__esModule?content.default:content)&&(content=[[module.id,content,""]]);var options={insert:"head",singleton:!1};api(content,options);module.exports=content.locals||{}},"./src/sass/styles.scss":function(module,__unused_webpack_exports,__webpack_require__){var api=__webpack_require__("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),content=__webpack_require__("./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/sass/styles.scss");"string"==typeof(content=content.__esModule?content.default:content)&&(content=[[module.id,content,""]]);var options={insert:"head",singleton:!1};api(content,options);module.exports=content.locals||{}},"./stories/resources/customToolbar.scss":function(module,__unused_webpack_exports,__webpack_require__){var api=__webpack_require__("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),content=__webpack_require__("./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./stories/resources/customToolbar.scss");"string"==typeof(content=content.__esModule?content.default:content)&&(content=[[module.id,content,""]]);var options={insert:"head",singleton:!1};api(content,options);module.exports=content.locals||{}},"./stories/resources/main.scss":function(module,__unused_webpack_exports,__webpack_require__){var api=__webpack_require__("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),content=__webpack_require__("./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./stories/resources/main.scss");"string"==typeof(content=content.__esModule?content.default:content)&&(content=[[module.id,content,""]]);var options={insert:"head",singleton:!1};api(content,options);module.exports=content.locals||{}},"./stories/resources/propGetter.scss":function(module,__unused_webpack_exports,__webpack_require__){var api=__webpack_require__("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),content=__webpack_require__("./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./stories/resources/propGetter.scss");"string"==typeof(content=content.__esModule?content.default:content)&&(content=[[module.id,content,""]]);var options={insert:"head",singleton:!1};api(content,options);module.exports=content.locals||{}},"./stories/demos/exampleCode/rendering.module.scss":function(module,__unused_webpack_exports,__webpack_require__){var api=__webpack_require__("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),content=__webpack_require__("./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[8].use[1]!./node_modules/sass-loader/dist/cjs.js!./stories/demos/exampleCode/rendering.module.scss");"string"==typeof(content=content.__esModule?content.default:content)&&(content=[[module.id,content,""]]);var options={insert:"head",singleton:!1};api(content,options);module.exports=content.locals||{}},"./stories sync recursive ^\\.(?:(?:^%7C\\/%7C(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$":function(module,__unused_webpack_exports,__webpack_require__){var map={"./Calendar.stories.js":"./stories/Calendar.stories.js","./DragAndDrop.stories.js":"./stories/DragAndDrop.stories.js","./Durations.stories.js":"./stories/Durations.stories.js","./Layout.stories.js":"./stories/Layout.stories.js","./Timeslots.stories.js":"./stories/Timeslots.stories.js","./addons/dragAndDrop/basic.stories.js":"./stories/addons/dragAndDrop/basic.stories.js","./addons/dragAndDrop/outside.stories.js":"./stories/addons/dragAndDrop/outside.stories.js","./addons/dragAndDrop/props/dragFromOutsideItem.stories.js":"./stories/addons/dragAndDrop/props/dragFromOutsideItem.stories.js","./addons/dragAndDrop/props/draggableAccessor.stories.js":"./stories/addons/dragAndDrop/props/draggableAccessor.stories.js","./addons/dragAndDrop/props/onDragOver.stories.js":"./stories/addons/dragAndDrop/props/onDragOver.stories.js","./addons/dragAndDrop/props/onDragStart.stories.js":"./stories/addons/dragAndDrop/props/onDragStart.stories.js","./addons/dragAndDrop/props/onDropFromOutside.stories.js":"./stories/addons/dragAndDrop/props/onDropFromOutside.stories.js","./addons/dragAndDrop/props/onEventDrop.stories.js":"./stories/addons/dragAndDrop/props/onEventDrop.stories.js","./addons/dragAndDrop/props/onEventResize.stories.js":"./stories/addons/dragAndDrop/props/onEventResize.stories.js","./addons/dragAndDrop/props/resizable.stories.js":"./stories/addons/dragAndDrop/props/resizable.stories.js","./addons/dragAndDrop/props/resizableAccessor.stories.js":"./stories/addons/dragAndDrop/props/resizableAccessor.stories.js","./addons/dragAndDrop/resource.stories.js":"./stories/addons/dragAndDrop/resource.stories.js","./demos/backgroundEvents.stories.js":"./stories/demos/backgroundEvents.stories.js","./demos/basic.stories.js":"./stories/demos/basic.stories.js","./demos/cultures.stories.js":"./stories/demos/cultures.stories.js","./demos/customView.stories.js":"./stories/demos/customView.stories.js","./demos/dayjs.stories.js":"./stories/demos/dayjs.stories.js","./demos/luxon.stories.js":"./stories/demos/luxon.stories.js","./demos/noOverlap.stories.js":"./stories/demos/noOverlap.stories.js","./demos/popup.stories.js":"./stories/demos/popup.stories.js","./demos/rendering.stories.js":"./stories/demos/rendering.stories.js","./demos/resource.stories.js":"./stories/demos/resource.stories.js","./demos/selectable.stories.js":"./stories/demos/selectable.stories.js","./demos/timeslots.stories.js":"./stories/demos/timeslots.stories.js","./demos/timezones.stories.js":"./stories/demos/timezones.stories.js","./props/allDayAccessor.stories.js":"./stories/props/allDayAccessor.stories.js","./props/allDayMaxRows.stories.js":"./stories/props/allDayMaxRows.stories.js","./props/backgroundEvents.stories.js":"./stories/props/backgroundEvents.stories.js","./props/components.stories.js":"./stories/props/components.stories.js","./props/culture.stories.js":"./stories/props/culture.stories.js","./props/date.stories.js":"./stories/props/date.stories.js","./props/dayLayoutAlgorithm.stories.js":"./stories/props/dayLayoutAlgorithm.stories.js","./props/dayPropGetter.stories.js":"./stories/props/dayPropGetter.stories.js","./props/defaultDate.stories.js":"./stories/props/defaultDate.stories.js","./props/defaultView.stories.js":"./stories/props/defaultView.stories.js","./props/drilldownView.stories.js":"./stories/props/drilldownView.stories.js","./props/elementProps.stories.js":"./stories/props/elementProps.stories.js","./props/endAccessor.stories.js":"./stories/props/endAccessor.stories.js","./props/eventPropGetter.stories.js":"./stories/props/eventPropGetter.stories.js","./props/events.stories.js":"./stories/props/events.stories.js","./props/formats.stories.js":"./stories/props/formats.stories.js","./props/formatsAgendaDateFormat.stories.js":"./stories/props/formatsAgendaDateFormat.stories.js","./props/formatsAgendaHeaderFormat.stories.js":"./stories/props/formatsAgendaHeaderFormat.stories.js","./props/formatsAgendaTimeFormat.stories.js":"./stories/props/formatsAgendaTimeFormat.stories.js","./props/formatsAgendaTimeRangeFormat.stories.js":"./stories/props/formatsAgendaTimeRangeFormat.stories.js","./props/formatsDateFormat.stories.js":"./stories/props/formatsDateFormat.stories.js","./props/formatsDayFormat.stories.js":"./stories/props/formatsDayFormat.stories.js","./props/formatsDayHeaderFormat.stories.js":"./stories/props/formatsDayHeaderFormat.stories.js","./props/formatsDayRangeHeaderFormat.stories.js":"./stories/props/formatsDayRangeHeaderFormat.stories.js","./props/formatsEventTimeRangeEndFormat.stories.js":"./stories/props/formatsEventTimeRangeEndFormat.stories.js","./props/formatsEventTimeRangeFormat.stories.js":"./stories/props/formatsEventTimeRangeFormat.stories.js","./props/formatsEventTimeRangeStartFormat.stories.js":"./stories/props/formatsEventTimeRangeStartFormat.stories.js","./props/formatsMonthHeaderFormat.stories.js":"./stories/props/formatsMonthHeaderFormat.stories.js","./props/formatsSelectRangeFormat.stories.js":"./stories/props/formatsSelectRangeFormat.stories.js","./props/formatsTimeGutterFormat.stories.js":"./stories/props/formatsTimeGutterFormat.stories.js","./props/formatsWeekdayFormat.stories.js":"./stories/props/formatsWeekdayFormat.stories.js","./props/getDrilldownView.stories.js":"./stories/props/getDrilldownView.stories.js","./props/getNow.stories.js":"./stories/props/getNow.stories.js","./props/length.stories.js":"./stories/props/length.stories.js","./props/localizer.stories.js":"./stories/props/localizer.stories.js","./props/longPressThreshold.stories.js":"./stories/props/longPressThreshold.stories.js","./props/max.stories.js":"./stories/props/max.stories.js","./props/messages.stories.js":"./stories/props/messages.stories.js","./props/min.stories.js":"./stories/props/min.stories.js","./props/onDoubleClickEvent.stories.js":"./stories/props/onDoubleClickEvent.stories.js","./props/onDrillDown.stories.js":"./stories/props/onDrillDown.stories.js","./props/onKeyPressEvent.stories.js":"./stories/props/onKeyPressEvent.stories.js","./props/onNavigate.stories.js":"./stories/props/onNavigate.stories.js","./props/onRangeChange.stories.js":"./stories/props/onRangeChange.stories.js","./props/onSelectEvent.stories.js":"./stories/props/onSelectEvent.stories.js","./props/onSelectSlot.stories.js":"./stories/props/onSelectSlot.stories.js","./props/onSelecting.stories.js":"./stories/props/onSelecting.stories.js","./props/onShowMore.stories.js":"./stories/props/onShowMore.stories.js","./props/onView.stories.js":"./stories/props/onView.stories.js","./props/popup.stories.js":"./stories/props/popup.stories.js","./props/popupOffset.stories.js":"./stories/props/popupOffset.stories.js","./props/resourceIdAccessor.stories.js":"./stories/props/resourceIdAccessor.stories.js","./props/resourceTitleAccessor.stories.js":"./stories/props/resourceTitleAccessor.stories.js","./props/resources.stories.js":"./stories/props/resources.stories.js","./props/rtl.stories.js":"./stories/props/rtl.stories.js","./props/scrollToTime.stories.js":"./stories/props/scrollToTime.stories.js","./props/selectable.stories.js":"./stories/props/selectable.stories.js","./props/selected.stories.js":"./stories/props/selected.stories.js","./props/showAllEvents.stories.js":"./stories/props/showAllEvents.stories.js","./props/showMultiDayTimes.stories.js":"./stories/props/showMultiDayTimes.stories.js","./props/slotGroupPropGetter.stories.js":"./stories/props/slotGroupPropGetter.stories.js","./props/slotPropGetter.stories.js":"./stories/props/slotPropGetter.stories.js","./props/startAccessor.stories.js":"./stories/props/startAccessor.stories.js","./props/step.stories.js":"./stories/props/step.stories.js","./props/timeslots.stories.js":"./stories/props/timeslots.stories.js","./props/titleAccessor.stories.js":"./stories/props/titleAccessor.stories.js","./props/toolbar.stories.js":"./stories/props/toolbar.stories.js","./props/tooltipAccessor.stories.js":"./stories/props/tooltipAccessor.stories.js","./props/view.stories.js":"./stories/props/view.stories.js","./props/views.stories.js":"./stories/props/views.stories.js"};function webpackContext(req){var id=webpackContextResolve(req);return __webpack_require__(id)}function webpackContextResolve(req){if(!__webpack_require__.o(map,req)){var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}return map[req]}webpackContext.keys=function webpackContextKeys(){return Object.keys(map)},webpackContext.resolve=webpackContextResolve,module.exports=webpackContext,webpackContext.id="./stories sync recursive ^\\.(?:(?:^%7C\\/%7C(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$"},"./stories sync recursive ^\\.(?:(?:^%7C\\/%7C(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$":function(module,__unused_webpack_exports,__webpack_require__){var map={"./AboutBigCalendar.stories.mdx":"./stories/AboutBigCalendar.stories.mdx","./AboutExamples.stories.mdx":"./stories/AboutExamples.stories.mdx","./addons/addOns.stories.mdx":"./stories/addons/addOns.stories.mdx","./addons/dragAndDrop/Introduction.stories.mdx":"./stories/addons/dragAndDrop/Introduction.stories.mdx","./addons/dragAndDrop/props/API.stories.mdx":"./stories/addons/dragAndDrop/props/API.stories.mdx","./demos/dragAndDrop.stories.mdx":"./stories/demos/dragAndDrop.stories.mdx","./guides/CustomStyling.stories.mdx":"./stories/guides/CustomStyling.stories.mdx","./guides/CustomView.stories.mdx":"./stories/guides/CustomView.stories.mdx","./guides/Dates.stories.mdx":"./stories/guides/Dates.stories.mdx","./guides/Timezones.stories.mdx":"./stories/guides/Timezones.stories.mdx","./guides/localizer.stories.mdx":"./stories/guides/localizer.stories.mdx","./props/API.stories.mdx":"./stories/props/API.stories.mdx"};function webpackContext(req){var id=webpackContextResolve(req);return __webpack_require__(id)}function webpackContextResolve(req){if(!__webpack_require__.o(map,req)){var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}return map[req]}webpackContext.keys=function webpackContextKeys(){return Object.keys(map)},webpackContext.resolve=webpackContextResolve,module.exports=webpackContext,webpackContext.id="./stories sync recursive ^\\.(?:(?:^%7C\\/%7C(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$"},"?4f7e":function(){},"./generated-stories-entry.cjs":function(module,__unused_webpack_exports,__webpack_require__){"use strict";module=__webpack_require__.nmd(module),(0,__webpack_require__("./node_modules/@storybook/react/dist/esm/client/index.js").configure)([__webpack_require__("./stories sync recursive ^\\.(?:(?:^%7C\\/%7C(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/)(?%21\\.)(?=.)[^/]*?\\.stories\\.mdx)$"),__webpack_require__("./stories sync recursive ^\\.(?:(?:^%7C\\/%7C(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cts%7Ctsx))$")],module,!1)}},function(__webpack_require__){var __webpack_exec__=function(moduleId){return __webpack_require__(__webpack_require__.s=moduleId)};__webpack_require__.O(0,[879],(function(){return __webpack_exec__("./stories/resources/main.scss"),__webpack_exec__("./node_modules/@storybook/core-client/dist/esm/globals/polyfills.js"),__webpack_exec__("./node_modules/@storybook/core-client/dist/esm/globals/globals.js"),__webpack_exec__("./storybook-init-framework-entry.js"),__webpack_exec__("./node_modules/@storybook/react/dist/esm/client/docs/config-generated-config-entry.js"),__webpack_exec__("./node_modules/@storybook/react/dist/esm/client/preview/config-generated-config-entry.js"),__webpack_exec__("./node_modules/@storybook/addon-links/preview.js-generated-config-entry.js"),__webpack_exec__("./node_modules/@storybook/addon-docs/preview.js-generated-config-entry.js"),__webpack_exec__("./node_modules/@storybook/addon-actions/preview.js-generated-config-entry.js"),__webpack_exec__("./node_modules/@storybook/addon-backgrounds/preview.js-generated-config-entry.js"),__webpack_exec__("./node_modules/@storybook/addon-measure/preview.js-generated-config-entry.js"),__webpack_exec__("./node_modules/@storybook/addon-outline/preview.js-generated-config-entry.js"),__webpack_exec__("./.storybook/preview.js-generated-config-entry.js"),__webpack_exec__("./generated-stories-entry.cjs")}));__webpack_require__.O()}]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi4zMDM2YWJlZC5pZnJhbWUuYnVuZGxlLmpzIiwibWFwcGluZ3MiOiJtaUNBQWFBLFdBQWEsQ0FDeEJDLFFBQVMsQ0FBRUMsY0FBZSxjQUMxQkMsU0FBVSxDQUdSQyxTQUFVLENBQ1JDLE1BQU8sdUJBQ1BDLEtBQU0sVUFHVkMsVUFBVyxDQUNUQyxNQUFPLENBQ0wscUJBQ0EscUJBQ0EsUUFDQSxXQUNBLFNBQ0EsU0FDQSxDQUFDLGVBQWdCLFdBR3JCQyxTQUFVLFFBQ1hDLG9CQUFBLGVDdEJELFNBQVNDLFFBQVFDLE9BQVFDLGdCQUFrQixJQUFJQyxLQUFPQyxPQUFPRCxLQUFLRixRQUFTLEdBQUlHLE9BQU9DLHNCQUF1QixDQUFFLElBQUlDLFFBQVVGLE9BQU9DLHNCQUFzQkosUUFBU0MsaUJBQW1CSSxRQUFVQSxRQUFRQyxRQUFPLFNBQVVDLEtBQU8sT0FBT0osT0FBT0sseUJBQXlCUixPQUFRTyxLQUFLRSxVQUFZLEtBQUtQLEtBQUtRLEtBQUtDLE1BQU1ULEtBQU1HLFFBQVUsQ0FBRSxPQUFPSCxJQUFNLENBSXBWLFNBQVNVLGdCQUFnQkMsSUFBS0MsSUFBS0MsT0FBaUssT0FBcEpELE9BQU9ELElBQU9WLE9BQU9hLGVBQWVILElBQUtDLElBQUssQ0FBRUMsTUFBT0EsTUFBT04sWUFBWSxFQUFNUSxjQUFjLEVBQU1DLFVBQVUsSUFBa0JMLElBQUlDLEtBQU9DLE1BQWdCRixHQUFLLENBS2hOVixPQUFPRCxLQUFLaUIseUJBQVFDLFNBQVEsU0FBVU4sS0FDcEMsSUFBSUMsTUFBUUksd0JBQU9MLEtBRW5CLE9BQVFBLEtBQ04sSUFBSyxPQUVELE9BQU9PLEVBQUFBLFVBQUFBLElBQVFOLE9BR25CLElBQUssV0FFRCxPQUFPTyxFQUFBQSxVQUFBQSxJQUFZUCxPQUd2QixJQUFLLGFBRUQsT0FBT0EsTUFBTUssU0FBUSxTQUFVRyxXQUM3QixPQUFPQyxFQUFBQSxVQUFBQSxJQUFhRCxXQUFXLEVBQ2pDLElBR0osSUFBSyxVQUVELE9BQU9SLE1BQU1LLFNBQVEsU0FBVUssUUFDN0IsT0FBT0MsRUFBQUEsVUFBQUEsSUFBVUQsUUFBUSxFQUMzQixJQUdKLElBQUssYUFFRCxPQUFPRSxFQUFBQSxVQUFBQSxJQXJDZixTQUFTQyxjQUFjQyxRQUFVLElBQUssSUFBSUMsRUFBSSxFQUFHQSxFQUFJQyxVQUFVQyxPQUFRRixJQUFLLENBQUUsSUFBSUcsT0FBUyxNQUFRRixVQUFVRCxHQUFLQyxVQUFVRCxHQUFLLENBQUMsRUFBR0EsRUFBSSxFQUFJL0IsUUFBUUksT0FBTzhCLFNBQVMsR0FBSWIsU0FBUSxTQUFVTixLQUFPRixnQkFBZ0JpQixPQUFRZixJQUFLbUIsT0FBT25CLEtBQU8sSUFBS1gsT0FBTytCLDBCQUE0Qi9CLE9BQU9nQyxpQkFBaUJOLE9BQVExQixPQUFPK0IsMEJBQTBCRCxTQUFXbEMsUUFBUUksT0FBTzhCLFNBQVNiLFNBQVEsU0FBVU4sS0FBT1gsT0FBT2EsZUFBZWEsT0FBUWYsSUFBS1gsT0FBT0sseUJBQXlCeUIsT0FBUW5CLEtBQU8sR0FBSSxDQUFFLE9BQU9lLE1BQVEsQ0FxQzVkRCxDQUFjLENBQUMsRUFBR2IsUUFBUSxHQUduRCxJQUFLLG9CQUVELE9BQU9BLE1BQU1LLFNBQVEsU0FBVWdCLFVBQzdCLE9BQU9DLEVBQUFBLFVBQUFBLElBQW9CRCxTQUM3QixJQUdKLElBQUssZ0JBRUQsT0FBT3JCLE1BQU1LLFNBQVEsU0FBVWdCLFVBQzdCLE9BQU9FLEVBQUFBLFVBQUFBLElBQWdCRixTQUN6QixJQUdKLElBQUssU0FFRCxPQUFPRyxFQUFBQSxVQUFBQSxJQUFnQnhCLE9BRzNCLElBQUssVUFDTCxJQUFLLGNBRUQsSUFBSXlCLEVBQUksQ0FBQyxFQUVULE9BREFBLEVBQUUxQixLQUFPQyxPQUNGWSxFQUFBQSxVQUFBQSxJQUFjYSxHQUFHLEdBRzVCLElBQUssc0JBQ0wsSUFBSyxnQkFDTCxJQUFLLGNBRUQsT0FBTyxLQUdYLFFBR0ksT0FBT0MsUUFBUUMsSUFBSTVCLElBQU0sMkJBR2pDLEcsd21EQ3pEQSw2QkFDRTZCLE1BQU8sc0JBQ1BDLFVBQVdDLGtDQUFBQSxHQUNYQyxXQUFZLENBQ1YsU0FBQ0MsT0FBSyxPQUNKQyxFQUFBQSwrQ0FBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSwrQ0FBQUEsS0FBQ0QsTUFBSyxLQUNGLElBS1osSUFBTUksU0FBVyxTQUFYQSxTQUFZQyxNQUFJLE9BQUtKLEVBQUFBLCtDQUFBQSxLQUFDSyxzQ0FBQUEsR0FBWWxELE9BQUFtRCxPQUFBLEdBQUtGLE1BQVEsRUFBL0NELFNBQVFJLFlBQUcsV0FFVixJQUFNQyxxQkFBdUJMLFNBQVNNLEtBQUssQ0FBQyxHQUNuREQscUJBQXFCRSxVQUFZLDBCQUNqQ0YscUJBQXFCSixLQUFPLENBQzFCTyxZQUFhQyxzQ0FBQUEsR0FBTUMsSUFDbkJDLFlBQWEsSUFBSUMsS0FDakJDLFFBQVFDLEVBQUFBLG1EQUFBQSxHQUFhLEdBQ3JCQyxLQUFNLElBR1IsSUFBTUMsV0FBYSxTQUFiQSxhQUFVLE9BQVNuQixFQUFBQSwrQ0FBQUEsS0FBQSxLQUFBRSxTQUFHLHNCQUFzQixFQUE1Q2lCLFdBQVVaLFlBQUcsYUFFWixJQUFNYSx1QkFBeUJqQixTQUFTTSxLQUFLLENBQUMsR0FDckRXLHVCQUF1QlYsVUFBWSwyQkFDbkNVLHVCQUF1QmhCLEtBQU8sQ0FDNUJpQixPQUFPLEVBQ1BMLE9BQVFNLCtDQUFBQSxFQUNSQyxlQUFlQyxFQUFBQSxzREFBQUEsUUFBTyxrQkFDdEJWLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEVBQUcsR0FDL0JKLFlBQWFDLHNDQUFBQSxHQUFNYSxLQUNuQkMsTUFBTyxDQUFDZCxzQ0FBQUEsR0FBTWEsS0FBTWIsc0NBQUFBLEdBQU1DLEtBQzFCYyxXQUFZLENBQ1ZDLGlCQUFrQlQsYUFJZixJQUFNVSx3QkFBMEIxQixTQUFTTSxLQUFLLENBQUMsR0FDdERvQix3QkFBd0JuQixVQUFZLDRCQUNwQ21CLHdCQUF3QnpCLEtBQU8sQ0FDN0JpQixPQUFPLEVBQ1BMLE9BQVFNLCtDQUFBQSxFQUNSQyxlQUFlQyxFQUFBQSxzREFBQUEsUUFBTyxrQkFDdEJWLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEVBQUcsR0FDL0JKLFlBQWFDLHNDQUFBQSxHQUFNYSxLQUNuQkMsTUFBTyxDQUFDZCxzQ0FBQUEsR0FBTWEsS0FBTWIsc0NBQUFBLEdBQU1DLEtBQzFCYyxXQUFZLENBQ1ZHLGtCQUFtQkMseURBQUFBLEVBQWlCRCxvQkFJakMsSUFBTUUsc0JBQXdCN0IsU0FBU00sS0FBSyxDQUFDLEdBQ3BEdUIsc0JBQXNCdEIsVUFBWSw2QkFDbENzQixzQkFBc0I1QixLQUFPLENBQzNCTyxZQUFhQyxzQ0FBQUEsR0FBTXFCLE1BQ25CakIsT0FBQUEsc0NBQUFBLEdBQ0FXLFdBQVksQ0FDVk8sZ0JBQWlCSCx5REFBQUEsRUFBaUJHLGtCQUkvQixJQUFNQyxzQkFBd0JoQyxTQUFTTSxLQUFLLENBQUMsR0FDcEQwQixzQkFBc0J6QixVQUFZLDZCQUNsQ3lCLHNCQUFzQi9CLEtBQU8sQ0FDM0JPLFlBQWFDLHNDQUFBQSxHQUFNQyxJQUNuQkcsT0FBQUEsc0NBQUFBLEdBQ0FXLFdBQVksQ0FDVlMsZ0JBQWlCTCx5REFBQUEsRUFBaUJLLGtCQUkvQixJQUFNQyxtQkFBcUJsQyxTQUFTTSxLQUFLLENBQUMsR0FDakQ0QixtQkFBbUIzQixVQUFZLDBCQUMvQjJCLG1CQUFtQmpDLEtBQU8sQ0FDeEJPLFlBQWFDLHNDQUFBQSxHQUFNQyxJQUNuQkcsT0FBQUEsc0NBQUFBLEdBQ0FXLFdBQVksQ0FDVlcsYUFBY1AseURBQUFBLEVBQWlCTyxlQUk1QixJQUFNQywwQkFBNEJwQyxTQUFTTSxLQUFLLENBQUMsR0FDeEQ4QiwwQkFBMEI3QixVQUFZLG9DQUN0QzZCLDBCQUEwQm5DLEtBQU8sQ0FDL0JPLFlBQWFDLHNDQUFBQSxHQUFNNEIsT0FDbkJ4QixPQUFBQSxzQ0FBQUEsR0FDQXlCLFNBQVUsQ0FDUkMsZ0JBQWlCLDZEQUlkLElBQU1DLHVCQUF5QnhDLFNBQVNNLEtBQUssQ0FBQyxHQUFHa0MsdUJBQXVCakMsVUFBWSw4QkFDM0ZpQyx1QkFBdUJ2QyxLQUFPLENBQzVCTyxZQUFhQyxzQ0FBQUEsR0FBTUMsSUFDbkJHLE9BQVE0QixzQ0FBQUEsR0FDUkMsVUFBV0Esc0NBQUFBLEdBQ1hDLGlCQUFrQixhQUNsQkMsbUJBQW9CLEtBQ3BCQyxzQkFBdUIsT0FDdkJyQixXQUFZLENBQ1ZzQixpQkFBa0JsQix5REFBQUEsRUFBaUJrQixtQkFHdkNOLHVCQUF1QnZHLFdBQWEsQ0FDbEM4RyxLQUFNLENBQ0pDLFlBQWEsQ0FDWEMsTUFDRSxzR0FPUjVDLHFCQUFxQnBFLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHlDQUE2Q3VCLHFCQUFxQnBFLFlBQzdIZ0YsdUJBQXVCaEYsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEseUNBQTZDbUMsdUJBQXVCaEYsWUFDakl5Rix3QkFBd0J6RixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx5Q0FBNkM0Qyx3QkFBd0J6RixZQUNuSTRGLHNCQUFzQjVGLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHlDQUE2QytDLHNCQUFzQjVGLFlBQy9IK0Ysc0JBQXNCL0YsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEseUNBQTZDa0Qsc0JBQXNCL0YsWUFDL0hpRyxtQkFBbUJqRyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx5Q0FBNkNvRCxtQkFBbUJqRyxZQUN6SG1HLDBCQUEwQm5HLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHlDQUE2Q3NELDBCQUEwQm5HLFlBQ3ZJdUcsdUJBQXVCdkcsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEseUNBQTZDMEQsdUJBQXVCdkcsWUFBYSxJQUFBVSxvQkFBQSxxTSxveUNDL0g5SSw2QkFDRTZDLE1BQU8sb0NBQ1BDLFVBQVdDLHNDQUFBQSxHQUNYQyxXQUFZLENBQ1YsU0FBQ0MsT0FBSyxPQUNKQyxFQUFBQSwrQ0FBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSwrQ0FBQUEsS0FBQ0QsTUFBSyxLQUNGLElBS1osSUFBTUksU0FBVyxTQUFYQSxTQUFZQyxNQUFJLE9BQ3BCSixFQUFBQSwrQ0FBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSwrQ0FBQUEsS0FBQ3NELHNDQUFBQSxHQUFtQm5HLE9BQUFtRCxPQUFBLEdBQUtGLFFBQ3JCLEVBSEZELFNBQVFJLFlBQUcsV0FNVixJQUFNZ0Qsc0JBQXdCcEQsU0FBU00sS0FBSyxDQUFDLEdBQ3BEOEMsc0JBQXNCN0MsVUFBWSwwQkFDbEM2QyxzQkFBc0JuRCxLQUFPLENBQzNCVSxZQUFhLElBQUlDLEtBQ2pCSixZQUFhQyxzQ0FBQUEsR0FBTWEsS0FDbkJULE9BQUFBLHNDQUFBQSxHQUNBd0MsV0FBVyxFQUNYQyxhQUFhakMsRUFBQUEsc0RBQUFBLFFBQU8saUJBQ3BCa0MsZUFBZWxDLEVBQUFBLHNEQUFBQSxRQUFPLGtCQUdqQixJQUFNbUMsd0JBQTBCeEQsU0FBU00sS0FBSyxDQUFDLEdBQ3REa0Qsd0JBQXdCakQsVUFDdEIsK0RBQ0ZpRCx3QkFBd0J2RCxLQUFPLENBQzdCVSxZQUFhLElBQUlDLEtBQ2pCSixZQUFhQyxzQ0FBQUEsR0FBTWEsS0FDbkJULE9BQUFBLHNDQUFBQSxHQUNBd0MsV0FBVyxFQUNYQyxhQUFhakMsRUFBQUEsc0RBQUFBLFFBQU8saUJBQ3BCa0MsZUFBZWxDLEVBQUFBLHNEQUFBQSxRQUFPLGlCQUN0Qm9DLE1BQU8sR0FDUEMsVUFBVyxHQUdOLElBQU1DLGtCQUFvQjNELFNBQVNNLEtBQUssQ0FBQyxHQUNoRHFELGtCQUFrQnBELFVBQVksaURBQzlCb0Qsa0JBQWtCMUQsS0FBTyxDQUN2QlUsWUFBYSxJQUFJQyxLQUNqQkosWUFBYUMsc0NBQUFBLEdBQU1hLEtBQ25CVCxPQUFBQSxzQ0FBQUEsR0FDQXdDLFdBQVcsRUFDWE8sbUJBQW1CLEVBQ25CTixhQUFhakMsRUFBQUEsc0RBQUFBLFFBQU8saUJBQ3BCa0MsZUFBZWxDLEVBQUFBLHNEQUFBQSxRQUFPLGtCQUdqQixJQUFNd0MsMEJBQTRCN0QsU0FBU00sS0FBSyxDQUFDLEdBQ3hEdUQsMEJBQTBCdEQsVUFDeEIsc0RBQ0ZzRCwwQkFBMEI1RCxLQUFPLENBQy9CVSxZQUFhLElBQUlDLEtBQ2pCSixZQUFhQyxzQ0FBQUEsR0FBTWEsS0FDbkJULE9BQUFBLHNDQUFBQSxHQUNBd0MsV0FBVyxFQUNYTyxtQkFBbUIsRUFDbkJOLGFBQWFqQyxFQUFBQSxzREFBQUEsUUFBTyxpQkFDcEJrQyxlQUFlbEMsRUFBQUEsc0RBQUFBLFFBQU8saUJBQ3RCRyxXQUFZLENBQ1ZPLGdCQUFpQkgseURBQUFBLEVBQWlCRyxrQkFJL0IsSUFBTStCLDBCQUE0QjlELFNBQVNNLEtBQUssQ0FBQyxHQUN4RHdELDBCQUEwQnZELFVBQ3hCLHNEQUNGdUQsMEJBQTBCN0QsS0FBTyxDQUMvQlUsWUFBYSxJQUFJQyxLQUNqQkosWUFBYUMsc0NBQUFBLEdBQU1hLEtBQ25CVCxPQUFBQSxzQ0FBQUEsR0FDQXdDLFdBQVcsRUFDWE8sbUJBQW1CLEVBQ25CTixhQUFhakMsRUFBQUEsc0RBQUFBLFFBQU8saUJBQ3BCa0MsZUFBZWxDLEVBQUFBLHNEQUFBQSxRQUFPLGlCQUN0QkcsV0FBWSxDQUNWUyxnQkFBaUJMLHlEQUFBQSxFQUFpQkssa0JBSS9CLElBQU04Qix1QkFBeUIvRCxTQUFTTSxLQUFLLENBQUMsR0FDckR5RCx1QkFBdUJ4RCxVQUNyQixtREFDRndELHVCQUF1QjlELEtBQU8sQ0FDNUJVLFlBQWEsSUFBSUMsS0FDakJKLFlBQWFDLHNDQUFBQSxHQUFNYSxLQUNuQlQsT0FBQUEsc0NBQUFBLEdBQ0F3QyxXQUFXLEVBQ1hPLG1CQUFtQixFQUNuQk4sYUFBYWpDLEVBQUFBLHNEQUFBQSxRQUFPLGlCQUNwQmtDLGVBQWVsQyxFQUFBQSxzREFBQUEsUUFBTyxpQkFDdEJHLFdBQVksQ0FDVlcsYUFBY1AseURBQUFBLEVBQWlCTyxlQUk1QixJQUFNNkIsMkJBQTZCaEUsU0FBU00sS0FBSyxDQUFDLEdBQUcwRCwyQkFBMkJ6RCxVQUNyRix1REFDRnlELDJCQUEyQi9ELEtBQU8sQ0FDaENVLFlBQWEsSUFBSUMsS0FDakJKLFlBQWFDLHNDQUFBQSxHQUFNQyxJQUNuQmEsTUFBTyxDQUFDZCxzQ0FBQUEsR0FBTUMsSUFBS0Qsc0NBQUFBLEdBQU1hLEtBQU1iLHNDQUFBQSxHQUFNNEIsUUFDckN4QixPQUFRNEIsc0NBQUFBLEdBQ1JDLFVBQVdBLHNDQUFBQSxHQUNYQyxpQkFBa0IsYUFDbEJDLG1CQUFvQixLQUNwQkMsc0JBQXVCLE9BQ3ZCUSxXQUFXLEVBQ1hDLGFBQWFqQyxFQUFBQSxzREFBQUEsUUFBTyxpQkFDcEJrQyxlQUFlbEMsRUFBQUEsc0RBQUFBLFFBQU8sa0JBS3hCK0Isc0JBQXNCbkgsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsbUdBQXlHc0Usc0JBQXNCbkgsWUFDM0x1SCx3QkFBd0J2SCxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxtR0FBeUcwRSx3QkFBd0J2SCxZQUMvTDBILGtCQUFrQjFILFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLG1HQUF5RzZFLGtCQUFrQjFILFlBQ25MNEgsMEJBQTBCNUgsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsbUdBQXlHK0UsMEJBQTBCNUgsWUFDbk02SCwwQkFBMEI3SCxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxtR0FBeUdnRiwwQkFBMEI3SCxZQUNuTThILHVCQUF1QjlILFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLG1HQUF5R2lGLHVCQUF1QjlILFlBQzdMK0gsMkJBQTJCL0gsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsbUdBQXlHa0YsMkJBQTJCL0gsWUFBYSxJQUFBVSxvQkFBQSxxTCxpdkRDN0g1TXNILFdBQWEsQ0FDakJDLFdBQVdDLEVBQUFBLGdEQUFBQSxJQUFtQkQsa0RBQzlCRSxRQUFRQyxFQUFBQSxnREFBQUEsSUFBZ0JELCtDQUN4QkUsT0FBT0MsRUFBQUEsZ0RBQUFBLElBQWVDLG1DQUFBQSxHQUFVLENBQUVDLGVBQWdCLEtBRzlDQyxtQkFBb0JDLEVBQUFBLHFEQUFBQSxHQUFnQmpGLGdEQUFBQSxJQUUxQyw2QkFDRUYsTUFBTyxzQ0FDUEMsVUFBV0MsZ0RBQUFBLEdBQ1hDLFdBQVksQ0FDVixTQUFDQyxPQUFLLE9BQ0pDLEVBQUFBLCtDQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLCtDQUFBQSxLQUFDRCxNQUFLLEtBQ0YsSUFLWixJQUFNSSxTQUFXLFNBQVhBLFNBQVE0RSxNQUErQyxJQUFBQyxlQUFBRCxLQUF6Q0UsVUFBV0MsU0FBRyxJQUFBRixlQUFHLFNBQVFBLGVBQUs1RSxNQUFJK0UsRUFBQUEsZ0ZBQUFBLEdBQUFKLEtBQUFLLFdBQzlDSCxVQUFZYixXQUFXYyxLQUM3QixPQUFPbEYsRUFBQUEsK0NBQUFBLEtBQUM2RSxrQkFBaUIxSCxPQUFBbUQsT0FBQSxDQUFDMkUsVUFBV0EsV0FBZTdFLE1BQ3RELEVBSE1ELFNBQVFJLFlBQUcsV0FLVixJQUFNOEUsc0JBQXdCbEYsU0FBU00sS0FBSyxDQUFDLEdBQ3BENEUsc0JBQXNCQyxTQUFXLENBQy9CTCxVQUFXLENBQ1RNLFFBQVMsQ0FBQyxZQUFhLFNBQVUsU0FDakNDLFFBQVMsQ0FDUEMsS0FBTSxZQUlaSixzQkFBc0JqRixLQUFPLENBQzNCTyxZQUFhQyxnREFBQUEsR0FBTUMsSUFDbkJvRSxVQUFXLFNBQ1hTLElBQUtuQiw4Q0FBTyxVQUFXLFNBQVNvQixTQUNoQ0MsSUFBS3JCLDhDQUFPLFVBQVcsU0FBU29CLFNBQ2hDM0UsT0FBUSxDQUNOLENBQ0VyQixNQUFPLFNBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQzdCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxFQUFHLElBQzlCZ0YsUUFBUSxHQUVWLENBQ0VwRyxNQUFPLGNBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQzdCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxFQUFHLElBQzlCZ0YsUUFBUSxHQUVWLENBQ0VwRyxNQUFPLFlBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQzdCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxFQUFHLElBQzlCZ0YsUUFBUSxJQUdaakYsWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxLQUcxQixJQUFNaUYsOEJBQWdDN0YsU0FBU00sS0FBSyxDQUFDLEdBQzVEdUYsOEJBQThCVixTQUFXLENBQ3ZDTCxVQUFXLENBQ1RNLFFBQVMsQ0FBQyxZQUFhLFNBQVUsU0FDakNDLFFBQVMsQ0FDUEMsS0FBTSxZQUlaTyw4QkFBOEI1RixLQUFPLENBQ25DTyxZQUFhQyxnREFBQUEsR0FBTUMsSUFDbkJvRSxVQUFXLFNBQ1hTLElBQUtuQiw4Q0FBTyxTQUFVLFNBQVNvQixTQUMvQkMsSUFBS3JCLDhDQUFPLFVBQVcsU0FBU29CLFNBQ2hDM0UsT0FBUSxDQUNOLENBQ0VyQixNQUFPLFNBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQzdCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxFQUFHLElBQzlCZ0YsUUFBUSxHQUVWLENBQ0VwRyxNQUFPLGNBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQzdCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxFQUFHLElBQzlCZ0YsUUFBUSxHQUVWLENBQ0VwRyxNQUFPLFlBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQzdCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxFQUFHLElBQzlCZ0YsUUFBUSxJQUdaakYsWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxLQUcxQixJQUFNa0Ysb0JBQXNCOUYsU0FBU00sS0FBSyxDQUFDLEdBQ2xEd0Ysb0JBQW9CWCxTQUFXLENBQzdCTCxVQUFXLENBQ1RNLFFBQVMsQ0FBQyxZQUFhLFNBQVUsU0FDakNDLFFBQVMsQ0FDUEMsS0FBTSxZQUlaUSxvQkFBb0I3RixLQUFPLENBQ3pCTyxZQUFhQyxnREFBQUEsR0FBTUMsSUFDbkJvRSxVQUFXLFNBQ1hTLElBQUtuQiw4Q0FBTyxVQUFXLFNBQVNvQixTQUNoQ0MsSUFBS3JCLDhDQUFPLFVBQVcsU0FBU29CLFNBQ2hDM0UsT0FBUSxDQUNOLENBQ0VyQixNQUFPLFNBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sR0FBSSxFQUFHLEdBQzdCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEdBQUksRUFBRyxFQUFHLElBQzlCZ0YsUUFBUSxHQUVWLENBQ0VwRyxNQUFPLGNBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sR0FBSSxFQUFHLEdBQzdCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEdBQUksRUFBRyxFQUFHLElBQzlCZ0YsUUFBUSxHQUVWLENBQ0VwRyxNQUFPLFlBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sR0FBSSxFQUFHLEdBQzdCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEdBQUksRUFBRyxFQUFHLElBQzlCZ0YsUUFBUSxJQUdaakYsWUFBYSxJQUFJQyxLQUFLLEtBQU0sR0FBSSxJQUczQixJQUFNbUYsNEJBQThCL0YsU0FBU00sS0FBSyxDQUFDLEdBQUd5Riw0QkFBNEJaLFNBQVcsQ0FDbEdMLFVBQVcsQ0FDVE0sUUFBUyxDQUFDLFlBQWEsU0FBVSxTQUNqQ0MsUUFBUyxDQUNQQyxLQUFNLFlBSVpTLDRCQUE0QjlGLEtBQU8sQ0FDakNPLFlBQWFDLGdEQUFBQSxHQUFNQyxJQUNuQm9FLFVBQVcsU0FDWFMsSUFBS25CLDhDQUFPLFNBQVUsU0FBU29CLFNBQy9CQyxJQUFLckIsOENBQU8sVUFBVyxTQUFTb0IsU0FDaEMzRSxPQUFRLENBQ04sQ0FDRXJCLE1BQU8sWUFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxHQUFJLEVBQUcsR0FDN0IrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sR0FBSSxFQUFHLEVBQUcsSUFDOUJnRixRQUFRLElBR1pqRixZQUFhLElBQUlDLEtBQUssS0FBTSxHQUFJLElBS2xDc0Usc0JBQXNCakosV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsMEpBQThKb0csc0JBQXNCakosWUFDaFA0Siw4QkFBOEI1SixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSwwSkFBOEorRyw4QkFBOEI1SixZQUNoUTZKLG9CQUFvQjdKLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLDBKQUE4SmdILG9CQUFvQjdKLFlBQzVPOEosNEJBQTRCOUosV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsMEpBQThKaUgsNEJBQTRCOUosWUFBYSxJQUFBVSxvQkFBQSw2RywwcERDNUt6USw2QkFDRTZDLE1BQU8sNkJBQ1BDLFVBQVdDLHNDQUFBQSxHQUNYQyxXQUFZLENBQ1YsU0FBQ0MsT0FBSyxPQUNKQyxFQUFBQSwrQ0FBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSwrQ0FBQUEsS0FBQ0QsTUFBSyxLQUNGLElBS1osSUFBTUksU0FBVyxTQUFYQSxTQUFZQyxNQUFJLE9BQUtKLEVBQUFBLCtDQUFBQSxLQUFDSCxzQ0FBQUEsR0FBUTFDLE9BQUFtRCxPQUFBLEdBQUtGLE1BQVEsRUFBM0NELFNBQVFJLFlBQUcsV0FFakIsSUFBTU8sWUFBYyxJQUFJQyxLQUVYb0YsWUFBY2hHLFNBQVNNLEtBQUssQ0FBQyxHQUMxQzBGLFlBQVkvRixLQUFPLENBQ2pCTyxZQUFhQyxzQ0FBQUEsR0FBTUMsSUFDbkJDLFlBQUFBLFlBQ0ErQyxVQUFXLEVBQ1g3QyxRQUFRQyxFQUFBQSxtREFBQUEsR0FBYSxJQUdoQixJQUFNbUYsa0JBQW9CakcsU0FBU00sS0FBSyxDQUFDLEdBQ2hEMkYsa0JBQWtCMUYsVUFBWSxrQ0FDOUIwRixrQkFBa0JoRyxLQUFPLENBQ3ZCVSxZQUFhLElBQUlDLEtBQUssS0FBTSxHQUFJLEdBQ2hDQyxPQUFRLENBQ04sQ0FDRStFLFFBQVEsRUFDUnBHLE1BQU8sZ0JBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sR0FBSSxHQUMxQitFLElBQUssSUFBSS9FLEtBQUssS0FBTSxHQUFJLE1BS3ZCLElBQU1zRixnQkFBa0JsRyxTQUFTTSxLQUFLLENBQUMsR0FDOUM0RixnQkFBZ0IzRixVQUFZLGdDQUM1QjJGLGdCQUFnQmpHLEtBQU8sQ0FDckJVLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEdBQUksR0FDaENDLE9BQVEsQ0FDTixDQUNFK0UsUUFBUSxFQUNScEcsTUFBTyxnQkFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxHQUFJLEdBQzFCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEdBQUksTUFLdkIsSUFBTXVGLG1CQUFxQm5HLFNBQVNNLEtBQUssQ0FBQyxHQUNqRDZGLG1CQUFtQmxHLEtBQU8sQ0FDeEJVLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEdBQUksR0FDaENDLE9BQVEsQ0FDTixDQUNFckIsTUFBTyxXQUNQa0csTUFBT3RCLDhDQUFPLElBQUl4RCxLQUFLLEtBQU0sR0FBSSxJQUM5QndGLElBQUksRUFBRyxRQUNQQyxTQUFTLEVBQUcsU0FDWmIsU0FDSEcsSUFBS3ZCLDhDQUFPLElBQUl4RCxLQUFLLEtBQU0sR0FBSSxJQUM1QndGLElBQUksRUFBRyxRQUNQQyxTQUFTLEVBQUcsU0FDWmIsWUFLRixJQUFNYyxpQkFBbUJ0RyxTQUFTTSxLQUFLLENBQUMsR0FDL0NnRyxpQkFBaUJyRyxLQUFPLENBQ3RCVSxZQUFhLElBQUlDLEtBQUssS0FBTSxHQUFJLEdBQ2hDQyxPQUFRLENBQ04sQ0FDRXJCLE1BQU8sV0FDUGtHLE1BQU90Qiw4Q0FBTyxJQUFJeEQsS0FBSyxLQUFNLEdBQUksSUFDOUJ3RixJQUFJLEVBQUcsUUFDUEMsU0FBUyxFQUFHLFNBQ1piLFNBQ0hHLElBQUt2Qiw4Q0FBTyxJQUFJeEQsS0FBSyxLQUFNLEdBQUksSUFDNUJ3RixJQUFJLEVBQUcsUUFDUEMsU0FBUyxFQUFHLFNBQ1piLFlBS0YsSUFBTWUsOEJBQWdDdkcsU0FBU00sS0FBSyxDQUFDLEdBQzVEaUcsOEJBQThCdEcsS0FBTyxDQUNuQ08sWUFBYUMsc0NBQUFBLEdBQU1DLElBQ25CNkUsSUFBS25CLDhDQUFPLE9BQVEsT0FBT29CLFNBQzNCQyxJQUFLckIsOENBQU8sT0FBUSxPQUFPb0IsU0FDM0IzRSxPQUFBQSxzQ0FBQUEsSUFHSyxJQUFNMkYsV0FBYXhHLFNBQVNNLEtBQUssQ0FBQyxHQUN6Q2tHLFdBQVd2RyxLQUFPLENBQ2hCVSxZQUFhLElBQUlDLEtBQUssS0FBTSxHQUFJLEdBQ2hDQyxPQUFRLENBQ04sQ0FDRXJCLE1BQU8sb0JBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sR0FBSSxHQUMxQitFLElBQUssSUFBSS9FLEtBQUssS0FBTSxHQUFJLElBRTFCLENBQ0VwQixNQUFPLGtCQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEdBQUksR0FDMUIrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sR0FBSSxJQUUxQixDQUNFcEIsTUFBTyxTQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEdBQUksR0FDMUIrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sR0FBSSxNQUt2QixJQUFNNkYsUUFBVXpHLFNBQVNNLEtBQUssQ0FBQyxHQUN0Q21HLFFBQVFsRyxVQUFZLDZEQUNwQmtHLFFBQVF4RyxLQUFPLENBQ2JVLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEVBQUcsR0FDL0JDLE9BQVEsQ0FDTixDQUNFckIsTUFBTyxjQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsSUFDekIrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxLQUV6QixDQUNFcEIsTUFBTyxjQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsSUFDekIrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxLQUV6QixDQUNFcEIsTUFBTyxjQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsSUFDekIrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxLQUV6QixDQUNFcEIsTUFBTyxjQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsSUFDekIrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxLQUV6QixDQUNFcEIsTUFBTyxhQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsSUFDekIrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLElBRXRDLENBQ0VwQixNQUFPLGFBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxJQUN6QitFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsTUFLbkMsSUFBTThGLHFCQUF1QixTQUF2QkEsdUJBQ1gsT0FDRTdHLEVBQUFBLCtDQUFBQSxLQUFDc0Qsc0NBQUFBLEdBQW1CLENBQ2xCeEMsWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxHQUMvQkMsT0FBUSxDQUNOLENBQ0U4RixHQUFJLEVBQ0puSCxNQUFPLGlCQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FDbEMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxFQUFHLEVBQUcsRUFBRyxJQUVsQyxDQUNFK0YsR0FBSSxFQUNKbkgsTUFBTyxpQkFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQ2xDK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxFQUFHLEVBQUcsTUFLM0MsRUFwQmE4RixxQkFBb0J0RyxZQUFHLHVCQXNCN0IsSUFBTXdHLG9CQUFzQixTQUF0QkEsc0JBQ1gsT0FDRS9HLEVBQUFBLCtDQUFBQSxLQUFDc0Qsc0NBQUFBLEdBQW1CLENBQ2xCeEMsWUFBYUEsWUFDYkUsT0FBUSxDQUNOLENBQ0VyQixNQUFPLFVBQ1BrRyxNQUFPL0UsWUFDUGdGLElBQUtoRixhQUVQLENBQ0VuQixNQUFPLFVBQ1BrRyxNQUFPL0UsWUFDUGdGLElBQUtoRixjQUdUa0csbUJBQW9CLGFBQ3BCQyxhQUFjbkcsWUFDZEgsWUFBYUMsc0NBQUFBLEdBQU1hLE1BR3pCLEVBckJhc0Ysb0JBQW1CeEcsWUFBRyxzQkF1QjVCLElBQU0yRyxtQ0FBcUMvRyxTQUFTTSxLQUFLLENBQUMsR0FDakV5RyxtQ0FBbUN4RyxVQUNqQyw0Q0FDRndHLG1DQUFtQzlHLEtBQU8sQ0FDeENVLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEdBQUksR0FDaENpRyxtQkFBb0IsVUFDcEJyRyxZQUFhQyxzQ0FBQUEsR0FBTWEsS0FDbkJ3RixhQUFjLElBQUlsRyxLQUFLLEtBQU0sR0FBSSxFQUFHLEVBQUcsR0FDdkNvRyxpQkFBa0IsQ0FDaEIsQ0FDRXhILE1BQU8sY0FDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxHQUFJLEdBQUksR0FBSSxJQUNsQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxHQUFJLEdBQUksR0FBSSxJQUVsQyxDQUNFcEIsTUFBTyxlQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEdBQUksR0FBSSxHQUFJLEdBQ2xDK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEdBQUksR0FBSSxHQUFJLEtBRWxDLENBQ0VwQixNQUFPLGNBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sR0FBSSxHQUFJLEVBQUcsR0FDakMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sR0FBSSxHQUFJLEdBQUksSUFFbEMsQ0FDRXBCLE1BQU8sZUFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxHQUFJLEdBQUksRUFBRyxJQUNqQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxHQUFJLEdBQUksR0FBSSxLQUVsQyxDQUNFcEIsTUFBTyxjQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEdBQUksR0FBSSxHQUFJLEdBQ2xDK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEdBQUksR0FBSSxHQUFJLElBRWxDLENBQ0VwQixNQUFPLGNBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sR0FBSSxFQUFHLEVBQUcsR0FDaEMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sR0FBSSxFQUFHLEdBQUksSUFFakMsQ0FDRXBCLE1BQU8sZ0JBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sR0FBSSxFQUFHLEdBQUksR0FDakMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sR0FBSSxFQUFHLEdBQUksSUFFakMsQ0FDRXBCLE1BQU8sZUFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxHQUFJLEVBQUcsR0FBSSxHQUNqQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxHQUFJLEVBQUcsR0FBSSxNQUs5QixJQUFNcUcscUNBQXVDakgsU0FBU00sS0FBSyxDQUFDLEdBQUcyRyxxQ0FBcUMxRyxVQUN6RywrQ0FDRjBHLHFDQUFxQ2hILEtBQU8sQ0FDMUNVLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEdBQUksR0FDaENpRyxtQkFBb0IsYUFDcEJyRyxZQUFhQyxzQ0FBQUEsR0FBTWEsS0FDbkJ3RixhQUFjLElBQUlsRyxLQUFLLEtBQU0sR0FBSSxFQUFHLEVBQUcsR0FDdkNvRyxpQkFBa0IsQ0FDaEIsQ0FDRXhILE1BQU8sY0FDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxHQUFJLEdBQUksR0FBSSxJQUNsQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxHQUFJLEdBQUksR0FBSSxJQUVsQyxDQUNFcEIsTUFBTyxlQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEdBQUksR0FBSSxHQUFJLEdBQ2xDK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEdBQUksR0FBSSxHQUFJLEtBRWxDLENBQ0VwQixNQUFPLGNBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sR0FBSSxHQUFJLEVBQUcsR0FDakMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sR0FBSSxHQUFJLEdBQUksSUFFbEMsQ0FDRXBCLE1BQU8sZUFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxHQUFJLEdBQUksRUFBRyxJQUNqQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxHQUFJLEdBQUksR0FBSSxLQUVsQyxDQUNFcEIsTUFBTyxjQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEdBQUksR0FBSSxHQUFJLEdBQ2xDK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEdBQUksR0FBSSxHQUFJLElBRWxDLENBQ0VwQixNQUFPLGNBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sR0FBSSxFQUFHLEVBQUcsR0FDaEMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sR0FBSSxFQUFHLEdBQUksSUFFakMsQ0FDRXBCLE1BQU8sZ0JBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sR0FBSSxFQUFHLEdBQUksR0FDakMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sR0FBSSxFQUFHLEdBQUksSUFFakMsQ0FDRXBCLE1BQU8sZUFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxHQUFJLEVBQUcsR0FBSSxHQUNqQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxHQUFJLEVBQUcsR0FBSSxNQU9yQ29GLFlBQVkvSixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxxQ0FBeUNrSCxZQUFZL0osWUFDdkdnSyxrQkFBa0JoSyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxxQ0FBeUNtSCxrQkFBa0JoSyxZQUNuSGlLLGdCQUFnQmpLLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHFDQUF5Q29ILGdCQUFnQmpLLFlBQy9Ha0ssbUJBQW1CbEssV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEscUNBQXlDcUgsbUJBQW1CbEssWUFDckhxSyxpQkFBaUJySyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxxQ0FBeUN3SCxpQkFBaUJySyxZQUNqSHNLLDhCQUE4QnRLLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHFDQUF5Q3lILDhCQUE4QnRLLFlBQzNJdUssV0FBV3ZLLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHFDQUF5QzBILFdBQVd2SyxZQUNyR3dLLFFBQVF4SyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxxQ0FBeUMySCxRQUFReEssWUFDL0Z5SyxxQkFBcUJ6SyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxrZUFBc2U0SCxxQkFBcUJ6SyxZQUN0akIySyxvQkFBb0IzSyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx5Y0FBNmM4SCxvQkFBb0IzSyxZQUMzaEI4SyxtQ0FBbUM5SyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxxQ0FBeUNpSSxtQ0FBbUM5SyxZQUNySmdMLHFDQUFxQ2hMLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHFDQUF5Q21JLHFDQUFxQ2hMLFlBQWEsSUFBQVUsb0JBQUEsOFFBQUErSixxQkFBQVEsYUFBQSxtRkFBQUMsMEJBQUFBLHdCQUFBLDhCQUFBQyxLQUFBLHVCQUFBQyxXQUFBWCxxQkFBQVEsYUFBQUksS0FBQSw4QkFBQVYsb0JBQUFNLGFBQUEsa0ZBQUFDLDBCQUFBQSx3QkFBQSw4QkFBQUMsS0FBQSxzQkFBQUMsV0FBQVQsb0JBQUFNLGFBQUFJLEtBQUEsNkIscWhDQy9UdEssNkJBQ0U5SCxNQUFPLGdDQUNQQyxVQUFXQyxrQ0FBQUEsR0FDWEMsV0FBWSxDQUNWLFNBQUNDLE9BQUssT0FDSkMsRUFBQUEsK0NBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsK0NBQUFBLEtBQUNELE1BQUssS0FDRixJQUtaLElBQU1JLFNBQVcsU0FBWEEsU0FBWUMsTUFBSSxPQUFLSixFQUFBQSwrQ0FBQUEsS0FBQ0ssc0NBQUFBLEdBQVlsRCxPQUFBbUQsT0FBQSxHQUFLRixNQUFRLEVBQS9DRCxTQUFRSSxZQUFHLFdBRVYsSUFBTW1ILHVCQUF5QnZILFNBQVNNLEtBQUssQ0FBQyxHQUNyRGlILHVCQUF1QmhILFVBQVksbUNBQ25DZ0gsdUJBQXVCdEgsS0FBTyxDQUM1Qk8sWUFBYUMsc0NBQUFBLEdBQU1hLEtBQ25CWCxZQUFhLElBQUlDLEtBQ2pCNEcsWUFBWSxFQUNaOUQsVUFBVyxFQUNYM0MsS0FBTSxHQUNORixPQUFBQSxzQ0FBQUEsR0FDQU8sZUFBZUMsRUFBQUEsc0RBQUFBLFFBQU8sa0JBQ3RCb0csY0FBY3BHLEVBQUFBLHNEQUFBQSxRQUFPLGtCQUdoQixJQUFNcUcsdUJBQXlCMUgsU0FBU00sS0FBSyxDQUFDLEdBQ3JEb0gsdUJBQXVCbkgsVUFBWSxtQ0FDbkNtSCx1QkFBdUJ6SCxLQUFPLENBQzVCTyxZQUFhQyxzQ0FBQUEsR0FBTWEsS0FDbkJYLFlBQWEsSUFBSUMsS0FDakI0RyxZQUFZLEVBQ1o5RCxVQUFXLEVBQ1gzQyxLQUFNLEdBQ05GLE9BQUFBLHNDQUFBQSxHQUNBTyxlQUFlQyxFQUFBQSxzREFBQUEsUUFBTyxrQkFDdEJvRyxjQUFjcEcsRUFBQUEsc0RBQUFBLFFBQU8sa0JBR2hCLElBQU1zRyxzQkFBd0IzSCxTQUFTTSxLQUFLLENBQUMsR0FDcERxSCxzQkFBc0JwSCxVQUFZLGtDQUNsQ29ILHNCQUFzQjFILEtBQU8sQ0FDM0JPLFlBQWFDLHNDQUFBQSxHQUFNYSxLQUNuQlgsWUFBYSxJQUFJQyxLQUNqQjRHLFlBQVksRUFDWjlELFVBQVcsRUFDWDNDLEtBQU0sRUFDTkYsT0FBQUEsc0NBQUFBLEdBQ0FPLGVBQWVDLEVBQUFBLHNEQUFBQSxRQUFPLGtCQUN0Qm9HLGNBQWNwRyxFQUFBQSxzREFBQUEsUUFBTyxrQkFHaEIsSUFBTXVHLGdCQUFrQjVILFNBQVNNLEtBQUssQ0FBQyxHQUFHc0gsZ0JBQWdCckgsVUFBWSwwQkFDN0VxSCxnQkFBZ0IzSCxLQUFPLENBQ3JCTyxZQUFhQyxzQ0FBQUEsR0FBTWEsS0FDbkJYLFlBQWEsSUFBSUMsS0FDakI0RyxZQUFZLEVBQ1o5RCxVQUFXLEVBQ1g3QyxPQUFBQSxzQ0FBQUEsR0FDQU8sZUFBZUMsRUFBQUEsc0RBQUFBLFFBQU8sa0JBQ3RCb0csY0FBY3BHLEVBQUFBLHNEQUFBQSxRQUFPLGtCQUt2QmtHLHVCQUF1QnRMLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHlDQUE2Q3lJLHVCQUF1QnRMLFlBQ2pJeUwsdUJBQXVCekwsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEseUNBQTZDNEksdUJBQXVCekwsWUFDakkwTCxzQkFBc0IxTCxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx5Q0FBNkM2SSxzQkFBc0IxTCxZQUMvSDJMLGdCQUFnQjNMLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHlDQUE2QzhJLGdCQUFnQjNMLFlBQWEsSUFBQVUsb0JBQUEsNkYsMjNDQ3pFMUh3RyxxQkFBc0J3QixFQUFBQSxZQUFBQSxHQUFnQmpGLElBQUFBLElBRTdCLFNBQVNtSSxZQUFXakQsTUFBZ0IsSUFBYkUsVUFBU0YsS0FBVEUsVUFDcENnRCxXQUFnQ0MsRUFBQUEsTUFBQUEsVUFBU2xILE9BQUFBLEdBQU9tSCxZQUFBQyxFQUFBQSxjQUFBQSxHQUFBSCxVQUFBLEdBQXpDSSxTQUFRRixXQUFBLEdBQUVHLFlBQVdILFdBQUEsR0FFdEJJLFdBQVlDLEVBQUFBLE1BQUFBLGNBQ2hCLFNBQUFDLE9BQWtFLElBQS9EQyxNQUFLRCxNQUFMQyxNQUFPN0MsTUFBSzRDLE1BQUw1QyxNQUFPQyxJQUFHMkMsTUFBSDNDLElBQUc2QyxlQUFBRixNQUFFRyxTQUFVQyx5QkFBbUIsSUFBQUYsZ0JBQVFBLGVBQ2pENUMsT0FBVzJDLE1BQVgzQyxRQUNIQSxRQUFVOEMsc0JBQ2JILE1BQU0zQyxRQUFTLEdBRWJBLFNBQVc4QyxzQkFDWEgsTUFBTTNDLFFBQVMsR0FHbkJ1QyxhQUFZLFNBQUNRLE1BQVMsSUFBQUMsV0FDZEMsU0FBZ0QsUUFBeENELFdBQUdELEtBQUtHLE1BQUssU0FBQ0MsSUFBRSxPQUFLQSxHQUFHcEMsS0FBTzRCLE1BQU01QixFQUFFLFdBQUMsSUFBQWlDLFdBQUFBLFdBQUksQ0FBQyxFQUNyREksU0FBV0wsS0FBS3hMLFFBQU8sU0FBQzRMLElBQUUsT0FBS0EsR0FBR3BDLEtBQU80QixNQUFNNUIsRUFBRSxJQUN2RCxNQUFPLEdBQVBzQyxRQUFBQyxFQUFBQSxrQkFBQUEsR0FBV0YsVUFBUSxDQUFBaE0sT0FBQW1ELE9BQUEsR0FBTzBJLFNBQVUsQ0FBQW5ELE1BQUFBLE1BQU9DLElBQUFBLElBQUtDLE9BQVEyQyxNQUFNM0MsVUFDaEUsR0FDRixHQUNBLENBQUN1QyxjQUdHZ0IsYUFBY2QsRUFBQUEsTUFBQUEsY0FDbEIsU0FBQWUsT0FBMkIsSUFBeEJiLE1BQUthLE1BQUxiLE1BQU83QyxNQUFLMEQsTUFBTDFELE1BQU9DLElBQUd5RCxNQUFIekQsSUFDZndDLGFBQVksU0FBQ1EsTUFBUyxJQUFBVSxZQUNkUixTQUFnRCxRQUF4Q1EsWUFBR1YsS0FBS0csTUFBSyxTQUFDQyxJQUFFLE9BQUtBLEdBQUdwQyxLQUFPNEIsTUFBTTVCLEVBQUUsV0FBQyxJQUFBMEMsWUFBQUEsWUFBSSxDQUFDLEVBQ3JETCxTQUFXTCxLQUFLeEwsUUFBTyxTQUFDNEwsSUFBRSxPQUFLQSxHQUFHcEMsS0FBTzRCLE1BQU01QixFQUFFLElBQ3ZELE1BQU8sR0FBUHNDLFFBQUFDLEVBQUFBLGtCQUFBQSxHQUFXRixVQUFRLENBQUFoTSxPQUFBbUQsT0FBQSxHQUFPMEksU0FBVSxDQUFBbkQsTUFBQUEsTUFBT0MsSUFBQUEsT0FDN0MsR0FDRixHQUNBLENBQUN3QyxjQUdHeEgsYUFBYzJJLEVBQUFBLE1BQUFBLFVBQVEsa0JBQU0sSUFBSTFJLEtBQUssS0FBTSxFQUFHLEdBQUcsR0FBRSxJQUV6RCxPQUNFMkksRUFBQUEsWUFBQUEsTUFBQ0MsTUFBQUEsU0FBUSxDQUFBekosU0FBQSxFQUNQRixFQUFBQSxZQUFBQSxLQUFDNEosbUJBQUFBLEVBQVEsQ0FBQ0MsU0FBUyxNQUFLM0osVUFDdEJGLEVBQUFBLFlBQUFBLEtBQUEsVUFBQUUsU0FBUSxzSUFLVkYsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDc0Qsb0JBQW1CLENBQ2xCeEMsWUFBYUEsWUFDYkgsWUFBYUMsSUFBQUEsR0FBTXFCLE1BQ25CakIsT0FBUXFILFNBQ1JwRCxVQUFXQSxVQUNYeEIsWUFBYThFLFVBQ2I3RSxjQUFlNEYsWUFDZmpJLE9BQUssRUFDTG1DLFdBQVMsUUFLbkIsQ0F6RHdCd0UsWUFBV3pILFlBQUEsY0FBQXlILFlBQUFYLGFBQUEsd0tBQUFDLDBCQUFBQSx3QkFBQSxxQ0FBQUMsS0FBQSxjQUFBQyxXQUFBUSxZQUFBWCxhQUFBSSxLQUFBLHFDQ1IvQixJQVNKLGVBQ0U5SCxNQUFPLHVCQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTSxRQUtON0UsV0FBWVQsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVyQndGLFNBQVcsU0FBU0EsV0FDL0IsT0FBTy9KLEVBQUFBLFlBQUFBLEtBQUNnSyxZQUFLLENBQUMvRSxVQUFXQSxXQUMzQixFQUZhOEUsU0FBUXhKLFlBQUcsV0FFdEJ3SixTQUFTckosVUFBWSxvQkFJdkJxSixTQUFTM04sV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsdUVBQTJFOEssU0FBUzNOLFlBQWEsSUFBQVUsb0JBQUEsYUFBQWlOLFNBQUExQyxhQUFBLHVFQUFBQywwQkFBQUEsd0JBQUEsZ0RBQUFDLEtBQUEsV0FBQUMsV0FBQXVDLFNBQUExQyxhQUFBSSxLQUFBLCtDLGs4QkNsQmhKLDZCQUNFOUgsTUFBTyx1QkFDUEMsVUFBV0Msa0NBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNLFFBS1osSUFBTTdFLFdBQVlULEVBQUFBLGtDQUFBQSxJQUFnQkQsK0NBRXJCMEYsU0FBVyxTQUFTQSxXQUMvQixPQUFPakssRUFBQUEsK0NBQUFBLEtBQUNnSyxpRUFBQUEsRUFBSyxDQUFDL0UsVUFBV0EsV0FDM0IsRUFGYWdGLFNBQVExSixZQUFHLFdBRXRCMEosU0FBU3ZKLFVBQVksd0NBSXZCdUosU0FBUzdOLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHVFQUEyRWdMLFNBQVM3TixZQUFhLElBQUFVLG9CQUFBLGFBQUFtTixTQUFBNUMsYUFBQSx1RUFBQUMsMEJBQUFBLHdCQUFBLGtEQUFBQyxLQUFBLFdBQUFDLFdBQUF5QyxTQUFBNUMsYUFBQUksS0FBQSxpRCxnMENDckJoSixJQUFNeUMsWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLHVCQUFxQix3QkFFN0JBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksNkJBRTNESCxFQUFBQSxJQUFBQSxJQUFBLDJDQUFxQ0EsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsU0FBdUIseU5BQ3RGSCxFQUFBQSxJQUFBQSxJQUFBLHVKQUNBQSxFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyxxREFBcUR5RCxRQUFRLFVBRTNFLENBaEJ3QkosV0FBVTVKLFlBQUEsYUFrQmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDbEI1Qiw2QkFDRTlLLE1BQU8sNkJBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtOcEYsV0FBWVQsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVyQm1HLG9CQUFzQixTQUFTQSxzQkFDMUMsT0FBTzFLLEVBQUFBLFlBQUFBLEtBQUNnSyxpQkFBQUEsRUFBSyxDQUFDL0UsVUFBV0EsV0FDM0IsRUFGYXlGLG9CQUFtQm5LLFlBQUcsc0JBRWpDbUssb0JBQW9CaEssVUFBWSxzQkFJbENnSyxvQkFBb0J0TyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxrRkFBc0Z5TCxvQkFBb0J0TyxZQUFhLElBQUFVLG9CQUFBLHdCQUFBNE4sb0JBQUFyRCxhQUFBLGtGQUFBQywwQkFBQUEsd0JBQUEsb0VBQUFDLEtBQUEsc0JBQUFDLFdBQUFrRCxvQkFBQXJELGFBQUFJLEtBQUEsbUUsd3pDQ3RCakwsSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxxQkFBbUIsc0JBRTNCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHdDQUN6REgsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksYUFBY0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksaUJBRTlESCxFQUFBQSxJQUFBQSxJQUFBLHNFQUNBQSxFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyxpREFBaUR5RCxRQUFRLFVBRXZFLENBaEJ3QkosV0FBVTVKLFlBQUEsYUFrQmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDbEI1QiwyQkFDRTlLLE1BQU8sNkJBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtOcEYsV0FBWVQsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVyQm9HLGtCQUFvQixTQUFTQSxvQkFDeEMsT0FBTzNLLEVBQUFBLFlBQUFBLEtBQUNnSyxpQkFBQUEsRUFBSyxDQUFDL0UsVUFBV0EsV0FDM0IsRUFGYTBGLGtCQUFpQnBLLFlBQUcsb0JBRS9Cb0ssa0JBQWtCakssVUFBWSxvQkFJaENpSyxrQkFBa0J2TyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxnRkFBb0YwTCxrQkFBa0J2TyxZQUFhLElBQUFVLG9CQUFBLHNCQUFBNk4sa0JBQUF0RCxhQUFBLGdGQUFBQywwQkFBQUEsd0JBQUEsa0VBQUFDLEtBQUEsb0JBQUFDLFdBQUFtRCxrQkFBQXRELGFBQUFJLEtBQUEsaUUsNHhDQ3RCM0ssSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxjQUFZLGVBRXBCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGtEQUUzREgsRUFBQUEsSUFBQUEsSUFBQSxtQkFBYUEsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsY0FBNEIsY0FBY0gsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLEtBQUcsTUFBWSxvSkFBb0pILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLHdCQUFzQyxZQUFZSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxjQUE0QixTQUFTSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyx3QkFBc0MsMEJBQTBCSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxjQUE0Qiw4RUFDOWhCSCxFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRywyQ0FBMkN5RCxRQUFRLFVBRWpFLENBZndCSixXQUFVNUosWUFBQSxhQWlCbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNqQjVCLG9CQUNFOUssTUFBTyw2QkFDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS05wRixXQUFZVCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRXJCcUcsV0FBYSxTQUFTQSxhQUNqQyxPQUFPNUssRUFBQUEsWUFBQUEsS0FBQ2dLLGlCQUFBQSxFQUFLLENBQUMvRSxVQUFXQSxXQUMzQixFQUZhMkYsV0FBVXJLLFlBQUcsYUFFeEJxSyxXQUFXbEssVUFBWSxhQUl6QmtLLFdBQVd4TyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx5RUFBNkUyTCxXQUFXeE8sWUFBYSxJQUFBVSxvQkFBQSxlQUFBOE4sV0FBQXZELGFBQUEseUVBQUFDLDBCQUFBQSx3QkFBQSwyREFBQUMsS0FBQSxhQUFBQyxXQUFBb0QsV0FBQXZELGFBQUFJLEtBQUEsMEQsZ3lDQ3RCdEosSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxlQUFhLGdCQUVyQkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxxREFFM0RILEVBQUFBLElBQUFBLElBQUEsaUVBQ0FBLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLDRDQUE0Q3lELFFBQVEsVUFFbEUsQ0Fmd0JKLFdBQVU1SixZQUFBLGFBaUJsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ2pCNUIscUJBQ0U5SyxNQUFPLDZCQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLTnBGLFdBQVlULEVBQUFBLElBQUFBLElBQWdCRCxrQkFFckJzRyxZQUFjLFNBQVNBLGNBQ2xDLE9BQU83SyxFQUFBQSxZQUFBQSxLQUFDZ0ssaUJBQUFBLEVBQUssQ0FBQy9FLFVBQVdBLFdBQzNCLEVBRmE0RixZQUFXdEssWUFBRyxjQUV6QnNLLFlBQVluSyxVQUFZLGNBSTFCbUssWUFBWXpPLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLDBFQUE4RTRMLFlBQVl6TyxZQUFhLElBQUFVLG9CQUFBLGdCQUFBK04sWUFBQXhELGFBQUEsMEVBQUFDLDBCQUFBQSx3QkFBQSw0REFBQUMsS0FBQSxjQUFBQyxXQUFBcUQsWUFBQXhELGFBQUFJLEtBQUEsMkQsdzBDQ3RCekosSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxxQkFBbUIsc0JBRTNCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLCtDQUUzREgsRUFBQUEsSUFBQUEsSUFBQSxtTEFBNktBLEVBQUFBLElBQUFBLElBQUNTLGtCQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sU0FBU21ILFFBQVEsVUFBUSxVQUFvQixNQUNyUEYsRUFBQUEsSUFBQUEsSUFBQSxVQUFHQSxFQUFBQSxJQUFBQSxJQUFBLFVBQVFHLFdBQVcsS0FBRyxjQUF3Qix1QkFBdUJILEVBQUFBLElBQUFBLElBQUEsVUFBUUcsV0FBVyxLQUFHLE9BQWlCLDRHQUMvR0gsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsbURBQW1EeUQsUUFBUSxVQUV6RSxDQWhCd0JKLFdBQVU1SixZQUFBLGFBa0JsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ2xCNUIsMkJBQ0U5SyxNQUFPLDZCQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLTnBGLFdBQVlULEVBQUFBLElBQUFBLElBQWdCRCxrQkFFckJ5RyxrQkFBb0IsU0FBU0Esb0JBQ3hDLE9BQU9oTCxFQUFBQSxZQUFBQSxLQUFDZ0ssaUJBQUFBLEVBQUssQ0FBQy9FLFVBQVdBLFdBQzNCLEVBRmErRixrQkFBaUJ6SyxZQUFHLG9CQUUvQnlLLGtCQUFrQnRLLFVBQVksb0JBSWhDc0ssa0JBQWtCNU8sV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsZ0ZBQW9GK0wsa0JBQWtCNU8sWUFBYSxJQUFBVSxvQkFBQSxzQkFBQWtPLGtCQUFBM0QsYUFBQSxnRkFBQUMsMEJBQUFBLHdCQUFBLGtFQUFBQyxLQUFBLG9CQUFBQyxXQUFBd0Qsa0JBQUEzRCxhQUFBSSxLQUFBLGlFLGd6Q0N0QjNLLElBQU15QyxZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sZUFBYSxnQkFFckJBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksc0RBRTNESCxFQUFBQSxJQUFBQSxJQUFBLHVLQUFpS0EsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsU0FBdUIsU0FBU0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsT0FBcUIsUUFBUUgsRUFBQUEsSUFBQUEsSUFBQ1Msa0JBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxTQUFTbUgsUUFBUSxVQUFRLFVBQW9CLE1BQzFWRixFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyw0Q0FBNEN5RCxRQUFRLFVBRWxFLENBZndCSixXQUFVNUosWUFBQSxhQWlCbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNqQjVCLHFCQUNFOUssTUFBTyw2QkFDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS05wRixXQUFZVCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRXJCMEcsWUFBYyxTQUFTQSxjQUNsQyxPQUFPakwsRUFBQUEsWUFBQUEsS0FBQ2dLLGlCQUFBQSxFQUFLLENBQUMvRSxVQUFXQSxXQUMzQixFQUZhZ0csWUFBVzFLLFlBQUcsY0FFekIwSyxZQUFZdkssVUFBWSxjQUkxQnVLLFlBQVk3TyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSwwRUFBOEVnTSxZQUFZN08sWUFBYSxJQUFBVSxvQkFBQSxnQkFBQW1PLFlBQUE1RCxhQUFBLDBFQUFBQywwQkFBQUEsd0JBQUEsNERBQUFDLEtBQUEsY0FBQUMsV0FBQXlELFlBQUE1RCxhQUFBSSxLQUFBLDJELDB5Q0N0QnpKLElBQU15QyxZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0saUJBQWUsa0JBRXZCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLDhDQUUzREgsRUFBQUEsSUFBQUEsSUFBQSx3SEFBa0hBLEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFNBQXVCLFNBQVNILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLE9BQXFCLFFBQVFILEVBQUFBLElBQUFBLElBQUNTLGtCQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sU0FBU21ILFFBQVEsVUFBUSxVQUFvQixNQUMzU0YsRUFBQUEsSUFBQUEsSUFBQSxpQkFBV0EsRUFBQUEsSUFBQUEsSUFBQ1Msa0JBQUFBLEVBQU0sQ0FBQ0MsS0FBSyw2QkFBNkIzSCxNQUFNLFlBQVltSCxRQUFRLFVBQVEsYUFBdUIsa0JBQWtCRixFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxRQUFzQixzQ0FDaExILEVBQUFBLElBQUFBLElBQUEsVUFBR0EsRUFBQUEsSUFBQUEsSUFBQSxVQUFRRyxXQUFXLEtBQUcsU0FBbUIsS0FBS0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsYUFBMkIsc0VBQXNFSCxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLDZCQUE2QjNILE1BQU0scUJBQXFCbUgsUUFBUSxVQUFRLHFCQUErQixhQUFhRixFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxTQUF1QixNQUM5VkgsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsOENBQThDeUQsUUFBUSxVQUVwRSxDQWpCd0JKLFdBQVU1SixZQUFBLGFBbUJsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ25CNUIsdUJBQ0U5SyxNQUFPLDZCQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLTnBGLFdBQVlULEVBQUFBLElBQUFBLElBQWdCRCxrQkFFckIyRyxjQUFnQixTQUFTQSxnQkFDcEMsT0FBT2xMLEVBQUFBLFlBQUFBLEtBQUNnSyxVQUFBQSxFQUFLLENBQUMvRSxVQUFXQSxXQUMzQixFQUZhaUcsY0FBYTNLLFlBQUcsZ0JBRTNCMkssY0FBY3hLLFVBQVksZ0JBSTVCd0ssY0FBYzlPLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLDRFQUFnRmlNLGNBQWM5TyxZQUFhLElBQUFVLG9CQUFBLGtCQUFBb08sY0FBQTdELGFBQUEsNEVBQUFDLDBCQUFBQSx3QkFBQSw4REFBQUMsS0FBQSxnQkFBQUMsV0FBQTBELGNBQUE3RCxhQUFBSSxLQUFBLDZELDB4Q0N0Qi9KLElBQU15QyxZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sYUFBVyxjQUVuQkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxhQUN6REgsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksYUFBY0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksV0FFOURILEVBQUFBLElBQUFBLElBQUEsMkZBQXFGQSxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLDZCQUE2QjNILE1BQU0sa0JBQWtCbUgsUUFBUSxVQUFRLGlCQUEyQix5QkFBeUJGLEVBQUFBLElBQUFBLElBQUNTLGtCQUFBQSxFQUFNLENBQUNDLEtBQUssNkJBQTZCM0gsTUFBTSxxQkFBcUJtSCxRQUFRLFVBQVEscUJBQStCLDZDQUMvVUYsRUFBQUEsSUFBQUEsSUFBQSxVQUFHQSxFQUFBQSxJQUFBQSxJQUFBLFVBQVFHLFdBQVcsS0FBRyxTQUFtQixLQUFLSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxhQUEyQixzRUFBc0VILEVBQUFBLElBQUFBLElBQUNTLGtCQUFBQSxFQUFNLENBQUNDLEtBQUssNkJBQTZCM0gsTUFBTSxxQkFBcUJtSCxRQUFRLFVBQVEscUJBQStCLGFBQWFGLEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFNBQXVCLE1BQzlWSCxFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyx3Q0FBd0N5RCxRQUFRLFVBRTlELENBakJ3QkosV0FBVTVKLFlBQUEsYUFtQmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDbkI1QixtQkFDRTlLLE1BQU8sNkJBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtOcEYsV0FBWVQsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVyQjRHLFVBQVksU0FBU0EsWUFDaEMsT0FBT25MLEVBQUFBLFlBQUFBLEtBQUNnSyxVQUFBQSxFQUFLLENBQUMvRSxVQUFXQSxXQUMzQixFQUZha0csVUFBUzVLLFlBQUcsWUFFdkI0SyxVQUFVekssVUFBWSxZQUl4QnlLLFVBQVUvTyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx3RUFBNEVrTSxVQUFVL08sWUFBYSxJQUFBVSxvQkFBQSxjQUFBcU8sVUFBQTlELGFBQUEsd0VBQUFDLDBCQUFBQSx3QkFBQSwwREFBQUMsS0FBQSxZQUFBQyxXQUFBMkQsVUFBQTlELGFBQUFJLEtBQUEseUQsMHpDQ3RCbkosSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxxQkFBbUIsc0JBRTNCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHdDQUN6REgsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksYUFBY0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksaUJBRTlESCxFQUFBQSxJQUFBQSxJQUFBLGtEQUNBQSxFQUFBQSxJQUFBQSxJQUFBLFVBQUdBLEVBQUFBLElBQUFBLElBQUEsVUFBUUcsV0FBVyxLQUFHLFNBQW1CLEtBQUtILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGFBQTJCLHNFQUFzRUgsRUFBQUEsSUFBQUEsSUFBQ1Msa0JBQUFBLEVBQU0sQ0FBQ0MsS0FBSyw2QkFBNkIzSCxNQUFNLHFCQUFxQm1ILFFBQVEsVUFBUSxxQkFBK0IsYUFBYUYsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsU0FBdUIsTUFDOVZILEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLHdDQUF3Q3lELFFBQVEsVUFFOUQsQ0FqQndCSixXQUFVNUosWUFBQSxhQW1CbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNuQjVCLDJCQUNFOUssTUFBTyw2QkFDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS05wRixXQUFZVCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRXJCNkcsa0JBQW9CLFNBQVNBLG9CQUN4QyxPQUFPcEwsRUFBQUEsWUFBQUEsS0FBQ2dLLFVBQUFBLEVBQUssQ0FBQy9FLFVBQVdBLFdBQzNCLEVBRmFtRyxrQkFBaUI3SyxZQUFHLG9CQUUvQjZLLGtCQUFrQjFLLFVBQVksb0JBSWhDMEssa0JBQWtCaFAsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsZ0ZBQW9GbU0sa0JBQWtCaFAsWUFBYSxJQUFBVSxvQkFBQSxzQkFBQXNPLGtCQUFBL0QsYUFBQSxnRkFBQUMsMEJBQUFBLHdCQUFBLGtFQUFBQyxLQUFBLG9CQUFBQyxXQUFBNEQsa0JBQUEvRCxhQUFBSSxLQUFBLGlFLCtyREN2QnJLbkUscUJBQXNCd0IsRUFBQUEsWUFBQUEsR0FBZ0JqRixJQUFBQSxJQUV0Q21CLE9BQVMsQ0FDYixDQUNFOEYsR0FBSSxFQUNKbkgsTUFBTyxnQkFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQ25DK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FDbENzSyxXQUFZLENBQUMsRUFBRyxJQUVsQixDQUNFdkUsR0FBSSxFQUNKbkgsTUFBTyxjQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FDcEMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQUksR0FBSSxHQUNuQ3NLLFdBQVksR0FFZCxDQUNFdkUsR0FBSSxFQUNKbkgsTUFBTyxvQkFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQ3BDK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FDbkNzSyxXQUFZLEdBRWQsQ0FDRXZFLEdBQUksR0FDSm5ILE1BQU8sZ0JBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQUksRUFBRyxHQUNwQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQ25Dc0ssV0FBWSxHQUVkLENBQ0V2RSxHQUFJLEdBQ0puSCxNQUFPLGlCQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FDbkMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQUksR0FBSSxHQUNuQ3NLLFdBQVksR0FFZCxDQUNFdkUsR0FBSSxHQUNKbkgsTUFBTyxnQkFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQ3JDK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FDbENzSyxXQUFZLEdBRWQsQ0FDRXZFLEdBQUksR0FDSm5ILE1BQU8sZ0JBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQUksR0FBSSxHQUNyQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQ2xDc0ssV0FBWSxHQUVkLENBQ0V2RSxHQUFJLEdBQ0puSCxNQUFPLGdCQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FDckMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQUksRUFBRyxHQUNsQ3NLLFdBQVksSUFJVkMsWUFBYyxDQUNsQixDQUFFRCxXQUFZLEVBQUdFLGNBQWUsY0FDaEMsQ0FBRUYsV0FBWSxFQUFHRSxjQUFlLGlCQUNoQyxDQUFFRixXQUFZLEVBQUdFLGNBQWUsa0JBQ2hDLENBQUVGLFdBQVksRUFBR0UsY0FBZSxtQkFHbkIsU0FBU0MsWUFBV3pHLE1BQWdCLElBQWJFLFVBQVNGLEtBQVRFLFVBQ3BDZ0QsV0FBZ0NDLEVBQUFBLE1BQUFBLFVBQVNsSCxRQUFPbUgsWUFBQUMsRUFBQUEsY0FBQUEsR0FBQUgsVUFBQSxHQUF6Q0ksU0FBUUYsV0FBQSxHQUFFRyxZQUFXSCxXQUFBLEdBQzVCc0QsWUFBa0N2RCxFQUFBQSxNQUFBQSxXQUFTLEdBQUt3RCxZQUFBdEQsRUFBQUEsY0FBQUEsR0FBQXFELFdBQUEsR0FBekNFLFVBQVNELFdBQUEsR0FBRUUsYUFBWUYsV0FBQSxHQUV4QkcsaUJBQWtCckQsRUFBQUEsTUFBQUEsY0FBWSxrQkFBTW9ELGNBQWEsU0FBQ0UsS0FBRyxPQUFNQSxHQUFHLEdBQUMsR0FBRSxJQUVqRXZELFdBQVlDLEVBQUFBLE1BQUFBLGNBQ2hCLFNBQUFDLE9BTU0sSUFMSkMsTUFBS0QsTUFBTEMsTUFDQTdDLE1BQUs0QyxNQUFMNUMsTUFDQUMsSUFBRzJDLE1BQUgzQyxJQUNBdUYsV0FBVTVDLE1BQVY0QyxXQUFVMUMsZUFBQUYsTUFDVkcsU0FBVUMseUJBQW1CLElBQUFGLGdCQUFRQSxlQUU3QjVDLE9BQVcyQyxNQUFYM0MsT0FJUixJQUhLQSxRQUFVOEMsc0JBQ2JILE1BQU0zQyxRQUFTLEdBRWJnRyxNQUFNQyxRQUFRdEQsTUFBTTJDLFlBQ3RCLEdBQUlNLFVBQ0ZOLFlBQVVoQyxFQUFBQSxrQkFBQUEsR0FBTyxJQUFJNEMsSUFBSSxHQUFEN0MsUUFBQUMsRUFBQUEsa0JBQUFBLEdBQUtYLE1BQU0yQyxZQUFVLENBQUVBLG1CQUMxQyxDQUNMLElBQU1sQyxTQUFXVCxNQUFNMkMsV0FBVy9OLFFBQ2hDLFNBQUM0TCxJQUFFLE9BQUtBLEtBQU9SLE1BQU13RCxjQUFjLElBRXJDYixZQUFVaEMsRUFBQUEsa0JBQUFBLEdBQU8sSUFBSTRDLElBQUksR0FBRDdDLFFBQUFDLEVBQUFBLGtCQUFBQSxHQUFLRixVQUFRLENBQUVrQyxjQUN6QyxNQUNTTSxZQUNUTixZQUFVaEMsRUFBQUEsa0JBQUFBLEdBQU8sSUFBSTRDLElBQUksQ0FBQ3ZELE1BQU0yQyxXQUFZQSxlQUc5Qy9DLGFBQVksU0FBQ1EsTUFBUyxJQUFBQyxXQUNkQyxTQUFnRCxRQUF4Q0QsV0FBR0QsS0FBS0csTUFBSyxTQUFDQyxJQUFFLE9BQUtBLEdBQUdwQyxLQUFPNEIsTUFBTTVCLEVBQUUsV0FBQyxJQUFBaUMsV0FBQUEsV0FBSSxDQUFDLEVBQ3JESSxTQUFXTCxLQUFLeEwsUUFBTyxTQUFDNEwsSUFBRSxPQUFLQSxHQUFHcEMsS0FBTzRCLE1BQU01QixFQUFFLElBQ3ZELE1BQU8sR0FBUHNDLFFBQUFDLEVBQUFBLGtCQUFBQSxHQUFXRixVQUFRLENBQUFoTSxPQUFBbUQsT0FBQSxHQUFPMEksU0FBVSxDQUFBbkQsTUFBQUEsTUFBT0MsSUFBQUEsSUFBS3VGLFdBQUFBLFdBQVl0RixPQUFBQSxVQUM5RCxHQUNGLEdBQ0EsQ0FBQ3VDLFlBQWFxRCxZQUdWckMsYUFBY2QsRUFBQUEsTUFBQUEsY0FDbEIsU0FBQWUsT0FBMkIsSUFBeEJiLE1BQUthLE1BQUxiLE1BQU83QyxNQUFLMEQsTUFBTDFELE1BQU9DLElBQUd5RCxNQUFIekQsSUFDZndDLGFBQVksU0FBQ1EsTUFBUyxJQUFBVSxZQUNkUixTQUFnRCxRQUF4Q1EsWUFBR1YsS0FBS0csTUFBSyxTQUFDQyxJQUFFLE9BQUtBLEdBQUdwQyxLQUFPNEIsTUFBTTVCLEVBQUUsV0FBQyxJQUFBMEMsWUFBQUEsWUFBSSxDQUFDLEVBQ3JETCxTQUFXTCxLQUFLeEwsUUFBTyxTQUFDNEwsSUFBRSxPQUFLQSxHQUFHcEMsS0FBTzRCLE1BQU01QixFQUFFLElBQ3ZELE1BQU8sR0FBUHNDLFFBQUFDLEVBQUFBLGtCQUFBQSxHQUFXRixVQUFRLENBQUFoTSxPQUFBbUQsT0FBQSxHQUFPMEksU0FBVSxDQUFBbkQsTUFBQUEsTUFBT0MsSUFBQUEsT0FDN0MsR0FDRixHQUNBLENBQUN3QyxjQUdINkQsVUFBc0MxQyxFQUFBQSxNQUFBQSxVQUNwQyxpQkFBTyxDQUNMM0ksWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxJQUMvQmtHLGFBQWMsSUFBSWxHLEtBQUssS0FBTSxFQUFHLEVBQUcsR0FDcEMsR0FDRCxJQUxNRCxZQUFXcUwsU0FBWHJMLFlBQWFtRyxhQUFZa0YsU0FBWmxGLGFBUXJCLE9BQ0V5QyxFQUFBQSxZQUFBQSxNQUFDQyxNQUFBQSxTQUFRLENBQUF6SixTQUFBLEVBQ1B3SixFQUFBQSxZQUFBQSxNQUFDRSxtQkFBQUEsRUFBUSxDQUFDQyxTQUFTLGNBQWEzSixTQUFBLEVBQzlCRixFQUFBQSxZQUFBQSxLQUFBLFVBQUFFLFNBQVEsaUVBR1JGLEVBQUFBLFlBQUFBLEtBQUEsT0FBS29NLE1BQU8sQ0FBRUMsT0FBUSxpQkFBa0JuTSxVQUN0Q3dKLEVBQUFBLFlBQUFBLE1BQUEsU0FBQXhKLFNBQUEsRUFDRUYsRUFBQUEsWUFBQUEsS0FBQSxTQUNFeUYsS0FBSyxXQUNMNkcsUUFBU1gsVUFDVFksU0FBVVYsa0JBQ1YsOEVBS1I3TCxFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNzRCxvQkFBbUIsQ0FDbEJ4QyxZQUFhQSxZQUNiSCxZQUFhQyxJQUFBQSxHQUFNQyxJQUNuQkcsT0FBUXFILFNBQ1JwRCxVQUFXQSxVQUNYeEIsWUFBYThFLFVBQ2I3RSxjQUFlNEYsWUFDZjlGLFdBQVMsRUFDVFQsbUJBQW1CLGFBQ25CRixVQUFXeUksWUFDWHRJLHNCQUFzQixnQkFDdEJpRSxhQUFjQSxhQUNkVSxZQUFVLEVBQ1Y1RCxtQkFBbUIsRUFDbkI3QyxLQUFNLFNBS2hCLENBaEd3QnNLLFlBQVdqTCxZQUFBLGNBQUFpTCxZQUFBbkUsYUFBQSx3S0FBQUMsMEJBQUFBLHdCQUFBLDZDQUFBQyxLQUFBLGNBQUFDLFdBQUFnRSxZQUFBbkUsYUFBQUksS0FBQSw2Q0N6RS9CLElBU0osa0JBQ0U5SCxNQUFPLHVCQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTSxRQUtON0UsV0FBWVQsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVyQmlJLFNBQVcsU0FBU0EsV0FDL0IsT0FBT3hNLEVBQUFBLFlBQUFBLEtBQUN3TCxZQUFXLENBQUN2RyxVQUFXQSxXQUNqQyxFQUZhdUgsU0FBUWpNLFlBQUcsV0FFdEJpTSxTQUFTOUwsVUFBWSx5QkFJdkI4TCxTQUFTcFEsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsNkVBQWlGdU4sU0FBU3BRLFlBQWEsSUFBQVUsb0JBQUEsYUFBQTBQLFNBQUFuRixhQUFBLHVFQUFBQywwQkFBQUEsd0JBQUEsbURBQUFDLEtBQUEsV0FBQUMsV0FBQWdGLFNBQUFuRixhQUFBSSxLQUFBLGtELHk2QkMvQnRKLGtCQUNFLENBQ0VYLEdBQUksRUFDSm5ILE1BQU8sd0JBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQzdCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxNLHlIQ0czQjBMLFNBQVd0UCxPQUFPRCxLQUFLMEQsSUFBQUEsSUFBTzhMLEtBQUksU0FBQ0MsR0FBQyxPQUFLL0wsSUFBQUEsR0FBTStMLEVBQUUsSUFFdEMsU0FBU0MseUJBQXdCN0gsTUFBZ0IsSUFBYkUsVUFBU0YsS0FBVEUsVUFDakRrSCxVQUE2QjFDLEVBQUFBLE1BQUFBLFVBQzNCLGlCQUFPLENBQ0wzSSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLElBQy9CNkUsSUFBS2lILE1BQUFBLEdBQVVBLE1BQUFBLEdBQVksSUFBSTlMLEtBQUssS0FBTSxHQUFJLEdBQUksUUFBUyxFQUFHLFNBQy9ELEdBQ0QsSUFMTUQsWUFBV3FMLFNBQVhyTCxZQUFhOEUsSUFBR3VHLFNBQUh2RyxJQVFyQixPQUNFOEQsRUFBQUEsWUFBQUEsTUFBQ0MsTUFBQUEsU0FBUSxDQUFBekosU0FBQSxFQUNQRixFQUFBQSxZQUFBQSxLQUFDNEosbUJBQUFBLEVBQVEsQ0FBQ0MsU0FBUyxzQkFDbkI3SixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVEsQ0FDUHNILGlCQUFrQkEsaUJBQ2xCSCxtQkFBbUIsYUFDbkJsRyxZQUFhQSxZQUNiSCxZQUFhQyxJQUFBQSxHQUFNQyxJQUNuQkcsT0FBUUEsT0FBQUEsRUFDUmlFLFVBQVdBLFVBQ1hXLElBQUtBLElBQ0w3QixtQkFBaUIsRUFDakI3QyxLQUFNLEdBQ05RLE1BQU8rSyxlQUtqQixDQTVCd0JHLHlCQUF3QnJNLFlBQUEsMkJBQUFxTSx5QkFBQXZGLGFBQUEscUxBQUFDLDBCQUFBQSx3QkFBQSxrREFBQUMsS0FBQSwyQkFBQUMsV0FBQW9GLHlCQUFBdkYsYUFBQUksS0FBQSxrRENONUMsSUFTSiwwQkFDRTlILE1BQU8sV0FDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU0sUUFLTjdFLFdBQVlULEVBQUFBLElBQUFBLElBQWdCRCxrQkFFckJ1SSxVQUFZLFNBQVNBLFlBQ2hDLE9BQU85TSxFQUFBQSxZQUFBQSxLQUFDK00seUJBQWtCLENBQUM5SCxVQUFXQSxXQUN4QyxFQUZhNkgsVUFBU3ZNLFlBQUcsWUFFdkJ1TSxVQUFVcE0sVUFBWSxvQkFJeEJvTSxVQUFVMVEsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEscUZBQXlGNk4sVUFBVTFRLFlBQWEsSUFBQVUsb0JBQUEsY0FBQWdRLFVBQUF6RixhQUFBLHdFQUFBQywwQkFBQUEsd0JBQUEsOENBQUFDLEtBQUEsWUFBQUMsV0FBQXNGLFVBQUF6RixhQUFBSSxLQUFBLDZDLHU1QkNsQmhLLDZCQUNFOUgsTUFBTyxXQUNQQyxVQUFXQyxrQ0FBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU0sUUFLWixJQUFNN0UsV0FBWVQsRUFBQUEsa0NBQUFBLElBQWdCRCwrQ0FFckJ3RixTQUFXLFNBQVNBLFdBQy9CLE9BQU8vSixFQUFBQSwrQ0FBQUEsS0FBQ2dLLGdEQUFBQSxFQUFLLENBQUMvRSxVQUFXQSxXQUMzQixFQUZhOEUsU0FBUXhKLFlBQUcsV0FFdEJ3SixTQUFTckosVUFBWSxhQUl2QnFKLFNBQVMzTixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx1RUFBMkU4SyxTQUFTM04sWUFBYSxJQUFBVSxvQkFBQSxhQUFBaU4sU0FBQTFDLGFBQUEsdUVBQUFDLDBCQUFBQSx3QkFBQSxtQ0FBQUMsS0FBQSxXQUFBQyxXQUFBdUMsU0FBQTFDLGFBQUFJLEtBQUEsa0MsMm1DQ3hCaEp1RixvQkFBUSxvRUFDUkEsb0JBQVEsaUVBQ1JBLG9CQUFRLGlFQUNSQSxvQkFBUSxvRUFFUixJQUFNQyxTQUFXLENBQUMsS0FBTSxRQUFTLEtBQU0sS0FBTSxTQUN2Q0MsS0FBTyxDQUNYQyxHQUFJLEtBQ0osUUFBUyxLQUNUQyxHQUFJLENBQ0ZDLEtBQU0sU0FDTkMsVUFBVyxvQkFDWEMsSUFBSyxNQUNMQyxNQUFPLE1BQ1BDLFNBQVUsUUFDVkMsS0FBTSxVQUNOQyxNQUFPLE1BQ1BDLE9BQVEsWUFFUkMsU0FBVSxTQUFBQSxTQUFDQyxPQUFLLFVBQUExRSxPQUFTMEUsTUFBSyxVQUVoQ0MsR0FBSSxDQUNGVixLQUFNLGFBQ05DLFVBQVcscUJBQ1hDLElBQUssT0FDTEMsTUFBTyxPQUNQQyxTQUFVLFlBQ1ZDLEtBQU0sV0FDTkMsTUFBTyxjQUNQQyxPQUFRLGdCQUVSQyxTQUFVLFNBQUFBLFNBQUNDLE9BQUssVUFBQTFFLE9BQVMwRSxNQUFLLFdBRWhDLFFBQVMsQ0FDUFQsS0FBTSxRQUNOQyxVQUFXLGNBQ1hDLElBQUssTUFDTEMsTUFBTyxNQUNQQyxTQUFVLE9BQ1ZDLEtBQU0sU0FDTkMsTUFBTyxRQUNQQyxPQUFRLGFBRVJDLFNBQVUsU0FBQUEsU0FBQ0MsT0FBSyxVQUFBMUUsT0FBUzBFLE1BQUssYUFJbkIsU0FBU0UsYUFBWWpKLE1BQWdCLElBQWJFLFVBQVNGLEtBQVRFLFVBQ3JDZ0QsV0FBOEJDLEVBQUFBLE1BQUFBLFVBQVMsTUFBS0MsWUFBQUMsRUFBQUEsY0FBQUEsR0FBQUgsVUFBQSxHQUFyQ2dHLFFBQU85RixXQUFBLEdBQUUrRixXQUFVL0YsV0FBQSxHQUMxQnNELFlBQXNDdkQsRUFBQUEsTUFBQUEsV0FBUyxHQUFNd0QsWUFBQXRELEVBQUFBLGNBQUFBLEdBQUFxRCxXQUFBLEdBQTlDMEMsWUFBV3pDLFdBQUEsR0FBRTBDLGVBQWMxQyxXQUFBLEdBRTVCMkMsZ0JBQWlCN0YsRUFBQUEsTUFBQUEsY0FDckIsU0FBQUMsT0FBMkIsSUFBZDFLLE1BQUswSyxNQUFmNUosT0FBVWQsTUFFWG1RLFdBQVduUSxPQUNYcVEsZUFBeUIsVUFBVnJRLE1BQ2pCLEdBQ0EsQ0FBQ21RLGFBR0gvQixVQUFrQzFDLEVBQUFBLE1BQUFBLFVBQ2hDLGlCQUFPLENBQ0wzSSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLEdBQy9CMEIsU0FBVXlLLEtBQUtlLFNBQ2hCLEdBQ0QsQ0FBQ0EsVUFMS25OLFlBQVdxTCxTQUFYckwsWUFBYTJCLFNBQVEwSixTQUFSMUosU0FRckIsT0FDRWlILEVBQUFBLFlBQUFBLE1BQUNDLE1BQUFBLFNBQVEsQ0FBQXpKLFNBQUEsRUFDUEYsRUFBQUEsWUFBQUEsS0FBQzRKLG1CQUFBQSxFQUFRLENBQUNDLFNBQVMsV0FBVTNKLFVBQzNCd0osRUFBQUEsWUFBQUEsTUFBQzRFLGlCQUFNLENBQUNDLFVBQVUsU0FBU0MsTUFBTSxTQUFRdE8sU0FBQSxFQUN2Q0YsRUFBQUEsWUFBQUEsS0FBQSxTQUFBRSxTQUFPLHFCQUF5QixLQUNoQ0YsRUFBQUEsWUFBQUEsS0FBQSxVQUNFQyxVQUFVLGVBQ1ZtTSxNQUFPLENBQUVxQyxNQUFPLElBQUtDLFFBQVMsZ0JBQzlCQyxhQUFjLEtBQ2RwQyxTQUFVOEIsZUFBZW5PLFNBRXhCK00sU0FBU1AsS0FBSSxTQUFDa0MsRUFBR0MsS0FBRyxPQUNuQjdPLEVBQUFBLFlBQUFBLEtBQUEsVUFBa0JqQyxNQUFPNlEsRUFBRTFPLFNBQ3hCME8sR0FEVUMsSUFFSixZQUtqQjdPLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQb08sUUFBU0EsUUFDVG5OLFlBQWFBLFlBQ2JFLE9BQVFBLE9BQUFBLEVBQ1JpRSxVQUFXQSxVQUNYeEMsU0FBVUEsU0FDVnFNLElBQUtYLGtCQUtmLENBcER3QkgsYUFBWXpOLFlBQUEsZUFBQXlOLGFBQUEzRyxhQUFBLHlLQUFBQywwQkFBQUEsd0JBQUEsMENBQUFDLEtBQUEsZUFBQUMsV0FBQXdHLGFBQUEzRyxhQUFBSSxLQUFBLDBDQ2xEaEMsSUFTSixrQkFDRTlILE1BQU8sV0FDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU0sUUFLTjdFLFdBQVlULEVBQUFBLElBQUFBLElBQWdCRCxrQkFFckJ3SyxTQUFXLFNBQVNBLFdBQy9CLE9BQU8vTyxFQUFBQSxZQUFBQSxLQUFDZ1AsYUFBVyxDQUFDL0osVUFBV0EsV0FDakMsRUFGYThKLFNBQVF4TyxZQUFHLFdBRXRCd08sU0FBU3JPLFVBQVksZUFJdkJxTyxTQUFTM1MsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsNkVBQWlGOFAsU0FBUzNTLFlBQWEsSUFBQVUsb0JBQUEsYUFBQWlTLFNBQUExSCxhQUFBLHVFQUFBQywwQkFBQUEsd0JBQUEsc0NBQUFDLEtBQUEsV0FBQUMsV0FBQXVILFNBQUExSCxhQUFBSSxLQUFBLHFDLGlvQ0N0QnRKLFNBQVN3SCxPQUFNbEssTUFPWixJQU5EckksS0FBSXFJLEtBQUpySSxLQUNBdUksVUFBU0YsS0FBVEUsVUFBU2lLLFNBQUFuSyxLQUNUYSxJQUFBQSxTQUFHLElBQUFzSixTQUFHakssVUFBVWtLLE1BQU0sSUFBSXBPLEtBQVEsT0FBTW1PLFNBQUFFLFNBQUFySyxLQUN4Q1csSUFBQUEsU0FBRyxJQUFBMEosU0FBR25LLFVBQVVvSyxRQUFRLElBQUl0TyxLQUFRLE9BQU1xTyxTQUFBRSxrQkFBQXZLLEtBQzFDa0MsYUFBQUEsa0JBQVksSUFBQXFJLGtCQUFHckssVUFBVW9LLFFBQVEsSUFBSXRPLEtBQVEsT0FBTXVPLGtCQUNoRGxGLE9BQUtqRixFQUFBQSx3QkFBQUEsR0FBQUosS0FBQUssV0FFRm1LLFdBQVk5RixFQUFBQSxNQUFBQSxVQUNoQixrQkFBTXdGLE9BQU9PLE1BQU05UyxLQUFNLENBQUV1SSxVQUFBQSxXQUFZLEdBQ3ZDLENBQUN2SSxLQUFNdUksWUFHVCxPQUNFakYsRUFBQUEsWUFBQUEsS0FBQ3lQLFNBQUFBLEVBQVF0UyxPQUFBbUQsT0FBQSxDQUNQNUQsS0FBTUEsS0FDTmdULFlBQWEsR0FDYnpLLFVBQVdBLFVBQ1hXLElBQUtBLElBQ0xGLElBQUtBLElBQ0w4SixNQUFPRCxVQUNQdEksYUFBY0EsY0FDVm1ELE9BR1YsQ0EwQ2UsU0FBU3VGLFdBQVVDLE9BQWdCLElBQWIzSyxVQUFTMkssTUFBVDNLLFVBQ25Da0gsVUFBK0IxQyxFQUFBQSxNQUFBQSxVQUM3QixpQkFBTyxDQUNMM0ksWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxHQUMvQlcsTUFBTyxDQUNMOEwsT0FBTyxFQUNQSCxLQUFNNEIsUUFFVCxHQUNELElBUk1uTyxZQUFXcUwsU0FBWHJMLFlBQWFZLE1BQUt5SyxTQUFMekssTUFXckIsT0FDRWdJLEVBQUFBLFlBQUFBLE1BQUNDLE1BQUFBLFNBQVEsQ0FBQXpKLFNBQUEsRUFDUEYsRUFBQUEsWUFBQUEsS0FBQzRKLG1CQUFBQSxFQUFRLENBQUNDLFNBQVMsYUFBWTNKLFVBQzdCRixFQUFBQSxZQUFBQSxLQUFBLFVBQUFFLFNBQVEsOERBRVZGLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQaUIsWUFBYUEsWUFDYkgsWUFBYUMsSUFBQUEsR0FBTWEsS0FDbkJULE9BQVFBLE9BQUFBLEVBQ1JpRSxVQUFXQSxVQUNYdkQsTUFBT0EsWUFLakIsQ0EvRlN1TixPQUFNMU8sWUFBQSxTQW1DZjBPLE9BQU9PLE1BQVEsU0FBQzlTLEtBQUkrTCxPQU9sQixJQVBzQyxJQUFoQnhELFVBQVN3RCxNQUFUeEQsVUFDaEJZLE1BQVFuSixLQUNSb0osSUFBTStHLGdCQUFBQSxJQUFVaEgsTUFBTyxFQUFHLE9BRTVCZ0ssUUFBVWhLLE1BQ1IySixNQUFRLEdBRVB2SyxVQUFVNkssSUFBSUQsUUFBUy9KLElBQUssUUFDakMwSixNQUFNOVIsS0FBS21TLFNBQ1hBLFFBQVU1SyxVQUFVc0IsSUFBSXNKLFFBQVMsRUFBRyxPQUd0QyxPQUFPTCxLQUNULEVBRUFQLE9BQU9jLFNBQVcsU0FBQ3JULEtBQU04RSxPQUFNK0gsT0FBb0IsSUFBaEJ0RSxVQUFTc0UsTUFBVHRFLFVBQ2pDLE9BQVF6RCxRQUNOLEtBQUt3TyxJQUFBQSxHQUFTQyxTQUNaLE9BQU9oTCxVQUFVc0IsSUFBSTdKLE1BQU8sRUFBRyxPQUVqQyxLQUFLc1QsSUFBQUEsR0FBU0UsS0FDWixPQUFPakwsVUFBVXNCLElBQUk3SixLQUFNLEVBQUcsT0FFaEMsUUFDRSxPQUFPQSxLQUViLEVBRUF1UyxPQUFPdFAsTUFBUSxTQUFDakQsTUFDZCxNQUFPLG9CQUFQME0sT0FBMkIxTSxLQUFLeVQscUJBQ2xDLEVBRXdCUixXQUFVcFAsWUFBQSxhQUFBb1AsV0FBQXRJLGFBQUEsdUtBQUFDLDBCQUFBQSx3QkFBQSw0Q0FBQUMsS0FBQSxhQUFBQyxXQUFBbUksV0FBQXRJLGFBQUFJLEtBQUEsNENDeEU5QixJQVNKLG9CQUNFOUgsTUFBTyxXQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTSxRQUtON0UsV0FBWVQsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVyQjZMLFNBQVcsU0FBU0EsV0FDL0IsT0FBT3BRLEVBQUFBLFlBQUFBLEtBQUMyUCxXQUFVLENBQUMxSyxVQUFXQSxXQUNoQyxFQUZhbUwsU0FBUTdQLFlBQUcsV0FFdEI2UCxTQUFTMVAsVUFBWSx3QkFJdkIwUCxTQUFTaFUsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsNEVBQWdGbVIsU0FBU2hVLFlBQWEsSUFBQVUsb0JBQUEsYUFBQXNULFNBQUEvSSxhQUFBLHVFQUFBQywwQkFBQUEsd0JBQUEsd0NBQUFDLEtBQUEsV0FBQUMsV0FBQTRJLFNBQUEvSSxhQUFBSSxLQUFBLHVDLHN6Q0Nkcko0SSxvQkFBQUEsT0FBYUMsb0JBRWIsSUFBTUMsYUFBY0MsRUFBQUEsSUFBQUEsSUFBZUgscUJBRTdCSSx1QkFBeUIsU0FBekJBLHVCQUFzQjFMLE1BQUEsSUFBTTdFLFNBQVE2RSxLQUFSN0UsU0FBUSxPQUN4Q3dRLE1BQUFBLGFBQW1CQSxNQUFBQSxTQUFlQyxLQUFLelEsVUFBVyxDQUNoRGtNLE1BQU8sQ0FDTHdFLGdCQUFpQixjQUVuQixFQUVXLFNBQVNDLE1BQUtwSSxPQUFlLElBQVQyQixPQUFLRSxFQUFBQSxZQUFBQSxHQUFBLEtBQUF3RyxFQUFBQSx5QkFBQUEsR0FBQXJJLE9BQUFBLFFBQ3RDMEQsVUFBZ0QxQyxFQUFBQSxNQUFBQSxVQUM5QyxpQkFBTyxDQUNMOUgsV0FBWSxDQUNWUyxnQkFBaUJxTyx3QkFFbkIzUCxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLEdBQy9CNkUsSUFBS3lLLHNCQUFRbEIsTUFBTSxPQUFPM0ksU0FBUyxFQUFHLFNBQVNiLFNBQy9DakUsTUFBT3ZFLE9BQU9ELEtBQUswRCxJQUFBQSxJQUFPOEwsS0FBSSxTQUFDQyxHQUFDLE9BQUsvTCxJQUFBQSxHQUFNK0wsRUFBRSxJQUM5QyxHQUNELElBVE1oTCxXQUFVd0ssU0FBVnhLLFdBQVliLFlBQVdxTCxTQUFYckwsWUFBYThFLElBQUd1RyxTQUFIdkcsSUFBS2xFLE1BQUt5SyxTQUFMekssTUFZdEMsT0FDRWdJLEVBQUFBLFlBQUFBLE1BQUNDLE1BQUFBLFNBQVEsQ0FBQXpKLFNBQUEsRUFDUEYsRUFBQUEsWUFBQUEsS0FBQzRKLG1CQUFBQSxFQUFRLENBQUNDLFNBQVMsV0FDbkI3SixFQUFBQSxZQUFBQSxLQUFBLE1BQUE3QyxPQUFBbUQsT0FBQSxDQUFLTCxVQUFVLGFBQWdCbUssTUFBSyxDQUFBbEssVUFDbENGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVEsQ0FDUDhCLFdBQVlBLFdBQ1piLFlBQWFBLFlBQ2JFLE9BQVFBLE9BQUFBLEVBQ1JpRSxVQUFXc0wsWUFDWDNLLElBQUtBLElBQ0w3QixtQkFBaUIsRUFDakI3QyxLQUFNLEdBQ05RLE1BQU9BLGFBS2pCLENBOUJ3Qm1QLE1BQUt0USxZQUFBLFFBQUFzUSxNQUFBeEosYUFBQSxvRUFBQUMsMEJBQUFBLHdCQUFBLHVDQUFBQyxLQUFBLFFBQUFDLFdBQUFxSixNQUFBeEosYUFBQUksS0FBQSx1Q0N4QnpCLElBU0osZUFDRTlILE1BQU8sV0FDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU0sUUFLTjdFLFdBQVl1TCxFQUFBQSxJQUFBQSxJQUFlSCxxQkFFcEJVLGVBQWlCLFNBQVNBLGlCQUNyQyxPQUFPL1EsRUFBQUEsWUFBQUEsS0FBQzZRLE1BQUssQ0FBQzVMLFVBQVdBLFdBQzNCLEVBRmE4TCxlQUFjeFEsWUFBRyxpQkFLOUJ3USxlQUFlM1UsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsNkVBQWlGOFIsZUFBZTNVLFlBQWEsSUFBQVUsb0JBQUEsbUJBQUFpVSxlQUFBMUosYUFBQSw2RUFBQUMsMEJBQUFBLHdCQUFBLG1DQUFBQyxLQUFBLGlCQUFBQyxXQUFBdUosZUFBQTFKLGFBQUFJLEtBQUEsa0Msd2pDQ3RCNUp1SixVQUFZck0sTUFBQUEsR0FBU3NNLFFBQVFDLFNBT3BCLFNBQVNDLFFBQ3RCLElBQUFsSixXQUFnQ0MsRUFBQUEsTUFBQUEsVUFBUzhJLFdBQVU3SSxZQUFBQyxFQUFBQSxjQUFBQSxHQUFBSCxVQUFBLEdBQTVDcUksU0FBUW5JLFdBQUEsR0FBRWlKLFlBQVdqSixXQUFBLEdBRTVCZ0UsVUFDRTFDLEVBQUFBLE1BQUFBLFVBQVEsV0FFTixPQURBNEgsTUFBQUEsR0FBU0MsWUFBY2hCLFNBQ2hCLENBQ0x4UCxhQVhTeVEsSUFGTSxhQUVEQyxZQVd1QjdNLE1BQUFBLEdBVnBDNk0sWUFBWUMsUUFBUUYsS0FBS0csWUFXMUJDLE9BQVEsU0FBQUEsU0FBQSxPQUFNaE4sTUFBQUEsR0FBU3NNLFFBQVFTLFVBQVUsRUFDekN6TSxXQUFXUCxFQUFBQSxJQUFBQSxJQUFlQyxNQUFBQSxJQUMxQjBELFVBQVFnQixFQUFBQSxrQkFBQUEsR0FBTXJJLE9BQUFBLEdBQ2RpRyxhQUFjdEMsTUFBQUEsR0FBU3NNLFFBQVFTLFlBZnZDLElBQWlCSCxJQUFLQyxXQWlCbEIsR0FBRyxDQUFDbEIsV0FWRXhQLFlBQVdxTCxTQUFYckwsWUFBYTZRLE9BQU14RixTQUFOd0YsT0FBUTFNLFVBQVNrSCxTQUFUbEgsVUFBV29ELFNBQVE4RCxTQUFSOUQsU0FBVXBCLGFBQVlrRixTQUFabEYsYUFrQmxELE9BTkEySyxFQUFBQSxNQUFBQSxZQUFVLFdBQ1IsT0FBTyxXQUNMUCxNQUFBQSxHQUFTQyxZQUFjTixTQUN6QixDQUNGLEdBQUcsS0FHRHRILEVBQUFBLFlBQUFBLE1BQUNDLE1BQUFBLFNBQVEsQ0FBQXpKLFNBQUEsRUFDUEYsRUFBQUEsWUFBQUEsS0FBQzRKLG1CQUFBQSxFQUFRLENBQUNDLFNBQVMsUUFBTzNKLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDNlIsZUFBQUEsRUFBYyxDQUNiYixVQUFXQSxVQUNYSSxZQUFhQSxZQUNiZCxTQUFVQSxTQUNWM1EsTUFBSywrQ0FHVEssRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRLENBQ1BpQixZQUFhQSxZQUNiSCxZQUFhQyxJQUFBQSxHQUFNYSxLQUNuQlQsT0FBUXFILFNBQ1JzSixPQUFRQSxPQUNSMU0sVUFBV0EsVUFDWGdDLGFBQWNBLG1CQUt4QixDQTNDd0JrSyxNQUFLNVEsWUFBQSxRQUFBNFEsTUFBQTlKLGFBQUEsb0VBQUFDLDBCQUFBQSx3QkFBQSx1Q0FBQUMsS0FBQSxRQUFBQyxXQUFBMkosTUFBQTlKLGFBQUFJLEtBQUEsdUNDWHpCLElBU0osZUFDRTlILE1BQU8sV0FDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU0sUUFLTjdFLFdBQVlQLEVBQUFBLElBQUFBLElBQWVDLE1BQUFBLElBRXBCbU4sZUFBaUIsU0FBU0EsaUJBQ3JDLE9BQU85UixFQUFBQSxZQUFBQSxLQUFDbVIsTUFBSyxDQUFDbE0sVUFBV0EsV0FDM0IsRUFGYTZNLGVBQWN2UixZQUFHLGlCQUs5QnVSLGVBQWUxVixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSw2RUFBaUY2UyxlQUFlMVYsWUFBYSxJQUFBVSxvQkFBQSxtQkFBQWdWLGVBQUF6SyxhQUFBLDZFQUFBQywwQkFBQUEsd0JBQUEsbUNBQUFDLEtBQUEsaUJBQUFDLFdBQUFzSyxlQUFBekssYUFBQUksS0FBQSxrQyxtbUNDeEJuSixTQUFTc0sseUJBQXdCaE4sTUFHN0MsSUFGREUsVUFBU0YsS0FBVEUsVUFBUytNLHNCQUFBak4sS0FDVGlDLG1CQUFBQSx3QkFBa0IsSUFBQWdMLHNCQUFHLGFBQVlBLHNCQUVqQy9KLFdBQThCQyxFQUFBQSxNQUFBQSxVQUFTbEgsT0FBQUEsR0FBT21ILFlBQUFDLEVBQUFBLGNBQUFBLEdBQUFILFVBQUEsR0FBdkNJLFNBQVFGLFdBQUEsR0FBRThKLFVBQVM5SixXQUFBLEdBRXBCK0osa0JBQW1CMUosRUFBQUEsTUFBQUEsY0FDdkIsU0FBQUMsT0FBb0IsSUFBakI1QyxNQUFLNEMsTUFBTDVDLE1BQU9DLElBQUcyQyxNQUFIM0MsSUFDRm5HLE1BQVF3UyxPQUFPQyxPQUFPLGtCQUN4QnpTLE9BQ0ZzUyxXQUFVLFNBQUNuSixNQUFJLFNBQUFNLFFBQUFDLEVBQUFBLGtCQUFBQSxHQUFTUCxNQUFJLENBQUUsQ0FBRWpELE1BQUFBLE1BQU9DLElBQUFBLElBQUtuRyxNQUFBQSxRQUFPLEdBRXZELEdBQ0EsQ0FBQ3NTLFlBR0dJLG1CQUFvQjdKLEVBQUFBLE1BQUFBLGNBQ3hCLFNBQUNFLE9BQUssT0FBS3lKLE9BQU9HLE1BQU01SixNQUFNL0ksTUFBTSxHQUNwQyxJQUdGd00sVUFBc0MxQyxFQUFBQSxNQUFBQSxVQUNwQyxpQkFBTyxDQUNMM0ksWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxJQUMvQmtHLGFBQWMsSUFBSWxHLEtBQUssS0FBTSxFQUFHLEVBQUcsR0FDcEMsR0FDRCxJQUxNRCxZQUFXcUwsU0FBWHJMLFlBQWFtRyxhQUFZa0YsU0FBWmxGLGFBUXJCLE9BQ0V5QyxFQUFBQSxZQUFBQSxNQUFDQyxNQUFBQSxTQUFRLENBQUF6SixTQUFBLEVBQ1BGLEVBQUFBLFlBQUFBLEtBQUM0SixtQkFBQUEsRUFBUSxDQUFDQyxTQUFTLDJCQUEwQjNKLFVBQzNDd0osRUFBQUEsWUFBQUEsTUFBQSxVQUFBeEosU0FBQSxDQUFRLHFHQUdORixFQUFBQSxZQUFBQSxLQUFBLFNBQU0saUVBSVZBLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQbUgsbUJBQW9CQSxtQkFDcEJsRyxZQUFhQSxZQUNiSCxZQUFhQyxJQUFBQSxHQUFNYSxLQUNuQlQsT0FBUXFILFNBQ1JwRCxVQUFXQSxVQUNYMUQsY0FBZThRLGtCQUNmekssYUFBY3NLLGlCQUNkdkssWUFBVSxFQUNWVixhQUFjQSxtQkFLeEIsQ0F0RHdCOEsseUJBQXdCeFIsWUFBQSwyQkFBQXdSLHlCQUFBMUssYUFBQSwwU0FBQUMsMEJBQUFBLHdCQUFBLDBEQUFBQyxLQUFBLDJCQUFBQyxXQUFBdUsseUJBQUExSyxhQUFBSSxLQUFBLDBEQ0Y1QyxJQVNKLG1CQUNFOUgsTUFBTyxXQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTSxRQUtON0UsV0FBWVQsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVyQjBGLFNBQVcsU0FBU0EsV0FDL0IsT0FBT2pLLEVBQUFBLFlBQUFBLEtBQUMrUix5QkFBd0IsQ0FBQzlNLFVBQVdBLFdBQzlDLEVBRmFnRixTQUFRMUosWUFBRyxXQUV0QjBKLFNBQVN2SixVQUFZLDBDQUl2QnVKLFNBQVM3TixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSwwRkFBOEZnTCxTQUFTN04sWUFBYSxJQUFBVSxvQkFBQSxhQUFBbU4sU0FBQTVDLGFBQUEsdUVBQUFDLDBCQUFBQSx3QkFBQSx1Q0FBQUMsS0FBQSxXQUFBQyxXQUFBeUMsU0FBQTVDLGFBQUFJLEtBQUEsc0MsdzBCQ3pCcEosU0FBUzhLLE1BQUt4TixNQUFnQixJQUFiRSxVQUFTRixLQUFURSxVQUN4Qm5FLGFBQWMySSxFQUFBQSxNQUFBQSxVQUFRLGtCQUFNLElBQUkxSSxLQUFLLEtBQU0sRUFBRyxFQUFFLEdBQUUsSUFDeEQsT0FDRTJJLEVBQUFBLFlBQUFBLE1BQUNDLE1BQUFBLFNBQVEsQ0FBQXpKLFNBQUEsRUFDUEYsRUFBQUEsWUFBQUEsS0FBQzRKLG1CQUFBQSxFQUFRLENBQUNDLFNBQVMsUUFBTzNKLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFBLFVBQUFFLFNBQVEsb0lBS1ZGLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQaUIsWUFBYUEsWUFDYkUsT0FBUUEsT0FBQUEsRUFDUmlFLFVBQVdBLFVBQ1g1RCxPQUFLLFFBS2YsQ0FwQndCa1IsTUFBS2hTLFlBQUEsUUFBQWdTLE1BQUFsTCxhQUFBLGtLQUFBQywwQkFBQUEsd0JBQUEsdUNBQUFDLEtBQUEsUUFBQUMsV0FBQStLLE1BQUFsTCxhQUFBSSxLQUFBLHVDQ0Z6QixJQVNKLGVBQ0U5SCxNQUFPLFdBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNLFFBS043RSxXQUFZVCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRXJCaU8sU0FBVyxTQUFTQSxXQUMvQixPQUFPeFMsRUFBQUEsWUFBQUEsS0FBQ3lTLE1BQVMsQ0FBQ3hOLFVBQVdBLFdBQy9CLEVBRmF1TixTQUFRalMsWUFBRyxXQUV0QmlTLFNBQVM5UixVQUFZLHdCQUl2QjhSLFNBQVNwVyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSwyRUFBK0V1VCxTQUFTcFcsWUFBYSxJQUFBVSxvQkFBQSxhQUFBMFYsU0FBQW5MLGFBQUEsdUVBQUFDLDBCQUFBQSx3QkFBQSxtQ0FBQUMsS0FBQSxXQUFBQyxXQUFBZ0wsU0FBQW5MLGFBQUFJLEtBQUEsa0MsMitCQ3hCcEosU0FBU2lMLE1BQUszTixNQUFZLElBQVQyRCxNQUFLM0QsS0FBTDJELE1BQ2YsT0FDRWdCLEVBQUFBLFlBQUFBLE1BQUEsUUFBQXhKLFNBQUEsRUFDRUYsRUFBQUEsWUFBQUEsS0FBQSxVQUFBRSxTQUFTd0ksTUFBTS9JLFFBQ2QrSSxNQUFNaUssTUFBUSxNQUFRakssTUFBTWlLLE9BR25DLENBS0EsU0FBU0MsWUFBV25LLE9BQVksSUFBVEMsTUFBS0QsTUFBTEMsTUFDckIsT0FDRWdCLEVBQUFBLFlBQUFBLE1BQUEsUUFBQXhKLFNBQUEsRUFDRUYsRUFBQUEsWUFBQUEsS0FBQSxNQUFJb00sTUFBTyxDQUFFM1AsTUFBTyxXQUFZeUQsU0FBRXdJLE1BQU0vSSxTQUN4Q0ssRUFBQUEsWUFBQUEsS0FBQSxLQUFBRSxTQUFJd0ksTUFBTWlLLFNBR2hCLENBbkJTRCxNQUFLblMsWUFBQSxRQVlMcVMsWUFBV3JTLFlBQUEsY0FZcEIsSUFBTXNTLG9CQUFzQixTQUF0QkEsb0JBQXVCblcsTUFDM0IsT0FBdUIsSUFBbkJBLEtBQUtvVyxXQUFzQyxLQUFuQnBXLEtBQUtvVyxVQUN4QixDQUNMN1MsVUFBVzhTLDJCQUFBQSxXQUNYM0csTUFBTyxDQUNMNEcsT0FBUSxjQUFtQyxJQUFuQnRXLEtBQUtvVyxVQUFrQixPQUFTLFVBR2xELENBQUMsQ0FDZixFQUVNRyxxQkFBdUIsU0FBdkJBLHFCQUF3QnZXLE1BQzVCLE9BQXVCLElBQW5CQSxLQUFLb1csV0FBc0MsS0FBbkJwVyxLQUFLb1csVUFDeEIsQ0FDTDdTLFVBQVc4UywyQkFBQUEsWUFFSCxDQUFDLENBQ2YsRUFFZSxTQUFTRyxVQUFTM0osT0FBZ0IsSUFBYnRFLFVBQVNzRSxNQUFUdEUsVUFDbENrSCxVQUFvQzFDLEVBQUFBLE1BQUFBLFVBQ2xDLGlCQUFPLENBQ0w5SCxXQUFZLENBQ1ZpTSxPQUFRLENBQ05sRixNQUFPa0ssYUFFVGxLLE1BQU9nSyxPQUVUNVIsWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxHQUNoQyxHQUNELElBVk1ZLFdBQVV3SyxTQUFWeEssV0FBWWIsWUFBV3FMLFNBQVhyTCxZQWFwQixPQUNFNEksRUFBQUEsWUFBQUEsTUFBQ0MsTUFBQUEsU0FBUSxDQUFBekosU0FBQSxFQUNQRixFQUFBQSxZQUFBQSxLQUFDNEosbUJBQUFBLEVBQVEsQ0FBQ0MsU0FBUyxlQUNuQjdKLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQOEIsV0FBWUEsV0FDWndSLGNBQWVOLG9CQUNmL1IsWUFBYUEsWUFDYkgsWUFBYUMsSUFBQUEsR0FBTTRCLE9BQ25CeEIsT0FBUUEsT0FBQUEsRUFDUmlFLFVBQVdBLFVBQ1htTyxlQUFnQkgsMkJBSzFCLENBOUJ3QkMsVUFBUzNTLFlBQUEsWUFBQTJTLFVBQUE3TCxhQUFBLHNLQUFBQywwQkFBQUEsd0JBQUEsMkNBQUFDLEtBQUEsWUFBQUMsV0FBQTBMLFVBQUE3TCxhQUFBSSxLQUFBLDJDQzlDN0IsSUFTSixtQkFDRTlILE1BQU8sV0FDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU0sUUFLTjdFLFdBQVlULEVBQUFBLElBQUFBLElBQWdCRCxrQkFFckI4TyxTQUFXLFNBQVNBLFdBQy9CLE9BQU9yVCxFQUFBQSxZQUFBQSxLQUFDa1QsVUFBUyxDQUFDak8sVUFBV0EsV0FDL0IsRUFGYW9PLFNBQVE5UyxZQUFHLFdBRXRCOFMsU0FBUzNTLFVBQVksaUNBSXZCMlMsU0FBU2pYLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLDJFQUErRW9VLFNBQVNqWCxZQUFhLElBQUFVLG9CQUFBLGFBQUF1VyxTQUFBaE0sYUFBQSx1RUFBQUMsMEJBQUFBLHdCQUFBLHVDQUFBQyxLQUFBLFdBQUFDLFdBQUE2TCxTQUFBaE0sYUFBQUksS0FBQSxzQyw0MkJDekI5SXpHLE9BQVMsQ0FDYixDQUNFOEYsR0FBSSxFQUNKbkgsTUFBTyxnQkFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQ25DK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FDbENzSyxXQUFZLEdBRWQsQ0FDRXZFLEdBQUksRUFDSm5ILE1BQU8sY0FDUG9HLFFBQVEsRUFDUkYsTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FDcEMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQUksR0FBSSxHQUNuQ3NLLFdBQVksR0FFZCxDQUNFdkUsR0FBSSxFQUNKbkgsTUFBTyxvQkFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQ3BDK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FDbkNzSyxXQUFZLENBQUMsRUFBRyxJQUVsQixDQUNFdkUsR0FBSSxHQUNKbkgsTUFBTyxpQkFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQ25DK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FDbkNzSyxXQUFZLElBSVZDLFlBQWMsQ0FDbEIsQ0FBRUQsV0FBWSxFQUFHRSxjQUFlLGNBQ2hDLENBQUVGLFdBQVksRUFBR0UsY0FBZSxpQkFDaEMsQ0FBRUYsV0FBWSxFQUFHRSxjQUFlLGtCQUNoQyxDQUFFRixXQUFZLEVBQUdFLGNBQWUsbUJBR25CLFNBQVMrSCxTQUFRdk8sTUFBZ0IsSUFBYkUsVUFBU0YsS0FBVEUsVUFDakNrSCxVQUErQjFDLEVBQUFBLE1BQUFBLFVBQzdCLGlCQUFPLENBQ0wzSSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLElBQy9CVyxNQUFPLENBQUMsTUFBTyxhQUNoQixHQUNELElBTE1aLFlBQVdxTCxTQUFYckwsWUFBYVksTUFBS3lLLFNBQUx6SyxNQVFyQixPQUNFZ0ksRUFBQUEsWUFBQUEsTUFBQ0MsTUFBQUEsU0FBUSxDQUFBekosU0FBQSxFQUNQRixFQUFBQSxZQUFBQSxLQUFDNEosbUJBQUFBLEVBQVEsQ0FBQ0MsU0FBUyxjQUNuQkgsRUFBQUEsWUFBQUEsTUFBQSxVQUFBeEosU0FBQSxDQUFRLGdDQUNzQkYsRUFBQUEsWUFBQUEsS0FBQzhLLGtCQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sdUJBQXNCbEQsU0FBQyx1QkFBNkIsTUFBQUYsRUFBQUEsWUFBQUEsS0FBQzhLLGtCQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sMEJBQXlCbEQsU0FBQywwQkFBOEIsU0FBS0YsRUFBQUEsWUFBQUEsS0FBQzhLLGtCQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sWUFBV2xELFNBQUMsY0FBa0IsNERBQzVQRixFQUFBQSxZQUFBQSxLQUFBLFNBQUssd0VBR1BBLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQaUIsWUFBYUEsWUFDYkgsWUFBYUMsSUFBQUEsR0FBTUMsSUFDbkJHLE9BQVFBLE9BQ1JpRSxVQUFXQSxVQUNYbEMsbUJBQW1CLGFBQ25CRixVQUFXeUksWUFDWHRJLHNCQUFzQixnQkFDdEI5QixLQUFNLEdBQ05RLE1BQU9BLFlBS2pCLENBaEN3QjRSLFNBQVEvUyxZQUFBLFdBQUErUyxTQUFBak0sYUFBQSxxS0FBQUMsMEJBQUFBLHdCQUFBLDBDQUFBQyxLQUFBLFdBQUFDLFdBQUE4TCxTQUFBak0sYUFBQUksS0FBQSwwQ0N6QzVCLElBU0osa0JBQ0U5SCxNQUFPLFdBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNLFFBS043RSxXQUFZVCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRXJCZ1AsVUFBWSxTQUFTQSxZQUNoQyxPQUFPdlQsRUFBQUEsWUFBQUEsS0FBQ3NULFNBQVEsQ0FBQ3JPLFVBQVdBLFdBQzlCLEVBRmFzTyxVQUFTaFQsWUFBRyxZQUV2QmdULFVBQVU3UyxVQUFZLHNCQUl4QjZTLFVBQVVuWCxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSwyRUFBK0VzVSxVQUFVblgsWUFBYSxJQUFBVSxvQkFBQSxjQUFBeVcsVUFBQWxNLGFBQUEsd0VBQUFDLDBCQUFBQSx3QkFBQSxzQ0FBQUMsS0FBQSxZQUFBQyxXQUFBK0wsVUFBQWxNLGFBQUFJLEtBQUEscUMscW1DQ3pCdkksU0FBUytMLFdBQVV6TyxNQUFnQixJQUFiRSxVQUFTRixLQUFURSxVQUNuQ2dELFdBQThCQyxFQUFBQSxNQUFBQSxVQUFTbEgsT0FBQUEsR0FBT21ILFlBQUFDLEVBQUFBLGNBQUFBLEdBQUFILFVBQUEsR0FBdkNJLFNBQVFGLFdBQUEsR0FBRThKLFVBQVM5SixXQUFBLEdBRXBCK0osa0JBQW1CMUosRUFBQUEsTUFBQUEsY0FDdkIsU0FBQUMsT0FBb0IsSUFBakI1QyxNQUFLNEMsTUFBTDVDLE1BQU9DLElBQUcyQyxNQUFIM0MsSUFDRm5HLE1BQVF3UyxPQUFPQyxPQUFPLGtCQUN4QnpTLE9BQ0ZzUyxXQUFVLFNBQUNuSixNQUFJLFNBQUFNLFFBQUFDLEVBQUFBLGtCQUFBQSxHQUFTUCxNQUFJLENBQUUsQ0FBRWpELE1BQUFBLE1BQU9DLElBQUFBLElBQUtuRyxNQUFBQSxRQUFPLEdBRXZELEdBQ0EsQ0FBQ3NTLFlBR0dJLG1CQUFvQjdKLEVBQUFBLE1BQUFBLGNBQ3hCLFNBQUNFLE9BQUssT0FBS3lKLE9BQU9HLE1BQU01SixNQUFNL0ksTUFBTSxHQUNwQyxJQUdGd00sVUFBc0MxQyxFQUFBQSxNQUFBQSxVQUNwQyxpQkFBTyxDQUNMM0ksWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxJQUMvQmtHLGFBQWMsSUFBSWxHLEtBQUssS0FBTSxFQUFHLEVBQUcsR0FDcEMsR0FDRCxJQUxNRCxZQUFXcUwsU0FBWHJMLFlBQWFtRyxhQUFZa0YsU0FBWmxGLGFBUXJCLE9BQ0V5QyxFQUFBQSxZQUFBQSxNQUFDQyxNQUFBQSxTQUFRLENBQUF6SixTQUFBLEVBQ1BGLEVBQUFBLFlBQUFBLEtBQUM0SixtQkFBQUEsRUFBUSxDQUFDQyxTQUFTLGFBQVkzSixVQUM3QkYsRUFBQUEsWUFBQUEsS0FBQSxVQUFBRSxTQUFRLHlHQUtWRixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVEsQ0FDUGlCLFlBQWFBLFlBQ2JILFlBQWFDLElBQUFBLEdBQU1hLEtBQ25CVCxPQUFRcUgsU0FDUnBELFVBQVdBLFVBQ1gxRCxjQUFlOFEsa0JBQ2Z6SyxhQUFjc0ssaUJBQ2R2SyxZQUFVLEVBQ1ZWLGFBQWNBLG1CQUt4QixDQWhEd0J1TSxXQUFValQsWUFBQSxhQUFBaVQsV0FBQW5NLGFBQUEsdUtBQUFDLDBCQUFBQSx3QkFBQSw0Q0FBQUMsS0FBQSxhQUFBQyxXQUFBZ00sV0FBQW5NLGFBQUFJLEtBQUEsNENDRjlCLElBU0osb0JBQ0U5SCxNQUFPLFdBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNLFFBS043RSxXQUFZVCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRXJCaUksU0FBVyxTQUFTQSxXQUMvQixPQUFPeE0sRUFBQUEsWUFBQUEsS0FBQ3dULFdBQVUsQ0FBQ3ZPLFVBQVdBLFdBQ2hDLEVBRmF1SCxTQUFRak0sWUFBRyxXQUV0QmlNLFNBQVM5TCxVQUFZLGdCQUl2QjhMLFNBQVNwUSxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSw0RUFBZ0Z1TixTQUFTcFEsWUFBYSxJQUFBVSxvQkFBQSxhQUFBMFAsU0FBQW5GLGFBQUEsdUVBQUFDLDBCQUFBQSx3QkFBQSx3Q0FBQUMsS0FBQSxXQUFBQyxXQUFBZ0YsU0FBQW5GLGFBQUFJLEtBQUEsdUMsZzFCQ3pCdEksU0FBU2dNLFVBQVMxTyxNQUFnQixJQUFiRSxVQUFTRixLQUFURSxVQUM1Qm5FLGFBQWMySSxFQUFBQSxNQUFBQSxVQUFRLGtCQUFNLElBQUkxSSxLQUFLLEtBQU0sRUFBRyxHQUFHLEdBQUUsSUFDekQsT0FDRTJJLEVBQUFBLFlBQUFBLE1BQUNDLE1BQUFBLFNBQVEsQ0FBQXpKLFNBQUEsRUFDUEYsRUFBQUEsWUFBQUEsS0FBQzRKLG1CQUFBQSxFQUFRLENBQUNDLFNBQVMsZUFDbkI3SixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVEsQ0FDUGlCLFlBQWFBLFlBQ2JILFlBQWFDLElBQUFBLEdBQU1hLEtBQ25CVCxPQUFRQSxPQUFBQSxFQUNSaUUsVUFBV0EsVUFDWC9ELEtBQU0sR0FDTjJDLFVBQVcsUUFLckIsQ0FqQndCNFAsVUFBU2xULFlBQUEsWUFBQWtULFVBQUFwTSxhQUFBLHNLQUFBQywwQkFBQUEsd0JBQUEsMkNBQUFDLEtBQUEsWUFBQUMsV0FBQWlNLFVBQUFwTSxhQUFBSSxLQUFBLDJDQ0Y3QixJQVNKLG1CQUNFOUgsTUFBTyxXQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTSxRQUtON0UsV0FBWVQsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVyQm1QLFNBQVcsU0FBU0EsV0FDL0IsT0FBTzFULEVBQUFBLFlBQUFBLEtBQUN5VCxVQUFTLENBQUN4TyxVQUFXQSxXQUMvQixFQUZheU8sU0FBUW5ULFlBQUcsV0FFdEJtVCxTQUFTaFQsVUFBWSxZQUl2QmdULFNBQVN0WCxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSwyRUFBK0V5VSxTQUFTdFgsWUFBYSxJQUFBVSxvQkFBQSxhQUFBNFcsU0FBQXJNLGFBQUEsdUVBQUFDLDBCQUFBQSx3QkFBQSx1Q0FBQUMsS0FBQSxXQUFBQyxXQUFBa00sU0FBQXJNLGFBQUFJLEtBQUEsc0MsaXFDQ3ZCOUl1SixVQUFZek0saUJBQUFBLEdBQVVvUCxRQU9iLFNBQVNDLFlBQ3RCLElBQUEzTCxXQUFnQ0MsRUFBQUEsTUFBQUEsVUFBUzhJLFdBQVU3SSxZQUFBQyxFQUFBQSxjQUFBQSxHQUFBSCxVQUFBLEdBQTVDcUksU0FBUW5JLFdBQUEsR0FBRWlKLFlBQVdqSixXQUFBLEdBRTVCZ0UsVUFDRTFDLEVBQUFBLE1BQUFBLFVBQVEsV0FFTixPQURBbEYsaUJBQUFBLEdBQVVzUCxXQUFXdkQsVUFDZCxDQUNMeFAsYUFYU3lRLElBRk0sWUFFRHVDLFVBV3VCdlAsaUJBVnBDdVAsVUFBVXZDLElBQUssY0FBYzVMLFVBVzlCZ00sT0FBUSxTQUFBQSxTQUFBLE9BQU1wTixtQkFBU29CLFFBQVEsRUFDL0JWLFdBQVdULEVBQUFBLElBQUFBLElBQWdCRCxrQkFDM0I4RCxVQUFRZ0IsRUFBQUEsa0JBQUFBLEdBQU1ySSxPQUFBQSxHQUNkaUcsYUFBYzFDLG1CQUFTb0IsVUFmL0IsSUFBaUI0TCxJQUFLdUMsU0FpQmxCLEdBQUcsQ0FBQ3hELFdBVkV4UCxZQUFXcUwsU0FBWHJMLFlBQWE2USxPQUFNeEYsU0FBTndGLE9BQVExTSxVQUFTa0gsU0FBVGxILFVBQVdvRCxTQUFROEQsU0FBUjlELFNBQVVwQixhQUFZa0YsU0FBWmxGLGFBa0JsRCxPQU5BMkssRUFBQUEsTUFBQUEsWUFBVSxXQUNSLE9BQU8sV0FDTHJOLGlCQUFBQSxHQUFVc1AsWUFDWixDQUNGLEdBQUcsS0FHRG5LLEVBQUFBLFlBQUFBLE1BQUNDLE1BQUFBLFNBQVEsQ0FBQXpKLFNBQUEsRUFDUEYsRUFBQUEsWUFBQUEsS0FBQzRKLG1CQUFBQSxFQUFRLENBQUNDLFNBQVMsWUFBVzNKLFVBQzVCRixFQUFBQSxZQUFBQSxLQUFDNlIsZUFBQUEsRUFBYyxDQUNiYixVQUFXQSxVQUNYSSxZQUFhQSxZQUNiZCxTQUFVQSxjQUdkdFEsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRLENBQ1BpQixZQUFhQSxZQUNiSCxZQUFhQyxJQUFBQSxHQUFNYSxLQUNuQlQsT0FBUXFILFNBQ1JzSixPQUFRQSxPQUNSMU0sVUFBV0EsVUFDWGdDLGFBQWNBLG1CQUt4QixDQTFDd0IyTSxVQUFTclQsWUFBQSxZQUFBcVQsVUFBQXZNLGFBQUEsd0VBQUFDLDBCQUFBQSx3QkFBQSwyQ0FBQUMsS0FBQSxZQUFBQyxXQUFBb00sVUFBQXZNLGFBQUFJLEtBQUEsMkNDWDdCLElBUUosbUJBQ0U5SCxNQUFPLFdBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNLFFBS0NpSyxTQUFXLFNBQVNBLFdBQy9CLE9BQU8vVCxFQUFBQSxZQUFBQSxLQUFDZ1UsVUFBZ0IsR0FDMUIsRUFGYUQsU0FBUXhULFlBQUcsV0FFdEJ3VCxTQUFTclQsVUFBWSxZQUl2QnFULFNBQVMzWCxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSw0REFBZ0U4VSxTQUFTM1gsWUFBYSxJQUFBVSxvQkFBQSxhQUFBaVgsU0FBQTFNLGFBQUEsdUVBQUFDLDBCQUFBQSx3QkFBQSx1Q0FBQUMsS0FBQSxXQUFBQyxXQUFBdU0sU0FBQTFNLGFBQUFJLEtBQUEsc0Msb2xDQ25CckksSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxrQkFBZ0IsbUJBRXhCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGtEQUN6REgsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksdUJBRXJCSCxFQUFBQSxJQUFBQSxJQUFBLHFIQUErR0EsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsV0FBeUIsWUFDbEtILEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLDBCQUEwQnlELFFBQVEsVUFFaEQsQ0FoQndCSixXQUFVNUosWUFBQSxhQWtCbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNsQjVCLHdCQUNFOUssTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYeUYsU0FBVSxDQUNSTCxVQUFXLENBQUVPLFFBQVMsQ0FBRUMsS0FBTSxPQUM5QnpFLE9BQVEsQ0FBRXdFLFFBQVMsQ0FBRUMsS0FBTSxPQUMzQjNFLFlBQWEsQ0FBRTBFLFFBQVMsQ0FBRUMsS0FBTSxRQUVsQ3JKLFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS05sSyxTQUFXLFNBQVhBLFNBQVlDLE1BQUksT0FDcEJKLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUTFDLE9BQUFtRCxPQUFBLEdBQUtGLFFBQ1YsRUFIRkQsU0FBUUksWUFBRyxXQU1WLElBQU0wVCxlQUFpQjlULFNBQVNNLEtBQUssQ0FBQyxHQUFHd1QsZUFBZXZULFVBQVksaUJBQzNFdVQsZUFBZTdULEtBQU84VCxjQUFBQSxFQUl0QkQsZUFBZTdYLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHdGQUE4RmdWLGVBQWU3WCxZQUFhLElBQUFVLG9CQUFBLGtCLCtvQkN2Qy9LLGNBQ0UsQ0FDRWdLLEdBQUksRUFDSm5ILE1BQU8sZ0NBQ1BvRyxRQUFRLEVBQ1JGLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQ3pCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsSUFFekIsQ0FDRStGLEdBQUksRUFDSm5ILE1BQU8sbUNBQ1BvRyxRQUFRLEVBQ1JGLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQ3pCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsSUFFekIsQ0FDRStGLEdBQUksRUFDSm5ILE1BQU8sbUNBQ1BvRyxRQUFRLEVBQ1JGLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQ3pCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsSUFFekIsQ0FDRStGLEdBQUksRUFDSm5ILE1BQU8sbUJBQ1BvRyxRQUFRLEVBQ1JGLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQ3pCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsSUFFekIsQ0FDRStGLEdBQUksRUFDSm5ILE1BQU8sbUJBQ1BvRyxRQUFRLEVBQ1JGLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQ3pCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsSUFFekIsQ0FDRStGLEdBQUksRUFDSm5ILE1BQU8sbUJBQ1BvRyxRQUFRLEVBQ1JGLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQ3pCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsSyxzZUNoQzNCLElBQU1tSixZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0saUJBQWUsa0JBRXZCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLFlBQ3pESCxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxlQUU5REgsRUFBQUEsSUFBQUEsSUFBQSxrSUFBNEhBLEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFlBQTBCLDBDQUNoTEgsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsMEJBQTBCeUQsUUFBUSxVQUVoRCxDQWhCd0JKLFdBQVU1SixZQUFBLGFBa0JsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ2pCdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQyx1QkFDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHlGLFNBQVUsQ0FDUkwsVUFBVyxDQUFFTyxRQUFTLENBQUVDLEtBQU0sT0FDOUJ6RSxPQUFRLENBQUV3RSxRQUFTLENBQUVDLEtBQU0sT0FDM0IzRSxZQUFhLENBQUUwRSxRQUFTLENBQUVDLEtBQU0sUUFFbENySixXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtObEssU0FBVyxTQUFYQSxTQUFZQyxNQUFJLE9BQ3BCSixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVExQyxPQUFBbUQsT0FBQSxHQUFLRixRQUNWLEVBSEZELFNBQVFJLFlBQUcsV0FNVixJQUFNNlQsY0FBZ0JqVSxTQUFTTSxLQUFLLENBQUMsR0FBRzJULGNBQWMxVCxVQUFZLGdCQUN6RTBULGNBQWNoVSxLQUFPLENBQ25CVSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLEdBQy9CSixZQUFhQyxJQUFBQSxHQUFNYSxLQUNuQlQsT0FBUXFULGFBQ1JwUCxVQUFXa1AsV0FDWEcsY0FBZSxFQUNmalQsT0FBTyxHQUtUK1MsY0FBY2hZLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHdGQUE4Rm1WLGNBQWNoWSxZQUFhLElBQUFVLG9CQUFBLGlCLDJyQ0N4QzdLLElBQU1vTixZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sb0JBQWtCLHFCQUUxQkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSw4QkFDekRILEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLFNBRTlESCxFQUFBQSxJQUFBQSxJQUFBLDBYQUtBQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGVBQ25CSCxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxjQUVyQkgsRUFBQUEsSUFBQUEsSUFBQSwwTEFHQUEsRUFBQUEsSUFBQUEsSUFBQSxZQUFLQSxFQUFBQSxJQUFBQSxJQUFBLFFBQU1HLFdBQVcsTUFDbEIsVUFBYSxlQUFhLDBEQU05QkgsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsNEJBQTRCeUQsUUFBUSxVQUVsRCxDQWxDd0JKLFdBQVU1SixZQUFBLGFBb0NsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ25DdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQywwQkFDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHlGLFNBQVUsQ0FDUkwsVUFBVyxDQUFFTyxRQUFTLENBQUVDLEtBQU0sT0FDOUJ6RSxPQUFRLENBQUV3RSxRQUFTLENBQUVDLEtBQU0sT0FDM0I5RSxZQUFhLENBQ1g2RSxRQUFTLENBQ1BDLEtBQU0sUUFJWnJKLFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS05sSyxTQUFXLFNBQVhBLFNBQVlDLE1BQUksT0FDcEJKLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUTFDLE9BQUFtRCxPQUFBLEdBQUtGLFFBQ1YsRUFIRkQsU0FBUUksWUFBRyxXQU1WLElBQU1nVSxpQkFBbUJwVSxTQUFTTSxLQUFLLENBQUMsR0FBRzhULGlCQUFpQjdULFVBQVksbUJBQy9FNlQsaUJBQWlCblUsS0FBTyxDQUN0QitHLGlCQUFBQSxRQUFBQSxHQUNBeEcsWUFBYUMsSUFBQUEsR0FBTWEsS0FDbkJULE9BQUFBLFFBQUFBLEdBQ0FpRSxVQUFXa1AsWUFLYkksaUJBQWlCblksV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsd0ZBQThGc1YsaUJBQWlCblksWUFBYSxJQUFBVSxvQkFBQSxvQixtdkNDekNuTCxJQUFNb04sWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLGNBQVksZUFFcEJBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksYUFFM0RILEVBQUFBLElBQUFBLElBQUEsZ1BBQ0FBLEVBQUFBLElBQUFBLElBQUEsWUFBS0EsRUFBQUEsSUFBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsZ0JBQWMsMjFCQWdDL0JILEVBQUFBLElBQUFBLElBQUNtSyxTQUFBQSxHQUFNLENBQUNqSyxRQUFRLFdBQ2xCRixFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyxvQkFBb0J5RCxRQUFRLFdBR3hDLENBbER3QkosV0FBVTVKLFlBQUEsYUFvRGxDNEosV0FBV00sZ0JBQWlCLEUsa05DN0Q1QixTQUFTZ0ssZUFBYzFQLE1BQStDLElBQXJDMlAsVUFBUzNQLEtBQWhCckQsTUFBa0JpVCxLQUFJNVAsS0FBSjRQLEtBQU1sUyxTQUFRc0MsS0FBUnRDLFNBQVVtUyxPQUFNN1AsS0FBTjZQLE9BQzFELE9BQU9GLFVBQVVoSSxLQUFJLFNBQUNuRixNQUFJLE9BQ3hCdkgsRUFBQUEsWUFBQUEsS0FBQSxVQUNFeUYsS0FBSyxTQUVMeEYsV0FBVzRVLEVBQUFBLE9BQUFBLEdBQUssQ0FBRSxhQUFjRixPQUFTcE4sT0FDekN1TixRQUFTLFNBQUFBLFVBQUEsT0FBTUYsT0FBT3JOLEtBQUssRUFBQ3JILFNBRTNCdUMsU0FBUzhFLE9BSkxBLEtBS0UsR0FFYixDQVFlLFNBQVN3TixjQUFhdE0sT0FRbEMsSUFORHVNLE1BQUt2TSxNQUFMdU0sTUFDYXZTLFNBQVFnRyxNQUFyQnhELFVBQWF4QyxTQUNid1MsV0FBVXhNLE1BQVZ3TSxXQUNBTCxPQUFNbk0sTUFBTm1NLE9BQ0FELEtBQUlsTSxNQUFKa00sS0FDQWpULE1BQUsrRyxNQUFML0csTUFFQSxPQUNFZ0ksRUFBQUEsWUFBQUEsTUFBQSxPQUFLekosVUFBVSxjQUFhQyxTQUFBLEVBQzFCRixFQUFBQSxZQUFBQSxLQUFBLFFBQU1DLFVBQVUsZ0JBQWVDLFVBQzdCRixFQUFBQSxZQUFBQSxLQUFDeVUsZUFBYyxDQUNiRSxLQUFNQSxLQUNOalQsTUFBT0EsTUFDUGUsU0FBVUEsU0FDVm1TLE9BQVFBLFlBSVo1VSxFQUFBQSxZQUFBQSxLQUFBLFFBQU1DLFVBQVUsb0JBQW1CQyxTQUFFOFUsU0FFckN0TCxFQUFBQSxZQUFBQSxNQUFBLFFBQU16SixXQUFXNFUsRUFBQUEsT0FBQUEsR0FBSyxnQkFBaUIsNEJBQTRCM1UsU0FBQSxFQUNqRUYsRUFBQUEsWUFBQUEsS0FBQSxVQUNFeUYsS0FBSyxTQUNMcVAsUUFBUyxTQUFBQSxVQUFBLE9BQU1HLFdBQVdsRixJQUFBQSxHQUFTRSxTQUFTLEVBQzVDLGFBQVl4TixTQUFTZ0wsU0FBU3ZOLFNBQy9CLE9BR0RGLEVBQUFBLFlBQUFBLEtBQUEsVUFDRXlGLEtBQUssU0FDTHFQLFFBQVMsU0FBQUEsVUFBQSxPQUFNRyxXQUFXbEYsSUFBQUEsR0FBU21GLE1BQU0sRUFDekMsYUFBWXpTLFNBQVNrTCxNQUFNek4sU0FDNUIsT0FHREYsRUFBQUEsWUFBQUEsS0FBQSxVQUNFeUYsS0FBSyxTQUNMcVAsUUFBUyxTQUFBQSxVQUFBLE9BQU1HLFdBQVdsRixJQUFBQSxHQUFTRyxLQUFLLEVBQ3hDLGFBQVl6TixTQUFTaUwsS0FBS3hOLFNBQzNCLFdBTVQsQ0EvQ3dCNlUsY0FBYXhVLFlBQUEsZ0JBQUF3VSxjQUFBMU4sYUFBQSwyaUJBQUFDLDBCQUFBQSx3QkFBQSw4REFBQUMsS0FBQSxnQkFBQUMsV0FBQXVOLGNBQUExTixhQUFBSSxLQUFBLDhELGtFQ1IvQjBNLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLG9CQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLQzhLLFdBQWEsU0FBU0EsYUFDakMsSUFBQWhKLFVBQW9DMUMsRUFBQUEsTUFBQUEsVUFDbEMsaUJBQU8sQ0FDTDlILFdBQVksQ0FDVnlULFFBQVNMLGVBRVhqVSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLElBQ2hDLEdBQ0QsSUFQTVksV0FBVXdLLFNBQVZ4SyxXQUFZYixZQUFXcUwsU0FBWHJMLFlBVXBCLE9BQ0VkLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQaUIsWUFBYUEsWUFDYkUsT0FBUU0sT0FBQUEsRUFDUjJELFVBQVdrUCxXQUNYeFMsV0FBWUEsY0FJcEIsRUFyQmF3VCxXQUFVNVUsWUFBRyxhQXFCeEI0VSxXQUFXelUsVUFBWSxhQUl6QnlVLFdBQVcvWSxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSwwYkFBZ2NrVyxXQUFXL1ksWUFBYSxJQUFBVSxvQkFBQSxlQUFBcVksV0FBQTlOLGFBQUEseUVBQUFDLDBCQUFBQSx3QkFBQSx3Q0FBQUMsS0FBQSxhQUFBQyxXQUFBMk4sV0FBQTlOLGFBQUFJLEtBQUEsdUMsaXZDQzNDemdCLElBQU15QyxZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sV0FBUyxZQUVqQkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxZQUN6REgsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksYUFBY0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksNkJBRTlESCxFQUFBQSxJQUFBQSxJQUFBLG1FQUE2REEsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsV0FBeUIsZ0JBQWdCSCxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLFVBQVVtSCxRQUFRLFVBQVEsV0FBcUIsZUFBZUYsRUFBQUEsSUFBQUEsSUFBQ1Msa0JBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxZQUFZbUgsUUFBUSxVQUFRLGFBQXVCLHVGQUF1RkYsRUFBQUEsSUFBQUEsSUFBQ1Msa0JBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxXQUFXbUgsUUFBUSxVQUFRLFlBQXNCLFdBQzFjRixFQUFBQSxJQUFBQSxJQUFBLHFCQUFlQSxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFdBQVczSCxNQUFNLFlBQVltSCxRQUFRLFVBQVEsd0JBQWtDLHNDQUFzQ0YsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsT0FBcUIsTUFBTUgsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsYUFBMkIsTUFBTUgsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsV0FBeUIsU0FBU0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsWUFBMEIsTUFDalhILEVBQUFBLElBQUFBLElBQUEsVUFBR0EsRUFBQUEsSUFBQUEsSUFBQSxVQUFRRyxXQUFXLEtBQUcsZ0ZBQ3pCSCxFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyxpQkFBaUJ5RCxRQUFRLFVBRXZDLENBbEJ3QkosV0FBVTVKLFlBQUEsYUFvQmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDcEJ0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLGlCQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYeUYsU0FBVSxDQUNSTCxVQUFXLENBQUVPLFFBQVMsQ0FBRUMsS0FBTSxPQUM5QjNFLFlBQWEsQ0FBRTBFLFFBQVMsQ0FBRUMsS0FBTSxPQUNoQ3pFLE9BQVEsQ0FBRXdFLFFBQVMsQ0FBRUMsS0FBTSxPQUMzQndJLFFBQVMsQ0FDUDFJLFFBQVMsQ0FBQyxLQUFNLEtBQU0sUUFBUyxTQUMvQkMsUUFBUyxDQUNQQyxLQUFNLFlBSVpySixXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtObEssU0FBVyxTQUFYQSxTQUFZQyxNQUFJLE9BQ3BCSixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVExQyxPQUFBbUQsT0FBQSxHQUFLRixRQUNWLEVBSEZELFNBQVFJLFlBQUcsV0FNVixJQUFNOFUsUUFBVWxWLFNBQVNNLEtBQUssQ0FBQyxHQUFHNFUsUUFBUTNVLFVBQVksVUFDN0QyVSxRQUFRalYsS0FBTyxDQUNiVSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLElBQy9CQyxPQUFRTSxPQUFBQSxFQUNSMkQsVUFBV2tQLFdBQ1hsRyxRQUFTLE1BS1hvSCxRQUFRalosV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsd0ZBQThGb1csUUFBUWpaLFlBQWEsSUFBQVUsb0JBQUEsVyxtMUNDM0NqSyxJQUFNb04sWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLFFBQU0sU0FFZEEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxzQkFDekRILEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGdCQUM1REgsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksbUJBQW9CSCxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGNBQWNtSCxRQUFRLFVBQVEsaUJBRWxHRixFQUFBQSxJQUFBQSxJQUFBLDRGQUNDQSxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxRQUFzQixtQ0FBbUNILEVBQUFBLElBQUFBLElBQUNTLGtCQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sVUFBVW1ILFFBQVEsVUFBUSxVQUFvQixtREFFN0pGLEVBQUFBLElBQUFBLElBQUEscURBQStDQSxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGNBQWNtSCxRQUFRLFVBQVEsZ0JBQ3hHRixFQUFBQSxJQUFBQSxJQUFDbUssU0FBQUEsR0FBTSxDQUFDakssUUFBUSxXQUNsQkYsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsa0JBQWtCeUQsUUFBUSxXQUd0QyxDQXRCd0JKLFdBQVU1SixZQUFBLGFBd0JsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ3hCdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQyxjQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLQ2lMLFFBQVUsU0FBU0EsVUFDOUIsSUFBQXJOLFdBQXdCQyxFQUFBQSxNQUFBQSxVQUFTLElBQUluSCxLQUFLLEtBQU0sRUFBRyxJQUFHb0gsWUFBQUMsRUFBQUEsY0FBQUEsR0FBQUgsVUFBQSxHQUEvQ3ZMLEtBQUl5TCxXQUFBLEdBQUVvTixRQUFPcE4sV0FBQSxHQUVkOE0sWUFBYXpNLEVBQUFBLE1BQUFBLGNBQVksU0FBQ2dOLFNBQU8sT0FBS0QsUUFBUUMsUUFBUSxHQUFFLENBQUNELFVBRS9ELE9BQ0V2VixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVEsQ0FDUG5ELEtBQU1BLEtBQ05zRSxPQUFRTSxPQUFBQSxFQUNSMkQsVUFBV2tQLFdBQ1hjLFdBQVlBLGNBSXBCLEVBZmFLLFFBQU8vVSxZQUFHLFVBZXJCK1UsUUFBUTVVLFVBQVksT0FJdEI0VSxRQUFRbFosV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsa1hBQXdYcVcsUUFBUWxaLFlBQWEsSUFBQVUsb0JBQUEsWUFBQXdZLFFBQUFqTyxhQUFBLHNFQUFBQywwQkFBQUEsd0JBQUEsa0NBQUFDLEtBQUEsVUFBQUMsV0FBQThOLFFBQUFqTyxhQUFBSSxLQUFBLGlDLHFzQ0NwQzNiLElBQU15QyxZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sc0JBQW9CLHVCQUU1QkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSwrRUFDekRILEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGNBRTlESCxFQUFBQSxJQUFBQSxJQUFBLHdEQUNBQSxFQUFBQSxJQUFBQSxJQUFBLFVBQUdBLEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFdBQXlCLHFDQUN0REgsRUFBQUEsSUFBQUEsSUFBQSxVQUFHQSxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxjQUE0QixzQ0FDekRILEVBQUFBLElBQUFBLElBQUEsdUJBQWlCQSxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxzRUFDM0NILEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLDhCQUE4QnlELFFBQVEsVUFFcEQsQ0FuQndCSixXQUFVNUosWUFBQSxhQXFCbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNwQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsNEJBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h5RixTQUFVLENBQ1JMLFVBQVcsQ0FBRU8sUUFBUyxDQUFFQyxLQUFNLE9BQzlCM0UsWUFBYSxDQUFFMEUsUUFBUyxDQUFFQyxLQUFNLE9BQ2hDOUUsWUFBYSxDQUFFNkUsUUFBUyxDQUFFQyxLQUFNLE9BQ2hDekUsT0FBUSxDQUFFd0UsUUFBUyxDQUFFQyxLQUFNLE9BQzNCdUIsbUJBQW9CLENBQ2xCekIsUUFBUyxDQUFDLFVBQVcsY0FDckJDLFFBQVMsQ0FDUEMsS0FBTSxZQUlackosV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLTmxLLFNBQVcsU0FBWEEsU0FBWUMsTUFBSSxPQUNwQkosRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRMUMsT0FBQW1ELE9BQUEsR0FBS0YsUUFDVixFQUhGRCxTQUFRSSxZQUFHLFdBTVYsSUFBTWtWLG1CQUFxQnRWLFNBQVNNLEtBQUssQ0FBQyxHQUFHZ1YsbUJBQW1CL1UsVUFBWSxxQkFDbkYrVSxtQkFBbUJyVixLQUFPLENBQ3hCVSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLElBQy9CSixZQUFhQyxJQUFBQSxHQUFNYSxLQUNuQlQsT0FBUU0sT0FBQUEsRUFDUjJELFVBQVdrUCxXQUNYbk4sbUJBQW9CLGNBS3RCeU8sbUJBQW1CclosV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsd0ZBQThGd1csbUJBQW1CclosWUFBYSxJQUFBVSxvQkFBQSxzQiwrdkNDN0N2TCxJQUFNb04sWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLGlCQUFlLGtCQUV2QkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxvRUFFM0RILEVBQUFBLElBQUFBLElBQUEsdUlBQ0FBLEVBQUFBLElBQUFBLElBQUEsVUFBR0EsRUFBQUEsSUFBQUEsSUFBQSxVQUFRRyxXQUFXLEtBQUcsWUFBc0Isc0ZBQy9DSCxFQUFBQSxJQUFBQSxJQUFDbUssU0FBQUEsR0FBTSxDQUFDakssUUFBUSxXQUNsQkYsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcseUJBQXlCeUQsUUFBUSxXQUc3QyxDQWxCd0JKLFdBQVU1SixZQUFBLGFBb0JsQzRKLFdBQVdNLGdCQUFpQixFLHNJQ25CdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQyx1QkFDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS0NxTCxjQUFnQixTQUFTQSxnQkFDcEMsSUFBTXZDLGVBQWdCM0ssRUFBQUEsTUFBQUEsY0FDcEIsU0FBQzlMLE1BQUksT0FBQVMsT0FBQW1ELE9BQUEsR0FDd0IsSUFBdkJpRSxpQkFBTzdILE1BQU02USxPQUFlLENBQzlCdE4sVUFBVyxXQUVjLElBQXZCc0UsaUJBQU83SCxNQUFNNlEsT0FBZSxDQUM5Qm5CLE1BQU8sQ0FDTHdFLGdCQUFpQixZQUNqQm5VLE1BQU8sVUFFVixHQUVILElBR0lxRSxhQUFjMkksRUFBQUEsTUFBQUEsVUFBUSxrQkFBTSxJQUFJMUksS0FBSyxLQUFNLEVBQUcsR0FBRyxHQUFFLElBRXpELE9BQ0VmLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQaUIsWUFBYUEsWUFDYkgsWUFBYUMsSUFBQUEsR0FBTWEsS0FDbkIwUixjQUFlQSxjQUNmblMsT0FBUU0sT0FBQUEsRUFDUjJELFVBQVdrUCxjQUluQixFQTdCYXVCLGNBQWFuVixZQUFHLGdCQTZCM0JtVixjQUFjaFYsVUFBWSxnQkFJNUJnVixjQUFjdFosV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsaXFCQUFxcUJ5VyxjQUFjdFosWUFBYSxJQUFBVSxvQkFBQSxrQkFBQTRZLGNBQUFyTyxhQUFBLDRFQUFBQywwQkFBQUEsd0JBQUEsMkNBQUFDLEtBQUEsZ0JBQUFDLFdBQUFrTyxjQUFBck8sYUFBQUksS0FBQSwwQyx5cUNDbkRwdkIsSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxlQUFhLGdCQUVyQkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxzQkFDekRILEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGlCQUU5REgsRUFBQUEsSUFBQUEsSUFBQSw4QkFBd0JBLEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFFBQXNCLGlGQUFpRkgsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsVUFBd0IscUJBQXFCSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxRQUFzQixNQUNoUkgsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsc0JBQXNCeUQsUUFBUSxVQUU1QyxDQWhCd0JKLFdBQVU1SixZQUFBLGFBa0JsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ2pCdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQyxxQkFDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHlGLFNBQVUsQ0FDUkwsVUFBVyxDQUFFTyxRQUFTLENBQUVDLEtBQU0sT0FDOUJ6RSxPQUFRLENBQUV3RSxRQUFTLENBQUVDLEtBQU0sT0FDM0I5RSxZQUFhLENBQ1g2RSxRQUFTLENBQ1BDLEtBQU0sUUFJWnJKLFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS05sSyxTQUFXLFNBQVhBLFNBQVlDLE1BQUksT0FDcEJKLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUTFDLE9BQUFtRCxPQUFBLEdBQUtGLFFBQ1YsRUFIRkQsU0FBUUksWUFBRyxXQU1WLElBQU1vVixZQUFjeFYsU0FBU00sS0FBSyxDQUFDLEdBQUdrVixZQUFZalYsVUFBWSxjQUNyRWlWLFlBQVl2VixLQUFPLENBQ2pCVSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLElBQy9CSixZQUFhQyxJQUFBQSxHQUFNQyxJQUNuQkcsT0FBUU0sT0FBQUEsRUFDUjJELFVBQVdrUCxZQUtid0IsWUFBWXZaLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHdGQUE4RjBXLFlBQVl2WixZQUFhLElBQUFVLG9CQUFBLGUsaXZDQ3pDekssSUFBTW9OLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxlQUFhLGdCQUVyQkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxZQUN6REgsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksYUFBY0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksb0RBRTlESCxFQUFBQSxJQUFBQSxJQUFBLHlCQUFtQkEsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsUUFBc0IsK0VBQ25FSCxFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyxzQkFBc0J5RCxRQUFRLFVBRTVDLENBaEJ3QkosV0FBVTVKLFlBQUEsYUFrQmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDbEJ0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLHFCQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYeUYsU0FBVSxDQUNSTCxVQUFXLENBQUVPLFFBQVMsQ0FBRUMsS0FBTSxPQUM5QnpFLE9BQVEsQ0FBRXdFLFFBQVMsQ0FBRUMsS0FBTSxPQUMzQjNFLFlBQWEsQ0FDWDBFLFFBQVMsQ0FDUEMsS0FBTSxRQUlackosV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLTmxLLFNBQVcsU0FBWEEsU0FBWUMsTUFBSSxPQUNwQkosRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRMUMsT0FBQW1ELE9BQUEsR0FBS0YsUUFDVixFQUhGRCxTQUFRSSxZQUFHLFdBTVYsSUFBTXFWLFlBQWN6VixTQUFTTSxLQUFLLENBQUMsR0FBR21WLFlBQVlsVixVQUFZLGNBQ3JFa1YsWUFBWXhWLEtBQU8sQ0FDakJVLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEVBQUcsSUFDL0JKLFlBQWFDLElBQUFBLEdBQU1DLElBQ25CRyxPQUFRTSxPQUFBQSxFQUNSMkQsVUFBV2tQLFlBS2J5QixZQUFZeFosV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsd0ZBQThGMlcsWUFBWXhaLFlBQWEsSUFBQVUsb0JBQUEsZSx5dkNDekN6SyxJQUFNb04sWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLGlCQUFlLGtCQUV2QkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxZQUN6REgsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksYUFBY0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksZ0JBRTlESCxFQUFBQSxJQUFBQSxJQUFBLGdEQUEwQ0EsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsUUFBc0IsK0ZBQStGSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxvQkFBa0MsZ0RBQ3JQSCxFQUFBQSxJQUFBQSxJQUFBLG9CQUFjQSxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxRQUFzQixvQ0FDOURILEVBQUFBLElBQUFBLElBQUEsWUFBS0EsRUFBQUEsSUFBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsZUFBYSwyQ0FHOUJILEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLHdCQUF3QnlELFFBQVEsVUFFOUMsQ0FyQndCSixXQUFVNUosWUFBQSxhQXVCbEM0SixXQUFXTSxnQkFBaUIsRSwyRUN2QnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsdUJBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h5RixTQUFVLENBQ1JMLFVBQVcsQ0FBRU8sUUFBUyxDQUFFQyxLQUFNLE9BQzlCekUsT0FBUSxDQUFFd0UsUUFBUyxDQUFFQyxLQUFNLE9BQzNCM0UsWUFBYSxDQUNYMEUsUUFBUyxDQUNQQyxLQUFNLE9BR1ZvUSxjQUFlLENBQ2JyUSxRQUFTLENBQ1BDLEtBQU0sU0FDTkYsUUFBUyxDQUFDLE1BQU8sVUFDakJvSixhQUFjL04sSUFBQUEsR0FBTUMsT0FJMUJ6RSxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtObEssU0FBVyxTQUFYQSxTQUFZQyxNQUFJLE9BQ3BCSixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVExQyxPQUFBbUQsT0FBQSxHQUFLRixRQUNWLEVBSEZELFNBQVFJLFlBQUcsV0FNVixJQUFNdVYsY0FBZ0IzVixTQUFTTSxLQUFLLENBQUMsR0FBR3FWLGNBQWNwVixVQUFZLGdCQUN6RW9WLGNBQWMxVixLQUFPLENBQ25CVSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLEdBQy9COFUsY0FBZWpWLElBQUFBLEdBQU00QixPQUNyQnhCLE9BQVFNLE9BQUFBLEVBQ1IyRCxVQUFXa1AsWUFLYjJCLGNBQWMxWixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx3RkFBOEY2VyxjQUFjMVosWUFBYSxJQUFBVSxvQkFBQSxpQiw2cUNDakQ3SyxJQUFNb04sWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLGdCQUFjLGlCQUV0QkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxhQUUzREgsRUFBQUEsSUFBQUEsSUFBQSwyQ0FBcUNBLEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFNBQXVCLE1BQ3RGSCxFQUFBQSxJQUFBQSxJQUFBLFVBQUdBLEVBQUFBLElBQUFBLElBQUEsVUFBUUcsV0FBVyxLQUFHLFNBQW1CLHdCQUF3QkgsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsYUFBMkIsTUFDekhILEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLHVCQUF1QnlELFFBQVEsVUFFN0MsQ0FoQndCSixXQUFVNUosWUFBQSxhQWtCbEM0SixXQUFXTSxnQkFBaUIsRSxzSUNoQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsc0JBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h5RixTQUFVLENBQ1JMLFVBQVcsQ0FBRU8sUUFBUyxDQUFFQyxLQUFNLE9BQzlCekUsT0FBUSxDQUFFd0UsUUFBUyxDQUFFQyxLQUFNLFFBRTdCckosV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLTmxLLFNBQVcsU0FBWEEsU0FBWUMsTUFBSSxPQUNwQkosRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRMUMsT0FBQW1ELE9BQUEsR0FBS0YsUUFDVixFQUhGRCxTQUFRSSxZQUFHLFdBTVYsSUFBTXdWLGFBQWU1VixTQUFTTSxLQUFLLENBQUMsR0FBR3NWLGFBQWFyVixVQUFZLGVBQ3ZFcVYsYUFBYTNWLEtBQU8sQ0FDbEJVLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEVBQUcsSUFDL0JpVixhQUFjLENBQUVsUCxHQUFJLGdCQUNwQjlGLE9BQVFNLE9BQUFBLEVBQ1IyRCxVQUFXa1AsWUFLYjRCLGFBQWEzWixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx3RkFBOEY4VyxhQUFhM1osWUFBYSxJQUFBVSxvQkFBQSxnQix3a0NDdEMzSyxJQUFNb04sWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLGVBQWEsZ0JBRXJCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLCtDQUN6REgsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksb0JBRXJCSCxFQUFBQSxJQUFBQSxJQUFBLDBFQUFvRUEsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsUUFBc0IsYUFDcEhILEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLHNCQUFzQnlELFFBQVEsVUFFNUMsQ0FoQndCSixXQUFVNUosWUFBQSxhQWtCbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNsQjVCLHFCQUNFOUssTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYeUYsU0FBVSxDQUNSTCxVQUFXLENBQUVPLFFBQVMsQ0FBRUMsS0FBTSxPQUM5QnpFLE9BQVEsQ0FBRXdFLFFBQVMsQ0FBRUMsS0FBTSxPQUMzQjNFLFlBQWEsQ0FDWDBFLFFBQVMsQ0FDUEMsS0FBTSxRQUlackosV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLTmxLLFNBQVcsU0FBWEEsU0FBWUMsTUFBSSxPQUNwQkosRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRMUMsT0FBQW1ELE9BQUEsR0FBS0YsUUFDVixFQUhGRCxTQUFRSSxZQUFHLFdBTVYsSUFBTTBWLFlBQWM5VixTQUFTTSxLQUFLLENBQUMsR0FBR3dWLFlBQVl2VixVQUFZLGNBQ3JFdVYsWUFBWTdWLEtBQU84VCxjQUFBQSxFQUluQitCLFlBQVk3WixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx3RkFBOEZnWCxZQUFZN1osWUFBYSxJQUFBVSxvQkFBQSxlLDg1Q0NqQ3pLLElBQU1vTixZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sbUJBQWlCLG9CQUV6QkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxvSEFFM0RILEVBQUFBLElBQUFBLElBQUEsbUlBQ0FBLEVBQUFBLElBQUFBLElBQUNtSyxTQUFBQSxHQUFNLENBQUNqSyxRQUFRLFdBQ2xCRixFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRywyQkFBMkJ5RCxRQUFRLFdBRy9DLENBakJ3QkosV0FBVTVKLFlBQUEsYUFtQmxDNEosV0FBV00sZ0JBQWlCLEUsc0lDbEJ0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLHlCQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLQzZMLGdCQUFrQixTQUFTQSxrQkFDdEMsSUFBTUMsaUJBQWtCM04sRUFBQUEsTUFBQUEsY0FDdEIsU0FBQ0UsTUFBTzdDLE1BQU9DLElBQUtzUSxZQUFVLE9BQUFqWixPQUFBbUQsT0FBQSxHQUN4QjhWLFlBQWMsQ0FDaEJoSyxNQUFPLENBQ0x3RSxnQkFBaUIsU0FHakJyTSxpQkFBT3NCLE9BQU93USxPQUFTLElBQU0sQ0FDL0JwVyxVQUFXLGNBRVR5SSxNQUFNL0ksTUFBTTJXLFNBQVMsWUFBYyxDQUNyQ3JXLFVBQVcsYUFDWixHQUVILElBR0YsT0FDRUQsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRLENBQ1BpQixZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLElBQy9CSixZQUFhQyxJQUFBQSxHQUFNYSxLQUNuQjBVLGdCQUFpQkEsZ0JBQ2pCblYsT0FBUU0sT0FBQUEsRUFDUjJELFVBQVdrUCxjQUluQixFQTdCYStCLGdCQUFlM1YsWUFBRyxrQkE2QjdCMlYsZ0JBQWdCeFYsVUFBWSxrQkFJOUJ3VixnQkFBZ0I5WixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSw0ckJBQWdzQmlYLGdCQUFnQjlaLFlBQWEsSUFBQVUsb0JBQUEsb0JBQUFvWixnQkFBQTdPLGFBQUEsOEVBQUFDLDBCQUFBQSx3QkFBQSw2Q0FBQUMsS0FBQSxrQkFBQUMsV0FBQTBPLGdCQUFBN08sYUFBQUksS0FBQSw0QyxxcENDbkRueEIsSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxVQUFRLFdBRWhCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLG9CQUN6REgsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksYUFBY0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksU0FFOURILEVBQUFBLElBQUFBLElBQUEsd0xBR0FBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksZUFDbkJILEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQ25CSCxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUNuQkgsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksMENBQ25CSCxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSw4Q0FFckJILEVBQUFBLElBQUFBLElBQUEsMExBR0FBLEVBQUFBLElBQUFBLElBQUEsWUFBS0EsRUFBQUEsSUFBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsZUFBYSx5R0FTOUJILEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLGdCQUFnQnlELFFBQVEsVUFFdEMsQ0F0Q3dCSixXQUFVNUosWUFBQSxhQXdDbEM0SixXQUFXTSxnQkFBaUIsRSwyRUN2Q3RCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsZ0JBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h5RixTQUFVLENBQ1JMLFVBQVcsQ0FBRU8sUUFBUyxDQUFFQyxLQUFNLE9BQzlCM0UsWUFBYSxDQUNYMEUsUUFBUyxDQUNQQyxLQUFNLFFBSVpySixXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtObEssU0FBVyxTQUFYQSxTQUFZQyxNQUFJLE9BQ3BCSixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVExQyxPQUFBbUQsT0FBQSxHQUFLRixRQUNWLEVBSEZELFNBQVFJLFlBQUcsV0FNVixJQUFNZ1csT0FBU3BXLFNBQVNNLEtBQUssQ0FBQyxHQUFHOFYsT0FBTzdWLFVBQVksU0FDM0Q2VixPQUFPblcsS0FBTyxDQUNaVSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLElBQy9CQyxPQUFRTSxPQUFBQSxFQUNSMkQsVUFBV2tQLFlBS2JvQyxPQUFPbmEsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsd0ZBQThGc1gsT0FBT25hLFlBQWEsSUFBQVUsb0JBQUEsVSx1dkNDdkMvSixJQUFNb04sWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLFdBQVMsWUFFakJBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksYUFFM0RILEVBQUFBLElBQUFBLElBQUNTLGtCQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sWUFBWW1ILFFBQVEsVUFBUyxhQUUvQyxtRkFFVEYsRUFBQUEsSUFBQUEsSUFBQSxpQkFBV0EsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsVUFBd0Isd0pBQXdKSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxnQkFBOEIsTUFDN1FILEVBQUFBLElBQUFBLElBQUEsWUFBS0EsRUFBQUEsSUFBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsZUFBYSx5WEFjOUJILEVBQUFBLElBQUFBLElBQUNtSyxTQUFBQSxHQUFNLENBQUNqSyxRQUFRLFdBQ2xCRixFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyxpQkFBaUJ5RCxRQUFRLFdBR3JDLENBcEN3QkosV0FBVTVKLFlBQUEsYUFzQ2xDNEosV0FBV00sZ0JBQWlCLEUsMkVDdEN0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLGlCQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLQ21NLFFBQVUsU0FBU0EsVUFDOUIsSUFBQXJLLFVBQWlDMUMsRUFBQUEsTUFBQUEsVUFDL0IsaUJBQU8sQ0FDTDNJLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEVBQUcsR0FDL0IwVixRQUFTLENBRVBDLFdBQVksSUFFWkMsY0FBZSxTQUFBQSxjQUFDamEsS0FBTXVSLFFBQVNoSixXQUFTLE9BQ3RDQSxVQUFVMlIsT0FBT2xhLEtBQU0sT0FBUXVSLFFBQVEsRUFFekM0SSxVQUFXLFNBQUFBLFVBQUNuYSxLQUFNdVIsUUFBU2hKLFdBQVMsT0FDbENBLFVBQVUyUixPQUFPbGEsS0FBTSxVQUFXdVIsUUFBUSxFQUU1QzZJLGlCQUFrQixTQUFBQSxpQkFBQ3BhLEtBQU11UixRQUFTaEosV0FBUyxPQUN6Q0EsVUFBVTJSLE9BQU9sYSxLQUFNLFVBQVd1UixRQUFRLEdBRS9DLEdBQ0QsSUFqQk1uTixZQUFXcUwsU0FBWHJMLFlBQWEyVixRQUFPdEssU0FBUHNLLFFBb0JyQixPQUNFelcsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRLENBQ1BpQixZQUFhQSxZQUNiRSxPQUFRTSxPQUFBQSxFQUNSbVYsUUFBU0EsUUFDVHhSLFVBQVdrUCxjQUluQixFQS9CYXFDLFFBQU9qVyxZQUFHLFVBK0JyQmlXLFFBQVE5VixVQUFZLFVBSXRCOFYsUUFBUXBhLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLDg5QkFBaytCdVgsUUFBUXBhLFlBQWEsSUFBQVUsb0JBQUEsWUFBQTBaLFFBQUFuUCxhQUFBLHNFQUFBQywwQkFBQUEsd0JBQUEscUNBQUFDLEtBQUEsVUFBQUMsV0FBQWdQLFFBQUFuUCxhQUFBSSxLQUFBLG9DLHF5Q0NuRHJpQyxJQUFNeUMsWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLDJCQUF5Qiw2QkFFakNBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksa0ZBRTNESCxFQUFBQSxJQUFBQSxJQUFBLHlEQUFtREEsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsVUFDN0VILEVBQUFBLElBQUFBLElBQUNtSyxTQUFBQSxHQUFNLENBQUNqSyxRQUFRLFdBQ2xCRixFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyxvQ0FBb0N5RCxRQUFRLFdBR3hELENBakJ3QkosV0FBVTVKLFlBQUEsYUFtQmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDbkJ0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLGlDQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLQzBNLHVCQUF5QixTQUFTQSx5QkFDN0MsSUFBQTVLLFVBQXdDMUMsRUFBQUEsTUFBQUEsVUFDdEMsaUJBQU8sQ0FDTDNJLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEVBQUcsSUFDL0IwVixRQUFTLENBQ1BPLGlCQUFrQixTQUFBQSxpQkFBQ3RhLEtBQU11UixRQUFTaEosV0FBUyxPQUN6Q0EsVUFBVTJSLE9BQU9sYSxLQUFNLGVBQWdCdVIsUUFBUSxHQUVuRHZNLE1BQU8sQ0FBQ2QsSUFBQUEsR0FBTWEsS0FBTWIsSUFBQUEsR0FBTUMsSUFBS0QsSUFBQUEsR0FBTTRCLFFBQ3RDLEdBQ0QsSUFUTTFCLFlBQVdxTCxTQUFYckwsWUFBYTJWLFFBQU90SyxTQUFQc0ssUUFBUy9VLE1BQUt5SyxTQUFMekssTUFZOUIsT0FDRTFCLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQaUIsWUFBYUEsWUFDYkgsWUFBYUMsSUFBQUEsR0FBTTRCLE9BQ25CeEIsT0FBUU0sT0FBQUEsRUFDUm1WLFFBQVNBLFFBQ1R4UixVQUFXa1AsV0FDWHpTLE1BQU9BLFNBSWYsRUF6QmFxVix1QkFBc0J4VyxZQUFHLHlCQXlCcEN3Vyx1QkFBdUJyVyxVQUFZLDJCQUlyQ3FXLHVCQUF1QjNhLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHVvQkFBMm9COFgsdUJBQXVCM2EsWUFBYSxJQUFBVSxvQkFBQSwyQkFBQWlhLHVCQUFBMVAsYUFBQSxxRkFBQUMsMEJBQUFBLHdCQUFBLHFEQUFBQyxLQUFBLHlCQUFBQyxXQUFBdVAsdUJBQUExUCxhQUFBSSxLQUFBLG9ELDZ5Q0M3QzV1QixJQUFNeUMsWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLDZCQUEyQiwrQkFFbkNBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksOEdBRTNESCxFQUFBQSxJQUFBQSxJQUFBLG1GQUNBQSxFQUFBQSxJQUFBQSxJQUFDbUssU0FBQUEsR0FBTSxDQUFDakssUUFBUSxXQUNsQkYsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsc0NBQXNDeUQsUUFBUSxXQUcxRCxDQWpCd0JKLFdBQVU1SixZQUFBLGFBbUJsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ25CdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQyxtQ0FDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS0M0TSx5QkFBMkIsU0FBU0EsMkJBQy9DLElBQUE5SyxVQUF3QzFDLEVBQUFBLE1BQUFBLFVBQ3RDLGlCQUFPLENBQ0wzSSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLElBQy9CMFYsUUFBUyxDQUNQUyxtQkFBb0IsU0FBQUEsbUJBQUFuUyxLQUFpQmtKLFFBQVNoSixXQUFTLElBQWhDWSxNQUFLZCxLQUFMYyxNQUFPQyxJQUFHZixLQUFIZSxJQUFHLE9BQy9CYixVQUFVMlIsT0FBTy9RLE1BQU8scUJBQXNCb0ksU0FDOUMsTUFDQWhKLFVBQVUyUixPQUFPOVEsSUFBSyxxQkFBc0JtSSxRQUFRLEdBRXhEdk0sTUFBTyxDQUFDZCxJQUFBQSxHQUFNYSxLQUFNYixJQUFBQSxHQUFNQyxJQUFLRCxJQUFBQSxHQUFNNEIsUUFDdEMsR0FDRCxJQVhNMUIsWUFBV3FMLFNBQVhyTCxZQUFhMlYsUUFBT3RLLFNBQVBzSyxRQUFTL1UsTUFBS3lLLFNBQUx6SyxNQWM5QixPQUNFMUIsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRLENBQ1BpQixZQUFhQSxZQUNiSCxZQUFhQyxJQUFBQSxHQUFNNEIsT0FDbkJ4QixPQUFRTSxPQUFBQSxFQUNSbVYsUUFBU0EsUUFDVHhSLFVBQVdrUCxXQUNYelMsTUFBT0EsU0FJZixFQTNCYXVWLHlCQUF3QjFXLFlBQUcsMkJBMkJ0QzBXLHlCQUF5QnZXLFVBQVksNkJBSXZDdVcseUJBQXlCN2EsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsaXZCQUFxdkJnWSx5QkFBeUI3YSxZQUFhLElBQUFVLG9CQUFBLDZCQUFBbWEseUJBQUE1UCxhQUFBLHVGQUFBQywwQkFBQUEsd0JBQUEsdURBQUFDLEtBQUEsMkJBQUFDLFdBQUF5UCx5QkFBQTVQLGFBQUFJLEtBQUEsc0QscXlDQy9DMTFCLElBQU15QyxZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sMkJBQXlCLDZCQUVqQ0EsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxrRkFFM0RILEVBQUFBLElBQUFBLElBQUEseUVBQW1FQSxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxVQUM3RkgsRUFBQUEsSUFBQUEsSUFBQ21LLFNBQUFBLEdBQU0sQ0FBQ2pLLFFBQVEsV0FDbEJGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLG9DQUFvQ3lELFFBQVEsV0FHeEQsQ0FqQndCSixXQUFVNUosWUFBQSxhQW1CbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNuQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsaUNBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtDOE0sdUJBQXlCLFNBQVNBLHlCQUM3QyxJQUFBaEwsVUFBd0MxQyxFQUFBQSxNQUFBQSxVQUN0QyxpQkFBTyxDQUNMM0ksWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxJQUMvQjBWLFFBQVMsQ0FDUFcsaUJBQWtCLFNBQUFBLGlCQUFDMWEsS0FBTXVSLFFBQVNoSixXQUFTLE9BQ3pDQSxVQUFVMlIsT0FBT2xhLEtBQU0sVUFBV3VSLFFBQVEsR0FFOUN2TSxNQUFPLENBQUNkLElBQUFBLEdBQU1hLEtBQU1iLElBQUFBLEdBQU1DLElBQUtELElBQUFBLEdBQU00QixRQUN0QyxHQUNELElBVE0xQixZQUFXcUwsU0FBWHJMLFlBQWEyVixRQUFPdEssU0FBUHNLLFFBQVMvVSxNQUFLeUssU0FBTHpLLE1BWTlCLE9BQ0UxQixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVEsQ0FDUGlCLFlBQWFBLFlBQ2JILFlBQWFDLElBQUFBLEdBQU00QixPQUNuQnhCLE9BQVFNLE9BQUFBLEVBQ1JtVixRQUFTQSxRQUNUeFIsVUFBV2tQLFdBQ1h6UyxNQUFPQSxTQUlmLEVBekJheVYsdUJBQXNCNVcsWUFBRyx5QkF5QnBDNFcsdUJBQXVCelcsVUFBWSwyQkFJckN5Vyx1QkFBdUIvYSxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxrb0JBQXNvQmtZLHVCQUF1Qi9hLFlBQWEsSUFBQVUsb0JBQUEsMkJBQUFxYSx1QkFBQTlQLGFBQUEscUZBQUFDLDBCQUFBQSx3QkFBQSxxREFBQUMsS0FBQSx5QkFBQUMsV0FBQTJQLHVCQUFBOVAsYUFBQUksS0FBQSxvRCwyekNDN0N2dUIsSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxnQ0FBOEIsa0NBRXRDQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLDhHQUUzREgsRUFBQUEsSUFBQUEsSUFBQSw4REFBd0RBLEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFVBQ2xGSCxFQUFBQSxJQUFBQSxJQUFDbUssU0FBQUEsR0FBTSxDQUFDakssUUFBUSxXQUNsQkYsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsMENBQTBDeUQsUUFBUSxXQUc5RCxDQWpCd0JKLFdBQVU1SixZQUFBLGFBbUJsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ25CdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQyxzQ0FDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS0NnTiw2QkFBK0IsU0FBU0EsK0JBQ25ELElBQUFsTCxVQUF3QzFDLEVBQUFBLE1BQUFBLFVBQ3RDLGlCQUFPLENBQ0wzSSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLElBQy9CMFYsUUFBUyxDQUNQYSxzQkFBdUIsU0FBQUEsc0JBQUF2UyxLQUFpQmtKLFFBQVNoSixXQUFTLElBQWhDWSxNQUFLZCxLQUFMYyxNQUFPQyxJQUFHZixLQUFIZSxJQUFHLE9BQ2xDYixVQUFVMlIsT0FBTy9RLE1BQU8sVUFBV29JLFNBQ25DLE1BQ0FoSixVQUFVMlIsT0FBTzlRLElBQUssVUFBV21JLFFBQVEsR0FFN0N2TSxNQUFPLENBQUNkLElBQUFBLEdBQU1hLEtBQU1iLElBQUFBLEdBQU1DLElBQUtELElBQUFBLEdBQU00QixRQUN0QyxHQUNELElBWE0xQixZQUFXcUwsU0FBWHJMLFlBQWEyVixRQUFPdEssU0FBUHNLLFFBQVMvVSxNQUFLeUssU0FBTHpLLE1BYzlCLE9BQ0UxQixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVEsQ0FDUGlCLFlBQWFBLFlBQ2JILFlBQWFDLElBQUFBLEdBQU00QixPQUNuQnhCLE9BQVFNLE9BQUFBLEVBQ1JtVixRQUFTQSxRQUNUeFIsVUFBV2tQLFdBQ1h6UyxNQUFPQSxTQUlmLEVBM0JhMlYsNkJBQTRCOVcsWUFBRywrQkEyQjFDOFcsNkJBQTZCM1csVUFBWSxnQ0FJM0MyVyw2QkFBNkJqYixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxrdUJBQXN1Qm9ZLDZCQUE2QmpiLFlBQWEsSUFBQVUsb0JBQUEsaUNBQUF1YSw2QkFBQWhRLGFBQUEsMkZBQUFDLDBCQUFBQSx3QkFBQSwwREFBQUMsS0FBQSwrQkFBQUMsV0FBQTZQLDZCQUFBaFEsYUFBQUksS0FBQSx5RCwrd0NDL0NuMUIsSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxxQkFBbUIsdUJBRTNCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGtGQUUzREgsRUFBQUEsSUFBQUEsSUFBQSxtR0FDQUEsRUFBQUEsSUFBQUEsSUFBQ21LLFNBQUFBLEdBQU0sQ0FBQ2pLLFFBQVEsV0FDbEJGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLDZCQUE2QnlELFFBQVEsV0FHakQsQ0FqQndCSixXQUFVNUosWUFBQSxhQW1CbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNuQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsMkJBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtDa04sa0JBQW9CLFNBQVNBLG9CQUN4QyxJQUFBcEwsVUFBaUMxQyxFQUFBQSxNQUFBQSxVQUMvQixpQkFBTyxDQUNMM0ksWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxHQUMvQjBWLFFBQVMsQ0FDUEMsV0FBWSxTQUFBQSxXQUFDaGEsS0FBTXVSLFFBQVNoSixXQUFTLE9BQ25DQSxVQUFVMlIsT0FBT2xhLEtBQU0sSUFBS3VSLFFBQVEsR0FFekMsR0FDRCxJQVJNbk4sWUFBV3FMLFNBQVhyTCxZQUFhMlYsUUFBT3RLLFNBQVBzSyxRQVdyQixPQUNFelcsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRLENBQ1BpQixZQUFhQSxZQUNiRSxPQUFRTSxPQUFBQSxFQUNSbVYsUUFBU0EsUUFDVHhSLFVBQVdrUCxjQUluQixFQXRCYW9ELGtCQUFpQmhYLFlBQUcsb0JBc0IvQmdYLGtCQUFrQjdXLFVBQVkscUJBSWhDNlcsa0JBQWtCbmIsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEseWZBQTZmc1ksa0JBQWtCbmIsWUFBYSxJQUFBVSxvQkFBQSxzQkFBQXlhLGtCQUFBbFEsYUFBQSxnRkFBQUMsMEJBQUFBLHdCQUFBLCtDQUFBQyxLQUFBLG9CQUFBQyxXQUFBK1Asa0JBQUFsUSxhQUFBSSxLQUFBLDhDLDJ3Q0MxQ3BsQixJQUFNeUMsWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLG9CQUFrQixzQkFFMUJBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksa0ZBRTNESCxFQUFBQSxJQUFBQSxJQUFBLGtGQUNBQSxFQUFBQSxJQUFBQSxJQUFDbUssU0FBQUEsR0FBTSxDQUFDakssUUFBUSxXQUNsQkYsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsNEJBQTRCeUQsUUFBUSxXQUdoRCxDQWpCd0JKLFdBQVU1SixZQUFBLGFBbUJsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ25CdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQywwQkFDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS0NtTixpQkFBbUIsU0FBU0EsbUJBQ3ZDLElBQUFyTCxVQUF3QzFDLEVBQUFBLE1BQUFBLFVBQ3RDLGlCQUFPLENBQ0wzSSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLElBQy9CMFYsUUFBUyxDQUNQSSxVQUFXLFNBQUFBLFVBQUNuYSxLQUFNdVIsUUFBU2hKLFdBQVMsT0FDbENBLFVBQVUyUixPQUFPbGEsS0FBTSxZQUFhdVIsUUFBUSxHQUVoRHZNLE1BQU8sQ0FBQ2QsSUFBQUEsR0FBTWEsS0FBTWIsSUFBQUEsR0FBTUMsS0FDM0IsR0FDRCxJQVRNQyxZQUFXcUwsU0FBWHJMLFlBQWEyVixRQUFPdEssU0FBUHNLLFFBQVMvVSxNQUFLeUssU0FBTHpLLE1BWTlCLE9BQ0UxQixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVEsQ0FDUGlCLFlBQWFBLFlBQ2JILFlBQWFDLElBQUFBLEdBQU1hLEtBQ25CVCxPQUFRTSxPQUFBQSxFQUNSbVYsUUFBU0EsUUFDVHhSLFVBQVdrUCxXQUNYelMsTUFBT0EsU0FJZixFQXpCYThWLGlCQUFnQmpYLFlBQUcsbUJBeUI5QmlYLGlCQUFpQjlXLFVBQVksb0JBSS9COFcsaUJBQWlCcGIsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsdW1CQUEybUJ1WSxpQkFBaUJwYixZQUFhLElBQUFVLG9CQUFBLHFCQUFBMGEsaUJBQUFuUSxhQUFBLCtFQUFBQywwQkFBQUEsd0JBQUEsOENBQUFDLEtBQUEsbUJBQUFDLFdBQUFnUSxpQkFBQW5RLGFBQUFJLEtBQUEsNkMsbXlDQzdDaHNCLElBQU15QyxZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sMEJBQXdCLDRCQUVoQ0EsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxrRkFFM0RILEVBQUFBLElBQUFBLElBQUEsNkVBQ0FBLEVBQUFBLElBQUFBLElBQUNtSyxTQUFBQSxHQUFNLENBQUNqSyxRQUFRLFdBQ2xCRixFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyxtQ0FBbUN5RCxRQUFRLFdBR3ZELENBakJ3QkosV0FBVTVKLFlBQUEsYUFtQmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDbkJ0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLGdDQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLQ29OLHVCQUF5QixTQUFTQSx5QkFDN0MsSUFBQXRMLFVBQXdDMUMsRUFBQUEsTUFBQUEsVUFDdEMsaUJBQU8sQ0FDTDNJLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEVBQUcsSUFDL0IwVixRQUFTLENBQ1BpQixnQkFBaUIsU0FBQUEsZ0JBQUNoYixLQUFNdVIsUUFBU2hKLFdBQVMsT0FDeENBLFVBQVUyUixPQUFPbGEsS0FBTSxlQUFnQnVSLFFBQVEsR0FFbkR2TSxNQUFPLENBQUNkLElBQUFBLEdBQU1hLEtBQU1iLElBQUFBLEdBQU1DLEtBQzNCLEdBQ0QsSUFUTUMsWUFBV3FMLFNBQVhyTCxZQUFhMlYsUUFBT3RLLFNBQVBzSyxRQUFTL1UsTUFBS3lLLFNBQUx6SyxNQVk5QixPQUNFMUIsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRLENBQ1BpQixZQUFhQSxZQUNiSCxZQUFhQyxJQUFBQSxHQUFNQyxJQUNuQkcsT0FBUU0sT0FBQUEsRUFDUm1WLFFBQVNBLFFBQ1R4UixVQUFXa1AsV0FDWHpTLE1BQU9BLFNBSWYsRUF6QmErVix1QkFBc0JsWCxZQUFHLHlCQXlCcENrWCx1QkFBdUIvVyxVQUFZLDBCQUlyQytXLHVCQUF1QnJiLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHFuQkFBeW5Cd1ksdUJBQXVCcmIsWUFBYSxJQUFBVSxvQkFBQSwyQkFBQTJhLHVCQUFBcFEsYUFBQSxxRkFBQUMsMEJBQUFBLHdCQUFBLG9EQUFBQyxLQUFBLHlCQUFBQyxXQUFBaVEsdUJBQUFwUSxhQUFBSSxLQUFBLG1ELHV6Q0M3QzF0QixJQUFNeUMsWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLCtCQUE2QixpQ0FFckNBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksOEdBRTNESCxFQUFBQSxJQUFBQSxJQUFBLDhFQUNBQSxFQUFBQSxJQUFBQSxJQUFDbUssU0FBQUEsR0FBTSxDQUFDakssUUFBUSxXQUNsQkYsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcseUNBQXlDeUQsUUFBUSxXQUc3RCxDQWpCd0JKLFdBQVU1SixZQUFBLGFBbUJsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ25CdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQyxxQ0FDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS0NzTiw0QkFBOEIsU0FBU0EsOEJBQ2xELElBQUF4TCxVQUF3QzFDLEVBQUFBLE1BQUFBLFVBQ3RDLGlCQUFPLENBQ0wzSSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLElBQy9CMFYsUUFBUyxDQUNQbUIscUJBQXNCLFNBQUFBLHFCQUFBN1MsS0FBaUJrSixRQUFTaEosV0FBUyxJQUFoQ1ksTUFBS2QsS0FBTGMsTUFBT0MsSUFBR2YsS0FBSGUsSUFBRyxPQUNqQ2IsVUFBVTJSLE9BQU8vUSxNQUFPLFFBQVNvSSxTQUNqQyxNQUNBaEosVUFBVTJSLE9BQU85USxJQUFLLFFBQVNtSSxRQUFRLEdBRTNDdk0sTUFBTyxDQUFDZCxJQUFBQSxHQUFNYSxLQUFNYixJQUFBQSxHQUFNQyxLQUMzQixHQUNELElBWE1DLFlBQVdxTCxTQUFYckwsWUFBYTJWLFFBQU90SyxTQUFQc0ssUUFBUy9VLE1BQUt5SyxTQUFMekssTUFjOUIsT0FDRTFCLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQaUIsWUFBYUEsWUFDYkgsWUFBYUMsSUFBQUEsR0FBTWEsS0FDbkJULE9BQVFNLE9BQUFBLEVBQ1JtVixRQUFTQSxRQUNUeFIsVUFBV2tQLFdBQ1h6UyxNQUFPQSxTQUlmLEVBM0JhaVcsNEJBQTJCcFgsWUFBRyw4QkEyQnpDb1gsNEJBQTRCalgsVUFBWSwrQkFJMUNpWCw0QkFBNEJ2YixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSw0c0JBQWd0QjBZLDRCQUE0QnZiLFlBQWEsSUFBQVUsb0JBQUEsZ0NBQUE2YSw0QkFBQXRRLGFBQUEsMEZBQUFDLDBCQUFBQSx3QkFBQSx5REFBQUMsS0FBQSw4QkFBQUMsV0FBQW1RLDRCQUFBdFEsYUFBQUksS0FBQSx3RCxtMUNDL0MzekIsSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxrQ0FBZ0Msb0NBRXhDQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGtGQUUzREgsRUFBQUEsSUFBQUEsSUFBQSwrRkFBeUZBLEVBQUFBLElBQUFBLElBQUNTLGtCQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sdUJBQXVCbUgsUUFBUSxVQUFRLHFCQUErQixNQUMxTEYsRUFBQUEsSUFBQUEsSUFBQ21LLFNBQUFBLEdBQU0sQ0FBQ2pLLFFBQVEsV0FDbEJGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLDZDQUE2Q3lELFFBQVEsV0FHakUsQ0FqQndCSixXQUFVNUosWUFBQSxhQW1CbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNuQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsd0NBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtDd04sK0JBQWlDLFNBQVNBLGlDQUNyRCxJQUFBMUwsVUFBaUMxQyxFQUFBQSxNQUFBQSxVQUMvQixpQkFBTyxDQUNMM0ksWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxJQUMvQjBWLFFBQVMsQ0FDUHFCLHdCQUF5QixTQUFBQSx3QkFBQ3BiLEtBQU11UixRQUFTaEosV0FBUyxNQUNoRCxPQUFTQSxVQUFVMlIsT0FBT2xhLEtBQU0sVUFBV3VSLFFBQVEsR0FFeEQsR0FDRCxJQVJNbk4sWUFBV3FMLFNBQVhyTCxZQUFhMlYsUUFBT3RLLFNBQVBzSyxRQVdyQixPQUNFelcsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRLENBQ1BpQixZQUFhQSxZQUNiSCxZQUFhQyxJQUFBQSxHQUFNYSxLQUNuQlQsT0FBUU0sT0FBQUEsRUFDUm1WLFFBQVNBLFFBQ1R4UixVQUFXa1AsV0FDWHBRLG1CQUFpQixLQUl6QixFQXhCYThULCtCQUE4QnRYLFlBQUcsaUNBd0I1Q3NYLCtCQUErQm5YLFVBQVksa0NBSTdDbVgsK0JBQStCemIsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsZ21CQUFvbUI0WSwrQkFBK0J6YixZQUFhLElBQUFVLG9CQUFBLG1DQUFBK2EsK0JBQUF4USxhQUFBLDZGQUFBQywwQkFBQUEsd0JBQUEsNERBQUFDLEtBQUEsaUNBQUFDLFdBQUFxUSwrQkFBQXhRLGFBQUFJLEtBQUEsMkQsdXpDQzVDcnRCLElBQU15QyxZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sK0JBQTZCLGlDQUVyQ0EsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSw4R0FFM0RILEVBQUFBLElBQUFBLElBQUEsZ0VBQ0FBLEVBQUFBLElBQUFBLElBQUNtSyxTQUFBQSxHQUFNLENBQUNqSyxRQUFRLFdBQ2xCRixFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyx5Q0FBeUN5RCxRQUFRLFdBRzdELENBakJ3QkosV0FBVTVKLFlBQUEsYUFtQmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDbkJ0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLHFDQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLQzBOLDRCQUE4QixTQUFTQSw4QkFDbEQsSUFBQTVMLFVBQWlDMUMsRUFBQUEsTUFBQUEsVUFDL0IsaUJBQU8sQ0FDTDNJLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEVBQUcsSUFDL0IwVixRQUFTLENBQ1B1QixxQkFBc0IsU0FBQUEscUJBQUFqVCxLQUFpQmtKLFFBQVNoSixXQUFTLElBQWhDWSxNQUFLZCxLQUFMYyxNQUFPQyxJQUFHZixLQUFIZSxJQUFHLE9BQ2pDYixVQUFVMlIsT0FBTy9RLE1BQU8sVUFBV29JLFNBQ25DLE1BQ0FoSixVQUFVMlIsT0FBTzlRLElBQUssVUFBV21JLFFBQVEsR0FFOUMsR0FDRCxJQVZNbk4sWUFBV3FMLFNBQVhyTCxZQUFhMlYsUUFBT3RLLFNBQVBzSyxRQWFyQixPQUNFelcsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRLENBQ1BpQixZQUFhQSxZQUNiSCxZQUFhQyxJQUFBQSxHQUFNYSxLQUNuQlQsT0FBUU0sT0FBQUEsRUFDUm1WLFFBQVNBLFFBQ1R4UixVQUFXa1AsY0FJbkIsRUF6QmE0RCw0QkFBMkJ4WCxZQUFHLDhCQXlCekN3WCw0QkFBNEJyWCxVQUFZLCtCQUkxQ3FYLDRCQUE0QjNiLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLDJvQkFBK29COFksNEJBQTRCM2IsWUFBYSxJQUFBVSxvQkFBQSxnQ0FBQWliLDRCQUFBMVEsYUFBQSwwRkFBQUMsMEJBQUFBLHdCQUFBLHlEQUFBQyxLQUFBLDhCQUFBQyxXQUFBdVEsNEJBQUExUSxhQUFBSSxLQUFBLHdELDIxQ0M3QzF2QixJQUFNeUMsWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLG9DQUFrQyxzQ0FFMUNBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksa0ZBRTNESCxFQUFBQSxJQUFBQSxJQUFBLCtGQUF5RkEsRUFBQUEsSUFBQUEsSUFBQ1Msa0JBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSx1QkFBdUJtSCxRQUFRLFVBQVEscUJBQStCLE1BQzFMRixFQUFBQSxJQUFBQSxJQUFDbUssU0FBQUEsR0FBTSxDQUFDakssUUFBUSxXQUNsQkYsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsK0NBQStDeUQsUUFBUSxXQUduRSxDQWpCd0JKLFdBQVU1SixZQUFBLGFBbUJsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ25CdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQywwQ0FDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS0M0TixpQ0FBbUMsU0FBU0EsbUNBQ3ZELElBQUE5TCxVQUFpQzFDLEVBQUFBLE1BQUFBLFVBQy9CLGlCQUFPLENBQ0wzSSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLElBQy9CMFYsUUFBUyxDQUNQeUIsMEJBQTJCLFNBQUFBLDBCQUFDeGIsS0FBTXVSLFFBQVNoSixXQUFTLE9BQ2xEQSxVQUFVMlIsT0FBT2xhLEtBQU0sVUFBV3VSLFNBQVcsTUFBTSxHQUV4RCxHQUNELElBUk1uTixZQUFXcUwsU0FBWHJMLFlBQWEyVixRQUFPdEssU0FBUHNLLFFBV3JCLE9BQ0V6VyxFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVEsQ0FDUGlCLFlBQWFBLFlBQ2JILFlBQWFDLElBQUFBLEdBQU1hLEtBQ25CVCxPQUFRTSxPQUFBQSxFQUNSbVYsUUFBU0EsUUFDVHhSLFVBQVdrUCxXQUNYcFEsbUJBQWlCLEtBSXpCLEVBeEJha1UsaUNBQWdDMVgsWUFBRyxtQ0F3QjlDMFgsaUNBQWlDdlgsVUFBWSxvQ0FJL0N1WCxpQ0FBaUM3YixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxvbUJBQXdtQmdaLGlDQUFpQzdiLFlBQWEsSUFBQVUsb0JBQUEscUNBQUFtYixpQ0FBQTVRLGFBQUEsK0ZBQUFDLDBCQUFBQSx3QkFBQSw4REFBQUMsS0FBQSxtQ0FBQUMsV0FBQXlRLGlDQUFBNVEsYUFBQUksS0FBQSw2RCwyeUNDNUM3dEIsSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSw0QkFBMEIsOEJBRWxDQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGtGQUUzREgsRUFBQUEsSUFBQUEsSUFBQSx3RUFDQUEsRUFBQUEsSUFBQUEsSUFBQ21LLFNBQUFBLEdBQU0sQ0FBQ2pLLFFBQVEsV0FDbEJGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLHFDQUFxQ3lELFFBQVEsV0FHekQsQ0FqQndCSixXQUFVNUosWUFBQSxhQW1CbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNuQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsa0NBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtDOE4seUJBQTJCLFNBQVNBLDJCQUMvQyxJQUFBaE0sVUFBaUMxQyxFQUFBQSxNQUFBQSxVQUMvQixpQkFBTyxDQUNMM0ksWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxHQUMvQjBWLFFBQVMsQ0FDUDJCLGtCQUFtQixTQUFBQSxrQkFBQzFiLEtBQU11UixRQUFTaEosV0FBUyxPQUMxQ0EsVUFBVTJSLE9BQU9sYSxLQUFNLGFBQWN1UixRQUFRLEdBRWxELEdBQ0QsSUFSTW5OLFlBQVdxTCxTQUFYckwsWUFBYTJWLFFBQU90SyxTQUFQc0ssUUFXckIsT0FDRXpXLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQaUIsWUFBYUEsWUFDYkUsT0FBUU0sT0FBQUEsRUFDUm1WLFFBQVNBLFFBQ1R4UixVQUFXa1AsY0FJbkIsRUF0QmFnRSx5QkFBd0I1WCxZQUFHLDJCQXNCdEM0WCx5QkFBeUJ6WCxVQUFZLDRCQUl2Q3lYLHlCQUF5Qi9iLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLCtnQkFBb2hCa1oseUJBQXlCL2IsWUFBYSxJQUFBVSxvQkFBQSw2QkFBQXFiLHlCQUFBOVEsYUFBQSx1RkFBQUMsMEJBQUFBLHdCQUFBLHNEQUFBQyxLQUFBLDJCQUFBQyxXQUFBMlEseUJBQUE5USxhQUFBSSxLQUFBLHFELDJ5Q0MxQ3puQixJQUFNeUMsWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLDRCQUEwQiw4QkFFbENBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksOEdBRTNESCxFQUFBQSxJQUFBQSxJQUFBLG9IQUNBQSxFQUFBQSxJQUFBQSxJQUFDbUssU0FBQUEsR0FBTSxDQUFDakssUUFBUSxXQUNsQkYsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcscUNBQXFDeUQsUUFBUSxXQUd6RCxDQWpCd0JKLFdBQVU1SixZQUFBLGFBbUJsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ25CdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQyxrQ0FDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS0NnTyx5QkFBMkIsU0FBU0EsMkJBQy9DLElBQUFsTSxVQUF3QzFDLEVBQUFBLE1BQUFBLFVBQ3RDLGlCQUFPLENBQ0wzSSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLElBQy9CMFYsUUFBUyxDQUNQNkIsa0JBQW1CLFNBQUFBLGtCQUFBdlQsS0FBaUJrSixRQUFTaEosV0FBUyxJQUFoQ1ksTUFBS2QsS0FBTGMsTUFBT0MsSUFBR2YsS0FBSGUsSUFBRyxPQUM5QmIsVUFBVTJSLE9BQU8vUSxNQUFPLFVBQVdvSSxTQUNuQyxNQUNBaEosVUFBVTJSLE9BQU85USxJQUFLLFVBQVdtSSxRQUFRLEdBRTdDdk0sTUFBTyxDQUFDZCxJQUFBQSxHQUFNYSxLQUFNYixJQUFBQSxHQUFNQyxLQUMzQixHQUNELElBWE1DLFlBQVdxTCxTQUFYckwsWUFBYTJWLFFBQU90SyxTQUFQc0ssUUFBUy9VLE1BQUt5SyxTQUFMekssTUFjOUIsT0FDRTFCLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQaUIsWUFBYUEsWUFDYkgsWUFBYUMsSUFBQUEsR0FBTWEsS0FDbkJULE9BQVFNLE9BQUFBLEVBQ1JtVixRQUFTQSxRQUNUeFIsVUFBV2tQLFdBQ1h4TSxZQUFVLEVBQ1ZqRyxNQUFPQSxTQUlmLEVBNUJhMlcseUJBQXdCOVgsWUFBRywyQkE0QnRDOFgseUJBQXlCM1gsVUFBWSw0QkFJdkMyWCx5QkFBeUJqYyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSw4dEJBQWt1Qm9aLHlCQUF5QmpjLFlBQWEsSUFBQVUsb0JBQUEsNkJBQUF1Yix5QkFBQWhSLGFBQUEsdUZBQUFDLDBCQUFBQSx3QkFBQSxzREFBQUMsS0FBQSwyQkFBQUMsV0FBQTZRLHlCQUFBaFIsYUFBQUksS0FBQSxxRCx1eUNDaER2MEIsSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSwyQkFBeUIsNkJBRWpDQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGtGQUUzREgsRUFBQUEsSUFBQUEsSUFBQSwrRUFDQUEsRUFBQUEsSUFBQUEsSUFBQ21LLFNBQUFBLEdBQU0sQ0FBQ2pLLFFBQVEsV0FDbEJGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLG9DQUFvQ3lELFFBQVEsV0FHeEQsQ0FqQndCSixXQUFVNUosWUFBQSxhQW1CbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNuQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsaUNBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtDa08sd0JBQTBCLFNBQVNBLDBCQUM5QyxJQUFBcE0sVUFBd0MxQyxFQUFBQSxNQUFBQSxVQUN0QyxpQkFBTyxDQUNMM0ksWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxJQUMvQjBWLFFBQVMsQ0FDUEssaUJBQWtCLFNBQUFBLGlCQUFDcGEsS0FBTXVSLFFBQVNoSixXQUFTLE9BQ3pDQSxVQUFVMlIsT0FBT2xhLEtBQU0sVUFBV3VSLFFBQVEsR0FFOUN2TSxNQUFPLENBQUNkLElBQUFBLEdBQU1hLEtBQU1iLElBQUFBLEdBQU1DLEtBQzNCLEdBQ0QsSUFUTUMsWUFBV3FMLFNBQVhyTCxZQUFhMlYsUUFBT3RLLFNBQVBzSyxRQUFTL1UsTUFBS3lLLFNBQUx6SyxNQVk5QixPQUNFMUIsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRLENBQ1BpQixZQUFhQSxZQUNiSCxZQUFhQyxJQUFBQSxHQUFNYSxLQUNuQlQsT0FBUU0sT0FBQUEsRUFDUm1WLFFBQVNBLFFBQ1R4UixVQUFXa1AsV0FDWHpTLE1BQU9BLFNBSWYsRUF6QmE2Vyx3QkFBdUJoWSxZQUFHLDBCQXlCckNnWSx3QkFBd0I3WCxVQUFZLDJCQUl0QzZYLHdCQUF3Qm5jLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLG1uQkFBdW5Cc1osd0JBQXdCbmMsWUFBYSxJQUFBVSxvQkFBQSw0QkFBQXliLHdCQUFBbFIsYUFBQSxzRkFBQUMsMEJBQUFBLHdCQUFBLHFEQUFBQyxLQUFBLDBCQUFBQyxXQUFBK1Esd0JBQUFsUixhQUFBSSxLQUFBLG9ELDJ4Q0M3QzF0QixJQUFNeUMsWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLHdCQUFzQiwwQkFFOUJBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksa0ZBRTNESCxFQUFBQSxJQUFBQSxJQUFBLGlHQUNBQSxFQUFBQSxJQUFBQSxJQUFDbUssU0FBQUEsR0FBTSxDQUFDakssUUFBUSxXQUNsQkYsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsZ0NBQWdDeUQsUUFBUSxXQUdwRCxDQWpCd0JKLFdBQVU1SixZQUFBLGFBbUJsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ25CdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQyw4QkFDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS0NtTyxxQkFBdUIsU0FBU0EsdUJBQzNDLElBQUFyTSxVQUFpQzFDLEVBQUFBLE1BQUFBLFVBQy9CLGlCQUFPLENBQ0wzSSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLEdBQy9CMFYsUUFBUyxDQUNQRSxjQUFlLFNBQUFBLGNBQUNqYSxLQUFNdVIsUUFBU2hKLFdBQVMsT0FDdENBLFVBQVUyUixPQUFPbGEsS0FBTSxPQUFRdVIsUUFBUSxHQUU1QyxHQUNELElBUk1uTixZQUFXcUwsU0FBWHJMLFlBQWEyVixRQUFPdEssU0FBUHNLLFFBV3JCLE9BQ0V6VyxFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVEsQ0FDUGlCLFlBQWFBLFlBQ2JFLE9BQVFNLE9BQUFBLEVBQ1JtVixRQUFTQSxRQUNUeFIsVUFBV2tQLGNBSW5CLEVBdEJhcUUscUJBQW9CalksWUFBRyx1QkFzQmxDaVkscUJBQXFCOVgsVUFBWSx3QkFJbkM4WCxxQkFBcUJwYyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxrZ0JBQXNnQnVaLHFCQUFxQnBjLFlBQWEsSUFBQVUsb0JBQUEseUJBQUEwYixxQkFBQW5SLGFBQUEsbUZBQUFDLDBCQUFBQSx3QkFBQSxrREFBQUMsS0FBQSx1QkFBQUMsV0FBQWdSLHFCQUFBblIsYUFBQUksS0FBQSxpRCxrNkNDMUNubUIsSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxvQkFBa0IscUJBRTFCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHdHQUUzREgsRUFBQUEsSUFBQUEsSUFBQSxnTkFDQUEsRUFBQUEsSUFBQUEsSUFBQSx3REFDQUEsRUFBQUEsSUFBQUEsSUFBQ21LLFNBQUFBLEdBQU0sQ0FBQ2pLLFFBQVEsV0FDbEJGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLDRCQUE0QnlELFFBQVEsV0FHaEQsQ0FsQndCSixXQUFVNUosWUFBQSxhQW9CbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNwQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsMEJBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtDb08saUJBQW1CLFNBQVNBLG1CQUN2QyxJQUFNQyxrQkFBbUJsUSxFQUFBQSxNQUFBQSxjQUN2QixTQUFDbVEsV0FBWUMsZ0JBQWlCQyxxQkFDNUIsTUFBd0IsVUFBcEJELGlCQUErQkMsb0JBQW9CdkMsU0FBUyxRQUN2RCxPQUVGLElBQ1QsR0FDQSxJQUdJeFYsYUFBYzJJLEVBQUFBLE1BQUFBLFVBQVEsa0JBQU0sSUFBSTFJLEtBQUssS0FBTSxFQUFHLEVBQUUsR0FBRSxJQUV4RCxPQUNFZixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVEsQ0FDUGlCLFlBQWFBLFlBQ2JFLE9BQVFNLE9BQUFBLEVBQ1JvWCxpQkFBa0JBLGlCQUNsQnpULFVBQVdrUCxjQUluQixFQXZCYXNFLGlCQUFnQmxZLFlBQUcsbUJBdUI5QmtZLGlCQUFpQi9YLFVBQVksbUJBSS9CK1gsaUJBQWlCcmMsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsdWtCQUEya0J3WixpQkFBaUJyYyxZQUFhLElBQUFVLG9CQUFBLHFCQUFBMmIsaUJBQUFwUixhQUFBLCtFQUFBQywwQkFBQUEsd0JBQUEsOENBQUFDLEtBQUEsbUJBQUFDLFdBQUFpUixpQkFBQXBSLGFBQUFJLEtBQUEsNkMscXBDQzVDaHFCLElBQU15QyxZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sVUFBUSxXQUVoQkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSx5QkFDekRILEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHVCQUU5REgsRUFBQUEsSUFBQUEsSUFBQSxpRkFDQUEsRUFBQUEsSUFBQUEsSUFBQSxrS0FDQUEsRUFBQUEsSUFBQUEsSUFBQSxpR0FBMkZBLEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGlCQUErQixTQUFTSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxlQUE2QixpQkFDcE5ILEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLGlCQUFpQnlELFFBQVEsVUFFdkMsQ0FsQndCSixXQUFVNUosWUFBQSxhQW9CbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNuQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsZ0JBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h5RixTQUFVLENBQ1JMLFVBQVcsQ0FBRU8sUUFBUyxDQUFFQyxLQUFNLE9BQzlCekUsT0FBUSxDQUFFd0UsUUFBUyxDQUFFQyxLQUFNLFFBRTdCckosV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLTmxLLFNBQVcsU0FBWEEsU0FBWUMsTUFBSSxPQUNwQkosRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRMUMsT0FBQW1ELE9BQUEsR0FBS0YsUUFDVixFQUhGRCxTQUFRSSxZQUFHLFdBTWpCLElBRWF1WSxPQUFTM1ksU0FBU00sS0FBSyxDQUFDLEdBQUdxWSxPQUFPcFksVUFBWSxTQUMzRG9ZLE9BQU8xWSxLQUFPLENBQ1pZLE9BQVFNLE9BQUFBLEVBQ1JxUSxPQUxhLFNBQVRBLFNBQU0sT0FBUyxJQUFJNVEsS0FBSyxLQUFNLEVBQUcsR0FBRyxFQU14Q2tFLFVBQVdrUCxZQUtiMkUsT0FBTzFjLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHdGQUE4RjZaLE9BQU8xYyxZQUFhLElBQUFVLG9CQUFBLFUsNnRDQ3JDL0osSUFBTW9OLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxVQUFRLFdBRWhCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLFlBQ3pESCxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxTQUU5REgsRUFBQUEsSUFBQUEsSUFBQSwwSEFDQUEsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsZ0JBQWdCeUQsUUFBUSxVQUV0QyxDQWhCd0JKLFdBQVU1SixZQUFBLGFBa0JsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ2xCdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQyxnQkFDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHlGLFNBQVUsQ0FDUkwsVUFBVyxDQUFFTyxRQUFTLENBQUVDLEtBQU0sT0FDOUJ6RSxPQUFRLENBQUV3RSxRQUFTLENBQUVDLEtBQU0sT0FDM0IzRSxZQUFhLENBQ1gwRSxRQUFTLENBQ1BDLEtBQU0sT0FHVjlFLFlBQWEsQ0FDWDZFLFFBQVMsQ0FDUEMsS0FBTSxPQUdWekcsT0FBUSxVQUVWNUMsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLTmxLLFNBQVcsU0FBWEEsU0FBWUMsTUFBSSxPQUNwQkosRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRMUMsT0FBQW1ELE9BQUEsR0FBS0YsUUFDVixFQUhGRCxTQUFRSSxZQUFHLFdBTVYsSUFBTXdZLE9BQVM1WSxTQUFTTSxLQUFLLENBQUMsR0FBR3NZLE9BQU9yWSxVQUFZLFNBQzNEcVksT0FBTzNZLEtBQU8sQ0FDWlUsWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxJQUMvQkosWUFBYUMsSUFBQUEsR0FBTTRCLE9BQ25CeEIsT0FBUU0sT0FBQUEsRUFDUnRDLE9BQVEsR0FDUmlHLFVBQVdrUCxZQUtiNEUsT0FBTzNjLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHdGQUE4RjhaLE9BQU8zYyxZQUFhLElBQUFVLG9CQUFBLFUsK3ZDQ2hEL0osSUFBTW9OLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxhQUFXLGNBRW5CQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLDZCQUEyQyxLQUFLSCxFQUFBQSxJQUFBQSxJQUFBLFVBQVFHLFdBQVcsTUFBSSxlQUVsSUgsRUFBQUEsSUFBQUEsSUFBQSxvQ0FBOEJBLEVBQUFBLElBQUFBLElBQUEsVUFBUUcsV0FBVyxLQUFHLG9CQUE4QixnQ0FBZ0NILEVBQUFBLElBQUFBLElBQUNTLGtCQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sVUFBVW1ILFFBQVEsVUFBUSxXQUFxQixTQUFTRixFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLFVBQVVtSCxRQUFRLFVBQVEsV0FBcUIsOENBQThDRixFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLFdBQVdtSCxRQUFRLFVBQVEsWUFBc0IsV0FDellGLEVBQUFBLElBQUFBLElBQUEsWUFBS0EsRUFBQUEsSUFBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsZUFBYSxpZkFxQjlCSCxFQUFBQSxJQUFBQSxJQUFBLFlBQUtBLEVBQUFBLElBQUFBLElBQUEsUUFBTUcsV0FBVyxNQUNsQixVQUFhLGVBQWEsZ0xBTzlCSCxFQUFBQSxJQUFBQSxJQUFBLFlBQUtBLEVBQUFBLElBQUFBLElBQUEsUUFBTUcsV0FBVyxNQUNsQixVQUFhLGVBQWEsb3ZCQWdCOUJILEVBQUFBLElBQUFBLElBQUEsWUFBS0EsRUFBQUEsSUFBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsZUFBYSxrVEFZOUJILEVBQUFBLElBQUFBLElBQUEscUJBQWVBLEVBQUFBLElBQUFBLElBQUNTLGtCQUFBQSxFQUFNLENBQUNDLEtBQUssV0FBVzNILE1BQU0sWUFBWW1ILFFBQVEsVUFBUSx3QkFBa0Msc0NBQXNDRixFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxPQUFxQixNQUFNSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxhQUEyQixNQUFNSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxXQUF5QixTQUFTSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxZQUEwQixNQUNqWEgsRUFBQUEsSUFBQUEsSUFBQ21LLFNBQUFBLEdBQU0sQ0FBQ2pLLFFBQVEsV0FDbEJGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLG1CQUFtQnlELFFBQVEsWUFFbkNGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLG9CQUFrQixxQkFFMUJBLEVBQUFBLElBQUFBLElBQUEsaUJBQVdBLEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGFBQTJCLGdFQUFnRUgsRUFBQUEsSUFBQUEsSUFBQ1Msa0JBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxvQkFBb0JSLFFBQVEsVUFBUSxtQkFBNkIsMEJBRWxOLENBbEZ3QkosV0FBVTVKLFlBQUEsYUFvRmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDcEY1QixtQkFDRTlLLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGFBR1Z2SyxXQUFZLENBQ1YsU0FBQ0MsT0FBSyxPQUNKQyxFQUFBQSxZQUFBQSxLQUFBLE9BQUtvTSxNQUFPLENBQUU0TSxPQUFRLEtBQU05WSxVQUMxQkYsRUFBQUEsWUFBQUEsS0FBQ0QsTUFBSyxLQUNGLElBS0NrWixVQUFZLFNBQVNBLFlBQ2hDLElBQU1oVSxXQUFZd0UsRUFBQUEsTUFBQUEsVUFBUSxrQkFBTWpGLEVBQUFBLElBQUFBLElBQWdCRCxpQkFBTyxHQUFFLElBRXpELE9BQ0V2RSxFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVEsQ0FDUGlCLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEVBQUcsSUFDL0JDLE9BQVFNLE9BQUFBLEVBQ1IyRCxVQUFXQSxhQUluQixFQVphZ1UsVUFBUzFZLFlBQUcsWUFZdkIwWSxVQUFVdlksVUFBWSxjQUl4QnVZLFVBQVU3YyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxrU0FBd1NnYSxVQUFVN2MsWUFBYSxJQUFBVSxvQkFBQSxjQUFBbWMsVUFBQTVSLGFBQUEsd0VBQUFDLDBCQUFBQSx3QkFBQSx1Q0FBQUMsS0FBQSxZQUFBQyxXQUFBeVIsVUFBQTVSLGFBQUFJLEtBQUEsc0MsNndDQ3JDL1csSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxzQkFBb0IsdUJBRTVCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLFlBQ3pESCxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxVQUU5REgsRUFBQUEsSUFBQUEsSUFBQSx5TUFDQUEsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsOEJBQThCeUQsUUFBUSxVQUVwRCxDQWhCd0JKLFdBQVU1SixZQUFBLGFBa0JsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ2xCdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQyw0QkFDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHlGLFNBQVUsQ0FDUkwsVUFBVyxDQUFFTyxRQUFTLENBQUVDLEtBQU0sT0FDOUJ6RSxPQUFRLENBQUV3RSxRQUFTLENBQUVDLEtBQU0sT0FDM0IzRSxZQUFhLENBQ1gwRSxRQUFTLENBQ1BDLEtBQU0sT0FHVnlULG1CQUFvQixVQUV0QjljLFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS05sSyxTQUFXLFNBQVhBLFNBQVlDLE1BQUksT0FDcEJKLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUTFDLE9BQUFtRCxPQUFBLEdBQUtGLFFBQ1YsRUFIRkQsU0FBUUksWUFBRyxXQU1WLElBQU00WSxtQkFBcUJoWixTQUFTTSxLQUFLLENBQUMsR0FBRzBZLG1CQUFtQnpZLFVBQVkscUJBQ25GeVksbUJBQW1CL1ksS0FBTyxDQUN4QlUsWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxJQUMvQkMsT0FBUU0sT0FBQUEsRUFDUjJELFVBQVdrUCxXQUNYK0UsbUJBQW9CLEtBS3RCQyxtQkFBbUIvYyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx3RkFBOEZrYSxtQkFBbUIvYyxZQUFhLElBQUFVLG9CQUFBLHNCLHlvQ0MzQ3ZMLElBQU1vTixZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sT0FBSyxRQUViQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHNCQUN6REgsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksYUFBY0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksdUNBRTlESCxFQUFBQSxJQUFBQSxJQUFBLG9FQUNBQSxFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyxhQUFheUQsUUFBUSxVQUVuQyxDQWhCd0JKLFdBQVU1SixZQUFBLGFBa0JsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ2pCdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQyxhQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYeUYsU0FBVSxDQUNSTCxVQUFXLENBQUVPLFFBQVMsQ0FBRUMsS0FBTSxPQUM5QjNFLFlBQWEsQ0FBRTBFLFFBQVMsQ0FBRUMsS0FBTSxPQUNoQzlFLFlBQWEsQ0FBRTZFLFFBQVMsQ0FBRUMsS0FBTSxPQUNoQ3pFLE9BQVEsQ0FBRXdFLFFBQVMsQ0FBRUMsS0FBTSxPQUMzQkcsSUFBSyxDQUFFSixRQUFTLENBQUVDLEtBQU0sVUFFMUJySixXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtObEssU0FBVyxTQUFYQSxTQUFZQyxNQUFJLE9BQ3BCSixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVExQyxPQUFBbUQsT0FBQSxHQUFLRixRQUNWLEVBSEZELFNBQVFJLFlBQUcsV0FNVixJQUFNNlksSUFBTWpaLFNBQVNNLEtBQUssQ0FBQyxHQUFHMlksSUFBSTFZLFVBQVksTUFDckQwWSxJQUFJaFosS0FBTyxDQUNUVSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLElBQy9CSixZQUFhQyxJQUFBQSxHQUFNYSxLQUNuQlQsT0FBUU0sT0FBQUEsRUFDUjJELFVBQVdrUCxXQUNYdk8sSUFBSyxJQUFJN0UsS0FBSyxLQUFNLEVBQUcsRUFBRyxHQUFJLEdBQUksS0FLcENxWSxJQUFJaGQsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsd0ZBQThGbWEsSUFBSWhkLFlBQWEsSUFBQVUsb0JBQUEsTywydUNDeEN6SixJQUFNb04sWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLFlBQVUsYUFFbEJBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksYUFFM0RILEVBQUFBLElBQUFBLElBQUEsK0dBQXlHQSxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxTQUF1QiwwQkFDMUpILEVBQUFBLElBQUFBLElBQUEsc0JBQ0FBLEVBQUFBLElBQUFBLElBQUEsWUFBS0EsRUFBQUEsSUFBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsZUFBYSw0akJBMEI5QkgsRUFBQUEsSUFBQUEsSUFBQ21LLFNBQUFBLEdBQU0sQ0FBQ2pLLFFBQVEsV0FDbEJGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLGtCQUFrQnlELFFBQVEsV0FHdEMsQ0E3Q3dCSixXQUFVNUosWUFBQSxhQStDbEM0SixXQUFXTSxnQkFBaUIsRSwyRUMvQ3RCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsa0JBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtDZ1AsU0FBVyxTQUFTQSxXQUMvQixJQUFBbE4sVUFBa0MxQyxFQUFBQSxNQUFBQSxVQUNoQyxpQkFBTyxDQUNMM0ksWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxJQUMvQjBCLFNBQVUsQ0FDUjRLLEtBQU0sU0FDTkMsVUFBVyxvQkFDWEMsSUFBSyxNQUNMQyxNQUFPLE1BQ1BDLFNBQVUsUUFDVkMsS0FBTSxVQUNOQyxNQUFPLE1BQ1BDLE9BQVEsWUFFUkMsU0FBVSxTQUFBQSxTQUFDQyxPQUFLLFVBQUExRSxPQUFTMEUsTUFBSyxVQUVqQyxHQUNELElBaEJNaE4sWUFBV3FMLFNBQVhyTCxZQUFhMkIsU0FBUTBKLFNBQVIxSixTQW1CckIsT0FDRXpDLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQaUIsWUFBYUEsWUFDYkUsT0FBUU0sT0FBQUEsRUFDUjJELFVBQVdrUCxXQUNYMVIsU0FBVUEsWUFJbEIsRUE5QmE0VyxTQUFROVksWUFBRyxXQThCdEI4WSxTQUFTM1ksVUFBWSxXQUl2QjJZLFNBQVNqZCxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSwycEJBQStwQm9hLFNBQVNqZCxZQUFhLElBQUFVLG9CQUFBLGFBQUF1YyxTQUFBaFMsYUFBQSx1RUFBQUMsMEJBQUFBLHdCQUFBLHNDQUFBQyxLQUFBLFdBQUFDLFdBQUE2UixTQUFBaFMsYUFBQUksS0FBQSxxQyx5b0NDbkRwdUIsSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxPQUFLLFFBRWJBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksc0JBQ3pESCxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSx1Q0FFOURILEVBQUFBLElBQUFBLElBQUEsb0VBQ0FBLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLGFBQWF5RCxRQUFRLFVBRW5DLENBaEJ3QkosV0FBVTVKLFlBQUEsYUFrQmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDakJ0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLGFBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h5RixTQUFVLENBQ1JMLFVBQVcsQ0FBRU8sUUFBUyxDQUFFQyxLQUFNLE9BQzlCM0UsWUFBYSxDQUFFMEUsUUFBUyxDQUFFQyxLQUFNLE9BQ2hDOUUsWUFBYSxDQUFFNkUsUUFBUyxDQUFFQyxLQUFNLE9BQ2hDekUsT0FBUSxDQUFFd0UsUUFBUyxDQUFFQyxLQUFNLE9BQzNCQyxJQUFLLENBQUVGLFFBQVMsQ0FBRUMsS0FBTSxVQUUxQnJKLFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS05sSyxTQUFXLFNBQVhBLFNBQVlDLE1BQUksT0FDcEJKLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUTFDLE9BQUFtRCxPQUFBLEdBQUtGLFFBQ1YsRUFIRkQsU0FBUUksWUFBRyxXQU1WLElBQU0rWSxJQUFNblosU0FBU00sS0FBSyxDQUFDLEdBQUc2WSxJQUFJNVksVUFBWSxNQUNyRDRZLElBQUlsWixLQUFPLENBQ1RVLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEVBQUcsSUFDL0JKLFlBQWFDLElBQUFBLEdBQU1hLEtBQ25CVCxPQUFRTSxPQUFBQSxFQUNSMkQsVUFBV2tQLFdBQ1h6TyxJQUFLLElBQUkzRSxLQUFLLEtBQU0sRUFBRyxFQUFHLElBSzVCdVksSUFBSWxkLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHdGQUE4RnFhLElBQUlsZCxZQUFhLElBQUFVLG9CQUFBLE8sNDJDQ3hDekosSUFBTW9OLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxzQkFBb0IsdUJBRTVCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHNDQUUzREgsRUFBQUEsSUFBQUEsSUFBQSw4RUFBd0VBLEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGlCQUErQixlQUNqSUgsRUFBQUEsSUFBQUEsSUFBQSxVQUFHQSxFQUFBQSxJQUFBQSxJQUFBLFVBQVFHLFdBQVcsS0FBRyxTQUFtQixTQUFTSCxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGFBQWFtSCxRQUFRLFVBQVEsY0FBd0IsYUFBYUYsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLEtBQUcsT0FBYSx5Q0FDakxILEVBQUFBLElBQUFBLElBQUEsVUFBR0EsRUFBQUEsSUFBQUEsSUFBQSxVQUFRRyxXQUFXLEtBQUcsY0FBd0IsdUhBQ2pESCxFQUFBQSxJQUFBQSxJQUFDbUssU0FBQUEsR0FBTSxDQUFDakssUUFBUSxXQUNsQkYsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsK0JBQStCeUQsUUFBUSxXQUduRCxDQW5Cd0JKLFdBQVU1SixZQUFBLGFBcUJsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ3JCdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQyw0QkFDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS1osU0FBU2tQLGFBQWFDLFNBQVVDLFdBQzlCLE1BQU8sSUFBUHJRLE9BQVdxUSxVQUFTLDZDQUFBclEsT0FDbEJzUSxLQUFLQyxVQUFVSCxTQUFVLEtBQU0sR0FDbkMsQ0FFTyxJQUFNSSxtQkFBcUIsU0FBU0EscUJBQ3pDLElBQU1DLFVBQVdDLEVBQUFBLE1BQUFBLFFBQU8sT0FFeEJsSSxFQUFBQSxNQUFBQSxZQUFVLFdBTVIsT0FBTyxXQUNMTyxPQUFPNEgsYUFBYUYsb0JBQVEsRUFBUkEsU0FBVWhLLFFBQ2hDLENBQ0YsR0FBRyxJQUVILElBQU10TyxlQUFnQmlILEVBQUFBLE1BQUFBLGNBQVksU0FBQ2dSLFVBUWpDckgsT0FBTzRILGFBQWFGLG9CQUFRLEVBQVJBLFNBQVVoSyxTQUM5QmdLLFNBQVNoSyxRQUFVc0MsT0FBTzZILFlBQVcsV0FDbkM3SCxPQUFPRyxNQUFNaUgsYUFBYUMsU0FBVSxpQkFDdEMsR0FBRyxJQUNMLEdBQUcsSUFFR1Msb0JBQXFCelIsRUFBQUEsTUFBQUEsY0FBWSxTQUFDZ1IsVUFJdENySCxPQUFPNEgsYUFBYUYsb0JBQVEsRUFBUkEsU0FBVWhLLFNBQzlCZ0ssU0FBU2hLLFFBQVVzQyxPQUFPNkgsWUFBVyxXQUNuQzdILE9BQU9HLE1BQU1pSCxhQUFhQyxTQUFVLHNCQUN0QyxHQUFHLElBQ0wsR0FBRyxJQUVHMVksYUFBYzJJLEVBQUFBLE1BQUFBLFVBQVEsa0JBQU0sSUFBSTFJLEtBQUssS0FBTSxFQUFHLEVBQUUsR0FBRSxJQUV4RCxPQUNFZixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVEsQ0FDUGlCLFlBQWFBLFlBQ2JFLE9BQVFNLE9BQUFBLEVBQ1IyRCxVQUFXa1AsV0FDWDhGLG1CQUFvQkEsbUJBQ3BCMVksY0FBZUEsaUJBSXZCLEVBbkRhcVksbUJBQWtCclosWUFBRyxxQkFtRGhDcVosbUJBQW1CbFosVUFBWSxxQkFJakNrWixtQkFBbUJ4ZCxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxraERBQXNoRDJhLG1CQUFtQnhkLFlBQWEsSUFBQVUsb0JBQUEsdUJBQUE4YyxtQkFBQXZTLGFBQUEsaUZBQUFDLDBCQUFBQSx3QkFBQSxnREFBQUMsS0FBQSxxQkFBQUMsV0FBQW9TLG1CQUFBdlMsYUFBQUksS0FBQSwrQyxpeENDN0UvbUQsSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxlQUFhLGdCQUVyQkEsRUFBQUEsSUFBQUEsSUFBQ21LLFNBQUFBLEdBQU0sQ0FBQ2pLLFFBQVEsV0FDbEJGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLHVCQUF1QnlELFFBQVEsWUFFdkNGLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksK0NBRTNESCxFQUFBQSxJQUFBQSxJQUFBLHVKQUVKLENBakJ3QkYsV0FBVTVKLFlBQUEsYUFtQmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDbEJ0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLHFCQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLQzZQLFlBQWMsU0FBU0EsY0FDbEMsSUFBQWpTLFdBQXdCQyxFQUFBQSxNQUFBQSxVQUFTdEgsSUFBQUEsR0FBTXFCLE9BQU1rRyxZQUFBQyxFQUFBQSxjQUFBQSxHQUFBSCxVQUFBLEdBQXRDME0sS0FBSXhNLFdBQUEsR0FBRWdTLFFBQU9oUyxXQUFBLEdBQ3BCc0QsWUFBd0J2RCxFQUFBQSxNQUFBQSxVQUFTLElBQUluSCxLQUFLLEtBQU0sRUFBRyxLQUFJMkssWUFBQXRELEVBQUFBLGNBQUFBLEdBQUFxRCxXQUFBLEdBQWhEL08sS0FBSWdQLFdBQUEsR0FBRTZKLFFBQU83SixXQUFBLEdBQ2R1SixZQUFhek0sRUFBQUEsTUFBQUEsY0FBWSxTQUFDZ04sU0FBTyxPQUFLRCxRQUFRQyxRQUFRLEdBQUUsQ0FBQ0QsVUFDekRYLFFBQVNwTSxFQUFBQSxNQUFBQSxjQUFZLFNBQUM0UixTQUFPLE9BQUtELFFBQVFDLFFBQVEsR0FBRSxDQUFDRCxVQUNyREUsYUFBYzdSLEVBQUFBLE1BQUFBLGNBQ2xCLFNBQUNnTixTQUNDRCxRQUFRQyxTQUNSMkUsUUFBUXZaLElBQUFBLEdBQU00QixPQUNoQixHQUNBLENBQUMrUyxRQUFTNEUsVUFFWixPQUNFbmEsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRLENBQ1BuRCxLQUFNQSxLQUNOc0UsT0FBUU0sT0FBQUEsRUFDUjJELFVBQVdrUCxXQUNYa0csWUFBYUEsWUFDYnBGLFdBQVlBLFdBQ1pMLE9BQVFBLE9BQ1JELEtBQU1BLFFBSWQsRUF6QmF1RixZQUFXM1osWUFBRyxjQXlCekIyWixZQUFZeFosVUFBWSxjQUkxQndaLFlBQVk5ZCxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSwrc0JBQXF0QmliLFlBQVk5ZCxZQUFhLElBQUFVLG9CQUFBLGdCQUFBb2QsWUFBQTdTLGFBQUEsMEVBQUFDLDBCQUFBQSx3QkFBQSx5Q0FBQUMsS0FBQSxjQUFBQyxXQUFBMFMsWUFBQTdTLGFBQUFJLEtBQUEsd0MsZzFDQzdDaHlCLElBQU15QyxZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sbUJBQWlCLG9CQUV6QkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSwwREFFM0RILEVBQUFBLElBQUFBLElBQUEsZ0ZBQ0FBLEVBQUFBLElBQUFBLElBQUNtSyxTQUFBQSxHQUFNLENBQUNqSyxRQUFRLFdBQ2xCRixFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyw0QkFBNEJ5RCxRQUFRLFdBR2hELENBakJ3QkosV0FBVTVKLFlBQUEsYUFtQmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDbkJ0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLHlCQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FvQkwsSUFBTWlRLGdCQUFrQixTQUFTQSxrQkFDdEMsSUFBTUMsVUFBV1QsRUFBQUEsTUFBQUEsUUFBTyxPQUV4QmxJLEVBQUFBLE1BQUFBLFlBQVUsV0FDUixPQUFPLFdBRUxPLE9BQU80SCxhQUFhUSxvQkFBUSxFQUFSQSxTQUFVMUssUUFDaEMsQ0FDRixHQUFHLElBRUgsSUFBTTJLLGlCQUFrQmhTLEVBQUFBLE1BQUFBLGNBQVksU0FBQ0UsTUFBTytSLGVBSzFDRixTQUFTMUssUUFBVXNDLE9BQU82SCxZQUFXLFdBQ25DN0gsT0FBT0csTUEvQmIsU0FBU2lILGFBQWE3USxNQUFLM0QsTUFBK0MsSUFBM0MyVixPQUFNM1YsS0FBTjJWLE9BQVFDLFFBQU81VixLQUFQNFYsUUFBU0MsU0FBUTdWLEtBQVI2VixTQUFVQyxRQUFPOVYsS0FBUDhWLFFBQVMvYyxJQUFHaUgsS0FBSGpILElBQzdEZ2QsT0FBUyxHQVViLE9BVElKLE9BQ0ZJLE9BQVMsU0FDQUgsUUFDVEcsT0FBUyxVQUNBRixTQUNURSxPQUFTLFdBQ0FELFVBQ1RDLE9BQVMsVUFFSix1QkFBUDFSLE9BQThCMFIsUUFBTTFSLE9BQUd0TCxJQUFHLGdEQUU1QyxDQWtCbUJ5YixDQUFhN1EsRUFBTytSLGVBQ25DLEdBQUcsSUFDTCxHQUFHLElBRUczWixhQUFjMkksRUFBQUEsTUFBQUEsVUFBUSxrQkFBTSxJQUFJMUksS0FBSyxLQUFNLEVBQUcsR0FBRyxHQUFFLElBRXpELE9BQ0VmLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQaUIsWUFBYUEsWUFDYkUsT0FBUU0sT0FBQUEsRUFDUjJELFVBQVdrUCxXQUNYcUcsZ0JBQWlCQSxtQkFJekIsRUFoQ2FGLGdCQUFlL1osWUFBRyxrQkFnQzdCK1osZ0JBQWdCNVosVUFBWSxrQkFJOUI0WixnQkFBZ0JsZSxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx3MkJBQTYyQnFiLGdCQUFnQmxlLFlBQWEsSUFBQVUsb0JBQUEsb0JBQUF3ZCxnQkFBQWpULGFBQUEsOEVBQUFDLDBCQUFBQSx3QkFBQSw2Q0FBQUMsS0FBQSxrQkFBQUMsV0FBQThTLGdCQUFBalQsYUFBQUksS0FBQSw0QyxxMkNDbkVoOEIsSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxjQUFZLGVBRXBCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGNBQ3pESCxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxjQUFlSCxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLE9BQU9tSCxRQUFRLFVBQVEsVUFDcEZGLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLG9DQUU5REgsRUFBQUEsSUFBQUEsSUFBQSxxQ0FBK0JBLEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFFBQXNCLDhEQUE4REgsRUFBQUEsSUFBQUEsSUFBQ1Msa0JBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxPQUFPbUgsUUFBUSxVQUFRLFFBQWtCLGlCQUNqTkYsRUFBQUEsSUFBQUEsSUFBQ21LLFNBQUFBLEdBQU0sQ0FBQ2pLLFFBQVEsV0FDbEJGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLHFCQUFxQnlELFFBQVEsV0FHekMsQ0FuQndCSixXQUFVNUosWUFBQSxhQXFCbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNyQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsb0JBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtDMFEsV0FBYSxTQUFTQSxhQUNqQyxJQUFBOVMsV0FBd0JDLEVBQUFBLE1BQUFBLFVBQVMsSUFBSW5ILEtBQUssS0FBTSxFQUFHLElBQUdvSCxZQUFBQyxFQUFBQSxjQUFBQSxHQUFBSCxVQUFBLEdBQS9DdkwsS0FBSXlMLFdBQUEsR0FBRW9OLFFBQU9wTixXQUFBLEdBRWQ4TSxZQUFhek0sRUFBQUEsTUFBQUEsY0FBWSxTQUFDZ04sU0FBTyxPQUFLRCxRQUFRQyxRQUFRLEdBQUUsQ0FBQ0QsVUFFL0QsT0FDRXZWLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQbkQsS0FBTUEsS0FDTnNFLE9BQVFNLE9BQUFBLEVBQ1IyRCxVQUFXa1AsV0FDWGMsV0FBWUEsY0FJcEIsRUFmYThGLFdBQVV4YSxZQUFHLGFBZXhCd2EsV0FBV3JhLFVBQVksYUFJekJxYSxXQUFXM2UsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEscVhBQTJYOGIsV0FBVzNlLFlBQWEsSUFBQVUsb0JBQUEsZUFBQWllLFdBQUExVCxhQUFBLHlFQUFBQywwQkFBQUEsd0JBQUEsd0NBQUFDLEtBQUEsYUFBQUMsV0FBQXVULFdBQUExVCxhQUFBSSxLQUFBLHVDLDA2Q0NuQ3BjLElBQU15QyxZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0saUJBQWUsa0JBRXZCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHlGQUUzREgsRUFBQUEsSUFBQUEsSUFBQSxvSkFDQUEsRUFBQUEsSUFBQUEsSUFBQSwwREFDQUEsRUFBQUEsSUFBQUEsSUFBQSxVQUFHQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsS0FBRyxTQUFlLGtHQUNwQ0gsRUFBQUEsSUFBQUEsSUFBQ21LLFNBQUFBLEdBQU0sQ0FBQ2pLLFFBQVEsV0FDbEJGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLHlCQUF5QnlELFFBQVEsV0FHN0MsQ0FuQndCSixXQUFVNUosWUFBQSxhQXFCbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNyQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsdUJBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQTJCTCxJQUFNMlEsY0FBZ0IsU0FBU0EsZ0JBQ3BDLElBQUEvUyxXQUF3QkMsRUFBQUEsTUFBQUEsVUFBUyxJQUFJbkgsS0FBSyxLQUFNLEVBQUcsSUFBR29ILFlBQUFDLEVBQUFBLGNBQUFBLEdBQUFILFVBQUEsR0FBL0N2TCxLQUFJeUwsV0FBQSxHQUFFb04sUUFBT3BOLFdBQUEsR0FFZDhNLFlBQWF6TSxFQUFBQSxNQUFBQSxjQUFZLFNBQUNnTixTQUFPLE9BQUtELFFBQVFDLFFBQVEsR0FBRSxDQUFDRCxVQUV6RDBGLGVBQWdCelMsRUFBQUEsTUFBQUEsY0FBWSxTQUFDZ0gsT0FDakMyQyxPQUFPRyxNQTVCWCxTQUFTaUgsYUFBYS9KLE9BQ3BCLE9BQUtBLE1BR0F6RCxNQUFNQyxRQUFRd0QsT0FPRSxJQUFqQkEsTUFBTXhRLE9BQ0QsaUVBQVBvSyxPQUNtQm9HLE1BQU0sR0FBRzBMLGlCQUFnQixtREFHdkMsdUVBQVA5UixPQUNnQm9HLE1BQU0sR0FBRzBMLGlCQUFnQix3QkFBQTlSLE9BQ3ZCb0csTUFBTSxHQUFHMEwsaUJBQWdCLGlFQWJsQyw0REFBUDlSLE9BQ2FvRyxNQUFNM0osTUFBTXFWLGlCQUFnQix3QkFBQTlSLE9BQ3pCb0csTUFBTTFKLElBQUlvVixpQkFBZ0IsaUdBTG5DLFVBa0JYLENBUWlCM0IsQ0FBYS9KLE9BQzVCLEdBQUcsSUFFSCxPQUNFeFAsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRLENBQ1BuRCxLQUFNQSxLQUNOc0UsT0FBUU0sT0FBQUEsRUFDUjJELFVBQVdrUCxXQUNYYyxXQUFZQSxXQUNaZ0csY0FBZUEsaUJBSXZCLEVBcEJhRCxjQUFhemEsWUFBRyxnQkFvQjNCeWEsY0FBY3RhLFVBQVksZ0JBSTVCc2EsY0FBYzVlLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLG9nQkFBMGdCK2IsY0FBYzVlLFlBQWEsSUFBQVUsb0JBQUEsa0JBQUFrZSxjQUFBM1QsYUFBQSw0RUFBQUMsMEJBQUFBLHdCQUFBLDJDQUFBQyxLQUFBLGdCQUFBQyxXQUFBd1QsY0FBQTNULGFBQUFJLEtBQUEsMEMsdzFDQzlEemxCLElBQU15QyxZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0saUJBQWUsa0JBRXZCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHNDQUUzREgsRUFBQUEsSUFBQUEsSUFBQSx3RUFBa0VBLEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFdBQXlCLGVBQ3JISCxFQUFBQSxJQUFBQSxJQUFBLDZFQUF1RUEsRUFBQUEsSUFBQUEsSUFBQ1Msa0JBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxZQUFZbUgsUUFBUSxVQUFRLGFBQXVCLHdEQUF3REYsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsU0FBdUIsNkJBQTZCSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxrQkFBZ0MsZ0ZBQ3JWSCxFQUFBQSxJQUFBQSxJQUFBLDJCQUFxQkEsRUFBQUEsSUFBQUEsSUFBQ1Msa0JBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxtQkFBbUJtSCxRQUFRLFVBQVEsbUJBQTZCLHdCQUF3QkYsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsaUJBQStCLHdDQUF3Q0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsbUJBQWlDLFlBQVlILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFNBQXVCLDJCQUEyQkgsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcscUJBQW1DLHFCQUFxQkgsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsUUFBc0Isb0dBQW9HSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxpQkFBK0IsY0FDM3BCSCxFQUFBQSxJQUFBQSxJQUFBLFVBQUdBLEVBQUFBLElBQUFBLElBQUEsVUFBUUcsV0FBVyxLQUFHLFNBQW1CLFNBQVNILEVBQUFBLElBQUFBLElBQUNTLGtCQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sYUFBYW1ILFFBQVEsVUFBUSxjQUF3QixhQUFhRixFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsS0FBRyxPQUFhLHlDQUNqTEgsRUFBQUEsSUFBQUEsSUFBQSxVQUFHQSxFQUFBQSxJQUFBQSxJQUFBLFVBQVFHLFdBQVcsS0FBRyxjQUF3Qix1SEFDakRILEVBQUFBLElBQUFBLElBQUNtSyxTQUFBQSxHQUFNLENBQUNqSyxRQUFRLFdBQ2xCRixFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyx5QkFBeUJ5RCxRQUFRLFdBRzdDLENBckJ3QkosV0FBVTVKLFlBQUEsYUF1QmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDdkJ0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLHVCQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLWixTQUFTa1AsYUFBYUMsU0FBVUMsV0FDOUIsTUFBTyxJQUFQclEsT0FBV3FRLFVBQVMsNkNBQUFyUSxPQUNsQnNRLEtBQUtDLFVBQVVILFNBQVUsS0FBTSxHQUNuQyxDQUVPLElBQU0yQixjQUFnQixTQUFTQSxnQkFDcEMsSUFBTXRCLFVBQVdDLEVBQUFBLE1BQUFBLFFBQU8sT0FFeEJsSSxFQUFBQSxNQUFBQSxZQUFVLFdBTVIsT0FBTyxXQUNMTyxPQUFPNEgsYUFBYUYsb0JBQVEsRUFBUkEsU0FBVWhLLFFBQ2hDLENBQ0YsR0FBRyxJQUVILElBQU10TyxlQUFnQmlILEVBQUFBLE1BQUFBLGNBQVksU0FBQ2dSLFVBUWpDckgsT0FBTzRILGFBQWFGLG9CQUFRLEVBQVJBLFNBQVVoSyxTQUM5QmdLLFNBQVNoSyxRQUFVc0MsT0FBTzZILFlBQVcsV0FDbkM3SCxPQUFPRyxNQUFNaUgsYUFBYUMsU0FBVSxpQkFDdEMsR0FBRyxJQUNMLEdBQUcsSUFFR1Msb0JBQXFCelIsRUFBQUEsTUFBQUEsY0FBWSxTQUFDZ1IsVUFJdENySCxPQUFPNEgsYUFBYUYsb0JBQVEsRUFBUkEsU0FBVWhLLFNBQzlCZ0ssU0FBU2hLLFFBQVVzQyxPQUFPNkgsWUFBVyxXQUNuQzdILE9BQU9HLE1BQU1pSCxhQUFhQyxTQUFVLHNCQUN0QyxHQUFHLElBQ0wsR0FBRyxJQUVHMVksYUFBYzJJLEVBQUFBLE1BQUFBLFVBQVEsa0JBQU0sSUFBSTFJLEtBQUssS0FBTSxFQUFHLEVBQUUsR0FBRSxJQUV4RCxPQUNFZixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVEsQ0FDUGlCLFlBQWFBLFlBQ2JFLE9BQVFNLE9BQUFBLEVBQ1IyRCxVQUFXa1AsV0FDWDhGLG1CQUFvQkEsbUJBQ3BCMVksY0FBZUEsaUJBSXZCLEVBbkRhNFosY0FBYTVhLFlBQUcsZ0JBbUQzQjRhLGNBQWN6YSxVQUFZLGdCQUk1QnlhLGNBQWMvZSxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSw2Z0RBQWloRGtjLGNBQWMvZSxZQUFhLElBQUFVLG9CQUFBLGtCQUFBcWUsY0FBQTlULGFBQUEsNEVBQUFDLDBCQUFBQSx3QkFBQSwyQ0FBQUMsS0FBQSxnQkFBQUMsV0FBQTJULGNBQUE5VCxhQUFBSSxLQUFBLDBDLDJ3Q0M1RWhtRCxJQUFNeUMsWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLGdCQUFjLGlCQUV0QkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSx3Q0FDekRILEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGNBQWVILEVBQUFBLElBQUFBLElBQUNTLGtCQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sYUFBYW1ILFFBQVEsVUFBUSxpQkFFNUZGLEVBQUFBLElBQUFBLElBQUEsNkVBQXVFQSxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGFBQWFtSCxRQUFRLFVBQVEsY0FBd0IsY0FDdkpGLEVBQUFBLElBQUFBLElBQUEsVUFBR0EsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLEtBQUcsbUJBQXlCLHFMQUM5Q0gsRUFBQUEsSUFBQUEsSUFBQSxZQUFLQSxFQUFBQSxJQUFBQSxJQUFBLFFBQU1HLFdBQVcsTUFDbEIsVUFBYSxlQUFhLG1mQXlCOUJILEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLHdCQUFzQiwyQkFFOUJBLEVBQUFBLElBQUFBLElBQUEsd0NBQWtDQSxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGVBQWVtSCxRQUFRLFVBQVEsZUFBeUIsd0NBQXdDRixFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxlQUE2QixpREFBaURILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFFBQXNCLE1BQU1ILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGFBQTJCLE1BQU1ILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLE9BQXFCLGVBQWVILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGdCQUE4Qiw4QkFBOEJILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFNBQXVCLGVBQWVILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGVBQTZCLCtEQUErREgsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsU0FBdUIsVUFBVUgsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsZ0JBQThCLHNCQUFzQkgsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsWUFBMEIsOEVBQzczQkgsRUFBQUEsSUFBQUEsSUFBQ21LLFNBQUFBLEdBQU0sQ0FBQ2pLLFFBQVEsV0FDbEJGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLHdCQUF3QnlELFFBQVEsV0FHNUMsQ0FqRHdCSixXQUFVNUosWUFBQSxhQW1EbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNuRHRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsc0JBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQVVMLElBQU0rUSxhQUFlLFNBQVNBLGVBQ25DLElBQU12QixVQUFXQyxFQUFBQSxNQUFBQSxRQUFPLE9BRXhCbEksRUFBQUEsTUFBQUEsWUFBVSxXQU1SLE9BQU8sV0FDTE8sT0FBTzRILGFBQWFGLG9CQUFRLEVBQVJBLFNBQVVoSyxRQUNoQyxDQUNGLEdBQUcsSUFFSCxJQUFNakksY0FBZVksRUFBQUEsTUFBQUEsY0FBWSxTQUFDNlMsVUFRaENsSixPQUFPNEgsYUFBYUYsb0JBQVEsRUFBUkEsU0FBVWhLLFNBQzlCZ0ssU0FBU2hLLFFBQVVzQyxPQUFPNkgsWUFBVyxXQUNuQzdILE9BQU9HLE1BN0JiLFNBQVNpSCxhQUFhOEIsVUFDcEIsTUFBTyxtRUFBUGpTLE9BQ0VzUSxLQUFLQyxVQUFVMEIsU0FBVSxLQUFNLEdBQ25DLENBMEJtQjlCLENBQWE4QixVQUM1QixHQUFHLElBQ0wsR0FBRyxJQUVHdmEsYUFBYzJJLEVBQUFBLE1BQUFBLFVBQVEsa0JBQU0sSUFBSTFJLEtBQUssS0FBTSxFQUFHLEVBQUUsR0FBRSxJQUV4RCxPQUNFZixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVEsQ0FDUGlCLFlBQWFBLFlBQ2JFLE9BQVFNLE9BQUFBLEVBQ1IyRCxVQUFXa1AsV0FDWHZNLGFBQWNBLGFBQ2RELFlBQVUsS0FJbEIsRUF6Q2F5VCxhQUFZN2EsWUFBRyxlQXlDMUI2YSxhQUFhMWEsVUFBWSxlQUkzQjBhLGFBQWFoZixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxxcUNBQXlxQ21jLGFBQWFoZixZQUFhLElBQUFVLG9CQUFBLGlCQUFBc2UsYUFBQS9ULGFBQUEsMkVBQUFDLDBCQUFBQSx3QkFBQSwwQ0FBQUMsS0FBQSxlQUFBQyxXQUFBNFQsYUFBQS9ULGFBQUFJLEtBQUEseUMsZzFDQ2xFdHZDLElBQU15QyxZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sZUFBYSxnQkFFckJBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksNEZBQ3pESCxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxjQUFlSCxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGFBQWFtSCxRQUFRLFVBQVEsaUJBRTVGRixFQUFBQSxJQUFBQSxJQUFBLHlGQUFtRkEsRUFBQUEsSUFBQUEsSUFBQ1Msa0JBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxhQUFhbUgsUUFBUSxVQUFRLGNBQXdCLGNBQ25LRixFQUFBQSxJQUFBQSxJQUFBLHVCQUFpQkEsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsU0FBdUIsZ0RBQ2xFSCxFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSx3QkFBc0IsMkJBRTlCQSxFQUFBQSxJQUFBQSxJQUFBLHdDQUFrQ0EsRUFBQUEsSUFBQUEsSUFBQ1Msa0JBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxpQkFBaUJtSCxRQUFRLFVBQVEsZ0JBQTBCLHdDQUF3Q0YsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsZUFBNkIsaURBQWlESCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxRQUFzQixNQUFNSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxhQUEyQixNQUFNSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxPQUFxQixlQUFlSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxnQkFBOEIsOEJBQThCSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxTQUF1QixlQUFlSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxlQUE2QiwrREFBK0RILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFNBQXVCLFVBQVVILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGdCQUE4QixzQkFBc0JILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFlBQTBCLDhFQUNoNEJILEVBQUFBLElBQUFBLElBQUNtSyxTQUFBQSxHQUFNLENBQUNqSyxRQUFRLFdBQ2xCRixFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyxzQkFBc0J5RCxRQUFRLFdBRzFDLENBdkJ3QkosV0FBVTVKLFlBQUEsYUF5QmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDekJ0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLHFCQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLWixTQUFTa1AsYUFBYS9KLE1BQU9pSyxXQUMzQixNQUFPLElBQVByUSxPQUFXcVEsVUFBUyxtREFBQXJRLE9BQ2xCc1EsS0FBS0MsVUFBVW5LLE1BQU8sS0FBTSxHQUNoQyxDQUVPLElBQU04TCxZQUFjLFNBQVNBLGNBQ2xDLElBQU16QixVQUFXQyxFQUFBQSxNQUFBQSxRQUFPLE9BRXhCbEksRUFBQUEsTUFBQUEsWUFBVSxXQU1SLE9BQU8sV0FDTE8sT0FBTzRILGFBQWFGLG9CQUFRLEVBQVJBLFNBQVVoSyxRQUNoQyxDQUNGLEdBQUcsSUFFSCxJQUFNakksY0FBZVksRUFBQUEsTUFBQUEsY0FBWSxTQUFDNlMsVUFRaENsSixPQUFPNEgsYUFBYUYsb0JBQVEsRUFBUkEsU0FBVWhLLFNBQzlCZ0ssU0FBU2hLLFFBQVVzQyxPQUFPNkgsWUFBVyxXQUNuQzdILE9BQU9HLE1BQU1pSCxhQUFhOEIsU0FBVSxnQkFDdEMsR0FBRyxJQUNMLEdBQUcsSUFFR0UsYUFBYy9TLEVBQUFBLE1BQUFBLGNBQVksU0FBQ2dILE9BUS9CMkMsT0FBTzRILGFBQWFGLG9CQUFRLEVBQVJBLFNBQVVoSyxTQUM5QmdLLFNBQVNoSyxRQUFVc0MsT0FBTzZILFlBQVcsV0FDbkM3SCxPQUFPRyxNQUFNaUgsYUFBYS9KLE1BQU8sZUFDbkMsR0FBRyxJQUNMLEdBQUcsSUFFRzFPLGFBQWMySSxFQUFBQSxNQUFBQSxVQUFRLGtCQUFNLElBQUkxSSxLQUFLLEtBQU0sRUFBRyxFQUFFLEdBQUUsSUFFeEQsT0FDRWYsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRLENBQ1BpQixZQUFhQSxZQUNiSCxZQUFhQyxJQUFBQSxHQUFNYSxLQUNuQlQsT0FBUU0sT0FBQUEsRUFDUjJELFVBQVdrUCxXQUNYb0gsWUFBYUEsWUFDYjNULGFBQWNBLGFBQ2RELFlBQVUsS0FJbEIsRUF6RGEyVCxZQUFXL2EsWUFBRyxjQXlEekIrYSxZQUFZNWEsVUFBWSxjQUkxQjRhLFlBQVlsZixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSw4d0RBQWt4RHFjLFlBQVlsZixZQUFhLElBQUFVLG9CQUFBLGdCQUFBd2UsWUFBQWpVLGFBQUEsMEVBQUFDLDBCQUFBQSx3QkFBQSx5Q0FBQUMsS0FBQSxjQUFBQyxXQUFBOFQsWUFBQWpVLGFBQUFJLEtBQUEsd0MsNHpDQ2xGNzFELElBQU15QyxZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sY0FBWSxlQUVwQkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxpRUFFM0RILEVBQUFBLElBQUFBLElBQUEsc0VBQWdFQSxFQUFBQSxJQUFBQSxJQUFBLFVBQVFHLFdBQVcsS0FBRyxPQUFpQixZQUFZSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxVQUF3QixhQUFhSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxRQUFzQiwrQkFFbE9ILEVBQUFBLElBQUFBLElBQUNtSyxTQUFBQSxHQUFNLENBQUNqSyxRQUFRLFdBQ2xCRixFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyxzQkFBc0J5RCxRQUFRLFdBRzFDLENBbEJ3QkosV0FBVTVKLFlBQUEsYUFvQmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDcEJ0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLG9CQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FXTCxJQUFNbVIsV0FBYSxTQUFTQSxhQUNqQyxJQUFNQyxZQUFhalQsRUFBQUEsTUFBQUEsY0FDakIsU0FBQ3hILE9BQVF0RSxNQUFJLE9BQUt5VixPQUFPRyxNQVI3QixTQUFTaUgsYUFBYW1DLFVBQVdoZixNQUMvQixNQUFPLHlCQUFQME0sT0FDRXNTLFVBQVUxYyxPQUFNLFNBQUFvSyxPQUNWMU0sS0FBS3lULHFCQUNmLENBSW1Db0osQ0FBYXZZLE9BQVF0RSxNQUFNLEdBQzFELElBR0lvRSxhQUFjMkksRUFBQUEsTUFBQUEsVUFBUSxrQkFBTSxJQUFJMUksS0FBSyxLQUFNLEVBQUcsRUFBRSxHQUFFLElBRXhELE9BQ0VmLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQaUIsWUFBYUEsWUFDYkUsT0FBUU0sT0FBQUEsRUFDUjJELFVBQVdrUCxXQUNYc0gsV0FBWUEsY0FJcEIsRUFsQmFELFdBQVVqYixZQUFHLGFBa0J4QmliLFdBQVc5YSxVQUFZLGFBSXpCOGEsV0FBV3BmLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLDZhQUFtYnVjLFdBQVdwZixZQUFhLElBQUFVLG9CQUFBLGVBQUEwZSxXQUFBblUsYUFBQSx5RUFBQUMsMEJBQUFBLHdCQUFBLHdDQUFBQyxLQUFBLGFBQUFDLFdBQUFnVSxXQUFBblUsYUFBQUksS0FBQSx1QyxxMUNDNUM1ZixJQUFNeUMsWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLFVBQVEsV0FFaEJBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUkscUJBQ25CSCxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxjQUFlSCxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLE9BQU9tSCxRQUFRLFVBQVEsVUFDcEZGLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLG9DQUU5REgsRUFBQUEsSUFBQUEsSUFBQSxxQ0FBK0JBLEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFFBQXNCLDhEQUE4REgsRUFBQUEsSUFBQUEsSUFBQ1Msa0JBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxPQUFPbUgsUUFBUSxVQUFRLFFBQWtCLGlCQUNqTkYsRUFBQUEsSUFBQUEsSUFBQ21LLFNBQUFBLEdBQU0sQ0FBQ2pLLFFBQVEsV0FDbEJGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLGlCQUFpQnlELFFBQVEsV0FHckMsQ0FuQndCSixXQUFVNUosWUFBQSxhQXFCbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNyQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsZ0JBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtDc1IsT0FBUyxTQUFTQSxTQUM3QixJQUFBMVQsV0FBd0JDLEVBQUFBLE1BQUFBLFVBQVMsSUFBSW5ILEtBQUssS0FBTSxFQUFHLElBQUdvSCxZQUFBQyxFQUFBQSxjQUFBQSxHQUFBSCxVQUFBLEdBQS9DdkwsS0FBSXlMLFdBQUEsR0FBRW9OLFFBQU9wTixXQUFBLEdBQ3BCc0QsWUFBd0J2RCxFQUFBQSxNQUFBQSxVQUFTdEgsSUFBQUEsR0FBTWEsTUFBS2lLLFlBQUF0RCxFQUFBQSxjQUFBQSxHQUFBcUQsV0FBQSxHQUFyQ2tKLEtBQUlqSixXQUFBLEdBQUV5TyxRQUFPek8sV0FBQSxHQUVkdUosWUFBYXpNLEVBQUFBLE1BQUFBLGNBQVksU0FBQ2dOLFNBQU8sT0FBS0QsUUFBUUMsUUFBUSxHQUFFLENBQUNELFVBQ3pEWCxRQUFTcE0sRUFBQUEsTUFBQUEsY0FBWSxTQUFDNFIsU0FBTyxPQUFLRCxRQUFRQyxRQUFRLEdBQUUsQ0FBQ0QsVUFFM0QsT0FDRW5hLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQbkQsS0FBTUEsS0FDTnNFLE9BQVFNLE9BQUFBLEVBQ1IyRCxVQUFXa1AsV0FDWGMsV0FBWUEsV0FDWkwsT0FBUUEsT0FDUkQsS0FBTUEsUUFJZCxFQW5CYWdILE9BQU1wYixZQUFHLFNBbUJwQm9iLE9BQU9qYixVQUFZLFNBSXJCaWIsT0FBT3ZmLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHVoQkFBNmhCMGMsT0FBT3ZmLFlBQWEsSUFBQVUsb0JBQUEsV0FBQTZlLE9BQUF0VSxhQUFBLHFFQUFBQywwQkFBQUEsd0JBQUEsb0NBQUFDLEtBQUEsU0FBQUMsV0FBQW1VLE9BQUF0VSxhQUFBSSxLQUFBLG1DLHl0Q0N2QzlsQixJQUFNeUMsWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLFNBQU8sVUFFZkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxhQUN6REgsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksYUFBY0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksV0FFOURILEVBQUFBLElBQUFBLElBQUEsc0VBQWdFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsS0FBRyxLQUFXLGlCQUM3RkgsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsZUFBZXlELFFBQVEsVUFFckMsQ0FoQndCSixXQUFVNUosWUFBQSxhQWtCbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNsQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsZUFDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHlGLFNBQVUsQ0FDUkwsVUFBVyxDQUFFTyxRQUFTLENBQUVDLEtBQU0sT0FDOUJ6RSxPQUFRLENBQUV3RSxRQUFTLENBQUVDLEtBQU0sT0FDM0IzRSxZQUFhLENBQ1gwRSxRQUFTLENBQ1BDLEtBQU0sT0FHVnBFLE1BQU8sV0FFVGpGLFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS05sSyxTQUFXLFNBQVhBLFNBQVlDLE1BQUksT0FDcEJKLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUTFDLE9BQUFtRCxPQUFBLEdBQUtGLFFBQ1YsRUFIRkQsU0FBUUksWUFBRyxXQU1WLElBQU1nUyxNQUFRcFMsU0FBU00sS0FBSyxDQUFDLEdBQUc4UixNQUFNN1IsVUFBWSxRQUN6RDZSLE1BQU1uUyxLQUFPLENBQ1hVLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEVBQUcsSUFDL0JDLE9BQVFNLE9BQUFBLEVBQ1IyRCxVQUFXa1AsV0FDWDlTLE9BQU8sR0FLVGtSLE1BQU1uVyxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx3RkFBOEZzVCxNQUFNblcsWUFBYSxJQUFBVSxvQkFBQSxTLGl2Q0MxQzdKLElBQU1vTixZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sZUFBYSxnQkFFckJBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksMENBRTNESCxFQUFBQSxJQUFBQSxJQUFBLCtHQUNBQSxFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyxzQkFBc0J5RCxRQUFRLFVBRTVDLENBZndCSixXQUFVNUosWUFBQSxhQWlCbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNqQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMscUJBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h5RixTQUFVLENBQ1JMLFVBQVcsQ0FBRU8sUUFBUyxDQUFFQyxLQUFNLE9BQzlCekUsT0FBUSxDQUFFd0UsUUFBUyxDQUFFQyxLQUFNLE9BQzNCM0UsWUFBYSxDQUNYMEUsUUFBUyxDQUNQQyxLQUFNLE9BR1ZwRSxNQUFPLFdBRVRqRixXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtObEssU0FBVyxTQUFYQSxTQUFZQyxNQUFJLE9BQ3BCSixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVExQyxPQUFBbUQsT0FBQSxHQUFLRixRQUNWLEVBSEZELFNBQVFJLFlBQUcsV0FNVixJQUFNcWIsWUFBY3piLFNBQVNNLEtBQUssQ0FBQyxHQUFHbWIsWUFBWWxiLFVBQVksY0FDckVrYixZQUFZeGIsS0FBTyxDQUNqQlUsWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxJQUMvQkMsT0FBUU0sT0FBQUEsRUFDUjJELFVBQVdrUCxXQUNYOVMsT0FBTyxFQUNQd2EsWUFBYSxDQUFFQyxFQUFHLEdBQUlDLEVBQUcsS0FLM0JILFlBQVl4ZixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx3RkFBOEYyYyxZQUFZeGYsWUFBYSxJQUFBVSxvQkFBQSxlLDRyQ0MzQ3pLLElBQU1vTixZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sc0JBQW9CLHVCQUU1QkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxnRkFFM0RILEVBQUFBLElBQUFBLElBQUEsdUdBQWlHQSxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLFlBQVltSCxRQUFRLFVBQVEsYUFBdUIsV0FDL0tGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLDhCQUE4QnlELFFBQVEsVUFFcEQsQ0Fmd0JKLFdBQVU1SixZQUFBLGFBaUJsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ2xCNUIsNEJBQ0U5SyxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h5RixTQUFVLENBQ1JMLFVBQVcsQ0FBRU8sUUFBUyxDQUFFQyxLQUFNLE9BQzlCekUsT0FBUSxDQUFFd0UsUUFBUyxDQUFFQyxLQUFNLE9BQzNCM0UsWUFBYSxDQUNYMEUsUUFBUyxDQUNQQyxLQUFNLE9BR1Y5RSxZQUFhLENBQ1g2RSxRQUFTLENBQ1BDLEtBQU0sUUFJWnJKLFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS05sSyxTQUFXLFNBQVhBLFNBQVlDLE1BQUksT0FDcEJKLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUTFDLE9BQUFtRCxPQUFBLEdBQUtGLFFBQ1YsRUFIRkQsU0FBUUksWUFBRyxXQU1WLElBQU15YixtQkFBcUI3YixTQUFTTSxLQUFLLENBQUMsR0FBR3ViLG1CQUFtQnRiLFVBQVkscUJBQ25Gc2IsbUJBQW1CNWIsS0FBTzZiLGNBQUFBLEVBSTFCRCxtQkFBbUI1ZixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx3RkFBOEYrYyxtQkFBbUI1ZixZQUFhLElBQUFVLG9CQUFBLHNCLGduQ0N2Q3ZMLElBQU1vTixZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0seUJBQXVCLDBCQUUvQkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxxREFFM0RILEVBQUFBLElBQUFBLElBQUEsc0ZBQ0FBLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLGlDQUFpQ3lELFFBQVEsVUFFdkQsQ0Fmd0JKLFdBQVU1SixZQUFBLGFBaUJsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ2pCNUIsK0JBQ0U5SyxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h5RixTQUFVLENBQ1JMLFVBQVcsQ0FBRU8sUUFBUyxDQUFFQyxLQUFNLE9BQzlCekUsT0FBUSxDQUFFd0UsUUFBUyxDQUFFQyxLQUFNLE9BQzNCM0UsWUFBYSxDQUNYMEUsUUFBUyxDQUNQQyxLQUFNLE9BR1Y5RSxZQUFhLENBQ1g2RSxRQUFTLENBQ1BDLEtBQU0sUUFJWnJKLFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS05sSyxTQUFXLFNBQVhBLFNBQVlDLE1BQUksT0FDcEJKLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUTFDLE9BQUFtRCxPQUFBLEdBQUtGLFFBQ1YsRUFIRkQsU0FBUUksWUFBRyxXQU1WLElBQU0yYixzQkFBd0IvYixTQUFTTSxLQUFLLENBQUMsR0FBR3liLHNCQUFzQnhiLFVBQVksd0JBQ3pGd2Isc0JBQXNCOWIsS0FBTzZiLGNBQUFBLEVBSTdCQyxzQkFBc0I5ZixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx3RkFBOEZpZCxzQkFBc0I5ZixZQUFhLElBQUFVLG9CQUFBLHlCLHl3Q0N0QzdMLElBQU1vTixZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sYUFBVyxjQUVuQkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSx3QkFFM0RILEVBQUFBLElBQUFBLElBQUEscU1BQStMQSxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLHVCQUF1Qm1ILFFBQVEsVUFBUSxzQkFBZ0Msc0RBQXNERixFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLDBCQUEwQm1ILFFBQVEsVUFBUSx5QkFBbUMsV0FDL2JGLEVBQUFBLElBQUFBLElBQUEsWUFBS0EsRUFBQUEsSUFBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsZUFBYSxnRkFNOUJILEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLG1CQUFtQnlELFFBQVEsVUFFekMsQ0F0QndCSixXQUFVNUosWUFBQSxhQXdCbEM0SixXQUFXTSxnQkFBaUIsRSwyRUN4Qlo3SCxpQ0FBb0N1WixlQUFBQSxFQUE1Q25iLE9BQThCNkIsVUFBY3NaLGVBQUFBLEVBQXBCQyxLQUUxQmpJLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLG1CQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYeUYsU0FBVSxDQUNSTCxVQUFXLENBQUVPLFFBQVMsQ0FBRUMsS0FBTSxPQUM5QnpFLE9BQVEsQ0FBRXdFLFFBQVMsQ0FBRUMsS0FBTSxPQUMzQjNFLFlBQWEsQ0FDWDBFLFFBQVMsQ0FDUEMsS0FBTSxPQUdWOUUsWUFBYSxDQUNYNkUsUUFBUyxDQUNQQyxLQUFNLFFBSVpySixXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtObEssU0FBVyxTQUFYQSxTQUFZQyxNQUFJLE9BQ3BCSixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVExQyxPQUFBbUQsT0FBQSxHQUFLRixRQUNWLEVBSEZELFNBQVFJLFlBQUcsV0FNVixJQUFNOGIsVUFBWWxjLFNBQVNNLEtBQUssQ0FBQyxHQUFHNGIsVUFBVTNiLFVBQVksWUFDakUyYixVQUFVamMsS0FBTyxDQUNmVSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLEdBQy9CSixZQUFhQyxJQUFBQSxHQUFNQyxJQUNuQkcsT0FBUTRCLGlDQUNScUMsVUFBV2tQLFdBQ1h0UixVQUFBQSxXQUtGd1osVUFBVWpnQixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx3RkFBOEZvZCxVQUFVamdCLFlBQWEsSUFBQVUsb0JBQUEsYSxpdkNDakRySyxJQUFNb04sWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLE9BQUssUUFFYkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxhQUN6REgsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksYUFBY0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksWUFFOURILEVBQUFBLElBQUFBLElBQUEsMEdBQW9HQSxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLFlBQVltSCxRQUFRLFVBQVEsYUFBdUIsU0FBU0YsRUFBQUEsSUFBQUEsSUFBQ1Msa0JBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxXQUFXbUgsUUFBUSxVQUFRLFlBQXNCLFlBQ3ZRRixFQUFBQSxJQUFBQSxJQUFBLHFCQUFlQSxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFdBQVczSCxNQUFNLFlBQVltSCxRQUFRLFVBQVEsd0JBQWtDLHNDQUFzQ0YsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsT0FBcUIsTUFBTUgsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsYUFBMkIsTUFBTUgsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsV0FBeUIsU0FBU0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsWUFBMEIsTUFDalhILEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLHVCQUF1QnlELFFBQVEsVUFFN0MsQ0FqQndCSixXQUFVNUosWUFBQSxhQW1CbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNuQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsYUFDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHlGLFNBQVUsQ0FDUkwsVUFBVyxDQUFFTyxRQUFTLENBQUVDLEtBQU0sT0FDOUJ6RSxPQUFRLENBQUV3RSxRQUFTLENBQUVDLEtBQU0sT0FDM0IzRSxZQUFhLENBQ1gwRSxRQUFTLENBQ1BDLEtBQU0sT0FHVnFKLElBQUssV0FFUDFTLFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBTU5sSyxTQUFXLFNBQVhBLFNBQVlDLE1BQUksT0FDcEJKLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUTFDLE9BQUFtRCxPQUFBLEdBQUtGLFFBQ1YsRUFIRkQsU0FBUUksWUFBRyxXQU1WLElBQU0rYixZQUFjbmMsU0FBU00sS0FBSyxDQUFDLEdBQUc2YixZQUFZNWIsVUFBWSxNQUNyRTRiLFlBQVlsYyxLQUFPLENBQ2pCVSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLElBQy9CQyxPQUFRTSxPQUFBQSxFQUNSMkQsVUFBV2tQLFdBQ1hyRixLQUFLLEVBQ0xyTSxTQUFVLENBQ1I0SyxLQUFNLFFBQ05DLFVBQVcsY0FDWEMsSUFBSyxNQUNMQyxNQUFPLE1BQ1BDLFNBQVUsT0FDVkMsS0FBTSxTQUNOQyxNQUFPLFFBQ1BDLE9BQVEsYUFFUkMsU0FBVSxTQUFBQSxTQUFDQyxPQUFLLFVBQUExRSxPQUFTMEUsTUFBSyxhQU1sQ3dPLFlBQVlsZ0IsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsd0ZBQThGcWQsWUFBWWxnQixZQUFhLElBQUFVLG9CQUFBLGUsNnFDQ3hEekssSUFBTW9OLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxnQkFBYyxpQkFFdEJBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksc0JBQ3pESCxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxpQkFFOURILEVBQUFBLElBQUFBLElBQUEsaUZBQ0FBLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLHdCQUF3QnlELFFBQVEsVUFFOUMsQ0FoQndCSixXQUFVNUosWUFBQSxhQWtCbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNqQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsc0JBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h5RixTQUFVLENBQ1JMLFVBQVcsQ0FBRU8sUUFBUyxDQUFFQyxLQUFNLE9BQzlCM0UsWUFBYSxDQUFFMEUsUUFBUyxDQUFFQyxLQUFNLE9BQ2hDOUUsWUFBYSxDQUFFNkUsUUFBUyxDQUFFQyxLQUFNLE9BQ2hDekUsT0FBUSxDQUFFd0UsUUFBUyxDQUFFQyxLQUFNLE9BQzNCd0IsYUFBYyxDQUFFekIsUUFBUyxDQUFFQyxLQUFNLFVBRW5DckosV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLTmxLLFNBQVcsU0FBWEEsU0FBWUMsTUFBSSxPQUNwQkosRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRMUMsT0FBQW1ELE9BQUEsR0FBS0YsUUFDVixFQUhGRCxTQUFRSSxZQUFHLFdBTVYsSUFBTWdjLGFBQWVwYyxTQUFTTSxLQUFLLENBQUMsR0FBRzhiLGFBQWE3YixVQUFZLGVBQ3ZFNmIsYUFBYW5jLEtBQU8sQ0FDbEJVLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEVBQUcsSUFDL0JKLFlBQWFDLElBQUFBLEdBQU1hLEtBQ25CVCxPQUFRTSxPQUFBQSxFQUNSMkQsVUFBV2tQLFdBQ1hsTixhQUFjLElBQUlsRyxLQUFLLEtBQU0sRUFBRyxFQUFHLEtBS3JDd2IsYUFBYW5nQixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx3RkFBOEZzZCxhQUFhbmdCLFlBQWEsSUFBQVUsb0JBQUEsZ0IsbXZDQ3hDM0ssSUFBTW9OLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxjQUFZLGVBRXBCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLCtCQUUzREgsRUFBQUEsSUFBQUEsSUFBQSw4REFDQUEsRUFBQUEsSUFBQUEsSUFBQSxvS0FDQUEsRUFBQUEsSUFBQUEsSUFBQ21LLFNBQUFBLEdBQU0sQ0FBQ2pLLFFBQVEsV0FDbEJGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLG9CQUFvQnlELFFBQVEsV0FHeEMsQ0FsQndCSixXQUFVNUosWUFBQSxhQW9CbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNwQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsb0JBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQVVMLElBQU1tSixXQUFhLFNBQVNBLGFBQ2pDLElBQU1xRyxVQUFXQyxFQUFBQSxNQUFBQSxRQUFPLE9BRXhCbEksRUFBQUEsTUFBQUEsWUFBVSxXQU1SLE9BQU8sV0FDTE8sT0FBTzRILGFBQWFGLG9CQUFRLEVBQVJBLFNBQVVoSyxRQUNoQyxDQUNGLEdBQUcsSUFFSCxJQUFNakksY0FBZVksRUFBQUEsTUFBQUEsY0FBWSxTQUFDNlMsVUFRaENsSixPQUFPNEgsYUFBYUYsb0JBQVEsRUFBUkEsU0FBVWhLLFNBQzlCZ0ssU0FBU2hLLFFBQVVzQyxPQUFPNkgsWUFBVyxXQUNuQzdILE9BQU9HLE1BN0JiLFNBQVNpSCxhQUFhOEIsVUFDcEIsTUFBTyxtRUFBUGpTLE9BQ0VzUSxLQUFLQyxVQUFVMEIsU0FBVSxLQUFNLEdBQ25DLENBMEJtQjlCLENBQWE4QixVQUM1QixHQUFHLElBQ0wsR0FBRyxJQUVHdmEsYUFBYzJJLEVBQUFBLE1BQUFBLFVBQVEsa0JBQU0sSUFBSTFJLEtBQUssS0FBTSxFQUFHLEVBQUUsR0FBRSxJQUV4RCxPQUNFZixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVEsQ0FDUGlCLFlBQWFBLFlBQ2JFLE9BQVFNLE9BQUFBLEVBQ1IyRCxVQUFXa1AsV0FDWHZNLGFBQWNBLGFBQ2RELFlBQVUsS0FJbEIsRUF6Q2E2TCxXQUFValQsWUFBRyxhQXlDeEJpVCxXQUFXOVMsVUFBWSxhQUl6QjhTLFdBQVdwWCxXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSwrb0NBQW1wQ3VVLFdBQVdwWCxZQUFhLElBQUFVLG9CQUFBLGVBQUEwVyxXQUFBbk0sYUFBQSx5RUFBQUMsMEJBQUFBLHdCQUFBLHdDQUFBQyxLQUFBLGFBQUFDLFdBQUFnTSxXQUFBbk0sYUFBQUksS0FBQSx1QyxvNkNDbEU1dEMsSUFBTXlDLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxZQUFVLGFBRWxCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLG9CQUUzREgsRUFBQUEsSUFBQUEsSUFBQSxpRkFBMkVBLEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFlBQTBCLDBHQUEwR0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsWUFBMEIsOERBQThESCxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLFNBQVNtSCxRQUFRLFVBQVEsVUFBb0IsWUFDbmFGLEVBQUFBLElBQUFBLElBQUEsNENBQXNDQSxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGtCQUFrQm1ILFFBQVEsVUFBUSxpQkFBMkIsWUFBWUYsRUFBQUEsSUFBQUEsSUFBQ1Msa0JBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSx3QkFBd0JtSCxRQUFRLFVBQVEsc0JBQWdDLE1BQzdPRixFQUFBQSxJQUFBQSxJQUFDbUssU0FBQUEsR0FBTSxDQUFDakssUUFBUSxXQUNsQkYsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsa0JBQWtCeUQsUUFBUSxXQUd0QyxDQWxCd0JKLFdBQVU1SixZQUFBLGFBb0JsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ3BCdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQyxrQkFDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS0NtUyxTQUFXLFNBQVNBLFdBQy9CLElBQUF2VSxXQUFnQ0MsRUFBQUEsTUFBQUEsV0FBUyxXQUV2QyxPQUFPNUcsT0FBQUEsRUFBVzJILE1BQ2hCLFNBQUNQLE9BQUssTUFBcUIsOEJBQWhCQSxNQUFNL0ksS0FBcUMsR0FFMUQsSUFBRXdJLFlBQUFDLEVBQUFBLGNBQUFBLEdBQUFILFVBQUEsR0FMS3dVLFNBQVF0VSxXQUFBLEdBQUV1VSxZQUFXdlUsV0FBQSxHQU10QjBSLFVBQVdDLEVBQUFBLE1BQUFBLFFBQU8sT0FFeEJsSSxFQUFBQSxNQUFBQSxZQUFVLFdBTVIsT0FBTyxXQUNMTyxPQUFPNEgsYUFBYUYsb0JBQVEsRUFBUkEsU0FBVWhLLFFBQ2hDLENBQ0YsR0FBRyxJQUVILElBQU10TyxlQUFnQmlILEVBQUFBLE1BQUFBLGNBQ3BCLFNBQUNnUixVQVFDckgsT0FBTzRILGFBQWFGLG9CQUFRLEVBQVJBLFNBQVVoSyxTQUM5QmdLLFNBQVNoSyxRQUFVc0MsT0FBTzZILFlBQVcsV0FDbkMwQyxZQUFZbEQsU0FDZCxHQUFHLElBQ0wsR0FDQSxDQUFDa0QsY0FHRzViLGFBQWMySSxFQUFBQSxNQUFBQSxVQUFRLGtCQUFNLElBQUkxSSxLQUFLLEtBQU0sRUFBRyxFQUFFLEdBQUUsSUFFeEQsT0FDRWYsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRLENBQ1BpQixZQUFhQSxZQUNiRSxPQUFRTSxPQUFBQSxFQUNSMkQsVUFBV2tQLFdBQ1g1UyxjQUFlQSxjQUNma2IsU0FBVUEsWUFJbEIsRUFsRGFELFNBQVFqYyxZQUFHLFdBa0R0QmljLFNBQVM5YixVQUFZLFdBSXZCOGIsU0FBU3BnQixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxvNUNBQXc1Q3VkLFNBQVNwZ0IsWUFBYSxJQUFBVSxvQkFBQSxhQUFBMGYsU0FBQW5WLGFBQUEsdUVBQUFDLDBCQUFBQSx3QkFBQSxzQ0FBQUMsS0FBQSxXQUFBQyxXQUFBZ1YsU0FBQW5WLGFBQUFJLEtBQUEscUMseXZDQ3RFNzlDLElBQU15QyxZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0saUJBQWUsa0JBRXZCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGFBQ3pESCxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxZQUU5REgsRUFBQUEsSUFBQUEsSUFBQSx5TkFDQUEsRUFBQUEsSUFBQUEsSUFBQ21LLFNBQUFBLEdBQU0sQ0FBQ2pLLFFBQVEsV0FDbEJGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLHlCQUF5QnlELFFBQVEsV0FHN0MsQ0FsQndCSixXQUFVNUosWUFBQSxhQW9CbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNwQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsdUJBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h5RixTQUFVLENBQ1JMLFVBQVcsQ0FBRU8sUUFBUyxDQUFFQyxLQUFNLE9BQzlCekUsT0FBUSxDQUFFd0UsUUFBUyxDQUFFQyxLQUFNLE9BQzNCM0UsWUFBYSxDQUNYMEUsUUFBUyxDQUNQQyxLQUFNLE9BR1ZrWCxjQUFlLFdBRWpCdmdCLFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS05sSyxTQUFXLFNBQVhBLFNBQVlDLE1BQUksT0FDcEJKLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUTFDLE9BQUFtRCxPQUFBLEdBQUtGLFFBQ1YsRUFIRkQsU0FBUUksWUFBRyxXQU1WLElBQU1xYyxjQUFnQnpjLFNBQVNNLEtBQUssQ0FBQyxHQUFHbWMsY0FBY2xjLFVBQVksZ0JBQ3pFa2MsY0FBY3hjLEtBQU8sQ0FDbkJVLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEVBQUcsSUFDL0JDLE9BQVFNLE9BQUFBLEVBQ1IyRCxVQUFXa1AsV0FDWHdJLGVBQWUsR0FLakJDLGNBQWN4Z0IsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsd0ZBQThGMmQsY0FBY3hnQixZQUFhLElBQUFVLG9CQUFBLGlCLHFvQ0MzQzdLLElBQU1vTixZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0scUJBQW1CLHNCQUUzQkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxhQUN6REgsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksYUFBY0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksWUFFOURILEVBQUFBLElBQUFBLElBQUEsMklBQ0FBLEVBQUFBLElBQUFBLElBQUEsVUFBR0EsRUFBQUEsSUFBQUEsSUFBQSxVQUFRRyxXQUFXLEtBQUcscUdBQ3pCSCxFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyw4QkFBOEJ5RCxRQUFRLFVBRXBELENBakJ3QkosV0FBVTVKLFlBQUEsYUFtQmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDbkJ0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLDJCQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYeUYsU0FBVSxDQUNSTCxVQUFXLENBQUVPLFFBQVMsQ0FBRUMsS0FBTSxPQUM5QjNFLFlBQWEsQ0FBRTBFLFFBQVMsQ0FBRUMsS0FBTSxPQUNoQzlFLFlBQWEsQ0FBRTZFLFFBQVMsQ0FBRUMsS0FBTSxPQUNoQ0csSUFBSyxDQUFFSixRQUFTLENBQUVDLEtBQU0sT0FDeEIxQixrQkFBbUIsV0FFckIzSCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtObEssU0FBVyxTQUFYQSxTQUFZQyxNQUFJLE9BQ3BCSixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVExQyxPQUFBbUQsT0FBQSxHQUFLRixRQUNWLEVBSEZELFNBQVFJLFlBQUcsV0FNVixJQUFNc2Msa0JBQW9CMWMsU0FBU00sS0FBSyxDQUFDLEdBQUdvYyxrQkFBa0JuYyxVQUFZLG9CQUNqRm1jLGtCQUFrQnpjLEtBQU8sQ0FDdkJVLFlBQWEsSUFBSUMsS0FBSyxLQUFNLEdBQUksR0FDaENKLFlBQWFDLElBQUFBLEdBQU1hLEtBQ25CVCxPQUFRLENBQ04sQ0FDRXJCLE1BQU8sb0JBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sR0FBSSxFQUFHLElBQzdCK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEdBQUksRUFBRyxJQUU3QixDQUNFcEIsTUFBTyw2QkFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxHQUFJLEVBQUcsSUFDN0IrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sR0FBSSxFQUFHLEdBQUksS0FFakMsQ0FDRXBCLE1BQU8sa0JBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sR0FBSSxHQUMxQitFLElBQUssSUFBSS9FLEtBQUssS0FBTSxHQUFJLElBRTFCLENBQ0VwQixNQUFPLFNBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sR0FBSSxHQUMxQitFLElBQUssSUFBSS9FLEtBQUssS0FBTSxHQUFJLEtBRzVCa0UsVUFBV2tQLFdBQ1h2TyxJQUFLckIsbUJBQVM0SyxNQUFNLE9BQU81SSxLQUFLLEVBQUcsU0FBU1osU0FDNUM1QixtQkFBbUIsR0FLckI4WSxrQkFBa0J6Z0IsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsd0ZBQThGNGQsa0JBQWtCemdCLFlBQWEsSUFBQVUsb0JBQUEscUIsdXhDQzdEckwsSUFBTW9OLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSx1QkFBcUIsd0JBRTdCQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHFEQUUzREgsRUFBQUEsSUFBQUEsSUFBQSxtSUFDQUEsRUFBQUEsSUFBQUEsSUFBQSxVQUFHQSxFQUFBQSxJQUFBQSxJQUFBLFVBQVFHLFdBQVcsS0FBRywrRkFDekJILEVBQUFBLElBQUFBLElBQUNtSyxTQUFBQSxHQUFNLENBQUNqSyxRQUFRLFdBQ2xCRixFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyxnQ0FBZ0N5RCxRQUFRLFdBR3BELENBbEJ3QkosV0FBVTVKLFlBQUEsYUFvQmxDNEosV0FBV00sZ0JBQWlCLEUsc0lDbkJ0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLDZCQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYekQsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLQ3lTLG9CQUFzQixTQUFTQSxzQkFDMUMsSUFBTUMscUJBQXNCdlUsRUFBQUEsTUFBQUEsY0FDMUIsaUJBQU8sQ0FDTDRELE1BQU8sQ0FDTDRRLFVBQVcsSUFFZCxHQUNELElBR0lsYyxhQUFjMkksRUFBQUEsTUFBQUEsVUFBUSxrQkFBTSxJQUFJMUksS0FBSyxLQUFNLEVBQUcsR0FBRyxHQUFFLElBRXpELE9BQ0VmLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQaUIsWUFBYUEsWUFDYkgsWUFBYUMsSUFBQUEsR0FBTWEsS0FDbkJzYixvQkFBcUJBLG9CQUNyQi9iLE9BQVFNLE9BQUFBLEVBQ1IyRCxVQUFXa1AsY0FJbkIsRUF2QmEySSxvQkFBbUJ2YyxZQUFHLHNCQXVCakN1YyxvQkFBb0JwYyxVQUFZLHNCQUlsQ29jLG9CQUFvQjFnQixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSw0ZkFBa2dCNmQsb0JBQW9CMWdCLFlBQWEsSUFBQVUsb0JBQUEsd0JBQUFnZ0Isb0JBQUF6VixhQUFBLGtGQUFBQywwQkFBQUEsd0JBQUEsaURBQUFDLEtBQUEsc0JBQUFDLFdBQUFzVixvQkFBQXpWLGFBQUFJLEtBQUEsZ0QsbXdDQzVDN2xCLElBQU15QyxZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sa0JBQWdCLG1CQUV4QkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxvRUFFM0RILEVBQUFBLElBQUFBLElBQUEsdUlBQ0FBLEVBQUFBLElBQUFBLElBQUEsVUFBR0EsRUFBQUEsSUFBQUEsSUFBQSxVQUFRRyxXQUFXLEtBQUcsWUFBc0Isc0ZBQy9DSCxFQUFBQSxJQUFBQSxJQUFDbUssU0FBQUEsR0FBTSxDQUFDakssUUFBUSxXQUNsQkYsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsMEJBQTBCeUQsUUFBUSxXQUc5QyxDQWxCd0JKLFdBQVU1SixZQUFBLGFBb0JsQzRKLFdBQVdNLGdCQUFpQixFLHNJQ25CdEIwSixZQUFhM1AsRUFBQUEsSUFBQUEsSUFBZ0JELGtCQUVuQyx3QkFDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS0M0UyxlQUFpQixTQUFTQSxpQkFDckMsSUFBTTdKLGdCQUFpQjVLLEVBQUFBLE1BQUFBLGNBQ3JCLFNBQUM5TCxNQUFJLE9BQUFTLE9BQUFtRCxPQUFBLENBQ0hMLFVBQVcsZUFDUHNFLGlCQUFPN0gsTUFBTTJaLE9BQVMsR0FBSyxDQUM3QmpLLE1BQU8sQ0FDTHdFLGdCQUFpQixhQUNqQm5VLE1BQU8sVUFHUDhILGlCQUFPN0gsTUFBTTJaLE9BQVMsSUFBTSxDQUM5QmpLLE1BQU8sQ0FDTHdFLGdCQUFpQixZQUNqQm5VLE1BQU8sVUFFVixHQUVILElBR0lxRSxhQUFjMkksRUFBQUEsTUFBQUEsVUFBUSxrQkFBTSxJQUFJMUksS0FBSyxLQUFNLEVBQUcsR0FBRyxHQUFFLElBRXpELE9BQ0VmLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQaUIsWUFBYUEsWUFDYkgsWUFBYUMsSUFBQUEsR0FBTWEsS0FDbkIyUixlQUFnQkEsZUFDaEJwUyxPQUFRTSxPQUFBQSxFQUNSMkQsVUFBV2tQLGNBSW5CLEVBakNhOEksZUFBYzFjLFlBQUcsaUJBaUM1QjBjLGVBQWV2YyxVQUFZLGlCQUk3QnVjLGVBQWU3Z0IsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEseXdCQUE2d0JnZSxlQUFlN2dCLFlBQWEsSUFBQVUsb0JBQUEsbUJBQUFtZ0IsZUFBQTVWLGFBQUEsNkVBQUFDLDBCQUFBQSx3QkFBQSw0Q0FBQUMsS0FBQSxpQkFBQUMsV0FBQXlWLGVBQUE1VixhQUFBSSxLQUFBLDJDLGdsQ0N2RDkxQixJQUFNeUMsWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLGlCQUFlLGtCQUV2QkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSwrQ0FDekRILEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLHNCQUVyQkgsRUFBQUEsSUFBQUEsSUFBQSw0RUFBc0VBLEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFFBQXNCLGFBQ3RISCxFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyx3QkFBd0J5RCxRQUFRLFVBRTlDLENBaEJ3QkosV0FBVTVKLFlBQUEsYUFrQmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDbEI1Qix1QkFDRTlLLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHlGLFNBQVUsQ0FDUkwsVUFBVyxDQUFFTyxRQUFTLENBQUVDLEtBQU0sT0FDOUJ6RSxPQUFRLENBQUV3RSxRQUFTLENBQUVDLEtBQU0sT0FDM0IzRSxZQUFhLENBQ1gwRSxRQUFTLENBQ1BDLEtBQU0sUUFJWnJKLFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS05sSyxTQUFXLFNBQVhBLFNBQVlDLE1BQUksT0FDcEJKLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUTFDLE9BQUFtRCxPQUFBLEdBQUtGLFFBQ1YsRUFIRkQsU0FBUUksWUFBRyxXQU1WLElBQU0yYyxjQUFnQi9jLFNBQVNNLEtBQUssQ0FBQyxHQUFHeWMsY0FBY3hjLFVBQVksZ0JBQ3pFd2MsY0FBYzljLEtBQU84VCxjQUFBQSxFQUlyQmdKLGNBQWM5Z0IsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsd0ZBQThGaWUsY0FBYzlnQixZQUFhLElBQUFVLG9CQUFBLGlCLHF0Q0NqQzdLLElBQU1vTixZQUFjLENBRXBCLEVBRWUsU0FBU0MsV0FBVXBGLE1BRy9CLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsSUFBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsSUFBQUEsSUFBQSxNQUNFLEdBQU0sUUFBTSxTQUVkQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLFlBQ3pESCxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxTQUU5REgsRUFBQUEsSUFBQUEsSUFBQSw2RUFDQUEsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsY0FBY3lELFFBQVEsVUFFcEMsQ0FoQndCSixXQUFVNUosWUFBQSxhQWtCbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNsQnRCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsY0FDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHlGLFNBQVUsQ0FDUkwsVUFBVyxDQUFFTyxRQUFTLENBQUVDLEtBQU0sT0FDOUJ6RSxPQUFRLENBQUV3RSxRQUFTLENBQUVDLEtBQU0sT0FDM0IzRSxZQUFhLENBQ1gwRSxRQUFTLENBQ1BDLEtBQU0sT0FHVjlFLFlBQWEsQ0FDWDZFLFFBQVMsQ0FDUEMsS0FBTSxPQUdWdkUsS0FBTSxVQUVSOUUsV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLTmxLLFNBQVcsU0FBWEEsU0FBWUMsTUFBSSxPQUNwQkosRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRMUMsT0FBQW1ELE9BQUEsR0FBS0YsUUFDVixFQUhGRCxTQUFRSSxZQUFHLFdBTVYsSUFBTTRjLEtBQU9oZCxTQUFTTSxLQUFLLENBQUMsR0FBRzBjLEtBQUt6YyxVQUFZLE9BQ3ZEeWMsS0FBSy9jLEtBQU8sQ0FDVlUsWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxJQUMvQkosWUFBYUMsSUFBQUEsR0FBTWEsS0FDbkJULE9BQVFNLE9BQUFBLEVBQ1IyRCxVQUFXa1AsV0FDWGpULEtBQU0sSUFLUmljLEtBQUsvZ0IsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsd0ZBQThGa2UsS0FBSy9nQixZQUFhLElBQUFVLG9CQUFBLFEseXZDQ2hEM0osSUFBTW9OLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxhQUFXLGNBRW5CQSxFQUFBQSxJQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGFBRTNESCxFQUFBQSxJQUFBQSxJQUFBLG1GQUE2RUEsRUFBQUEsSUFBQUEsSUFBQ1Msa0JBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxPQUFPbUgsUUFBUSxVQUFRLFFBQWtCLHdFQUNqSkYsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsbUJBQW1CeUQsUUFBUSxVQUV6QyxDQWZ3QkosV0FBVTVKLFlBQUEsYUFpQmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDakJ0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLG1CQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYeUYsU0FBVSxDQUNSTCxVQUFXLENBQUVPLFFBQVMsQ0FBRUMsS0FBTSxPQUM5QnpFLE9BQVEsQ0FBRXdFLFFBQVMsQ0FBRUMsS0FBTSxPQUMzQjNFLFlBQWEsQ0FDWDBFLFFBQVMsQ0FDUEMsS0FBTSxPQUdWOUUsWUFBYSxDQUNYNkUsUUFBUyxDQUNQQyxLQUFNLE9BR1Z2RSxLQUFNLFNBQ04yQyxVQUFXLFVBRWJ6SCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtObEssU0FBVyxTQUFYQSxTQUFZQyxNQUFJLE9BQ3BCSixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVExQyxPQUFBbUQsT0FBQSxHQUFLRixRQUNWLEVBSEZELFNBQVFJLFlBQUcsV0FNVixJQUFNa1QsVUFBWXRULFNBQVNNLEtBQUssQ0FBQyxHQUFHZ1QsVUFBVS9TLFVBQVksWUFDakUrUyxVQUFVclQsS0FBTyxDQUNmVSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLElBQy9CSixZQUFhQyxJQUFBQSxHQUFNYSxLQUNuQlQsT0FBUU0sT0FBQUEsRUFDUjJELFVBQVdrUCxXQUNYalQsS0FBTSxHQUNOMkMsVUFBVyxHQUtiNFAsVUFBVXJYLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHdGQUE4RndVLFVBQVVyWCxZQUFhLElBQUFVLG9CQUFBLGEsZ2xDQ25EckssSUFBTW9OLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxpQkFBZSxrQkFFdkJBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksaURBQ3pESCxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxzQkFFckJILEVBQUFBLElBQUFBLElBQUEsa0dBQTRGQSxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxjQUE0QixZQUNsSkgsRUFBQUEsSUFBQUEsSUFBQ3RLLFNBQUFBLEdBQUssQ0FBQytHLEdBQUcsd0JBQXdCeUQsUUFBUSxVQUU5QyxDQWhCd0JKLFdBQVU1SixZQUFBLGFBa0JsQzRKLFdBQVdNLGdCQUFpQixFLDJFQ2xCNUIsdUJBQ0U5SyxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h5RixTQUFVLENBQ1JMLFVBQVcsQ0FBRU8sUUFBUyxDQUFFQyxLQUFNLE9BQzlCekUsT0FBUSxDQUFFd0UsUUFBUyxDQUFFQyxLQUFNLE9BQzNCM0UsWUFBYSxDQUNYMEUsUUFBUyxDQUNQQyxLQUFNLFFBSVpySixXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtObEssU0FBVyxTQUFYQSxTQUFZQyxNQUFJLE9BQ3BCSixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUNILElBQUFBLEdBQVExQyxPQUFBbUQsT0FBQSxHQUFLRixRQUNWLEVBSEZELFNBQVFJLFlBQUcsV0FNVixJQUFNNmMsY0FBZ0JqZCxTQUFTTSxLQUFLLENBQUMsR0FBRzJjLGNBQWMxYyxVQUFZLGdCQUN6RTBjLGNBQWNoZCxLQUFPOFQsY0FBQUEsRUFJckJrSixjQUFjaGhCLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLHdGQUE4Rm1lLGNBQWNoaEIsWUFBYSxJQUFBVSxvQkFBQSxpQixpdUNDakM3SyxJQUFNb04sWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLFdBQVMsWUFFakJBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksYUFDekRILEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLFdBRTlESCxFQUFBQSxJQUFBQSxJQUFBLHlEQUNBQSxFQUFBQSxJQUFBQSxJQUFDdEssU0FBQUEsR0FBSyxDQUFDK0csR0FBRyxpQkFBaUJ5RCxRQUFRLFVBRXZDLENBaEJ3QkosV0FBVTVKLFlBQUEsYUFrQmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDbEJ0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLGlCQUNFNUUsTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYeUYsU0FBVSxDQUNSTCxVQUFXLENBQUVPLFFBQVMsQ0FBRUMsS0FBTSxPQUM5QnpFLE9BQVEsQ0FBRXdFLFFBQVMsQ0FBRUMsS0FBTSxPQUMzQjNFLFlBQWEsQ0FDWDBFLFFBQVMsQ0FDUEMsS0FBTSxPQUdWMlAsUUFBUyxXQUVYaFosV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLTmxLLFNBQVcsU0FBWEEsU0FBWUMsTUFBSSxPQUNwQkosRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRMUMsT0FBQW1ELE9BQUEsR0FBS0YsUUFDVixFQUhGRCxTQUFRSSxZQUFHLFdBTVYsSUFBTThjLFFBQVVsZCxTQUFTTSxLQUFLLENBQUMsR0FBRzRjLFFBQVEzYyxVQUFZLFVBQzdEMmMsUUFBUWpkLEtBQU8sQ0FDYlUsWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxJQUMvQkMsT0FBUU0sT0FBQUEsRUFDUjJELFVBQVdrUCxXQUNYaUIsU0FBUyxHQUtYaUksUUFBUWpoQixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSx3RkFBOEZvZSxRQUFRamhCLFlBQWEsSUFBQVUsb0JBQUEsVyx3bENDM0NqSyxJQUFNb04sWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLG1CQUFpQixvQkFFekJBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksaURBQ3pESCxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxzQkFFckJILEVBQUFBLElBQUFBLElBQUEsb0dBQThGQSxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxjQUE0Qix5Q0FDcEpILEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLDBCQUEwQnlELFFBQVEsVUFFaEQsQ0FoQndCSixXQUFVNUosWUFBQSxhQWtCbEM0SixXQUFXTSxnQkFBaUIsRSwyRUNsQjVCLHlCQUNFOUssTUFBTyxRQUNQQyxVQUFXQyxJQUFBQSxHQUNYeUYsU0FBVSxDQUNSTCxVQUFXLENBQUVPLFFBQVMsQ0FBRUMsS0FBTSxPQUM5QnpFLE9BQVEsQ0FBRXdFLFFBQVMsQ0FBRUMsS0FBTSxPQUMzQjNFLFlBQWEsQ0FDWDBFLFFBQVMsQ0FDUEMsS0FBTSxRQUlackosV0FBWSxDQUNWOEcsS0FBTSxDQUNKNEcsS0FBTU8sY0FLTmxLLFNBQVcsU0FBWEEsU0FBWUMsTUFBSSxPQUNwQkosRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRMUMsT0FBQW1ELE9BQUEsR0FBS0YsUUFDVixFQUhGRCxTQUFRSSxZQUFHLFdBTVYsSUFBTStjLGdCQUFrQm5kLFNBQVNNLEtBQUssQ0FBQyxHQUFHNmMsZ0JBQWdCNWMsVUFBWSxrQkFDN0U0YyxnQkFBZ0JsZCxLQUFPOFQsY0FBQUEsRUFJdkJvSixnQkFBZ0JsaEIsV0FBVWUsT0FBQW1ELE9BQUEsQ0FBSytDLFlBQWEsQ0FBRXBFLE9BQVEsd0ZBQThGcWUsZ0JBQWdCbGhCLFlBQWEsSUFBQVUsb0JBQUEsbUIsNjBDQ2pDakwsSUFBTW9OLFlBQWMsQ0FFcEIsRUFFZSxTQUFTQyxXQUFVcEYsTUFHL0IsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSxJQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSxJQUFBQSxJQUFBLE1BQ0UsR0FBTSxRQUFNLFNBRWRBLEVBQUFBLElBQUFBLElBQUEsV0FDRUEsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsSUFBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksWUFDekRILEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLG1EQUM1REgsRUFBQUEsSUFBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksbUJBQW9CSCxFQUFBQSxJQUFBQSxJQUFDUyxrQkFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLFVBQVVtSCxRQUFRLFVBQVEsYUFFOUZGLEVBQUFBLElBQUFBLElBQUEsd0ZBQ0NBLEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFFBQXNCLGlEQUNqREgsRUFBQUEsSUFBQUEsSUFBQSxxREFBK0NBLEVBQUFBLElBQUFBLElBQUNTLGtCQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sVUFBVW1ILFFBQVEsVUFBUSxZQUNwR0YsRUFBQUEsSUFBQUEsSUFBQ21LLFNBQUFBLEdBQU0sQ0FBQ2pLLFFBQVEsV0FDbEJGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLGNBQWN5RCxRQUFRLFdBR2xDLENBckJ3QkosV0FBVTVKLFlBQUEsYUF1QmxDNEosV0FBV00sZ0JBQWlCLEUsMkVDdkJ0QjBKLFlBQWEzUCxFQUFBQSxJQUFBQSxJQUFnQkQsa0JBRW5DLGNBQ0U1RSxNQUFPLFFBQ1BDLFVBQVdDLElBQUFBLEdBQ1h6RCxXQUFZLENBQ1Y4RyxLQUFNLENBQ0o0RyxLQUFNTyxjQUtDa1QsS0FBTyxTQUFTQSxPQUMzQixJQUFBdFYsV0FBd0JDLEVBQUFBLE1BQUFBLFVBQVMsSUFBSW5ILEtBQUssS0FBTSxFQUFHLElBQUdvSCxZQUFBQyxFQUFBQSxjQUFBQSxHQUFBSCxVQUFBLEdBQS9DdkwsS0FBSXlMLFdBQUEsR0FBRW9OLFFBQU9wTixXQUFBLEdBQ3BCc0QsWUFBd0J2RCxFQUFBQSxNQUFBQSxVQUFTdEgsSUFBQUEsR0FBTWEsTUFBS2lLLFlBQUF0RCxFQUFBQSxjQUFBQSxHQUFBcUQsV0FBQSxHQUFyQ2tKLEtBQUlqSixXQUFBLEdBQUV5TyxRQUFPek8sV0FBQSxHQUVkdUosWUFBYXpNLEVBQUFBLE1BQUFBLGNBQVksU0FBQ2dOLFNBQU8sT0FBS0QsUUFBUUMsUUFBUSxHQUFFLENBQUNELFVBQ3pEWCxRQUFTcE0sRUFBQUEsTUFBQUEsY0FBWSxTQUFDNFIsU0FBTyxPQUFLRCxRQUFRQyxRQUFRLEdBQUUsQ0FBQ0QsVUFFM0QsT0FDRW5hLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsWUFBQUEsS0FBQ0gsSUFBQUEsR0FBUSxDQUNQbkQsS0FBTUEsS0FDTnNFLE9BQVFNLE9BQUFBLEVBQ1IyRCxVQUFXa1AsV0FDWGMsV0FBWUEsV0FDWkwsT0FBUUEsT0FDUkQsS0FBTUEsUUFJZCxFQW5CYTRJLEtBQUloZCxZQUFHLE9BbUJsQmdkLEtBQUs3YyxVQUFZLE9BSW5CNmMsS0FBS25oQixXQUFVZSxPQUFBbUQsT0FBQSxDQUFLK0MsWUFBYSxDQUFFcEUsT0FBUSxxaEJBQTJoQnNlLEtBQUtuaEIsWUFBYSxJQUFBVSxvQkFBQSxTQUFBeWdCLEtBQUFsVyxhQUFBLG1FQUFBQywwQkFBQUEsd0JBQUEsa0NBQUFDLEtBQUEsT0FBQUMsV0FBQStWLEtBQUFsVyxhQUFBSSxLQUFBLGlDLHF1Q0N2Q3hsQixJQUFNeUMsWUFBYyxDQUVwQixFQUVlLFNBQVNDLFdBQVVwRixNQUcvQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLElBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLElBQUFBLElBQUEsTUFDRSxHQUFNLFNBQU8sVUFFZkEsRUFBQUEsSUFBQUEsSUFBQSxXQUNFQSxFQUFBQSxJQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSxJQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSx1REFDekRILEVBQUFBLElBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLElBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHlEQUU5REgsRUFBQUEsSUFBQUEsSUFBQSw4SEFDQUEsRUFBQUEsSUFBQUEsSUFBQSxZQUFLQSxFQUFBQSxJQUFBQSxJQUFBLFFBQU1HLFdBQVcsTUFDbEIsVUFBYSxlQUFhLDBDQUc5QkgsRUFBQUEsSUFBQUEsSUFBQSw0RkFDQUEsRUFBQUEsSUFBQUEsSUFBQSxZQUFLQSxFQUFBQSxJQUFBQSxJQUFBLFFBQU1HLFdBQVcsTUFDbEIsVUFBYSxlQUFhLHNGQU85QkgsRUFBQUEsSUFBQUEsSUFBQSwrRkFDQUEsRUFBQUEsSUFBQUEsSUFBQSxZQUFLQSxFQUFBQSxJQUFBQSxJQUFBLFFBQU1HLFdBQVcsTUFDbEIsVUFBYSxlQUFhLDZMQU05QkgsRUFBQUEsSUFBQUEsSUFBQ21LLFNBQUFBLEdBQU0sQ0FBQ2pLLFFBQVEsV0FDbEJGLEVBQUFBLElBQUFBLElBQUN0SyxTQUFBQSxHQUFLLENBQUMrRyxHQUFHLG1CQUFtQnlELFFBQVEsV0FHdkMsQ0F2Q3dCSixXQUFVNUosWUFBQSxhQXlDbEM0SixXQUFXTSxnQkFBaUIsRSwyRUN6Q3RCMEosWUFBYTNQLEVBQUFBLElBQUFBLElBQWdCRCxrQkFFbkMsZUFDRTVFLE1BQU8sUUFDUEMsVUFBV0MsSUFBQUEsR0FDWHpELFdBQVksQ0FDVjhHLEtBQU0sQ0FDSjRHLEtBQU1PLGNBS0NtVCxTQUFXLFNBQVNBLFdBQy9CLElBQUFyUixVQUErQjFDLEVBQUFBLE1BQUFBLFVBQzdCLGlCQUFPLENBQ0wzSSxZQUFhLElBQUlDLEtBQUssS0FBTSxFQUFHLEdBQy9CVyxNQUFPLENBQUNkLElBQUFBLEdBQU1xQixNQUFPckIsSUFBQUEsR0FBTUMsSUFBS0QsSUFBQUEsR0FBTTRCLFFBQ3ZDLEdBQ0QsSUFMTTFCLFlBQVdxTCxTQUFYckwsWUFBYVksTUFBS3lLLFNBQUx6SyxNQVFyQixPQUNFMUIsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxZQUFBQSxLQUFDSCxJQUFBQSxHQUFRLENBQ1BpQixZQUFhQSxZQUNiRSxPQUFRTSxPQUFBQSxFQUNSMkQsVUFBV2tQLFdBQ1h6UyxNQUFPQSxTQUlmLEVBbkJhOGIsU0FBUWpkLFlBQUcsV0FtQnRCaWQsU0FBUzljLFVBQVksUUFJdkI4YyxTQUFTcGhCLFdBQVVlLE9BQUFtRCxPQUFBLENBQUsrQyxZQUFhLENBQUVwRSxPQUFRLDhaQUFvYXVlLFNBQVNwaEIsWUFBYSxJQUFBVSxvQkFBQSxhQUFBMGdCLFNBQUFuVyxhQUFBLHVFQUFBQywwQkFBQUEsd0JBQUEsbUNBQUFDLEtBQUEsV0FBQUMsV0FBQWdXLFNBQUFuVyxhQUFBSSxLQUFBLGtDLGdOQy9DemUsc0JBQWVnVywwQ0FBVyxDLG8yQ0NNcEJDLGdCQUFlLFNBQUFDLGtCQUNuQixTQUFBRCxnQkFBWXRULE1BQU93VCxTQUFTLElBQUFDLE1BTUssT0FOTEMsRUFBQUEsZUFBQUEsU0FBQSxLQUFBSixrQkFDMUJHLE9BQUFFLEVBQUFBLFVBQUFBLFNBQUEsS0FBQUwsZ0JBQUEsQ0FBTXRULE1BQU93VCxXQUVSSSxNQUFRLENBQ1hDLFdBQVcsR0FFYkosTUFBS0ssY0FBZUMsRUFBQUEsTUFBQUEsYUFBV04sS0FDakMsQ0FBQyxPQUFBTyxFQUFBQSxTQUFBQSxTQUFBVixnQkFBQUMsbUJBQUFVLEVBQUFBLFlBQUFBLFNBQUFYLGdCQUFBLEVBQUE1ZixJQUFBLG9CQUFBQyxNQUVELFNBQUF1Z0Isb0JBQ0VDLEtBQUtuVSxNQUFNekMsWUFBYzRXLEtBQUtDLGFBQ2hDLEdBQUMsQ0FBQTFnQixJQUFBLHVCQUFBQyxNQUVELFNBQUEwZ0IsdUJBQ0VGLEtBQUtHLHFCQUNQLEdBQUMsQ0FBQTVnQixJQUFBLHFCQUFBQyxNQUVELFNBQUE0Z0IsbUJBQW1CQyxZQUNaQSxVQUFValgsWUFBYzRXLEtBQUtuVSxNQUFNekMsWUFBWTRXLEtBQUtDLGNBRXJESSxVQUFValgsYUFBZTRXLEtBQUtuVSxNQUFNekMsWUFDdEM0VyxLQUFLRyxxQkFDVCxHQUFDLENBQUE1Z0IsSUFBQSxTQUFBQyxNQUVELFNBQUE4Z0IsU0FDRSxJQUFBQyxZQU9JUCxLQUFLblUsTUFOUG9GLE1BQUtzUCxZQUFMdFAsTUFDQW1DLE9BQU1tTixZQUFObk4sT0FDQW9OLFFBQU9ELFlBQVBDLFFBQ01DLFlBQVdGLFlBQWpCcGlCLEtBQytCdWlCLFFBQU9ILFlBQXRDbmQsV0FBY08sZ0JBQ2QrQyxVQUFTNlosWUFBVDdaLFVBRUZpYSxZQUFzQ1gsS0FBS1AsTUFBckNDLFVBQVNpQixZQUFUakIsVUFBV2tCLFNBQVFELFlBQVJDLFNBQVVDLE9BQU1GLFlBQU5FLE9BQ3ZCdlAsUUFBVThCLFNBRWQsT0FDRTNSLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxhQUFhb2YsSUFBS2QsS0FBS0wsYUFBYWhlLFNBQ2hEc1AsTUFBTTlDLEtBQUksU0FBQ2hRLEtBQU00aUIsT0FDaEIsSUFBSTdDLFNBQVd3QixXQUFhcUIsT0FBU0gsVUFBWUcsT0FBU0YsT0FDMURHLGlCQUE2QlIsUUFBUVMsUUFBUTlpQixNQUFyQ3VELFVBQVNzZixpQkFBVHRmLFVBQVdtTSxNQUFLbVQsaUJBQUxuVCxNQUVuQixPQUNFcE0sRUFBQUEsWUFBQUEsS0FBQ2lmLFFBQU8sQ0FBYWxoQixNQUFPckIsS0FBTThTLE1BQU9BLE1BQU10UCxVQUM3Q0YsRUFBQUEsWUFBQUEsS0FBQSxPQUNFb00sTUFBT0EsTUFDUG5NLFdBQVc0VSxFQUFBQSxPQUFBQSxHQUNULGFBQ0E1VSxVQUNBd2MsVUFBWSxvQkFDWnhYLFVBQVV3YSxXQUFXL2lCLEtBQU1tVCxVQUFZLFlBQ3ZDbVAsYUFDRS9aLFVBQVV5YSxJQUFJVixZQUFhdGlCLEtBQU0sVUFDakMsdUJBVk00aUIsTUFlbEIsS0FHTixHQUFDLENBQUF4aEIsSUFBQSxjQUFBQyxNQUVELFNBQUF5Z0IsY0FBYyxJQUFBbUIsT0FBQSxLQUNSQyxLQUFPckIsS0FBS0wsYUFBYXJPLFFBQ3pCZ1EsU0FBWXRCLEtBQUt1QixVQUFZLElBQUlDLFVBQUFBLEdBQVV4QixLQUFLblUsTUFBTTRWLFVBQVcsQ0FDbkU5RyxtQkFBb0JxRixLQUFLblUsTUFBTThPLHFCQUc3QitHLHNCQUF3QixTQUF4QkEsc0JBQXlCQyxNQUFPQyxZQUNsQyxLQUFLQyxFQUFBQSxVQUFBQSxJQUFRUixLQUFNTSxVQUFXRyxFQUFBQSxVQUFBQSxJQUFXVCxLQUFNTSxPQUFRLENBQ3JELElBQUlJLFFBQVNDLEVBQUFBLFVBQUFBLElBQWlCWCxNQUM5QlksYUFBcUJiLE9BQUt2VixNQUFwQm9GLE1BQUtnUixhQUFMaFIsTUFBT1YsSUFBRzBSLGFBQUgxUixJQUViLElBQUkyUixFQUFBQSxVQUFBQSxJQUFXSCxPQUFRSixPQUFRLENBQzdCLElBQUlRLGFBQWNDLEVBQUFBLFVBQUFBLElBQVdMLE9BQVFKLE1BQU1wRSxFQUFHaE4sSUFBS1UsTUFBTXhRLFFBRXpEMmdCLE9BQUtpQixZQUFZLENBQ2Z6QixTQUFVdUIsWUFDVnRCLE9BQVFzQixZQUNSbGYsT0FBUTJlLFdBQ1JVLElBQUtYLE9BRVQsQ0FDRixDQUVBUCxPQUFLbUIsU0FBVyxDQUFDLEVBQ2pCbkIsT0FBS29CLFNBQVMsQ0FBRTlDLFdBQVcsR0FDN0IsRUFFQTRCLFNBQVNtQixHQUFHLGFBQWEsU0FBQ0gsS0FDeEIsSUFBQUksY0FBcUJ0QixPQUFLdlYsTUFBcEJvRixNQUFLeVIsY0FBTHpSLE1BQU9WLElBQUdtUyxjQUFIblMsSUFFVHFRLFVBQVksRUFDWkMsUUFBVSxFQU1kLEdBSktPLE9BQUszQixNQUFNQyxhQUNkaUQsRUFBQUEsUUFBQUEsSUFBT3ZCLE9BQUt2VixNQUFNK1csY0FBZSxDQUFDTixNQUNsQ2xCLE9BQUttQixTQUFXLENBQUVoRixFQUFHK0UsSUFBSS9FLEVBQUdDLEVBQUc4RSxJQUFJOUUsSUFFakM4RCxTQUFTekosV0FBV3dKLE1BQU8sQ0FDN0IsSUFBSXdCLFNBQVViLEVBQUFBLFVBQUFBLElBQWlCWCxNQUM5QnlCLG9CQUF3QkMsRUFBQUEsVUFBQUEsSUFDdkIzQixPQUFLbUIsU0FDTE0sUUFDQVAsSUFDQXJSLE1BQU14USxPQUNOOFAsS0FMRXFRLFNBQVFrQyxtQkFBUmxDLFNBQVVDLE9BQU1pQyxtQkFBTmpDLE1BT2hCLENBRUFPLE9BQUtvQixTQUFTLENBQ1o5QyxXQUFXLEVBQ1hrQixTQUFBQSxTQUNBQyxPQUFBQSxRQUVKLElBRUFTLFNBQVNtQixHQUFHLGdCQUFnQixTQUFDSCxLQUMzQixHQUE4QixpQkFBMUJsQixPQUFLdlYsTUFBTXpDLFdBRWYsUUFBUXlZLEVBQUFBLFVBQUFBLElBQVFULE9BQUt6QixhQUFhck8sUUFBU2dSLElBQzdDLElBRUFoQixTQUFTbUIsR0FBRyxTQUFTLFNBQUNkLE9BQUssT0FBS0Qsc0JBQXNCQyxNQUFPLFFBQVEsSUFFckVMLFNBQVNtQixHQUFHLGVBQWUsU0FBQ2QsT0FBSyxPQUMvQkQsc0JBQXNCQyxNQUFPLGNBQWMsSUFHN0NMLFNBQVNtQixHQUFHLFVBQVUsU0FBQ08sUUFDckI1QixPQUFLaUIsWUFBV3pqQixPQUFBbUQsT0FBQyxDQUFDLEVBQUlxZixPQUFLM0IsTUFBTyxDQUFBeGMsT0FBUSxTQUFVK2YsT0FBQUEsVUFDcEQ1QixPQUFLbUIsU0FBVyxDQUFDLEVBQ2pCbkIsT0FBS29CLFNBQVMsQ0FBRTlDLFdBQVcsS0FDM0JpRCxFQUFBQSxRQUFBQSxJQUFPdkIsT0FBS3ZWLE1BQU1vWCxZQUFhLENBQUM3QixPQUFLM0IsT0FDdkMsR0FDRixHQUFDLENBQUFsZ0IsSUFBQSxzQkFBQUMsTUFFRCxTQUFBMmdCLHNCQUNPSCxLQUFLdUIsWUFDVnZCLEtBQUt1QixVQUFVMkIsV0FDZmxELEtBQUt1QixVQUFZLEtBQ25CLEdBQUMsQ0FBQWhpQixJQUFBLGNBQUFDLE1BRUQsU0FBQTZpQixZQUFBN2IsTUFBdUQsSUFBekNxYSxPQUFNcmEsS0FBTnFhLE9BQVFELFNBQVFwYSxLQUFSb2EsU0FBVTNkLE9BQU11RCxLQUFOdkQsT0FBUStmLE9BQU14YyxLQUFOd2MsT0FBUVYsSUFBRzliLEtBQUg4YixLQUM5QixJQUFaekIsU0FBK0IsSUFBZEQsVUFDbkJaLEtBQUtuVSxNQUFNeEMsY0FDVDJXLEtBQUtuVSxNQUFNeEMsYUFBYSxDQUN0Qi9CLE1BQU9zWixTQUNQclosSUFBS3NaLE9BQ0w1ZCxPQUFBQSxPQUNBK2YsT0FBQUEsT0FDQVYsSUFBQUEsSUFDQXhWLFdBQVlrVCxLQUFLblUsTUFBTWlCLFlBRS9CLElBQUMsQ0E1SmtCLENBQVNxRixNQUFBQSxXQUFlZ04sZ0JBQUFyVyxhQUFBLGk2Q0F1TDdDLHdDQUE4QixvQkFBQUMsMEJBQUFBLHdCQUFBLDJCQUFBQyxLQUFBLGtCQUFBQyxXQUFBa1csZ0JBQUFyVyxhQUFBSSxLQUFBLDJCLGtXQ3hMMUJpYSxnQkFBa0IsU0FBbEJBLGdCQUFtQkMsSUFBS0MsTUFBSSxPQUFLRCxJQUFJRSxNQUFRRCxNQUFRRCxJQUFJRyxPQUFTRixJQUFJLEVBQ3RFRyxhQUFlLFNBQWZBLGFBQWdCQyxTQUFVSixNQUFJLE9BQ2hDSSxTQUFTMWtCLFFBQU8sU0FBQ3FrQixLQUFHLE9BQUtELGdCQUFnQkMsSUFBS0MsS0FBSyxJQUFFbFYsS0FBSSxTQUFDaVYsS0FBRyxPQUFLQSxJQUFJalosS0FBSyxHQUFDLEVBRXhFdVosZUFBYyxTQUFBdEUsa0JBQUEsU0FBQXNFLGlCQUFBLE9BQUFuRSxFQUFBQSxlQUFBQSxTQUFBLEtBQUFtRSxpQkFBQWxFLEVBQUFBLFVBQUFBLFNBQUEsS0FBQWtFLGVBQUFsakIsVUFBQSxRQUFBcWYsRUFBQUEsU0FBQUEsU0FBQTZELGVBQUF0RSxtQkFBQVUsRUFBQUEsWUFBQUEsU0FBQTRELGVBQUEsRUFBQW5rQixJQUFBLFNBQUFDLE1BQ2xCLFNBQUE4Z0IsU0FXRSxJQVZBLElBQUFDLFlBR0lQLEtBQUtuVSxNQUZQNFgsU0FBUWxELFlBQVJrRCxTQUNlRSxNQUFLcEQsWUFBcEJxRCxZQUFlRCxNQUViRSxhQUFjQyxFQUFBQSxZQUFBQSxJQUFZTCxVQUFVTSxPQUFPLEdBRTNDelMsUUFBVSxFQUNaMFMsUUFBVSxFQUNWQyxJQUFNLEdBRUQzUyxTQUFXcVMsT0FBTyxDQUN2QixJQUFJcGtCLElBQU0sUUFBVStSLFFBRXBCOUssS0FDRXFkLFlBQVk5a0IsUUFBTyxTQUFDcWtCLEtBQUcsT0FBS0QsZ0JBQWdCQyxJQUFLOVIsUUFBUSxJQUFFLElBQU0sQ0FBQyxFQUQ5RG5ILE1BQUszRCxLQUFMMkQsTUFBT21aLEtBQUk5YyxLQUFKOGMsS0FBTUMsTUFBSy9jLEtBQUwrYyxNQUFPVyxLQUFJMWQsS0FBSjBkLEtBRzFCLEdBQUsvWixNQUFMLENBS0EsSUFBSWdhLElBQU1DLEtBQUsvYyxJQUFJLEVBQUdpYyxLQUFPVSxTQUU3QixHQUFJaEUsS0FBS3FFLG1CQUFtQmYsS0FBTVksTUFBTyxDQUN2QyxJQUFJSSxRQUFVQyxjQUFBQSxFQUFjQyxZQUFZeEUsS0FBS25VLE1BQU8xQixPQUVoRGdhLEtBQ0ZGLElBQUk5a0IsS0FBS29sQixjQUFBQSxFQUFjRSxXQUFXZCxNQUFPUSxJQUFLNWtCLElBQU0sU0FHdEQwa0IsSUFBSTlrQixLQUFLb2xCLGNBQUFBLEVBQWNFLFdBQVdkLE1BQU9PLEtBQU0za0IsSUFBSytrQixVQUVwRE4sUUFBVTFTLFFBQVVpUyxNQUFRLENBQzlCLE1BQ01ZLEtBQ0ZGLElBQUk5a0IsS0FBS29sQixjQUFBQSxFQUFjRSxXQUFXZCxNQUFPUSxJQUFLNWtCLElBQU0sU0FHdEQwa0IsSUFBSTlrQixLQUNGb2xCLGNBQUFBLEVBQWNFLFdBQ1pkLE1BQ0EsRUFDQXBrQixJQUNBeWdCLEtBQUswRSxlQUFlakIsU0FBVW5TLFdBR2xDMFMsUUFBVTFTLFNBQW9CLENBM0JoQyxNQUZFQSxTQStCSixDQUVBLE9BQU83UCxFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsVUFBU0MsU0FBRXNpQixLQUNuQyxHQUFDLENBQUExa0IsSUFBQSxxQkFBQUMsTUFFRCxTQUFBNmtCLG1CQUFtQmhCLEtBQU1hLE1BQ3ZCLElBQU1ULFNBQWF6RCxLQUFLblUsTUFBbEI0WCxTQUVOLE9BQU94UyxnQkFBTW9TLEtBQU1BLEtBQU9hLE1BQU1TLE9BQU0sU0FBQ0MsR0FHckMsT0FBaUIsSUFGSHBCLGFBQWFDLFNBQVVtQixHQUFHbmtCLE1BRzFDLEdBQ0YsR0FBQyxDQUFBbEIsSUFBQSxpQkFBQUMsTUFFRCxTQUFBa2xCLGVBQWVqQixTQUFVSixNQUFNLElBQUEvRCxNQUFBLEtBQzdCdUYsYUFBaUM3RSxLQUFLblUsTUFBaENuRixVQUFTbWUsYUFBVG5lLFVBQ0FqRSxPQURzQm9pQixhQUFYakIsWUFDVWtCLGlCQUFpQnpCLE1BQ3RDMEIsZ0JBQWtCdkIsYUFBYUMsU0FBVUosTUFDekMyQixNQUFRRCxnQkFBZ0J0a0IsT0FDOUIsUUFBT3VrQixRQUNMdmpCLEVBQUFBLFlBQUFBLEtBQUEsVUFDRXlGLEtBQUssU0FFTHhGLFdBQVc0VSxFQUFBQSxPQUFBQSxHQUFLLGtCQUFtQixpQkFDbkNDLFFBQVMsU0FBQUEsUUFBQzBPLEdBQUMsT0FBSzNGLE1BQUtoUSxTQUFTK1QsS0FBTTRCLEVBQUUsRUFBQ3RqQixTQUV0QytFLFVBQVV4QyxTQUFTb0wsU0FBUzBWLE1BQU9ELGdCQUFpQnRpQixTQUpoRCxNQUFRNGdCLEtBU25CLEdBQUMsQ0FBQTlqQixJQUFBLFdBQUFDLE1BRUQsU0FBQThQLFNBQVMrVCxLQUFNNEIsR0FDYkEsRUFBRUMsaUJBQ0ZELEVBQUVFLGtCQUNGbkYsS0FBS25VLE1BQU1xUixXQUFXbUcsS0FBTTRCLEVBQUUza0IsT0FDaEMsSUFBQyxDQXhGaUIsQ0FBUzZSLE1BQUFBLFdBa0c3QnVSLGVBQWUwQixhQUFZeG1CLE9BQUFtRCxPQUFBLEdBQ3RCd2lCLGNBQUFBLEVBQWNhLGNBQ2xCMUIsZUFBQTVhLGFBQUEsb25CQUVELHNDQUE2QixvQkFBQUMsMEJBQUFBLHdCQUFBLDBCQUFBQyxLQUFBLGlCQUFBQyxXQUFBeWEsZUFBQTVhLGFBQUFJLEtBQUEsMEIsNERDL0d2Qm1jLHNCQUF3QixTQUF4QkEsc0JBQXFCN2UsTUFBcUIsSUFBZjdFLFNBQVE2RSxLQUFSN0UsU0FDL0IsT0FBT0YsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLG1DQUFrQ0MsU0FBRUEsVUFDNUQsRUFGTTBqQixzQkFBcUJyakIsWUFBRyx3QkFBSHFqQixzQkFBQXZjLGFBQUcsQ0FBSCwrREFJM0Isb0RBQW9DLG9CQUFBQywwQkFBQUEsd0JBQUEsaUNBQUFDLEtBQUEsd0JBQUFDLFdBQUFvYyxzQkFBQXZjLGFBQUFJLEtBQUEsaUMscUtDRDlCb2MsUUFBVSxTQUFWQSxRQUFXQyxFQUFHQyxHQUFDLE9BQ25CRCxFQUFFLEdBQUd0VSxRQUFVdVUsRUFBRSxHQUFHdlUsT0FBU3NVLEVBQUUsR0FBRzlpQixTQUFXK2lCLEVBQUUsR0FBRy9pQixNQUFNLEVBRW5ELFNBQVNnakIsaUJBQ2QsT0FBT0MsRUFBQUEsZ0JBQUFBLElBQVEsU0FBQzFlLFNBWWQsSUFYQSxJQUFRaUssTUFBMERqSyxRQUExRGlLLE1BQU94TyxPQUFtRHVFLFFBQW5EdkUsT0FBUWtqQixRQUEyQzNlLFFBQTNDMmUsUUFBU0MsUUFBa0M1ZSxRQUFsQzRlLFFBQVNDLFVBQXlCN2UsUUFBekI2ZSxVQUFXbmYsVUFBY00sUUFBZE4sVUFDcERvZixhQUFzQkMsRUFBQUEsWUFBQUEsSUFBVyxDQUFFQyxVQUFXL1UsTUFBT3ZLLFVBQUFBLFlBQS9DdWYsTUFBS0gsWUFBTEcsTUFBT0MsS0FBSUosWUFBSkksS0FFVHpDLFNBQVdoaEIsT0FBTzBMLEtBQUksU0FBQ2dZLEtBQUcsT0FDNUJDLEVBQUFBLFlBQUFBLElBQWNELElBQUtsVixNQUFPNFUsVUFBV25mLFVBQVUsSUFHakQyZixjQUF3QnZDLEVBQUFBLFlBQUFBLElBQVlMLFNBQVVXLEtBQUsvYyxJQUFJc2UsUUFBVSxFQUFHLElBQTlENUIsT0FBTXNDLGFBQU50QyxPQUFRdUMsTUFBS0QsYUFBTEMsTUFHUkMsYUFBZUQsTUFBTTdsQixPQUFTLEVBQUltbEIsUUFBVSxFQUFJQSxRQUMvQzdCLE9BQU90akIsT0FBUzhsQixjQUFjeEMsT0FBTzVrQixLQUFLLElBRWpELE1BQU8sQ0FDTDhtQixNQUFBQSxNQUNBQyxLQUFBQSxLQUVBbkMsT0FBQUEsT0FDQXVDLE1BQUFBLE1BQ0FyVixNQUFBQSxNQUNBMFMsTUFBTzFTLE1BQU14USxPQUViK2xCLE1BQUssU0FBQUEsTUFBQzNrQixNQUVKLE9BRGdCNGpCLGdCQUNUZ0IsQ0FBTzduQixPQUFBbUQsT0FBQyxDQUFDLEVBQUlpRixRQUFZbkYsTUFDbEMsRUFFQTZrQixlQUFjLFNBQUFBLGVBQUNDLFlBQ2IsT0FBTzFWLE1BQU0wVixXQUNmLEVBRUFDLGVBQWMsU0FBQUEsZUFBQ3pvQixNQUNiLE9BQU84UyxNQUFNdkcsTUFBSyxTQUFDbWMsR0FBQyxPQUFLbmdCLFVBQVV3YSxXQUFXMkYsRUFBRzFvQixLQUFLLEdBQ3hELEVBRUEybUIsaUJBQWdCLFNBQUFBLGlCQUFDekIsTUFDZixPQUFPSSxTQUNKMWtCLFFBQU8sU0FBQ3FrQixLQUFHLE9BNUNBLFNBQWxCRCxnQkFBbUJDLElBQUtDLE1BQUksT0FBS0QsSUFBSUUsTUFBUUQsTUFBUUQsSUFBSUcsT0FBU0YsSUFBSSxDQTRDL0NGLENBQWdCQyxJQUFLQyxLQUFLLElBQzFDbFYsS0FBSSxTQUFDaVYsS0FBRyxPQUFLQSxJQUFJalosS0FBSyxHQUMzQixFQUVBMmMsZUFBYyxTQUFBQSxlQUFDM2MsT0FDYixPQUFPekQsVUFBVW9nQixlQUFlakIsVUFBVXZlLE1BQU02QyxPQUFROGIsTUFDMUQsRUFFQWMsZUFBYyxTQUFBQSxlQUFDNWMsT0FDYixJQUFNN0MsTUFBUXVlLFVBQVV2ZSxNQUFNNkMsT0FDeEI1QyxJQUFNc2UsVUFBVXRlLElBQUk0QyxPQUMxQixPQUFPekQsVUFBVXFnQixlQUFlemYsTUFBT0MsSUFBSzJlLEtBQzlDLEVBRUosR0FBR1osUUFDTCxDQ25EMEQsSUFFcEQwQixlQUFjLFNBQUE1SCxrQkFDbEIsU0FBQTRILGlCQUFxQixJQUFBMUgsT0FBQUMsRUFBQUEsZUFBQUEsU0FBQSxLQUFBeUgsZ0JBQUEsUUFBQUMsS0FBQXptQixVQUFBQyxPQUFOb0IsS0FBSSxJQUFBMkwsTUFBQXlaLE1BQUFDLEtBQUEsRUFBQUEsS0FBQUQsS0FBQUMsT0FBSnJsQixLQUFJcWxCLE1BQUExbUIsVUFBQTBtQixNQU9rQyxPQU5uRDVILE9BQUFFLEVBQUFBLFVBQUFBLFNBQUEsS0FBQXdILGVBQUEsR0FBQW5jLE9BQVNoSixRQVNYOFIsaUJBQW1CLFNBQUMwUCxNQUNsQixJQUFBOUMsWUFBZ0NqQixNQUFLelQsTUFBN0JvRixNQUFLc1AsWUFBTHRQLE9BRVI1SCxFQUYyQmtYLFlBQVpsWCxjQUVGNEgsTUFBTWtXLE1BQU05RCxLQUFLL2IsTUFBTytiLEtBQUs5YixJQUFNLEdBQUk4YixLQUN0RCxFQUFDL0QsTUFFRDhILGVBQWlCLFNBQUMvRCxLQUFNL2lCLFFBQ3RCLElBSUkrbUIsS0FKSnhDLGFBQThCdkYsTUFBS3pULE1BQTNCb0YsTUFBSzRULGFBQUw1VCxNQUFPaU0sV0FBVTJILGFBQVYzSCxXQUNYdUosUUFBVW5ILE1BQUtzRSxZQUFZdEUsTUFBS3pULE9BQ2hDb1ksS0FBTXFELEVBQUFBLGlCQUFBQSxHQUFJaEksTUFBS0ssYUFBYXJPLFFBQVMsZUFBZSxHQUdwRDJTLE1BQUtvRCxLQUFPcEQsSUFBSXRpQixTQUFTMGhCLEtBQU8sSUFHcENuRyxXQURhdUosUUFBUTNCLGlCQUFpQnpCLE1BQ25CcFMsTUFBTW9TLEtBQU8sR0FBSWdFLEtBQU1oRSxLQUFNL2lCLE9BQ2xELEVBQUNnZixNQUVEaUksYUFBZSxXQUNiLElBQVE5RixVQUFjbkMsTUFBS3pULE1BQW5CNFYsVUFDUixPQUFPQSxVQUFZQSxZQUFjbkMsTUFBS0ssYUFBYXJPLE9BQ3JELEVBQUNnTyxNQWFEa0ksa0JBQW9CLFNBQUNycEIsS0FBTTRpQixPQUN6QixJQUFBMEcsYUFBMENuSSxNQUFLelQsTUFBekM2YixhQUFZRCxhQUFaQyxhQUFjdFUsT0FBTXFVLGFBQU5yVSxPQUFRMU0sVUFBUytnQixhQUFUL2dCLFVBRTVCLE9BQU9naEIsYUFBYSxDQUNsQnZwQixLQUFBQSxLQUNBb0IsSUFBSyxVQUFGc0wsT0FBWWtXLE9BQ2ZyZixXQUFXNFUsRUFBQUEsT0FBQUEsR0FDVCxnQkFDQTVQLFVBQVV3YSxXQUFXL2lCLEtBQU1pVixXQUFhLFlBRzlDLEVBQUNrTSxNQUVEcUksWUFBYyxXQUNaLElBQUFDLGFBQXdEdEksTUFBS3pULE1BQXZEbkssVUFBU2ttQixhQUFUbG1CLFVBQVd1UCxNQUFLMlcsYUFBTDNXLE1BQU95VyxhQUFZRSxhQUFaRixhQUFjdEosY0FBYXdKLGFBQWJ4SixjQUN0QyxPQUNFM2MsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFXQSxVQUFXb2YsSUFBS3hCLE1BQUtLLGFBQWFoZSxVQUNoRHdKLEVBQUFBLFlBQUFBLE1BQUEsT0FDRXpKLFdBQVc0VSxFQUFBQSxPQUFBQSxHQUNULGtCQUNBOEgsZUFBaUIsOEJBQ2pCemMsU0FBQSxDQUVEK2xCLGVBQ0NqbUIsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFVBQVVvZixJQUFLeEIsTUFBS3VJLGNBQWNsbUIsU0FDOUNzUCxNQUFNOUMsSUFBSW1SLE1BQUtrSSxzQkFHcEIvbEIsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLFVBQVVvZixJQUFLeEIsTUFBS3dJLFlBQVlubUIsVUFDN0NGLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxrQkFBaUJDLFVBQzlCRixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsWUFBV0MsVUFDeEJGLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxvQkFBbUJDLFNBQUMsZ0JBT2pELEVBL0VFMmQsTUFBS0ssY0FBZUMsRUFBQUEsTUFBQUEsYUFDcEJOLE1BQUt1SSxlQUFnQmpJLEVBQUFBLE1BQUFBLGFBQ3JCTixNQUFLd0ksYUFBY2xJLEVBQUFBLE1BQUFBLGFBRW5CTixNQUFLc0UsWUFBY21FLGlCQUFnQ3pJLEtBQ3JELENBQUMsT0FBQU8sRUFBQUEsU0FBQUEsU0FBQW1ILGVBQUE1SCxtQkFBQVUsRUFBQUEsWUFBQUEsU0FBQWtILGVBQUEsRUFBQXpuQixJQUFBLGNBQUFDLE1BeUJELFNBQUF3b0IsY0FBYyxJQUFBQyxvQkFFTkMsYUFBY0MsRUFBQUEsT0FBQUEsR0FBVW5JLEtBQUs4SCxZQUFZeFcsU0FDekM4VyxjQUFrQyxRQUFsQkgsb0JBQUFqSSxLQUFLNkgscUJBQWEsSUFBQUkscUJBQWxCQSxvQkFBb0IzVyxTQUN0QzZXLEVBQUFBLE9BQUFBLEdBQVVuSSxLQUFLNkgsY0FBY3ZXLFNBQzdCLEVBQ0UrVyxZQUFhRixFQUFBQSxPQUFBQSxHQUFVbkksS0FBS0wsYUFBYXJPLFNBQVc4VyxjQUUxRCxPQUFPaEUsS0FBSy9jLElBQUkrYyxLQUFLa0UsTUFBTUQsV0FBYUgsYUFBYyxFQUN4RCxHQUFDLENBQUEzb0IsSUFBQSxTQUFBQyxNQTBDRCxTQUFBOGdCLFNBQ0UsSUFBQWlJLGFBMEJJdkksS0FBS25VLE1BekJQMU4sS0FBSW9xQixhQUFKcHFCLEtBQ0FvUyxJQUFHZ1ksYUFBSGhZLElBQ0FVLE1BQUtzWCxhQUFMdFgsTUFDQXZQLFVBQVM2bUIsYUFBVDdtQixVQUNBd2MsU0FBUXFLLGFBQVJySyxTQUNBOVUsV0FBVW1mLGFBQVZuZixXQUNBb2YsaUJBQWdCRCxhQUFoQkMsaUJBRUEzQyxVQUFTMEMsYUFBVDFDLFVBQ0FyRixRQUFPK0gsYUFBUC9ILFFBQ0FwZCxXQUFVbWxCLGFBQVZubEIsV0FFQWdRLE9BQU1tVixhQUFOblYsT0FDQXNVLGFBQVlhLGFBQVpiLGFBQ0FlLFNBQVFGLGFBQVJFLFNBQ0EvaEIsVUFBUzZoQixhQUFUN2hCLFVBQ0FrYyxjQUFhMkYsYUFBYjNGLGNBQ0FLLFlBQVdzRixhQUFYdEYsWUFDQXlGLGNBQWFILGFBQWJHLGNBQ0FDLFdBQVVKLGFBQVZJLFdBQ0E3YixXQUFVeWIsYUFBVnpiLFdBQ0E2TixtQkFBa0I0TixhQUFsQjVOLG1CQUNBdFEsU0FBUWtlLGFBQVJsZSxTQUNBcEYsVUFBU3NqQixhQUFUdGpCLFVBQ0FtWixjQUFhbUssYUFBYm5LLGNBR0YsR0FBSW9LLGlCQUFrQixPQUFPeEksS0FBSzJILGNBRWxDLElBQUlsQixRQUFVekcsS0FBSzRELFlBQVk1RCxLQUFLblUsT0FDOUJrWSxPQUFrQjBDLFFBQWxCMUMsT0FBUXVDLE1BQVVHLFFBQVZILE1BRVZzQyx3QkFBMEJ4SyxjQUMxQmlILDBCQUNBbkcsWUFBQUEsRUFDQTJKLFlBQWN6bEIsV0FBVzBsQixZQUV2QkMsY0FBZ0IsQ0FDcEI3SyxTQUFBQSxTQUNBMkgsVUFBQUEsVUFDQXJGLFFBQUFBLFFBQ0E5WixVQUFBQSxVQUNBdEQsV0FBQUEsV0FDQXFsQixTQUFBQSxTQUNBQyxjQUFBQSxjQUNBQyxXQUFBQSxXQUNBN2IsV0FBQUEsV0FDQThXLFlBQWE2QyxRQUNieGhCLFVBQUFBLFdBR0YsT0FDRWtHLEVBQUFBLFlBQUFBLE1BQUEsT0FBS3pKLFVBQVdBLFVBQVdzbkIsS0FBSyxXQUFXbEksSUFBS2QsS0FBS0wsYUFBYWhlLFNBQUEsRUFDaEVGLEVBQUFBLFlBQUFBLEtBQUMwZCxvQkFBZSxDQUNkelksVUFBV0EsVUFDWHZJLEtBQU1BLEtBQ05pVixPQUFRQSxPQUNSN0MsSUFBS0EsSUFDTFUsTUFBT0EsTUFDUDdILFdBQVlBLFdBQ1pxWSxVQUFXekIsS0FBS3VILGFBQ2hCL0csUUFBU0EsUUFDVG9DLGNBQWVBLGNBQ2ZLLFlBQWFBLFlBQ2I1WixhQUFjMlcsS0FBS3JNLGlCQUNuQnZRLFdBQVlBLFdBQ1p1WCxtQkFBb0JBLG1CQUNwQjdOLFdBQVlBLGNBR2QzQixFQUFBQSxZQUFBQSxNQUFBLE9BQ0V6SixXQUFXNFUsRUFBQUEsT0FBQUEsR0FDVCxrQkFDQThILGVBQWlCLDhCQUVuQjRLLEtBQUssTUFBS3JuQixTQUFBLENBRVQrbEIsZUFDQ2ptQixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsV0FBV29mLElBQUtkLEtBQUs2SCxjQUFjbG1CLFNBQy9Dc1AsTUFBTTlDLElBQUk2UixLQUFLd0gsc0JBR3BCL2xCLEVBQUFBLFlBQUFBLEtBQUNtbkIsd0JBQXVCLENBQUFqbkIsVUFDdEJ3SixFQUFBQSxZQUFBQSxNQUFDMGQsWUFBV2pxQixPQUFBbUQsT0FBQSxDQUFDc0ksU0FBVUEsVUFBYzBlLGNBQWEsQ0FBRXhZLElBQUt5UCxLQUFLblUsTUFBTTBFLElBQUk1TyxTQUFBLENBQ3JFb2lCLE9BQU81VixLQUFJLFNBQUM4YSxLQUFNM1ksS0FBRyxPQUNwQjdPLEVBQUFBLFlBQUFBLEtBQUN5bkIsU0FBQUEsRUFBUXRxQixPQUFBbUQsT0FBQSxDQUFXMGhCLFNBQVV3RixNQUFVRixlQUF6QnpZLElBQTBDLE1BRXhEZ1csTUFBTTdsQixTQUNQZ0IsRUFBQUEsWUFBQUEsS0FBQ2lpQixtQkFBYzlrQixPQUFBbUQsT0FBQSxDQUNiMGhCLFNBQVU2QyxNQUNWcEosV0FBWThDLEtBQUtvSCxnQkFDYjJCLDJCQVFwQixJQUFDLENBMUxpQixDQUFTNVcsTUFBQUEsV0FtTzdCNlUsZUFBZTVCLGFBQWUsQ0FDNUJRLFFBQVMsRUFDVEQsUUFBU3dELEtBQ1ZuQyxlQUFBbGUsYUFBQSwyK0VBRUQsc0NBQTZCLG9CQUFBQywwQkFBQUEsd0JBQUEsMEJBQUFDLEtBQUEsaUJBQUFDLFdBQUErZCxlQUFBbGUsYUFBQUksS0FBQSx5Qiw0NkNDalB2QmtnQixVQUFTLFNBQUFoSyxrQkFBQSxTQUFBZ0ssWUFBQSxPQUFBN0osRUFBQUEsdUVBQUFBLFNBQUEsS0FBQTZKLFlBQUE1SixFQUFBQSxrRUFBQUEsU0FBQSxLQUFBNEosVUFBQTVvQixVQUFBLFFBQUFxZixFQUFBQSxpRUFBQUEsU0FBQXVKLFVBQUFoSyxtQkFBQVUsRUFBQUEsb0VBQUFBLFNBQUFzSixVQUFBLEVBQUE3cEIsSUFBQSxTQUFBQyxNQUNiLFNBQUE4Z0IsU0FDRSxJQUFBQyxZQW1CSVAsS0FBS25VLE1BbEJQZ0MsTUFBSzBTLFlBQUwxUyxNQUNBbk0sVUFBUzZlLFlBQVQ3ZSxVQUNBeUksTUFBS29XLFlBQUxwVyxNQUNBK1QsU0FBUXFDLFlBQVJyQyxTQUNBN1QsU0FBUWtXLFlBQVJsVyxTQUNBb2UsU0FBUWxJLFlBQVJrSSxTQUNBQyxlQUFhbkksWUFBYm1JLGNBQ0FDLFdBQVVwSSxZQUFWb0ksV0FDQWppQixVQUFTNlosWUFBVDdaLFVBQ0FvZ0IsZUFBY3ZHLFlBQWR1RyxlQUNBQyxlQUFjeEcsWUFBZHdHLGVBQ0FsQixVQUFTdEYsWUFBVHNGLFVBQ0FyRixRQUFPRCxZQUFQQyxRQUNBN2UsU0FBUTRlLFlBQVI1ZSxTQUFRMG5CLHNCQUFBOUksWUFDUm5kLFdBQXFCK1EsTUFBS2tWLHNCQUFabGYsTUFBNEJtZixhQUFZRCxzQkFBMUJ0bEIsYUFDNUJ3bEIsVUFBU2hKLFlBQVRnSixVQUNBQyxRQUFPakosWUFBUGlKLFFBQ0czZCxPQUFLakYsRUFBQUEsZ0ZBQUFBLEdBQUEyWixZQUFBMVosa0JBRUhnRixNQUFNNUcsVUFFYixJQUFJN0QsTUFBUXlrQixVQUFVemtCLE1BQU0rSSxPQUN4QnNmLFFBQVU1RCxVQUFVNEQsUUFBUXRmLE9BQzVCNUMsSUFBTXNlLFVBQVV0ZSxJQUFJNEMsT0FDcEI3QyxNQUFRdWUsVUFBVXZlLE1BQU02QyxPQUN4QjNDLE9BQVNxZSxVQUFVcmUsT0FBTzJDLE9BRTFCdWYsYUFDRnJmLFVBQ0E3QyxRQUNBZCxVQUFVaWpCLEtBQUtyaUIsTUFBT1osVUFBVWtqQixLQUFLcmlCLElBQUssT0FBUSxPQUFTLEVBRXpEc2lCLFVBQVlySixRQUFRc0osVUFBVTNmLE1BQU83QyxNQUFPQyxJQUFLMlcsVUFFL0NvRyxTQUNKN2lCLEVBQUFBLCtDQUFBQSxLQUFBLE9BQUtDLFVBQVUsb0JBQW9CTixNQUFPcW9CLGNBQVdNLEVBQVVwb0IsU0FDNUR3UyxPQUNDMVMsRUFBQUEsK0NBQUFBLEtBQUMwUyxNQUFLLENBQ0poSyxNQUFPQSxNQUNQMmMsZUFBZ0JBLGVBQ2hCQyxlQUFnQkEsZUFDaEIzbEIsTUFBT0EsTUFDUGlKLFNBQVU3QyxPQUNWZCxVQUFXQSxVQUNYNmlCLFVBQVdBLFVBQ1hDLFFBQVNBLFVBR1hwb0IsUUFLTixPQUNFSyxFQUFBQSwrQ0FBQUEsS0FBQzZuQixhQUFZMXFCLE9BQUFtRCxPQUFBLEdBQUtpZSxLQUFLblUsTUFBSyxDQUFFM0UsS0FBSyxPQUFNdkYsVUFDdkNGLEVBQUFBLCtDQUFBQSxLQUFBLE1BQUE3QyxPQUFBbUQsT0FBQSxHQUNNOEosTUFBSyxDQUNUZ0MsTUFBS2pQLE9BQUFtRCxPQUFBLEdBQU84bkIsVUFBVWhjLE1BQVVBLE9BQ2hDbk0sV0FBVzRVLEVBQUFBLGtDQUFBQSxHQUFLLFlBQWE1VSxVQUFXbW9CLFVBQVVub0IsVUFBVyxDQUMzRCxlQUFnQndjLFNBQ2hCLG1CQUFvQndMLGFBQ3BCLDRCQUE2QjVDLGVBQzdCLDRCQUE2QkMsaUJBRS9CeFEsUUFBUyxTQUFBQSxRQUFDME8sR0FBQyxPQUFLd0QsVUFBWUEsU0FBU3RlLE1BQU84YSxFQUFFLEVBQzlDeUQsY0FBZSxTQUFBQSxjQUFDekQsR0FBQyxPQUFLeUQsZ0JBQWlCQSxlQUFjdmUsTUFBTzhhLEVBQUUsRUFDOUQrRSxVQUFXLFNBQUFBLFVBQUMvRSxHQUFDLE9BQUswRCxZQUFjQSxXQUFXeGUsTUFBTzhhLEVBQUUsRUFBQ3RqQixTQUVoQyxtQkFBYkEsU0FBMEJBLFNBQVMyaUIsU0FBV0EsYUFJOUQsSUFBQyxDQTNFWSxDQUFTblMsbUNBQUFBLFdBQWVpWCxVQUFBdGdCLGFBQUEsdTlCQW1HdkMsZ0NBQXdCLG9CQUFBQywwQkFBQUEsd0JBQUEscUJBQUFDLEtBQUEsWUFBQUMsV0FBQW1nQixVQUFBdGdCLGFBQUFJLEtBQUEsb0IsaW9DQ2xHbEJnZ0IsU0FBUSxTQUFBOUosa0JBQUEsU0FBQThKLFdBQUEsT0FBQTNKLEVBQUFBLHVFQUFBQSxTQUFBLEtBQUEySixXQUFBMUosRUFBQUEsa0VBQUFBLFNBQUEsS0FBQTBKLFNBQUExb0IsVUFBQSxRQUFBcWYsRUFBQUEsaUVBQUFBLFNBQUFxSixTQUFBOUosbUJBQUFVLEVBQUFBLG9FQUFBQSxTQUFBb0osU0FBQSxFQUFBM3BCLElBQUEsU0FBQUMsTUFDWixTQUFBOGdCLFNBQVMsSUFBQWhCLE1BQUEsS0FDUGlCLFlBSUlQLEtBQUtuVSxNQUhQNFgsU0FBUWxELFlBQVJrRCxTQUNlRSxNQUFLcEQsWUFBcEJxRCxZQUFlRCxNQUNmamlCLFVBQVM2ZSxZQUFUN2UsVUFHRXNpQixRQUFVLEVBRWQsT0FDRXZpQixFQUFBQSwrQ0FBQUEsS0FBQSxPQUFLQyxXQUFXNFUsRUFBQUEsa0NBQUFBLEdBQUs1VSxVQUFXLFdBQVdDLFNBQ3hDOGhCLFNBQVN3RyxRQUFPLFNBQUNoRyxJQUFHemQsS0FBZ0MwakIsSUFBTyxJQUFuQy9mLE1BQUszRCxLQUFMMkQsTUFBT21aLEtBQUk5YyxLQUFKOGMsS0FBTUMsTUFBSy9jLEtBQUwrYyxNQUFPVyxLQUFJMWQsS0FBSjBkLEtBQ3ZDM2tCLElBQU0sUUFBVTJxQixHQUNoQi9GLElBQU1iLEtBQU9VLFFBRWJNLFFBQVVDLDRDQUFBQSxFQUFjQyxZQUFZbEYsTUFBS3pULE1BQU8xQixPQVFwRCxPQU5JZ2EsS0FBS0YsSUFBSTlrQixLQUFLb2xCLDRDQUFBQSxFQUFjRSxXQUFXZCxNQUFPUSxJQUFLLEdBQUZ0WixPQUFLdEwsSUFBRyxVQUU3RDBrQixJQUFJOWtCLEtBQUtvbEIsNENBQUFBLEVBQWNFLFdBQVdkLE1BQU9PLEtBQU0za0IsSUFBSytrQixVQUVwRE4sUUFBVVQsTUFBUSxFQUVYVSxHQUNULEdBQUcsS0FHVCxJQUFDLENBNUJXLENBQVM5UixtQ0FBQUEsV0FvQ3ZCK1csU0FBUzlELGFBQVl4bUIsT0FBQW1ELE9BQUEsR0FDaEJ3aUIsNENBQUFBLEVBQWNhLGNBQ2xCOEQsU0FBQXBnQixhQUFBLGtKQUVELCtCQUF1QixvQkFBQUMsMEJBQUFBLHdCQUFBLG9CQUFBQyxLQUFBLFdBQUFDLFdBQUFpZ0IsU0FBQXBnQixhQUFBSSxLQUFBLG1CLHdwQkN2Q3ZCLHVCQUNFaWhCLFVBQVcsQ0FDVHZHLFlBQWF3RyxrREFBQUEsT0FBaUJDLFdBRTlCbk0sU0FBVWtNLGtEQUFBQSxPQUNWL2YsU0FBVStmLGtEQUFBQSxLQUVWdkUsVUFBV3VFLGtEQUFBQSxPQUFpQkMsV0FDNUIzakIsVUFBVzBqQixrREFBQUEsT0FBaUJDLFdBQzVCam5CLFdBQVlnbkIsa0RBQUFBLE9BQWlCQyxXQUM3QjdKLFFBQVM0SixrREFBQUEsT0FBaUJDLFdBRTFCNUIsU0FBVTJCLGtEQUFBQSxLQUNWMUIsY0FBZTBCLGtEQUFBQSxLQUNmekIsV0FBWXlCLGtEQUFBQSxNQUdkaEYsYUFBYyxDQUNaM0IsU0FBVSxHQUNWdkYsU0FBVSxDQUFDLEdBR2JzRyxZQUFXLFNBQUFBLFlBQUMzWSxNQUFPMUIsT0FDakIsSUFDRStULFNBV0VyUyxNQVhGcVMsU0FFQTJILFdBU0VoYSxNQVZGeEIsU0FVRXdCLE1BVEZnYSxXQUNBckYsUUFRRTNVLE1BUkYyVSxRQUNBaUksU0FPRTVjLE1BUEY0YyxTQUNBQyxjQU1FN2MsTUFORjZjLGNBQ0FDLFdBS0U5YyxNQUxGOGMsV0FDQWppQixVQUlFbUYsTUFKRm5GLFVBQ0FrZCxZQUdFL1gsTUFIRitYLFlBQ0F4Z0IsV0FFRXlJLE1BRkZ6SSxXQUNBNkIsVUFDRTRHLE1BREY1RyxVQUdFNmhCLGVBQWlCbEQsWUFBWWtELGVBQWUzYyxPQUM1QzRjLGVBQWlCbkQsWUFBWW1ELGVBQWU1YyxPQUVoRCxPQUNFMUksRUFBQUEsK0NBQUFBLEtBQUMybkIsd0NBQUFBLEVBQVMsQ0FDUmpmLE1BQU9BLE1BQ1BxVyxRQUFTQSxRQUNUOVosVUFBV0EsVUFDWG1mLFVBQVdBLFVBQ1h6aUIsV0FBWUEsV0FDWnFsQixTQUFVQSxTQUNWQyxjQUFlQSxjQUNmQyxXQUFZQSxXQUNaN0IsZUFBZ0JBLGVBQ2hCQyxlQUFnQkEsZUFDaEJ3QyxVQUFXM0YsWUFBWXFDLE1BQ3ZCdUQsUUFBUzVGLFlBQVlzQyxLQUNyQmhJLFVBQVVyRyxFQUFBQSw4Q0FBQUEsSUFBVzFOLE1BQU8rVCxVQUM1QmpaLFVBQVdBLFdBR2pCLEVBRUF3ZixXQUFVLFNBQUFBLFdBQUNkLE1BQU8yRyxJQUFLL3FCLEtBQW9CLElBQWYra0IsUUFBTzlqQixVQUFBQyxPQUFBLFFBQUFzcEIsSUFBQXZwQixVQUFBLEdBQUFBLFVBQUEsR0FBRyxJQUNoQytwQixJQUFPbkcsS0FBS29HLElBQUlGLEtBQU8zRyxNQUFTLElBQU0sSUFFMUMsT0FDRWxpQixFQUFBQSwrQ0FBQUEsS0FBQSxPQUVFQyxVQUFVLGtCQUVWbU0sTUFBTyxDQUFFNGMsZ0JBQWlCRixJQUFLRyxVQUFXSCxJQUFLSSxTQUFVSixLQUFNNW9CLFNBRTlEMmlCLFNBTEkva0IsSUFRWCxFLDhRQzVFSXFyQixPQUFTLFNBQVRBLE9BQU1wa0IsTUFBa0IsSUFBWmlRLE1BQUtqUSxLQUFMaVEsTUFDaEIsT0FDRWhWLEVBQUFBLCtDQUFBQSxLQUFBLFFBQU11bkIsS0FBSyxlQUFlLFlBQVUsT0FBTXJuQixTQUN2QzhVLE9BR1AsRUFOTW1VLE9BQU01b0IsWUFBRyxTQUFING9CLE9BQUE5aEIsYUFBRyxDQUFILDhHQVlaLDZCQUFxQixvQkFBQUMsMEJBQUFBLHdCQUFBLGtCQUFBQyxLQUFBLFNBQUFDLFdBQUEyaEIsT0FBQTloQixhQUFBSSxLQUFBLGlCLDRGQ1hyQixzQkFKQSxTQUFTZ1csWUFBWXJULE9BQ25CLE9BQU9BLE1BQU1sSyxRQUNmLEMsMjFCQ2tDQSxTQUFTa3BCLElBQUczZ0IsT0FtQlQsSUFsQkR5VixhQUFZelYsTUFBWnlWLGFBQ0FrRyxVQUFTM2IsTUFBVDJiLFVBQ0FyRixRQUFPdFcsTUFBUHNXLFFBQ0F0QyxTQUFRaFUsTUFBUmdVLFNBQ0E5YSxXQUFVOEcsTUFBVjlHLFdBQ0FzRCxVQUFTd0QsTUFBVHhELFVBQ0Fva0IsU0FBUTVnQixNQUFSNGdCLFNBQ0FDLEtBQUk3Z0IsTUFBSjZnQixLQUNBdG9CLE9BQU15SCxNQUFOekgsT0FDQThtQixVQUFTcmYsTUFBVHFmLFVBQ0FDLFFBQU90ZixNQUFQc2YsUUFDQWYsU0FBUXZlLE1BQVJ1ZSxTQUNBQyxjQUFheGUsTUFBYndlLGNBQ0FDLFdBQVV6ZSxNQUFWeWUsV0FDQXFDLGdCQUFlOWdCLE1BQWY4Z0IsZ0JBQ0FDLFVBQVMvZ0IsTUFBVCtnQixVQUNBM3FCLE9BQU00SixNQUFONUosT0FDQTRxQixPQUFNaGhCLE1BQU5naEIsUUNwRGEsU0FBU0MsZ0JBQWUza0IsTUFBb0IsSUFBakJzYSxJQUFHdGEsS0FBSHNhLElBQUtzSyxTQUFRNWtCLEtBQVI0a0IsVUFDN0MvWCxFQUFBQSxNQUFBQSxZQUFVLFdBQ1IsSUFBTWdZLG1CQUFxQixTQUFyQkEsbUJBQXNCcEcsR0FDdEJuRSxJQUFJeFAsVUFBWXdQLElBQUl4UCxRQUFRZ2EsU0FBU3JHLEVBQUUza0IsU0FDekM4cUIsVUFFSixFQUVBLE9BREFHLFNBQVNDLGlCQUFpQixZQUFhSCxvQkFDaEMsV0FDTEUsU0FBU0Usb0JBQW9CLFlBQWFKLG1CQUM1QyxDQUNGLEdBQUcsQ0FBQ3ZLLElBQUtzSyxVQUNYLENEMENFRCxDQUFnQixDQUFFckssSUFBS21LLFVBQVdHLFNBQVVMLFFBQzVDVyxFQUFBQSxNQUFBQSxrQkFBZ0IsV0FDZCxJQUFBQyxhQTdDSixTQUFTQyxZQUFXcGxCLE1BQXFDLElBQWxDbEcsT0FBTWtHLEtBQU5sRyxPQUFRNHFCLE9BQU0xa0IsS0FBTjBrQixPQUFRekosVUFBU2piLEtBQVRpYixVQUFXYSxJQUFHOWIsS0FBSDhiLElBQ2hEdUosWUFBcUNDLEVBQUFBLFdBQUFBLEdBQVV4ckIsUUFBdkN5ckIsSUFBR0YsV0FBSEUsSUFBS3pJLEtBQUl1SSxXQUFKdkksS0FBTXBULE1BQUsyYixXQUFMM2IsTUFBT3VLLE9BQU1vUixXQUFOcFIsT0FDMUJ1UixhQUtJRixFQUFBQSxXQUFBQSxHQUFVckssV0FKUHdLLEtBQUlELFlBQVRELElBQ01HLE1BQUtGLFlBQVgxSSxLQUNPNkksT0FBTUgsWUFBYjliLE1BQ1FrYyxRQUFPSixZQUFmdlIsT0FFRjRSLGFBQTJDUCxFQUFBQSxXQUFBQSxHQUFVeEosS0FBdENnSyxPQUFNRCxZQUFibmMsTUFBdUJxYyxRQUFPRixZQUFmNVIsT0FDakIrUixXQUFhUCxLQUFPRyxRQUNwQkssVUFBWVAsTUFBUUMsT0FDcEJPLE9BQVNYLElBQU1RLFFBQ2ZoSixNQUFRRCxLQUFPZ0osT0FDYi9PLEVBQVMyTixPQUFUM04sRUFBR0MsRUFBTTBOLE9BQU4xTixFQUlYLE1BQU8sQ0FDTG1QLFVBSmdCRCxPQUFTRixXQUFhVCxJQUFNUSxRQUFVL08sRUFBSXVPLElBQU12TyxFQUFJL0MsT0FLcEVtUyxXQUppQnJKLE1BQVFrSixVQUFZbkosS0FBTy9GLEVBQUkrTyxPQUFTcGMsTUFBUW9ULEtBQU8vRixFQU01RSxDQXdCc0NxTyxDQUFZLENBQzVDdHJCLE9BQUFBLE9BQ0E0cUIsT0FBQUEsT0FDQXpKLFVBQVc5QixhQUFhck8sUUFDeEJnUixJQUFLMkksVUFBVTNaLFVBSlRxYixVQUFTaEIsYUFBVGdCLFVBQVdDLFdBQVVqQixhQUFWaUIsV0FNbkIzQixVQUFVM1osUUFBUXpELE1BQU1rZSxJQUFNLEdBQUhsaEIsT0FBTThoQixVQUFTLE1BQzFDMUIsVUFBVTNaLFFBQVF6RCxNQUFNeVYsS0FBTyxHQUFIelksT0FBTStoQixXQUFVLEtBRTlDLEdBQUcsQ0FBQzFCLE9BQU8zTixFQUFHMk4sT0FBTzFOLEVBQUdsZCxTQUV4QixJQUFRNFAsTUFBVTRhLFNBQVY1YSxNQUNGckMsTUFBUSxDQUNaZ2YsU0FBVTNjLE1BQVFBLE1BQVEsR0FFNUIsT0FDRS9FLEVBQUFBLFlBQUFBLE1BQUEsT0FBSzBDLE1BQU9BLE1BQU9uTSxVQUFVLGNBQWNvZixJQUFLbUssVUFBVXRwQixTQUFBLEVBQ3hERixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUscUJBQW9CQyxTQUNoQytFLFVBQVUyUixPQUFPa1IsVUFBVyxxQkFFOUI5bUIsT0FBTzBMLEtBQUksU0FBQ2hFLE1BQU9tRyxLQUFHLE9BQ3JCN08sRUFBQUEsWUFBQUEsS0FBQzJuQixVQUFBQSxFQUFTLENBRVJsaUIsS0FBSyxRQUNMUixVQUFXQSxVQUNYeUQsTUFBT0EsTUFDUHFXLFFBQVNBLFFBQ1RpSSxTQUFVQSxTQUNWNUMsVUFBV0EsVUFDWHppQixXQUFZQSxXQUNac2xCLGNBQWVBLGNBQ2ZDLFdBQVlBLFdBQ1o3QixlQUFnQnBnQixVQUFVb21CLEdBQUdqSCxVQUFVdGUsSUFBSTRDLE9BQVFvZixVQUFXLE9BQzlEeEMsZUFBZ0JyZ0IsVUFBVXFtQixJQUFJbEgsVUFBVXZlLE1BQU02QyxPQUFRcWYsUUFBUyxPQUMvREQsVUFBV0EsVUFDWEMsUUFBU0EsUUFDVHRMLFVBQVVyRyxFQUFBQSxVQUFBQSxJQUFXMU4sTUFBTytULFVBQzVCOE8sV0FBVyxFQUNYQyxZQUFhLFNBQUFBLGNBQUEsT0FBTWpDLGdCQUFnQjdnQixNQUFNLEVBQ3pDK2lCLFVBQVcsU0FBQUEsWUFBQSxPQUFNbkMsTUFBTSxHQWpCbEJ6YSxJQWtCTCxNQUlWLENBbEVTdWEsSUFBRzdvQixZQUFBLE1Bb0VaLElBQU1nUyxNQUFRN0IsTUFBQUEsWUFBaUIsU0FBQ3RHLE1BQU9pVixLQUFHLE9BQ3hDcmYsRUFBQUEsWUFBQUEsS0FBQ29wQixJQUFHanNCLE9BQUFtRCxPQUFBLEdBQUs4SixNQUFLLENBQUVvZixVQUFXbkssTUFBTyxJQUVwQzlNLE1BQU1tVyxVQUFZLENBQ2hCdEUsVUFBV3VFLHFCQUFBQSxPQUFpQkMsV0FDNUI3SixRQUFTNEoscUJBQUFBLE9BQWlCQyxXQUMxQm5NLFNBQVVrTSxxQkFBQUEsT0FDVmhuQixXQUFZZ25CLHFCQUFBQSxPQUFpQkMsV0FDN0IzakIsVUFBVzBqQixxQkFBQUEsT0FBaUJDLFdBQzVCUyxTQUFVVixxQkFBQUEsT0FBaUJDLFdBQzNCVSxLQUFNWCxxQkFBQUEsS0FBZUMsV0FDckI1bkIsT0FBUTJuQixxQkFBQUEsTUFBZ0JDLFdBQ3hCZCxVQUFXYSxxQkFBQUEsV0FBcUI1bkIsTUFBTTZuQixXQUN0Q2IsUUFBU1kscUJBQUFBLFdBQXFCNW5CLE1BQzlCaW1CLFNBQVUyQixxQkFBQUEsS0FDVjFCLGNBQWUwQixxQkFBQUEsS0FDZnpCLFdBQVl5QixxQkFBQUEsS0FDWlksZ0JBQWlCWixxQkFBQUEsS0FDakJ2YyxNQUFPdWMscUJBQUFBLE9BQ1BjLE9BQVFkLHFCQUFBQSxNQUFnQixDQUFFN00sRUFBRzZNLHFCQUFBQSxPQUFrQjVNLEVBQUc0TSxxQkFBQUEsVUFDbkRwVyxNQUFBbEwsYUFBQSx3a0NBQ0Qsb0JFeEhBLFNBQVNxa0IsV0FBVTNtQixNQWVoQixJQWREbVosYUFBWW5aLEtBQVptWixhQUFZeU4saUJBQUE1bUIsS0FDWjhXLFlBQUFBLGlCQUFXLElBQUE4UCxpQkFBRyxFQUFDQSxpQkFDZkMsUUFBTzdtQixLQUFQNm1CLFFBQ0F4SCxVQUFTcmYsS0FBVHFmLFVBQ0FuZixVQUFTRixLQUFURSxVQUNBdEQsV0FBVW9ELEtBQVZwRCxXQUNBb2QsUUFBT2hhLEtBQVBnYSxRQUNBdEMsU0FBUTFYLEtBQVIwWCxTQUNBcEssa0JBQWlCdE4sS0FBakJzTixrQkFDQXdaLHVCQUFzQjltQixLQUF0QjhtQix1QkFDQUMsb0JBQW1CL21CLEtBQW5CK21CLG9CQUNBdkMsZ0JBQWV4a0IsS0FBZndrQixnQkFDQXdDLE9BQU1obkIsS0FBTmduQixPQUNBQyxlQUFjam5CLEtBQWRpbkIsZUFFTXhDLFdBQVkxUCxFQUFBQSxNQUFBQSxRQUFPLE1BQ3pCLElBQUs4UixRQUFRdkMsU0FBVSxPQUFPLEtBRTlCLElBQUlJLE9BQVM1TixZQUNSb1EsTUFBTXBRLGVBQ1Q0TixPQUFTLENBQUUzTixFQUFHRCxZQUFhRSxFQUFHRixjQUdoQyxJQUFRd04sU0FBZ0N1QyxRQUFoQ3ZDLFNBQVVyb0IsT0FBc0I0cUIsUUFBdEI1cUIsT0FBUXRFLEtBQWNrdkIsUUFBZGx2QixLQUFNb0osSUFBUThsQixRQUFSOWxCLElBQ2hDLE9BQ0U5RixFQUFBQSxZQUFBQSxLQUFDa3NCLFFBQUFBLEVBQU8sQ0FDTkMsV0FBUyxFQUNUQyxNQUFJLEVBQ0o5QyxNQUFJLEVBQ0orQyxVQUFVLFNBQ1ZOLE9BQVFBLE9BQ1JsdEIsT0FBUStzQixRQUFRL3NCLE9BQU9xQixTQUV0QixTQUFBQSxTQUFBdUksT0FBQSxJQUFHMkIsTUFBSzNCLE1BQUwyQixNQUFLLE9BQ1BwSyxFQUFBQSxZQUFBQSxLQUFDdVMsVUFBS3BWLE9BQUFtRCxPQUFBLEdBQ0E4SixNQUFLLENBQ1Q4VCxhQUFjQSxhQUNkbUIsSUFBS21LLFVBQ0wzcUIsT0FBUStzQixRQUFRL3NCLE9BQ2hCNHFCLE9BQVFBLE9BQ1JyRixVQUFXQSxVQUNYckYsUUFBU0EsUUFDVHRDLFNBQVVBLFNBQ1Y5YSxXQUFZQSxXQUNac0QsVUFBV0EsVUFDWG9rQixTQUFVQSxTQUNWQyxLQUFNMEMsZUFDTmhyQixPQUFRQSxPQUNSOG1CLFVBQVdwckIsS0FDWHFyQixRQUFTamlCLElBQ1RraEIsU0FBVTNVLGtCQUNWNFUsY0FBZTRFLHVCQUNmM0UsV0FBWTRFLG9CQUNadkMsZ0JBQWlCQSxrQkFDakIsR0FJVixDRjZEb0Isb0JBQUFqaUIsMEJBQUFBLHdCQUFBLGlCQUFBQyxLQUFBLFFBQUFDLFdBQUErSyxNQUFBbEwsYUFBQUksS0FBQSxpQkV4SFhpa0IsV0FBVW5yQixZQUFBLGFBNkRuQixJQUFNK3JCLFdBQWE1YixNQUFBQSxZQUFpQixTQUFDdEcsTUFBT2lWLEtBQUcsT0FDN0NyZixFQUFBQSxZQUFBQSxLQUFDMHJCLFdBQVV2dUIsT0FBQW1ELE9BQUEsR0FBSzhKLE1BQUssQ0FBRThULGFBQWNtQixNQUFPLElBRzlDaU4sV0FBVzVELFVBQVksQ0FDckI3TSxZQUFhOE0scUJBQUFBLFVBQW9CLENBQy9CQSxxQkFBQUEsT0FDQUEscUJBQUFBLE1BQWdCLENBQUU3TSxFQUFHNk0scUJBQUFBLE9BQWtCNU0sRUFBRzRNLHFCQUFBQSxXQUU1Q2lELFFBQVNqRCxxQkFBQUEsTUFBZ0IsQ0FDdkJVLFNBQVVWLHFCQUFBQSxPQUNWM25CLE9BQVEybkIscUJBQUFBLE1BQ1Jqc0IsS0FBTWlzQixxQkFBQUEsV0FBcUI1bkIsTUFDM0IrRSxJQUFLNmlCLHFCQUFBQSxXQUFxQjVuQixRQUU1QnFqQixVQUFXdUUscUJBQUFBLE9BQWlCQyxXQUM1QjNqQixVQUFXMGpCLHFCQUFBQSxPQUFpQkMsV0FDNUJqbkIsV0FBWWduQixxQkFBQUEsT0FBaUJDLFdBQzdCN0osUUFBUzRKLHFCQUFBQSxPQUFpQkMsV0FDMUJuTSxTQUFVa00scUJBQUFBLE9BQ1Z0VyxrQkFBbUJzVyxxQkFBQUEsS0FDbkJrRCx1QkFBd0JsRCxxQkFBQUEsS0FDeEJtRCxvQkFBcUJuRCxxQkFBQUEsS0FDckJZLGdCQUFpQloscUJBQUFBLEtBQ2pCb0QsT0FBUXBELHFCQUFBQSxLQUNScUQsZUFBZ0JyRCxxQkFBQUEsTUFDakIyRCxXQUFBamxCLGFBQUEsNm5DQUVELDhCQUF5QixvQkFBQUMsMEJBQUFBLHdCQUFBLHNCQUFBQyxLQUFBLGFBQUFDLFdBQUE4a0IsV0FBQWpsQixhQUFBSSxLQUFBLHFCLHN6Q0MxRnpCLFNBQVNzaUIsaUJBQWlCdGtCLEtBQU04bUIsU0FBNEIsSUFBbkIxdEIsT0FBTUUsVUFBQUMsT0FBQSxRQUFBc3BCLElBQUF2cEIsVUFBQSxHQUFBQSxVQUFBLEdBQUcrcUIsU0FDaEQsT0FBTzBDLEVBQUFBLGdEQUFBQSxHQUFPM3RCLE9BQVE0RyxLQUFNOG1CLFFBQVMsQ0FBRUUsU0FBUyxHQUNsRCxDQU1PLFNBQVNDLHNCQUFzQjlNLEtBQUk3YSxNQUF3QixJQUFwQjRuQixRQUFPNW5CLEtBQVA0bkIsUUFBU0MsUUFBTzduQixLQUFQNm5CLFFBQ2pEL3RCLE9BQVNpckIsU0FBUytDLGlCQUFpQkYsUUFBU0MsU0FDaEQsT0FBT0UsRUFBQUEsaURBQUFBLEdBQVFqdUIsT0FBUSxhQUFjK2dCLEtBQ3ZDLENBT08sU0FBU1EsUUFBUVIsS0FBTTJCLFFBQzVCLFFBQVNtTCxzQkFBc0I5TSxLQUFNMkIsT0FDdkMsQ0FFTyxTQUFTbEIsV0FBV1QsS0FBTTJCLFFBQy9CLFFBVkssU0FBU3dMLHlCQUF5Qm5OLEtBQUluWCxPQUF3QixJQUFwQmtrQixRQUFPbGtCLE1BQVBra0IsUUFBU0MsUUFBT25rQixNQUFQbWtCLFFBQ3BEL3RCLE9BQVNpckIsU0FBUytDLGlCQUFpQkYsUUFBU0MsU0FDaEQsT0FBT0UsRUFBQUEsaURBQUFBLEdBQVFqdUIsT0FBUSxpQkFBa0IrZ0IsS0FDM0MsQ0FPV21OLENBQXlCbk4sS0FBTTJCLE9BQzFDLENBRUEsU0FBU3lMLG9CQUFvQnhKLEdBQzNCLElBQUkza0IsT0FBUzJrQixFQU1iLE9BSklBLEVBQUV5SixTQUFXekosRUFBRXlKLFFBQVFqdUIsU0FDekJILE9BQVMya0IsRUFBRXlKLFFBQVEsSUFHZCxDQUNMTixRQUFTOXRCLE9BQU84dEIsUUFDaEJDLFFBQVMvdEIsT0FBTyt0QixRQUNoQk0sTUFBT3J1QixPQUFPcXVCLE1BQ2RDLE1BQU90dUIsT0FBT3N1QixNQUVsQixDQUVBLElBR01wTixVQUFTLFdBeUNaLE9BQUExQixFQUFBQSxvRUFBQUEsVUF4Q0QsU0FBQTBCLFVBQ0VILE1BRUEsSUFBQXJXLE1BQUF4SyxVQUFBQyxPQUFBLFFBQUFzcEIsSUFBQXZwQixVQUFBLEdBQUFBLFVBQUEsR0FEcUUsQ0FBQyxFQUFDcXVCLGFBQUE3akIsTUFBckU4akIsT0FBQUEsWUFBTSxJQUFBRCxjQUFRQSxhQUFBRSxzQkFBQS9qQixNQUFFMlAsbUJBQUFBLHdCQUFrQixJQUFBb1Usc0JBQUcsSUFBR0Esc0JBQUFDLHNCQUFBaGtCLE1BQUVpa0IsZ0JBQUFBLHFCQUFlLElBQUFELHNCQUFHLEdBQUVBLHVCQUFBelAsRUFBQUEsdUVBQUFBLFNBQUEsS0FBQWlDLFdBRWhFeEIsS0FBS2tQLGNBQWdCLEtBQ3JCbFAsS0FBS04sV0FBWSxFQUNqQk0sS0FBS21QLFlBQWEsRUFDbEJuUCxLQUFLeUIsVUFBWUosS0FDakJyQixLQUFLb1AsYUFBZS9OLE1BQVF5TixPQUM1QjlPLEtBQUtyRixtQkFBcUJBLG1CQUMxQnFGLEtBQUtpUCxnQkFBa0JBLGdCQUV2QmpQLEtBQUtxUCxXQUFhendCLE9BQU8wd0IsT0FBTyxNQUVoQ3RQLEtBQUt1UCxvQkFBc0J2UCxLQUFLdVAsb0JBQW9CcnRCLEtBQUs4ZCxNQUN6REEsS0FBS3dQLGlCQUFtQnhQLEtBQUt3UCxpQkFBaUJ0dEIsS0FBSzhkLE1BQ25EQSxLQUFLeVAsd0JBQTBCelAsS0FBS3lQLHdCQUF3QnZ0QixLQUFLOGQsTUFDakVBLEtBQUswUCxhQUFlMVAsS0FBSzBQLGFBQWF4dEIsS0FBSzhkLE1BQzNDQSxLQUFLMlAseUJBQTJCM1AsS0FBSzJQLHlCQUF5Qnp0QixLQUFLOGQsTUFDbkVBLEtBQUs0UCw2QkFDSDVQLEtBQUs0UCw2QkFBNkIxdEIsS0FBSzhkLE1BSXpDQSxLQUFLNlAsK0JBQWlDckUsaUJBQ3BDLGFBQ0EsV0FBTyxHQUNQNVgsUUFFRm9NLEtBQUs4UCx1QkFBeUJ0RSxpQkFBaUIsVUFBV3hMLEtBQUswUCxjQUMvRDFQLEtBQUsrUCxxQkFBdUJ2RSxpQkFBaUIsUUFBU3hMLEtBQUswUCxjQUMzRDFQLEtBQUtnUSwrQkFBaUN4RSxpQkFDcEMsT0FDQXhMLEtBQUsyUCwwQkFFUDNQLEtBQUtpUSxtQ0FBcUN6RSxpQkFDeEMsV0FDQXhMLEtBQUs0UCw4QkFFUDVQLEtBQUtrUSwwQkFDUCxHQUFDLEVBQUEzd0IsSUFBQSxLQUFBQyxNQUVELFNBQUFpakIsR0FBR3ZiLEtBQU04bUIsU0FDUCxJQUFJbUMsU0FBV25RLEtBQUtxUCxXQUFXbm9CLFFBQVU4WSxLQUFLcVAsV0FBV25vQixNQUFRLElBSWpFLE9BRkFpcEIsU0FBU2h4QixLQUFLNnVCLFNBRVAsQ0FDTG9DLE9BQU0sU0FBQUEsU0FDSixJQUFJOWYsSUFBTTZmLFNBQVNFLFFBQVFyQyxVQUNkLElBQVQxZCxLQUFZNmYsU0FBU0csT0FBT2hnQixJQUFLLEVBQ3ZDLEVBRUosR0FBQyxDQUFBL1EsSUFBQSxPQUFBQyxNQUVELFNBQUErd0IsS0FBS3JwQixNQUFlLFFBQUErZixLQUFBem1CLFVBQUFDLE9BQU5vQixLQUFJLElBQUEyTCxNQUFBeVosS0FBQSxFQUFBQSxLQUFBLEtBQUFDLEtBQUEsRUFBQUEsS0FBQUQsS0FBQUMsT0FBSnJsQixLQUFJcWxCLEtBQUEsR0FBQTFtQixVQUFBMG1CLE1BQ2hCLElBQUlzSixPQUtKLE9BSmV4USxLQUFLcVAsV0FBV25vQixPQUFTLElBQy9CckgsU0FBUSxTQUFDNHdCLFNBQ0QxRyxJQUFYeUcsU0FBc0JBLE9BQVNDLEdBQUVyeEIsV0FBQyxFQUFHeUMsTUFDM0MsSUFDTzJ1QixNQUNULEdBQUMsQ0FBQWp4QixJQUFBLFdBQUFDLE1BRUQsU0FBQTBqQixXQUNFbEQsS0FBS2tQLGNBQWdCLEtBQ3JCbFAsS0FBSzBRLGtCQUFvQixLQUN6QjFRLEtBQUsyUSxZQUFjLEtBQ25CM1EsS0FBS04sV0FBWSxFQUNqQk0sS0FBSzRRLGVBQWlCLEtBQ3RCNVEsS0FBS21QLFlBQWEsRUFDbEJuUCxLQUFLcVAsV0FBYXp3QixPQUFPMHdCLE9BQU8sTUFDaEN0UCxLQUFLNlAsZ0NBQWtDN1AsS0FBSzZQLGlDQUM1QzdQLEtBQUs2USw2QkFBK0I3USxLQUFLNlEsOEJBQ3pDN1EsS0FBSzhRLG9CQUFzQjlRLEtBQUs4USxxQkFDaEM5USxLQUFLK1EsZ0JBQWtCL1EsS0FBSytRLGlCQUM1Qi9RLEtBQUtnUixxQkFBdUJoUixLQUFLZ1Isc0JBQ2pDaFIsS0FBSytQLHNCQUF3Qi9QLEtBQUsrUCx1QkFDbEMvUCxLQUFLOFAsd0JBQTBCOVAsS0FBSzhQLHlCQUNwQzlQLEtBQUtnUSxnQ0FBa0NoUSxLQUFLZ1EsaUNBQzVDaFEsS0FBS2lRLG9DQUNIalEsS0FBS2lRLG9DQUNULEdBQUMsQ0FBQTF3QixJQUFBLGFBQUFDLE1BRUQsU0FBQXFZLFdBQVd3SixNQUNULElBQUlpQixJQUFNdEMsS0FBSzJRLFlBRWYsU0FBS3JPLE1BQVF0QyxLQUFLTixZQUVYdVIsZUFBZTNPLElBQUtOLGlCQUFpQlgsTUFDOUMsR0FBQyxDQUFBOWhCLElBQUEsU0FBQUMsTUFFRCxTQUFBVCxPQUFPbXlCLE9BSUwsT0FIVWxSLEtBQUsyUSxhQUdGM1EsS0FBS04sVUFFWHdSLE1BQU1ueUIsT0FBT2loQixLQUFLbkksV0FBWW1JLE1BRkQsRUFHdEMsR0FHQSxDQUFBemdCLElBQUEsd0JBQUFDLE1BQ0EsU0FBQTJ4QixzQkFBc0JuRCxRQUFTb0QsY0FBYyxJQUFBOVIsTUFBQSxLQUN2QytSLE1BQVEsS0FDUkMsd0JBQTBCLEtBQzFCQyx1QkFBeUIsS0FDdkJDLGlCQUFtQixTQUFuQkEsaUJBQW9CSixjQUN4QkMsTUFBUTVWLFlBQVcsV0FDakJnVyxVQUNBekQsUUFBUW9ELGFBQ1YsR0FBRzlSLE1BQUszRSxvQkFDUjJXLHdCQUEwQjlGLGlCQUFpQixhQUFhLGtCQUFNaUcsU0FBUyxJQUN2RUYsdUJBQXlCL0YsaUJBQWlCLFlBQVksa0JBQU1pRyxTQUFTLEdBQ3ZFLEVBQ01DLHlCQUEyQmxHLGlCQUMvQixhQUNBZ0csa0JBRUlDLFFBQVUsU0FBVkEsVUFDQUosT0FDRjdWLGFBQWE2VixPQUVYQyx5QkFDRkEsMEJBRUVDLHdCQUNGQSx5QkFHRkYsTUFBUSxLQUNSQyx3QkFBMEIsS0FDMUJDLHVCQUF5QixJQUMzQixFQU1BLE9BSklILGNBQ0ZJLGlCQUFpQkosY0FHWixXQUNMSyxVQUNBQywwQkFDRixDQUNGLEdBR0EsQ0FBQW55QixJQUFBLDJCQUFBQyxNQUNBLFNBQUEwd0IsMkJBQTJCLElBQUE5TyxPQUFBLEtBQ25CdVEsd0JBQTBCbkcsaUJBQWlCLGFBQWEsU0FBQ3ZHLEdBQzdEN0QsT0FBS3lQLDhCQUNMelAsT0FBS21PLG9CQUFvQnRLLEdBQ3pCN0QsT0FBS3lQLDRCQUE4QnJGLGlCQUNqQyxZQUNBcEssT0FBS21PLG9CQUVULElBQ01tQyx5QkFBMkJsRyxpQkFBaUIsY0FBYyxTQUFDdkcsR0FDL0Q3RCxPQUFLeVAsOEJBQ0x6UCxPQUFLeVAsNEJBQThCelAsT0FBSytQLHNCQUN0Qy9QLE9BQUttTyxvQkFDTHRLLEVBRUosSUFFQWpGLEtBQUs2USw0QkFBOEIsV0FDakNjLDBCQUNBRCwwQkFDRixDQUNGLEdBQUMsQ0FBQW55QixJQUFBLDJCQUFBQyxNQUVELFNBQUFtd0IseUJBQXlCMUssR0FDdkIsSUFBQTJNLHFCQUEyQ25ELG9CQUFvQnhKLEdBQXZEMEosTUFBS2lELHFCQUFMakQsTUFBT0MsTUFBS2dELHFCQUFMaEQsTUFBT1IsUUFBT3dELHFCQUFQeEQsUUFBU0MsUUFBT3VELHFCQUFQdkQsUUFFL0JyTyxLQUFLdVEsS0FBSyxrQkFBbUIsQ0FDM0JoVCxFQUFHb1IsTUFDSG5SLEVBQUdvUixNQUNIUixRQUFTQSxRQUNUQyxRQUFTQSxVQUdYcEosRUFBRUMsZ0JBQ0osR0FBQyxDQUFBM2xCLElBQUEsK0JBQUFDLE1BRUQsU0FBQW93Qiw2QkFBNkIzSyxHQUMzQixJQUFBNE0sc0JBQTJDcEQsb0JBQW9CeEosR0FBdkQwSixNQUFLa0Qsc0JBQUxsRCxNQUFPQyxNQUFLaUQsc0JBQUxqRCxNQUFPUixRQUFPeUQsc0JBQVB6RCxRQUFTQyxRQUFPd0Qsc0JBQVB4RCxRQUUvQnJPLEtBQUt1USxLQUFLLHNCQUF1QixDQUMvQmhULEVBQUdvUixNQUNIblIsRUFBR29SLE1BQ0hSLFFBQVNBLFFBQ1RDLFFBQVNBLFVBR1hwSixFQUFFQyxnQkFDSixHQUFDLENBQUEzbEIsSUFBQSxzQkFBQUMsTUFFRCxTQUFBK3ZCLG9CQUFvQnRLLEdBRWxCLEdBREFqRixLQUFLa1AsY0FBZ0JqSyxHQUNqQmpGLEtBQUttUCxXQUFULENBSUEsSUFHRTJDLFdBSEZDLHNCQUEyQ3RELG9CQUFvQnhKLEdBQXZEbUosUUFBTzJELHNCQUFQM0QsUUFBU0MsUUFBTzBELHNCQUFQMUQsUUFBU00sTUFBS29ELHNCQUFMcEQsTUFBT0MsTUFBS21ELHNCQUFMbkQsTUFDN0J2TixLQUFPckIsS0FBS3lCLFlBS2hCLEdBQ2MsSUFBWndELEVBQUUrTSxPQUNXLElBQWIvTSxFQUFFZ04sUUEzUFIsU0FBU0MsZ0JBQWdCelEsVUFBV2xFLEVBQUdDLEdBQ3JDLE9BQVFpRSxZQUFhNkosRUFBQUEsa0RBQUFBLEdBQVM3SixVQUFXOEosU0FBUytDLGlCQUFpQi9RLEVBQUdDLEdBQ3hFLENBMFBPMFUsQ0FBZ0I3USxLQUFNK00sUUFBU0MsU0FIbEMsQ0FPQSxJQUFLck8sS0FBS29QLGFBQWUvTixRQUFTaUssRUFBQUEsa0RBQUFBLEdBQVNqSyxLQUFNNEQsRUFBRTNrQixRQUFTLENBQzFELElBQUE2eEIsbUJBb01OLFNBQVNDLG9CQUFnQyxJQUFkQyxTQUFRN3hCLFVBQUFDLE9BQUEsUUFBQXNwQixJQUFBdnBCLFVBQUEsR0FBQUEsVUFBQSxHQUFHLEVBQ1osaUJBQWI2eEIsV0FDVEEsU0FBVyxDQUNUdEcsSUFBS3NHLFNBQ0wvTyxLQUFNK08sU0FDTjlPLE1BQU84TyxTQUNQM0YsT0FBUTJGLFdBR1osT0FBT0EsUUFDVCxDQTlNeUNELENBQWtCLEdBQS9DckcsSUFBR29HLG1CQUFIcEcsSUFBS3pJLEtBQUk2TyxtQkFBSjdPLEtBQU1vSixPQUFNeUYsbUJBQU56RixPQUFRbkosTUFBSzRPLG1CQUFMNU8sTUFjekIsSUFWVzBOLGVBQ1QsQ0FDRWxGLEtBSkorRixXQUFhOVAsaUJBQWlCWCxPQUlWMEssSUFBTUEsSUFDdEJ6SSxLQUFNd08sV0FBV3hPLEtBQU9BLEtBQ3hCb0osT0FBUW9GLFdBQVdwRixPQUFTQSxPQUM1Qm5KLE1BQU91TyxXQUFXdk8sTUFBUUEsT0FFNUIsQ0FBRXdJLElBQUs2QyxNQUFPdEwsS0FBTXFMLFFBR1AsTUFDakIsQ0FhQSxJQUFlLElBWEYzTyxLQUFLdVEsS0FDaEIsZUFDQ3ZRLEtBQUswUSxrQkFBb0IsQ0FDeEI0QixRQUFTLFNBQVNDLEtBQUt0TixFQUFFL2QsTUFDekJxVyxFQUFHb1IsTUFDSG5SLEVBQUdvUixNQUNIUixRQUFBQSxRQUNBQyxRQUFBQSxVQU1KLE9BQVFwSixFQUFFL2QsTUFDUixJQUFLLFlBQ0g4WSxLQUFLOFEsbUJBQXFCdEYsaUJBQ3hCLFVBQ0F4TCxLQUFLeVAseUJBRVB6UCxLQUFLK1EsZUFBaUJ2RixpQkFDcEIsVUFDQXhMLEtBQUt5UCx5QkFFUHpQLEtBQUtnUixvQkFBc0J4RixpQkFDekIsWUFDQXhMLEtBQUt3UCxrQkFFUCxNQUNGLElBQUssYUFDSHhQLEtBQUt3UCxpQkFBaUJ2SyxHQUN0QmpGLEtBQUs4USxtQkFBcUJ0RixpQkFDeEIsV0FDQXhMLEtBQUt5UCx5QkFFUHpQLEtBQUtnUixvQkFBc0J4RixpQkFDekIsWUFDQXhMLEtBQUt3UCxrQkF4REgsQ0FiUixDQTJFRixHQUdBLENBQUFqd0IsSUFBQSwwQkFBQUMsTUFDQSxTQUFBZ3pCLHdCQUF3QnZOLEdBQ3RCLElBQU13TixZQUFjeE4sRUFBRTNrQixPQUNoQm95QixXQUFhMVMsS0FBS2lQLGdCQUV4QixRQUFLeUQsWUFBZUEsV0FBV2p5QixRQUFXZ3lCLGNBSW5DQyxXQUFXQyxNQUFLLFNBQUNyeUIsUUFBTSxRQUFPbXlCLFlBQVlsRSxRQUFRanVCLE9BQU8sR0FDbEUsR0FBQyxDQUFBZixJQUFBLDBCQUFBQyxNQUVELFNBQUFpd0Isd0JBQXdCeEssR0FDdEIsSUFBTXZGLFVBQVlNLEtBQUtOLFVBQ2pCc0QsT0FBU2hELEtBQUsyUSxZQWFwQixJQVhLalIsV0FBYXVGLEVBQUUvZCxLQUFLNlEsU0FBUyxTQUNoQ2tOLEVBQUlqRixLQUFLa1AsZUFHWGxQLEtBQUtOLFdBQVksRUFDakJNLEtBQUs4USxvQkFBc0I5USxLQUFLOFEscUJBQ2hDOVEsS0FBS2dSLHFCQUF1QmhSLEtBQUtnUixzQkFFakNoUixLQUFLMlEsWUFBYyxLQUNuQjNRLEtBQUtrUCxjQUFnQixLQUNyQmxQLEtBQUswUSxrQkFBb0IsS0FDcEJ6TCxFQUFMLENBRUEsSUFBSTJOLFFBQVU1UyxLQUFLeUIsWUFBYTZKLEVBQUFBLGtEQUFBQSxHQUFTdEwsS0FBS3lCLFlBQWF3RCxFQUFFM2tCLFFBQ3pEdXlCLHVCQUF5QjdTLEtBQUt3Uyx3QkFBd0J2TixHQUUxRCxNQUFjLFdBQVZBLEVBQUUxbEIsS0FBcUJzekIsd0JBSXRCblQsV0FBYWtULE9BQ1Q1UyxLQUFLOFMsa0JBQWtCN04sR0FJNUJ2RixVQUFrQk0sS0FBS3VRLEtBQUssU0FBVXZOLFFBRW5DaEQsS0FBS3VRLEtBQUssU0FWUnZRLEtBQUt1USxLQUFLLFFBTkwsQ0FpQmhCLEdBQUMsQ0FBQWh4QixJQUFBLG9CQUFBQyxNQUVELFNBQUFzekIsa0JBQWtCN04sR0FDaEIsSUFBQThOLHNCQUEyQ3RFLG9CQUFvQnhKLEdBQXZEMEosTUFBS29FLHNCQUFMcEUsTUFBT0MsTUFBS21FLHNCQUFMbkUsTUFBT1IsUUFBTzJFLHNCQUFQM0UsUUFBU0MsUUFBTzBFLHNCQUFQMUUsUUFDekIyRSxLQUFNLElBQUl4d0IsTUFBT3l3QixVQUV2QixPQUNFalQsS0FBSzRRLGdCQUNMb0MsSUFBTWhULEtBQUs0USxlQUFlc0MsVUE3VVYsS0FnVmhCbFQsS0FBSzRRLGVBQWlCLEtBQ2Y1USxLQUFLdVEsS0FBSyxjQUFlLENBQzlCaFQsRUFBR29SLE1BQ0huUixFQUFHb1IsTUFDSFIsUUFBU0EsUUFDVEMsUUFBU0EsWUFLYnJPLEtBQUs0USxlQUFpQixDQUNwQnNDLFVBQVdGLEtBRU5oVCxLQUFLdVEsS0FBSyxRQUFTLENBQ3hCaFQsRUFBR29SLE1BQ0huUixFQUFHb1IsTUFDSFIsUUFBU0EsUUFDVEMsUUFBU0EsVUFFYixHQUFDLENBQUE5dUIsSUFBQSxtQkFBQUMsTUFFRCxTQUFBZ3dCLGlCQUFpQnZLLEdBQ2YsR0FBK0IsT0FBM0JqRixLQUFLMFEsb0JBQThCMVEsS0FBS21QLFdBQTVDLENBSUEsSUFBQWdFLHNCQUFlblQsS0FBSzBRLGtCQUFkblQsRUFBQzRWLHNCQUFENVYsRUFBR0MsRUFBQzJWLHNCQUFEM1YsRUFDVDRWLHNCQUF5QjNFLG9CQUFvQnhKLEdBQXJDMEosTUFBS3lFLHNCQUFMekUsTUFBT0MsTUFBS3dFLHNCQUFMeEUsTUFDWHlFLEVBQUlqUCxLQUFLb0csSUFBSWpOLEVBQUlvUixPQUNqQjJFLEVBQUlsUCxLQUFLb0csSUFBSWhOLEVBQUlvUixPQUVqQnRMLEtBQU9jLEtBQUtqZCxJQUFJd25CLE1BQU9wUixHQUN6QndPLElBQU0zSCxLQUFLamQsSUFBSXluQixNQUFPcFIsR0FDdEIrVixJQUFNdlQsS0FBS04sVUFDUDhULE1BQVF4VCxLQUFLeVQsUUFBUTlFLE1BQU9DLFNBRzlCNEUsT0FBVUQsS0FBU0YsR0FBS0MsS0FJdkJDLEtBQVFDLE9BQ1h4VCxLQUFLdVEsS0FBSyxjQUFldlEsS0FBSzBRLG1CQUczQjhDLFFBQ0h4VCxLQUFLTixXQUFZLEVBQ2pCTSxLQUFLMlEsWUFBYyxDQUNqQjVFLElBQUFBLElBQ0F6SSxLQUFBQSxLQUNBL0YsRUFBR29SLE1BQ0huUixFQUFHb1IsTUFDSHJMLE1BQU9ELEtBQU8rUCxFQUNkM0csT0FBUVgsSUFBTXVILEdBRWhCdFQsS0FBS3VRLEtBQUssWUFBYXZRLEtBQUsyUSxjQUc5QjFMLEVBQUVDLGlCQWxDRixDQW1DRixHQUFDLENBQUEzbEIsSUFBQSxlQUFBQyxNQUVELFNBQUFrd0IsYUFBYXpLLEdBQ1hqRixLQUFLMFQsS0FBT3pPLEVBQUUzSSxTQUFXMkksRUFBRTdJLE9BQzdCLEdBQUMsQ0FBQTdjLElBQUEsVUFBQUMsTUFFRCxTQUFBaTBCLFFBQVE5RSxNQUFPQyxPQUNiLElBQUErRSx1QkFBd0IzVCxLQUFLMFEsa0JBQXZCblQsRUFBQ29XLHVCQUFEcFcsRUFBR0MsRUFBQ21XLHVCQUFEblcsRUFDVCxPQURtQm1XLHVCQUFQckIsU0FHVmxPLEtBQUtvRyxJQUFJbUUsTUFBUXBSLElBdFpBLEdBdVpqQjZHLEtBQUtvRyxJQUFJb0UsTUFBUXBSLElBdlpBLENBeVpyQixJQUFDLENBdFpZLEdBZ2JSLFNBQVN5VCxlQUFlMkMsTUFBT0MsT0FBc0IsSUFBZkMsVUFBU3R6QixVQUFBQyxPQUFBLFFBQUFzcEIsSUFBQXZwQixVQUFBLEdBQUFBLFVBQUEsR0FBRyxFQUN2RHV6QixrQkFLSS9SLGlCQUFpQjRSLE9BSmRJLEtBQUlELGtCQUFUaEksSUFDTWtJLE1BQUtGLGtCQUFYelEsS0FBSTRRLHNCQUFBSCxrQkFDSnhRLE1BQU80USxZQUFNLElBQUFELHNCQUFHRCxNQUFLQyxzQkFBQUUsc0JBQUFMLGtCQUNyQnJILE9BQVEySCxhQUFPLElBQUFELHNCQUFHSixLQUFJSSxzQkFFeEJFLG1CQUtJdFMsaUJBQWlCNlIsT0FKZFUsS0FBSUQsbUJBQVR2SSxJQUNNeUksTUFBS0YsbUJBQVhoUixLQUFJbVIsc0JBQUFILG1CQUNKL1EsTUFBT21SLFlBQU0sSUFBQUQsc0JBQUdELE1BQUtDLHNCQUFBRSxzQkFBQUwsbUJBQ3JCNUgsT0FHRixRQUdJMkgsUUFBVVAsVUFBWVMsTUFFdEJQLEtBQU9GLGdCQVJNLElBQUFhLHNCQUFHSixLQUFJSSx3QkFVcEJSLE9BQVNMLFVBQVlVLE9BRXJCUCxNQUFRSCxVQUFZWSxPQUcxQixDQU9PLFNBQVMxUyxpQkFBaUJYLE1BQy9CLElBQUtBLEtBQUt1VCxzQkFBdUIsT0FBT3ZULEtBRXhDLElBQUl3VCxLQUFPeFQsS0FBS3VULHdCQUNkdFIsS0FBT3VSLEtBQUt2UixLQUFPd1IsV0FBVyxRQUM5Qi9JLElBQU04SSxLQUFLOUksSUFBTStJLFdBQVcsT0FFOUIsTUFBTyxDQUNML0ksSUFBQUEsSUFDQXpJLEtBQUFBLEtBQ0FDLE9BQVFsQyxLQUFLMFQsYUFBZSxHQUFLelIsS0FDakNvSixRQUFTckwsS0FBSzJULGNBQWdCLEdBQUtqSixJQUV2QyxDQUVBLFNBQVMrSSxXQUFXRyxLQUNsQixNQUFZLFNBQVJBLElBQXVCcmhCLE9BQU9zaEIsYUFBZTNKLFNBQVM0SixLQUFLQyxZQUFjLEVBQ2pFLFFBQVJILElBQXNCcmhCLE9BQU95aEIsYUFBZTlKLFNBQVM0SixLQUFLRyxXQUFhLE9BQTNFLENBQ0YsQ0FDQSxnQyxnaURDcGhCTUMsUSw2RUFBUyxTQUFUQSxPQUFNL3VCLE1BQUEsSUFBTVcsSUFBR1gsS0FBSFcsSUFBS0UsSUFBR2IsS0FBSGEsSUFBSzFFLEtBQUk2RCxLQUFKN0QsS0FBTWdoQixNQUFLbmQsS0FBTG1kLE1BQU9qZCxVQUFTRixLQUFURSxVQUFTLE1BQ2hELEdBQUFtRSxRQUFJbkUsVUFBVW9LLFFBQVEzSixJQUFLLFlBQVUsR0FBQTBELFFBQ2pDbkUsVUFBVW9LLFFBQVF6SixJQUFLLFlBQVksR0FBQXdELE9BQ3BDbEksS0FBSSxLQUFBa0ksT0FBSThZLE1BQU8sR0FFYixTQUFTOEIsZUFBY3ZiLE9BbUI1QixJQWJDLElBTEk1QyxNQUFLNEMsTUFBVi9DLElBQ0tJLElBQUcyQyxNQUFSN0MsSUFDQTFFLEtBQUl1SCxNQUFKdkgsS0FDQTJDLFVBQVM0RSxNQUFUNUUsVUFDQW9CLFVBQVN3RCxNQUFUeEQsVUFFTW5ILElBQU1nMkIsT0FBTyxDQUFFanVCLE1BQUFBLE1BQU9DLElBQUFBLElBQUs1RSxLQUFBQSxLQUFNMkMsVUFBQUEsVUFBV29CLFVBQUFBLFlBRzVDOHVCLFNBQVcsRUFBSTl1QixVQUFVK3VCLFlBQVludUIsTUFBT0MsS0FDNUNtdUIsb0JBQXNCaHZCLFVBQVVpdkIsdUJBQXVCcnVCLE9BQ3ZEc3VCLFVBQVl4UixLQUFLd0YsTUFBTTRMLFNBQVcsSUFBTTd5QixLQUFPMkMsWUFDL0N1d0IsU0FBV0QsVUFBWXR3QixVQUV2Qnd3QixPQUFTLElBQUl0b0IsTUFBTW9vQixXQUNuQmpTLE1BQVEsSUFBSW5XLE1BQU1xb0IsVUFHZkUsSUFBTSxFQUFHQSxJQUFNSCxVQUFXRyxNQUFPLENBQ3hDRCxPQUFPQyxLQUFPLElBQUl2b0IsTUFBTWxJLFdBRXhCLElBQUssSUFBSStkLEtBQU8sRUFBR0EsS0FBTy9kLFVBQVcrZCxPQUFRLENBQzNDLElBQU0yUyxRQUFVRCxJQUFNendCLFVBQVkrZCxLQUM1QjRTLGFBQWVELFFBQVVyekIsS0FFL0JnaEIsTUFBTXFTLFNBQVdGLE9BQU9DLEtBQUsxUyxNQUFRM2MsVUFBVXd2QixZQUM3QzV1QixNQUNBb3VCLG9CQUNBTyxhQUVKLENBQ0YsQ0FHQSxJQUFNRSxxQkFBdUJ4UyxNQUFNbGpCLE9BQVNrQyxLQUs1QyxTQUFTeXpCLGlCQUFpQmo0QixNQUN4QixJQUFNd3JCLEtBQ0pqakIsVUFBVWlqQixLQUFLcmlCLE1BQU9uSixLQUFNLFdBQzVCdUksVUFBVTJ2QixhQUFhL3VCLE1BQU9uSixNQUNoQyxPQUFPaW1CLEtBQUtqZCxJQUFJd2lCLEtBQU02TCxTQUN4QixDQUVBLE9BWEE3UixNQUFNeGtCLEtBQ0p1SCxVQUFVd3ZCLFlBQVk1dUIsTUFBT291QixvQkFBcUJTLHVCQVU3QyxDQUNMTCxPQUFBQSxPQUNBUSxPQUFNLFNBQUFBLE9BQUN6MEIsTUFDTCxPQUFJMHpCLE9BQU8xekIsUUFBVXRDLElBQVlrbUIsZUFBZTVqQixNQUN6Q21lLElBQ1QsRUFFQXVXLGNBQWEsU0FBQUEsY0FBQ3A0QixLQUFNcTRCLFlBQ2xCLElBQU1DLFVBQVlYLE9BQU9VLFdBQWEsR0FDdEMsT0FBTzl2QixVQUFVZ3dCLFFBQ2Z2NEIsS0FDQTIzQixPQUFPVSxZQUFZLEdBQ25CQyxVQUFZQSxVQUFVLEdBQUtsdkIsSUFDM0IsVUFFSixFQUVBb3ZCLFNBQVEsU0FBQUEsU0FBQ3RULE1BR1AsSUFBSWxVLEtBQ0Z3VSxNQUNFUyxLQUFLamQsSUFDSHdjLE1BQU1pVCxXQUFVLFNBQUNoUyxHQUFDLE9BQUtBLElBQU12QixNQUFRM2MsVUFBVW13QixHQUFHalMsRUFBR3ZCLEtBQUssSUFBSSxFQUM5RE0sTUFBTWxqQixPQUFTLElBS3JCLE9BRElpRyxVQUFVbXdCLEdBQUcxbkIsS0FBTWtVLFFBQU9sVSxLQUFPekksVUFBVXNCLElBQUlxYixLQUFNMWdCLEtBQU0sWUFDeER3TSxJQUNULEVBQ0EybkIsc0JBQXFCLFNBQUFBLHNCQUFDQyxTQUNwQixJQUFNMVQsS0FBT2UsS0FBS2pkLElBQ2hCd2MsTUFBTWxqQixPQUFTLEVBQ2YyakIsS0FBSy9jLElBQUksRUFBRytjLEtBQUtrRSxNQUFNeU8sUUFBVWxCLFlBRW5DLE9BQU9sUyxNQUFNTixLQUNmLEVBRUEyVCxxQkFBb0IsU0FBQUEscUJBQUNyVixNQUFPc1YsY0FDMUIsSUFBSWhtQixNQUFRbVQsS0FBS29HLElBQUl5TSxhQUFhbEwsSUFBTWtMLGFBQWF2SyxRQUNyRCxPQUFPMU0sS0FBSzhXLHVCQUF1Qm5WLE1BQU1uRSxFQUFJeVosYUFBYWxMLEtBQU85YSxNQUNuRSxFQUVBaW1CLG9CQUFtQixTQUFBQSxvQkFBQy80QixNQUFrQixJQUFaK3NCLE9BQU0xcUIsVUFBQUMsT0FBQSxRQUFBc3BCLElBQUF2cEIsVUFBQSxHQUFBQSxVQUFBLEdBQUcsRUFDakMsR0FBSWtHLFVBQVVvbUIsR0FBRzN1QixLQUFNbUosTUFBTyxXQUFZLE9BQU9xYyxNQUFNLEdBQ3ZELEdBQUlqZCxVQUFVeXdCLEdBQUdoNUIsS0FBTW9KLElBQUssV0FBWSxPQUFPb2MsTUFBTUEsTUFBTWxqQixPQUFTLEdBRXBFLElBQU0yMkIsU0FBVzF3QixVQUFVaWpCLEtBQUtyaUIsTUFBT25KLEtBQU0sV0FDN0MsT0FBT3dsQixPQUFPeVQsU0FBWUEsU0FBV3owQixNQUFTQSxLQUFPdW9CLE9BQ3ZELEVBRUFtTSxnQkFBZSxTQUFBQSxnQkFBQ2w1QixNQUNkLE9BQU91SSxVQUFVb21CLEdBQUczdUIsS0FBTW1KLE1BQU8sTUFDbkMsRUFFQWd3QixlQUFjLFNBQUFBLGVBQUNuNUIsTUFDYixPQUFPdUksVUFBVXl3QixHQUFHaDVCLEtBQU1vSixJQUFLLE1BQ2pDLEVBRUFnd0IsYUFBWSxTQUFBQSxhQUFDcDVCLE1BQ1gsT0FBT3VJLFVBQVVvbUIsR0FBR3BtQixVQUFVOHdCLE1BQU1sd0IsTUFBT25KLE1BQU9tSixNQUFPLFVBQzNELEVBRUFtd0IsWUFBVyxTQUFBQSxZQUFDdDVCLE1BQ1YsT0FBT3VJLFVBQVV5d0IsR0FBR3p3QixVQUFVOHdCLE1BQU1qd0IsSUFBS3BKLE1BQU9vSixJQUFLLFVBQ3ZELEVBRUFtd0IsU0FBUSxTQUFBQSxTQUFDQyxXQUFZQyxTQUFVQyxVQUFXQyxXQUNuQ0QsWUFDSEYsV0FBYWp4QixVQUFVUyxJQUFJSSxJQUFLYixVQUFVVyxJQUFJQyxNQUFPcXdCLGNBQ2xERyxZQUNIRixTQUFXbHhCLFVBQVVTLElBQUlJLElBQUtiLFVBQVVXLElBQUlDLE1BQU9zd0IsWUFFckQsSUFBTUcsY0FBZ0IzQixpQkFBaUJ1QixZQUNqQ0ssWUFBYzVCLGlCQUFpQndCLFVBQy9CN0wsSUFDSmlNLFlBQWNyMUIsS0FBT2t6QixXQUFhbnZCLFVBQVVtd0IsR0FBR3R2QixJQUFLcXdCLFdBQzlDRyxjQUFnQnAxQixPQUFTQSxLQUFPa3pCLFVBQWEsSUFDOUNrQyxlQUFpQnAxQixLQUFPa3pCLFVBQWEsSUFFNUMsTUFBTyxDQUNMOUosSUFBQUEsSUFDQXRSLE9BQVN1ZCxhQUFlcjFCLEtBQU9rekIsVUFBYSxJQUFNOUosSUFDbER6a0IsTUFBTzh1QixpQkFBaUJ1QixZQUN4Qk0sVUFBV04sV0FDWHB3QixJQUFLNnVCLGlCQUFpQndCLFVBQ3RCTSxRQUFTTixTQUViLEVBRUFPLHVCQUFzQixTQUFBQSx1QkFBQ1IsWUFJckIsT0FIc0J2QixpQkFBaUJ1QixhQUNUaDFCLEtBQU9rekIsVUFBYSxHQUdwRCxFQUVKLEMsaVhDcEpNMWhCLE1BQUssV0FjVCxPQUFBMkwsRUFBQUEsWUFBQUEsVUFiQSxTQUFBM0wsTUFBWWlrQixLQUFJNXhCLE1BQThCLElBQTFCcWYsVUFBU3JmLEtBQVRxZixVQUFXakMsWUFBV3BkLEtBQVhvZCxhQUFXckUsRUFBQUEsZUFBQUEsU0FBQSxLQUFBcEwsT0FDeEMsSUFBQWtrQixzQkFDRXpVLFlBQVk4VCxTQUFTN1IsVUFBVXZlLE1BQU04d0IsTUFBT3ZTLFVBQVV0ZSxJQUFJNndCLE9BRHBEOXdCLE1BQUsrd0Isc0JBQUwvd0IsTUFBTzJ3QixVQUFTSSxzQkFBVEosVUFBVzF3QixJQUFHOHdCLHNCQUFIOXdCLElBQUsyd0IsUUFBT0csc0JBQVBILFFBQVNuTSxJQUFHc00sc0JBQUh0TSxJQUFLdFIsT0FBTTRkLHNCQUFONWQsT0FHN0N1RixLQUFLMVksTUFBUUEsTUFDYjBZLEtBQUt6WSxJQUFNQSxJQUNYeVksS0FBS3NZLFNBQVdMLFVBQ2hCalksS0FBS3VZLE9BQVNMLFFBQ2RsWSxLQUFLK0wsSUFBTUEsSUFDWC9MLEtBQUt2RixPQUFTQSxPQUNkdUYsS0FBS29ZLEtBQU9BLElBQ2QsR0FFQSxFQUFBNzRCLElBQUEsU0FBQWk1QixJQUdBLFNBQUFBLE1BR0UsT0FBSXhZLEtBQUt5WSxLQU9BLEtBTEx6WSxLQUFLeVksS0FBS3hPLFFBQ1IsU0FBQzVpQixJQUFLNGMsS0FBRyxPQUFLRyxLQUFLL2MsSUFBSUEsSUFBSzRjLElBQUl5VSxPQUFPajRCLE9BQVMsRUFBRSxHQUNsRCxHQUNFLEdBT0p1ZixLQUFLMFksUUFDZ0IsSUFBTTFZLEtBQUt5QixVQUFVa1gsU0FDbkIzWSxLQUFLMFksT0FBT2o0QixPQUFTLEdBSXpDdWYsS0FBS2lFLElBQUkwVSxNQUNsQixHQUVBLENBQUFwNUIsSUFBQSxRQUFBaTVCLElBSUEsU0FBQUEsTUFDRSxJQUFNSSxVQUFZNVksS0FBSzJZLE9BQ2pCRSxRQUFVelUsS0FBS2pkLElBQUksSUFBbUIsSUFBZDZZLEtBQUsyWSxRQUduQyxHQUFJM1ksS0FBS3lZLEtBQ1AsT0FBT0ksUUFJVCxHQUFJN1ksS0FBSzBZLE9BQ1AsT0FBTzFZLEtBQUswWSxPQUFPajRCLE9BQVMsRUFBSW80QixRQUFVRCxVQUk1QyxJQUFRRixPQUFXMVksS0FBS2lFLElBQWhCeVUsT0FFUixPQURjQSxPQUFPckksUUFBUXJRLFFBQ1owWSxPQUFPajRCLE9BQVMsRUFBSW00QixVQUFZQyxPQUNuRCxHQUFDLENBQUF0NUIsSUFBQSxVQUFBaTVCLElBRUQsU0FBQUEsTUFFRSxHQUFJeFksS0FBS3lZLEtBQU0sT0FBTyxFQUd0QixHQUFJelksS0FBSzBZLE9BQVEsT0FBTzFZLEtBQUt5QixVQUFVa1gsT0FHdkMsSUFBQUcsVUFBb0M5WSxLQUFLaUUsSUFBakN5VSxPQUFNSSxVQUFOSixPQUFRSyxRQUFPRCxVQUFQQyxRQUFTSixPQUFNRyxVQUFOSCxPQUV6QixPQUFPSSxTQURPTCxPQUFPckksUUFBUXJRLE1BQVEsR0FDWjJZLE1BQzNCLElBQUMsQ0E1RVEsR0FrRlgsU0FBU0ssVUFBVXpULEVBQUdDLEVBQUd5VCx3QkFDdkIsT0FFRTdVLEtBQUtvRyxJQUFJaEYsRUFBRWxlLE1BQVFpZSxFQUFFamUsT0FBUzJ4Qix3QkFFN0J6VCxFQUFFbGUsTUFBUWllLEVBQUVqZSxPQUFTa2UsRUFBRWxlLE1BQVFpZSxFQUFFaGUsR0FFdEMsQ0FnQ2UsU0FBUzJ4QixnQkFBZWh2QixPQWlCckMsSUFaQyxJQUpEekgsT0FBTXlILE1BQU56SCxPQUNBdzJCLHVCQUFzQi91QixNQUF0Qit1Qix1QkFDQXJWLFlBQVcxWixNQUFYMFosWUFDQWlDLFVBQVMzYixNQUFUMmIsVUFPTXNULG9CQXpDUixTQUFTQyxhQUFhMzJCLFFBSXBCLElBSEEsSUFBTTQyQixhQUFlQyxpQkFBTzcyQixPQUFRLENBQUMsVUFBVyxTQUFDd2lCLEdBQUMsT0FBTUEsRUFBRXNULEtBQUssSUFFekRnQixPQUFTLEdBQ1JGLGFBQWE1NEIsT0FBUyxHQUFHLENBQzlCLElBQU0wSixNQUFRa3ZCLGFBQWFHLFFBQzNCRCxPQUFPcDZCLEtBQUtnTCxPQUVaLElBQUssSUFBSTVKLEVBQUksRUFBR0EsRUFBSTg0QixhQUFhNTRCLE9BQVFGLElBQUssQ0FDNUMsSUFBTWd5QixLQUFPOEcsYUFBYTk0QixHQUcxQixLQUFJNEosTUFBTW91QixNQUFRaEcsS0FBSytGLFNBQXZCLENBS0EsR0FBSS8zQixFQUFJLEVBQUcsQ0FDVCxJQUFNNEosT0FBUWt2QixhQUFhL0ksT0FBTy92QixFQUFHLEdBQUcsR0FDeENnNUIsT0FBT3A2QixLQUFLZ0wsT0FDZCxDQUdBLEtBWHdDLENBWTFDLENBQ0YsQ0FFQSxPQUFPb3ZCLE1BQ1QsQ0FhOEJILENBSFozMkIsT0FBTzBMLEtBQ3JCLFNBQUNoRSxPQUFLLE9BQUssSUFBSWdLLE1BQU1oSyxNQUFPLENBQUV5WixZQUFBQSxZQUFhaUMsVUFBQUEsV0FBWSxLQU9uRDRULGdCQUFrQixHQUFFQyxNQUFBLFNBQUFBLFFBRXhCLElBQU12dkIsTUFBUWd2QixvQkFBb0I1NEIsR0FHNUJraEIsVUFBWWdZLGdCQUFnQi91QixNQUNoQyxTQUFDMkYsR0FBQyxPQUNBQSxFQUFFOUksSUFBTTRDLE1BQU03QyxPQUNkOGMsS0FBS29HLElBQUlyZ0IsTUFBTTdDLE1BQVErSSxFQUFFL0ksT0FBUzJ4QixzQkFBc0IsSUFJNUQsSUFBS3hYLFVBRXdCLE9BRDNCdFgsTUFBTXN1QixLQUFPLEdBQ2JnQixnQkFBZ0J0NkIsS0FBS2dMLE9BQU0sRUFLN0JBLE1BQU1zWCxVQUFZQSxVQUtsQixJQURBLElBQUl3QyxJQUFNLEtBQ0QwVixFQUFJbFksVUFBVWdYLEtBQUtoNEIsT0FBUyxHQUFJd2pCLEtBQU8wVixHQUFLLEVBQUdBLElBQ2xEWCxVQUFVdlgsVUFBVWdYLEtBQUtrQixHQUFJeHZCLE1BQU84dUIsMEJBQ3RDaFYsSUFBTXhDLFVBQVVnWCxLQUFLa0IsSUFJckIxVixLQUVGQSxJQUFJeVUsT0FBT3Y1QixLQUFLZ0wsT0FDaEJBLE1BQU04WixJQUFNQSxNQUdaOVosTUFBTXV1QixPQUFTLEdBQ2ZqWCxVQUFVZ1gsS0FBS3Q1QixLQUFLZ0wsT0FFeEIsRUF0Q1M1SixFQUFJLEVBQUdBLEVBQUk0NEIsb0JBQW9CMTRCLE9BQVFGLElBQUdtNUIsUUF5Q25ELE9BQU9QLG9CQUFvQmhyQixLQUFJLFNBQUNoRSxPQUFLLE1BQU0sQ0FDekNBLE1BQU9BLE1BQU1pdUIsS0FDYnZxQixNQUFPLENBQ0xrZSxJQUFLNWhCLE1BQU00aEIsSUFDWHRSLE9BQVF0USxNQUFNc1EsT0FDZHZLLE1BQU8vRixNQUFNK0YsTUFDYjZvQixRQUFTM1UsS0FBSy9jLElBQUksRUFBRzhDLE1BQU00dUIsVUFFOUIsR0FDSCxDQzVMQSxTQUFTYSxhQUFhdlksS0FBTXdZLE9BQVFDLFNBQ2xDLElBQUssSUFBSXY1QixFQUFJLEVBQUdBLEVBQUk4Z0IsS0FBSzBZLFFBQVF0NUIsU0FBVUYsRUFDekMsS0FBSXU1QixRQUFRekosUUFBUWhQLEtBQUswWSxRQUFReDVCLEtBQU8sR0FBeEMsQ0FDQXM1QixPQUFTQSxPQUFTeFksS0FBSzBZLFFBQVF4NUIsR0FBRytQLElBQU11cEIsT0FBU3hZLEtBQUswWSxRQUFReDVCLEdBQUcrUCxJQUVqRXdwQixRQUFRMzZCLEtBQUtraUIsS0FBSzBZLFFBQVF4NUIsSUFDMUIsSUFBTXk1QixPQUFTSixhQUFhdlksS0FBSzBZLFFBQVF4NUIsR0FBSXM1QixPQUFRQyxTQUNyREQsT0FBU0EsT0FBU0csT0FBU0gsT0FBU0csTUFMZSxDQU9yRCxPQUFPSCxNQUNULENDUEEsSUFBTUksa0JBQW9CLENBQ3hCcEIsUUFBU0EsZ0JBQ1QsYURPYSxTQUFTLFdBQVRyeUIsTUFLWixJQUNLMHpCLGFBQWVyQixnQkFBUSxDQUMzQnAyQixPQU5JK0QsS0FBTi9ELE9BT0V3MkIsdUJBTm9CenlCLEtBQXRCeXlCLHVCQU9FclYsWUFOU3BkLEtBQVhvZCxZQU9FaUMsVUFOT3JmLEtBQVRxZixZQVNBcVUsYUFBYUMsTUFBSyxTQUFDNVUsRUFBR0MsR0FHcEIsT0FGQUQsRUFBSUEsRUFBRTFYLE1BQ04yWCxFQUFJQSxFQUFFM1gsTUFDRjBYLEVBQUV3RyxNQUFRdkcsRUFBRXVHLElBQVl4RyxFQUFFd0csSUFBTXZHLEVBQUV1RyxJQUFNLEdBQUssRUFDeEN4RyxFQUFFOUssU0FBVytLLEVBQUUvSyxPQUNmOEssRUFBRXdHLElBQU14RyxFQUFFOUssT0FBUytLLEVBQUV1RyxJQUFNdkcsRUFBRS9LLE9BQVMsR0FBSyxFQUN4QyxDQUNkLElBRUEsSUFBSyxJQUFJbGEsRUFBSSxFQUFHQSxFQUFJMjVCLGFBQWF6NUIsU0FBVUYsRUFDekMyNUIsYUFBYTM1QixHQUFHdzVCLFFBQVUsVUFDbkJHLGFBQWEzNUIsR0FBR3NOLE1BQU15VixZQUN0QjRXLGFBQWEzNUIsR0FBR3NOLE1BQU15VixZQUN0QjRXLGFBQWEzNUIsR0FBRytQLFdBQ2hCNHBCLGFBQWEzNUIsR0FBRzY1QixLQUd6QixJQUFLLElBQUk3NUIsSUFBSSxFQUFHQSxJQUFJMjVCLGFBQWF6NUIsT0FBUyxJQUFLRixJQUs3QyxJQUpBLElBQU04NUIsSUFBTUgsYUFBYTM1QixLQUNuQis1QixHQUFLRCxJQUFJeHNCLE1BQU1rZSxJQUNmd08sR0FBS0YsSUFBSXhzQixNQUFNa2UsSUFBTXNPLElBQUl4c0IsTUFBTTRNLE9BRTVCa2YsRUFBSXA1QixJQUFJLEVBQUdvNUIsRUFBSU8sYUFBYXo1QixTQUFVazVCLEVBQUcsQ0FDaEQsSUFBTWEsSUFBTU4sYUFBYVAsR0FDbkJjLEdBQUtELElBQUkzc0IsTUFBTWtlLElBQ2YyTyxHQUFLRixJQUFJM3NCLE1BQU1rZSxJQUFNeU8sSUFBSTNzQixNQUFNNE0sUUFHbENnZ0IsSUFBTUgsSUFBTUksSUFBTUgsSUFDbEJHLEdBQUtKLElBQU1JLElBQU1ILElBQ2pCRSxJQUFNSCxJQUFNRyxHQUFLRixNQUdsQkYsSUFBSU4sUUFBUTU2QixLQUFLcTdCLEtBQ2pCQSxJQUFJVCxRQUFRNTZCLEtBQUtrN0IsS0FFckIsQ0FHRixJQUFLLElBQUk5NUIsSUFBSSxFQUFHQSxJQUFJMjVCLGFBQWF6NUIsU0FBVUYsSUFBRyxDQUc1QyxJQUZBLElBQU1vNkIsR0FBS1QsYUFBYTM1QixLQUNsQnE2QixPQUFTLEdBQ05qQixJQUFJLEVBQUdBLElBQUksTUFBT0EsSUFBR2lCLE9BQU96N0IsS0FBSyxHQUUxQyxJQUFLLElBQUl3NkIsSUFBSSxFQUFHQSxJQUFJZ0IsR0FBR1osUUFBUXQ1QixTQUFVazVCLFNBQ2I1UCxJQUF0QjRRLEdBQUdaLFFBQVFKLEtBQUdycEIsTUFBbUJzcUIsT0FBT0QsR0FBR1osUUFBUUosS0FBR3JwQixLQUFPLEdBRW5FcXFCLEdBQUdycUIsSUFBTXNxQixPQUFPdkssUUFBUSxFQUMxQixDQUVBLElBQUssSUFBSTl2QixJQUFJLEVBQUdBLElBQUkyNUIsYUFBYXo1QixTQUFVRixJQUFHLENBQzVDLElBQUk2NUIsS0FFSixJQUFJRixhQUFhMzVCLEtBQUc2NUIsS0FBcEIsQ0FFQSxJQUFNUyxXQUFhLEdBRW5CVCxLQUFPLEtBRFFSLGFBQWFNLGFBQWEzNUIsS0FBSSxFQUFHczZCLFlBQ3pCLEdBQ3ZCWCxhQUFhMzVCLEtBQUc2NUIsS0FBT0EsS0FFdkIsSUFBSyxJQUFJVCxJQUFJLEVBQUdBLElBQUlrQixXQUFXcDZCLFNBQVVrNUIsSUFBR2tCLFdBQVdsQixLQUFHUyxLQUFPQSxJQVAvQixDQVFwQyxDQUVBLElBQUssSUFBSTc1QixLQUFJLEVBQUdBLEtBQUkyNUIsYUFBYXo1QixTQUFVRixLQUFHLENBQzVDLElBQU0wa0IsRUFBSWlWLGFBQWEzNUIsTUFDdkIwa0IsRUFBRXBYLE1BQU15VixLQUFPMkIsRUFBRTNVLElBQU0yVSxFQUFFbVYsS0FJekIsSUFEQSxJQUFJUCxRQUFTLEVBQ0pGLEtBQUksRUFBR0EsS0FBSTFVLEVBQUU4VSxRQUFRdDVCLFNBQVVrNUIsS0FBRyxDQUN6QyxJQUFNcnBCLElBQU0yVSxFQUFFOFUsUUFBUUosTUFBR3JwQixJQUN6QnVwQixRQUFTQSxRQUFTdnBCLElBQU11cEIsUUFBU3ZwQixHQUNuQyxDQUNJdXBCLFNBQVU1VSxFQUFFM1UsTUFBSzJVLEVBQUVtVixLQUFPLElBQU1uVixFQUFFM1UsSUFBTTJVLEVBQUVtVixNQUs5QyxJQUFNVSxRQUFvQixJQUFWN1YsRUFBRTNVLElBQVksRUFBSSxFQUNsQzJVLEVBQUVwWCxNQUFNcUMsTUFBUSxRQUFIckYsT0FBV29hLEVBQUVtVixLQUFJLFFBQUF2dkIsT0FBT2l3QixRQUFPLE9BQzVDN1YsRUFBRXBYLE1BQU00TSxPQUFTLFFBQUg1UCxPQUFXb2EsRUFBRXBYLE1BQU00TSxPQUFNLFlBQ3ZDd0ssRUFBRXBYLE1BQU1rckIsUUFBVSxRQUFIbHVCLE9BQVdvYSxFQUFFcFgsTUFBTXlWLEtBQUksUUFBQXpZLE9BQU9pd0IsUUFBTyxNQUN0RCxDQUVBLE9BQU9aLFlBQ1QsRywrSUUxR3FCYSxjQUFhLFNBQUFDLFlBQUEsU0FBQUQsZ0JBQUEsT0FBQXhiLEVBQUFBLGVBQUFBLFNBQUEsS0FBQXdiLGdCQUFBdmIsRUFBQUEsVUFBQUEsU0FBQSxLQUFBdWIsY0FBQXY2QixVQUFBLFFBQUFxZixFQUFBQSxTQUFBQSxTQUFBa2IsY0FBQUMsYUFBQWxiLEVBQUFBLFlBQUFBLFNBQUFpYixjQUFBLEVBQUF4N0IsSUFBQSxTQUFBQyxNQUNoQyxTQUFBOGdCLFNBQ0UsSUFBQUMsWUFNSVAsS0FBS25VLE1BTFBvdkIsV0FBVTFhLFlBQVYwYSxXQUNBQyxTQUFRM2EsWUFBUjJhLFNBQ0FDLE1BQUs1YSxZQUFMNGEsTUFDQTNhLFFBQU9ELFlBQVBDLFFBQU82SSxzQkFBQTlJLFlBQ1BuZCxXQUxGZzRCLHdCQUFBL1IsMkJBQUEsSUFBQUEsc0JBS2lFLENBQUMsRUFBQ0EsdUJBQW5EeGxCLGdCQUFpQjZjLGFBQU8sSUFBQTBhLHVCQUFHQyxrQkFBQUEsRUFBaUJELHVCQUd0REUsV0FBYTlhLFFBQVVBLFFBQVErYSxjQUFjSixPQUFTLENBQUMsRUFDN0QsT0FDRTE1QixFQUFBQSxZQUFBQSxLQUFBLE1BQUE3QyxPQUFBbUQsT0FBQSxDQUFLTCxVQUFVLHNCQUF5QjQ1QixXQUFVLENBQUEzNUIsU0FDL0N3NUIsTUFBTWh0QixLQUFJLFNBQUMzTyxNQUFPOFEsS0FDakIsSUFBTWtyQixVQUFZaGIsUUFBVUEsUUFBUWliLFNBQVNqOEIsTUFBTzA3QixVQUFZLENBQUMsRUFDakUsT0FDRXo1QixFQUFBQSxZQUFBQSxLQUFDaWYsUUFBTyxDQUFXbGhCLE1BQU9BLE1BQU8wN0IsU0FBVUEsU0FBU3Y1QixVQUNsREYsRUFBQUEsWUFBQUEsS0FBQSxNQUFBN0MsT0FBQW1ELE9BQUEsR0FDTXk1QixVQUFTLENBQ2I5NUIsV0FBVzRVLEVBQUFBLE9BQUFBLEdBQUssZ0JBQWlCa2xCLFVBQVU5NUIsV0FBV0MsU0FFckRzNUIsWUFBY0EsV0FBV3o3QixNQUFPOFEsU0FMdkJBLElBU2xCLE1BR04sSUFBQyxDQTVCK0IsQ0FBU29yQixNQUFBQSxXQUFUWCxjQUFBanlCLGFBQUEscVhBQUFDLDBCQUFBQSx3QkFBQSx5QkFBQUMsS0FBQSxnQkFBQUMsV0FBQTh4QixjQUFBanlCLGFBQUFJLEtBQUEseUIsZ0VDSjVCeXlCLGtCLGdEQUFtQixTQUFuQkEsaUJBQWdCbjFCLE1BQWlELElBQTNDN0UsU0FBUTZFLEtBQVI3RSxTQUFVRCxVQUFTOEUsS0FBVDlFLFVBQVdtTSxNQUFLckgsS0FBTHFILE1BQU8rdEIsU0FBUXAxQixLQUFSbzFCLFNBQ3RELE9BQ0VuNkIsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFXQSxVQUFXbU0sTUFBT0EsTUFBT2lULElBQUs4YSxTQUFTajZCLFNBQ3BEQSxVQUdQLEdBTk1nNkIsaUJBQWdCMzVCLFlBQUcsbUJBUXpCLHlCQUFlbVEsTUFBQUEsWUFBaUIsU0FBQ3RHLE1BQU9pVixLQUFHLE9BQ3pDcmYsRUFBQUEsWUFBQUEsS0FBQ2s2QixpQkFBZ0IvOEIsT0FBQW1ELE9BQUEsR0FBSzhKLE1BQUssQ0FBRSt2QixTQUFVOWEsTUFBTyxJLDJEQ0sxQythLFVBQVMsU0FBQXpjLGtCQUliLFNBQUF5YyxZQUFxQixJQUFBdmMsT0FBQUMsRUFBQUEsZUFBQUEsU0FBQSxLQUFBc2MsV0FBQSxRQUFBNVUsS0FBQXptQixVQUFBQyxPQUFOb0IsTUFBSSxJQUFBMkwsTUFBQXlaLE1BQUFDLEtBQUEsRUFBQUEsS0FBQUQsS0FBQUMsT0FBSnJsQixNQUFJcWxCLE1BQUExbUIsVUFBQTBtQixNQUljLE9BSC9CNUgsT0FBQUUsRUFBQUEsVUFBQUEsU0FBQSxLQUFBcWMsVUFBQSxHQUFBaHhCLE9BQVNoSixTQUpYNGQsTUFBUSxDQUFFQyxXQUFXLEVBQU9vYyxzQkFBdUIsTUFBTXhjLE1BQ3pEeWMsbUJBQW9CLEVBQUt6YyxNQXNLekIwYyxhQUFlLFNBQUF4MUIsTUFBbUMsSUFBaEMvRCxPQUFNK0QsS0FBTi9ELE9BQVF3NUIsa0JBQWlCejFCLEtBQWpCeTFCLGtCQUN4QjFiLFlBV0lqQixNQUFLelQsTUFWUDBFLElBQUdnUSxZQUFIaFEsSUFDQTJOLFNBQVFxQyxZQUFSckMsU0FDQTJILFVBQVN0RixZQUFUc0YsVUFDQW5mLFVBQVM2WixZQUFUN1osVUFDQThaLFFBQU9ELFlBQVBDLFFBQ0FwZCxXQUFVbWQsWUFBVm5kLFdBQ0FULEtBQUk0ZCxZQUFKNWQsS0FDQTJDLFVBQVNpYixZQUFUamIsVUFDQW1ELG1CQUFrQjhYLFlBQWxCOVgsbUJBQ0F4RCxVQUFTc2IsWUFBVHRiLFVBR00yZSxZQUFSdEUsTUFBUXNFLFlBQ0ExZixTQUFhd0MsVUFBYnhDLFNBRUpnMkIsYUgxTEQsU0FBU2hCLCtCQUFlMXlCLE1BQ3ZCQSxLQUFOL0QsT0FDc0IrRCxLQUF0Qnl5Qix1QkFDV3p5QixLQUFYb2QsWUFDU3BkLEtBQVRxZixVQUdDLElBRkRwZCxtQkFBa0JqQyxLQUFsQmlDLG1CQUdJeXpCLFVBQVl6ekIsbUJBS2hCLE9BSElBLHNCQUFzQnd4QixvQkFDeEJpQyxVQUFZakMsa0JBQWtCeHhCLHFCQWhCbEMsU0FBUzB6QixXQUFXNVcsR0FDbEIsU0FBVUEsR0FBS0EsRUFBRTZXLGFBQWU3VyxFQUFFOFcsTUFBUTlXLEVBQUVubUIsTUFDOUMsQ0FnQk8rOEIsQ0FBV0QsV0FLVEEsVUFBVTk4QixNQUFNNGdCLEtBQU14ZixXQUhwQixFQUlYLENHdUt1Qjg3QixDQUErQixDQUNoRDc1QixPQUFBQSxPQUNBb2pCLFVBQUFBLFVBQ0FqQyxZQUFBQSxZQUNBcVYsdUJBQXdCN1UsS0FBS3dGLEtBQU1qbkIsS0FBTzJDLFVBQWEsR0FDdkRtRCxtQkFBQUEscUJBR0YsT0FBT3l4QixhQUFhL3JCLEtBQUksU0FBQWpFLE1BQW1Cb0csS0FBUSxJQUk3Q21HLE1BSnFCdE0sTUFBS0QsTUFBTEMsTUFBTzBELE1BQUszRCxNQUFMMkQsTUFDNUJ0RyxJQUFNc2UsVUFBVXRlLElBQUk0QyxPQUNwQjdDLE1BQVF1ZSxVQUFVdmUsTUFBTTZDLE9BQ3hCa08sT0FBUyx1QkFHUGdmLGdCQUFrQnpULFlBQVl5VCxnQkFBZ0IvdkIsT0FDOUNnd0IsZUFBaUIxVCxZQUFZMFQsZUFBZS92QixLQUU5Qzh2QixnQkFBaUJoZixPQUFTLDBCQUNyQmlmLGlCQUFnQmpmLE9BQVMsNkJBRUs1QixNQUFuQzRnQixpQkFBbUJDLGVBQXdCcHpCLFNBQVNzRCxPQUMzQ2QsVUFBVTJSLE9BQU8sQ0FBRS9RLE1BQUFBLE1BQU9DLElBQUFBLEtBQU84USxRQUU5QyxJQUFJeU8sZUFBaUJ1USxpQkFBbUJ6VCxZQUFZMlQsYUFBYWp3QixPQUM3RHlmLGVBQWlCdVEsZ0JBQWtCMVQsWUFBWTZULFlBQVlsd0IsS0FFL0QsT0FDRTlGLEVBQUFBLFlBQUFBLEtBQUM4NkIsY0FBQUEsRUFBYSxDQUNaMXVCLE1BQU9BLE1BQ1AxRCxNQUFPQSxNQUNQc00sTUFBT0EsTUFFUCtKLFFBQVNBLFFBQ1RqUSxJQUFLQSxJQUNMbk4sV0FBWUEsV0FDWjBqQixlQUFnQkEsZUFDaEJDLGVBQWdCQSxlQUNoQmxCLFVBQVdBLFVBQ1hxVixTQUFVNWIsTUFBS3pULE1BQU1xdkIsU0FDckJoZCxVQUFVckcsRUFBQUEsVUFBQUEsSUFBVzFOLE1BQU8rVCxVQUM1QjNILFFBQVMsU0FBQUEsUUFBQzBPLEdBQUMsT0FDVDNGLE1BQUtrZCxRQUFPNTlCLE9BQUFtRCxPQUFDLENBQUQsRUFFTG9JLE1BQ0NtVixNQUFLelQsTUFBTXF2QixVQUFZLENBQ3pCdnRCLGVBQWdCMlIsTUFBS3pULE1BQU1xdkIsVUFFekJlLG1CQUFxQixDQUFFQSxtQkFBbUIsSUFFaERoWCxFQUNELEVBRUh5RCxjQUFlLFNBQUFBLGNBQUN6RCxHQUFDLE9BQUszRixNQUFLbWQsYUFBYXR5QixNQUFPOGEsRUFBRSxFQUNqRGdYLGtCQUFtQkEsa0JBQ25CdFQsV0FBWSxTQUFBQSxXQUFDMUQsR0FBQyxPQUFLM0YsTUFBS29kLFVBQVV2eUIsTUFBTzhhLEVBQUUsRUFDM0NoZ0IsVUFBV0EsV0F4Qk4sT0FBU3FMLElBMkJwQixHQUNGLEVBQUNnUCxNQUVEVyxZQUFjLFdBQ1osSUFBSW9CLEtBQU8vQixNQUFLSyxhQUFhck8sUUFDN0J1VCxhQUEwQ3ZGLE1BQUt6VCxNQUF2QzhPLG1CQUFrQmtLLGFBQWxCbEssbUJBQW9CalUsVUFBU21lLGFBQVRuZSxVQUN4QjRhLFNBQVloQyxNQUFLaUMsVUFBWSxJQUFJQyxVQUFBQSxJQUFVLGtCQUFNSCxJQUFJLEdBQUUsQ0FDekQxRyxtQkFBb0JBLHFCQUdsQmdpQixZQUFjLFNBQWRBLFlBQWVyYSxLQUNqQixJQUFJdEYsWUFBY3NDLE1BQUt6VCxNQUFNbVIsWUFDekIxTCxRQUFVZ08sTUFBS0csT0FBUyxDQUFDLEVBQ3pCQSxNQUFRbWQsZUFBZXRhLEtBQ1ZoYixNQUF3Qm1ZLE1BQW5Dd1ksVUFBMkIxd0IsSUFBUWtZLE1BQWpCeVksUUFFcEJsYixjQUVDdFcsVUFBVW13QixHQUFHdmxCLFFBQVEybUIsVUFBVzN3QixNQUFPLFlBQ3RDWixVQUFVbXdCLEdBQUd2bEIsUUFBUTRtQixRQUFTM3dCLElBQUssYUFDNEIsSUFBakV5VixZQUFZLENBQUUxVixNQUFBQSxNQUFPQyxJQUFBQSxJQUFLdUYsV0FBWXdTLE1BQUt6VCxNQUFNcXZCLGFBTW5ENWIsTUFBS0csTUFBTW5ZLFFBQVVtWSxNQUFNblksT0FDM0JnWSxNQUFLRyxNQUFNbFksTUFBUWtZLE1BQU1sWSxLQUN6QitYLE1BQUtHLE1BQU1DLFlBQWNELE1BQU1DLFdBRS9CSixNQUFLa0QsU0FBUy9DLE1BRWxCLEVBRUltZCxlQUFpQixTQUFqQkEsZUFBa0JqYixPQUNwQixJQUFJa2IsWUFBY3ZkLE1BQUtzRSxZQUFZb1QscUJBQ2pDclYsT0FDQUssRUFBQUEsVUFBQUEsSUFBaUJYLE9BR2QvQixNQUFLRyxNQUFNQyxZQUNkSixNQUFLd2QsYUFBZUQsYUFHdEIsSUFBSUUsWUFBY3pkLE1BQUt3ZCxhQUNuQnAyQixVQUFVNkssSUFBSXdyQixZQUFhRixhQUM3QkEsWUFBY3ZkLE1BQUtzRSxZQUFZK1MsU0FBU2tHLGFBQy9CbjJCLFVBQVV5d0IsR0FBRzRGLFlBQWFGLGVBQ25DRSxZQUFjemQsTUFBS3NFLFlBQVkrUyxTQUFTb0csY0FHMUMsSUFBTUMsWUFBYzFkLE1BQUtzRSxZQUFZOFQsU0FDbkNoeEIsVUFBVVMsSUFBSTQxQixZQUFhRixhQUMzQm4yQixVQUFVVyxJQUFJMDFCLFlBQWFGLGNBRzdCLE9BQUFqK0IsT0FBQW1ELE9BQUEsR0FDS2k3QixZQUFXLENBQ2R0ZCxXQUFXLEVBRVhxTSxJQUFLLEdBQUZsaEIsT0FBS215QixZQUFZalIsSUFBRyxLQUN2QnRSLE9BQVEsR0FBRjVQLE9BQUtteUIsWUFBWXZpQixPQUFNLE1BRWpDLEVBRUlpSCxzQkFBd0IsU0FBeEJBLHNCQUF5QlksSUFBS1YsWUFDaEMsS0FBS0MsRUFBQUEsVUFBQUEsSUFBUXZDLE1BQUtLLGFBQWFyTyxRQUFTZ1IsS0FBTSxDQUM1QyxJQUFBMmEsZ0JBQStCTCxlQUFldGEsS0FBdEMyVixVQUFTZ0YsZ0JBQVRoRixVQUFXQyxRQUFPK0UsZ0JBQVAvRSxRQUNuQjVZLE1BQUsrQyxZQUFZLENBQ2Y0VixVQUFBQSxVQUNBQyxRQUFBQSxRQUNBajFCLE9BQVEyZSxXQUNSVSxJQUFBQSxLQUVKLENBQ0FoRCxNQUFLa0QsU0FBUyxDQUFFOUMsV0FBVyxHQUM3QixFQUVBNEIsU0FBU21CLEdBQUcsWUFBYWthLGFBQ3pCcmIsU0FBU21CLEdBQUcsY0FBZWthLGFBRTNCcmIsU0FBU21CLEdBQUcsZ0JBQWdCLFNBQUNILEtBQzNCLEdBQThCLGlCQUExQmhELE1BQUt6VCxNQUFNekMsV0FFZixRQUFReVksRUFBQUEsVUFBQUEsSUFBUXZDLE1BQUtLLGFBQWFyTyxRQUFTZ1IsSUFDN0MsSUFFQWhCLFNBQVNtQixHQUFHLFNBQVMsU0FBQ0gsS0FBRyxPQUFLWixzQkFBc0JZLElBQUssUUFBUSxJQUVqRWhCLFNBQVNtQixHQUFHLGVBQWUsU0FBQ0gsS0FBRyxPQUM3Qlosc0JBQXNCWSxJQUFLLGNBQWMsSUFHM0NoQixTQUFTbUIsR0FBRyxVQUFVLFNBQUNPLFFBQ2pCMUQsTUFBS0csTUFBTUMsWUFDYkosTUFBSytDLFlBQVd6akIsT0FBQW1ELE9BQUMsQ0FBQyxFQUFJdWQsTUFBS0csTUFBTyxDQUFBeGMsT0FBUSxTQUFVK2YsT0FBQUEsVUFDcEQxRCxNQUFLa0QsU0FBUyxDQUFFOUMsV0FBVyxJQUUvQixJQUVBNEIsU0FBU21CLEdBQUcsU0FBUyxXQUNmbkQsTUFBS0csTUFBTUMsV0FDYkosTUFBS2tELFNBQVMsQ0FBRTlDLFdBQVcsR0FFL0IsR0FDRixFQUFDSixNQUVEYSxvQkFBc0IsV0FDZmIsTUFBS2lDLFlBQ1ZqQyxNQUFLaUMsVUFBVTJCLFdBQ2Y1RCxNQUFLaUMsVUFBWSxLQUNuQixFQUFDakMsTUFFRCtDLFlBQWMsU0FBQXJYLE9BSVosSUFKNkQsSUFBOUNpdEIsVUFBU2p0QixNQUFUaXRCLFVBQVdDLFFBQU9sdEIsTUFBUGt0QixRQUFTajFCLE9BQU0rSCxNQUFOL0gsT0FBUStmLE9BQU1oWSxNQUFOZ1ksT0FBUVYsSUFBR3RYLE1BQUhzWCxJQUMvQ2hSLFFBQVUybUIsVUFDWnRVLE1BQVEsR0FFSHJFLE1BQUt6VCxNQUFNbkYsVUFBVTZLLElBQUlELFFBQVM0bUIsVUFDdkN2VSxNQUFNeGtCLEtBQUttUyxTQUNYQSxRQUFVLElBQUk5TyxNQUFNOE8sUUFBNEIsR0FBbEJnTyxNQUFLelQsTUFBTWxKLEtBQVksTUFHdkRnZ0IsRUFBQUEsUUFBQUEsSUFBT3JELE1BQUt6VCxNQUFNeEMsYUFBYyxDQUM5QnNhLE1BQUFBLE1BQ0FyYyxNQUFPMndCLFVBQ1Axd0IsSUFBSzJ3QixRQUNMcHJCLFdBQVl3UyxNQUFLelQsTUFBTXF2QixTQUN2Qmo0QixPQUFBQSxPQUNBK2YsT0FBQUEsT0FDQVYsSUFBQUEsS0FFSixFQUFDaEQsTUFFRGtkLFFBQVUsV0FBYSxRQUFBVSxNQUFBMThCLFVBQUFDLE9BQVRvQixLQUFJLElBQUEyTCxNQUFBMHZCLE9BQUFDLE1BQUEsRUFBQUEsTUFBQUQsTUFBQUMsUUFBSnQ3QixLQUFJczdCLE9BQUEzOEIsVUFBQTI4QixRQUNoQnhhLEVBQUFBLFFBQUFBLElBQU9yRCxNQUFLelQsTUFBTTdJLGNBQWVuQixLQUNuQyxFQUFDeWQsTUFFRG1kLGFBQWUsV0FBYSxRQUFBVyxNQUFBNThCLFVBQUFDLE9BQVRvQixLQUFJLElBQUEyTCxNQUFBNHZCLE9BQUFDLE1BQUEsRUFBQUEsTUFBQUQsTUFBQUMsUUFBSng3QixLQUFJdzdCLE9BQUE3OEIsVUFBQTY4QixRQUNyQjFhLEVBQUFBLFFBQUFBLElBQU9yRCxNQUFLelQsTUFBTTZQLG1CQUFvQjdaLEtBQ3hDLEVBQUN5ZCxNQUVEb2QsVUFBWSxXQUFhLFFBQUFZLE1BQUE5OEIsVUFBQUMsT0FBVG9CLEtBQUksSUFBQTJMLE1BQUE4dkIsT0FBQUMsTUFBQSxFQUFBQSxNQUFBRCxNQUFBQyxRQUFKMTdCLEtBQUkwN0IsT0FBQS84QixVQUFBKzhCLFFBQ2xCNWEsRUFBQUEsUUFBQUEsSUFBT3JELE1BQUt6VCxNQUFNb1EsZ0JBQWlCcGEsS0FDckMsRUEzWEV5ZCxNQUFLc0UsWUFBYzRaLGVBQTZCbGUsTUFBS3pULE9BQ3JEeVQsTUFBS0ssY0FBZUMsRUFBQUEsTUFBQUEsYUFBV04sS0FDakMsQ0FBQyxPQUFBTyxFQUFBQSxTQUFBQSxTQUFBZ2MsVUFBQXpjLG1CQUFBVSxFQUFBQSxZQUFBQSxTQUFBK2IsVUFBQSxFQUFBdDhCLElBQUEsb0JBQUFDLE1BRUQsU0FBQXVnQixvQkFDRUMsS0FBS25VLE1BQU16QyxZQUFjNFcsS0FBS0MsY0FFMUJELEtBQUtuVSxNQUFNNHhCLE9BQ2J6ZCxLQUFLMGQsd0NBRVQsR0FBQyxDQUFBbitCLElBQUEsdUJBQUFDLE1BRUQsU0FBQTBnQix1QkFDRUYsS0FBS0csc0JBQ0xILEtBQUsyZCw0QkFDUCxHQUFDLENBQUFwK0IsSUFBQSxxQkFBQUMsTUFFRCxTQUFBNGdCLG1CQUFtQkMsVUFBV3VkLFdBQ3hCNWQsS0FBS25VLE1BQU16QyxhQUFlaVgsVUFBVWpYLFlBQVk0VyxLQUFLQyxlQUNwREQsS0FBS25VLE1BQU16QyxZQUFjaVgsVUFBVWpYLFlBQ3RDNFcsS0FBS0csc0JBRVAsSUFBQXNILGFBQXFEekgsS0FBS25VLE1BQWxEdUgsT0FBTXFVLGFBQU5yVSxPQUFRcXFCLE1BQUtoVyxhQUFMZ1csTUFBTy8yQixVQUFTK2dCLGFBQVQvZ0IsVUFBV3ZJLEtBQUlzcEIsYUFBSnRwQixLQUFNZ0osSUFBR3NnQixhQUFIdGdCLElBQUtFLElBQUdvZ0IsYUFBSHBnQixJQUN2Q3cyQixjQUFnQm4zQixVQUFVeWEsSUFBSWQsVUFBVWpOLFNBQVVBLFNBQVUsV0FFbEUsR0FBSWlOLFVBQVVvZCxRQUFVQSxPQUFTSSxlQUcvQixHQUZBN2QsS0FBSzJkLDZCQUVERixNQUFPLENBQ1QsSUFBTUssTUFDSEQsZUFDRG4zQixVQUFVbXdCLEdBQUd4VyxVQUFVbGlCLEtBQU1BLEtBQU0sWUFDbkN5L0IsVUFBVTlCLHdCQUEwQjliLEtBQUtQLE1BQU1xYyxzQkFFakQ5YixLQUFLMGQsdUNBQXVDSSxLQUM5QyxPQUVBTCxRQUNDLzJCLFVBQVV5YSxJQUFJZCxVQUFVbFosSUFBS0EsSUFBSyxZQUNqQ1QsVUFBVXlhLElBQUlkLFVBQVVoWixJQUFLQSxJQUFLLGFBRXBDMlksS0FBSytkLHVCQUVULEdBRUEsQ0FBQXgrQixJQUFBLHlDQUFBQyxNQUlBLFNBQUFrK0IseUNBQXFELElBQUFNLE9BQUEsS0FBZEYsS0FBSXQ5QixVQUFBQyxPQUFBLFFBQUFzcEIsSUFBQXZwQixVQUFBLElBQUFBLFVBQUEsR0FDcEN3ZixLQUFLK2IsbUJBQXNCK0IsTUFDOUI5ZCxLQUFLK2Qsd0JBR1AvZCxLQUFLaWUsc0JBQXdCcnFCLE9BQU82SCxZQUFXLFdBQzdDdWlCLE9BQUtqQyxtQkFBb0IsRUFDekJpQyxPQUFLRCx3QkFDTEMsT0FBS04sd0NBQ1AsR0FBRyxJQUNMLEdBQUMsQ0FBQW4rQixJQUFBLDZCQUFBQyxNQUVELFNBQUFtK0IsNkJBQ0UzZCxLQUFLK2IsbUJBQW9CLEVBQ3pCbm9CLE9BQU80SCxhQUFhd0UsS0FBS2llLHNCQUMzQixHQUFDLENBQUExK0IsSUFBQSx3QkFBQUMsTUFFRCxTQUFBdStCLHdCQUNFLElBQUFuVyxhQUE2QjVILEtBQUtuVSxNQUExQjFFLElBQUd5Z0IsYUFBSHpnQixJQUFLRSxJQUFHdWdCLGFBQUh2Z0IsSUFDUGlLLFNBQVU4QixFQURRd1UsYUFBTnhVLFVBR2xCLEdBQUk5QixTQUFXbkssS0FBT21LLFNBQVdqSyxJQUFLLENBQ3BDLElBQU0wa0IsSUFBTS9MLEtBQUs0RCxZQUFZdVUsdUJBQXVCN21CLFNBQ3BEME8sS0FBSytiLG1CQUFvQixFQUN6Qi9iLEtBQUt3QyxTQUFTLENBQUVzWixzQkFBdUIvUCxLQUN6QyxNQUNFL0wsS0FBSzJkLDRCQUVULEdBQUMsQ0FBQXArQixJQUFBLFNBQUFDLE1BRUQsU0FBQThnQixTQUNFLElBQUFpSSxhQVVJdkksS0FBS25VLE1BVFAxTixLQUFJb3FCLGFBQUpwcUIsS0FDQWtKLElBQUdraEIsYUFBSGxoQixJQUNBa0osSUFBR2dZLGFBQUhoWSxJQUNBa3RCLE1BQUtsVixhQUFMa1YsTUFDQXZDLFNBQVEzUyxhQUFSMlMsU0FDQXJWLFVBQVMwQyxhQUFUMUMsVUFDQW5mLFVBQVM2aEIsYUFBVDdoQixVQUFTdzNCLHFCQUFBM1YsYUFDVC9ILFFBQVdTLFFBQU9pZCxxQkFBUGpkLFFBQVlULFNBQU81WixFQUFBQSx3QkFBQUEsR0FBQXMzQixxQkFBQXIzQixXQUFBczNCLHNCQUFBNVYsYUFDOUJubEIsV0FBcUNnN0IsZUFBY0Qsc0JBQXJDRSxzQkFBMENqN0IsWUFBVXdELEVBQUFBLHdCQUFBQSxHQUFBdTNCLHNCQUFBRyxZQUdwRXRlLEtBQUs0RCxZQUFjNUQsS0FBSzRELFlBQVkwUyxPQUFPdFcsS0FBS25VLE9BRWhELElBQU0rWCxZQUFnQjVELEtBQWhCNEQsWUFDTmpELFlBQXFEWCxLQUFLUCxNQUFwREMsVUFBU2lCLFlBQVRqQixVQUFXcU0sSUFBR3BMLFlBQUhvTCxJQUFLdFIsT0FBTWtHLFlBQU5sRyxPQUVsQjhqQixZQUFjLENBQUVqM0IsTUFGbUJxWixZQUFUc1gsVUFFUTF3QixJQUZVb1osWUFBUHVYLFNBSXpDc0csU0FBNkJ2ZCxRQUFRNVosS0FBN0IzRixVQUFTODhCLFNBQVQ5OEIsVUFBV21NLE1BQUsyd0IsU0FBTDN3QixNQUViNHdCLDBCQUNKcjdCLFdBQVdzQixrQkFBb0JpM0IscUJBRWpDLE9BQ0V4d0IsRUFBQUEsWUFBQUEsTUFBQ3N6QiwwQkFBeUIsQ0FDeEIzZCxJQUFLZCxLQUFLTCxhQUNWeGhCLEtBQU1BLEtBQ04wUCxNQUFPQSxNQUNQbk0sV0FBVzRVLEVBQUFBLE9BQUFBLEdBQ1Q1VSxVQUNBLGVBQ0Esa0JBQ0ErN0IsT0FBUyxVQUNUQSxPQUFTLFlBQ1QvZCxXQUFhLHNCQUVma0UsWUFBYUEsWUFDYnNYLFNBQVVBLFNBQVN2NUIsU0FBQSxDQUVsQmlpQixZQUFZa1MsT0FBTzNuQixLQUFJLFNBQUM0bkIsSUFBS3psQixLQUFHLE9BQy9CN08sRUFBQUEsWUFBQUEsS0FBQ3M1QixjQUFhLENBRVpJLE1BQU9wRixJQUNQbUYsU0FBVUEsU0FDVjFhLFFBQVNBLFFBQ1RwZCxXQUFZQSxZQUpQa04sSUFLTCxLQUVKN08sRUFBQUEsWUFBQUEsS0FBQzI4QixlQUFjLENBQ2IxM0IsVUFBV0EsVUFDWHcwQixTQUFVQSxTQUNWclYsVUFBV0EsVUFDWHJGLFFBQVNBLFFBQ1RwZCxXQUFZQSxXQUNad2dCLFlBQWFBLFlBQVlqaUIsVUFFekJ3SixFQUFBQSxZQUFBQSxNQUFBLE9BQUt6SixXQUFXNFUsRUFBQUEsT0FBQUEsR0FBSyx1QkFBd0IvRixLQUFPLE9BQU81TyxTQUFBLENBQ3hEcWUsS0FBS2djLGFBQWEsQ0FDakJ2NUIsT0FBUXVkLEtBQUtuVSxNQUFNakQsaUJBQ25CcXpCLG1CQUFtQixJQUVwQmpjLEtBQUtnYyxhQUFhLENBQUV2NUIsT0FBUXVkLEtBQUtuVSxNQUFNcEosY0FJM0NpZCxZQUNDamUsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLHFCQUFxQm1NLE1BQU8sQ0FBRWtlLElBQUFBLElBQUt0UixPQUFBQSxRQUFTOVksVUFDekRGLEVBQUFBLFlBQUFBLEtBQUEsUUFBQUUsU0FBTytFLFVBQVUyUixPQUFPa21CLFlBQWEseUJBR3hDZCxPQUFTemQsS0FBSytiLG9CQUNidDZCLEVBQUFBLFlBQUFBLEtBQUEsT0FDRUMsVUFBVSw2QkFDVm1NLE1BQU8sQ0FBRWtlLElBQUssR0FBRmxoQixPQUFLbVYsS0FBS1AsTUFBTXFjLHNCQUFxQixVQUszRCxJQUFDLENBdEtZLENBQVMzcEIsTUFBQUEsV0E2YXhCMHBCLFVBQVV6VyxhQUFlLENBQ3ZCc1osbUJBQW1CLEVBQ25CcDVCLFVBQVcsR0FDWnUyQixVQUFBL3lCLGFBQUEsdTBHQUVELDRCQUF3QixvQkFBQUMsMEJBQUFBLHdCQUFBLHFCQUFBQyxLQUFBLFlBQUFDLFdBQUE0eUIsVUFBQS95QixhQUFBSSxLQUFBLHFCQzNheEIsSUFBTXRHLFdBQWEsU0FBYkEsV0FBVXNILE9BV1YsSUFWSi9DLElBQUcrQyxNQUFIL0MsSUFDQUUsSUFBRzZDLE1BQUg3QyxJQUNBL0IsVUFBUzRFLE1BQVQ1RSxVQUNBM0MsS0FBSXVILE1BQUp2SCxLQUNBK0QsVUFBU3dELE1BQVR4RCxVQUNBME0sT0FBTWxKLE1BQU5rSixPQUNBOG5CLFNBQVFoeEIsTUFBUmd4QixTQUNBOTNCLFdBQVU4RyxNQUFWOUcsV0FDQW9kLFFBQU90VyxNQUFQc1csUUFDQW1lLFVBQVN6MEIsTUFBVHkwQixVQUUyQkMsa0JBQXNCeDdCLFdBQXpDRyxrQkFDUnFLLFVBQXVCMUMsRUFBQUEsTUFBQUEsVUFDckIsa0JBeEJKLFNBQVMyekIsYUFBWXI0QixNQUEwQixJQUF2QlcsSUFBR1gsS0FBSFcsSUFBS0UsSUFBR2IsS0FBSGEsSUFBS1gsVUFBU0YsS0FBVEUsVUFDaEMsT0FBSUEsVUFBVW80QixrQkFBa0IzM0IsT0FBU1QsVUFBVW80QixrQkFBa0J6M0IsS0FDNUQsQ0FDTEMsTUFBT1osVUFBVXNCLElBQUliLEtBQU0sRUFBRyxPQUM5QkksSUFBS2IsVUFBVXNCLElBQUlYLEtBQU0sRUFBRyxRQUd6QixDQUFFQyxNQUFPSCxJQUFLSSxJQUFLRixJQUM1QixDQWdCVXczQixDQUFhLENBQUUxM0IsSUFBQUEsSUFBS0UsSUFBQUEsSUFBS1gsVUFBQUEsV0FBWSxHQUUzQyxDQUFDUyxlQUFHLEVBQUhBLElBQUs0M0IsY0FBZTEzQixlQUFHLEVBQUhBLElBQUswM0IsY0FBZXI0QixZQUhuQ1ksTUFBS3NHLFNBQUx0RyxNQUFPQyxJQUFHcUcsU0FBSHJHLElBS2ZtQyxXQUFzQ0MsRUFBQUEsTUFBQUEsVUFDcEM4YixlQUFlLENBQ2J0ZSxJQUFLRyxNQUNMRCxJQUFLRSxJQUNMakMsVUFBQUEsVUFDQTNDLEtBQUFBLEtBQ0ErRCxVQUFBQSxhQUVIa0QsWUFBQUMsRUFBQUEsY0FBQUEsR0FBQUgsVUFBQSxHQVJNa2EsWUFBV2hhLFdBQUEsR0FBRW8xQixlQUFjcDFCLFdBQUEsSUFVbEN5SixFQUFBQSxNQUFBQSxZQUFVLFdBQ0p1USxhQUNGb2IsZUFDRXBiLFlBQVkwUyxPQUFPLENBQ2pCbnZCLElBQUtHLE1BQ0xELElBQUtFLElBQ0xqQyxVQUFBQSxVQUNBM0MsS0FBQUEsS0FDQStELFVBQUFBLFlBUVIsR0FBRyxDQUFDWSxpQkFBSyxFQUFMQSxNQUFPeTNCLGNBQWV4M0IsZUFBRyxFQUFIQSxJQUFLdzNCLGNBQWV6NUIsVUFBVzNDLE9BRXpELElBQU1zNEIsWUFBYWh4QixFQUFBQSxNQUFBQSxjQUNqQixTQUFDekssTUFBTzhRLEtBQ04sR0FBSUEsSUFBSyxPQUFPLEtBRWhCLElBQU1tdEIsTUFBUTdaLFlBQVkyUyxjQUFjbmpCLFNBQVU5QyxLQUNsRCxPQUNFN08sRUFBQUEsWUFBQUEsS0FBQSxRQUFNQyxXQUFXNFUsRUFBQUEsT0FBQUEsR0FBSyxZQUFhbW5CLE9BQVMsV0FBVzk3QixTQUNwRCtFLFVBQVUyUixPQUFPN1ksTUFBTyxxQkFHL0IsR0FDQSxDQUFDb2tCLFlBQWFsZCxVQUFXME0sU0FHM0IsT0FDRTNSLEVBQUFBLFlBQUFBLEtBQUNtOUIsa0JBQWlCLENBQUNoYixZQUFhQSxZQUFZamlCLFVBQzFDRixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsa0NBQWtDb2YsSUFBSzZkLFVBQVVoOUIsU0FDN0RpaUIsWUFBWWtTLE9BQU8zbkIsS0FBSSxTQUFDNG5CLElBQUt6bEIsS0FDNUIsT0FDRTdPLEVBQUFBLFlBQUFBLEtBQUNzNUIsY0FBYSxDQUVaSSxNQUFPcEYsSUFDUG1GLFNBQVVBLFNBQ1Y5M0IsV0FBWUEsV0FDWjYzQixXQUFZQSxXQUNaemEsUUFBU0EsU0FMSmxRLElBUVgsT0FJUixFQTlFTTFOLFdBQVVaLFlBQUcsYUE4Rm5CLG1CQUFlbVEsTUFBQUEsWUFBaUIsU0FBQ3RHLE1BQU9pVixLQUFHLE9BQ3pDcmYsRUFBQUEsWUFBQUEsS0FBQ21CLFdBQVVoRSxPQUFBbUQsT0FBQSxDQUFDNDhCLFVBQVc3ZCxLQUFTalYsT0FBUyxJLGlNQ25IckNvekIsZUFBaUIsU0FBakJBLGVBQWN6NEIsTUFBa0IsSUFBWmlRLE1BQUtqUSxLQUFMaVEsTUFDeEIsT0FBT2hWLEVBQUFBLFlBQUFBLEtBQUMwUSxNQUFBQSxTQUFjLENBQUF4USxTQUFFOFUsT0FDMUIsRUFGTXdvQixlQUFjajlCLFlBQUcsaUJBQUhpOUIsZUFBQW4yQixhQUFHLENBQUgseU9BVXBCLHNDQUE2QixvQkFBQUMsMEJBQUFBLHdCQUFBLDBCQUFBQyxLQUFBLGlCQUFBQyxXQUFBZzJCLGVBQUFuMkIsYUFBQUksS0FBQSwwQkNMVyxJQUVsQ2cyQixlQUFjLFNBQUE5ZixrQkFBQSxTQUFBOGYsaUJBQUEsSUFBQTVmLE9BQUFDLEVBQUFBLGVBQUFBLFNBQUEsS0FBQTJmLGdCQUFBLFFBQUFqWSxLQUFBem1CLFVBQUFDLE9BQUFvQixLQUFBLElBQUEyTCxNQUFBeVosTUFBQUMsS0FBQSxFQUFBQSxLQUFBRCxLQUFBQyxPQUFBcmxCLEtBQUFxbEIsTUFBQTFtQixVQUFBMG1CLE1Ba0dqQixPQWxHaUI1SCxPQUFBRSxFQUFBQSxVQUFBQSxTQUFBLEtBQUEwZixlQUFBLEdBQUFyMEIsT0FBQWhKLFFBQ2xCczlCLGtCQUFvQixTQUFDaGhDLEtBQU1pWSxLQUFNNk8sR0FDL0JBLEVBQUVDLGtCQUNGdkMsRUFBQUEsUUFBQUEsSUFBT3JELE1BQUt6VCxNQUFNaVEsWUFBYSxDQUFDM2QsS0FBTWlZLE1BQ3hDLEVBQUNrSixNQWdERDhmLFVBQVksU0FBQ2xFLFVBQ1gsSUFBQTNhLFlBV0lqQixNQUFLelQsTUFWUHBKLE9BQU04ZCxZQUFOOWQsT0FDQThOLElBQUdnUSxZQUFIaFEsSUFDQW5ILFdBQVVtWCxZQUFWblgsV0FDQWdLLE9BQU1tTixZQUFObk4sT0FDQW5DLE1BQUtzUCxZQUFMdFAsTUFDQXVQLFFBQU9ELFlBQVBDLFFBQ0E5WixVQUFTNlosWUFBVDdaLFVBQ0FtZixVQUFTdEYsWUFBVHNGLFVBQ0F6aUIsV0FBVW1kLFlBQVZuZCxXQUNBNkIsVUFBU3NiLFlBQVR0YixVQUdJNkgsV0FBYStZLFVBQVUvWSxXQUFXb3VCLFVBQ3BDbUUsZ0JBQWtCbkUsU0FDbEJ6NEIsT0FBTzFELFFBQU8sU0FBQ29MLE9BQUssT0FBSzBiLFVBQVVxVixTQUFTL3dCLFNBQVcyQyxVQUFVLElBQ2pFckssT0FFSixPQUNFaEIsRUFBQUEsWUFBQUEsS0FBQ3VsQixlQUFBQSxFQUFjLENBQ2IzYyxVQUFRLEVBQ1JrRyxJQUFLQSxJQUNMNkMsT0FBUUEsT0FDUndTLFFBQVMsRUFFVEQsUUFBU3JHLE1BQUt6VCxNQUFNa0ssY0FBZ0IsRUFDcEM5RSxNQUFPQSxNQUNQeE8sT0FBUTQ4QixnQkFDUnZ5QixXQUFZQSxXQUNacEwsVUFBVSxrQkFDVjBILFdBQVlBLFdBQ1o4VSxTQUFVb0IsTUFBS3pULE1BQU1xUyxTQUNyQjlhLFdBQVlBLFdBQ1p5aUIsVUFBV0EsVUFDWHJGLFFBQVNBLFFBQ1Q5WixVQUFXQSxVQUNYK2hCLFNBQVVuSixNQUFLelQsTUFBTTdJLGNBQ3JCa2EsV0FBWW9DLE1BQUt6VCxNQUFNcVIsV0FDdkJ3TCxjQUFlcEosTUFBS3pULE1BQU02UCxtQkFDMUJpTixXQUFZckosTUFBS3pULE1BQU1vUSxnQkFDdkI1UyxhQUFjaVcsTUFBS3pULE1BQU14QyxhQUN6QnNSLG1CQUFvQjJFLE1BQUt6VCxNQUFNOE8sbUJBQy9CMVYsVUFBV0EsV0FHakIsRUFBQ3FhLEtBQUEsUUFBQU8sRUFBQUEsU0FBQUEsU0FBQXFmLGVBQUE5ZixtQkFBQVUsRUFBQUEsWUFBQUEsU0FBQW9mLGVBQUEsRUFBQTMvQixJQUFBLG9CQUFBQyxNQTVGRCxTQUFBOC9CLGtCQUFrQnJ1QixPQUFPLElBQUFtUSxPQUFBLEtBQ3ZCeUQsYUFNSTdFLEtBQUtuVSxNQUxQbkYsVUFBU21lLGFBQVRuZSxVQUNBeVQsaUJBQWdCMEssYUFBaEIxSyxpQkFDQS9HLE9BQU15UixhQUFOelIsT0FDVzZOLFFBQU80RCxhQUFsQnJFLFFBQVdTLFFBQU9zZSxzQkFBQTFhLGFBQ2xCemhCLFdBQWNvOEIsT0FBUUMscUJBQWUsSUFBQUYsc0JBQUczVSxPQUFBQSxFQUFNMlUsc0JBRzFDbndCLE1BQVFnRSxTQUVkLE9BQU9uQyxNQUFNOUMsS0FBSSxTQUFDaFEsS0FBTW9DLEdBQ3RCLElBQUkrVyxjQUFnQjZDLGlCQUFpQmhjLE1BQ2pDc1ksTUFBUS9QLFVBQVUyUixPQUFPbGEsS0FBTSxhQUVuQ3FnQyxTQUE2QnZkLFFBQVE5aUIsTUFBN0J1RCxVQUFTODhCLFNBQVQ5OEIsVUFBV21NLE1BQUsyd0IsU0FBTDN3QixNQUVmMnhCLFFBQ0YvOUIsRUFBQUEsWUFBQUEsS0FBQ2crQixnQkFBZSxDQUFDdGhDLEtBQU1BLEtBQU1zWSxNQUFPQSxNQUFPL1AsVUFBV0EsWUFHeEQsT0FDRWpGLEVBQUFBLFlBQUFBLEtBQUEsT0FFRW9NLE1BQU9BLE1BQ1BuTSxXQUFXNFUsRUFBQUEsT0FBQUEsR0FDVCxhQUNBNVUsVUFDQWdGLFVBQVV3YSxXQUFXL2lCLEtBQU1pUixRQUFVLGFBQ3JDek4sU0FFRDJWLGVBQ0M3VixFQUFBQSxZQUFBQSxLQUFBLFVBQ0V5RixLQUFLLFNBQ0x4RixVQUFVLGtCQUNWNlUsUUFBUyxTQUFBQSxRQUFDME8sR0FBQyxPQUFLN0QsT0FBSytkLGtCQUFrQmhoQyxLQUFNbVosY0FBZTJOLEVBQUUsRUFBQ3RqQixTQUU5RDY5QixVQUdILzlCLEVBQUFBLFlBQUFBLEtBQUEsUUFBQUUsU0FBTzY5QixVQWpCSmovQixFQXFCWCxHQUNGLEdBQUMsQ0FBQWhCLElBQUEsU0FBQUMsTUFpREQsU0FBQThnQixTQUFTLElBQUEwZCxPQUFBLEtBQ1B2VyxhQW1CSXpILEtBQUtuVSxNQWxCUHFFLE1BQUt1WCxhQUFMdlgsTUFDQUssSUFBR2tYLGFBQUhsWCxJQUNBak0sVUFBU21qQixhQUFUbmpCLFVBQ0EyTSxNQUFLd1csYUFBTHhXLE1BQ0F4TyxPQUFNZ2xCLGFBQU5obEIsT0FDQTJRLE9BQU1xVSxhQUFOclUsT0FDQXlTLFVBQVM0QixhQUFUNUIsVUFDQXpjLFdBQVVxZSxhQUFWcmUsV0FDQWhHLFdBQVVxa0IsYUFBVnJrQixXQUNBb2QsUUFBT2lILGFBQVBqSCxRQUNBa2YsVUFBU2pZLGFBQVRpWSxVQUNBaDVCLFVBQVMrZ0IsYUFBVC9nQixVQUNBaTVCLGNBQWFsWSxhQUFia1ksY0FBYUMsc0JBQUFuWSxhQUNicmtCLFdBQ29CeThCLGlCQUFnQkQsc0JBQWxDdjhCLGlCQUFnQnk4Qix1QkFBQUYsc0JBQ2hCRyxlQUFnQkMsNkJBQXVCLElBQUFGLHVCQUFHYixtQkFBY2EsdUJBRTFENzZCLFVBQVN3aUIsYUFBVHhpQixVQUdFNEksTUFBUSxDQUFDLEVBQ1Q4eEIsZ0JBQ0Y5eEIsTUFBTTBDLElBQU0sYUFBZSxlQUFpQixHQUFIMUYsUUFBTW8xQixFQUFBQSxjQUFBQSxLQUFrQixFQUFDLE9BR3BFLElBQU1DLGNBQWdCNTdCLFVBQVU2N0IsWUFBWTE5QixRQUU1QyxPQUNFMEksRUFBQUEsWUFBQUEsTUFBQSxPQUNFMEMsTUFBT0EsTUFDUGlULElBQUs0ZSxVQUNMaCtCLFdBQVc0VSxFQUFBQSxPQUFBQSxHQUFLLGtCQUFtQnFwQixlQUFpQixtQkFBbUJoK0IsU0FBQSxFQUV2RUYsRUFBQUEsWUFBQUEsS0FBQSxPQUNFQyxVQUFVLG1DQUNWbU0sTUFBTyxDQUFFcUMsTUFBQUEsTUFBTzJjLFNBQVUzYyxNQUFPeWEsU0FBVXphLE9BQVF2TyxTQUVsRGsrQixtQkFBb0JwK0IsRUFBQUEsWUFBQUEsS0FBQ28rQixpQkFBZ0IsTUFHdkN2N0IsVUFBVTZKLEtBQUksU0FBQTNILEtBQWlCOEosS0FBRyxJQUFBcEcsT0FBQUwsRUFBQUEsY0FBQUEsR0FBQXJELEtBQUEsR0FBbEIrQixHQUFFMkIsTUFBQSxHQUFFZ3hCLFNBQVFoeEIsTUFBQSxVQUMzQmlCLEVBQUFBLFlBQUFBLE1BQUEsT0FBS3pKLFVBQVUsMEJBQXlCQyxTQUFBLENBQ3JDdTVCLFdBQ0N6NUIsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFVLDJCQUEwQkMsVUFDdkNGLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxhQUFZQyxVQUN6QkYsRUFBQUEsWUFBQUEsS0FBQ3UrQix3QkFBdUIsQ0FDdEJqZixNQUFPelEsSUFDUG1HLE1BQU9vUCxVQUFVN1ksY0FBY2t1QixVQUMvQkEsU0FBVUEsY0FFUixZQUFBcndCLE9BUG1EeUYsT0FVN0Q3TyxFQUFBQSxZQUFBQSxLQUFBLE9BQ0VDLFVBQVMsK0JBQUFtSixPQUNQb0csTUFBTXhRLFFBQVUsRUFBSSxtQ0FBcUMsSUFDeERrQixTQUVGcThCLE9BQUtzQixrQkFBa0JydUIsVUFFMUJ4UCxFQUFBQSxZQUFBQSxLQUFDdWxCLGVBQUFBLEVBQWMsQ0FDYjNjLFVBQVEsRUFDUmtHLElBQUtBLElBQ0w2QyxPQUFRQSxPQUNSd1MsUUFBUyxFQUVURCxRQUFTcVksT0FBS255QixNQUFNa0ssY0FBZ0IsRUFDcEM5RSxNQUFPQSxNQUNQeE8sT0FBUXk5QixjQUFjMUgsSUFBSWp3QixLQUFPLEdBQ2pDdUUsV0FBWW91QixVQUFZM3lCLEdBQ3hCN0csVUFBVSxrQkFDVjBILFdBQVlBLFdBQ1o4VSxTQUFVOGYsT0FBS255QixNQUFNcVMsU0FDckI5YSxXQUFZQSxXQUNaeWlCLFVBQVdBLFVBQ1hyRixRQUFTQSxRQUNUOVosVUFBV0EsVUFDWCtoQixTQUFVdVYsT0FBS255QixNQUFNN0ksY0FDckJrYSxXQUFZOGdCLE9BQUtueUIsTUFBTXFSLFdBQ3ZCd0wsY0FBZXNWLE9BQUtueUIsTUFBTTZQLG1CQUMxQnNPLFVBQVdnVSxPQUFLbnlCLE1BQU1vUSxnQkFDdEI1UyxhQUFjMjBCLE9BQUtueUIsTUFBTXhDLGFBQ3pCc1IsbUJBQW9CcWpCLE9BQUtueUIsTUFBTThPLG1CQUMvQjFWLFVBQVdBLGNBMUMrQnNELElBQU0rSCxJQTRDOUMsTUFJZCxJQUFDLENBL0xpQixDQUFTNkIsTUFBQUEsV0FBZStzQixlQUFBcDJCLGFBQUEseTVEQWtPNUMsc0NBQTZCLG9CQUFBQywwQkFBQUEsd0JBQUEsMEJBQUFDLEtBQUEsaUJBQUFDLFdBQUFpMkIsZUFBQXAyQixhQUFBSSxLQUFBLDBCLDBVQzVPaEJrM0IsTSwwWEFBTyxDQUFDLEdDaUJ5QyxJQUV6Q2x2QixTQUFRLFNBQUE4cEIsWUFDM0IsU0FBQTlwQixTQUFZckYsT0FBTyxJQUFBeVQsTUFTVyxPQVRYQyxFQUFBQSxlQUFBQSxTQUFBLEtBQUFyTyxXQUNqQm9PLE9BQUFFLEVBQUFBLFVBQUFBLFNBQUEsS0FBQXRPLFNBQUEsQ0FBTXJGLFNBMkJSdzBCLGFBQWUsU0FBQ3BiLEdBQ1YzRixNQUFLb2dCLFVBQVVwdUIsVUFDakJnTyxNQUFLb2dCLFVBQVVwdUIsUUFBUThqQixXQUFhblEsRUFBRTNrQixPQUFPODBCLFdBRWpELEVBQUM5VixNQUVEZ2hCLGFBQWUsV0FDYkMsZUFBQUEsRUFBc0JqaEIsTUFBS2toQixXQUMzQmxoQixNQUFLa2hCLFVBQVlELGVBQUFBLEVBQXVCamhCLE1BQUttaEIsY0FDL0MsRUFBQ25oQixNQWdCRGlPLG9CQUFzQixXQUNwQmpPLE1BQUtvaEIsaUJBQWdCLFFBQUF6WixLQUFBem1CLFVBQUFDLE9BREdvQixLQUFJLElBQUEyTCxNQUFBeVosTUFBQUMsS0FBQSxFQUFBQSxLQUFBRCxLQUFBQyxPQUFKcmxCLEtBQUlxbEIsTUFBQTFtQixVQUFBMG1CLE9BRTVCdkUsRUFBQUEsUUFBQUEsSUFBT3JELE1BQUt6VCxNQUFNb1EsZ0JBQWlCcGEsS0FDckMsRUFBQ3lkLE1BRUR4TCxrQkFBb0IsV0FFbEJ3TCxNQUFLb2hCLGlCQUFnQixRQUFBeEQsTUFBQTE4QixVQUFBQyxPQUZDb0IsS0FBSSxJQUFBMkwsTUFBQTB2QixPQUFBQyxNQUFBLEVBQUFBLE1BQUFELE1BQUFDLFFBQUp0N0IsS0FBSXM3QixPQUFBMzhCLFVBQUEyOEIsUUFHMUJ4YSxFQUFBQSxRQUFBQSxJQUFPckQsTUFBS3pULE1BQU03SSxjQUFlbkIsS0FDbkMsRUFBQ3lkLE1BRURnTyx1QkFBeUIsV0FDdkJoTyxNQUFLb2hCLGlCQUFnQixRQUFBdEQsTUFBQTU4QixVQUFBQyxPQURNb0IsS0FBSSxJQUFBMkwsTUFBQTR2QixPQUFBQyxNQUFBLEVBQUFBLE1BQUFELE1BQUFDLFFBQUp4N0IsS0FBSXc3QixPQUFBNzhCLFVBQUE2OEIsUUFFL0IxYSxFQUFBQSxRQUFBQSxJQUFPckQsTUFBS3pULE1BQU02UCxtQkFBb0I3WixLQUN4QyxFQUFDeWQsTUFFRDhILGVBQWlCLFNBQUMza0IsT0FBUXRFLEtBQU1rcEIsS0FBTWhFLEtBQU0vaUIsUUFDMUMsSUFBQWlnQixZQU1JakIsTUFBS3pULE1BTFAvSSxNQUFLeWQsWUFBTHpkLE1BQ0FnWixZQUFXeUUsWUFBWHpFLFlBQ0FvQixXQUFVcUQsWUFBVnJELFdBQ0EvQyxpQkFBZ0JvRyxZQUFoQnBHLGlCQUNBd21CLG9CQUFtQnBnQixZQUFuQm9nQixvQkFJRixHQUZBcmhCLE1BQUtvaEIsaUJBRUQ1OUIsTUFBTyxDQUNULElBQUlnb0IsVUFBV2MsRUFBQUEsYUFBQUEsR0FBWXZFLEtBQU0vSCxNQUFLSyxhQUFhck8sU0FFbkRnTyxNQUFLa0QsU0FBUyxDQUNaNkssUUFBUyxDQUNQbHZCLEtBQUFBLEtBQ0FzRSxPQUFBQSxPQUNBcW9CLFNBQVFsc0IsT0FBQW1ELE9BQUEsR0FBTytvQixTQUFVLENBQUE1YSxNQUFPLFVBQ2hDNVAsT0FBQUEsU0FHTixNQUFXcWdDLHNCQUNUaGUsRUFBQUEsUUFBQUEsSUFBTzdHLFlBQWEsQ0FBQzNkLEtBQU1nYyxpQkFBaUJoYyxPQUFTZ0YsVUFBQUEsRUFBTWIsT0FHN0RxZ0IsRUFBQUEsUUFBQUEsSUFBT3pGLFdBQVksQ0FBQ3phLE9BQVF0RSxLQUFNa2xCLE1BQ3BDLEVBQUMvRCxNQUVEc2hCLHVCQUF5QixTQUFDamQsTUFBTzdHLFVBQy9CLElBQVF6VCxhQUFpQmlXLE1BQUt6VCxNQUF0QnhDLGFBRUYvQixNQUFRLElBQUk5RSxLQUFLbWhCLE1BQU0sSUFDdkJwYyxJQUFNLElBQUkvRSxLQUFLbWhCLE1BQU1BLE1BQU1sakIsT0FBUyxJQUMxQzhHLElBQUl5UCxRQUFRMk0sTUFBTUEsTUFBTWxqQixPQUFTLEdBQUc4VCxVQUFZLElBRWhEb08sRUFBQUEsUUFBQUEsSUFBT3RaLGFBQWMsQ0FDbkJzYSxNQUFBQSxNQUNBcmMsTUFBQUEsTUFDQUMsSUFBQUEsSUFDQXRFLE9BQVE2WixTQUFTN1osT0FDakI2SixXQUFZZ1EsU0FBU2hRLFlBRXpCLEVBQUN3UyxNQW9ORG1PLGVBQWlCLFdBQ2ZuTyxNQUFLa0QsU0FBUyxDQUNaNkssUUFBUyxNQUViLEVBQUMvTixNQStDRG1oQixjQUFnQixXQUNkLElBQUluaEIsTUFBS3VoQixrQkFBVCxDQUVBLElBQU12YyxRQUFVaEYsTUFBS3doQixXQUFXeHZCLFFBRWhDLEdBQUtnVCxlQUFBQSxRQUFTeWMsYUFBZCxDQUNBLElBQUlwQixjQUFnQnJiLFFBQVF5YyxhQUFlemMsUUFBUTBjLGFBRS9DMWhCLE1BQUtHLE1BQU1rZ0IsZ0JBQWtCQSxnQkFDL0JyZ0IsTUFBS3VoQixtQkFBb0IsRUFDekJ2aEIsTUFBS2tELFNBQVMsQ0FBRW1kLGNBQUFBLGdCQUFpQixXQUMvQnJnQixNQUFLdWhCLG1CQUFvQixDQUMzQixJQVBnQyxDQUpBLENBYXBDLEVBQUN2aEIsTUFFRDJoQixtQkFBb0J2YixFQUFBQSxnQkFBQUEsSUFBUSxTQUFDcGhCLFVBQVd1aEIsV0FBUyxPRHhacEMsU0FBUy9ILFVBQVV4WixVQUFXdWhCLFdBQzNDLE1BQU8sQ0FDTDFYLElBQUcsU0FBQUEsSUFBQ3NpQixJQUNGLE9BQUtuc0IsVUFDRUEsVUFBVTZKLEtBQUksU0FBQytzQixTQUFVNXFCLEtBQUcsT0FDakNtZ0IsR0FBRyxDQUFDNUssVUFBVS9ZLFdBQVdvdUIsVUFBV0EsVUFBVzVxQixJQUFJLElBRjlCLENBQUNtZ0IsR0FBRyxDQUFDMlAsS0FBTSxNQUFPLEdBSTNDLEVBRUFELFlBQVcsU0FBQUEsWUFBQzE5QixRQUNWLElBQU15K0IsaUJBQW1CLElBQUlDLElBRTdCLE9BQUs3OEIsV0FNTDdCLE9BQU81QyxTQUFRLFNBQUNzSyxPQUNkLElBQU01QixHQUFLc2QsVUFBVXFWLFNBQVMvd0IsUUFBVWkyQixLQUN4QyxHQUFJNXlCLE1BQU1DLFFBQVFsRixJQUNoQkEsR0FBRzFJLFNBQVEsU0FBQ3VoQyxNQUNWLElBQUkvOEIsZUFBaUI2OEIsaUJBQWlCMUksSUFBSTRJLE9BQVMsR0FDbkQvOEIsZUFBZWxGLEtBQUtnTCxPQUNwQisyQixpQkFBaUJHLElBQUlELEtBQU0vOEIsZUFDN0IsUUFDSyxDQUNMLElBQUlBLGVBQWlCNjhCLGlCQUFpQjFJLElBQUlqd0IsS0FBTyxHQUNqRGxFLGVBQWVsRixLQUFLZ0wsT0FDcEIrMkIsaUJBQWlCRyxJQUFJOTRCLEdBQUlsRSxlQUMzQixDQUNGLElBQ082OEIsbUJBbEJMQSxpQkFBaUJHLElBQUlqQixLQUFNMzlCLFFBQ3BCeStCLGlCQWtCWCxFQUVKLENDc1hJcGpCLENBQVV4WixVQUFXdWhCLFVBQVUsSUFwWS9CdkcsTUFBS0csTUFBUSxDQUFFNmhCLGlCQUFhdlgsRUFBVzRWLGNBQWUsTUFFdERyZ0IsTUFBS29nQixVQUFZdnRCLE1BQUFBLFlBQ2pCbU4sTUFBS3doQixXQUFhM3VCLE1BQUFBLFlBQ2xCbU4sTUFBS0ssYUFBZXhOLE1BQUFBLFlBQ3BCbU4sTUFBS2lpQixhQUFlLEtBQ3BCamlCLE1BQUtxZixXQUFZL2UsRUFBQUEsTUFBQUEsYUFBV04sS0FDOUIsQ0FBQyxPQUFBTyxFQUFBQSxTQUFBQSxTQUFBM08sU0FBQThwQixhQUFBbGIsRUFBQUEsWUFBQUEsU0FBQTVPLFNBQUEsRUFBQTNSLElBQUEsMEJBQUFDLE1BRUQsU0FBQWdpQywwQkFFRSxPQURBeGhCLEtBQUt5Z0IsZ0JBQ0UsSUFDVCxHQUFDLENBQUFsaEMsSUFBQSxvQkFBQUMsTUFFRCxTQUFBdWdCLG9CQUMwQixNQUFwQkMsS0FBS25VLE1BQU1xRSxPQUNiOFAsS0FBS3loQixnQkFHUHpoQixLQUFLMGhCLGtCQUNMMWhCLEtBQUsyaEIsY0FFTC90QixPQUFPNFgsaUJBQWlCLFNBQVV4TCxLQUFLc2dCLGFBQ3pDLEdBQUMsQ0FBQS9nQyxJQUFBLHVCQUFBQyxNQWFELFNBQUEwZ0IsdUJBQ0V0TSxPQUFPNlgsb0JBQW9CLFNBQVV6TCxLQUFLc2dCLGNBRTFDQyxlQUFBQSxFQUFzQnZnQixLQUFLd2dCLFdBRXZCeGdCLEtBQUs0aEIsb0NBQ1BodUIsT0FBT2l1QixxQkFBcUI3aEIsS0FBSzRoQixtQ0FFckMsR0FBQyxDQUFBcmlDLElBQUEscUJBQUFDLE1BRUQsU0FBQTRnQixxQkFDRUosS0FBSzJoQixhQUNQLEdBQUMsQ0FBQXBpQyxJQUFBLGVBQUFDLE1BOERELFNBQUF3OEIsYUFBYS9xQixNQUFPeE8sT0FBUW1HLGlCQUFrQm9xQixLQUFLLElBQUE1UixPQUFBLEtBQ2pEeUQsYUFDRTdFLEtBQUtuVSxNQUREMUUsSUFBRzBkLGFBQUgxZCxJQUFLRSxJQUFHd2QsYUFBSHhkLElBQUtqRSxXQUFVeWhCLGFBQVZ6aEIsV0FBWXlpQixVQUFTaEIsYUFBVGdCLFVBQVduZixVQUFTbWUsYUFBVG5lLFVBQVcrQixtQkFBa0JvYyxhQUFsQnBjLG1CQUc1Q25FLFVBQVkwYixLQUFLaWhCLGtCQUFrQmpoQixLQUFLblUsTUFBTXZILFVBQVd1aEIsV0FDekRxYSxjQUFnQjU3QixVQUFVNjdCLFlBQVkxOUIsUUFDdENxL0Isd0JBQTBCeDlCLFVBQVU2N0IsWUFBWXYzQixrQkFFdEQsT0FBT3RFLFVBQVU2SixLQUFJLFNBQUEzSCxLQUFpQmpHLEdBQUMsSUFBQTJKLE9BQUFMLEVBQUFBLGNBQUFBLEdBQUFyRCxLQUFBLEdBQWhCK0IsR0FBRTJCLE1BQUEsR0FBRWd4QixTQUFRaHhCLE1BQUEsVUFDakMrRyxNQUFNOUMsS0FBSSxTQUFDaFEsS0FBTTRqQyxJQUNmLElBQUlDLFlBQWM5QixjQUFjMUgsSUFBSWp3QixLQUFPLElBQUl4SixRQUFPLFNBQUNvTCxPQUFLLE9BQzFEekQsVUFBVWd3QixRQUNSdjRCLEtBQ0EwbkIsVUFBVXZlLE1BQU02QyxPQUNoQjBiLFVBQVV0ZSxJQUFJNEMsT0FDZCxNQUNELElBR0M4M0Isc0JBQ0ZILHdCQUF3QnRKLElBQUlqd0IsS0FBTyxJQUNuQ3hKLFFBQU8sU0FBQ29MLE9BQUssT0FDYnpELFVBQVVnd0IsUUFDUnY0QixLQUNBMG5CLFVBQVV2ZSxNQUFNNkMsT0FDaEIwYixVQUFVdGUsSUFBSTRDLE9BQ2QsTUFDRCxJQUdILE9BQ0UrM0IsRUFBQUEsTUFBQUEsZUFBQ3JHLGNBQVNqOUIsT0FBQW1ELE9BQUEsR0FDSnFmLE9BQUt2VixNQUFLLENBQ2RuRixVQUFXQSxVQUNYUyxJQUFLVCxVQUFVOHdCLE1BQU1yNUIsS0FBTWdKLEtBQzNCRSxJQUFLWCxVQUFVOHdCLE1BQU1yNUIsS0FBTWtKLEtBQzNCNnpCLFNBQVVBLFVBQVkzeUIsR0FDdEJuRixXQUFZQSxXQUNacTZCLE1BQU8vMkIsVUFBVXdhLFdBQVcvaUIsS0FBTTYwQixLQUNsQ3p6QixJQUFLZ0IsRUFBSSxJQUFNd2hDLEdBQ2Y1akMsS0FBTUEsS0FDTnNFLE9BQVF1L0IsV0FDUnA1QixpQkFBa0JxNUIscUJBQ2xCeDVCLG1CQUFvQkEscUJBRzFCLEdBQUUsR0FFTixHQUFDLENBQUFsSixJQUFBLFNBQUFDLE1BRUQsU0FBQThnQixTQUFTLElBQUE2aEIsc0JBQ1AxYSxhQWtCSXpILEtBQUtuVSxNQWpCUHBKLE9BQU1nbEIsYUFBTmhsQixPQUNBbUcsaUJBQWdCNmUsYUFBaEI3ZSxpQkFDQXFJLE1BQUt3VyxhQUFMeFcsTUFDQWYsTUFBS3VYLGFBQUx2WCxNQUNBSyxJQUFHa1gsYUFBSGxYLElBQ0EyTixTQUFRdUosYUFBUnZKLFNBQ0E5SyxPQUFNcVUsYUFBTnJVLE9BQ0E5TyxVQUFTbWpCLGFBQVRuakIsVUFDQWxCLFdBQVVxa0IsYUFBVnJrQixXQUNBeWlCLFVBQVM0QixhQUFUNUIsVUFDQXJGLFFBQU9pSCxhQUFQakgsUUFDQTlaLFVBQVMrZ0IsYUFBVC9nQixVQUNBUyxJQUFHc2dCLGFBQUh0Z0IsSUFDQUUsSUFBR29nQixhQUFIcGdCLElBQ0E3QixrQkFBaUJpaUIsYUFBakJqaUIsa0JBQ0FtVixtQkFBa0I4TSxhQUFsQjlNLG1CQUNBMVYsVUFBU3dpQixhQUFUeGlCLFVBR0ZpTCxNQUFRQSxPQUFTOFAsS0FBS1AsTUFBTTZoQixZQUU1QixJQUFJaDZCLE1BQVEySixNQUFNLEdBQ2hCMUosSUFBTTBKLE1BQU1BLE1BQU14USxPQUFTLEdBRTdCdWYsS0FBSzJELE1BQVExUyxNQUFNeFEsT0FFbkIsSUFBSXFWLGFBQWUsR0FDakJzc0IsWUFBYyxHQUNkQyxzQkFBd0IsR0EyQjFCLE9BekJBNS9CLE9BQU81QyxTQUFRLFNBQUNzSyxPQUNkLElBQUl1c0IsRUFBQUEsWUFBQUEsSUFBUXZzQixNQUFPN0MsTUFBT0MsSUFBS3NlLFVBQVduZixXQUFZLENBQ3BELElBQUk0N0IsT0FBU3pjLFVBQVV2ZSxNQUFNNkMsT0FDM0JvNEIsS0FBTzFjLFVBQVV0ZSxJQUFJNEMsT0FHckIwYixVQUFVcmUsT0FBTzJDLFFBQ2pCekQsVUFBVTg3Qix1QkFBdUJGLE9BQVFDLFFBQ3ZDLzhCLG9CQUFzQmtCLFVBQVV3YSxXQUFXb2hCLE9BQVFDLE1BRXJEenNCLGFBQWEzVyxLQUFLZ0wsT0FFbEJpNEIsWUFBWWpqQyxLQUFLZ0wsTUFFckIsQ0FDRixJQUVBdkIsaUJBQWlCL0ksU0FBUSxTQUFDc0ssUUFDcEJ1c0IsRUFBQUEsWUFBQUEsSUFBUXZzQixNQUFPN0MsTUFBT0MsSUFBS3NlLFVBQVduZixZQUN4QzI3QixzQkFBc0JsakMsS0FBS2dMLE1BRS9CLElBRUEyTCxhQUFhcWtCLE1BQUssU0FBQzVVLEVBQUdDLEdBQUMsT0FBS2lkLEVBQUFBLFlBQUFBLElBQVdsZCxFQUFHQyxFQUFHSyxVQUFXbmYsVUFBVSxLQUdoRXlFLEVBQUFBLFlBQUFBLE1BQUEsT0FDRXpKLFdBQVc0VSxFQUFBQSxPQUFBQSxHQUNULGdCQUNBaFMsV0FBYSwyQkFFZndjLElBQUtkLEtBQUtMLGFBQWFoZSxTQUFBLEVBRXZCRixFQUFBQSxZQUFBQSxLQUFDeTlCLG1CQUFjLENBQ2JqdUIsTUFBT0EsTUFDUHhPLE9BQVFxVCxhQUNSNUYsTUFBT0EsTUFDUEssSUFBS0EsSUFDTDZDLE9BQVFBLE9BQ1IxTSxVQUFXQSxVQUNYd1gsU0FBVUEsU0FDVm5JLGNBQ0VpSyxLQUFLblUsTUFBTXVTLGNBQ1ArSyxJQUN3QixRQURoQmdaLHNCQUNSbmlCLEtBQUtuVSxNQUFNa0sscUJBQWEsSUFBQW9zQixzQkFBQUEsc0JBQUloWixJQUVsQzdrQixVQUFXMGIsS0FBS2loQixrQkFBa0IzOEIsVUFBV3VoQixXQUM3Q3pjLFdBQVk0VyxLQUFLblUsTUFBTXpDLFdBQ3ZCeWMsVUFBV0EsVUFDWHJGLFFBQVNBLFFBQ1RwZCxXQUFZQSxXQUNaczhCLFVBQVcxZixLQUFLMGYsVUFDaEJDLGNBQWUzZixLQUFLUCxNQUFNa2dCLGNBQzFCaGxCLG1CQUFvQkEsbUJBQ3BCdFIsYUFBYzJXLEtBQUs0Z0IsdUJBQ25CNTlCLGNBQWVnZCxLQUFLbE0sa0JBQ3BCb0osV0FBWThDLEtBQUtvSCxlQUNqQjFMLG1CQUFvQnNFLEtBQUtuVSxNQUFNNlAsbUJBQy9CTyxnQkFBaUIrRCxLQUFLblUsTUFBTW9RLGdCQUM1QkgsWUFBYWtFLEtBQUtuVSxNQUFNaVEsWUFDeEIzQixpQkFBa0I2RixLQUFLblUsTUFBTXNPLGlCQUM3QmxWLFVBQVdBLFlBRVorYSxLQUFLblUsTUFBTS9JLE9BQVNrZCxLQUFLMGlCLGlCQUMxQnYzQixFQUFBQSxZQUFBQSxNQUFBLE9BQ0UyVixJQUFLZCxLQUFLOGdCLFdBQ1ZwL0IsVUFBVSxtQkFDVmloQyxTQUFVM2lCLEtBQUtxZ0IsYUFBYTErQixTQUFBLEVBRTVCRixFQUFBQSxZQUFBQSxLQUFDbUIsZUFBVSxDQUNUekUsS0FBTW1KLE1BQ053WixJQUFLZCxLQUFLMmUsVUFDVmo0QixVQUFXQSxVQUNYUyxJQUFLVCxVQUFVOHdCLE1BQU1sd0IsTUFBT0gsS0FDNUJFLElBQUtYLFVBQVU4d0IsTUFBTWx3QixNQUFPRCxLQUM1QjFFLEtBQU1xZCxLQUFLblUsTUFBTWxKLEtBQ2pCeVEsT0FBUTRNLEtBQUtuVSxNQUFNdUgsT0FDbkI5TixVQUFXMGEsS0FBS25VLE1BQU12RyxVQUN0QmxDLFdBQVlBLFdBQ1oxQixVQUFVLGtCQUNWOGUsUUFBU0EsVUFFVlIsS0FBS2djLGFBQ0ovcUIsTUFDQW14QixZQUNBQyxzQkFDQWp2QixlQUtWLEdBQUMsQ0FBQTdULElBQUEsZ0JBQUFDLE1BRUQsU0FBQWtqQyxnQkFBZ0IsSUFBQUUsb0JBQUFqaUIsWUFBQXFkLE9BQUEsS0FDVjNRLFFBQTZCLFFBQXRCdVYsb0JBQWEsUUFBYmppQixZQUFHWCxLQUFLUCxhQUFLLElBQUFrQixpQkFBQSxFQUFWQSxZQUFZME0sZUFBTyxJQUFBdVYsb0JBQUFBLG9CQUFJLENBQUMsRUFDdENoYixhQVFJNUgsS0FBS25VLE1BUFBnYSxVQUFTK0IsYUFBVC9CLFVBQ0FuZixVQUFTa2hCLGFBQVRsaEIsVUFDQXRELFdBQVV3a0IsYUFBVnhrQixXQUNBb2QsUUFBT29ILGFBQVBwSCxRQUNBdEMsU0FBUTBKLGFBQVIxSixTQUNBWixZQUFXc0ssYUFBWHRLLFlBQ0EwTixnQkFBZXBELGFBQWZvRCxnQkFLRixPQUNFdnBCLEVBQUFBLFlBQUFBLEtBQUNzc0IsV0FBQUEsRUFBVSxDQUNUVixRQUFTQSxRQUNUeEgsVUFBV0EsVUFDWG5mLFVBQVdBLFVBQ1h0RCxXQUFZQSxXQUNab2QsUUFBU0EsUUFDVHRDLFNBQVVBLFNBQ1ZaLFlBQWFBLFlBQ2J3RCxJQUFLZCxLQUFLTCxhQUNWNE4sb0JBQXFCdk4sS0FBS3VOLG9CQUMxQnpaLGtCQUFtQmtNLEtBQUtsTSxrQkFDeEJ3Wix1QkFBd0J0TixLQUFLc04sdUJBQzdCdEMsZ0JBQWlCQSxnQkFDakJELE9BQVFzQyxRQUFRdkMsU0FDaEIyQyxlQUFnQnpOLEtBQUt5TixlQUNyQkQsT0FsQlcsU0FBVEEsU0FBTSxPQUFTd1EsT0FBS3hiLFNBQVMsQ0FBRTZLLFFBQVMsTUFBTyxHQXFCdkQsR0FBQyxDQUFBOXRCLElBQUEsaUJBQUFDLE1BUUQsU0FBQWtoQyxpQkFDRWxsQixhQUFhd0UsS0FBSzZpQixjQUNsQjdpQixLQUFLOGlCLGtCQUFvQixFQUMzQixHQUFDLENBQUF2akMsSUFBQSxnQkFBQUMsTUFFRCxTQUFBaWlDLGdCQUFnQixJQUFBc0IsT0FBQSxLQUNWL2lCLEtBQUs0aEIsb0NBQ1BodUIsT0FBT2l1QixxQkFBcUI3aEIsS0FBSzRoQixvQ0FFbkM1aEIsS0FBSzRoQixtQ0FBcUNodUIsT0FBT292Qix1QkFDL0MsV0FBTSxJQUFBQyxpQkFDRS95QixNQUFzQixRQUFkK3lCLGlCQUFBRixPQUFLcEUsaUJBQVMsSUFBQXNFLGtCQUFkQSxpQkFBZ0IzeEIsU0FDMUI0eEIsRUFBQUEsVUFBQUEsR0FBU0gsT0FBS3BFLFVBQVVydEIsY0FDeEJ5WSxFQUVBN1osT0FBUzZ5QixPQUFLdGpCLE1BQU02aEIsY0FBZ0JweEIsT0FDdEM2eUIsT0FBS3ZnQixTQUFTLENBQUU4ZSxZQUFhcHhCLE9BRWpDLEdBRUosR0FBQyxDQUFBM1EsSUFBQSxjQUFBQyxNQUVELFNBQUFtaUMsY0FFRSxHQUF5QixNQUFyQjNoQixLQUFLdWhCLGVBQXdELElBQWhDdmhCLEtBQUtuVSxNQUFNczNCLGlCQUEyQixDQUNyRSxJQUFNN2UsUUFBVXRFLEtBQUs4Z0IsV0FBV3h2QixRQUNoQ2dULFFBQVFnUixVQUFZaFIsUUFBUXljLGFBQWUvZ0IsS0FBS3VoQixhQUVoRHZoQixLQUFLdWhCLGFBQWUsSUFDdEIsQ0FDRixHQUFDLENBQUFoaUMsSUFBQSxrQkFBQUMsTUFFRCxTQUFBa2lDLGtCQUFvQyxJQUFwQjcxQixNQUFLckwsVUFBQUMsT0FBQSxRQUFBc3BCLElBQUF2cEIsVUFBQSxHQUFBQSxVQUFBLEdBQUd3ZixLQUFLblUsTUFDbkIxRSxJQUFzQzBFLE1BQXRDMUUsSUFBS0UsSUFBaUN3RSxNQUFqQ3hFLElBQUtxQixhQUE0Qm1ELE1BQTVCbkQsYUFBY2hDLFVBQWNtRixNQUFkbkYsVUFFMUIwOEIsV0FBYTE4QixVQUFVaWpCLEtBQzNCampCLFVBQVU4d0IsTUFBTTl1QixhQUFjdkIsS0FDOUJ1QixhQUNBLGdCQUVJMjZCLFlBQWMzOEIsVUFBVWlqQixLQUFLeGlCLElBQUtFLElBQUssZ0JBRTdDMlksS0FBS3VoQixhQUFlNkIsV0FBYUMsV0FDbkMsSUFBQyxDQXJYMEIsQ0FBUzNILE1BQUFBLFdBdWN0Q3hxQixTQUFTa1UsYUFBZSxDQUN0QnppQixLQUFNLEdBQ04yQyxVQUFXLEdBQ1o0TCxTQUFBcEksYUFBQSx1eElBQUFDLDBCQUFBQSx3QkFBQSxvQkFBQUMsS0FBQSxXQUFBQyxXQUFBaUksU0FBQXBJLGFBQUFJLEtBQUEsbUIseWxCQzFkRCxTQUFTbzZCLGlCQUFpQnJpQyxHQUN4QixNQUFvQixpQkFBTkEsRUFBaUJBLEVBQUlBLEVBQUksR0FDekMsQ0FHQSxTQUFTczdCLGNBQWMxd0IsT0FDckIsSUFDRWdDLE1BZUVoQyxNQWZGZ0MsTUFDQW5NLFVBY0VtSyxNQWRGbkssVUFDQXlJLE1BYUUwQixNQWJGMUIsTUFDQTBiLFVBWUVoYSxNQVpGZ2EsVUFDQXRWLElBV0UxRSxNQVhGMEUsSUFDQTJOLFNBVUVyUyxNQVZGcVMsU0FDQXpILE1BU0U1SyxNQVRGNEssTUFDQXFRLGVBUUVqYixNQVJGaWIsZUFDQUMsZUFPRWxiLE1BUEZrYixlQUNBdkcsUUFNRTNVLE1BTkYyVSxRQUNBakssUUFLRTFLLE1BTEYwSyxRQUNBbVMsY0FJRTdjLE1BSkY2YyxjQUNBdVQsa0JBR0Vwd0IsTUFIRm93QixrQkFDQXRULFdBRUU5YyxNQUZGOGMsV0FBVTRhLGtCQUVSMTNCLE1BREZ6SSxXQUFxQitRLE1BQUtvdkIsa0JBQVpwNUIsTUFBNEJtZixhQUFZaWEsa0JBQTFCeC9CLGFBRTFCM0MsTUFBUXlrQixVQUFVemtCLE1BQU0rSSxPQUN4QnNmLFFBQVU1RCxVQUFVNEQsUUFBUXRmLE9BQzVCNUMsSUFBTXNlLFVBQVV0ZSxJQUFJNEMsT0FDcEI3QyxNQUFRdWUsVUFBVXZlLE1BQU02QyxPQUV4QjBmLFVBQVlySixRQUFRc0osVUFBVTNmLE1BQU83QyxNQUFPQyxJQUFLMlcsVUFFL0NzbEIsTUFBUSxFQUNaL2hDLEVBQUFBLCtDQUFBQSxLQUFBLE9BQWFDLFVBQVUsa0JBQWlCQyxTQUNyQzhVLE9BRE0sTUFHVGhWLEVBQUFBLCtDQUFBQSxLQUFBLE9BQWFDLFVBQVUsb0JBQW1CQyxTQUN2Q3dTLE9BQVExUyxFQUFBQSwrQ0FBQUEsS0FBQzBTLE1BQUssQ0FBQ2hLLE1BQU9BLE1BQU8vSSxNQUFPQSxRQUFZQSxPQUQxQyxNQUtIcVosT0FBZ0M1TSxNQUFoQzRNLE9BQVFzUixJQUF3QmxlLE1BQXhCa2UsSUFBSzdiLE1BQW1CckMsTUFBbkJxQyxNQUFPNm9CLFFBQVlsckIsTUFBWmtyQixRQUV0QjBLLFdBQVU3a0MsT0FBQW1ELE9BQUEsR0FDWDhuQixVQUFVaGMsT0FBS3hPLEVBQUFBLHVFQUFBQSxHQUFBLENBQ2xCMHNCLElBQUt1WCxpQkFBaUJ2WCxLQUN0QnRSLE9BQVE2b0IsaUJBQWlCN29CLFFBQ3pCdkssTUFBT296QixpQkFBaUJwekIsUUFDdkJLLElBQU0sUUFBVSxPQUFTK3lCLGlCQUFpQnZLLFdBRzdDLE9BQ0V0M0IsRUFBQUEsK0NBQUFBLEtBQUM2bkIsYUFBWTFxQixPQUFBbUQsT0FBQSxDQUFDbUYsS0FBSyxRQUFXMkUsTUFBSyxDQUFBbEssVUFDakNGLEVBQUFBLCtDQUFBQSxLQUFBLE9BQ0V1bkIsS0FBSyxTQUNMMGEsU0FBVSxFQUNWbnRCLFFBQVNBLFFBQ1RtUyxjQUFlQSxjQUNmN2EsTUFBTzQxQixXQUNQelosVUFBV3JCLFdBQ1h2bkIsTUFDRXFvQixTQUNzQixpQkFBVmhULE1BQXFCQSxNQUFRLEtBQU8sSUFBTWdULGFBQ2xETSxFQUVOcm9CLFdBQVc0VSxFQUFBQSxrQ0FBQUEsR0FDVDJsQixrQkFBb0IsdUJBQXlCLFlBQzdDdjZCLFVBQ0Ftb0IsVUFBVW5vQixVQUNWLENBQ0UsZUFBZ0J3YyxTQUNoQiw4QkFBK0I0SSxlQUMvQiw0QkFBNkJDLGlCQUUvQnBsQixTQUVENmhDLFVBSVQsQ0F6RVNqSCxjQUFhdjZCLFlBQUEsZ0JBQUF1NkIsY0FBQXp6QixhQUFBLHdEQTJFdEIsb0NBQTRCLG9CQUFBQywwQkFBQUEsd0JBQUEseUJBQUFDLEtBQUEsZ0JBQUFDLFdBQUFzekIsY0FBQXp6QixhQUFBSSxLQUFBLHdCLG1zQ0NqRmZ5NkIsV0FBYXh4QixNQUFBQSxnQix1RUNJcEJtWCxhQUFZLFNBQUFsSyxrQkFBQSxTQUFBa0ssZUFBQSxJQUFBaEssT0FBQUMsRUFBQUEsZUFBQUEsU0FBQSxLQUFBK0osY0FBQSxRQUFBckMsS0FBQXptQixVQUFBQyxPQUFBb0IsS0FBQSxJQUFBMkwsTUFBQXlaLE1BQUFDLEtBQUEsRUFBQUEsS0FBQUQsS0FBQUMsT0FBQXJsQixLQUFBcWxCLE1BQUExbUIsVUFBQTBtQixNQStDZixPQS9DZTVILE9BQUFFLEVBQUFBLFVBQUFBLFNBQUEsS0FBQThKLGFBQUEsR0FBQXplLE9BQUFoSixRQWtCaEIraEMsZUFBaUIsU0FBQzNlLEdBQ0MsSUFBYkEsRUFBRWdOLFFBQ04zUyxNQUFLRCxRQUFRMk4sVUFBVTZXLGNBQWN2a0IsTUFBS3pULE1BQU0xQixNQUFPLFNBQVUsS0FDbkUsRUFBQ21WLE1BQ0R3a0IsaUJBQW1CLFNBQUM3ZSxHQUNELElBQWJBLEVBQUVnTixRQUNOM1MsTUFBS0QsUUFBUTJOLFVBQVU2VyxjQUFjdmtCLE1BQUt6VCxNQUFNMUIsTUFBTyxTQUFVLE9BQ25FLEVBQUNtVixNQUNEeWtCLGlCQUFtQixTQUFDOWUsR0FDRCxJQUFiQSxFQUFFZ04sUUFDTjNTLE1BQUtELFFBQVEyTixVQUFVNlcsY0FBY3ZrQixNQUFLelQsTUFBTTFCLE1BQU8sU0FBVSxPQUNuRSxFQUFDbVYsTUFDRDBrQixrQkFBb0IsU0FBQy9lLEdBQ0YsSUFBYkEsRUFBRWdOLFFBQ04zUyxNQUFLRCxRQUFRMk4sVUFBVTZXLGNBQWN2a0IsTUFBS3pULE1BQU0xQixNQUFPLFNBQVUsUUFDbkUsRUFBQ21WLE1BQ0Qya0Isb0JBQXNCLFNBQUNoZixHQUFNLElBQUFpZixzQkFDVixJQUFiamYsRUFBRWdOLFVBS2tCLFFBREppUyxzQkFBR2pmLEVBQUUza0IsT0FDdEI2akMsYUFBYSxnQkFBUSxJQUFBRCwyQkFBQSxFQUREQSxzQkFFbkJuc0IsU0FBUyw0QkFFTW5aLE9BQUFtRCxPQUFBLEdBQU91ZCxNQUFLelQsTUFBTTFCLE9BQ3JCd0QsZUFBaUIyUixNQUFLelQsTUFBTXF2QixTQUMxQzViLE1BQUtELFFBQVEyTixVQUFVNlcsY0FBY3ZrQixNQUFLelQsTUFBTTFCLE1BQU8sU0FFM0QsRUFBQ21WLEtBQUEsUUFBQU8sRUFBQUEsU0FBQUEsU0FBQXlKLGFBQUFsSyxtQkFBQVUsRUFBQUEsWUFBQUEsU0FBQXdKLGFBQUEsRUFBQS9wQixJQUFBLGVBQUFDLE1BRUQsU0FBQTRrQyxhQUFhcDBCLFdBQ1gsSUFBTXEwQixJQUFvQixPQUFkcjBCLFdBQW9DLFNBQWRBLFVBQXVCLEtBQU8sS0FDaEUsT0FDRXZPLEVBQUFBLFlBQUFBLEtBQUEsT0FDRUMsVUFBUyx5QkFBQW1KLE9BQTJCdzVCLElBQUcsV0FDdkNDLFlBQWF0a0IsS0FBSyxlQUFEblYsT0FBZ0JtRixZQUFhck8sVUFFOUNGLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBUyx5QkFBQW1KLE9BQTJCdzVCLElBQUcsWUFHbEQsR0FBQyxDQUFBOWtDLElBQUEsU0FBQUMsTUFFRCxTQUFBOGdCLFNBQ0UsSUFBQUMsWUFDRVAsS0FBS25VLE1BREMxQixNQUFLb1csWUFBTHBXLE1BQU9qRCxLQUFJcVosWUFBSnJaLEtBQU00ZixlQUFjdkcsWUFBZHVHLGVBQWdCQyxlQUFjeEcsWUFBZHdHLGVBQWdCOWhCLFVBQVNzYixZQUFUdGIsVUFHL0N0RCxTQUFhcWUsS0FBS25VLE1BQWxCbEssU0FFTixHQUFJd0ksTUFBTW82QixZQUNSLE9BQU9weUIsTUFBQUEsYUFBbUJ4USxTQUFVLENBQ2xDRCxXQUFXNFUsRUFBQUEsT0FBQUEsR0FDVDNVLFNBQVNrSyxNQUFNbkssVUFDZixpQ0FJTixJQUFRc3JCLFVBQWNoTixLQUFLWCxRQUFuQjJOLFVBQ0F3WCxrQkFBeUN4WCxVQUF6Q3dYLGtCQUFtQkMsa0JBQXNCelgsVUFBdEJ5WCxrQkFFckJDLGFBQWNGLHNCQUNkaE0sRUFBQUEsVUFBQUEsR0FBSXJ1QixNQUFPcTZCLG1CQUlqQixJQUFLRSxZQUNILE9BQU8vaUMsU0FzQlQsSUFBTWdqQyxZQUNKMS9CLGFBQWN3L0Isc0JBQXNCak0sRUFBQUEsVUFBQUEsR0FBSXJ1QixNQUFPczZCLG9CQUVqRCxHQUFJRSxhQUFlRCxZQUFhLENBUzlCLElBQU1FLFNBQVcsQ0FDZk4sWUFBYXRrQixLQUFLaWtCLG9CQUNsQlksYUFBYzdrQixLQUFLaWtCLHFCQUdyQixHQUFJVSxZQUFhLENBRWYsSUFBSUcsWUFBYyxLQUNkQyxVQUFZLEtBRUgsU0FBVDc5QixNQUNGNDlCLGFBQWVoZSxnQkFBa0I5RyxLQUFLb2tCLGFBQWEsUUFDbkRXLFdBQWFoZSxnQkFBa0IvRyxLQUFLb2tCLGFBQWEsV0FFakRVLGFBQWVoZSxnQkFBa0I5RyxLQUFLb2tCLGFBQWEsTUFDbkRXLFdBQWFoZSxnQkFBa0IvRyxLQUFLb2tCLGFBQWEsU0FHbkRRLFNBQVNqakMsVUFDUHdKLEVBQUFBLFlBQUFBLE1BQUEsT0FBS3pKLFVBQVUsMkJBQTBCQyxTQUFBLENBQ3RDbWpDLFlBQ0FuakMsU0FBU2tLLE1BQU1sSyxTQUNmb2pDLFlBR1AsQ0FHRS9YLFVBQVVnWSxrQkFBa0JDLGFBQzVCalksVUFBVWdZLGtCQUFrQjc2QixRQUFVQSxRQUd0Q3k2QixTQUFTbGpDLFdBQVk0VSxFQUFBQSxPQUFBQSxHQUNuQjNVLFNBQVNrSyxNQUFNbkssVUFDZixpQ0FJSkMsU0FBV3dRLE1BQUFBLGFBQW1CeFEsU0FBVWlqQyxTQUMxQyxDQUVBLE9BQU9qakMsUUFDVCxJQUFDLENBaEtlLENBQVN3USxNQUFBQSxXQUFyQm1YLGFBQ0c0YixZQUFjdkIsV0FBVXJhLGFBQUF4Z0IsYUFBQSxtMENBa0tqQywwQ0FBMkIsb0JBQUFDLDBCQUFBQSx3QkFBQSwyQ0FBQUMsS0FBQSxlQUFBQyxXQUFBcWdCLGFBQUF4Z0IsYUFBQUksS0FBQSwyQyx5cEJDdEtkaThCLGNBQWdCLENBQzNCNzlCLE9BQU84OUIsRUFBQUEsVUFBQUEsSUFBYSxTQUFDbmdCLEdBQUMsT0FBS0EsRUFBRTNkLEtBQUssSUFDbENDLEtBQUs2OUIsRUFBQUEsVUFBQUEsSUFBYSxTQUFDbmdCLEdBQUMsT0FBS0EsRUFBRTFkLEdBQUcsS0FXekIsU0FBUzg5QixrQkFBeUMsSUFBekJqaUMsV0FBVTVDLFVBQUFDLE9BQUEsUUFBQXNwQixJQUFBdnBCLFVBQUEsR0FBQUEsVUFBQSxHQUFHLENBQUMsRUFBRzhrQyxPQUFNOWtDLFVBQUFDLE9BQUEsRUFBQUQsVUFBQSxRQUFBdXBCLEVBQy9DcHJCLEtBQU9DLE9BQU9ELEtBQUsybUMsUUFDbkI5VSxPQUFNNXhCLE9BQUFtRCxPQUFBLEdBQVFxQixZQU9wQixPQUxBekUsS0FBS2tCLFNBQVEsU0FBQ04sS0FDWml4QixPQUFPanhCLEtBQU82RCxXQUFXN0QsS0FiN0IsU0FBU2dtQyxPQUFvQixRQUFBdGUsS0FBQXptQixVQUFBQyxPQUFabVcsV0FBVSxJQUFBcEosTUFBQXlaLE1BQUFDLEtBQUEsRUFBQUEsS0FBQUQsS0FBQUMsT0FBVnRRLFdBQVVzUSxNQUFBMW1CLFVBQUEwbUIsTUFDekIsSUFBTXNlLFVBQVk1dUIsV0FBVzdYLE9BQU8wbUMsU0FBU3QzQixJQUFJdTNCLE1BQUFBLGVBSWpELE9BSGEsU0FBUEMsS0FBSW4vQixNQUFBLElBQU03RSxTQUFRNkUsS0FBUjdFLFNBQWFrSyxPQUFLakYsRUFBQUEsd0JBQUFBLEdBQUFKLEtBQUFLLFdBQUEsT0FDaEMyK0IsVUFBVUksYUFBWSxTQUFDQyxNQUFPQyxTQUFPLE9BQUtBLFFBQVFqNkIsTUFBT2c2QixNQUFNLEdBQUVsa0MsU0FBUyxDQUc5RSxDQVFRNGpDLENBQUtuaUMsV0FBVzdELEtBQU0rbEMsT0FBTy9sQyxNQUM3QitsQyxPQUFPL2xDLElBQ2IsSUFDT2l4QixNQUNULENBRU8sU0FBU3VWLGNBQWMvaUIsT0FBUXJCLE9BQ3BDLElBQVEyQixLQUFxQk4sT0FBckJNLEtBQU1DLE1BQWVQLE9BQWZPLE1BQU93SSxJQUFRL0ksT0FBUitJLElBQ2J4TyxFQUFTb0UsTUFBVHBFLEVBQUdDLEVBQU1tRSxNQUFObkUsRUFDWCxPQUFPRCxFQUFJZ0csTUFBUSxJQUFNaEcsRUFBSStGLE1BQVE5RixFQUFJdU8sR0FDM0MsQ0FFTyxTQUFTaWEsV0FBVzc3QixNQUFPMGIsVUFBV25mLFdBQzNDLElBQUlZLE1BQVF1ZSxVQUFVdmUsTUFBTTZDLE9BQ3hCNUMsSUFBTXNlLFVBQVV0ZSxJQUFJNEMsT0FReEIsT0FMRXpELFVBQVVtd0IsR0FBR3Z2QixNQUFPQyxJQUFLLFlBQ2lCLElBQTFDYixVQUFVaWpCLEtBQUtyaUIsTUFBT0MsSUFBSyxhQUVUQSxJQUFNYixVQUFVc0IsSUFBSVQsSUFBSyxFQUFHLFFBRXpDLENBQUVELE1BQUFBLE1BQU9DLElBQUFBLElBQUswK0IsU0FESnYvQixVQUFVaWpCLEtBQUtyaUIsTUFBT0MsSUFBSyxnQkFFOUMsQ0NsQ21FLElBRTdEMitCLHNCQUFxQixTQUFBOW1CLGtCQVl6QixTQUFBOG1CLHdCQUFxQixJQUFBNW1CLE9BQUFDLEVBQUFBLGVBQUFBLFNBQUEsS0FBQTJtQix1QkFBQSxRQUFBamYsS0FBQXptQixVQUFBQyxPQUFOb0IsS0FBSSxJQUFBMkwsTUFBQXlaLE1BQUFDLEtBQUEsRUFBQUEsS0FBQUQsS0FBQUMsT0FBSnJsQixLQUFJcWxCLE1BQUExbUIsVUFBQTBtQixNQUdXLE9BRjVCNUgsT0FBQUUsRUFBQUEsVUFBQUEsU0FBQSxLQUFBMG1CLHNCQUFBLEdBQUFyN0IsT0FBU2hKLFFBbUNYc2tDLFdBQWEsU0FBQ3hrQixNQUFPcUIsUUFDbkIsSUFBSytpQixjQUFjL2lCLE9BQVFyQixPQUFRLE9BQU9yQyxNQUFLOG1CLFFBQy9DLElBQVFqOEIsTUFBVW1WLE1BQUtELFFBQVEyTixVQUFVZ1ksa0JBQWpDNzZCLE1BQ1JvVyxZQUFtQ2pCLE1BQUt6VCxNQUFoQ2dhLFVBQVN0RixZQUFUc0YsVUFBV2pDLFlBQVdyRCxZQUFYcUQsWUFFYnlpQixRQUFVemlCLFlBQVlvVCxxQkFDMUIsQ0FBRXhaLEVBQUdtRSxNQUFNbkUsRUFBSThCLE1BQUtnbkIsZUFBZ0Ivb0IsRUFBR29FLE1BQU1wRSxHQUM3Q3lGLFFBR01pakIsU0FBYUQsV0FBVzc3QixNQUFPMGIsVUFBV3ZHLE1BQUt6VCxNQUFNbkYsV0FBckR1L0IsU0FDSk0sT0FBU2puQixNQUFLelQsTUFBTW5GLFVBQVVzQixJQUFJcStCLFFBQVNKLFNBQVUsZ0JBQ3pEM21CLE1BQUtnWCxPQUFPbnNCLE1BQU95WixZQUFZOFQsU0FBUzJPLFFBQVNFLFFBQVEsR0FBTyxHQUNsRSxFQUFDam5CLE1Bc0NEa25CLHNCQUF3QixTQUFDN2tCLE1BQU84a0IsYUFDOUIsSUFBQTVoQixhQUFrQ3ZGLE1BQUt6VCxNQUEvQitYLFlBQVdpQixhQUFYakIsWUFBYXNYLFNBQVFyVyxhQUFScVcsU0FFakI1ekIsTUFBUXNjLFlBQVlvVCxxQkFDdEIsQ0FBRXhaLEVBQUdtRSxNQUFNbkUsRUFBR0QsRUFBR29FLE1BQU1wRSxHQUN2QmtwQixhQUdGbm5CLE1BQUtELFFBQVEyTixVQUFVMFosa0JBQWtCLENBQ3ZDcC9CLE1BQUFBLE1BQ0FDLElBQUtxYyxZQUFZK1MsU0FBU3J2QixPQUMxQkUsUUFBUSxFQUNSMHpCLFNBQUFBLFVBRUosRUFBQzViLE1BRURxbkIsbUJBQXFCLFNBQUNDLE9BQVF2bEIsTUFDNUI1RixZQUFXLFdBQ1QsSUFBTW9yQixVQUFZdmYsMkJBQUlqRyxLQUFNLGdDQUFnQyxHQUN4RHdsQixZQUNFQSxVQUFVQyxVQUFZRixPQUFPdFIsV0FDL0JBLEVBQUFBLElBQUFBLElBQVVzUixPQUFReGlCLEtBQUsvYyxJQUFJdy9CLFVBQVVDLFVBQVcsSUFFaERELFVBQVVDLFVBQVlELFVBQVU3UixhQUNoQzRSLE9BQU90UixVQUFZc1IsT0FBTzVGLGVBRTFCMUwsRUFBQUEsSUFBQUEsSUFDRXNSLE9BQ0F4aUIsS0FBS2pkLElBQ0gwL0IsVUFBVUMsVUFDUkYsT0FBTzVSLGFBQ1A2UixVQUFVN1IsYUFDWjRSLE9BQU83RixlQUtqQixHQUNGLEVBQUN6aEIsTUFFRFcsWUFBYyxXQUNaLElBQUk4bUIsUUFBVXpuQixNQUFLd0IsSUFBSXhQLFFBQ25CK1AsS0FBTzBsQixRQUFRcGxDLFNBQVMsR0FDeEJxbEMsZ0JBQWlCLEVBQ2pCMWxCLFNBQVloQyxNQUFLaUMsVUFBWSxJQUFJQyxVQUFBQSxJQUFVLGtCQUM3Q3VsQixRQUFReFksUUFBUSxpQkFBaUIsSUFFL0JxWSxRQUFTSyxFQUFBQSxJQUFBQSxJQUFhRixTQUUxQnpsQixTQUFTbUIsR0FBRyxnQkFBZ0IsU0FBQ2QsT0FDM0IsSUFBUXFqQixrQkFBc0IxbEIsTUFBS0QsUUFBUTJOLFVBQW5DZ1ksa0JBRVIsSUFBS0Esa0JBQWtCL2hDLE9BQVEsT0FBTyxFQUN0QyxHQUFpQyxXQUE3QitoQyxrQkFBa0IvaEMsT0FDcEIsT0FBTzhpQyxlQUFjL2pCLEVBQUFBLFVBQUFBLElBQWlCWCxNQUFPTSxPQUcvQyxJQUFNdWxCLFdBQVkvWSxFQUFBQSxVQUFBQSxJQUFzQjlNLEtBQU1NLE9BQzlDLElBQUt1bEIsVUFBVyxPQUFPLEVBUXZCNW5CLE1BQUtnbkIsZUFBaUIza0IsTUFBTW5FLEdBQUl3RSxFQUFBQSxVQUFBQSxJQUFpQmtsQixXQUFXbmIsR0FDOUQsSUFFQXpLLFNBQVNtQixHQUFHLGFBQWEsU0FBQ0gsS0FDeEIsSUFBTVUsUUFBU2hCLEVBQUFBLFVBQUFBLElBQWlCWCxNQUN4QjJqQixrQkFBc0IxbEIsTUFBS0QsUUFBUTJOLFVBQW5DZ1ksa0JBRXlCLFNBQTdCQSxrQkFBa0IvaEMsU0FDcEJxYyxNQUFLcW5CLG1CQUFtQkMsT0FBUXZsQixNQUNoQy9CLE1BQUs2bUIsV0FBVzdqQixJQUFLVSxTQUVVLFdBQTdCZ2lCLGtCQUFrQi9oQyxTQUNwQnFjLE1BQUtxbkIsbUJBQW1CQyxPQUFRdmxCLE1BQ2hDL0IsTUFBS2doQixhQUFhaGUsSUFBS1UsUUFFM0IsSUFFQTFCLFNBQVNtQixHQUFHLG1CQUFtQixTQUFDZCxPQUM5QixHQUFLckMsTUFBS0QsUUFBUTJOLFVBQVUwWixrQkFBNUIsQ0FDQSxJQUFNMWpCLFFBQVNoQixFQUFBQSxVQUFBQSxJQUFpQlgsTUFDM0Iwa0IsY0FBYy9pQixPQUFRckIsUUFDM0JyQyxNQUFLa25CLHNCQUFzQjdrQixNQUFPcUIsT0FIbUIsQ0FJdkQsSUFFQTFCLFNBQVNtQixHQUFHLFlBQVksU0FBQ2QsT0FDdkIsR0FBS3JDLE1BQUtELFFBQVEyTixVQUFVbWEsb0JBQTVCLENBQ0EsSUFBTW5rQixRQUFTaEIsRUFBQUEsVUFBQUEsSUFBaUJYLE1BQ2hDL0IsTUFBS2tuQixzQkFBc0I3a0IsTUFBT3FCLE9BRnFCLENBR3pELElBRUExQixTQUFTbUIsR0FBRyxlQUFlLFdBQ3pCdWtCLGdCQUFpQixFQUNqQjFuQixNQUFLRCxRQUFRMk4sVUFBVW9hLFNBQ3pCLElBRUE5bEIsU0FBU21CLEdBQUcsVUFBVSxTQUFDZCxPQUNyQixJQUFNcUIsUUFBU2hCLEVBQUFBLFVBQUFBLElBQWlCWCxNQUdoQyxHQUZBMmxCLGdCQUFpQixFQUVnQixXQURIMW5CLE1BQUtELFFBQVEyTixVQUFuQ2dZLGtCQUNjL2hDLE9BQ3BCcWMsTUFBSytuQiwyQkFDQSxLQUFLL25CLE1BQUtHLE1BQU10VixRQUFVNDdCLGNBQWMvaUIsT0FBUXJCLE9BQ3JELE9BRUFyQyxNQUFLK25CLHNCQUNQLENBQ0YsSUFFQS9sQixTQUFTbUIsR0FBRyxTQUFTLFdBQ2Z1a0IsZ0JBQWdCMW5CLE1BQUs4bUIsUUFDekI5bUIsTUFBS0QsUUFBUTJOLFVBQVVzYSxNQUFNLEtBQy9CLElBQ0FobUIsU0FBU21CLEdBQUcsU0FBUyxXQUNuQm5ELE1BQUs4bUIsUUFDTDltQixNQUFLRCxRQUFRMk4sVUFBVXNhLE1BQU0sS0FDL0IsR0FDRixFQUFDaG9CLE1BRUQrbkIscUJBQXVCLFdBQ3JCLElBQVFuTSxTQUFhNWIsTUFBS3pULE1BQWxCcXZCLFNBQ0Evd0IsTUFBVW1WLE1BQUtHLE1BQWZ0VixNQUNSbVYsTUFBSzhtQixRQUVMOW1CLE1BQUtELFFBQVEyTixVQUFVc2EsTUFBTSxDQUMzQmhnQyxNQUFPNkMsTUFBTTdDLE1BQ2JDLElBQUs0QyxNQUFNNUMsSUFDWHVGLFdBQVlvdUIsVUFFaEIsRUFBQzViLE1BRURhLG9CQUFzQixXQUNmYixNQUFLaUMsWUFDVmpDLE1BQUtpQyxVQUFVMkIsV0FDZjVELE1BQUtpQyxVQUFZLEtBQ25CLEVBak9FakMsTUFBS0csTUFBUSxDQUFDLEVBQ2RILE1BQUt3QixJQUFNM08sTUFBQUEsWUFBaUJtTixLQUM5QixDQUFDLE9BQUFPLEVBQUFBLFNBQUFBLFNBQUFxbUIsc0JBQUE5bUIsbUJBQUFVLEVBQUFBLFlBQUFBLFNBQUFvbUIsc0JBQUEsRUFBQTNtQyxJQUFBLG9CQUFBQyxNQUVELFNBQUF1Z0Isb0JBQ0VDLEtBQUtDLGFBQ1AsR0FBQyxDQUFBMWdCLElBQUEsdUJBQUFDLE1BRUQsU0FBQTBnQix1QkFDRUYsS0FBS0cscUJBQ1AsR0FBQyxDQUFBNWdCLElBQUEsUUFBQUMsTUFFRCxTQUFBNG1DLFFBQ01wbUIsS0FBS1AsTUFBTXRWLE9BQ2I2VixLQUFLd0MsU0FBUyxDQUFFclksTUFBTyxLQUFNNGhCLElBQUssS0FBTXRSLE9BQVEsTUFDcEQsR0FBQyxDQUFBbGIsSUFBQSxTQUFBQyxNQUVELFNBQUE4MkIsT0FBT25zQixNQUFLM0QsTUFBdUMsSUFBbkN5eEIsVUFBU3p4QixLQUFUeXhCLFVBQVdDLFFBQU8xeEIsS0FBUDB4QixRQUFTbk0sSUFBR3ZsQixLQUFIdWxCLElBQUt0UixPQUFNalUsS0FBTmlVLE9BQ3hCOHNCLFVBQWN2bkIsS0FBS1AsTUFBMUJ0VixNQUVObzlCLFdBQ0F0UCxZQUFjc1AsVUFBVWpnQyxPQUN4QjR3QixVQUFZcVAsVUFBVWhnQyxLQUt4QnlZLEtBQUt3QyxTQUFTLENBQ1p1SixJQUFBQSxJQUNBdFIsT0FBQUEsT0FDQXRRLE1BQUt2TCxPQUFBbUQsT0FBQSxHQUFPb0ksTUFBTyxDQUFBN0MsTUFBTzJ3QixVQUFXMXdCLElBQUsyd0IsV0FFOUMsR0FBQyxDQUFBMzRCLElBQUEsZUFBQUMsTUFpQkQsU0FBQThnQyxhQUFhM2UsTUFBT3FCLFFBQ2xCLElBS0l3a0IsU0FMSi9mLGFBQThDekgsS0FBS25VLE1BQTNDZ2EsVUFBUzRCLGFBQVQ1QixVQUFXakMsWUFBVzZELGFBQVg3RCxZQUFhbGQsVUFBUytnQixhQUFUL2dCLFVBQ2hDK2dDLHNCQUE2QnpuQixLQUFLWCxRQUFRMk4sVUFBVWdZLGtCQUE1Qzc2QixNQUFLczlCLHNCQUFMdDlCLE1BQU82RixVQUFTeTNCLHNCQUFUejNCLFVBQ1QwM0IsUUFBVTlqQixZQUFZb1QscUJBQXFCclYsTUFBT3FCLFFBRXhEMmtCLGFBQXFCM0IsV0FBVzc3QixNQUFPMGIsVUFBV25mLFdBQTVDWSxNQUFLcWdDLGFBQUxyZ0MsTUFBT0MsSUFBR29nQyxhQUFIcGdDLElBRWIsR0FBa0IsT0FBZHlJLFVBQW9CLENBQ3RCLElBQU00M0IsU0FBV2xoQyxVQUFVUyxJQUN6QnVnQyxRQUNBOWpCLFlBQVlzVCxvQkFBb0IzdkIsS0FBTSxJQUl4Q2lnQyxTQUFXNWpCLFlBQVk4VCxTQUFTa1EsU0FBVXJnQyxLQUMxQ2lnQyxTQUFRNW9DLE9BQUFtRCxPQUFBLEdBQ0h5bEMsU0FBUSxDQUNYdFAsUUFBUzN3QixLQUViLE1BQU8sR0FBa0IsU0FBZHlJLFVBQXNCLENBRy9CLElBQU11MkIsT0FBUzcvQixVQUFVVyxJQUN2QnFnQyxRQUNBOWpCLFlBQVlzVCxvQkFBb0I1dkIsUUFFbENrZ0MsU0FBVzVqQixZQUFZOFQsU0FBU3B3QixNQUFPaS9CLFFBQ3ZDaUIsU0FBUTVvQyxPQUFBbUQsT0FBQSxHQUNIeWxDLFNBQVEsQ0FDWHZQLFVBQVczd0IsT0FFZixDQUVBMFksS0FBS3NXLE9BQU9uc0IsTUFBT3E5QixTQUNyQixHQUFDLENBQUFqb0MsSUFBQSxnQkFBQUMsTUFnSkQsU0FBQXFvQyxnQkFDRSxJQUFBamdCLGFBQ0U1SCxLQUFLblUsTUFEQ2xLLFNBQVFpbUIsYUFBUmptQixTQUFVa2tCLFVBQVMrQixhQUFUL0IsVUFBV3ppQixXQUFVd2tCLGFBQVZ4a0IsV0FBWW9kLFFBQU9vSCxhQUFQcEgsUUFBU29ELFlBQVdnRSxhQUFYaEUsWUFBYWxkLFVBQVNraEIsYUFBVGxoQixVQUcvRGlhLFlBQTZCWCxLQUFLUCxNQUE1QnRWLE1BQUt3VyxZQUFMeFcsTUFBTzRoQixJQUFHcEwsWUFBSG9MLElBQUt0UixPQUFNa0csWUFBTmxHLE9BQ2xCLElBQUt0USxNQUFPLE9BQU94SSxTQUVuQixJQUdJOFUsTUFIRWhVLE9BQVNkLFNBQVNrSyxNQUFNbEssU0FDdEIyRixNQUFlNkMsTUFBZjdDLE1BQU9DLElBQVE0QyxNQUFSNUMsSUFHWDhRLE9BQVMsdUJBRVBnZixnQkFBa0J6VCxZQUFZeVQsZ0JBQWdCL3ZCLE9BQzlDZ3dCLGVBQWlCMVQsWUFBWTBULGVBQWUvdkIsS0FRbEQsT0FOSTh2QixnQkFBaUJoZixPQUFTLDBCQUNyQmlmLGlCQUFnQmpmLE9BQVMsNkJBRUs1QixNQUFuQzRnQixpQkFBbUJDLGVBQXdCNXdCLFVBQVV4QyxTQUFTc0QsT0FDckRkLFVBQVUyUixPQUFPLENBQUUvUSxNQUFBQSxNQUFPQyxJQUFBQSxLQUFPOFEsUUFFdkNsRyxNQUFBQSxhQUFtQnhRLFNBQVUsQ0FDbENBLFVBQ0V3SixFQUFBQSxZQUFBQSxNQUFDZ0gsTUFBQUEsU0FBYyxDQUFBeFEsU0FBQSxDQUNaYyxPQUVBMEgsUUFDQzFJLEVBQUFBLFlBQUFBLEtBQUM4NkIsY0FBQUEsRUFBYSxDQUNacHlCLE1BQU9BLE1BQ1BzTSxNQUFPQSxNQUNQL1UsVUFBVSw4QkFDVm1NLE1BQU8sQ0FBRWtlLElBQUFBLElBQUt0UixPQUFBQSxPQUFRdkssTUFBTyxLQUM3QnNRLFFBQVNBLFFBQ1RwZCxXQUFZQSxXQUNaeWlCLFVBQVNqbkIsT0FBQW1ELE9BQUEsR0FBTzhqQixVQUFjc2YsZUFDOUJyZSxlQUFnQnVRLGdCQUNoQnRRLGVBQWdCdVEscUJBTTVCLEdBQUMsQ0FBQS8zQixJQUFBLFNBQUFDLE1BRUQsU0FBQThnQixTQUNFLE9BQU83ZSxFQUFBQSxZQUFBQSxLQUFBLE9BQUtxZixJQUFLZCxLQUFLYyxJQUFJbmYsU0FBRXFlLEtBQUs2bkIsaUJBQ25DLElBQUMsQ0FoU3dCLENBQVMxMUIsTUFBQUEsV0FBOUIrekIsc0JBVUdoQixZQUFjdkIsV0FBVXVDLHNCQUFBcDlCLGFBQUEsczZDQXlSakMsNERBQW9DLG9CQUFBQywwQkFBQUEsd0JBQUEsb0RBQUFDLEtBQUEsd0JBQUFDLFdBQUFpOUIsc0JBQUFwOUIsYUFBQUksS0FBQSxvRCxzUkN2UzlCMmYsWUFBVyxTQUFBekosa0JBY2YsU0FBQXlKLGNBQXFCLElBQUF2SixPQUFBQyxFQUFBQSxlQUFBQSxTQUFBLEtBQUFzSixhQUFBLFFBQUE1QixLQUFBem1CLFVBQUFDLE9BQU5vQixLQUFJLElBQUEyTCxNQUFBeVosTUFBQUMsS0FBQSxFQUFBQSxLQUFBRCxLQUFBQyxPQUFKcmxCLEtBQUlxbEIsTUFBQTFtQixVQUFBMG1CLE1BR1csT0FGNUI1SCxPQUFBRSxFQUFBQSxVQUFBQSxTQUFBLEtBQUFxSixZQUFBLEdBQUFoZSxPQUFTaEosUUFxQ1hza0MsV0FBYSxTQUFDeGtCLE1BQU9xQixPQUFROGtCLGNBQzNCLEtBQUs1bEIsRUFBQUEsVUFBQUEsSUFBV2MsT0FBUXJCLE9BQVEsT0FBT3JDLE1BQUs4bUIsUUFDNUMsSUFBTWo4QixNQUFRbVYsTUFBS0QsUUFBUTJOLFVBQVVnWSxrQkFBa0I3NkIsT0FBUzI5QixhQUNoRXZuQixZQUFtRGpCLE1BQUt6VCxNQUFoRGdhLFVBQVN0RixZQUFUc0YsVUFBV2pDLFlBQVdyRCxZQUFYcUQsWUFBYXJULElBQUdnUSxZQUFIaFEsSUFBSzdKLFVBQVM2WixZQUFUN1osVUFFL0IyYyxNQUFPakIsRUFBQUEsVUFBQUEsSUFBV1ksT0FBUXJCLE1BQU1wRSxFQUFHaE4sSUFBS3FULFlBQVlELE9BRXBEeGxCLEtBQU95bEIsWUFBWThDLGVBQWVyRCxNQUd4QzBrQixZQUEwQi9CLFdBQVc3N0IsTUFBTzBiLFVBQVduZixXQUFqRFksTUFBS3lnQyxZQUFMemdDLE1BQU8yK0IsU0FBUThCLFlBQVI5QixTQUNiMytCLE1BQVFaLFVBQVU4d0IsTUFBTXI1QixLQUFNbUosT0FDOUIsSUFBTUMsSUFBTWIsVUFBVXNCLElBQUlWLE1BQU8yK0IsU0FBVSxnQkFFM0MzbUIsTUFBS2dYLE9BQU9uc0IsTUFBTzdDLE1BQU9DLElBQzVCLEVBQUMrWCxNQUVEa25CLHNCQUF3QixTQUFDN2tCLE1BQU9xQixRQUM5QixHQUFLMUQsTUFBS0QsUUFBUTJOLFVBQVUwWixrQkFBNUIsQ0FDQSxJQUFBN2hCLGFBQXdDdkYsTUFBS3pULE1BQXJDK1gsWUFBV2lCLGFBQVhqQixZQUFhclQsSUFBR3NVLGFBQUh0VSxJQUFLN0osVUFBU21lLGFBQVRuZSxVQUVwQjJjLE1BQU9qQixFQUFBQSxVQUFBQSxJQUFXWSxPQUFRckIsTUFBTXBFLEVBQUdoTixJQUFLcVQsWUFBWUQsT0FDcERyYyxNQUFRc2MsWUFBWThDLGVBQWVyRCxNQUV6Qy9ELE1BQUtELFFBQVEyTixVQUFVMFosa0JBQWtCLENBQ3ZDcC9CLE1BQUFBLE1BQ0FDLElBQUtiLFVBQVVzQixJQUFJVixNQUFPLEVBQUcsT0FDN0JFLFFBQVEsR0FUMkMsQ0FXdkQsRUFBQzhYLE1BRUQwb0IsMEJBQTRCLFNBQUNybUIsTUFBT04sTUFDN0IvQixNQUFLRCxRQUFRMk4sVUFBVW1hLHFCQUM1QjduQixNQUFLNm1CLFdBQVd4a0IsTUFBT04sS0FBTS9CLE1BQUtELFFBQVEyTixVQUFVbWEsc0JBQ3RELEVBQUM3bkIsTUF1RERXLFlBQWMsV0FDWixJQUFJb0IsS0FBTy9CLE1BQUt3QixJQUFJeFAsUUFBUWlkLFFBQVEsb0NBQ2hDOU0sVUFBWUosS0FBS2tOLFFBQVEsbUNBQ3pCMFosV0FBYTVtQixLQUFLNm1CLFVBQVU1YyxTQUFTLGlCQUdyQ2hLLFNBQVloQyxNQUFLaUMsVUFBWSxJQUFJQyxVQUFBQSxJQUFVLGtCQUFNQyxTQUFTLEdBQUUsQ0FDOUR3TixpQkFBZW5rQixFQUFBQSxrQkFBQUEsR0FDUm05QixXQUFxRCxHQUF4QyxDQUFDLGdCQUFpQix1QkFJeEMzbUIsU0FBU21CLEdBQUcsZ0JBQWdCLFNBQUNkLE9BQzNCLElBQVF0WCxTQUFhaVYsTUFBS3pULE1BQWxCeEIsU0FDQXBILE9BQVdxYyxNQUFLRCxRQUFRMk4sVUFBVWdZLGtCQUFsQy9oQyxPQUNGK2YsUUFBU2hCLEVBQUFBLFVBQUFBLElBQWlCWCxNQUMxQjhtQixTQUFVam1CLEVBQUFBLFVBQUFBLElBQVdjLE9BQVFyQixPQUNuQyxNQUNhLFNBQVgxZSxRQUFpQyxXQUFYQSxVQUF5Qm9ILFVBQVk4OUIsUUFFL0QsSUFFQTdtQixTQUFTbUIsR0FBRyxhQUFhLFNBQUNILEtBQ3hCLElBQU1VLFFBQVNoQixFQUFBQSxVQUFBQSxJQUFpQlgsTUFDeEIyakIsa0JBQXNCMWxCLE1BQUtELFFBQVEyTixVQUFuQ2dZLGtCQUN5QixTQUE3QkEsa0JBQWtCL2hDLFFBQW1CcWMsTUFBSzZtQixXQUFXN2pCLElBQUtVLFFBQzdCLFdBQTdCZ2lCLGtCQUFrQi9oQyxRQUFxQnFjLE1BQUtnaEIsYUFBYWhlLElBQUtVLE9BQ3BFLElBRUExQixTQUFTbUIsR0FBRyxlQUFlLGtCQUFNbkQsTUFBS0QsUUFBUTJOLFVBQVVvYSxTQUFTLElBRWpFOWxCLFNBQVNtQixHQUFHLFVBQVUsU0FBQ2QsT0FDckIsSUFBTXFCLFFBQVNoQixFQUFBQSxVQUFBQSxJQUFpQlgsTUFDM0IvQixNQUFLRyxNQUFNMm9CLFdBQ1hsbUIsRUFBQUEsVUFBQUEsSUFBV2MsT0FBUXJCLE9BR3RCckMsTUFBSytuQix1QkFGTC9uQixNQUFLOG1CLFFBSVQsSUFFQTlrQixTQUFTbUIsR0FBRyxtQkFBbUIsU0FBQ2QsT0FDOUIsR0FBS3JDLE1BQUtELFFBQVEyTixVQUFVMFosa0JBQTVCLENBQ0EsSUFBTTFqQixRQUFTaEIsRUFBQUEsVUFBQUEsSUFBaUJYLE9BQzNCYSxFQUFBQSxVQUFBQSxJQUFXYyxPQUFRckIsUUFDeEJyQyxNQUFLa25CLHNCQUFzQjdrQixNQUFPcUIsT0FIbUIsQ0FJdkQsSUFFQTFCLFNBQVNtQixHQUFHLHVCQUF1QixTQUFDZCxPQUNsQyxHQUFLckMsTUFBS0QsUUFBUTJOLFVBQVVtYSxvQkFBNUIsQ0FDQSxJQUFNbmtCLFFBQVNoQixFQUFBQSxVQUFBQSxJQUFpQlgsTUFFaEMvQixNQUFLMG9CLDBCQUEwQnJtQixNQUFPcUIsT0FIaUIsQ0FJekQsSUFFQTFCLFNBQVNtQixHQUFHLFNBQVMsa0JBQU1uRCxNQUFLRCxRQUFRMk4sVUFBVXNhLE1BQU0sS0FBSyxJQUU3RGhtQixTQUFTbUIsR0FBRyxTQUFTLFdBQ25CbkQsTUFBSzhtQixRQUNMOW1CLE1BQUtELFFBQVEyTixVQUFVc2EsTUFBTSxLQUMvQixHQUNGLEVBQUNob0IsTUFFRCtuQixxQkFBdUIsV0FDckIsSUFBQTVmLGFBQWlDbkksTUFBS3pULE1BQTlCaUIsV0FBVTJhLGFBQVYzYSxXQUFZekMsU0FBUW9kLGFBQVJwZCxTQUNaRixNQUFVbVYsTUFBS0csTUFBTTJvQixRQUFyQmorQixNQUVSbVYsTUFBSzhtQixRQUVMOW1CLE1BQUtELFFBQVEyTixVQUFVc2EsTUFBTSxDQUMzQmhnQyxNQUFPNkMsTUFBTTdDLE1BQ2JDLElBQUs0QyxNQUFNNUMsSUFDWHVGLFdBQUFBLFdBQ0F6QyxTQUFBQSxVQUVKLEVBQUNpVixNQUVEYSxvQkFBc0IsV0FDZmIsTUFBS2lDLFlBQ1ZqQyxNQUFLaUMsVUFBVTJCLFdBQ2Y1RCxNQUFLaUMsVUFBWSxLQUNuQixFQTlNRWpDLE1BQUtHLE1BQVEsQ0FBQyxFQUNkSCxNQUFLd0IsSUFBTTNPLE1BQUFBLFlBQWlCbU4sS0FDOUIsQ0FBQyxPQUFBTyxFQUFBQSxTQUFBQSxTQUFBZ0osWUFBQXpKLG1CQUFBVSxFQUFBQSxZQUFBQSxTQUFBK0ksWUFBQSxFQUFBdHBCLElBQUEsb0JBQUFDLE1BRUQsU0FBQXVnQixvQkFDRUMsS0FBS0MsYUFDUCxHQUFDLENBQUExZ0IsSUFBQSx1QkFBQUMsTUFFRCxTQUFBMGdCLHVCQUNFRixLQUFLRyxxQkFDUCxHQUFDLENBQUE1Z0IsSUFBQSxRQUFBQyxNQUVELFNBQUE0bUMsUUFDTXBtQixLQUFLUCxNQUFNMm9CLFNBQVNwb0IsS0FBS3dDLFNBQVMsQ0FBRTRsQixRQUFTLE1BQ25ELEdBQUMsQ0FBQTdvQyxJQUFBLFNBQUFDLE1BRUQsU0FBQTgyQixPQUFPbnNCLE1BQU83QyxNQUFPQyxLQUNuQixJQUFNNmdDLFNBQVVoaUIsRUFBQUEsWUFBQUEsSUFBYXhuQixPQUFBbUQsT0FBQyxDQUFELEVBQ3RCb0ksTUFBTyxDQUFBNUMsSUFBQUEsSUFBS0QsTUFBQUEsTUFBT2k5QixhQUFhLElBQ3JDdmtCLEtBQUtuVSxNQUFNK1gsWUFBWTNTLE1BQ3ZCazBCLGNBQ0FubEIsS0FBS25VLE1BQU1uRixXQUdJMmhDLFlBQWdCcm9CLEtBQUtQLE1BQTlCMm9CLFFBRU5DLGFBQ0FELFFBQVFsa0IsT0FBU21rQixZQUFZbmtCLE1BQzdCa2tCLFFBQVE5a0IsT0FBUytrQixZQUFZL2tCLE1BQzdCOGtCLFFBQVE3a0IsUUFBVThrQixZQUFZOWtCLE9BSWhDdkQsS0FBS3dDLFNBQVMsQ0FBRTRsQixRQUFBQSxTQUNsQixHQUFDLENBQUE3b0MsSUFBQSxlQUFBQyxNQXNDRCxTQUFBOGdDLGFBQWEzZSxNQUFPcUIsUUFDbEIsSUFBQXlrQixzQkFBNkJ6bkIsS0FBS1gsUUFBUTJOLFVBQVVnWSxrQkFBNUM3NkIsTUFBS3M5QixzQkFBTHQ5QixNQUFPNkYsVUFBU3kzQixzQkFBVHozQixVQUNmNFgsYUFBbUQ1SCxLQUFLblUsTUFBaERnYSxVQUFTK0IsYUFBVC9CLFVBQVdqQyxZQUFXZ0UsYUFBWGhFLFlBQWFyVCxJQUFHcVgsYUFBSHJYLElBQUs3SixVQUFTa2hCLGFBQVRsaEIsVUFFckNpaEMsYUFBcUIzQixXQUFXNzdCLE1BQU8wYixVQUFXbmYsV0FBNUNZLE1BQUtxZ0MsYUFBTHJnQyxNQUFPQyxJQUFHb2dDLGFBQUhwZ0MsSUFFUDhiLE1BQU9qQixFQUFBQSxVQUFBQSxJQUFXWSxPQUFRckIsTUFBTXBFLEVBQUdoTixJQUFLcVQsWUFBWUQsT0FDcER4bEIsS0FBT3lsQixZQUFZOEMsZUFBZXJELE1BQ2xDaWxCLGFBQWNwbUIsRUFBQUEsVUFBQUEsSUFBV2MsT0FBUXJCLE9BRXZDLEdBQWtCLFVBQWQzUixVQUF1QixDQUN6QixHQUFJczRCLFlBQWEsQ0FDZixHQUFJMWtCLFlBQVlzQyxLQUFPNWUsTUFBTyxPQUFPMFksS0FBS29tQixRQUV4QzcrQixJQURFYixVQUFVbXdCLEdBQUdud0IsVUFBVW9LLFFBQVF2SixJQUFLLE9BQVFBLEtBQ3hDYixVQUFVc0IsSUFBSTdKLEtBQU0sRUFBRyxPQUNwQkEsSUFDYixLQUFPLE1BQ0x1SSxVQUFVZ3dCLFFBQVFwdkIsTUFBT3NjLFlBQVlxQyxNQUFPckMsWUFBWXNDLE9BQ3ZEbEQsT0FBTzBKLE9BQVMvSyxNQUFNbkUsSUFBTW9HLFlBQVlxQyxPQUFTM2UsT0FLbEQsWUFEQTBZLEtBQUt3QyxTQUFTLENBQUU0bEIsUUFBUyxPQUZ6QjdnQyxJQUFNYixVQUFVc0IsSUFBSTRiLFlBQVlzQyxLQUFNLEVBQUcsZUFJM0MsQ0FDQSxJQUFNcWlCLFlBQWMxaUIsVUFBVXRlLElBQUk0QyxPQUNsQzVDLElBQU1iLFVBQVU4d0IsTUFBTWp3QixJQUFLZ2hDLGFBQ3ZCN2hDLFVBQVVvbUIsR0FBR3ZsQixJQUFLRCxTQUNwQkMsSUFBTWdoQyxZQUVWLE1BQU8sR0FBa0IsU0FBZHY0QixVQUFzQixDQUMvQixHQUFJczRCLFlBQWEsQ0FDZixHQUFJMWtCLFlBQVlxQyxNQUFRMWUsSUFBSyxPQUFPeVksS0FBS29tQixRQUN6QzkrQixNQUFRbkosSUFDVixLQUFPLE1BQ0x1SSxVQUFVZ3dCLFFBQVFudkIsSUFBS3FjLFlBQVlxQyxNQUFPckMsWUFBWXNDLE9BQ3JEbEQsT0FBTytJLElBQU1wSyxNQUFNbkUsR0FBSzlXLFVBQVVvbUIsR0FBR2xKLFlBQVlzQyxLQUFNM2UsTUFLeEQsWUFEQXlZLEtBQUtvbUIsUUFGTDkrQixNQUFRWixVQUFVc0IsSUFBSTRiLFlBQVlxQyxPQUFRLEVBQUcsZUFJL0MsQ0FDQSxJQUFNdWlCLGNBQWdCM2lCLFVBQVV2ZSxNQUFNNkMsT0FDdEM3QyxNQUFRWixVQUFVOHdCLE1BQU1sd0IsTUFBT2toQyxlQUMzQjloQyxVQUFVeXdCLEdBQUc3dkIsTUFBT0MsT0FDdEJELE1BQVFraEMsY0FFWixDQUVBeG9CLEtBQUtzVyxPQUFPbnNCLE1BQU83QyxNQUFPQyxJQUM1QixHQUFDLENBQUFoSSxJQUFBLFNBQUFDLE1BcUZELFNBQUE4Z0IsU0FDRSxJQUFBaUksYUFBZ0N2SSxLQUFLblUsTUFBN0JsSyxTQUFRNG1CLGFBQVI1bUIsU0FBVWtrQixVQUFTMEMsYUFBVDFDLFVBRVp1aUIsUUFBWXBvQixLQUFLUCxNQUFqQjJvQixRQUVOLE9BQ0VqOUIsRUFBQUEsWUFBQUEsTUFBQSxPQUFLMlYsSUFBS2QsS0FBS2MsSUFBS3BmLFVBQVUsMEJBQXlCQyxTQUFBLENBQ3BEQSxTQUVBeW1DLFVBQ0MzbUMsRUFBQUEsWUFBQUEsS0FBQ3luQixTQUFBQSxFQUFRdHFCLE9BQUFtRCxPQUFBLEdBQ0hpZSxLQUFLblUsTUFBSyxDQUNkcVMsU0FBVSxLQUNWeGMsVUFBVSwwQkFDVitoQixTQUFVLENBQUMya0IsU0FDWHZpQixVQUFTam5CLE9BQUFtRCxPQUFBLEdBQ0o4akIsVUFDQXNmLG9CQU1mLElBQUMsQ0F2UGMsQ0FBU2h6QixNQUFBQSxXQUFwQjBXLFlBWUdxYyxZQUFjdkIsV0FBVTlhLFlBQUEvZixhQUFBLHk5Q0E4T2pDLHdDQUEwQixvQkFBQUMsMEJBQUFBLHdCQUFBLDBDQUFBQyxLQUFBLGNBQUFDLFdBQUE0ZixZQUFBL2YsYUFBQUksS0FBQSwwQyx3RUNsUTFCLGdCQ1VlLFNBQVMzQyxnQkFBZ0JqRixVQUFVLElBQzFDeUQsb0JBQW1CLFNBQUFxYSxrQkEwQnZCLFNBQUFyYSxzQkFBcUIsSUFBQXVhLE9BQUFDLEVBQUFBLGVBQUFBLFNBQUEsS0FBQXhhLHFCQUFBLFFBQUFraUIsS0FBQXptQixVQUFBQyxPQUFOb0IsS0FBSSxJQUFBMkwsTUFBQXlaLE1BQUFDLEtBQUEsRUFBQUEsS0FBQUQsS0FBQUMsT0FBSnJsQixLQUFJcWxCLE1BQUExbUIsVUFBQTBtQixNQUdrQixPQUZuQzVILE9BQUFFLEVBQUFBLFVBQUFBLFNBQUEsS0FBQXphLG9CQUFBLEdBQUE4RixPQUFTaEosUUFvQlg0bUMsa0JBQW9CLFNBQUN0K0IsT0FDbkJBLE1BQU0rYSxnQkFDUixFQUFDNUYsTUFFRG9wQixrQkFBb0IsU0FBQ3YrQixNQUFPbEgsT0FBUStNLFdBQ2xDc1AsTUFBS2tELFNBQVMsQ0FBRXJZLE1BQUFBLE1BQU9sSCxPQUFBQSxPQUFRK00sVUFBQUEsWUFDL0IsSUFBUWlkLFlBQWdCM04sTUFBS3pULE1BQXJCb2hCLFlBQ0pBLGFBQWFBLFlBQVksQ0FBRTlpQixNQUFBQSxNQUFPbEgsT0FBQUEsT0FBUStNLFVBQUFBLFdBQ2hELEVBQUNzUCxNQUVEcXBCLHVCQUF5QixZQUNRLElBQTNCcnBCLE1BQUtHLE1BQU13bEIsYUFBdUIzbEIsTUFBS2tELFNBQVMsQ0FBRXlpQixhQUFhLEdBQ3JFLEVBQUMzbEIsTUFFRCtuQixxQkFBdUIsU0FBQ3VCLGlCQUN0QixJQUFBam9CLFlBQTBCckIsTUFBS0csTUFBdkJ4YyxPQUFNMGQsWUFBTjFkLE9BQVFrSCxNQUFLd1csWUFBTHhXLE1BQ2hCLEdBQUtsSCxTQUVMcWMsTUFBS2tELFNBQVMsQ0FDWnZmLE9BQVEsS0FDUmtILE1BQU8sS0FDUDg2QixhQUFhLEVBQ2JqMUIsVUFBVyxPQUdVLE1BQW5CNDRCLGlCQUFKLENBRUFBLGdCQUFnQnorQixNQUFRQSxNQUN4QixJQUFBb1csWUFBdUNqQixNQUFLelQsTUFBcEMzRyxZQUFXcWIsWUFBWHJiLFlBQWFDLGNBQWFvYixZQUFicGIsY0FDTixTQUFYbEMsUUFBcUJpQyxhQUFhQSxZQUFZMGpDLGlCQUNuQyxXQUFYM2xDLFFBQXVCa0MsZUFBZUEsY0FBY3lqQyxnQkFMckIsQ0FNckMsRUFqREV0cEIsTUFBS0csTUFBUSxDQUFFd2xCLGFBQWEsR0FBTzNsQixLQUNyQyxDQUFDLE9BQUFPLEVBQUFBLFNBQUFBLFNBQUE5YSxvQkFBQXFhLG1CQUFBVSxFQUFBQSxZQUFBQSxTQUFBL2Esb0JBQUEsRUFBQXhGLElBQUEscUJBQUFDLE1BRUQsU0FBQXFwQyxxQkFDRSxNQUFPLENBQ0w3YixVQUFXLENBQ1RvYSxRQUFTcG5CLEtBQUsyb0IsdUJBQ2RyQixNQUFPdG5CLEtBQUtxbkIscUJBQ1p4RCxjQUFlN2pCLEtBQUswb0Isa0JBQ3BCaEMsa0JBQW1CMW1CLEtBQUtuVSxNQUFNNjZCLGtCQUM5QlMsb0JBQXFCbm5CLEtBQUtuVSxNQUFNczdCLG9CQUNoQzNDLGtCQUFtQnhrQixLQUFLblUsTUFBTTI0QixrQkFDOUJDLGtCQUFtQnprQixLQUFLblUsTUFBTTQ0QixrQkFDOUJPLGtCQUFtQmhsQixLQUFLUCxPQUc5QixHQUFDLENBQUFsZ0IsSUFBQSxTQUFBQyxNQW1DRCxTQUFBOGdCLFNBQ0UsSUFBQXVFLGFBQTJEN0UsS0FBS25VLE1BQXhEekMsV0FBVXliLGFBQVZ6YixXQUFZcU8sYUFBWW9OLGFBQVpwTixhQUFjclUsV0FBVXloQixhQUFWemhCLFdBQWV5SSxPQUFLakYsRUFBQUEsd0JBQUFBLEdBQUFpZSxhQUFBaGUsMEJBQzlDbytCLFlBQWdCamxCLEtBQUtQLE1BQXJCd2xCLG1CQUVEcDVCLE1BQU0zRyxtQkFDTjJHLE1BQU0xRyxjQUNiMEcsTUFBTXpDLGFBQWFBLFlBQWEsZUFFaEM0VyxLQUFLNWMsV0FBYWlpQyxnQkFBZ0JqaUMsV0FBWSxDQUM1Q1csYUFBY3VsQix5QkFDZCtVLHNCQUF1QjZILGtDQUN2QnBkLFlBQWFELDBCQUdmLElBQU1pZ0IsZ0NBQWtDOW9CLEtBQUtuVSxNQUFNNjZCLGtCQUFpQjluQyxPQUFBbUQsT0FBQSxHQUUzRDBWLGFBQVksQ0FDZnN4QixXQUFZL29CLEtBQUtuVSxNQUFNazlCLFlBQWMvb0IsS0FBS3lvQixvQkFFNUNoeEIsYUFFSjVMLE1BQU1uSyxXQUFZNFUsRUFBQUEsT0FBQUEsR0FDaEJ6SyxNQUFNbkssVUFDTixtQkFDRXVqQyxhQUFlLDhCQUduQixJQUFNNWxCLFFBQVVXLEtBQUs2b0IscUJBQ3JCLE9BQ0VwbkMsRUFBQUEsWUFBQUEsS0FBQ2tpQyxXQUFXcUYsU0FBUSxDQUFDeHBDLE1BQU82ZixRQUFRMWQsVUFDbENGLEVBQUFBLFlBQUFBLEtBQUNILFNBQVExQyxPQUFBbUQsT0FBQSxHQUNIOEosTUFBSyxDQUNUNEwsYUFBY3F4QixnQ0FDZDFsQyxXQUFZNGMsS0FBSzVjLGVBSXpCLElBQUMsQ0FySHNCLENBQVMrTyxNQUFBQSxXQXdIbEMsT0F4SE1wTixvQkFtQkdxZ0IsYUFBWXhtQixPQUFBbUQsT0FBQSxHQUNkVCxTQUFTOGpCLGFBQVksQ0FDeEJvZixrQkFBbUIsS0FDbkJDLGtCQUFtQixLQUNuQngvQixXQUFXLElBaUdSRixtQkFDVCxDLGtjQ25JZW1hLFlBQVcsRSxpaURDeUJwQitwQixlQUFpQjdlLHFCQUFBQSxVQUFvQixDQUFDQSxxQkFBQUEsT0FBa0JBLHFCQUFBQSxPQUU5RCxTQUFTOGUsUUFBUXhpQyxVQUFXeWlDLFVBQVczcEMsTUFBTzZZLE9BQVEzSSxTQUNwRCxJQUFJOGdCLE9BQ2dCLG1CQUFYblksT0FDSEEsT0FBTzdZLE1BQU9rUSxRQUFTaEosV0FDdkJ5aUMsVUFBVTlNLEtBQUszMUIsVUFBV2xILE1BQU82WSxPQUFRM0ksU0FPL0MsT0FMQTA1QixrQkFDWSxNQUFWNVksUUFBb0MsaUJBQVhBLE9BQ3pCLG1FQUdLQSxNQUNULENBVUEsU0FBUzBGLFlBQVltVCxHQUFJM1Qsb0JBQXFCeEssUUFDNUMsT0FBTyxJQUFJMW9CLEtBQ1Q2bUMsR0FBR0MsY0FDSEQsR0FBR0UsV0FDSEYsR0FBRzkwQixVQUNILEVBQ0FtaEIsb0JBQXNCeEssT0FDdEIsRUFDQSxFQUVKLENBRUEsU0FBU21MLGFBQWEvdUIsTUFBT0MsS0FDM0IsT0FBT0QsTUFBTXczQixvQkFBc0J2M0IsSUFBSXUzQixtQkFDekMsQ0FJQSxTQUFTckosWUFBWW51QixNQUFPQyxLQUMxQixPQUFPb2lCLEVBQUFBLE1BQUFBLElBQUtyaUIsTUFBT0MsSUFBSyxXQUFhOHVCLGFBQWEvdUIsTUFBT0MsSUFDM0QsQ0FFQSxTQUFTb3VCLHVCQUF1QnJ1QixPQUM5QixJQUFNa2lDLFVBQVcxNEIsRUFBQUEsTUFBQUEsSUFBUXhKLE1BQU8sT0FDaEMsT0FBT3FpQixFQUFBQSxNQUFBQSxJQUFLNmYsU0FBVWxpQyxNQUFPLFdBQWErdUIsYUFBYW1ULFNBQVVsaUMsTUFDbkUsQ0FHQSxTQUFTd2YsZUFBZXhmLE1BQU8yZSxPQUM3QixPQUFPNkcsRUFBQUEsTUFBQUEsSUFBR3hsQixNQUFPMmUsTUFBTyxNQUMxQixDQUVBLFNBQVNjLGVBQWV6ZixNQUFPQyxJQUFLMmUsTUFFbEMsT0FEMEIyUSxFQUFBQSxNQUFBQSxJQUFHdnZCLE1BQU9DLElBQUssWUFFckN3bEIsRUFBQUEsTUFBQUEsSUFBSXhsQixJQUFLMmUsS0FBTSxZQUNmaVIsRUFBQUEsTUFBQUEsSUFBRzV2QixJQUFLMmUsS0FBTSxVQUNwQixDQUVBLFNBQVN1akIsUUFBUW5pQyxNQUFPQyxLQUN0QixPQUFPMCtCLEVBQUFBLE1BQUFBLElBQVMzK0IsTUFBT0MsSUFBSyxNQUM5QixDQUdBLFNBQVNrN0IsV0FBVWo4QixNQUdoQixJQUFBa2pDLFVBQUFsakMsS0FGRG1qQyxLQUFlQyxPQUFNRixVQUFicGlDLE1BQW9CdWlDLEtBQUlILFVBQVRuaUMsSUFBbUJ1aUMsUUFBT0osVUFBZmxpQyxPQUFNdWlDLFVBQUF2akMsS0FDeEN3akMsS0FBZUMsT0FBTUYsVUFBYnppQyxNQUFvQjRpQyxLQUFJSCxVQUFUeGlDLElBQW1CNGlDLFFBQU9KLFVBQWZ2aUMsT0FFOUI0aUMsWUFBYXQ1QixFQUFBQSxNQUFBQSxJQUFRODRCLE9BQVEsU0FBVTk0QixFQUFBQSxNQUFBQSxJQUFRbTVCLE9BQVEsT0FFdkRJLEtBQU9aLFFBQVFHLE9BQVFDLE1BRXZCUyxLQUFPYixRQUFRUSxPQUFRQyxNQUUzQixPQUNFRSxXQUNBRSxLQUFPRCxRQUNMRixVQUFZTCxVQUNiRixRQUFVSyxTQUNWSixNQUFRSyxJQUViLENBRUEsU0FBU0ssYUFBWXJnQyxPQUdsQixJQUFBc2dDLFlBQUF0Z0MsTUFGREMsTUFBUzdDLE1BQUtrakMsWUFBTGxqQyxNQUFPQyxJQUFHaWpDLFlBQUhqakMsSUFBR2tqQyxZQUFBdmdDLE1BQ25CK0csTUFBZ0IwbUIsV0FBVThTLFlBQWpCbmpDLE1BQXdCc3dCLFNBQVE2UyxZQUFibGpDLElBRXhCKzZCLFFBQVN4eEIsRUFBQUEsTUFBQUEsSUFBUXhKLE1BQU8sT0FFeEJvakMsaUJBQWtCbjVCLEVBQUFBLE1BQUFBLElBQUkrd0IsT0FBUTFLLFNBQVUsT0FHeEMrUyxnQkFEWXhwQixFQUFBQSxNQUFBQSxJQUFJbWhCLE9BQVEvNkIsSUFBSyxZQUU3QjR2QixFQUFBQSxNQUFBQSxJQUFHNXZCLElBQUtvd0IsV0FBWSxZQUNwQjVLLEVBQUFBLE1BQUFBLElBQUl4bEIsSUFBS293QixXQUFZLFdBQ3pCLE9BQU8rUyxpQkFBbUJDLGNBQzVCLENBS0EsU0FBU3pwQixXQUFXMHBCLE1BQU9DLE9BQ3pCLE9BQU9oVSxFQUFBQSxNQUFBQSxJQUFHK1QsTUFBT0MsTUFBTyxNQUMxQixDQUVBLFNBQVNySSx1QkFBdUJsN0IsTUFBT0MsS0FDckMsT0FBT3VqQyxFQUFBQSxNQUFBQSxJQUFXeGpDLFNBQVV3akMsRUFBQUEsTUFBQUEsSUFBV3ZqQyxJQUN6QyxDQUVPLElBQU13akMseUJBQWFqckIsRUFBQUEsWUFBQUEsVUFDeEIsU0FBQWlyQixjQUFZQyxNQUFNLElBQUExckIsTUFBQSxNQUFBQyxFQUFBQSxlQUFBQSxTQUFBLEtBQUF3ckIsZUFDaEIzQixrQkFDeUIsbUJBQWhCNEIsS0FBSzN5QixPQUNaLGtEQUVGK3dCLGtCQUM4QixtQkFBckI0QixLQUFLQyxZQUNaLHVEQUdGanJCLEtBQUtrckIsU0FBV0YsS0FBS0UsVUFBWWpDLGVBRWpDanBCLEtBQUs5SCxRQUFVOHlCLEtBQUs5eUIsUUFDcEI4SCxLQUFLM0gsT0FBUyxtQkFBQTRPLEtBQUF6bUIsVUFBQUMsT0FBSW9CLEtBQUksSUFBQTJMLE1BQUF5WixNQUFBQyxLQUFBLEVBQUFBLEtBQUFELEtBQUFDLE9BQUpybEIsS0FBSXFsQixNQUFBMW1CLFVBQUEwbUIsTUFBQSxPQUFLZ2lCLFFBQU85cEMsV0FBQyxFQUFELENBQUNrZ0IsTUFBTTByQixLQUFLM3lCLFFBQU14TixPQUFLaEosTUFBSyxFQUU5RG1lLEtBQUttckIsWUFBY0gsS0FBS0MsWUFDeEJqckIsS0FBS3dYLE1BQVF3VCxLQUFLeFQsT0FBU0EsTUFBQUEsR0FDM0J4WCxLQUFLMFcsUUFBVXNVLEtBQUt0VSxTQUFXQSxNQUFBQSxHQUMvQjFXLEtBQUs4TSxHQUFLa2UsS0FBS2xlLElBQU1BLE1BQUFBLEdBQ3JCOU0sS0FBS3pPLElBQU15NUIsS0FBS3o1QixLQUFPQSxNQUFBQSxHQUN2QnlPLEtBQUttWCxHQUFLNlQsS0FBSzdULElBQU1BLE1BQUFBLEdBQ3JCblgsS0FBSytNLElBQU1pZSxLQUFLamUsS0FBT0EsTUFBQUEsR0FDdkIvTSxLQUFLNlcsR0FBS21VLEtBQUtuVSxJQUFNQSxNQUFBQSxHQUNyQjdXLEtBQUttQixJQUFNNnBCLEtBQUs3cEIsS0FBT0EsTUFBQUEsR0FDdkJuQixLQUFLbFAsUUFBVWs2QixLQUFLbDZCLFNBQVdBLE1BQUFBLEdBQy9Ca1AsS0FBS3BQLE1BQVFvNkIsS0FBS3A2QixPQUFTQSxNQUFBQSxHQUMzQm9QLEtBQUtoWSxJQUFNZ2pDLEtBQUtoakMsS0FBT0EsTUFBQUEsR0FDdkJnWSxLQUFLL08sTUFBUSs1QixLQUFLLzVCLE9BQVNBLE1BQUFBLEdBQzNCK08sS0FBSzJKLEtBQU9xaEIsS0FBS3JoQixNQUFRQSxNQUFBQSxHQUN6QjNKLEtBQUs0SixLQUFPb2hCLEtBQUtwaEIsTUFBUUEsTUFBQUEsR0FDekI1SixLQUFLN1ksSUFBTTZqQyxLQUFLN2pDLEtBQU9BLE1BQUFBLEdBQ3ZCNlksS0FBSzNZLElBQU0yakMsS0FBSzNqQyxLQUFPQSxNQUFBQSxHQUN2QjJZLEtBQUtvckIsUUFBVUosS0FBS0ksU0FBV0EsTUFBQUEsR0FDL0JwckIsS0FBS3lwQixRQUFVdUIsS0FBS3ZCLFNBQVdBLFFBQy9CenBCLEtBQUtxckIsZ0JBQWtCTCxLQUFLSyxpQkFBbUJBLE1BQUFBLEdBQy9DcnJCLEtBQUtzckIsZUFBaUJOLEtBQUtNLGdCQUFrQkEsTUFBQUEsR0FDN0N0ckIsS0FBS3VyQixZQUFjUCxLQUFLTyxhQUFlQSxNQUFBQSxHQUV2Q3ZyQixLQUFLa1csWUFBYzhVLEtBQUs5VSxhQUFlQSxZQUN2Q2xXLEtBQUs4ZSxrQkFDSGtNLEtBQUtsTSxtQkFBc0IsU0FBQ3QvQixPQUFLLE9BQUtBLE1BQU1zL0IsbUJBQW1CLEVBQ2pFOWUsS0FBS3FXLGFBQWUyVSxLQUFLM1UsY0FBZ0JBLGFBQ3pDclcsS0FBS3lWLFlBQWN1VixLQUFLdlYsYUFBZUEsWUFDdkN6VixLQUFLMlYsdUJBQ0hxVixLQUFLclYsd0JBQTBCQSx1QkFDakMzVixLQUFLOEcsZUFBaUJra0IsS0FBS2xrQixnQkFBa0JBLGVBQzdDOUcsS0FBSytHLGVBQWlCaWtCLEtBQUtqa0IsZ0JBQWtCQSxlQUM3Qy9HLEtBQUt5aUIsV0FBYXVJLEtBQUt2SSxZQUFjQSxXQUNyQ3ppQixLQUFLdXFCLGFBQWVTLEtBQUtULGNBQWdCQSxhQUN6Q3ZxQixLQUFLa0IsV0FBYThwQixLQUFLOXBCLFlBQWNBLFdBQ3JDbEIsS0FBS3dpQix1QkFDSHdJLEtBQUt4SSx3QkFBMEJBLHVCQUNqQ3hpQixLQUFLd3JCLGNBQWdCUixLQUFLUyxnQkFBa0JULEtBQUtTLGtCQUFvQixDQUN2RSxJQUdLLFNBQVNDLGtCQUNkaGxDLFVBQ0FnSixRQUNBaThCLGdCQUNBem5DLFVBRUEsSUFBTWdVLFFBQU90WixPQUFBbUQsT0FBQSxHQUNSMkUsVUFBVXdSLFFBQ1Z5ekIsaUJBR0wsT0FBQS9zQyxPQUFBbUQsT0FBQSxHQUNLMkUsVUFBUyxDQUNaeEMsU0FBQUEsU0FDQWluQyxZQUFhLFNBQUFBLGNBQUEsT0FBTXprQyxVQUFVeWtDLFlBQVl6N0IsUUFBUSxFQUNqRDJJLE9BQVEsU0FBQUEsT0FBQzdZLE1BQU82WSxVQUFNLE9BQ3BCM1IsVUFBVTJSLE9BQU83WSxNQUFPMFksUUFBUUcsV0FBV0EsU0FBUTNJLFFBQVEsR0FFakUsQ0N2TkEsSUFBSWs4QixnQkFBa0IsQ0FDcEJ6dEMsS0FBTSxPQUNOMHRDLEtBQU0sT0FDTjFoQyxNQUFPLFFBQ1AzQyxPQUFRLFVBQ1JzSCxLQUFNLE9BQ05DLFVBQVcsWUFDWEMsSUFBSyxNQUNMQyxNQUFPLFFBQ1BDLFNBQVUsT0FDVkMsS0FBTSxPQUNOMjhCLFVBQVcsWUFDWEMsU0FBVSxXQUNWMzhCLE1BQU8sUUFDUEMsT0FBUSxTQUVSbEwsZ0JBQWlCLHFDQUVqQm1MLFNBQVUsU0FBQUEsU0FBQ0MsT0FBSyxVQUFBMUUsT0FBUzBFLE1BQUssVyxvK0JDZjFCeThCLFdBQWEsU0FBYkEsV0FBVXhsQyxNQUE4QyxJQUF4Q2lRLE1BQUtqUSxLQUFMaVEsTUFBT2EsY0FBYTlRLEtBQWI4USxjQUFld0UsWUFBV3RWLEtBQVhzVixZQUMxQyxPQUFLeEUsZUFLSDdWLEVBQUFBLFlBQUFBLEtBQUEsVUFDRXlGLEtBQUssU0FDTHhGLFVBQVUsa0JBQ1Y2VSxRQUFTdUYsWUFDVGtOLEtBQUssT0FBTXJuQixTQUVWOFUsU0FWSWhWLEVBQUFBLFlBQUFBLEtBQUEsUUFBQUUsU0FBTzhVLE9BYWxCLEVBZk11MUIsV0FBVWhxQyxZQUFHLGFBQUhncUMsV0FBQWxqQyxhQUFHLENBQUgsaVhBeUJoQiw4QkFBeUIsb0JBQUFDLDBCQUFBQSx3QkFBQSxzQkFBQUMsS0FBQSxhQUFBQyxXQUFBK2lDLFdBQUFsakMsYUFBQUksS0FBQSxzQixpR0NMbkIraUMsVUFBUyxTQUFBN3NCLGtCQUNiLFNBQUE2c0IsWUFBcUIsSUFBQTNzQixPQUFBQyxFQUFBQSxlQUFBQSxTQUFBLEtBQUEwc0IsV0FBQSxRQUFBaGxCLEtBQUF6bUIsVUFBQUMsT0FBTm9CLE1BQUksSUFBQTJMLE1BQUF5WixNQUFBQyxLQUFBLEVBQUFBLEtBQUFELEtBQUFDLE9BQUpybEIsTUFBSXFsQixNQUFBMW1CLFVBQUEwbUIsTUFZVSxPQVgzQjVILE9BQUFFLEVBQUFBLFVBQUFBLFNBQUEsS0FBQXlzQixVQUFBLEdBQUFwaEMsT0FBU2hKLFNBZ0RYMGxCLGFBQWUsV0FDYixPQUFPakksTUFBS0ssYUFBYXJPLE9BQzNCLEVBQUNnTyxNQXlCRDRzQixXQUFhLFNBQUNwOUIsS0FBTXE5QixTQUNsQixJQUFBNXJCLFlBWUlqQixNQUFLelQsTUFYUHBKLE9BQU04ZCxZQUFOOWQsT0FDQVcsV0FBVW1kLFlBQVZuZCxXQUNBZ0csV0FBVW1YLFlBQVZuWCxXQUNBZ0ssT0FBTW1OLFlBQU5uTixPQUNBOEssU0FBUXFDLFlBQVJyQyxTQUNBL2YsS0FBSW9pQixZQUFKcGlCLEtBQ0F1SSxVQUFTNlosWUFBVDdaLFVBQ0FpVSxtQkFBa0I0RixZQUFsQjVGLG1CQUNBa0wsVUFBU3RGLFlBQVRzRixVQUNBckYsUUFBT0QsWUFBUEMsUUFDQXBDLGNBQWFtQyxZQUFibkMsY0FHRnVDLFlBQXVDckIsTUFBS0csTUFBcEMyc0IsaUJBQWdCenJCLFlBQWhCeXJCLGlCQUFrQkMsU0FBUTFyQixZQUFSMHJCLFNBR3BCQyxZQWxHVSxTQUFoQkMsY0FBaUJDLEtBQU1sbEMsTUFBT0MsSUFBS3NlLFVBQVduZixXQUFTLE9BQ3pEOGxDLEtBQUt6dEMsUUFBTyxTQUFDa21CLEdBQUMsT0FBS3lSLEVBQUFBLFlBQUFBLElBQVF6UixFQUFHM2QsTUFBT0MsSUFBS3NlLFVBQVduZixVQUFVLEdBQUMsQ0FpRzFDNmxDLEVBQWF6aEMsRUFBQUEsa0JBQUFBLEdBQzNCckksUUFDSnFNLEtBQUssR0FDTEEsS0FBS0EsS0FBS3JPLE9BQVMsR0FDbkJvbEIsVUFDQW5mLFdBR0k2eUIsUUFBU2tULEVBQUFBLFlBQUFBLElBQWVILFlBQWF6bUIsVUFBV25mLFdBRXRELE9BQ0VqRixFQUFBQSxZQUFBQSxLQUFDdWxCLGVBQUFBLEVBQWMsQ0FFYmxHLElBQWlCLElBQVpxckIsUUFBZ0I3c0IsTUFBS290QixnQkFBYTNpQixFQUN2Q3RJLFVBQVduQyxNQUFLaUksYUFDaEI3bEIsVUFBVSxnQkFDVjBSLE9BQVFBLE9BQ1JqVixLQUFNQSxLQUNOOFMsTUFBT25DLEtBQ1ByTSxPQUFRODJCLE9BQ1I1VCxRQUFTdkgsY0FBZ0IrSyxJQUFXa2pCLFNBQ3BDbnVCLFNBQVVBLFNBQ1Y5VSxXQUFZQSxXQUNaaEcsV0FBWUEsV0FDWnlpQixVQUFXQSxVQUNYckYsUUFBU0EsUUFDVDlaLFVBQVdBLFVBQ1hnaEIsYUFBY3BJLE1BQUtxdEIsa0JBQ25CbmtCLGlCQUFrQjRqQixpQkFDbEJsdkIsV0FBWW9DLE1BQUs4SCxlQUNqQnFCLFNBQVVuSixNQUFLeEwsa0JBQ2Y0VSxjQUFlcEosTUFBS2dPLHVCQUNwQjNFLFdBQVlySixNQUFLaU8sb0JBQ2pCbGtCLGFBQWNpVyxNQUFLM0wsaUJBQ25CZ0gsbUJBQW9CQSxtQkFDcEJwSyxJQUFLK08sTUFBS3pULE1BQU0wRSxJQUNoQnRMLFVBQVdxYSxNQUFLelQsTUFBTTVHLFVBQ3RCbVosY0FBZUEsZUF6QlYrdEIsUUE0QlgsRUFBQzdzQixNQUVEcXRCLGtCQUFvQixTQUFBbm1DLE1BQW1DLElBQWhDckksS0FBSXFJLEtBQUpySSxLQUFNdUQsVUFBUzhFLEtBQVQ5RSxVQUFjbUssT0FBS2pGLEVBQUFBLHdCQUFBQSxHQUFBSixLQUFBSyxXQUM5Q2dlLGFBQXlEdkYsTUFBS3pULE1BQWxENFUsWUFBV29FLGFBQWpCMW1CLEtBQW1CZ2MsaUJBQWdCMEssYUFBaEIxSyxpQkFBa0J6VCxVQUFTbWUsYUFBVG5lLFVBQ3ZDa21DLFdBQWFsbUMsVUFBVXlhLElBQUloakIsS0FBTXNpQixZQUFhLFNBQzlDb3NCLFVBQVlubUMsVUFBVXdhLFdBQVcvaUIsS0FBTXNpQixhQUN2Q25KLGNBQWdCNkMsaUJBQWlCaGMsTUFDakNzWSxNQUFRL1AsVUFBVTJSLE9BQU9sYSxLQUFNLGNBQy9CMnVDLG9CQUFzQnh0QixNQUFLelQsTUFBTXpJLFdBQVcycEMsWUFBY2YsZUFFOUQsT0FDRXZxQyxFQUFBQSxZQUFBQSxLQUFBLE1BQUE3QyxPQUFBbUQsT0FBQSxHQUNNOEosTUFBSyxDQUNUbkssV0FBVzRVLEVBQUFBLE9BQUFBLEdBQ1Q1VSxVQUNBa3JDLFlBQWMsZ0JBQ2RDLFdBQWEsZUFFZjdqQixLQUFLLE9BQU1ybkIsVUFFWEYsRUFBQUEsWUFBQUEsS0FBQ3FyQyxvQkFBbUIsQ0FDbEJyMkIsTUFBT0EsTUFDUHRZLEtBQU1BLEtBQ05tWixjQUFlQSxjQUNmczFCLFdBQVlBLFdBQ1o5d0IsWUFBYSxTQUFBQSxZQUFDbUosR0FBQyxPQUFLM0YsTUFBSzB0QixtQkFBbUI3dUMsS0FBTW1aLGNBQWUyTixFQUFFLE1BSTNFLEVBQUMzRixNQTRGRDNMLGlCQUFtQixTQUFDMUMsTUFBTzZMLFVBQ3pCd0MsTUFBS3dqQixrQkFBb0J4akIsTUFBS3dqQixrQkFBa0JqNEIsT0FBT29HLE9BRXZEdUssYUFBYThELE1BQUt1akIsY0FDbEJ2akIsTUFBS3VqQixhQUFlcG5CLFlBQVcsa0JBQU02RCxNQUFLaWYsWUFBWXpoQixTQUFTLEdBQ2pFLEVBQUN3QyxNQUVEMHRCLG1CQUFxQixTQUFDN3VDLEtBQU1pWSxLQUFNNk8sR0FDaENBLEVBQUVDLGlCQUNGNUYsTUFBS29oQixrQkFDTC9kLEVBQUFBLFFBQUFBLElBQU9yRCxNQUFLelQsTUFBTWlRLFlBQWEsQ0FBQzNkLEtBQU1pWSxNQUN4QyxFQUFDa0osTUFFRHhMLGtCQUFvQixXQUNsQndMLE1BQUtvaEIsaUJBQWdCLFFBQUF4RCxNQUFBMThCLFVBQUFDLE9BRENvQixLQUFJLElBQUEyTCxNQUFBMHZCLE9BQUFDLE1BQUEsRUFBQUEsTUFBQUQsTUFBQUMsUUFBSnQ3QixLQUFJczdCLE9BQUEzOEIsVUFBQTI4QixRQUUxQnhhLEVBQUFBLFFBQUFBLElBQU9yRCxNQUFLelQsTUFBTTdJLGNBQWVuQixLQUNuQyxFQUFDeWQsTUFFRGdPLHVCQUF5QixXQUN2QmhPLE1BQUtvaEIsaUJBQWdCLFFBQUF0RCxNQUFBNThCLFVBQUFDLE9BRE1vQixLQUFJLElBQUEyTCxNQUFBNHZCLE9BQUFDLE1BQUEsRUFBQUEsTUFBQUQsTUFBQUMsUUFBSng3QixLQUFJdzdCLE9BQUE3OEIsVUFBQTY4QixRQUUvQjFhLEVBQUFBLFFBQUFBLElBQU9yRCxNQUFLelQsTUFBTTZQLG1CQUFvQjdaLEtBQ3hDLEVBQUN5ZCxNQUVEaU8sb0JBQXNCLFdBQ3BCak8sTUFBS29oQixpQkFBZ0IsUUFBQXBELE1BQUE5OEIsVUFBQUMsT0FER29CLEtBQUksSUFBQTJMLE1BQUE4dkIsT0FBQUMsTUFBQSxFQUFBQSxNQUFBRCxNQUFBQyxRQUFKMTdCLEtBQUkwN0IsT0FBQS84QixVQUFBKzhCLFFBRTVCNWEsRUFBQUEsUUFBQUEsSUFBT3JELE1BQUt6VCxNQUFNb1EsZ0JBQWlCcGEsS0FDckMsRUFBQ3lkLE1BRUQ4SCxlQUFpQixTQUFDM2tCLE9BQVF0RSxLQUFNa3BCLEtBQU1oRSxLQUFNL2lCLFFBQzFDLElBQUFtbkIsYUFNSW5JLE1BQUt6VCxNQUxQL0ksTUFBSzJrQixhQUFMM2tCLE1BQ0FnWixZQUFXMkwsYUFBWDNMLFlBQ0FvQixXQUFVdUssYUFBVnZLLFdBQ0EvQyxpQkFBZ0JzTixhQUFoQnROLGlCQUNBd21CLG9CQUFtQmxaLGFBQW5Ca1osb0JBS0YsR0FGQXJoQixNQUFLb2hCLGlCQUVENTlCLE1BQU8sQ0FDVCxJQUFJZ29CLFVBQVdjLEVBQUFBLGFBQUFBLEdBQVl2RSxLQUFNL0gsTUFBS0ssYUFBYXJPLFNBRW5EZ08sTUFBS2tELFNBQVMsQ0FDWjZLLFFBQVMsQ0FBRWx2QixLQUFBQSxLQUFNc0UsT0FBQUEsT0FBUXFvQixTQUFBQSxTQUFVeHFCLE9BQUFBLFNBRXZDLE1BQVdxZ0Msc0JBQ1RoZSxFQUFBQSxRQUFBQSxJQUFPN0csWUFBYSxDQUFDM2QsS0FBTWdjLGlCQUFpQmhjLE9BQVNnRixVQUFBQSxFQUFNYixPQUc3RHFnQixFQUFBQSxRQUFBQSxJQUFPekYsV0FBWSxDQUFDemEsT0FBUXRFLEtBQU1rbEIsTUFDcEMsRUFBQy9ELE1BRURtTyxlQUFpQixXQUNmbk8sTUFBS2tELFNBQVMsQ0FDWjZLLFFBQVMsTUFFYixFQXBURS9OLE1BQUtHLE1BQVEsQ0FDWDRzQixTQUFVLEVBQ1ZELGtCQUFrQixFQUNsQmp1QyxLQUFNLE1BRVJtaEIsTUFBS0ssY0FBZUMsRUFBQUEsTUFBQUEsYUFDcEJOLE1BQUtvdEIsWUFBYTlzQixFQUFBQSxNQUFBQSxhQUVsQk4sTUFBSzJ0QixRQUFVLEdBQ2YzdEIsTUFBS3dqQixrQkFBb0IsR0FBRXhqQixLQUM3QixDQUFDLE9BQUFPLEVBQUFBLFNBQUFBLFNBQUFvc0IsVUFBQTdzQixtQkFBQVUsRUFBQUEsWUFBQUEsU0FBQW1zQixVQUFBLEVBQUExc0MsSUFBQSxvQkFBQUMsTUFTRCxTQUFBdWdCLG9CQUFvQixJQUNkbXRCLFFBRGM5ckIsT0FBQSxLQUdkcEIsS0FBS1AsTUFBTTJzQixrQkFBa0Jwc0IsS0FBS210QixnQkFBZ0JudEIsS0FBS25VLE9BRTNEK0gsT0FBTzRYLGlCQUNMLFNBQ0N4TCxLQUFLb3RCLGdCQUFrQixXQUNqQkYsU0FDSDNNLGVBQUFBLEdBQXVCLFdBQ3JCMk0sU0FBVSxFQUNWOXJCLE9BQUtvQixTQUFTLENBQUU0cEIsa0JBQWtCLEdBQ3BDLEdBRUosR0FDQSxFQUVKLEdBQUMsQ0FBQTdzQyxJQUFBLHFCQUFBQyxNQUVELFNBQUE0Z0IscUJBQ01KLEtBQUtQLE1BQU0yc0Isa0JBQWtCcHNCLEtBQUttdEIsZ0JBQWdCbnRCLEtBQUtuVSxNQUM3RCxHQUFDLENBQUF0TSxJQUFBLHVCQUFBQyxNQUVELFNBQUEwZ0IsdUJBQ0V0TSxPQUFPNlgsb0JBQW9CLFNBQVV6TCxLQUFLb3RCLGlCQUFpQixFQUM3RCxHQUFDLENBQUE3dEMsSUFBQSxTQUFBQyxNQU1ELFNBQUE4Z0IsU0FDRSxJQUFBc0gsYUFBcUM1SCxLQUFLblUsTUFBcEMxTixLQUFJeXBCLGFBQUp6cEIsS0FBTXVJLFVBQVNraEIsYUFBVGxoQixVQUFXaEYsVUFBU2ttQixhQUFUbG1CLFVBQ3JCdU4sTUFBUXZJLFVBQVU2a0MsWUFBWXB0QyxLQUFNdUksV0FDcEMybUMsTUFBUUMsZ0JBQU1yK0IsTUFBTyxHQUl2QixPQUZBK1EsS0FBS3V0QixXQUFhRixNQUFNNXNDLFFBR3RCMEssRUFBQUEsWUFBQUEsTUFBQSxPQUNFekosV0FBVzRVLEVBQUFBLE9BQUFBLEdBQUssaUJBQWtCNVUsV0FDbENzbkIsS0FBSyxRQUNMLGFBQVcsYUFDWGxJLElBQUtkLEtBQUtMLGFBQWFoZSxTQUFBLEVBRXZCRixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsMkJBQTJCc25CLEtBQUssTUFBS3JuQixTQUNqRHFlLEtBQUt3dEIsY0FBY0gsTUFBTSxNQUUzQkEsTUFBTWwvQixJQUFJNlIsS0FBS2tzQixZQUNmbHNCLEtBQUtuVSxNQUFNL0ksT0FBU2tkLEtBQUswaUIsa0JBR2hDLEdBQUMsQ0FBQW5qQyxJQUFBLGdCQUFBQyxNQTJGRCxTQUFBZ3VDLGNBQWN2cEIsS0FDWixJQUFBc0UsYUFBZ0N2SSxLQUFLblUsTUFBL0JuRixVQUFTNmhCLGFBQVQ3aEIsVUFBV3RELFdBQVVtbEIsYUFBVm5sQixXQUNiNmlCLE1BQVFoQyxJQUFJLEdBQ1ppQyxLQUFPakMsSUFBSUEsSUFBSXhqQixPQUFTLEdBQ3hCZy9CLGdCQUFrQnI4QixXQUFXbzhCLFFBQVU1VSxPQUFBQSxFQUUzQyxPQUFPbGtCLFVBQVV1SyxNQUFNZ1YsTUFBT0MsS0FBTSxPQUFPL1gsS0FBSSxTQUFDYSxJQUFLc0IsS0FBRyxPQUN0RDdPLEVBQUFBLFlBQUFBLEtBQUEsT0FBMkJDLFVBQVUsYUFBWUMsVUFDL0NGLEVBQUFBLFlBQUFBLEtBQUNnK0IsZ0JBQWUsQ0FDZHRoQyxLQUFNNlEsSUFDTnRJLFVBQVdBLFVBQ1grUCxNQUFPL1AsVUFBVTJSLE9BQU9ySixJQUFLLG9CQUp2QixVQUFZc0IsSUFNaEIsR0FFVixHQUFDLENBQUEvUSxJQUFBLGdCQUFBQyxNQUVELFNBQUFrakMsZ0JBQWdCLElBQUFFLG9CQUFBNkssYUFBQXpQLE9BQUEsS0FDVjNRLFFBQTZCLFFBQXRCdVYsb0JBQWEsUUFBYjZLLGFBQUd6dEIsS0FBS1AsYUFBSyxJQUFBZ3VCLGtCQUFBLEVBQVZBLGFBQVlwZ0IsZUFBTyxJQUFBdVYsb0JBQUFBLG9CQUFJLENBQUMsRUFDdEM4SyxhQVFJMXRCLEtBQUtuVSxNQVBQZ2EsVUFBUzZuQixhQUFUN25CLFVBQ0FuZixVQUFTZ25DLGFBQVRobkMsVUFDQXRELFdBQVVzcUMsYUFBVnRxQyxXQUNBb2QsUUFBT2t0QixhQUFQbHRCLFFBQ0F0QyxTQUFRd3ZCLGFBQVJ4dkIsU0FDQVosWUFBV293QixhQUFYcHdCLFlBQ0EwTixnQkFBZTBpQixhQUFmMWlCLGdCQUtGLE9BQ0V2cEIsRUFBQUEsWUFBQUEsS0FBQ3NzQixXQUFBQSxFQUFVLENBQ1RWLFFBQVNBLFFBQ1R4SCxVQUFXQSxVQUNYbmYsVUFBV0EsVUFDWHRELFdBQVlBLFdBQ1pvZCxRQUFTQSxRQUNUdEMsU0FBVUEsU0FDVlosWUFBYUEsWUFDYndELElBQUtkLEtBQUtMLGFBQ1Y0TixvQkFBcUJ2TixLQUFLdU4sb0JBQzFCelosa0JBQW1Ca00sS0FBS2xNLGtCQUN4QndaLHVCQUF3QnROLEtBQUtzTix1QkFDN0J0QyxnQkFBaUJBLGdCQUNqQkQsT0FBUXNDLFFBQVF2QyxTQUNoQjJDLGVBQWdCek4sS0FBS3lOLGVBQ3JCRCxPQWxCVyxTQUFUQSxTQUFNLE9BQVN3USxPQUFLeGIsU0FBUyxDQUFFNkssUUFBUyxNQUFPLEdBb0R2RCxHQUFDLENBQUE5dEIsSUFBQSxrQkFBQUMsTUFFRCxTQUFBMnRDLGtCQUNFbnRCLEtBQUt3QyxTQUFTLENBQ1o0cEIsa0JBQWtCLEVBQ2xCQyxTQUFVcnNCLEtBQUswc0IsV0FBV3A3QixRQUFRMFcsZUFFdEMsR0FBQyxDQUFBem9CLElBQUEsY0FBQUMsTUE0REQsU0FBQSsrQixZQUFZemhCLFVBQ1YsSUFBSTZHLE1BQVEzRCxLQUFLOGlCLGtCQUFrQjNiLFFBRW5DbkgsS0FBSzhpQixrQkFBb0IsR0FFekJuZixNQUFNd1csTUFBSyxTQUFDNVUsRUFBR0MsR0FBQyxPQUFNRCxHQUFLQyxDQUFDLElBRTVCLElBQU1sZSxNQUFRLElBQUk5RSxLQUFLbWhCLE1BQU0sSUFDdkJwYyxJQUFNLElBQUkvRSxLQUFLbWhCLE1BQU1BLE1BQU1sakIsT0FBUyxJQUMxQzhHLElBQUl5UCxRQUFRMk0sTUFBTUEsTUFBTWxqQixPQUFTLEdBQUc4VCxVQUFZLElBRWhEb08sRUFBQUEsUUFBQUEsSUFBTzNDLEtBQUtuVSxNQUFNeEMsYUFBYyxDQUM5QnNhLE1BQUFBLE1BQ0FyYyxNQUFBQSxNQUNBQyxJQUFBQSxJQUNBdEUsT0FBUTZaLFNBQVM3WixPQUNqQitmLE9BQVFsRyxTQUFTa0csT0FDakJWLElBQUt4RixTQUFTd0YsS0FFbEIsR0FBQyxDQUFBL2lCLElBQUEsaUJBQUFDLE1BRUQsU0FBQWtoQyxpQkFDRWxsQixhQUFhd0UsS0FBSzZpQixjQUNsQjdpQixLQUFLOGlCLGtCQUFvQixFQUMzQixJQUFDLEVBQUF2akMsSUFBQSwyQkFBQUMsTUFsVUQsU0FBQW11Qyx5QkFBQXpqQyxNQUFxRHVWLE9BQU8sSUFBMUJ0aEIsS0FBSStMLE1BQUovTCxLQUNoQyxNQUFPLENBQ0xBLEtBQUFBLEtBQ0FpdUMsaUJBSDZDbGlDLE1BQVR4RCxVQUdSeWEsSUFBSWhqQixLQUFNc2hCLE1BQU10aEIsS0FBTSxTQUV0RCxJQUFDLENBckJZLENBQVNnVSxNQUFBQSxXQXFZeEI4NUIsVUFBVWg3QixNQUFRLFNBQUM5UyxLQUFJNk0sT0FBb0IsSUFBaEJ0RSxVQUFTc0UsTUFBVHRFLFVBR3pCLE1BQU8sQ0FBRVksTUFGR1osVUFBVTJrQyxnQkFBZ0JsdEMsS0FBTXVJLFdBRTVCYSxJQUROYixVQUFVNGtDLGVBQWVudEMsS0FBTXVJLFdBRTNDLEVBRUF1bEMsVUFBVXo2QixTQUFXLFNBQUNyVCxLQUFNOEUsT0FBTW9PLE9BQW9CLElBQWhCM0ssVUFBUzJLLE1BQVQzSyxVQUNwQyxPQUFRekQsUUFDTixLQUFLdU8sVUFBQUEsRUFBU0UsU0FDWixPQUFPaEwsVUFBVXNCLElBQUk3SixNQUFPLEVBQUcsU0FFakMsS0FBS3FULFVBQUFBLEVBQVNHLEtBQ1osT0FBT2pMLFVBQVVzQixJQUFJN0osS0FBTSxFQUFHLFNBRWhDLFFBQ0UsT0FBT0EsS0FFYixFQUVBOHRDLFVBQVU3cUMsTUFBUSxTQUFDakQsS0FBSXl2QyxPQUFhLE9BQUFBLE1BQVRsbkMsVUFDZjJSLE9BQU9sYSxLQUFNLG9CQUFvQixFQUFBOHRDLFVBQUFuakMsYUFBQSxzcElBRTdDLG9CQUF3QixvQkFBQUMsMEJBQUFBLHdCQUFBLGlCQUFBQyxLQUFBLFlBQUFDLFdBQUFnakMsVUFBQW5qQyxhQUFBSSxLQUFBLGlCLHNJQzFhbEIya0MsSUFBRyxTQUFBenVCLGtCQUFBLFNBQUF5dUIsTUFBQSxPQUFBdHVCLEVBQUFBLGVBQUFBLFNBQUEsS0FBQXN1QixNQUFBcnVCLEVBQUFBLFVBQUFBLFNBQUEsS0FBQXF1QixJQUFBcnRDLFVBQUEsUUFBQXFmLEVBQUFBLFNBQUFBLFNBQUFndUIsSUFBQXp1QixtQkFBQVUsRUFBQUEsWUFBQUEsU0FBQSt0QixJQUFBLEVBQUF0dUMsSUFBQSxTQUFBQyxNQUNQLFNBQUE4Z0IsU0FNRSxJQUFBQyxZQVFJUCxLQUFLblUsTUFQUDFOLEtBQUlvaUIsWUFBSnBpQixLQUNBdUksVUFBUzZaLFlBQVQ3WixVQUFTb25DLGdCQUFBdnRCLFlBQ1RwWixJQUFBQSxTQUFHLElBQUEybUMsZ0JBQUdwbkMsVUFBVW9LLFFBQVEsSUFBSXRPLEtBQVEsT0FBTXNyQyxnQkFBQUMsZ0JBQUF4dEIsWUFDMUNsWixJQUFBQSxTQUFHLElBQUEwbUMsZ0JBQUdybkMsVUFBVWtLLE1BQU0sSUFBSXBPLEtBQVEsT0FBTXVyQyxnQkFBQUMsc0JBQUF6dEIsWUFDeEM3WCxhQUFBQSxrQkFBWSxJQUFBc2xDLHNCQUFHdG5DLFVBQVVvSyxRQUFRLElBQUl0TyxLQUFRLE9BQU13ckMsc0JBQUFDLHNCQUFBMXRCLFlBQ25ENGlCLGlCQUFBQSxzQkFBZ0IsSUFBQThLLHVCQUFPQSxzQkFDcEJwaUMsT0FBS2pGLEVBQUFBLHdCQUFBQSxHQUFBMlosWUFBQTFaLGNBRU5vSyxNQUFRNDhCLElBQUk1OEIsTUFBTTlTLEtBQU0sQ0FBRXVJLFVBQVdBLFlBRXpDLE9BQ0VqRixFQUFBQSxZQUFBQSxLQUFDeVAsU0FBQUEsRUFBUXRTLE9BQUFtRCxPQUFBLEdBQ0g4SixNQUFLLENBQ1RvRixNQUFPQSxNQUNQRSxZQUFhLEdBQ2J6SyxVQUFXQSxVQUNYUyxJQUFLQSxJQUNMRSxJQUFLQSxJQUNMcUIsYUFBY0EsYUFDZHk2QixpQkFBa0JBLG1CQUd4QixJQUFDLENBOUJNLENBQVNoeEIsTUFBQUEsV0E4RmxCMDdCLElBQUk1OEIsTUFBUSxTQUFDOVMsS0FBSXFJLE1BQ2YsTUFBTyxDQURxQkEsS0FBVEUsVUFDRG9LLFFBQVEzUyxLQUFNLE9BQ2xDLEVBRUEwdkMsSUFBSXI4QixTQUFXLFNBQUNyVCxLQUFNOEUsT0FBTWlILE9BQW9CLElBQWhCeEQsVUFBU3dELE1BQVR4RCxVQUM5QixPQUFRekQsUUFDTixLQUFLdU8sVUFBQUEsRUFBU0UsU0FDWixPQUFPaEwsVUFBVXNCLElBQUk3SixNQUFPLEVBQUcsT0FFakMsS0FBS3FULFVBQUFBLEVBQVNHLEtBQ1osT0FBT2pMLFVBQVVzQixJQUFJN0osS0FBTSxFQUFHLE9BRWhDLFFBQ0UsT0FBT0EsS0FFYixFQUVBMHZDLElBQUl6c0MsTUFBUSxTQUFDakQsS0FBSTZNLE9BQWEsT0FBQUEsTUFBVHRFLFVBQTBCMlIsT0FBT2xhLEtBQU0sa0JBQWtCLEVBQUEwdkMsSUFBQS9rQyxhQUFBLGt0R0FFOUUsZ0JBQWtCLG9CQUFBQywwQkFBQUEsd0JBQUEsZUFBQUMsS0FBQSxNQUFBQyxXQUFBNGtDLElBQUEva0MsYUFBQUksS0FBQSxlLHlLQ2pIWmdsQyxLQUFJLFNBQUE5dUIsa0JBQUEsU0FBQTh1QixPQUFBLE9BQUEzdUIsRUFBQUEsZUFBQUEsU0FBQSxLQUFBMnVCLE9BQUExdUIsRUFBQUEsVUFBQUEsU0FBQSxLQUFBMHVCLEtBQUExdEMsVUFBQSxRQUFBcWYsRUFBQUEsU0FBQUEsU0FBQXF1QixLQUFBOXVCLG1CQUFBVSxFQUFBQSxZQUFBQSxTQUFBb3VCLEtBQUEsRUFBQTN1QyxJQUFBLFNBQUFDLE1BQ1IsU0FBQThnQixTQU1FLElBQUFDLFlBUUlQLEtBQUtuVSxNQVBQMU4sS0FBSW9pQixZQUFKcGlCLEtBQ0F1SSxVQUFTNlosWUFBVDdaLFVBQVNvbkMsZ0JBQUF2dEIsWUFDVHBaLElBQUFBLFNBQUcsSUFBQTJtQyxnQkFBR3BuQyxVQUFVb0ssUUFBUSxJQUFJdE8sS0FBUSxPQUFNc3JDLGdCQUFBQyxnQkFBQXh0QixZQUMxQ2xaLElBQUFBLFNBQUcsSUFBQTBtQyxnQkFBR3JuQyxVQUFVa0ssTUFBTSxJQUFJcE8sS0FBUSxPQUFNdXJDLGdCQUFBQyxzQkFBQXp0QixZQUN4QzdYLGFBQUFBLGtCQUFZLElBQUFzbEMsc0JBQUd0bkMsVUFBVW9LLFFBQVEsSUFBSXRPLEtBQVEsT0FBTXdyQyxzQkFBQUMsc0JBQUExdEIsWUFDbkQ0aUIsaUJBQUFBLHNCQUFnQixJQUFBOEssdUJBQU9BLHNCQUNwQnBpQyxPQUFLakYsRUFBQUEsd0JBQUFBLEdBQUEyWixZQUFBMVosZUFFTm9LLE1BQVFpOUIsS0FBS2o5QixNQUFNOVMsS0FBTTZoQixLQUFLblUsT0FFbEMsT0FDRXBLLEVBQUFBLFlBQUFBLEtBQUN5UCxTQUFBQSxFQUFRdFMsT0FBQW1ELE9BQUEsR0FDSDhKLE1BQUssQ0FDVG9GLE1BQU9BLE1BQ1BFLFlBQWEsR0FDYnpLLFVBQVdBLFVBQ1hTLElBQUtBLElBQ0xFLElBQUtBLElBQ0xxQixhQUFjQSxhQUNkeTZCLGlCQUFrQkEsbUJBR3hCLElBQUMsQ0E5Qk8sQ0FBU2h4QixNQUFBQSxXQThGbkIrN0IsS0FBSzlvQixhQUFlbFUsU0FBQUEsRUFBU2tVLGFBRTdCOG9CLEtBQUsxOEIsU0FBVyxTQUFDclQsS0FBTThFLE9BQU11RCxNQUFvQixJQUFoQkUsVUFBU0YsS0FBVEUsVUFDL0IsT0FBUXpELFFBQ04sS0FBS3VPLFVBQUFBLEVBQVNFLFNBQ1osT0FBT2hMLFVBQVVzQixJQUFJN0osTUFBTyxFQUFHLFFBRWpDLEtBQUtxVCxVQUFBQSxFQUFTRyxLQUNaLE9BQU9qTCxVQUFVc0IsSUFBSTdKLEtBQU0sRUFBRyxRQUVoQyxRQUNFLE9BQU9BLEtBRWIsRUFFQSt2QyxLQUFLajlCLE1BQVEsU0FBQzlTLEtBQUkrTCxPQUFvQixJQUFoQnhELFVBQVN3RCxNQUFUeEQsVUFDaEJ1a0MsWUFBY3ZrQyxVQUFVeWtDLGNBQ3hCN2pDLE1BQVFaLFVBQVVvSyxRQUFRM1MsS0FBTSxPQUFROHNDLGFBQ3hDMWpDLElBQU1iLFVBQVVrSyxNQUFNelMsS0FBTSxPQUFROHNDLGFBRXhDLE9BQU92a0MsVUFBVXVLLE1BQU0zSixNQUFPQyxJQUNoQyxFQUVBMm1DLEtBQUs5c0MsTUFBUSxTQUFDakQsS0FBSTZNLE9BQW9CLElBQWhCdEUsVUFBU3NFLE1BQVR0RSxVQUNwQnluQyxZQUF1QkQsS0FBS2o5QixNQUFNOVMsS0FBTSxDQUFFdUksVUFBQUEsWUFBWTBuQyxjQUFBQyxFQUFBQSxRQUFBQSxHQUFBRixhQUFqRDdtQyxNQUFLOG1DLGFBQUEsR0FBS0UsS0FBSUYsYUFBQWpuQixNQUFBLEdBQ25CLE9BQU96Z0IsVUFBVTJSLE9BQU8sQ0FBRS9RLE1BQUFBLE1BQU9DLElBQUsrbUMsS0FBS0MsT0FBUyx1QkFDdEQsRUFBQ0wsS0FBQXBsQyxhQUFBLG10R0FFRCxrQkFBbUIsb0JBQUFDLDBCQUFBQSx3QkFBQSxnQkFBQUMsS0FBQSxPQUFBQyxXQUFBaWxDLEtBQUFwbEMsYUFBQUksS0FBQSxnQix5RkM1SG5CLFNBQVNzbEMsY0FBY3J3QyxLQUFNNkksU0FDM0IsT0FBT2tuQyxTQUFLajlCLE1BQU05UyxLQUFNNkksU0FBU2pJLFFBQy9CLFNBQUMwdkMsR0FBQyxPQUFxQyxJQUFoQyxDQUFDLEVBQUcsR0FBR3BlLFFBQVFvZSxFQUFFQyxTQUFnQixHQUU1QyxDQUFDLElBRUtDLFNBQVEsU0FBQXZ2QixrQkFBQSxTQUFBdXZCLFdBQUEsT0FBQXB2QixFQUFBQSxlQUFBQSxTQUFBLEtBQUFvdkIsV0FBQW52QixFQUFBQSxVQUFBQSxTQUFBLEtBQUFtdkIsU0FBQW51QyxVQUFBLFFBQUFxZixFQUFBQSxTQUFBQSxTQUFBOHVCLFNBQUF2dkIsbUJBQUFVLEVBQUFBLFlBQUFBLFNBQUE2dUIsU0FBQSxFQUFBcHZDLElBQUEsU0FBQUMsTUFDWixTQUFBOGdCLFNBTUUsSUFBQUMsWUFRSVAsS0FBS25VLE1BUFAxTixLQUFJb2lCLFlBQUpwaUIsS0FDQXVJLFVBQVM2WixZQUFUN1osVUFBU29uQyxnQkFBQXZ0QixZQUNUcFosSUFBQUEsU0FBRyxJQUFBMm1DLGdCQUFHcG5DLFVBQVVvSyxRQUFRLElBQUl0TyxLQUFRLE9BQU1zckMsZ0JBQUFDLGdCQUFBeHRCLFlBQzFDbFosSUFBQUEsU0FBRyxJQUFBMG1DLGdCQUFHcm5DLFVBQVVrSyxNQUFNLElBQUlwTyxLQUFRLE9BQU11ckMsZ0JBQUFDLHNCQUFBenRCLFlBQ3hDN1gsYUFBQUEsa0JBQVksSUFBQXNsQyxzQkFBR3RuQyxVQUFVb0ssUUFBUSxJQUFJdE8sS0FBUSxPQUFNd3JDLHNCQUFBQyxzQkFBQTF0QixZQUNuRDRpQixpQkFBQUEsc0JBQWdCLElBQUE4Syx1QkFBT0Esc0JBQ3BCcGlDLE9BQUtqRixFQUFBQSx3QkFBQUEsR0FBQTJaLFlBQUExWixtQkFFTm9LLE1BQVF1OUIsY0FBY3J3QyxLQUFNNmhCLEtBQUtuVSxPQUNyQyxPQUNFcEssRUFBQUEsWUFBQUEsS0FBQ3lQLFNBQUFBLEVBQVF0UyxPQUFBbUQsT0FBQSxHQUNIOEosTUFBSyxDQUNUb0YsTUFBT0EsTUFDUEUsWUFBYSxHQUNiekssVUFBV0EsVUFDWFMsSUFBS0EsSUFDTEUsSUFBS0EsSUFDTHFCLGFBQWNBLGFBQ2R5NkIsaUJBQWtCQSxtQkFHeEIsSUFBQyxDQTdCVyxDQUFTaHhCLE1BQUFBLFdBeUN2Qnc4QixTQUFTdnBCLGFBQWVsVSxTQUFBQSxFQUFTa1UsYUFFakN1cEIsU0FBUzE5QixNQUFRdTlCLGNBRWpCRyxTQUFTbjlCLFNBQVcwOEIsU0FBSzE4QixTQUV6Qm05QixTQUFTdnRDLE1BQVEsU0FBQ2pELEtBQUlxSSxNQUFvQixJQUFoQkUsVUFBU0YsS0FBVEUsVUFDeEJrb0MsZUFBdUJKLGNBQWNyd0MsS0FBTSxDQUFFdUksVUFBQUEsWUFBWW1vQyxpQkFBQVIsRUFBQUEsUUFBQUEsR0FBQU8sZ0JBQXBEdG5DLE1BQUt1bkMsZ0JBQUEsR0FBS1AsS0FBSU8sZ0JBQUExbkIsTUFBQSxHQUVuQixPQUFPemdCLFVBQVUyUixPQUFPLENBQUUvUSxNQUFBQSxNQUFPQyxJQUFLK21DLEtBQUtDLE9BQVMsdUJBQ3RELEVBQUNJLFNBQUE3bEMsYUFBQSx1bUJBRUQsMEJBQXVCLG9CQUFBQywwQkFBQUEsd0JBQUEsb0JBQUFDLEtBQUEsV0FBQUMsV0FBQTBsQyxTQUFBN2xDLGFBQUFJLEtBQUEsb0IsNGJDckR2QixTQUFTNGxDLE9BQU10b0MsTUFXWixJQVZEcWYsVUFBU3JmLEtBQVRxZixVQUNBemlCLFdBQVVvRCxLQUFWcEQsV0FDQWpGLEtBQUlxSSxLQUFKckksS0FDQXNFLE9BQU0rRCxLQUFOL0QsT0FDQStkLFFBQU9oYSxLQUFQZ2EsUUFBT3V1QixZQUFBdm9DLEtBQ1AvRixPQUFBQSxZQUFNLElBQUFzdUMsWUFQZSxHQU9FQSxZQUN2QnJvQyxVQUFTRixLQUFURSxVQUNBZ1YsbUJBQWtCbFYsS0FBbEJrVixtQkFDQTFZLGNBQWF3RCxLQUFieEQsY0FDQWtiLFNBQVExWCxLQUFSMFgsU0FFTTh3QixXQUFZenpCLEVBQUFBLE1BQUFBLFFBQU8sTUFDbkIwekIsWUFBYTF6QixFQUFBQSxNQUFBQSxRQUFPLE1BQ3BCMnpCLFlBQWEzekIsRUFBQUEsTUFBQUEsUUFBTyxNQUNwQnVsQixZQUFhdmxCLEVBQUFBLE1BQUFBLFFBQU8sTUFDcEI0ekIsVUFBVzV6QixFQUFBQSxNQUFBQSxRQUFPLE9BRXhCbEksRUFBQUEsTUFBQUEsWUFBVSxXQUNSKzdCLGVBQ0YsSUFFQSxJQTZETUMsZUFBaUIsU0FBakJBLGVBQWtCcmdDLElBQUs3RSxPQUMzQixJQUFJbWxDLFdBQWEsR0FDZkMsY0FBZ0Juc0MsV0FBV3lvQyxLQUMzQnAxQixNQUFRL1AsVUFBVXhDLFNBQVNzRCxPQUV6QkQsSUFBTXNlLFVBQVV0ZSxJQUFJNEMsT0FDcEI3QyxNQUFRdWUsVUFBVXZlLE1BQU02QyxPQWlCNUIsT0FmSzBiLFVBQVVyZSxPQUFPMkMsU0FDaEJ6RCxVQUFVbXdCLEdBQUd2dkIsTUFBT0MsS0FDdEJrUCxNQUFRL1AsVUFBVTJSLE9BQU8vUSxNQUFPLG9CQUN2QlosVUFBVXdhLFdBQVc1WixNQUFPQyxLQUNyQ2tQLE1BQVEvUCxVQUFVMlIsT0FBTyxDQUFFL1EsTUFBQUEsTUFBT0MsSUFBQUEsS0FBTyx5QkFDaENiLFVBQVV3YSxXQUFXbFMsSUFBSzFILE9BQ25DbVAsTUFBUS9QLFVBQVUyUixPQUFPL1EsTUFBTyxvQkFDdkJaLFVBQVV3YSxXQUFXbFMsSUFBS3pILE9BQ25Da1AsTUFBUS9QLFVBQVUyUixPQUFPOVEsSUFBSyxzQkFJOUJiLFVBQVV5d0IsR0FBR25vQixJQUFLMUgsTUFBTyxTQUFRZ29DLFdBQWEsdUJBQzlDNW9DLFVBQVVvbUIsR0FBRzlkLElBQUt6SCxJQUFLLFNBQVErbkMsWUFBYyx5QkFHL0M3dEMsRUFBQUEsWUFBQUEsS0FBQSxRQUFNQyxVQUFXNHRDLFdBQVdFLE9BQU83dEMsU0FDaEM0dEMsZUFDQzl0QyxFQUFBQSxZQUFBQSxLQUFDOHRDLGNBQWEsQ0FBQ3BsQyxNQUFPQSxNQUFPNkUsSUFBS0EsSUFBS3lILE1BQU9BLFFBRTlDQSxPQUlSLEVBRU0yNEIsY0FBZ0IsU0FBaEJBLGdCQUNKLEdBQUtELFNBQVM3OUIsUUFBZCxDQUVBLElBQUlrdUIsT0FBU3dQLFVBQVUxOUIsUUFDbkJtK0IsU0FBV04sU0FBUzc5QixRQUFRbytCLFdBRWhDLEdBQUtELFNBQUwsQ0FFQSxJQUFJOVAsY0FDRm1CLFdBQVd4dkIsUUFBUXl2QixhQUFlRCxXQUFXeHZCLFFBQVEwdkIsYUFFbkQyTyxRQUFVLEdBQ1ZDLE9BQVNELFFBRWJBLFFBQVUsRUFBQ3pNLEVBQUFBLE1BQUFBLEdBQVN1TSxTQUFTOXRDLFNBQVMsS0FBS3VoQyxFQUFBQSxNQUFBQSxHQUFTdU0sU0FBUzl0QyxTQUFTLEtBRWxFaXVDLE9BQU8sS0FBT0QsUUFBUSxJQUFNQyxPQUFPLEtBQU9ELFFBQVEsS0FDcERWLFdBQVczOUIsUUFBUXpELE1BQU1xQyxNQUFReS9CLFFBQVEsR0FBSyxLQUM5Q1QsV0FBVzU5QixRQUFRekQsTUFBTXFDLE1BQVF5L0IsUUFBUSxHQUFLLE1BRzVDaFEsZ0JBQ0ZrUSxFQUFBQSxTQUFBQSxHQUFTclEsT0FBUSwwQkFDakJBLE9BQU8zeEIsTUFBTWlpQyxhQUFjN1AsRUFBQUEsY0FBQUEsS0FBa0IsT0FFN0M4UCxFQUFBQSxZQUFBQSxHQUFZdlEsT0FBUSx5QkFuQkQsQ0FMUSxDQTBCL0IsRUFFTXQ3QixTQUFhd0MsVUFBYnhDLFNBQ0ZxRCxJQUFNYixVQUFVc0IsSUFBSTdKLEtBQU1zQyxPQUFRLE9BRWxDd1EsTUFBUXZLLFVBQVV1SyxNQUFNOVMsS0FBTW9KLElBQUssT0FjdkMsT0FaQTlFLE9BQVNBLE9BQU8xRCxRQUFPLFNBQUNvTCxPQUFLLE9BQzNCdXNCLEVBQUFBLFlBQUFBLElBQ0V2c0IsTUFDQXpELFVBQVVvSyxRQUFRM1MsS0FBTSxPQUN4QnVJLFVBQVVrSyxNQUFNckosSUFBSyxPQUNyQnNlLFVBQ0FuZixVQUNELEtBR0l5ekIsTUFBSyxTQUFDNVUsRUFBR0MsR0FBQyxPQUFNSyxVQUFVdmUsTUFBTWllLElBQU1NLFVBQVV2ZSxNQUFNa2UsRUFBRSxLQUc3RC9qQixFQUFBQSxZQUFBQSxLQUFBLE9BQUtDLFVBQVUsa0JBQWlCQyxTQUNYLElBQWxCYyxPQUFPaEMsUUFDTjBLLEVBQUFBLFlBQUFBLE1BQUNnSCxNQUFBQSxTQUFjLENBQUF4USxTQUFBLEVBQ2JGLEVBQUFBLFlBQUFBLEtBQUEsU0FBT3FmLElBQUtrdUIsVUFBV3R0QyxVQUFVLG1CQUFrQkMsVUFDakRGLEVBQUFBLFlBQUFBLEtBQUEsU0FBQUUsVUFDRXdKLEVBQUFBLFlBQUFBLE1BQUEsTUFBQXhKLFNBQUEsRUFDRUYsRUFBQUEsWUFBQUEsS0FBQSxNQUFJQyxVQUFVLGFBQWFvZixJQUFLbXVCLFdBQVd0dEMsU0FDeEN1QyxTQUFTL0YsUUFFWnNELEVBQUFBLFlBQUFBLEtBQUEsTUFBSUMsVUFBVSxhQUFhb2YsSUFBS291QixXQUFXdnRDLFNBQ3hDdUMsU0FBUzJuQyxRQUVacHFDLEVBQUFBLFlBQUFBLEtBQUEsTUFBSUMsVUFBVSxhQUFZQyxTQUFFdUMsU0FBU2lHLGdCQUkzQzFJLEVBQUFBLFlBQUFBLEtBQUEsT0FBS0MsVUFBVSxxQkFBcUJvZixJQUFLZ2dCLFdBQVduL0IsVUFDbERGLEVBQUFBLFlBQUFBLEtBQUEsU0FBT0MsVUFBVSxtQkFBa0JDLFVBQ2pDRixFQUFBQSxZQUFBQSxLQUFBLFNBQU9xZixJQUFLcXVCLFNBQVN4dEMsU0FDbEJzUCxNQUFNOUMsS0FBSSxTQUFDYSxJQUFLc0IsS0FBRyxPQWpLaEIsU0FBWjAvQixVQUFhaGhDLElBQUt2TSxPQUFRd3RDLFFBQzlCLElBQWU5N0IsTUFBNEIvUSxXQUFuQytHLE1BQW9CK2xDLFdBQWU5c0MsV0FBckJqRixLQVl0QixPQVZBc0UsT0FBU0EsT0FBTzFELFFBQU8sU0FBQ2ttQixHQUFDLE9BQ3ZCeVIsRUFBQUEsWUFBQUEsSUFDRXpSLEVBQ0F2ZSxVQUFVb0ssUUFBUTlCLElBQUssT0FDdkJ0SSxVQUFVa0ssTUFBTTVCLElBQUssT0FDckI2VyxVQUNBbmYsVUFDRCxLQUdXeUgsS0FBSSxTQUFDaEUsTUFBT21HLEtBQ3hCLElBQUlsUCxNQUFReWtCLFVBQVV6a0IsTUFBTStJLE9BQ3hCNUMsSUFBTXNlLFVBQVV0ZSxJQUFJNEMsT0FDcEI3QyxNQUFRdWUsVUFBVXZlLE1BQU02QyxPQUV0QjBmLFVBQVlySixRQUFRc0osVUFDeEIzZixNQUNBN0MsTUFDQUMsS0FDQXNRLEVBQUFBLFVBQUFBLElBQVcxTixNQUFPK1QsV0FHaEJpeUIsVUFBb0IsSUFBUjcvQixLQUFhNUosVUFBVTJSLE9BQU9ySixJQUFLLG9CQUMvQ2lYLE1BQ00sSUFBUjNWLE1BQ0U3TyxFQUFBQSxZQUFBQSxLQUFBLE1BQUkydUMsUUFBUzN0QyxPQUFPaEMsT0FBUWlCLFVBQVUsdUJBQXNCQyxTQUN6RHV1QyxZQUNDenVDLEVBQUFBLFlBQUFBLEtBQUN5dUMsV0FBVSxDQUFDbGhDLElBQUtBLElBQUt5SCxNQUFPMDVCLFlBRTdCQSxZQU9SLE9BQ0VobEMsRUFBQUEsWUFBQUEsTUFBQSxNQUVFekosVUFBV21vQixVQUFVbm9CLFVBQ3JCbU0sTUFBT2djLFVBQVVoYyxNQUFNbE0sU0FBQSxDQUV0QnNrQixPQUNEeGtCLEVBQUFBLFlBQUFBLEtBQUEsTUFBSUMsVUFBVSx1QkFBc0JDLFNBQUUwdEMsZUFBZXJnQyxJQUFLN0UsVUFDMUQxSSxFQUFBQSxZQUFBQSxLQUFBLE1BQ0VDLFVBQVUsd0JBQ1Y2VSxRQUFTLFNBQUFBLFFBQUMwTyxHQUFDLE9BQUtqaUIsZUFBaUJBLGNBQWNtSCxNQUFPOGEsRUFBRSxFQUN4RHlELGNBQWUsU0FBQUEsY0FBQ3pELEdBQUMsT0FDZnZKLG9CQUFzQkEsbUJBQW1CdlIsTUFBTzhhLEVBQUUsRUFDbkR0akIsU0FFQXdTLE9BQVExUyxFQUFBQSxZQUFBQSxLQUFDMFMsTUFBSyxDQUFDaEssTUFBT0EsTUFBTy9JLE1BQU9BLFFBQVlBLFVBYjlDNnVDLE9BQVMsSUFBTTMvQixJQWlCMUIsR0FBRyxHQUNMLENBc0d1QzAvQixDQUFVaGhDLElBQUt2TSxPQUFRNk4sSUFBSSxjQU01RDdPLEVBQUFBLFlBQUFBLEtBQUEsUUFBTUMsVUFBVSxtQkFBa0JDLFNBQUV1QyxTQUFTQyxtQkFJckQsQ0FqTVMycUMsT0FBTTlzQyxZQUFBLFNBZ05mOHNDLE9BQU83OUIsTUFBUSxTQUFDM0osTUFBSzRDLE9BQTZDLElBQUFtbUMsYUFBQW5tQyxNQUF6Q3pKLE9BQUFBLFlBQU0sSUFBQTR2QyxhQWpOUixHQWlOeUJBLGFBRTlDLE1BQU8sQ0FBRS9vQyxNQUFBQSxNQUFPQyxJQUZ5QzJDLE1BQVR4RCxVQUM1QnNCLElBQUlWLE1BQU83RyxPQUFRLE9BRXpDLEVBRUFxdUMsT0FBT3Q5QixTQUFXLFNBQ2hCclQsS0FDQThFLE9BQU0rSCxPQUVILElBQUFzbEMsYUFBQXRsQyxNQUREdkssT0FBQUEsWUFBTSxJQUFBNnZDLGFBek5hLEdBeU5JQSxhQUFFNXBDLFVBQVNzRSxNQUFUdEUsVUFFM0IsT0FBUXpELFFBQ04sS0FBS3VPLFVBQUFBLEVBQVNFLFNBQ1osT0FBT2hMLFVBQVVzQixJQUFJN0osTUFBT3NDLE9BQVEsT0FFdEMsS0FBSytRLFVBQUFBLEVBQVNHLEtBQ1osT0FBT2pMLFVBQVVzQixJQUFJN0osS0FBTXNDLE9BQVEsT0FFckMsUUFDRSxPQUFPdEMsS0FFYixFQUVBMndDLE9BQU8xdEMsTUFBUSxTQUFDa0csTUFBSytKLE9BQTZDLElBQUFrL0IsYUFBQWwvQixNQUF6QzVRLE9BQUFBLFlBQU0sSUFBQTh2QyxhQXZPUixHQXVPeUJBLGFBQUU3cEMsVUFBUzJLLE1BQVQzSyxVQUM1Q2EsSUFBTWIsVUFBVXNCLElBQUlWLE1BQU83RyxPQUFRLE9BQ3ZDLE9BQU9pRyxVQUFVMlIsT0FBTyxDQUFFL1EsTUFBQUEsTUFBT0MsSUFBQUEsS0FBTyxxQkFDMUMsRUFBQ3VuQyxPQUFBaG1DLGFBQUEsK3RDQUVELHNCQUFxQixvQkFBQUMsMEJBQUFBLHdCQUFBLGtCQUFBQyxLQUFBLFNBQUFDLFdBQUE2bEMsT0FBQWhtQyxhQUFBSSxLQUFBLGtCQ2hQckIsSUFRQSxPQVJXN0osRUFBQUEsZUFBQUEsSUFBQUEsRUFBQUEsZUFBQUEsSUFBQUEsRUFBQUEsZUFBQUEsSUFBQUEsRUFBQUEsZUFBQUEsSUFBQUEsRUFBQUEsZUFBQUEsR0FBQSxHQUNSOEQsVUFBQUEsRUFBTU8sTUFBUThzQyxPQUNkcnRDLFVBQUFBLEVBQU1ELEtBQU9nckMsVUFDYi9xQyxVQUFBQSxFQUFNc3RDLFVBQVk5QixjQUNsQnhyQyxVQUFBQSxFQUFNYixJQUFNdXJDLFNBQ1oxcUMsVUFBQUEsRUFBTWMsT0FBUzZxQyxZLHdDQ1QwQixJQUV0Q2h3QixRQUFPLFNBQUFNLGtCQUFBLFNBQUFOLFVBQUEsSUFBQVEsT0FBQUMsRUFBQUEsZUFBQUEsU0FBQSxLQUFBVCxTQUFBLFFBQUFtSSxLQUFBem1CLFVBQUFDLE9BQUFvQixLQUFBLElBQUEyTCxNQUFBeVosTUFBQUMsS0FBQSxFQUFBQSxLQUFBRCxLQUFBQyxPQUFBcmxCLEtBQUFxbEIsTUFBQTFtQixVQUFBMG1CLE1BMkNWLE9BM0NVNUgsT0FBQUUsRUFBQUEsVUFBQUEsU0FBQSxLQUFBVixRQUFBLEdBQUFqVSxPQUFBaEosUUFxQ1gyUCxTQUFXLFNBQUN2TyxRQUNWcWMsTUFBS3pULE1BQU02SyxXQUFXelQsT0FDeEIsRUFBQ3FjLE1BRURsSixLQUFPLFNBQUNBLE1BQ05rSixNQUFLelQsTUFBTXdLLE9BQU9ELEtBQ3BCLEVBQUNrSixLQUFBLFFBQUFPLEVBQUFBLFNBQUFBLFNBQUFmLFFBQUFNLG1CQUFBVSxFQUFBQSxZQUFBQSxTQUFBaEIsUUFBQSxFQUFBdmYsSUFBQSxTQUFBQyxNQTFDRCxTQUFBOGdCLFNBQ0UsSUFBQUMsWUFHSVAsS0FBS25VLE1BRk0zSCxTQUFRcWMsWUFBckI3WixVQUFheEMsU0FDYnVTLE1BQUs4SixZQUFMOUosTUFHRixPQUNFdEwsRUFBQUEsWUFBQUEsTUFBQSxPQUFLekosVUFBVSxjQUFhQyxTQUFBLEVBQzFCd0osRUFBQUEsWUFBQUEsTUFBQSxRQUFNekosVUFBVSxnQkFBZUMsU0FBQSxFQUM3QkYsRUFBQUEsWUFBQUEsS0FBQSxVQUNFeUYsS0FBSyxTQUNMcVAsUUFBU3lKLEtBQUt4TyxTQUFTdFAsS0FBSyxLQUFNc1AsVUFBQUEsRUFBU21GLE9BQU9oVixTQUVqRHVDLFNBQVNrTCxTQUVaM04sRUFBQUEsWUFBQUEsS0FBQSxVQUNFeUYsS0FBSyxTQUNMcVAsUUFBU3lKLEtBQUt4TyxTQUFTdFAsS0FBSyxLQUFNc1AsVUFBQUEsRUFBU0UsVUFBVS9QLFNBRXBEdUMsU0FBU2dMLFlBRVp6TixFQUFBQSxZQUFBQSxLQUFBLFVBQ0V5RixLQUFLLFNBQ0xxUCxRQUFTeUosS0FBS3hPLFNBQVN0UCxLQUFLLEtBQU1zUCxVQUFBQSxFQUFTRyxNQUFNaFEsU0FFaER1QyxTQUFTaUwsV0FJZDFOLEVBQUFBLFlBQUFBLEtBQUEsUUFBTUMsVUFBVSxvQkFBbUJDLFNBQUU4VSxTQUVyQ2hWLEVBQUFBLFlBQUFBLEtBQUEsUUFBTUMsVUFBVSxnQkFBZUMsU0FBRXFlLEtBQUswd0IsZUFBZXhzQyxjQUczRCxHQUFDLENBQUEzRSxJQUFBLGlCQUFBQyxNQVVELFNBQUFreEMsZUFBZXhzQyxVQUFVLElBQUFrZCxPQUFBLEtBQ25CakwsVUFBWTZKLEtBQUtuVSxNQUFNMUksTUFDckJpVCxLQUFPNEosS0FBS25VLE1BQU11SyxLQUV4QixHQUFJRCxVQUFVMVYsT0FBUyxFQUNyQixPQUFPMFYsVUFBVWhJLEtBQUksU0FBQ25GLE1BQUksT0FDeEJ2SCxFQUFBQSxZQUFBQSxLQUFBLFVBQ0V5RixLQUFLLFNBRUx4RixXQUFXNFUsRUFBQUEsT0FBQUEsR0FBSyxDQUFFLGFBQWNGLE9BQVNwTixPQUN6Q3VOLFFBQVM2SyxPQUFLaEwsS0FBS2xVLEtBQUssS0FBTThHLE1BQU1ySCxTQUVuQ3VDLFNBQVM4RSxPQUpMQSxLQUtFLEdBR2YsSUFBQyxDQTdEVSxDQUFTbUosTUFBQUEsV0FBZTJNLFFBQUFoVyxhQUFBLDRyQkF5RXJDLHdCQUFzQixvQkFBQUMsMEJBQUFBLHdCQUFBLG1CQUFBQyxLQUFBLFVBQUFDLFdBQUE2VixRQUFBaFcsYUFBQUksS0FBQSxtQixteEJDbkR0QixTQUFTaU4sVUFBVXc2QixRQUNqQixHQUFJbmpDLE1BQU1DLFFBQVFrakMsUUFDaEIsT0FBT0EsT0FHVCxJQURBLElBQU14dEMsTUFBUSxHQUNkeXRDLEdBQUEsRUFBQUMsZ0JBQTJCanlDLE9BQU9reUMsUUFBUUgsUUFBT0MsR0FBQUMsZ0JBQUFwd0MsT0FBQW13QyxLQUFFLEtBQUFwcUMsS0FBQXFxQyxnQkFBQUQsSUFBQTFtQyxPQUFBTCxFQUFBQSxjQUFBQSxHQUFBckQsS0FBQSxHQUF2Q2pILElBQUcySyxNQUFBLEdBQU9BLE1BQUEsSUFFbEIvRyxNQUFNaEUsS0FBS0ksSUFFZixDQUNBLE9BQU80RCxLQUNULENBS0MsSUFFSzdCLFNBQVEsU0FBQThkLGtCQW0xQlosU0FBQTlkLFdBQXFCLElBQUFnZSxPQUFBQyxFQUFBQSxlQUFBQSxTQUFBLEtBQUFqZSxVQUFBLFFBQUEybEIsS0FBQXptQixVQUFBQyxPQUFOb0IsTUFBSSxJQUFBMkwsTUFBQXlaLE1BQUFDLEtBQUEsRUFBQUEsS0FBQUQsS0FBQUMsT0FBSnJsQixNQUFJcWxCLE1BQUExbUIsVUFBQTBtQixNQUtoQixPQUpENUgsT0FBQUUsRUFBQUEsVUFBQUEsU0FBQSxLQUFBbGUsU0FBQSxHQUFBdUosT0FBU2hKLFNBdUVYa3ZDLFNBQVcsV0FDVCxJQUFNNXRDLE1BQVFtYyxNQUFLelQsTUFBTTFJLE1BRXpCLE9BQUlxSyxNQUFNQyxRQUFRdEssT0FDVDZ0QyxvQkFBVTd0QyxPQUFPLFNBQUM3RCxJQUFLMEosTUFBSSxPQUFNMUosSUFBSTBKLE1BQVFpb0MsTUFBTWpvQyxLQUFLLEdBQUcsQ0FBQyxHQUdoRCxpQkFBVjdGLE1BQ0YrdEMsb0JBQVUvdEMsT0FBTyxTQUFDM0QsTUFBT0QsS0FDOUIsT0FBYyxJQUFWQyxNQUNLeXhDLE1BQU0xeEMsS0FHUkMsS0FDVCxJQUdLeXhDLEtBQ1QsRUFBQzN4QixNQUVENnhCLFFBQVUsV0FHUixPQUZjN3hCLE1BQUt5eEIsV0FFTnp4QixNQUFLelQsTUFBTXVLLEtBQzFCLEVBQUNrSixNQUVEbkYsaUJBQW1CLFNBQUNoYyxNQUNsQixJQUFBb2lCLFlBQWtEakIsTUFBS3pULE1BQS9DdUssS0FBSW1LLFlBQUpuSyxLQUFNa0IsY0FBYWlKLFlBQWJqSixjQUFlNkMsaUJBQWdCb0csWUFBaEJwRyxpQkFFN0IsT0FBS0EsaUJBRUVBLGlCQUFpQmhjLEtBQU1pWSxLQUFNeFgsT0FBT0QsS0FBSzJnQixNQUFLeXhCLGFBRnZCejVCLGFBR2hDLEVBNEVBZ0ksTUFTQTh4QixrQkFBb0IsU0FBQ2p6QyxLQUFNa3pDLGNBQWVqN0IsTUFDeEMsSUFBQXlPLGFBQW1DdkYsTUFBS3pULE1BQWxDNlEsY0FBYW1JLGFBQWJuSSxjQUFlaFcsVUFBU21lLGFBQVRuZSxVQUVqQmdXLGVBQ0UyMEIsY0FBY3BnQyxPQUNoQnlMLGNBQWMyMEIsY0FBY3BnQyxNQUFNOVMsS0FBTSxDQUFFdUksVUFBQUEsWUFBYzBQLEtBTzlELEVBQUNrSixNQUVEZ3lCLGVBQWlCLFNBQUNydUMsT0FBUWdVLFNBQ3hCLElBQUF3USxhQUFtRG5JLE1BQUt6VCxNQUFsRHVLLEtBQUlxUixhQUFKclIsS0FBTWpZLEtBQUlzcEIsYUFBSnRwQixLQUFNaVYsT0FBTXFVLGFBQU5yVSxPQUFRc0QsV0FBVStRLGFBQVYvUSxXQUFlN0ssT0FBS2pGLEVBQUFBLHdCQUFBQSxHQUFBNmdCLGFBQUE1Z0IsbUJBQzFDMHFDLGNBQWdCanlCLE1BQUs2eEIsVUFDckIvaEMsTUFBUWdFLFNBRVpqVixLQzVrQ1csU0FBU3F6QyxTQUFTeHlCLEtBQUl4WSxNQUFxQyxJQUFqQ3ZELE9BQU11RCxLQUFOdkQsT0FBUTlFLEtBQUlxSSxLQUFKckksS0FBTWlSLE1BQUs1SSxLQUFMNEksTUFBVXZELE9BQUtqRixFQUFBQSx3QkFBQUEsR0FBQUosS0FBQUssZUFHcEUsT0FGQW1ZLEtBQXVCLGlCQUFUQSxLQUFvQml5QixNQUFNanlCLE1BQVFBLEtBRXhDL2IsUUFDTixLQUFLdU8sVUFBQUEsRUFBU21GLE1BQ1p4WSxLQUFPaVIsT0FBUyxJQUFJNU0sS0FDcEIsTUFDRixLQUFLZ1AsVUFBQUEsRUFBU2lnQyxLQUNaLE1BQ0YsUUFDRXJJLGtCQUNFcHFCLE1BQWlDLG1CQUFsQkEsS0FBS3hOLFNBQ3BCLHVGQUVGclQsS0FBTzZnQixLQUFLeE4sU0FBU3JULEtBQU04RSxPQUFRNEksT0FFdkMsT0FBTzFOLElBQ1QsQ0QyakNXcXpDLENBQVNELGNBQWEzeUMsT0FBQW1ELE9BQUEsR0FDeEI4SixNQUFLLENBQ1I1SSxPQUFBQSxPQUNBOUUsS0FBTThZLFNBQVc5WSxNQUFRaVIsTUFDekJBLE1BQUFBLFNBR0ZzSCxXQUFXdlksS0FBTWlZLEtBQU1uVCxRQUN2QnFjLE1BQUs4eEIsa0JBQWtCanpDLEtBQU1vekMsY0FDL0IsRUFBQ2p5QixNQUVEb3lCLGlCQUFtQixTQUFDdDdCLE1BQ2RBLE9BQVNrSixNQUFLelQsTUFBTXVLLE1BcGpDNUIsU0FBU3U3QixZQUFZdjdCLEtBQUlwTCxPQUV2QixPQUFnQyxJQURwQm1MLFVBRDRCbkwsTUFBYjdILE9BRWRrdEIsUUFBUWphLEtBQ3ZCLENBaWpDb0N1N0IsQ0FBWXY3QixLQUFNa0osTUFBS3pULFFBQ3JEeVQsTUFBS3pULE1BQU13SyxPQUFPRCxNQUdwQixJQUFJalQsTUFBUW1jLE1BQUt5eEIsV0FDakJ6eEIsTUFBSzh4QixrQkFDSDl4QixNQUFLelQsTUFBTTFOLE1BQVFtaEIsTUFBS3pULE1BQU11SCxTQUM5QmpRLE1BQU1pVCxNQUNOQSxLQUVKLEVBQUNrSixNQUVEeEwsa0JBQW9CLFdBQWEsUUFBQW9wQixNQUFBMThCLFVBQUFDLE9BQVRvQixLQUFJLElBQUEyTCxNQUFBMHZCLE9BQUFDLE1BQUEsRUFBQUEsTUFBQUQsTUFBQUMsUUFBSnQ3QixLQUFJczdCLE9BQUEzOEIsVUFBQTI4QixRQUMxQnhhLEVBQUFBLFFBQUFBLElBQU9yRCxNQUFLelQsTUFBTTdJLGNBQWVuQixLQUNuQyxFQUFDeWQsTUFFRGdPLHVCQUF5QixXQUFhLFFBQUE4UCxNQUFBNThCLFVBQUFDLE9BQVRvQixLQUFJLElBQUEyTCxNQUFBNHZCLE9BQUFDLE1BQUEsRUFBQUEsTUFBQUQsTUFBQUMsUUFBSng3QixLQUFJdzdCLE9BQUE3OEIsVUFBQTY4QixRQUMvQjFhLEVBQUFBLFFBQUFBLElBQU9yRCxNQUFLelQsTUFBTTZQLG1CQUFvQjdaLEtBQ3hDLEVBQUN5ZCxNQUVEaU8sb0JBQXNCLFdBQWEsUUFBQStQLE1BQUE5OEIsVUFBQUMsT0FBVG9CLEtBQUksSUFBQTJMLE1BQUE4dkIsT0FBQUMsTUFBQSxFQUFBQSxNQUFBRCxNQUFBQyxRQUFKMTdCLEtBQUkwN0IsT0FBQS84QixVQUFBKzhCLFFBQzVCNWEsRUFBQUEsUUFBQUEsSUFBT3JELE1BQUt6VCxNQUFNb1EsZ0JBQWlCcGEsS0FDckMsRUFBQ3lkLE1BRUQzTCxpQkFBbUIsU0FBQ21KLFdBQ2xCNkYsRUFBQUEsUUFBQUEsSUFBT3JELE1BQUt6VCxNQUFNeEMsYUFBY3lULFNBQ2xDLEVBQUN3QyxNQUVEc3lCLGdCQUFrQixTQUFDenpDLEtBQU1pWSxNQUN2QixJQUFRMEYsWUFBZ0J3RCxNQUFLelQsTUFBckJpUSxZQUNKQSxZQUNGQSxZQUFZM2QsS0FBTWlZLEtBQU1rSixNQUFLaEksZ0JBRzNCbEIsTUFBTWtKLE1BQUtveUIsaUJBQWlCdDdCLE1BRWhDa0osTUFBS2d5QixlQUFlOS9CLFVBQUFBLEVBQVNpZ0MsS0FBTXR6QyxNQUNyQyxFQTlQRW1oQixNQUFLRyxNQUFRLENBQ1hKLFFBQVMvZCxTQUFTdXdDLFdBQVd2eUIsTUFBS3pULFFBQ25DeVQsS0FDSCxDQUFDLE9BQUFPLEVBQUFBLFNBQUFBLFNBQUF2ZSxTQUFBOGQsbUJBQUFVLEVBQUFBLFlBQUFBLFNBQUF4ZSxTQUFBLEVBQUEvQixJQUFBLFNBQUFDLE1Bb0dELFNBQUE4Z0IsU0FDRSxJQUFBc0gsYUFtQkk1SCxLQUFLblUsTUFsQlB1SyxLQUFJd1IsYUFBSnhSLEtBQ0FTLFFBQU8rUSxhQUFQL1EsUUFDQXBVLE9BQU1tbEIsYUFBTm5sQixPQUNBbUcsaUJBQWdCZ2YsYUFBaEJoZixpQkFDQWlGLE1BQUsrWixhQUFML1osTUFDQW5NLFVBQVNrbUIsYUFBVGxtQixVQUNBK1YsYUFBWW1RLGFBQVpuUSxhQUNNbkcsUUFBT3NXLGFBQWJ6cEIsS0FDQWlWLE9BQU13VSxhQUFOeFUsT0FDQTNTLE9BQU1tbkIsYUFBTm5uQixPQUNBK0Usa0JBQWlCb2lCLGFBQWpCcGlCLGtCQUNBMFgsV0FBVTBLLGFBQVYxSyxXQUNBeWpCLG9CQUFtQi9ZLGFBQW5CK1ksb0JBS0c5MEIsT0FKVytiLGFBQWR4a0IsV0FDV3drQixhQUFYMVAsUUFDWTBQLGFBQVoxakIsU0FDVzBqQixhQUFYbFksU0FDUTlJLEVBQUFBLHdCQUFBQSxHQUFBZ2hCLGFBQUEwVyxhQUdWaHRCLFFBQVVBLFNBQVc4QixTQUVyQixJQUFJNEwsS0FBT2dCLEtBQUtteEIsVUFDaEJXLG9CQUNFOXhCLEtBQUtQLE1BQU1KLFFBREx3RyxVQUFTaXNCLG9CQUFUanNCLFVBQVd6aUIsV0FBVTB1QyxvQkFBVjF1QyxXQUFZb2QsUUFBT3N4QixvQkFBUHR4QixRQUFTOVosVUFBU29yQyxvQkFBVHByQyxVQUFXeVAsVUFBUzI3QixvQkFBVDM3QixVQUcvQzQ3QixXQUFhM3VDLFdBQVd5VCxTQUFXaUksWUFDakNySSxNQUFRdUksS0FBSzVkLE1BQU1rUSxRQUFTLENBQUU1SyxVQUFBQSxVQUFXakcsT0FBQUEsU0FFL0MsT0FDRTBLLEVBQUFBLFlBQUFBLE1BQUEsTUFBQXZNLE9BQUFtRCxPQUFBLEdBQ00wVixhQUFZLENBQ2hCL1YsV0FBVzRVLEVBQUFBLE9BQUFBLEdBQUs1VSxVQUFXLGVBQWdCbUssTUFBTTBFLEtBQU8sV0FDeEQxQyxNQUFPQSxNQUFNbE0sU0FBQSxDQUVaa1YsVUFDQ3BWLEVBQUFBLFlBQUFBLEtBQUNzd0MsV0FBVSxDQUNUNXpDLEtBQU1tVCxRQUNOOEUsS0FBTUEsS0FDTmpULE1BQU9nVCxVQUNQTSxNQUFPQSxNQUNQSixPQUFRMkosS0FBSzB4QixpQkFDYmg3QixXQUFZc0osS0FBS3N4QixlQUNqQjVxQyxVQUFXQSxhQUdmakYsRUFBQUEsWUFBQUEsS0FBQ3VkLEtBQUlwZ0IsT0FBQW1ELE9BQUEsR0FDQzhKLE1BQUssQ0FDVHBKLE9BQVFBLE9BQ1JtRyxpQkFBa0JBLGlCQUNsQnpLLEtBQU1tVCxRQUNOOEIsT0FBUUEsT0FDUjNTLE9BQVFBLE9BQ1JpRyxVQUFXQSxVQUNYOFosUUFBU0EsUUFDVHBkLFdBQVlBLFdBQ1p5aUIsVUFBV0EsVUFDWHJnQixrQkFBbUJBLGtCQUNuQjJVLGlCQUFrQjZGLEtBQUs3RixpQkFDdkJ6RCxXQUFZc0osS0FBS3N4QixlQUNqQngxQixZQUFha0UsS0FBSzR4QixnQkFDbEI1dUMsY0FBZWdkLEtBQUtsTSxrQkFDcEI0SCxtQkFBb0JzRSxLQUFLc04sdUJBQ3pCclIsZ0JBQWlCK0QsS0FBS3VOLG9CQUN0QmxrQixhQUFjMlcsS0FBS3JNLGlCQUNuQnVKLFdBQVlBLFdBQ1p5akIsb0JBQXFCQSwwQkFJN0IsSUFBQyxFQUFBcGhDLElBQUEsMkJBQUFDLE1BM0tELFNBQUFtdUMseUJBQWdDcUUsV0FDOUIsTUFBTyxDQUFFM3lCLFFBQVMvZCxTQUFTdXdDLFdBQVdHLFdBQ3hDLEdBQUMsQ0FBQXp5QyxJQUFBLGFBQUFDLE1BRUQsU0FBQXF5QyxXQUFBeGdDLE9BcUJHLElBcEJENGdDLGNBQWE1Z0MsTUFBYjRnQyxjQUNBQyxZQUFXN2dDLE1BQVg2Z0MsWUFDQUMsZUFBYzlnQyxNQUFkOGdDLGVBQ0FDLGdCQUFlL2dDLE1BQWYrZ0MsZ0JBQ0FDLGNBQWFoaEMsTUFBYmdoQyxjQUNBOXRDLGlCQUFnQjhNLE1BQWhCOU0saUJBQ0FDLG1CQUFrQjZNLE1BQWxCN00sbUJBQ0FDLHNCQUFxQjRNLE1BQXJCNU0sc0JBQ0FtVCxnQkFBZXZHLE1BQWZ1RyxnQkFDQTA2QiwwQkFBeUJqaEMsTUFBekJpaEMsMEJBQ0F6OUIsZUFBY3hELE1BQWR3RCxlQUNBMkosb0JBQW1Cbk4sTUFBbkJtTixvQkFDQTVKLGNBQWF2RCxNQUFidUQsY0FDQXdCLEtBQUkvRSxNQUFKK0UsS0FDQWpULE1BQUtrTyxNQUFMbE8sTUFDQXVELFVBQVMySyxNQUFUM0ssVUFDQWdKLFFBQU8yQixNQUFQM0IsUUFBTzZpQyxlQUFBbGhDLE1BQ1BuTixTQUFBQSxjQUFRLElBQUFxdUMsZUFBRyxDQUFDLEVBQUNBLGVBQUFDLGlCQUFBbmhDLE1BQ2JqTyxXQUFBQSxnQkFBVSxJQUFBb3ZDLGlCQUFHLENBQUMsRUFBQ0EsaUJBQUFDLGNBQUFwaEMsTUFDZjZHLFFBQUFBLGFBQU8sSUFBQXU2QixjQUFHLENBQUMsRUFBQ0EsY0FFUkMsTUFBUXY4QixVQUFVaFQsT0FFdEIsTUFBTyxDQUNMZ1QsVUFBV3U4QixNQUNYaHNDLFVBQVdnbEMsa0JBQWtCaGxDLFVBQVdnSixRQUFTd0ksUVRoNUJ4QyxTQUFTaFUsa0JBQVN5dUMsTUFDL0IsT0FBQS96QyxPQUFBbUQsT0FBQSxHQUNLNnBDLGdCQUNBK0csS0FFUCxDU3c0QmlCQyxDQUFRMXVDLFdBSW5Cc2MsUUFBUyxDQUNQc0osVUFBVyxTQUFBQSxZQUFBLE9BQ1JsUyxpQkFBbUJBLGdCQUFleFksV0FBQyxFQUFEb0IsWUFBYyxDQUFDLENBQUMsRUFDckRxeUMsb0JBQXFCLFNBQUFBLHNCQUFBLE9BQ2xCUCwyQkFBNkJBLDBCQUF5Qmx6QyxXQUFDLEVBQURvQixZQUN2RCxDQUFDLENBQUMsRUFDSmk3QixTQUFVLFNBQUFBLFdBQUEsT0FDUDVtQixnQkFBa0JBLGVBQWN6VixXQUFDLEVBQURvQixZQUFjLENBQUMsQ0FBQyxFQUNuRCs2QixjQUFlLFNBQUFBLGdCQUFBLE9BQ1ovYyxxQkFBdUJBLG9CQUFtQnBmLFdBQUMsRUFBRG9CLFlBQWMsQ0FBQyxDQUFDLEVBQzdEeWdCLFFBQVMsU0FBQUEsVUFBQSxPQUFjck0sZUFBaUJBLGNBQWF4VixXQUFDLEVBQURvQixZQUFjLENBQUMsQ0FBQyxHQUV2RTRDLFdBQVkwdkMsbUJBQVMxdkMsV0FBV2dULE9BQVMsQ0FBQyxFQUFHMjhCLGVBQUszdkMsV0FBWXN2QyxPQUFRLENBQ3BFM3VDLGFBQWNtYixZQUFBQSxFQUNkOHpCLHVCQUF3Qjl6QixZQUFBQSxFQUN4Qm1mLHNCQUF1Qm5mLFlBQUFBLEVBQ3ZCdmIsZ0JBQWlCdWIsWUFBQUEsRUFDakI0SixZQUFhNUosWUFBQUEsRUFDYnJiLGdCQUFpQnFiLFlBQUFBLEVBQ2pCM2Isa0JBQW1CMmIsWUFBQUEsSUFFckIyRyxVQUFXLENBQ1R2ZSxPQUFPODlCLEVBQUFBLFVBQUFBLEdBQWE2TSxlQUNwQjFxQyxLQUFLNjlCLEVBQUFBLFVBQUFBLEdBQWE4TSxhQUNsQjFxQyxRQUFRNDlCLEVBQUFBLFVBQUFBLEdBQWErTSxnQkFDckIxb0IsU0FBUzJiLEVBQUFBLFVBQUFBLEdBQWFnTixpQkFDdEJoeEMsT0FBT2drQyxFQUFBQSxVQUFBQSxHQUFhaU4sZUFDcEJuWCxVQUFVa0ssRUFBQUEsVUFBQUEsR0FBYTdnQyxrQkFDdkJ1SSxZQUFZczRCLEVBQUFBLFVBQUFBLEdBQWE1Z0Msb0JBQ3pCd0ksZUFBZW80QixFQUFBQSxVQUFBQSxHQUFhM2dDLHdCQUdsQyxJQUFDLENBejVCVyxDQUFTME4sTUFBQUEsV0FBakI3USxTQXF6Qkc4akIsYUFBZSxDQUNwQjNpQixPQUFRLEdBQ1JtRyxpQkFBa0IsR0FDbEI2TyxhQUFjLENBQUMsRUFDZjNVLE9BQU8sRUFDUCtULFNBQVMsRUFDVFQsS0FBTWpULFVBQUFBLEVBQU1PLE1BQ1pQLE1BQU8sQ0FBQ0EsVUFBQUEsRUFBTU8sTUFBT1AsVUFBQUEsRUFBTUQsS0FBTUMsVUFBQUEsRUFBTWIsSUFBS2EsVUFBQUEsRUFBTWMsUUFDbER0QixLQUFNLEdBQ05sQyxPQUFRLEdBQ1JzVixjQUFlb1QsSUFFZndYLHFCQUFxQixFQUNyQnJwQixjQUFlblUsVUFBQUEsRUFBTWIsSUFFckIrdkMsY0FBZSxRQUNmRCxnQkFBaUIsUUFDakJELGVBQWdCLFNBQ2hCRixjQUFlLFFBQ2ZDLFlBQWEsTUFDYjN0QyxpQkFBa0IsYUFFbEJDLG1CQUFvQixLQUNwQkMsc0JBQXVCLFFBRXZCa1csbUJBQW9CLElBQ3BCdkgsT0FBUSxTQUFBQSxTQUFBLE9BQU0sSUFBSTVRLElBQU0sRUFDeEJpRyxtQkFBb0IsV0FDckJuSCxTQUFBd0gsYUFBQSxrM3dCQXNRSCxrQkFBZW1xQyxFQUFBQSxJQUFBQSxJQUFlM3hDLFNBQVUsQ0FDdEM4VSxLQUFNLFNBQ05qWSxLQUFNLGFBQ04rZixTQUFVLGtCQUNWLG9CQUFBblYsMEJBQUFBLHdCQUFBLG9CQUFBQyxLQUFBLFdBQUFDLFdBQUEzSCxTQUFBd0gsYUFBQUksS0FBQSxvQix1VEU3bkNJZ3FDLGdCQUFrQixTQUFsQkEsZ0JBQWVsb0MsTUFBb0IwRSxRQUFTZ0QsT0FBSyxJQUE1QnBMLE1BQUswRCxNQUFMMUQsTUFBT0MsSUFBR3lELE1BQUh6RCxJQUFHLE9BQ25DbUwsTUFBTTJGLE9BQU8vUSxNQUFPLEtBQU1vSSxTQUFXLE1BQVFnRCxNQUFNMkYsT0FBTzlRLElBQUssS0FBTW1JLFFBQVEsRUFRbEV3SSxRQUFVLENBQ3JCQyxXQUFZLEtBQ1pHLFVBQVcsU0FDWEYsY0FBZSxNQUVmMkIsa0JBQW1CbTVCLGdCQUNuQno1QixxQkFBc0J5NUIsZ0JBQ3RCdjVCLDBCQWIyQixTQUF2Qnc1QixxQkFBb0I5aEMsTUFBZTNCLFFBQVNnRCxPQUFLLElBQXZCcEwsTUFBSytKLE1BQUwvSixNQUFLLE9BQ25Db0wsTUFBTTJGLE9BQU8vUSxNQUFPLEtBQU1vSSxTQUFXLEtBQUssRUFhMUM2Six3QkFYeUIsU0FBckI2NUIsbUJBQWtCeEYsTUFBYWwrQixRQUFTZ0QsT0FBSyxJQUFyQm5MLElBQUdxbUMsTUFBSHJtQyxJQUFHLE1BQy9CLE1BQVFtTCxNQUFNMkYsT0FBTzlRLElBQUssS0FBTW1JLFFBQVEsRUFZeEM2SSxpQkFBa0IsS0FFbEJzQixrQkFBbUIsWUFDbkJWLGdCQUFpQixjQUNqQkUscUJBaENzQixTQUFsQmc2QixnQkFBZTdzQyxLQUFvQmtKLFFBQVNnRCxPQUFLLElBQTVCcEwsTUFBS2QsS0FBTGMsTUFBT0MsSUFBR2YsS0FBSGUsSUFBRyxPQUNuQ21MLE1BQU0yRixPQUFPL1EsTUFBTyxVQUFXb0ksU0FDL0IsTUFFQWdELE1BQU0yRixPQUFPOVEsSUFBS21MLE1BQU1ta0IsR0FBR3Z2QixNQUFPQyxJQUFLLFNBQVcsS0FBTyxVQUFXbUksUUFBUSxFQTZCNUVpSixtQkEzQnNCLFNBQWxCMjZCLGdCQUFlcHBDLE1BQW9Cd0YsUUFBU2dELE9BQUssSUFBNUJwTCxNQUFLNEMsTUFBTDVDLE1BQU9DLElBQUcyQyxNQUFIM0MsSUFBRyxPQUNuQ21MLE1BQU0yRixPQUFPL1EsTUFBTyxJQUFLb0ksU0FBVyxNQUFRZ0QsTUFBTTJGLE9BQU85USxJQUFLLElBQUttSSxRQUFRLEVBNEIzRStJLGlCQUFrQixhQUNsQkksaUJBQWtCLEtBQ2xCRSxzQkFBdUJtNkIsaUJBR3pCLFNBQVNLLFFBQVFDLE1BQ2YsSUFBSUMsU0FBV0QsS0FBT0EsS0FBS0UsY0FBZ0JGLEtBTTNDLE1BTGlCLGFBQWJDLFNBQ0ZBLFNBQVcsT0FDREEsV0FDVkEsY0FBVzFwQixHQUVOMHBCLFFBQ1QsQ0FFZSxTQUFTLE9BQUN6dEMsUUFRdkIsU0FBU3F3QixhQUFhL3VCLE1BQU9DLEtBQUssSUFBQW9zQyxZQUFBQyxPQUkxQkMsR0FBSzd0QyxPQUFPc0IsT0FBT29MLFFBQ25Cb2hDLEdBQUs5dEMsT0FBT3VCLEtBQUttTCxRQUV2QixJQUFLMU0sT0FBTyt0QyxHQUNWLE9BQU9GLEdBQUd6c0MsU0FBUzAzQixvQkFBc0JnVixHQUFHMXNDLFNBQVMwM0Isb0JBT3ZELElBQU1rVixPQUFxQixRQUFmTCxZQUFHRSxVQUFNLFFBQUpELE9BQUZDLEdBQUlJLFVBQUUsSUFBQUwsWUFBSixFQUFGQSxPQUFRNXFDLFlBQUksSUFBQTJxQyxZQUFBQSxZQUFJM3RDLE9BQU8rdEMsR0FBRzMrQixRQUd6QyxPQUZvQnBQLE9BQU8rdEMsR0FBR0csS0FBS0YsUUFBUUcsV0FBV04sSUFDcEM3dEMsT0FBTyt0QyxHQUFHRyxLQUFLRixRQUFRRyxXQUFXTCxHQUV0RCxDQVFBLFNBQVNNLGtCQUFrQjd1QixFQUFHQyxFQUFHZ3VCLE1BQy9CLElBQU1DLFNBQVdGLFFBQVFDLE1BR3pCLE1BQU8sQ0FGS0MsU0FBV3p0QyxPQUFPdWYsR0FBR3pVLFFBQVEyaUMsVUFBWXp0QyxPQUFPdWYsR0FDaERrdUIsU0FBV3p0QyxPQUFPd2YsR0FBRzFVLFFBQVEyaUMsVUFBWXp0QyxPQUFPd2YsR0FDMUNpdUIsU0FDcEIsQ0FFQSxTQUFTM2lDLFVBQTJCLElBQW5CM1MsS0FBSXFDLFVBQUFDLE9BQUEsUUFBQXNwQixJQUFBdnBCLFVBQUEsR0FBQUEsVUFBQSxHQUFHLEtBQ2hCaXpDLFNBQVdGLFFBRGUveUMsVUFBQUMsT0FBQSxFQUFBRCxVQUFBLFFBQUF1cEIsR0FFaEMsT0FBSTBwQixTQUNLenRDLE9BQU83SCxNQUFNMlMsUUFBUTJpQyxVQUFVcnNDLFNBRWpDcEIsT0FBTzdILE1BQU1pSixRQUN0QixDQVlBLFNBQVN5dkIsR0FBR3RSLEVBQUdDLEVBQUdndUIsTUFDaEIsSUFBQWEsbUJBQTZCRCxrQkFBa0I3dUIsRUFBR0MsRUFBR2d1QixNQUFLYyxxQkFBQXpxQyxFQUFBQSxjQUFBQSxHQUFBd3FDLG1CQUFBLEdBQW5ERSxJQUFHRCxvQkFBQSxHQUFFRSxJQUFHRixvQkFBQSxHQUFFYixTQUFRYSxvQkFBQSxHQUN6QixPQUFPQyxJQUFJRSxPQUFPRCxJQUFLZixTQUN6QixDQXFCQSxTQUFTbGlDLElBQUlnVSxFQUFHQyxFQUFHZ3VCLE1BQ2pCLElBQUFrQixvQkFBNkJOLGtCQUFrQjd1QixFQUFHQyxFQUFHZ3VCLE1BQUttQixzQkFBQTlxQyxFQUFBQSxjQUFBQSxHQUFBNnFDLG9CQUFBLEdBQW5ESCxJQUFHSSxxQkFBQSxHQUFFSCxJQUFHRyxxQkFBQSxHQUFFbEIsU0FBUWtCLHFCQUFBLEdBQ3pCLE9BQU9KLElBQUlLLGVBQWVKLElBQUtmLFNBQ2pDLENBaUNBLFNBQVN6ckMsSUFBSTdKLEtBQU0wMkMsTUFBT3JCLE1BQ3hCLElBQU1DLFNBQVdGLFFBQVFDLE1BQ3pCLE9BQU94dEMsT0FBTzdILE1BQU02SixJQUFJNnNDLE1BQU9wQixVQUFVcnNDLFFBQzNDLENBdUJBLFNBQVN1aUIsS0FBS3BFLEVBQUdDLEdBQWlCLElBQzFCaXVCLFNBQVdGLFFBREsveUMsVUFBQUMsT0FBQSxRQUFBc3BCLElBQUF2cEIsVUFBQSxHQUFBQSxVQUFBLEdBQUcsT0FHbkIrekMsSUFBTXZ1QyxPQUFPdWYsR0FFbkIsT0FEWXZmLE9BQU93ZixHQUNSbUUsS0FBSzRxQixJQUFLZCxTQUN2QixDQVlBLFNBQVNwSSxnQkFBZ0JsdEMsTUFDdkIsT0FBTzZILE9BQU83SCxNQUFNMlMsUUFBUSxTQUFTQSxRQUFRLFFBQVExSixRQUN2RCxDQUVBLFNBQVNra0MsZUFBZW50QyxNQUN0QixPQUFPNkgsT0FBTzdILE1BQU15UyxNQUFNLFNBQVNBLE1BQU0sUUFBUXhKLFFBQ25ELENBdURBLFNBQVNxaUMsUUFBUW5pQyxNQUFPQyxLQUN0QixJQUFNdXRDLE9BQVM5dUMsT0FBT3NCLE9BQ2hCeXRDLEtBQU8vdUMsT0FBT3VCLEtBRXBCLE9BRFl2QixPQUFPaWdDLFNBQVM4TyxLQUFLcHJCLEtBQUttckIsU0FDM0JFLE1BQ2IsQ0FvRUEsT0FBTyxJQUFJakssd0JBQWMsQ0FDdkI3eUIsUUFBQUEsUUFFQSt5QixZQTlJRixTQUFTQSxZQUFZdjdCLFNBQ25CLElBQU0wb0IsS0FBTzFvQixRQUFVMUosT0FBT2l2QyxXQUFXdmxDLFNBQVcxSixPQUFPaXZDLGFBQzNELE9BQU83YyxLQUFPQSxLQUFLL3hCLGlCQUFtQixDQUN4QyxFQTRJRWdsQyxnQkFBQUEsZ0JBQ0FDLGVBQUFBLGVBQ0FDLFlBcElGLFNBQVNBLFlBQVlwdEMsTUFLbkIsSUFKQSxJQUFJbVQsUUFBVSs1QixnQkFBZ0JsdEMsTUFDeEIrbkIsS0FBT29sQixlQUFlbnRDLE1BQ3RCNjJDLEtBQU8sR0FFTnpqQyxJQUFJRCxRQUFTNFUsT0FDbEI4dUIsS0FBSzcxQyxLQUFLbVMsU0FDVkEsUUFBVXRKLElBQUlzSixRQUFTLEVBQUcsS0FHNUIsT0FBTzBqQyxJQUNULEVBMkhFMzhCLE9BQU0sU0FBQUEsT0FBQzdZLE1BQU82WSxRQUFRM0ksU0FDcEIsT0FsVFcsU0FBVHdsQyxPQUFVQyxFQUFHOWtDLEdBQUMsT0FBTUEsRUFBSThrQyxFQUFFRCxPQUFPN2tDLEdBQUs4a0MsQ0FBQyxDQWtUbENELENBQU9sdkMsT0FBT3hHLE9BQVFrUSxTQUFTMkksT0FBT0EsUUFDL0MsRUFFQXlVLEdBNU9GLFNBQVNBLEdBQUd2SCxFQUFHQyxFQUFHZ3VCLE1BQ2hCLElBQUE0QixvQkFBNkJoQixrQkFBa0I3dUIsRUFBR0MsRUFBR2d1QixNQUFLNkIscUJBQUF4ckMsRUFBQUEsY0FBQUEsR0FBQXVyQyxvQkFBQSxHQUFuRGIsSUFBR2Msb0JBQUEsR0FBRWIsSUFBR2Esb0JBQUEsR0FBRTVCLFNBQVE0QixvQkFBQSxHQUN6QixPQUFPZCxJQUFJZSxTQUFTZCxJQUFLZixTQUMzQixFQTBPRWxpQyxJQUFBQSxJQUNBNGxCLEdBblBGLFNBQVNBLEdBQUc1UixFQUFHQyxFQUFHZ3VCLE1BQ2hCLElBQUErQixvQkFBNkJuQixrQkFBa0I3dUIsRUFBR0MsRUFBR2d1QixNQUFLZ0MscUJBQUEzckMsRUFBQUEsY0FBQUEsR0FBQTByQyxvQkFBQSxHQUFuRGhCLElBQUdpQixvQkFBQSxHQUFFaEIsSUFBR2dCLG9CQUFBLEdBQUUvQixTQUFRK0Isb0JBQUEsR0FDekIsT0FBT2pCLElBQUlrQixRQUFRakIsSUFBS2YsU0FDMUIsRUFpUEUxbUIsSUExT0YsU0FBU0EsSUFBSXhILEVBQUdDLEVBQUdndUIsTUFDakIsSUFBQWtDLG9CQUE2QnRCLGtCQUFrQjd1QixFQUFHQyxFQUFHZ3VCLE1BQUttQyxxQkFBQTlyQyxFQUFBQSxjQUFBQSxHQUFBNnJDLG9CQUFBLEdBQW5EbkIsSUFBR29CLG9CQUFBLEdBQUVuQixJQUFHbUIsb0JBQUEsR0FBRWxDLFNBQVFrQyxvQkFBQSxHQUN6QixPQUFPcEIsSUFBSUssZUFBZUosSUFBS2YsU0FDakMsRUF3T0U1YyxHQUFBQSxHQUNBMVYsSUExUEYsU0FBU0EsSUFBSW9FLEVBQUdDLEVBQUdndUIsTUFDakIsT0FBUTNjLEdBQUd0UixFQUFHQyxFQUFHZ3VCLEtBQ25CLEVBeVBFaGMsTUE3TUYsU0FBU0EsTUFBTXI1QixLQUFNMHRDLE1BQ25CLElBQUsxdEMsT0FBUzB0QyxLQUFNLE9BQU8sS0FFM0IsSUFBTStKLEdBQUs1dkMsT0FBTzZsQyxNQUFNeHpCLE9BQU8sWUFDekJneEIsR0FBS3JqQyxPQUFPN0gsTUFBTTJTLFFBQVEsT0FBT3VILE9BQU8sY0FFOUMsT0FBT3JTLE9BQU8sR0FBRDZFLE9BQUl3K0IsR0FBRSxLQUFBeCtCLE9BQUkrcUMsSUFBTSx1QkFBdUJ4dUMsUUFDdEQsRUF1TUVzdkIsUUFwT0YsU0FBU0EsUUFBUTFuQixJQUFLN0gsSUFBS0UsS0FBbUIsSUFDdENvc0MsU0FBV0YsUUFEaUIveUMsVUFBQUMsT0FBQSxRQUFBc3BCLElBQUF2cEIsVUFBQSxHQUFBQSxVQUFBLEdBQUcsT0FFL0JxMUMsS0FBTzd2QyxPQUFPZ0osS0FDZDhtQyxLQUFPOXZDLE9BQU9tQixLQUNkNHVDLEtBQU8vdkMsT0FBT3FCLEtBQ3BCLE9BQU93dUMsS0FBS0csVUFBVUYsS0FBTUMsS0FBTXRDLFNBQVUsS0FDOUMsRUErTkUzaUMsUUFBQUEsUUFDQUYsTUE3UUYsU0FBU0EsUUFBeUIsSUFBbkJ6UyxLQUFJcUMsVUFBQUMsT0FBQSxRQUFBc3BCLElBQUF2cEIsVUFBQSxHQUFBQSxVQUFBLEdBQUcsS0FDZGl6QyxTQUFXRixRQURhL3lDLFVBQUFDLE9BQUEsRUFBQUQsVUFBQSxRQUFBdXBCLEdBRTlCLE9BQUkwcEIsU0FDS3p0QyxPQUFPN0gsTUFBTXlTLE1BQU02aUMsVUFBVXJzQyxTQUUvQnBCLE9BQU83SCxNQUFNaUosUUFDdEIsRUF3UUU2SixNQW5NRixTQUFTQSxNQUFNM0osTUFBT0MsS0FNcEIsSUFOdUMsSUFDakNrc0MsU0FBV0YsUUFEWS95QyxVQUFBQyxPQUFBLFFBQUFzcEIsSUFBQXZwQixVQUFBLEdBQUFBLFVBQUEsR0FBRyxPQUc1QjhRLFFBQVV0TCxPQUFPc0IsT0FBT0YsU0FDdEI0dEMsS0FBTyxHQUVOempDLElBQUlELFFBQVMvSixNQUNsQnl0QyxLQUFLNzFDLEtBQUttUyxTQUNWQSxRQUFVdEosSUFBSXNKLFFBQVMsRUFBR21pQyxVQUc1QixPQUFPdUIsSUFDVCxFQXdMRWh0QyxJQUFBQSxJQUNBMmhCLEtBQUFBLEtBQ0FDLEtBeExGLFNBQVNBLEtBQUt6ckIsS0FBTXExQyxNQUNsQixJQUFNQyxTQUFXRixRQUFRQyxNQUNuQmxyQixNQUFReFgsUUFBUTNTLEtBQU1zMUMsVUFFNUIsT0FBTzVjLEdBQUd2TyxNQUFPbnFCLE1BQVFtcUIsTUFBUXRnQixJQUFJc2dCLE1BQU8sRUFBR21yQixTQUNqRCxFQW9MRXRzQyxJQW5PRixTQUFTQSxJQUFJOHVDLE1BQU9DLE9BQ2xCLElBQU0zQixJQUFNdnVDLE9BQU9pd0MsT0FDYnpCLElBQU14dUMsT0FBT2t3QyxPQUVuQixPQURjbHdDLE9BQU9tQixJQUFJb3RDLElBQUtDLEtBQ2pCcHRDLFFBQ2YsRUErTkVDLElBN05GLFNBQVNBLElBQUk0dUMsTUFBT0MsT0FDbEIsSUFBTTNCLElBQU12dUMsT0FBT2l3QyxPQUNiekIsSUFBTXh1QyxPQUFPa3dDLE9BRW5CLE9BRGNsd0MsT0FBT3FCLElBQUlrdEMsSUFBS0MsS0FDakJwdEMsUUFDZixFQXlORWdrQyxRQTVLRixTQUFTQSxRQUFRanRDLE1BRWYsT0FEVzZILE9BQU83SCxNQUNSaXRDLFNBQ1osRUEyS0VsVixZQXRJRixTQUFTQSxZQUFZbVQsR0FBSTNULG9CQUFxQnhLLFFBQzVDLE9BQU9sbEIsT0FBT3FqQyxJQUNYdjRCLFFBQVEsT0FDUnFsQyxPQUFPemdCLG9CQUFzQnhLLFFBQzdCOWpCLFFBQ0wsRUFrSUUwM0Isa0JBdFVGLFNBQVNBLGtCQUFrQjNnQyxNQUV6QixPQUFPNkgsT0FBTzdILE1BQU1pSixTQUFTMDNCLG1CQUMvQixFQW9VRXpJLGFBQUFBLGFBQ0FaLFlBaklGLFNBQVNBLFlBQVludUIsTUFBT0MsS0FDMUIsT0FBT29pQixLQUFLcmlCLE1BQU9DLElBQUssVUFDMUIsRUFnSUVvdUIsdUJBOUhGLFNBQVNBLHVCQUF1QnJ1QixPQUM5QixJQUFNOHVDLFNBQVdwd0MsT0FBT3NCLE9BQU93SixRQUFRLE9BRXZDLE9BRFk5SyxPQUFPc0IsT0FDUnFpQixLQUFLeXNCLFNBQVUsV0FwTDVCLFNBQVNDLHFCQUFxQi91QyxPQUU1QixPQUFPK3VCLGFBRFVyd0IsT0FBT3NCLE9BQU93SixRQUFRLE9BQ1R4SixNQUNoQyxDQWlMeUMrdUMsQ0FBcUIvdUMsTUFDOUQsRUEySEV3ZixlQXhIRixTQUFTQSxlQUFleGYsTUFBTzJlLE9BQzdCLElBQU02dUIsT0FBUzl1QyxPQUFPc0IsT0FDaEJndkMsT0FBU3R3QyxPQUFPaWdCLE9BQ3RCLE9BQU82dUIsT0FBT1EsU0FBU2dCLE9BQVEsTUFDakMsRUFxSEV2dkIsZUFuSEYsU0FBU0EsZUFBZXpmLE1BQU9DLElBQUsyZSxNQUNsQyxJQUFNNnVCLEtBQU8vdUMsT0FBT3VCLEtBQ2RndkMsTUFBUXZ3QyxPQUFPa2dCLE1BQ3JCLE9BQU82dUIsS0FBS3lCLGNBQWNELE1BQU8sVUFDbkMsRUFnSEU5VCxXQXRHRixTQUFTQSxXQUFVZ1UsT0FHaEIsSUFBQUMsV0FBQUQsTUFGRDlNLEtBQWVDLE9BQU04TSxXQUFicHZDLE1BQW9CdWlDLEtBQUk2TSxXQUFUbnZDLElBQW1CdWlDLFFBQU80TSxXQUFmbHZDLE9BQU1tdkMsV0FBQUYsTUFDeEN6TSxLQUFlQyxPQUFNME0sV0FBYnJ2QyxNQUFvQjRpQyxLQUFJeU0sV0FBVHB2QyxJQUFtQjRpQyxRQUFPd00sV0FBZm52QyxPQUU1QjRpQyxXQUFhdDVCLFFBQVE4NEIsT0FBUSxRQUFVOTRCLFFBQVFtNUIsT0FBUSxPQUV2REksS0FBT1osUUFBUUcsT0FBUUMsTUFFdkJTLEtBQU9iLFFBQVFRLE9BQVFDLE1BRTdCLE9BQ0VFLFdBQ0FFLEtBQU9ELFFBQ0xGLFVBQVlMLFVBQ2JGLFFBQVVLLFNBQ1ZKLE1BQVFLLElBRWIsRUFzRkVLLGFBcEZGLFNBQVNBLGFBQVlxTSxPQUdsQixJQUFBQyxZQUFBRCxNQUZEenNDLE1BQVM3QyxNQUFLdXZDLFlBQUx2dkMsTUFBT0MsSUFBR3N2QyxZQUFIdHZDLElBQUd1dkMsWUFBQUYsTUFDbkIzbEMsTUFBZ0IwbUIsV0FBVW1mLFlBQWpCeHZDLE1BQXdCc3dCLFNBQVFrZixZQUFidnZDLElBRXRCd3ZDLFdBQWEvd0MsT0FBT3NCLE9BQU93SixRQUFRLE9BQ25DeXhCLEtBQU92OEIsT0FBT3VCLEtBQ2R5dkMsT0FBU2h4QyxPQUFPMnhCLFlBQ2hCc2YsS0FBT2p4QyxPQUFPNHhCLFVBRWQ4UyxnQkFBa0JxTSxXQUFXbkMsZUFBZXFDLEtBQU0sT0FHbER0TSxnQkFEV29NLFdBQVd0QyxPQUFPbFMsS0FBTSxXQUVyQ0EsS0FBS2tULFFBQVF1QixPQUFRLFdBQ3JCelUsS0FBS2lVLGNBQWNRLE9BQVEsV0FFL0IsT0FBT3RNLGlCQUFtQkMsY0FDNUIsRUFvRUV6cEIsV0FsRUYsU0FBU0EsV0FBVzBwQixNQUFPQyxPQUN6QixJQUFNeEIsR0FBS3JqQyxPQUFPNGtDLE9BQ1pzTSxJQUFNbHhDLE9BQU82a0MsT0FDbkIsT0FBT3hCLEdBQUdvTCxPQUFPeUMsSUFBSyxNQUN4QixFQStERXpOLFFBQUFBLFFBQ0FnQyxnQkF4REYsU0FBU0Esa0JBTVAsSUFBTXBDLEdBQUssSUFBSTdtQyxLQUNUMjBDLElBQU0sSUFBSTVrQixLQUFLOFcsR0FBRytOLFlBQWMsSUFBTSxHQUN0Q0MsU0FBV2hPLEdBQUd2SyxvQkFDZHdZLFdBQWFDLE9BQU8sR0FBRDFzQyxPQUFJc3NDLEtBQUd0c0MsT0FBR3VaLEtBQUtvRyxJQUFJNnNCLFlBRzVDLE9BRGlCcnhDLFNBQVNtdUMsWUFDUm1ELFdBQWEsRUFBSSxDQUNyQyxHQTZDRixDLHVKQ25ZQSxJQVNNcEUsc0JBQWtCLFNBQWxCQSxnQkFBZWxvQyxNQUFvQjBFLFFBQVNnRCxPQUFLLElBQTVCcEwsTUFBSzBELE1BQUwxRCxNQUFPQyxJQUFHeUQsTUFBSHpELElBQUcsT0FDbkNtTCxNQUFNMkYsT0FBTy9RLE1BQU8sSUFBS29JLFNBQVcsTUFBUWdELE1BQU0yRixPQUFPOVEsSUFBSyxJQUFLbUksUUFBUSxFQVFoRXdJLGNBQVUsQ0FDckJDLFdBQVksS0FDWkcsVUFBVyxTQUNYRixjQUFlLE1BRWYyQixrQkFBbUJtNUIsc0JBQ25CejVCLHFCQUFzQnk1QixzQkFDdEJ2NUIsMEJBYjJCLFNBQXZCdzVCLHFCQUFvQjloQyxNQUFlM0IsUUFBU2dELE9BQUssSUFBdkJwTCxNQUFLK0osTUFBTC9KLE1BQUssT0FDbkNvTCxNQUFNMkYsT0FBTy9RLE1BQU8sSUFBS29JLFNBQVcsS0FBSyxFQWF6QzZKLHdCQVh5QixTQUFyQjY1QixtQkFBa0J4RixNQUFhbCtCLFFBQVNnRCxPQUFLLElBQXJCbkwsSUFBR3FtQyxNQUFIcm1DLElBQUcsTUFDL0IsTUFBUW1MLE1BQU0yRixPQUFPOVEsSUFBSyxJQUFLbUksUUFBUSxFQVl2QzZJLGlCQUFrQixJQUVsQnNCLGtCQUFtQixZQUNuQlYsZ0JBQWlCLGNBQ2pCRSxxQkFoQ3NCLFNBQWxCZzZCLGdCQUFlN3NDLEtBQW9Ca0osUUFBU2dELE9BQUssSUFBNUJwTCxNQUFLZCxLQUFMYyxNQUFPQyxJQUFHZixLQUFIZSxJQUFHLE9BQ25DbUwsTUFBTTJGLE9BQU8vUSxNQUFPLFVBQVdvSSxTQUMvQixNQUVBZ0QsTUFBTTJGLE9BQU85USxJQUFLbUwsTUFBTW1rQixHQUFHdnZCLE1BQU9DLElBQUssU0FBVyxLQUFPLFVBQVdtSSxRQUFRLEVBNkI1RWlKLG1CQTNCc0IsU0FBbEIyNkIsZ0JBQWVwcEMsTUFBb0J3RixRQUFTZ0QsT0FBSyxJQUE1QnBMLE1BQUs0QyxNQUFMNUMsTUFBT0MsSUFBRzJDLE1BQUgzQyxJQUFHLE9BQ25DbUwsTUFBTTJGLE9BQU8vUSxNQUFPLElBQUtvSSxTQUFXLE1BQVFnRCxNQUFNMkYsT0FBTzlRLElBQUssSUFBS21JLFFBQVEsRUE0QjNFK0ksaUJBQWtCLGFBQ2xCSSxpQkFBa0IsSUFDbEJFLHNCQUF1Qm02Qix1QkFHekIsU0FBU0ssY0FBUUMsTUFDZixJQUFJQyxTQUFXRCxLQTdDakIsU0FBU2dFLGNBQWNoRSxNQUNyQixNQUFPLEtBQUtqaEIsS0FBS2loQixNQUFRQSxLQUFPQSxLQUFPLEdBQ3pDLENBMkN3QmdFLENBQWNoRSxLQUFLRSxlQUFpQkYsS0FNMUQsTUFMaUIsYUFBYkMsU0FDRkEsU0FBVyxPQUNEQSxXQUNWQSxjQUFXMXBCLEdBRU4wcEIsUUFDVCxDQUtlLFNBQVMsTUFBQ3J0QyxVQUF1QyxJQUFGcXhDLHNCQUFFajNDLFVBQUFDLE9BQUEsUUFBQXNwQixJQUFBdnBCLFVBQUEsR0FBQUEsVUFBQSxHQUFKLENBQUMsR0FBeEI2RixlQUFBQSxvQkFBYyxJQUFBb3hDLHFCQUFHLEVBQUNBLHFCQVVyRCxTQUFTckQsa0JBQWtCN3VCLEVBQUdDLEVBQUdndUIsTUFDL0IsSUFBTUMsU0FBV0YsY0FBUUMsTUFPekIsTUFBTyxDQU5LQyxTQUNScnRDLFNBQVNzeEMsV0FBV255QixHQUFHelUsUUFBUTJpQyxVQUMvQnJ0QyxTQUFTc3hDLFdBQVdueUIsR0FDWmt1QixTQUNScnRDLFNBQVNzeEMsV0FBV2x5QixHQUFHMVUsUUFBUTJpQyxVQUMvQnJ0QyxTQUFTc3hDLFdBQVdseUIsR0FDTml1QixTQUNwQixDQU1BLFNBQVNrRSxjQUFjQyxPQUNyQixJQUFNQyxRQUFVRCxNQUFNQyxRQUN0QixHQUFJQSxVQUFZeHhDLGVBQ2QsT0FBT3V4QyxNQUFNOW1DLFFBQVEsT0FDaEIsR0FBdUIsSUFBbkJ6SyxlQUNULE9BQU91eEMsTUFBTTltQyxRQUFRLFFBRXZCLElBQU02WSxLQUEwQixJQUFuQnRqQixlQUF1Qnd4QyxRQUFVQSxTQUFXLEVBQUl4eEMsZ0JBQzdELE9BQU91eEMsTUFBTUUsTUFBTSxDQUFFOW9DLElBQUsyYSxPQUFRN1ksUUFBUSxNQUM1QyxDQUVBLFNBQVNpbkMsWUFBWUgsT0FDbkIsSUFBTUMsUUFBVUQsTUFBTUMsUUFDaEJHLElBQXlCLElBQW5CM3hDLGVBQXVCLEVBQUlBLGVBQWlCLEVBQ3hELE9BQUl3eEMsVUFBWUcsSUFDUEosTUFBTWhuQyxNQUFNLE9BQ1MsSUFBbkJ2SyxlQUNGdXhDLE1BQU1obkMsTUFBTSxTQUduQnZLLGVBQWlCMnhDLElBQU1KLE1BQU1LLEtBQUssQ0FBRWpwQyxJQUFLM0ksZUFBaUIyeEMsTUFBU0osT0FDckR2VyxJQUFJLENBQUV3VyxRQUFTRyxNQUFPcG5DLE1BQU0sTUFDOUMsQ0FHQSxTQUFTc25DLFlBQW1DLElBQXpCLzVDLEtBQUlxQyxVQUFBQyxPQUFBLFFBQUFzcEIsSUFBQXZwQixVQUFBLEdBQUFBLFVBQUEsR0FBRyxJQUFJZ0MsS0FDdEJpeEMsU0FBV0YsY0FEdUIveUMsVUFBQUMsT0FBQSxFQUFBRCxVQUFBLFFBQUF1cEIsR0FFeEMsR0FBSTBwQixTQUFVLENBQ1osSUFBTXBLLEdBQUtqakMsU0FBU3N4QyxXQUFXdjVDLE1BQy9CLE9BQU9zMUMsU0FBUzE3QixTQUFTLFFBQ3JCNC9CLGNBQWN0TyxJQUNkQSxHQUFHdjRCLFFBQVEyaUMsU0FDakIsQ0FDQSxPQUFPcnRDLFNBQVNzeEMsV0FBV3Y1QyxLQUM3QixDQU9BLFNBQVMyUyxVQUNQLE9BQU9vbkMsVUFEWTEzQyxVQUFBQyxPQUFBLFFBQUFzcEIsSUFBQXZwQixVQUFBLEdBQUFBLFVBQUEsR0FBRyxJQUFJZ0MsS0FBWWhDLFVBQUFDLE9BQUEsRUFBQUQsVUFBQSxRQUFBdXBCLEdBQ1Q1VyxVQUMvQixDQUdBLFNBQVNnbEMsVUFBaUMsSUFBekJoNkMsS0FBSXFDLFVBQUFDLE9BQUEsUUFBQXNwQixJQUFBdnBCLFVBQUEsR0FBQUEsVUFBQSxHQUFHLElBQUlnQyxLQUNwQml4QyxTQUFXRixjQURxQi95QyxVQUFBQyxPQUFBLEVBQUFELFVBQUEsUUFBQXVwQixHQUV0QyxHQUFJMHBCLFNBQVUsQ0FDWixJQUFNcEssR0FBS2pqQyxTQUFTc3hDLFdBQVd2NUMsTUFDL0IsT0FBT3MxQyxTQUFTMTdCLFNBQVMsUUFBVWdnQyxZQUFZMU8sSUFBTUEsR0FBR3o0QixNQUFNNmlDLFNBQ2hFLENBQ0EsT0FBT3J0QyxTQUFTc3hDLFdBQVd2NUMsS0FDN0IsQ0FNQSxTQUFTMDRCLEdBQUd0UixFQUFHQyxFQUFHZ3VCLE1BQ2hCLElBQUFhLG1CQUFtQkQsa0JBQWtCN3VCLEVBQUdDLEVBQUdndUIsTUFBS2MscUJBQUF6cUMsRUFBQUEsY0FBQUEsR0FBQXdxQyxtQkFBQSxHQUNoRCxPQURVQyxvQkFBQSxLQUFLQSxvQkFBQSxFQUVqQixDQUVBLFNBQVNuekIsSUFBSW9FLEVBQUdDLEVBQUdndUIsTUFDakIsT0FBUTNjLEdBQUd0UixFQUFHQyxFQUFHZ3VCLEtBQ25CLENBRUEsU0FBU3JjLEdBQUc1UixFQUFHQyxFQUFHZ3VCLE1BQ2hCLElBQUErQixvQkFBbUJuQixrQkFBa0I3dUIsRUFBR0MsRUFBR2d1QixNQUFLZ0MscUJBQUEzckMsRUFBQUEsY0FBQUEsR0FBQTByQyxvQkFBQSxHQUNoRCxPQURVQyxvQkFBQSxJQUFLQSxvQkFBQSxFQUVqQixDQUVBLFNBQVMxb0IsR0FBR3ZILEVBQUdDLEVBQUdndUIsTUFDaEIsSUFBQTRCLG9CQUFtQmhCLGtCQUFrQjd1QixFQUFHQyxFQUFHZ3VCLE1BQUs2QixxQkFBQXhyQyxFQUFBQSxjQUFBQSxHQUFBdXJDLG9CQUFBLEdBQ2hELE9BRFVDLG9CQUFBLElBQUtBLG9CQUFBLEVBRWpCLENBRUEsU0FBU3RvQixJQUFJeEgsRUFBR0MsRUFBR2d1QixNQUNqQixJQUFBa0Msb0JBQW1CdEIsa0JBQWtCN3VCLEVBQUdDLEVBQUdndUIsTUFBS21DLHFCQUFBOXJDLEVBQUFBLGNBQUFBLEdBQUE2ckMsb0JBQUEsR0FDaEQsT0FEVUMsb0JBQUEsS0FBS0Esb0JBQUEsRUFFakIsQ0FFQSxTQUFTcGtDLElBQUlnVSxFQUFHQyxFQUFHZ3VCLE1BQ2pCLElBQUFrQixvQkFBbUJOLGtCQUFrQjd1QixFQUFHQyxFQUFHZ3VCLE1BQUttQixzQkFBQTlxQyxFQUFBQSxjQUFBQSxHQUFBNnFDLG9CQUFBLEdBQ2hELE9BRFVDLHFCQUFBLEtBQUtBLHFCQUFBLEVBRWpCLENBdUNBLFNBQVMzc0MsSUFBSTdKLEtBQU0wMkMsTUFBT3JCLE1BQ3hCLElBQU1DLFNBQVdGLGNBQVFDLE1BQ3pCLE9BQU9wdEMsU0FBU3N4QyxXQUFXdjVDLE1BQ3hCODVDLE1BQUk1NEMsRUFBQUEsZUFBQUEsR0FBQyxDQUFDLEVBQUVvMEMsU0FBV29CLFFBQ25CMWhDLFVBQ0wsQ0FzQkEsU0FBU3dXLEtBQUtwRSxFQUFHQyxHQUFpQixJQUMxQml1QixTQUFXRixjQURLL3lDLFVBQUFDLE9BQUEsUUFBQXNwQixJQUFBdnBCLFVBQUEsR0FBQUEsVUFBQSxHQUFHLE9BR25CK3pDLElBQU1udUMsU0FBU3N4QyxXQUFXbnlCLEdBQzFCaXZCLElBQU1wdUMsU0FBU3N4QyxXQUFXbHlCLEdBQ2hDLE9BQU9wQixLQUFLa0UsTUFDVmtzQixJQUFJN3FCLEtBQUs0cUIsSUFBS2QsU0FBVSxDQUFFMkUsbUJBQW9CLGFBQWNDLFdBQzFENUUsVUFHTixDQUVBLFNBQVNwSSxnQkFBZ0JsdEMsTUFFdkIsT0FBT3c1QyxjQURjTyxVQUFVLzVDLEtBQU0sVUFDRmdWLFVBQ3JDLENBRUEsU0FBU200QixlQUFlbnRDLE1BRXRCLE9BQU80NUMsWUFEWUksUUFBUWg2QyxLQUFNLFVBQ0ZnVixVQUNqQyxDQXNEQSxTQUFTczJCLFFBQVFuaUMsTUFBT0MsS0FDdEIsSUFBTSt3QyxRQUFVbHlDLFNBQVNzeEMsV0FBV3B3QyxPQUVwQyxPQURjbEIsU0FBU3N4QyxXQUFXbndDLEtBQ3JCb2lCLEtBQUsydUIsU0FBU0MsR0FBRyxPQUNoQyxDQW1FQSxPQUFPLElBQUl4Tix3QkFBYyxDQUN2QjF5QixPQUFNLFNBQUFBLE9BQUM3WSxNQUFPNlksUUFBUTNJLFNBQ3BCLE9BQUlBLFFBL1RSLFNBQVM4b0Msc0JBQXNCaDVDLE1BQU9rUSxRQUFTMkksUUFDN0MsT0FBT2pTLFNBQVNzeEMsV0FBV2w0QyxPQUFPaTVDLFVBQVUvb0MsU0FBU2dwQyxTQUFTcmdDLE9BQ2hFLENBOFRhbWdDLENBQXNCaDVDLE1BQU9rUSxRQUFTMkksU0FwVW5ELFNBQVNzZ0MsV0FBV241QyxNQUFPNlksUUFDekIsT0FBT2pTLFNBQVNzeEMsV0FBV2w0QyxPQUFPazVDLFNBQVNyZ0MsT0FDN0MsQ0FvVVdzZ0MsQ0FBV241QyxNQUFPNlksUUFDM0IsRUFFQUgsUUFBQUEsY0FFQSt5QixZQS9RRixTQUFTQSxjQUNQLE9BQU81a0MsY0FDVCxFQThRRWdsQyxnQkFBQUEsZ0JBQ0FDLGVBQUFBLGVBQ0FDLFlBeElGLFNBQVNBLFlBQVlwdEMsTUFLbkIsSUFKQSxJQUFJbVQsUUFBVSs1QixnQkFBZ0JsdEMsTUFDeEIrbkIsS0FBT29sQixlQUFlbnRDLE1BQ3RCNjJDLEtBQU8sR0FFTnpqQyxJQUFJRCxRQUFTNFUsT0FDbEI4dUIsS0FBSzcxQyxLQUFLbVMsU0FDVkEsUUFBVXRKLElBQUlzSixRQUFTLEVBQUcsT0FHNUIsT0FBTzBqQyxJQUNULEVBK0hFbG9CLEdBQUFBLEdBQ0F2YixJQUFBQSxJQUNBNGxCLEdBQUFBLEdBQ0FwSyxJQUFBQSxJQUNBOEosR0FBQUEsR0FDQTFWLElBQUFBLElBQ0FxVyxNQWhORixTQUFTQSxNQUFNcjVCLEtBQU0wdEMsTUFDbkIsSUFBSzF0QyxPQUFTMHRDLEtBQU0sT0FBTyxLQUUzQixJQUFNK0osR0FBS3h2QyxTQUFTc3hDLFdBQVc3TCxNQUUvQixPQURXcU0sVUFBVS81QyxLQUFNLE9BRXhCa2pDLElBQUksQ0FDSHZwQixLQUFNODlCLEdBQUc5OUIsS0FDVHErQixPQUFRUCxHQUFHTyxPQUNYeUMsT0FBUWhELEdBQUdnRCxPQUNYQyxZQUFhakQsR0FBR2lELGNBRWpCMWxDLFVBQ0wsRUFvTUV1akIsUUF2T0YsU0FBU0EsUUFBUTFuQixJQUFLN0gsSUFBS0UsS0FBbUIsSUFDdENvc0MsU0FBV0YsY0FEaUIveUMsVUFBQUMsT0FBQSxRQUFBc3BCLElBQUF2cEIsVUFBQSxHQUFBQSxVQUFBLEdBQUcsT0FFL0JxMUMsS0FBT3FDLFVBQVVscEMsSUFBS3lrQyxVQUN0QnFDLEtBQU9vQyxVQUFVL3dDLElBQUtzc0MsVUFDdEJzQyxLQUFPbUMsVUFBVTd3QyxJQUFLb3NDLFVBQzVCLE9BQVFvQyxPQUFTQyxPQUFTRCxPQUFTRSxJQUNyQyxFQWtPRWpsQyxRQUFBQSxRQUNBRixNQTFRRixTQUFTQSxRQUNQLE9BQU91bkMsUUFEVTMzQyxVQUFBQyxPQUFBLFFBQUFzcEIsSUFBQXZwQixVQUFBLEdBQUFBLFVBQUEsR0FBRyxJQUFJZ0MsS0FBWWhDLFVBQUFDLE9BQUEsRUFBQUQsVUFBQSxRQUFBdXBCLEdBQ1Q1VyxVQUM3QixFQXlRRWxDLE1BOUxGLFNBQVNBLE1BQU0zSixNQUFPQyxLQUtwQixJQUx1QyxJQUNqQ2tzQyxTQUFXRixjQURZL3lDLFVBQUFDLE9BQUEsUUFBQXNwQixJQUFBdnBCLFVBQUEsR0FBQUEsVUFBQSxHQUFHLE9BRTVCOFEsUUFBVWxMLFNBQVNzeEMsV0FBV3B3QyxPQUFPNkwsV0FDbkM2aEMsS0FBTyxHQUVOempDLElBQUlELFFBQVMvSixNQUNsQnl0QyxLQUFLNzFDLEtBQUttUyxTQUNWQSxRQUFVdEosSUFBSXNKLFFBQVMsRUFBR21pQyxVQUc1QixPQUFPdUIsSUFDVCxFQW9MRWh0QyxJQUFBQSxJQUNBMmhCLEtBQUFBLEtBQ0FDLEtBcExGLFNBQVNBLEtBQUt6ckIsS0FBTXExQyxNQUNsQixJQUFNQyxTQUFXRixjQUFRQyxNQUNuQmxyQixNQUFReFgsUUFBUTNTLEtBQU1zMUMsVUFFNUIsT0FBTzVjLEdBQUd2TyxNQUFPbnFCLE1BQVFtcUIsTUFBUXRnQixJQUFJc2dCLE1BQU8sRUFBR21yQixTQUNqRCxFQWdMRXRzQyxJQXRPRixTQUFTQSxJQUFJOHVDLE1BQU9DLE9BQ2xCLElBQU0zQixJQUFNbnVDLFNBQVNzeEMsV0FBV3pCLE9BQzFCekIsSUFBTXB1QyxTQUFTc3hDLFdBQVd4QixPQUVoQyxPQURjOXZDLFNBQVNlLElBQUlvdEMsSUFBS0MsS0FDbkJyaEMsVUFDZixFQWtPRTlMLElBaE9GLFNBQVNBLElBQUk0dUMsTUFBT0MsT0FDbEIsSUFBTTNCLElBQU1udUMsU0FBU3N4QyxXQUFXekIsT0FDMUJ6QixJQUFNcHVDLFNBQVNzeEMsV0FBV3hCLE9BRWhDLE9BRGM5dkMsU0FBU2lCLElBQUlrdEMsSUFBS0MsS0FDbkJyaEMsVUFDZixFQTZORStpQixZQXJJRixTQUFTQSxZQUFZbVQsR0FBSTNULG9CQUFxQnhLLFFBQzVDLE9BQU9ndEIsVUFBVTdPLEdBQUksT0FDbEJoSSxJQUFJLENBQUUrSixRQUFTMVYsb0JBQXNCeEssU0FDckMvWCxVQUNMLEVBa0lFc2lCLFlBL0hGLFNBQVNBLFlBQVludUIsTUFBT0MsS0FDMUIsT0FBT29pQixLQUFLcmlCLE1BQU9DLElBQUssVUFDMUIsRUE4SEVvdUIsdUJBNUhGLFNBQVNBLHVCQUF1QnJ1QixPQUM5QixJQUFNOHVDLFNBQVc4QixVQUFVNXdDLE1BQU8sT0FDNUIwSCxJQUFNNUksU0FBU3N4QyxXQUFXcHdDLE9BQ2hDLE9BQU84YyxLQUFLMDBCLE1BQ1Y5cEMsSUFDRzJhLEtBQUt5c0IsU0FBVSxVQUFXLENBQUVnQyxtQkFBb0IsYUFDaERDLFdBQVdqTixRQUVsQixFQXFIRXRrQixlQWxIRixTQUFTQSxlQUFleGYsTUFBTzJlLE9BQzdCLE9BQU82RyxHQUFHeGxCLE1BQU8yZSxNQUNuQixFQWlIRWMsZUEvR0YsU0FBU0EsZUFBZXpmLE1BQU9DLElBQUsyZSxNQUNsQyxPQUFPNkcsSUFBSXhsQixJQUFLMmUsS0FDbEIsRUE4R0V1YyxXQXJHRixTQUFTQSxXQUFVbVUsT0FHaEIsSUFBQW1DLFdBQUFuQyxNQUZEak4sS0FBZUMsT0FBTW1QLFdBQWJ6eEMsTUFBb0J1aUMsS0FBSWtQLFdBQVR4eEMsSUFBbUJ1aUMsUUFBT2lQLFdBQWZ2eEMsT0FBTXd4QyxXQUFBcEMsTUFDeEM1TSxLQUFlQyxPQUFNK08sV0FBYjF4QyxNQUFvQjRpQyxLQUFJOE8sV0FBVHp4QyxJQUFtQjRpQyxRQUFPNk8sV0FBZnh4QyxPQUU1QjRpQyxXQUFhdDVCLFFBQVE4NEIsT0FBUSxRQUFVOTRCLFFBQVFtNUIsT0FBUSxPQUV2REksS0FBT1osUUFBUUcsT0FBUUMsTUFFdkJTLEtBQU9iLFFBQVFRLE9BQVFDLE1BRTdCLE9BQ0VFLFdBQ0FFLEtBQU9ELFFBQ0xGLFVBQVlMLFVBQ2JGLFFBQVVLLFNBQ1ZKLE1BQVFLLElBRWIsRUFxRkVLLGFBbkZGLFNBQVNBLGFBQVkwTyxPQUdsQixJQUFBQyxZQUFBRCxNQUZEOXVDLE1BQVM3QyxNQUFLNHhDLFlBQUw1eEMsTUFBT0MsSUFBRzJ4QyxZQUFIM3hDLElBQUc0eEMsWUFBQUYsTUFDbkJob0MsTUFBZ0IwbUIsV0FBVXdoQixZQUFqQjd4QyxNQUF3QnN3QixTQUFRdWhCLFlBQWI1eEMsSUFFdEIrNkIsT0FBU3h4QixRQUFReEosTUFBTyxPQUV4Qm9qQyxnQkFBa0JuNUIsSUFBSSt3QixPQUFRMUssU0FBVSxPQUd4QytTLGVBRFV4cEIsSUFBSW1oQixPQUFRLzZCLElBQUssV0FFN0I0dkIsR0FBRzV2QixJQUFLb3dCLFdBQVksV0FDcEI1SyxJQUFJeGxCLElBQUtvd0IsV0FBWSxXQUN6QixPQUFPK1MsaUJBQW1CQyxjQUM1QixFQXVFRXpwQixXQWxFRixTQUFTQSxXQUFXMHBCLE1BQU9DLE9BQ3pCLElBQU14QixHQUFLampDLFNBQVNzeEMsV0FBVzlNLE9BQ3pCc00sSUFBTTl3QyxTQUFTc3hDLFdBQVc3TSxPQUNoQyxPQUFPeEIsR0FBRytQLFFBQVFsQyxJQUFLLE1BQ3pCLEVBK0RFek4sUUFBQUEsUUFDQWdDLGdCQXhERixTQUFTQSxrQkFNUCxJQUFNcEMsR0FBSyxJQUFJN21DLEtBQ1QyMEMsSUFBTSxJQUFJNWtCLEtBQUs4VyxHQUFHK04sWUFBYyxJQUFNLEdBQ3RDQyxTQUFXaE8sR0FBR3ZLLG9CQUNkd1ksV0FBYUMsT0FBTyxHQUFEMXNDLE9BQUlzc0MsS0FBR3RzQyxPQUFHdVosS0FBS29HLElBQUk2c0IsWUFHNUMsT0FEaUJqeEMsU0FBU3NNLFFBQVF3WSxPQUNoQm9zQixXQUFhLEVBQUksQ0FDckMsR0E2Q0YsQ0NyYUEsSUFHSXBFLDZCQUFrQixTQUFsQkEsZ0JBQWVocEMsTUFBb0J3RixRQUFTZ0QsT0FBSyxJQUE1QnBMLE1BQUs0QyxNQUFMNUMsTUFBT0MsSUFBRzJDLE1BQUgzQyxJQUFHLE9BQ2pDbUwsTUFBTTJGLE9BQU8vUSxNQUFPLElBQUtvSSxTQUFXLE1BQVFnRCxNQUFNMkYsT0FBTzlRLElBQUssSUFBS21JLFFBQVEsRUFhbEV3SSxxQkFBVSxDQUNuQkMsV0FBWSxLQUNaRyxVQUFXLFlBQ1hGLGNBQWUsTUFFZjJCLGtCQUFtQm01Qiw2QkFDbkJ6NUIscUJBQXNCeTVCLDZCQUN0QnY1QiwwQkFsQnlCLFNBQXZCdzVCLHFCQUFvQm5vQyxNQUFlMEUsUUFBU2dELE9BQUssSUFBdkJwTCxNQUFLMEQsTUFBTDFELE1BQUssT0FDakNvTCxNQUFNMkYsT0FBTy9RLE1BQU8sSUFBS29JLFNBQVcsS0FBSyxFQWtCekM2Six3QkFoQnVCLFNBQXJCNjVCLG1CQUFrQi9oQyxNQUFhM0IsUUFBU2dELE9BQUssSUFBckJuTCxJQUFHOEosTUFBSDlKLElBQUcsTUFDN0IsTUFBUW1MLE1BQU0yRixPQUFPOVEsSUFBSyxJQUFLbUksUUFBUSxFQWlCdkM2SSxpQkFBa0IsSUFFbEJzQixrQkFBbUIsSUFDbkJWLGdCQUFpQixjQUNqQkUscUJBbkJvQixTQUFsQmc2QixnQkFBZXpGLE1BQW9CbCtCLFFBQVNnRCxPQUFLLElBQTVCcEwsTUFBS3NtQyxNQUFMdG1DLE1BQU9DLElBQUdxbUMsTUFBSHJtQyxJQUFHLE9BQ2pDbUwsTUFBTTJGLE9BQU8vUSxNQUFPLFNBQVVvSSxTQUM5QixNQUNBZ0QsTUFBTTJGLE9BQU85USxJQUFLK0csTUFBTXVvQixHQUFHdnZCLE1BQU9DLElBQUssU0FBVyxLQUFPLFNBQVVtSSxRQUFRLEVBaUIzRWlKLG1CQWhDb0IsU0FBbEIyNkIsZ0JBQWU5c0MsS0FBb0JrSixRQUFTZ0QsT0FBSyxJQUE1QnBMLE1BQUtkLEtBQUxjLE1BQU9DLElBQUdmLEtBQUhlLElBQUcsT0FDakNtTCxNQUFNMkYsT0FBTy9RLE1BQU8sSUFBS29JLFNBQVcsTUFBUWdELE1BQU0yRixPQUFPOVEsSUFBSyxJQUFLbUksUUFBUSxFQWlDM0UrSSxpQkFBa0IsYUFDbEJJLGlCQUFrQixJQUNsQkUsc0JBQXVCbTZCLDhCQUdWLFNBQVMsYUFBQ3B0QyxXQVV2QixPQUFPLElBQUlpbEMsd0JBQWMsQ0FDdkJFLFlBTkYsU0FBU0EsWUFBWXY3QixTQUVuQixPQURBQSxRQUxGLFNBQVMycEMsV0FBVzNwQyxTQUNsQixPQUFPQSxRQUFVNUosVUFBVXd6QyxtQkFBbUI1cEMsU0FBVzVKLFVBQVU0SixTQUNyRSxDQUdZMnBDLENBQVczcEMsV0FDRkEsUUFBUTZwQyxTQUFTQyxVQUFhLENBQ25ELEVBSUV0aEMsUUFBQUEscUJBQ0FHLE9BQU0sU0FBQUEsT0FBQzdZLE1BQU82WSxRQUFRM0ksU0FDcEIsT0FBTzVKLFVBQVV1UyxPQUFPN1ksTUFBTzZZLFFBQVEzSSxRQUN6QyxHQUVKLENDckRBLElBS0l3akMsMEJBQWtCLFNBQWxCQSxnQkFBZWhwQyxNQUFvQndGLFFBQVNnRCxPQUFLLElBQTVCcEwsTUFBSzRDLE1BQUw1QyxNQUFPQyxJQUFHMkMsTUFBSDNDLElBQUcsT0FDakNtTCxNQUFNMkYsT0FBTy9RLE1BQU8sQ0FBRXVrQyxLQUFNLFNBQVduOEIsU0FDdkMsTUFDQWdELE1BQU0yRixPQUFPOVEsSUFBSyxDQUFFc2tDLEtBQU0sU0FBV244QixRQUFRLEVBYXBDd0ksa0JBQVUsQ0FDbkJDLFdBQVksS0FDWkcsVUFBVyxZQUNYRixjQUFlLE1BRWYyQixrQkFBbUJtNUIsMEJBQ25CejVCLHFCQUFzQnk1QiwwQkFDdEJ2NUIsMEJBbEJ5QixTQUF2Qnc1QixxQkFBb0Jub0MsTUFBZTBFLFFBQVNnRCxPQUFLLElBQXZCcEwsTUFBSzBELE1BQUwxRCxNQUFLLE9BQ2pDb0wsTUFBTTJGLE9BQU8vUSxNQUFPLENBQUV1a0MsS0FBTSxTQUFXbjhCLFNBQVcsS0FBSyxFQWtCdkQ2Six3QkFoQnVCLFNBQXJCNjVCLG1CQUFrQi9oQyxNQUFhM0IsUUFBU2dELE9BQUssSUFBckJuTCxJQUFHOEosTUFBSDlKLElBQUcsTUFDN0IsTUFBUW1MLE1BQU0yRixPQUFPOVEsSUFBSyxDQUFFc2tDLEtBQU0sU0FBV244QixRQUFRLEVBaUJyRDZJLGlCQUFrQixDQUFFc3pCLEtBQU0sU0FFMUJoeUIsa0JBQW1CLFlBQ25CVixnQkFBaUIsY0FDakJFLHFCQW5Cb0IsU0FBbEJnNkIsZ0JBQWV6RixNQUFvQmwrQixRQUFTZ0QsT0FBSyxJQUE1QnBMLE1BQUtzbUMsTUFBTHRtQyxNQUFPQyxJQUFHcW1DLE1BQUhybUMsSUFBRyxPQUNqQ21MLE1BQU0yRixPQUFPL1EsTUFBTyxTQUFVb0ksU0FDOUIsTUFDQWdELE1BQU0yRixPQUFPOVEsSUFBSytHLE1BQU11b0IsR0FBR3Z2QixNQUFPQyxJQUFLLFNBQVcsS0FBTyxTQUFVbUksUUFBUSxFQWlCM0VpSixtQkFwQ29CLFNBQWxCMjZCLGdCQUFlOXNDLEtBQW9Ca0osUUFBU2dELE9BQUssSUFBNUJwTCxNQUFLZCxLQUFMYyxNQUFPQyxJQUFHZixLQUFIZSxJQUFHLE9BQ2pDbUwsTUFBTTJGLE9BQU8vUSxNQUFPLENBQUVuSixLQUFNLFNBQVd1UixTQUN2QyxNQUNBZ0QsTUFBTTJGLE9BQU85USxJQUFLLENBQUVwSixLQUFNLFNBQVd1UixRQUFRLEVBbUM3QytJLGlCQUFrQixhQUNsQkksaUJBQWtCLENBQUVnekIsS0FBTSxTQUMxQjl5QixzQkFBdUJtNkIsMkJBR1YsU0FBUyxVQUFDcHRDLFdBQ3ZCLElBQUlvdkMsT0FBUyxTQUFUQSxPQUFVeGxDLFNBQU8sT0FBTUEsUUFBVTVKLFVBQVU0SixTQUFXNUosU0FBUyxFQWlDbkUsT0FBS0EsVUFBVTJ6QyxLQUVSLElBQUkxTyx3QkFBYyxDQUN2QkUsWUE5QkYsU0FBU0EsWUFBWXY3QixTQUNuQixJQUNFLElBQ01ncUMsS0FBT3hFLE9BQU94bEMsU0FBU2dxQyxLQUN2QkMsVUFBWUQsS0FBS0UsV0FBV0QsVUFFNUJILFNBRFdFLEtBQUtsaEIsSUFBSSxnQkFBZ0JxaEIsU0FDaEJMLFNBQVNHLFdBQWEsT0FDaEQsTUFMYSxDQUFDLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE9BSzVDdHBCLFFBQVFtcEIsU0FDdEIsQ0FBRSxNQUFPdjBCLEdBQ0g2MEIsRUFPSixJQUFNMzdDLEtBQU8sSUFBSXFFLEtBRWJ1M0MsVUFBWTMxQixLQUFLL2MsSUFDbkIyeUMsU0FBUzlFLE9BQU94bEMsU0FBU2lwQyxXQUFXeDZDLEtBQU0sQ0FBRTg3QyxJQUFLLE1BQVEsSUFBTSxFQUMvRCxHQUdGLE9BQU83MUIsS0FBS29HLElBQUlyc0IsS0FBS3V3QyxTQUFXcUwsVUFDbEMsQ0FDRixFQU1FN2hDLFFBQUFBLGtCQUNBRyxPQUFNLFNBQUFBLE9BQUM3WSxNQUFPNlksUUFBUTNJLFNBRXBCLE9BREEySSxRQUEyQixpQkFBWEEsUUFBc0IsQ0FBRTRoQyxJQUFLNWhDLFNBQVdBLFFBQ2pENjhCLE9BQU94bEMsU0FBU2lwQyxXQUFXbjVDLE1BQU82WSxRQUMzQyxJQVIwQjZoQyxhQUFhcDBDLFVBVTNDLENDMUZBLEksdTRCQ21CTW90QyxzQkFBa0IsU0FBbEJBLGdCQUFlbG9DLE1BQW9CMEUsUUFBU2dELE9BQUssSUFBNUJwTCxNQUFLMEQsTUFBTDFELE1BQU9DLElBQUd5RCxNQUFIekQsSUFBRyxPQUNuQ21MLE1BQU0yRixPQUFPL1EsTUFBTyxLQUFNb0ksU0FBVyxNQUFRZ0QsTUFBTTJGLE9BQU85USxJQUFLLEtBQU1tSSxRQUFRLEVBUWxFd0ksY0FBVSxDQUNyQkMsV0FBWSxLQUNaRyxVQUFXLFNBQ1hGLGNBQWUsTUFFZjJCLGtCQUFtQm01QixzQkFDbkJ6NUIscUJBQXNCeTVCLHNCQUN0QnY1QiwwQkFiMkIsU0FBdkJ3NUIscUJBQW9COWhDLE1BQWUzQixRQUFTZ0QsT0FBSyxJQUF2QnBMLE1BQUsrSixNQUFML0osTUFBSyxPQUNuQ29MLE1BQU0yRixPQUFPL1EsTUFBTyxLQUFNb0ksU0FBVyxLQUFLLEVBYTFDNkosd0JBWHlCLFNBQXJCNjVCLG1CQUFrQnhGLE1BQWFsK0IsUUFBU2dELE9BQUssSUFBckJuTCxJQUFHcW1DLE1BQUhybUMsSUFBRyxNQUMvQixNQUFRbUwsTUFBTTJGLE9BQU85USxJQUFLLEtBQU1tSSxRQUFRLEVBWXhDNkksaUJBQWtCLEtBRWxCc0Isa0JBQW1CLFlBQ25CVixnQkFBaUIsY0FDakJFLHFCQWhDc0IsU0FBbEJnNkIsZ0JBQWU3c0MsS0FBb0JrSixRQUFTZ0QsT0FBSyxJQUE1QnBMLE1BQUtkLEtBQUxjLE1BQU9DLElBQUdmLEtBQUhlLElBQUcsT0FDbkNtTCxNQUFNMkYsT0FBTy9RLE1BQU8sVUFBV29JLFNBQy9CLE1BRUFnRCxNQUFNMkYsT0FBTzlRLElBQUttTCxNQUFNbWtCLEdBQUd2dkIsTUFBT0MsSUFBSyxTQUFXLEtBQU8sVUFBV21JLFFBQVEsRUE2QjVFaUosbUJBM0JzQixTQUFsQjI2QixnQkFBZXBwQyxNQUFvQndGLFFBQVNnRCxPQUFLLElBQTVCcEwsTUFBSzRDLE1BQUw1QyxNQUFPQyxJQUFHMkMsTUFBSDNDLElBQUcsT0FDbkNtTCxNQUFNMkYsT0FBTy9RLE1BQU8sSUFBS29JLFNBQVcsTUFBUWdELE1BQU0yRixPQUFPOVEsSUFBSyxJQUFLbUksUUFBUSxFQTRCM0UrSSxpQkFBa0IsYUFDbEJJLGlCQUFrQixLQUNsQkUsc0JBQXVCbTZCLHVCQUd6QixTQUFTSyxjQUFRQyxNQUNmLElBQUlDLFNBQVdELEtBQU9BLEtBQUtFLGNBQWdCRixLQU0zQyxNQUxpQixhQUFiQyxTQUNGQSxTQUFXLE9BQ0RBLFdBQ1ZBLGNBQVcxcEIsR0FFTjBwQixRQUNULENBRWUsU0FBUyxNQUFDMEcsVUFFdkJBLFNBQVNDLE9BQU9wRSxxQkFDaEJtRSxTQUFTQyxPQUFPNUQseUJBQ2hCMkQsU0FBU0MsT0FBT3hGLDBCQUNoQnVGLFNBQVNDLE9BQU9uRixzQkFDaEJrRixTQUFTQyxPQUFPQywyQkFDaEJGLFNBQVNDLE9BQU9FLGtCQUNoQkgsU0FBU0MsT0FBT0csZUFFaEIsSUFJTXpvQyxNQUFRcW9DLFNBQVNwRyxHQUFLb0csU0FBU3BHLEdBQUtvRyxTQU8xQyxTQUFTOWpCLGFBQWEvdUIsTUFBT0MsS0FBSyxJQUFBaXpDLG9CQUUxQjNHLEdBQUsvaEMsTUFBTXhLLE9BQ1h3c0MsR0FBS2hpQyxNQUFNdkssS0FFakIsSUFBS3VLLE1BQU1paUMsR0FDVCxPQUFPRixHQUFHenNDLFNBQVMwM0Isb0JBQXNCZ1YsR0FBRzFzQyxTQUFTMDNCLG9CQU92RCxJQUFNa1YsT0FBNkIsUUFBdkJ3RyxvQkFBRzNHLEdBQUdFLEtBQUswRyxHQUFHQyxpQkFBUyxJQUFBRixvQkFBQUEsb0JBQUlMLFNBQVNwRyxHQUFHMytCLFFBSW5ELE9BRnFCdEQsTUFBTWlpQyxJQUFJRixHQUFJRyxRQUFRRyxjQUN4QnJpQyxNQUFNaWlDLElBQUlELEdBQUlFLFFBQVFHLFdBRTNDLENBUUEsU0FBU0Msa0JBQWtCN3VCLEVBQUdDLEVBQUdndUIsTUFDL0IsSUFBTUMsU0FBV0YsY0FBUUMsTUFHekIsTUFBTyxDQUZLQyxTQUFXM2hDLE1BQU15VCxHQUFHelUsUUFBUTJpQyxVQUFZM2hDLE1BQU15VCxHQUM5Q2t1QixTQUFXM2hDLE1BQU0wVCxHQUFHMVUsUUFBUTJpQyxVQUFZM2hDLE1BQU0wVCxHQUN4Q2l1QixTQUNwQixDQUVBLFNBQVMzaUMsVUFBMkIsSUFBbkIzUyxLQUFJcUMsVUFBQUMsT0FBQSxRQUFBc3BCLElBQUF2cEIsVUFBQSxHQUFBQSxVQUFBLEdBQUcsS0FDaEJpekMsU0FBV0YsY0FEZS95QyxVQUFBQyxPQUFBLEVBQUFELFVBQUEsUUFBQXVwQixHQUVoQyxPQUFJMHBCLFNBQ0szaEMsTUFBTTNULE1BQU0yUyxRQUFRMmlDLFVBQVVyc0MsU0FFaEMwSyxNQUFNM1QsTUFBTWlKLFFBQ3JCLENBWUEsU0FBU3l2QixHQUFHdFIsRUFBR0MsRUFBR2d1QixNQUNoQixJQUFBYSxtQkFBNkJELGtCQUFrQjd1QixFQUFHQyxFQUFHZ3VCLE1BQUtjLHFCQUFBenFDLEVBQUFBLGNBQUFBLEdBQUF3cUMsbUJBQUEsR0FBbkRFLElBQUdELG9CQUFBLEdBQUVFLElBQUdGLG9CQUFBLEdBQUViLFNBQVFhLG9CQUFBLEdBQ3pCLE9BQU9DLElBQUlFLE9BQU9ELElBQUtmLFNBQ3pCLENBcUJBLFNBQVNsaUMsSUFBSWdVLEVBQUdDLEVBQUdndUIsTUFDakIsSUFBQWtCLG9CQUE2Qk4sa0JBQWtCN3VCLEVBQUdDLEVBQUdndUIsTUFBS21CLHNCQUFBOXFDLEVBQUFBLGNBQUFBLEdBQUE2cUMsb0JBQUEsR0FBbkRILElBQUdJLHFCQUFBLEdBQUVILElBQUdHLHFCQUFBLEdBQUVsQixTQUFRa0IscUJBQUEsR0FDekIsT0FBT0osSUFBSUssZUFBZUosSUFBS2YsU0FDakMsQ0FpQ0EsU0FBU3pyQyxJQUFJN0osS0FBTTAyQyxNQUFPckIsTUFDeEIsSUFBTUMsU0FBV0YsY0FBUUMsTUFDekIsT0FBTzFoQyxNQUFNM1QsTUFBTTZKLElBQUk2c0MsTUFBT3BCLFVBQVVyc0MsUUFDMUMsQ0F1QkEsU0FBU3VpQixLQUFLcEUsRUFBR0MsR0FBaUIsSUFDMUJpdUIsU0FBV0YsY0FESy95QyxVQUFBQyxPQUFBLFFBQUFzcEIsSUFBQXZwQixVQUFBLEdBQUFBLFVBQUEsR0FBRyxPQUduQit6QyxJQUFNemlDLE1BQU15VCxHQUVsQixPQURZelQsTUFBTTBULEdBQ1BtRSxLQUFLNHFCLElBQUtkLFNBQ3ZCLENBWUEsU0FBU3BJLGdCQUFnQmx0QyxNQUN2QixPQUFPMlQsTUFBTTNULE1BQU0yUyxRQUFRLFNBQVNBLFFBQVEsUUFBUTFKLFFBQ3RELENBRUEsU0FBU2trQyxlQUFlbnRDLE1BQ3RCLE9BQU8yVCxNQUFNM1QsTUFBTXlTLE1BQU0sU0FBU0EsTUFBTSxRQUFReEosUUFDbEQsQ0F1REEsU0FBU3FpQyxRQUFRbmlDLE1BQU9DLEtBQ3RCLElBQU1vekMsU0FBVzdvQyxNQUFNeEssT0FFdkIsT0FEZXdLLE1BQU12SyxLQUNQb2lCLEtBQUtneEIsU0FBVSxNQUMvQixDQW9FQSxPQUFPLElBQUk1UCx3QkFBYyxDQUN2Qjd5QixRQUFBQSxjQUVBK3lCLFlBN0lGLFNBQVNBLFlBQVl2N0IsU0FDbkIsSUFBTTBvQixLQUFPMW9CLFFBQVV5cUMsU0FBU2xGLFdBQVd2bEMsU0FBV3lxQyxTQUFTbEYsYUFDL0QsT0FBTzdjLEtBQU9BLEtBQUsveEIsaUJBQW1CLENBQ3hDLEVBMklFZ2xDLGdCQUFBQSxnQkFDQUMsZUFBQUEsZUFDQUMsWUFuSUYsU0FBU0EsWUFBWXB0QyxNQUtuQixJQUpBLElBQUltVCxRQUFVKzVCLGdCQUFnQmx0QyxNQUN4QituQixLQUFPb2xCLGVBQWVudEMsTUFDdEI2MkMsS0FBTyxHQUVOempDLElBQUlELFFBQVM0VSxPQUNsQjh1QixLQUFLNzFDLEtBQUttUyxTQUNWQSxRQUFVdEosSUFBSXNKLFFBQVMsRUFBRyxLQUc1QixPQUFPMGpDLElBQ1QsRUEwSEUzOEIsT0FBTSxTQUFBQSxPQUFDN1ksTUFBTzZZLFFBQVEzSSxTQUNwQixPQXBUVyxTQUFUd2xDLE9BQVUwRixHQUFJdnFDLEdBQUMsT0FBTUEsRUFBSXVxQyxHQUFHMUYsT0FBTzdrQyxHQUFLdXFDLEVBQUUsQ0FvVHJDMUYsQ0FBT3BqQyxNQUFNdFMsT0FBUWtRLFNBQVMySSxPQUFPQSxRQUM5QyxFQUVBeVUsR0EzT0YsU0FBU0EsR0FBR3ZILEVBQUdDLEVBQUdndUIsTUFDaEIsSUFBQTRCLG9CQUE2QmhCLGtCQUFrQjd1QixFQUFHQyxFQUFHZ3VCLE1BQUs2QixxQkFBQXhyQyxFQUFBQSxjQUFBQSxHQUFBdXJDLG9CQUFBLEdBQW5EYixJQUFHYyxvQkFBQSxHQUFFYixJQUFHYSxvQkFBQSxHQUFFNUIsU0FBUTRCLG9CQUFBLEdBQ3pCLE9BQU9kLElBQUllLFNBQVNkLElBQUtmLFNBQzNCLEVBeU9FbGlDLElBQUFBLElBQ0E0bEIsR0FsUEYsU0FBU0EsR0FBRzVSLEVBQUdDLEVBQUdndUIsTUFDaEIsSUFBQStCLG9CQUE2Qm5CLGtCQUFrQjd1QixFQUFHQyxFQUFHZ3VCLE1BQUtnQyxxQkFBQTNyQyxFQUFBQSxjQUFBQSxHQUFBMHJDLG9CQUFBLEdBQW5EaEIsSUFBR2lCLG9CQUFBLEdBQUVoQixJQUFHZ0Isb0JBQUEsR0FBRS9CLFNBQVErQixvQkFBQSxHQUN6QixPQUFPakIsSUFBSWtCLFFBQVFqQixJQUFLZixTQUMxQixFQWdQRTFtQixJQXpPRixTQUFTQSxJQUFJeEgsRUFBR0MsRUFBR2d1QixNQUNqQixJQUFBa0Msb0JBQTZCdEIsa0JBQWtCN3VCLEVBQUdDLEVBQUdndUIsTUFBS21DLHFCQUFBOXJDLEVBQUFBLGNBQUFBLEdBQUE2ckMsb0JBQUEsR0FBbkRuQixJQUFHb0Isb0JBQUEsR0FBRW5CLElBQUdtQixvQkFBQSxHQUFFbEMsU0FBUWtDLG9CQUFBLEdBQ3pCLE9BQU9wQixJQUFJSyxlQUFlSixJQUFLZixTQUNqQyxFQXVPRTVjLEdBQUFBLEdBQ0ExVixJQXpQRixTQUFTQSxJQUFJb0UsRUFBR0MsRUFBR2d1QixNQUNqQixPQUFRM2MsR0FBR3RSLEVBQUdDLEVBQUdndUIsS0FDbkIsRUF3UEVoYyxNQTVNRixTQUFTQSxNQUFNcjVCLEtBQU0wdEMsTUFDbkIsSUFBSzF0QyxPQUFTMHRDLEtBQU0sT0FBTyxLQUUzQixJQUFNK0osR0FBSzlqQyxNQUFNKzVCLE1BQU14ekIsT0FBTyxZQUN4Qmd4QixHQUFLdjNCLE1BQU0zVCxNQUFNMlMsUUFBUSxPQUFPdUgsT0FBTyxjQUU3QyxPQUFPOGhDLFNBQVMsR0FBRHR2QyxPQUFJdytCLEdBQUUsS0FBQXgrQixPQUFJK3FDLElBQU0sdUJBQXVCeHVDLFFBQ3hELEVBc01Fc3ZCLFFBbk9GLFNBQVNBLFFBQVExbkIsSUFBSzdILElBQUtFLEtBQW1CLElBQ3RDb3NDLFNBQVdGLGNBRGlCL3lDLFVBQUFDLE9BQUEsUUFBQXNwQixJQUFBdnBCLFVBQUEsR0FBQUEsVUFBQSxHQUFHLE9BRS9CcTZDLE1BQVEvb0MsTUFBTTlDLEtBQ2Q4ckMsTUFBUWhwQyxNQUFNM0ssS0FDZDR6QyxNQUFRanBDLE1BQU16SyxLQUNwQixPQUFPd3pDLE1BQU03RSxVQUFVOEUsTUFBT0MsTUFBT3RILFNBQVUsS0FDakQsRUE4TkUzaUMsUUFBQUEsUUFDQUYsTUE1UUYsU0FBU0EsUUFBeUIsSUFBbkJ6UyxLQUFJcUMsVUFBQUMsT0FBQSxRQUFBc3BCLElBQUF2cEIsVUFBQSxHQUFBQSxVQUFBLEdBQUcsS0FDZGl6QyxTQUFXRixjQURhL3lDLFVBQUFDLE9BQUEsRUFBQUQsVUFBQSxRQUFBdXBCLEdBRTlCLE9BQUkwcEIsU0FDSzNoQyxNQUFNM1QsTUFBTXlTLE1BQU02aUMsVUFBVXJzQyxTQUU5QjBLLE1BQU0zVCxNQUFNaUosUUFDckIsRUF1UUU2SixNQWxNRixTQUFTQSxNQUFNM0osTUFBT0MsS0FNcEIsSUFOdUMsSUFDakNrc0MsU0FBV0YsY0FEWS95QyxVQUFBQyxPQUFBLFFBQUFzcEIsSUFBQXZwQixVQUFBLEdBQUFBLFVBQUEsR0FBRyxPQUc1QjhRLFFBQVVRLE1BQU14SyxPQUFPRixTQUNyQjR0QyxLQUFPLEdBRU56akMsSUFBSUQsUUFBUy9KLE1BQ2xCeXRDLEtBQUs3MUMsS0FBS21TLFNBQ1ZBLFFBQVV0SixJQUFJc0osUUFBUyxFQUFHbWlDLFVBRzVCLE9BQU91QixJQUNULEVBdUxFaHRDLElBQUFBLElBQ0EyaEIsS0FBQUEsS0FDQUMsS0F2TEYsU0FBU0EsS0FBS3pyQixLQUFNcTFDLE1BQ2xCLElBQU1DLFNBQVdGLGNBQVFDLE1BQ25CbHJCLE1BQVF4WCxRQUFRM1MsS0FBTXMxQyxVQUU1QixPQUFPNWMsR0FBR3ZPLE1BQU9ucUIsTUFBUW1xQixNQUFRdGdCLElBQUlzZ0IsTUFBTyxFQUFHbXJCLFNBQ2pELEVBbUxFdHNDLElBbE9GLFNBQVNBLElBQUk4dUMsTUFBT0MsT0FDbEIsSUFBTTNCLElBQU16aUMsTUFBTW1rQyxPQUNaekIsSUFBTTFpQyxNQUFNb2tDLE9BRWxCLE9BRGNpRSxTQUFTaHpDLElBQUlvdEMsSUFBS0MsS0FDbkJwdEMsUUFDZixFQThORUMsSUE1TkYsU0FBU0EsSUFBSTR1QyxNQUFPQyxPQUNsQixJQUFNM0IsSUFBTXppQyxNQUFNbWtDLE9BQ1p6QixJQUFNMWlDLE1BQU1va0MsT0FFbEIsT0FEY2lFLFNBQVM5eUMsSUFBSWt0QyxJQUFLQyxLQUNuQnB0QyxRQUNmLEVBd05FZ2tDLFFBM0tGLFNBQVNBLFFBQVFqdEMsTUFFZixPQURXMlQsTUFBTTNULE1BQ1BpdEMsU0FDWixFQTBLRWxWLFlBcklGLFNBQVNBLFlBQVltVCxHQUFJM1Qsb0JBQXFCeEssUUFDNUMsT0FBT3BaLE1BQU11M0IsSUFDVnY0QixRQUFRLE9BQ1JxbEMsT0FBT3pnQixvQkFBc0J4SyxRQUM3QjlqQixRQUNMLEVBaUlFMDNCLGtCQXBVRixTQUFTQSxrQkFBa0IzZ0MsTUFFekIsT0FBTzJULE1BQU0zVCxNQUFNaUosU0FBUzAzQixtQkFDOUIsRUFrVUV6SSxhQUFBQSxhQUNBWixZQWhJRixTQUFTQSxZQUFZbnVCLE1BQU9DLEtBQzFCLE9BQU9vaUIsS0FBS3JpQixNQUFPQyxJQUFLLFVBQzFCLEVBK0hFb3VCLHVCQTdIRixTQUFTQSx1QkFBdUJydUIsT0FDOUIsSUFBTTh1QyxTQUFXdGtDLE1BQU14SyxPQUFPd0osUUFBUSxPQUV0QyxPQURZZ0IsTUFBTXhLLE9BQ1BxaUIsS0FBS3lzQixTQUFVLFdBcEw1QixTQUFTQyxxQkFBcUIvdUMsT0FFNUIsT0FBTyt1QixhQURVdmtCLE1BQU14SyxPQUFPd0osUUFBUSxPQUNSeEosTUFDaEMsQ0FpTHlDK3VDLENBQXFCL3VDLE1BQzlELEVBMEhFd2YsZUF2SEYsU0FBU0EsZUFBZXhmLE1BQU8yZSxPQUM3QixJQUFNKzBCLFFBQVVscEMsTUFBTXhLLE9BQ2hCMnpDLFFBQVVucEMsTUFBTW1VLE9BQ3RCLE9BQU8rMEIsUUFBUTFGLFNBQVMyRixRQUFTLE1BQ25DLEVBb0hFbDBCLGVBbEhGLFNBQVNBLGVBQWV6ZixNQUFPQyxJQUFLMmUsTUFDbEMsSUFBTWcxQixNQUFRcHBDLE1BQU12SyxLQUNkNHpDLE9BQVNycEMsTUFBTW9VLE1BQ3JCLE9BQU9nMUIsTUFBTTFFLGNBQWMyRSxPQUFRLFVBQ3JDLEVBK0dFMVksV0F0R0YsU0FBU0EsV0FBVWdVLE9BR2hCLElBQUFDLFdBQUFELE1BRkQ5TSxLQUFlQyxPQUFNOE0sV0FBYnB2QyxNQUFvQnVpQyxLQUFJNk0sV0FBVG52QyxJQUFtQnVpQyxRQUFPNE0sV0FBZmx2QyxPQUFNbXZDLFdBQUFGLE1BQ3hDek0sS0FBZUMsT0FBTTBNLFdBQWJydkMsTUFBb0I0aUMsS0FBSXlNLFdBQVRwdkMsSUFBbUI0aUMsUUFBT3dNLFdBQWZudkMsT0FFNUI0aUMsV0FBYXQ1QixRQUFRODRCLE9BQVEsUUFBVTk0QixRQUFRbTVCLE9BQVEsT0FFdkRJLEtBQU9aLFFBQVFHLE9BQVFDLE1BRXZCUyxLQUFPYixRQUFRUSxPQUFRQyxNQUU3QixPQUNFRSxXQUNBRSxLQUFPRCxRQUNMRixVQUFZTCxVQUNiRixRQUFVSyxTQUNWSixNQUFRSyxJQUViLEVBc0ZFSyxhQXBGRixTQUFTQSxhQUFZcU0sT0FHbEIsSUFBQUMsWUFBQUQsTUFGRHpzQyxNQUFTN0MsTUFBS3V2QyxZQUFMdnZDLE1BQU9DLElBQUdzdkMsWUFBSHR2QyxJQUFHdXZDLFlBQUFGLE1BQ25CM2xDLE1BQWdCMG1CLFdBQVVtZixZQUFqQnh2QyxNQUF3QnN3QixTQUFRa2YsWUFBYnZ2QyxJQUV0Qnd2QyxXQUFhamxDLE1BQU14SyxPQUFPd0osUUFBUSxPQUNsQ3l4QixLQUFPendCLE1BQU12SyxLQUNieXZDLE9BQVNsbEMsTUFBTTZsQixZQUNmc2YsS0FBT25sQyxNQUFNOGxCLFVBRWI4UyxnQkFBa0JxTSxXQUFXbkMsZUFBZXFDLEtBQU0sT0FHbER0TSxnQkFEV29NLFdBQVd0QyxPQUFPbFMsS0FBTSxXQUVyQ0EsS0FBS2tULFFBQVF1QixPQUFRLFdBQ3JCelUsS0FBS2lVLGNBQWNRLE9BQVEsV0FFL0IsT0FBT3RNLGlCQUFtQkMsY0FDNUIsRUFvRUV6cEIsV0FsRUYsU0FBU0EsV0FBVzBwQixNQUFPQyxPQUN6QixJQUFNeEIsR0FBS3YzQixNQUFNODRCLE9BQ1hzTSxJQUFNcGxDLE1BQU0rNEIsT0FDbEIsT0FBT3hCLEdBQUdvTCxPQUFPeUMsSUFBSyxNQUN4QixFQStERXpMLGdCQXZERixTQUFTQSxrQkFNUCxJQUFNcEMsR0FBSyxJQUFJN21DLEtBQ1QyMEMsSUFBTSxJQUFJNWtCLEtBQUs4VyxHQUFHK04sWUFBYyxJQUFNLEdBQ3RDQyxTQUFXaE8sR0FBR3ZLLG9CQUNkd1ksV0FBYUMsT0FBTyxHQUFEMXNDLE9BQUlzc0MsS0FBR3RzQyxPQUFHdVosS0FBS29HLElBQUk2c0IsWUFHNUMsT0FEaUJ2bEMsUUFBUXFpQyxZQUNQbUQsV0FBYSxFQUFJLENBQ3JDLEdBNENGLENDelptQmpjLGtCQUFBQSxFQUNBQSxrQkFBQUEsQyxvSENDWixTQUFTK2YsU0FBU2hqQixLQUFNaWpCLE9BQzdCLElBQUk3N0MsTUFBUSxLQVdaLE1BVHFCLG1CQUFWNjdDLE1BQXNCNzdDLE1BQVE2N0MsTUFBTWpqQixNQUU1QixpQkFBVmlqQixPQUNTLGlCQUFUampCLE1BQ0MsTUFBUkEsTUFDQWlqQixTQUFTampCLE9BRVQ1NEIsTUFBUTQ0QixLQUFLaWpCLFFBRVI3N0MsS0FDVCxDLDZHQUVPLElBQU00bEMsYUFBZSxTQUFmQSxhQUFnQmtXLEtBQUcsT0FBSyxTQUFDbGpCLE1BQUksT0FBS2dqQixTQUFTaGpCLEtBQU1rakIsSUFBSSxFLDBOQ3RCM0QsSUFBSTlwQyxTQUFXLENBQ3BCRSxTQUFVLE9BQ1ZDLEtBQU0sT0FDTmdGLE1BQU8sUUFDUDg2QixLQUFNLFFBR0d0dUMsTUFBUSxDQUNqQk8sTUFBTyxRQUNQUixLQUFNLE9BQ051dEMsVUFBVyxZQUNYbnVDLElBQUssTUFDTDJCLE9BQVEsUyxvaERDV0pzM0MsTUFBUSxDQUNaQyxRQUFTLElBQ1RwUSxRQUFTLElBQ1RxUSxNQUFPLEtBQ1B6c0MsSUFBSyxPQVdBLFNBQVNxOEIsZ0JBQWdCbHRDLEtBQU11SSxXQUNwQyxJQUFJZzFDLGFBQWVwdEMsNkNBQUFBLFFBQWNuUSxLQUFNLFNBRXZDLE9BQU9tUSw2Q0FBQUEsUUFBY290QyxhQUFjLE9BQVFoMUMsVUFBVXlrQyxjQUN2RCxDQUVPLFNBQVNHLGVBQWVudEMsS0FBTXVJLFdBQ25DLElBQUlpMUMsV0FBYXJ0Qyw2Q0FBQUEsTUFBWW5RLEtBQU0sU0FFbkMsT0FBT21RLDZDQUFBQSxNQUFZcXRDLFdBQVksT0FBUWoxQyxVQUFVeWtDLGNBQ25ELENBRU8sU0FBU0ksWUFBWXB0QyxLQUFNdUksV0FLaEMsSUFKQSxJQUFJNEssUUFBVSs1QixnQkFBZ0JsdEMsS0FBTXVJLFdBQ2xDd2YsS0FBT29sQixlQUFlbnRDLEtBQU11SSxXQUM1QnN1QyxLQUFPLEdBRUYxbUMsNkNBQUFBLElBQVVnRCxRQUFTNFUsS0FBTSxRQUM5Qjh1QixLQUFLNzFDLEtBQUttUyxTQUNWQSxRQUFVaEQsNkNBQUFBLElBQVVnRCxRQUFTLEVBQUcsT0FHbEMsT0FBTzBqQyxJQUNULENBRU8sU0FBU3ByQixLQUFLenJCLEtBQU1xMUMsTUFDekIsSUFBSWxyQixNQUFRaGEsNkNBQUFBLFFBQWNuUSxLQUFNcTFDLE1BRWhDLE9BQU9sbEMsNkNBQUFBLEdBQVNnYSxNQUFPbnFCLE1BQVFtcUIsTUFBUWhhLDZDQUFBQSxJQUFVZ2EsTUFBTyxFQUFHa3JCLEtBQzdELENBRU8sU0FBU3ZpQyxNQUFNM0osTUFBT0MsS0FJM0IsSUFKOEMsSUFBZGlzQyxLQUFJaHpDLFVBQUFDLE9BQUEsUUFBQXNwQixJQUFBdnBCLFVBQUEsR0FBQUEsVUFBQSxHQUFHLE1BQ25DOFEsUUFBVWhLLE1BQ1owdEMsS0FBTyxHQUVGMW1DLDZDQUFBQSxJQUFVZ0QsUUFBUy9KLElBQUtpc0MsT0FDN0J3QixLQUFLNzFDLEtBQUttUyxTQUNWQSxRQUFVaEQsNkNBQUFBLElBQVVnRCxRQUFTLEVBQUdraUMsTUFHbEMsT0FBT3dCLElBQ1QsQ0FFTyxTQUFTeGQsTUFBTXI1QixLQUFNMHRDLE1BQzFCLE9BQVksTUFBUkEsTUFBd0IsTUFBUjF0QyxLQUFxQixNQUU3QixNQUFSMHRDLE9BQWNBLEtBQU8sSUFBSXJwQyxNQUNqQixNQUFSckUsT0FBY0EsS0FBTyxJQUFJcUUsTUFFN0JyRSxLQUFPbVEsNkNBQUFBLFFBQWNuUSxLQUFNLE9BQzNCQSxLQUFPbVEsNkNBQUFBLE1BQVluUSxLQUFNbVEsNkNBQUFBLE1BQVl1OUIsT0FDckMxdEMsS0FBT21RLDZDQUFBQSxRQUFjblEsS0FBTW1RLDZDQUFBQSxRQUFjdTlCLE9BQ3pDMXRDLEtBQU9tUSw2Q0FBQUEsUUFBY25RLEtBQU1tUSw2Q0FBQUEsUUFBY3U5QixPQUNsQ3Y5Qiw2Q0FBQUEsYUFBbUJuUSxLQUFNbVEsNkNBQUFBLGFBQW1CdTlCLE9BQ3JELENBVU8sU0FBU2YsV0FBVzNzQyxNQUN6QixPQUN3QixJQUF0Qm1RLDZDQUFBQSxNQUFZblEsT0FDWSxJQUF4Qm1RLDZDQUFBQSxRQUFjblEsT0FDVSxJQUF4Qm1RLDZDQUFBQSxRQUFjblEsT0FDZSxJQUE3Qm1RLDZDQUFBQSxhQUFtQm5RLEtBRXZCLENBRU8sU0FBUzhuQyxTQUFTMytCLE1BQU9DLElBQUtpc0MsS0FBTXZJLGFBRXpDLE1BRGEsUUFBVHVJLE9BQWdCQSxLQUFPLFFBQ3BCcHZCLEtBQUtvRyxJQUVWbGMsNkNBQU1rbEMsTUFBTWxzQyxXQUFPeWlCLEVBQVdraEIsYUFFNUIzOEIsNkNBQU1rbEMsTUFBTWpzQyxTQUFLd2lCLEVBQVdraEIsYUFFbEMsQ0FFTyxTQUFTdGhCLEtBQUtzc0IsTUFBT0MsTUFBTzFDLE1BQ2pDLE9BQUtBLE1BQWlCLGlCQUFUQSxLQUtOcHZCLEtBQUswMEIsTUFDVjEwQixLQUFLb0csS0FDRmxjLDZDQUFBQSxRQUFjMm5DLE1BQU96QyxNQUFRK0gsTUFBTS9ILE9BQ2pDbGxDLDZDQUFBQSxRQUFjNG5DLE1BQU8xQyxNQUFRK0gsTUFBTS9ILFFBUkdwdkIsS0FBS29HLEtBQUt5ckIsT0FBU0MsTUFXbEUsQyw2OUJDbklPLFNBQVNud0IsV0FBVXZmLE1BQXlDLElBQXRDd2YsVUFBU3hmLEtBQVR3ZixVQUFTNDFCLFVBQUFwMUMsS0FBRWd0QyxLQUFBQSxVQUFJLElBQUFvSSxVQUFHLE1BQUtBLFVBQUVsMUMsVUFBU0YsS0FBVEUsVUFDcEQsTUFBTyxDQUNMdWYsTUFBT0QsVUFBVSxHQUNqQkUsS0FBTXhmLFVBQVVzQixJQUFJZ2UsVUFBVUEsVUFBVXZsQixPQUFTLEdBQUksRUFBRyt5QyxNQUU1RCxDQUlPLFNBQVNwdEIsY0FBY2pjLE1BQU84RyxNQUFPNFUsVUFBV25mLFdBQ3JELElBQUFvZixZQUFzQkMsV0FBVyxDQUFFQyxVQUFXL1UsTUFBT3ZLLFVBQUFBLFlBQS9DdWYsTUFBS0gsWUFBTEcsTUFBT0MsS0FBSUosWUFBSkksS0FFVHZDLE1BQVFqZCxVQUFVaWpCLEtBQUsxRCxNQUFPQyxLQUFNLE9BQ3BDNWUsTUFBUVosVUFBVVcsSUFDcEJYLFVBQVVvSyxRQUFRK1UsVUFBVXZlLE1BQU02QyxPQUFRLE9BQzFDOGIsT0FFRTFlLElBQU1iLFVBQVVTLElBQUlULFVBQVVrakIsS0FBSy9ELFVBQVV0ZSxJQUFJNEMsT0FBUSxPQUFRK2IsTUFFakU0VSxRQUFVbEUsd0RBQVUzbEIsT0FBTyxTQUFDc00sR0FBQyxPQUFLN1csVUFBVXdhLFdBQVczRCxFQUFHalcsTUFBTSxJQUNoRTRjLEtBQU94ZCxVQUFVaWpCLEtBQUtyaUIsTUFBT0MsSUFBSyxPQU90QyxPQUxBMmMsS0FBT0UsS0FBS2pkLElBQUkrYyxLQUFNUCxPQUtmLENBQ0x4WixNQUFBQSxNQUNBK1osS0FKRkEsS0FBT0UsS0FBSy9jLElBQUk2YyxLQUFPeGQsVUFBVThrQyxjQUFlLEdBSzlDbG9CLEtBQU13WCxRQUFVLEVBQ2hCdlgsTUFBT2EsS0FBSy9jLElBQUl5ekIsUUFBVTVXLEtBQU0sR0FFcEMsQ0FFTyxTQUFTSixZQUFZRCxhQUErQixJQUNyRHRqQixFQUNGbzVCLEVBQ0F2VyxJQUhxQ3k0QixNQUFLcjdDLFVBQUFDLE9BQUEsUUFBQXNwQixJQUFBdnBCLFVBQUEsR0FBQUEsVUFBQSxHQUFHMm9CLElBSTdDcEYsT0FBUyxHQUNUdUMsTUFBUSxHQUVWLElBQUsvbEIsRUFBSSxFQUFHQSxFQUFJc2pCLFlBQVlwakIsT0FBUUYsSUFBSyxDQUd2QyxJQUZBNmlCLElBQU1TLFlBQVl0akIsR0FFYm81QixFQUFJLEVBQUdBLEVBQUk1VixPQUFPdGpCLFFBQWtCcTdDLFlBQVkxNEIsSUFBS1csT0FBTzRWLElBQWxDQSxLQUUzQkEsR0FBS2tpQixNQUNQdjFCLE1BQU1ubkIsS0FBS2lrQixNQUVUVyxPQUFPNFYsS0FBTzVWLE9BQU80VixHQUFLLEtBQUt4NkIsS0FBS2lrQixJQUUxQyxDQUVBLElBQUs3aUIsRUFBSSxFQUFHQSxFQUFJd2pCLE9BQU90akIsT0FBUUYsSUFDN0J3akIsT0FBT3hqQixHQUFHNDVCLE1BQUssU0FBQzVVLEVBQUdDLEdBQUMsT0FBS0QsRUFBRWpDLEtBQU9rQyxFQUFFbEMsSUFBSSxJQUcxQyxNQUFPLENBQUVTLE9BQUFBLE9BQVF1QyxNQUFBQSxNQUNuQixDQUVPLFNBQVNvUSxRQUFRelIsRUFBRzNkLE1BQU9DLElBQUtzZSxVQUFXbmYsV0FDaEQsSUFBTXlELE1BQVEsQ0FDWjdDLE1BQU91ZSxVQUFVdmUsTUFBTTJkLEdBQ3ZCMWQsSUFBS3NlLFVBQVV0ZSxJQUFJMGQsSUFFZmhVLE1BQVEsQ0FBRTNKLE1BQUFBLE1BQU9DLElBQUFBLEtBQ3ZCLE9BQU9iLFVBQVU2akMsYUFBYSxDQUFFcGdDLE1BQUFBLE1BQU84RyxNQUFBQSxPQUN6QyxDQUVPLFNBQVM2cUMsWUFBWTE0QixJQUFLMjRCLFdBQy9CLE9BQU9BLFVBQVVwcEIsTUFDZixTQUFDcXBCLFVBQVEsT0FBS0EsU0FBUzE0QixNQUFRRixJQUFJRyxPQUFTeTRCLFNBQVN6NEIsT0FBU0gsSUFBSUUsSUFBSSxHQUUxRSxDQUVPLFNBQVNtcEIsZUFBZWhxQyxPQUFRb2pCLFVBQVduZixXQUNoRCxJQUFNdTFDLE1BQUlueEMsRUFBQUEsMEVBQUFBLEdBQU9ySSxRQUNYeTVDLGVBQWlCLEdBQ2pCQyxlQUFpQixHQUN2QkYsS0FBS3A4QyxTQUFRLFNBQUNzSyxPQUNaLElBQU1peUMsV0FBYXYyQixVQUFVdmUsTUFBTTZDLE9BQzdCa3lDLFNBQVd4MkIsVUFBVXRlLElBQUk0QyxPQUMzQnpELFVBQVUraUMsUUFBUTJTLFdBQVlDLFVBQVksRUFDNUNILGVBQWUvOEMsS0FBS2dMLE9BRXBCZ3lDLGVBQWVoOUMsS0FBS2dMLE1BRXhCLElBQ0EsSUFBTW15QyxZQUFjSixlQUFlL2hCLE1BQUssU0FBQzVVLEVBQUdDLEdBQUMsT0FDM0NpZCxXQUFXbGQsRUFBR0MsRUFBR0ssVUFBV25mLFVBQVUsSUFFbEM2MUMsZUFBaUJKLGVBQWVoaUIsTUFBSyxTQUFDNVUsRUFBR0MsR0FBQyxPQUM5Q2lkLFdBQVdsZCxFQUFHQyxFQUFHSyxVQUFXbmYsVUFBVSxJQUV4QyxNQUFPLEdBQVBtRSxRQUFBQyxFQUFBQSwwRUFBQUEsR0FBV3d4QyxjQUFXeHhDLEVBQUFBLDBFQUFBQSxHQUFLeXhDLGdCQUM3QixDQUVPLFNBQVM5WixXQUFXK1osT0FBUUMsT0FBUTUyQixVQUFXbmYsV0FDcEQsSUFBTWlqQyxLQUFPLENBQ1hyaUMsTUFBT3VlLFVBQVV2ZSxNQUFNazFDLFFBQ3ZCajFDLElBQUtzZSxVQUFVdGUsSUFBSWkxQyxRQUNuQmgxQyxPQUFRcWUsVUFBVXJlLE9BQU9nMUMsU0FFckJ4UyxLQUFPLENBQ1gxaUMsTUFBT3VlLFVBQVV2ZSxNQUFNbTFDLFFBQ3ZCbDFDLElBQUtzZSxVQUFVdGUsSUFBSWsxQyxRQUNuQmoxQyxPQUFRcWUsVUFBVXJlLE9BQU9pMUMsU0FFM0IsT0FBTy8xQyxVQUFVKzdCLFdBQVcsQ0FBRWtILEtBQUFBLEtBQU1LLEtBQUFBLE1BQ3RDLEMscVFDMUdPLFNBQVNybkIsT0FBT3FMLFFBQVNuc0IsTUFDOUJtc0IsU0FBV0EsUUFBUTV1QixNQUFNLEtBQU0sR0FBR3lMLE9BQU9oSixNQUMzQyxDLHduQkNMSXNVLFVBQVl2WCxPQUFPRCxLQUFLMEQsd0NBQUFBLEdBQU84TCxLQUFJLFNBQUNDLEdBQUMsT0FBSy9MLHdDQUFBQSxFQUFNK0wsRUFBRSxJQUVoQ2djLGtEQUFBQSxVQUFvQixDQUFDQSxrREFBQUEsT0FBa0JBLGtEQUFBQSxPQUVyQ0Esa0RBQUFBLElBRUtBLGtEQUFBQSxLQW9CVkEsa0RBQUFBLFVBQW9CLENBQ3JDQSxrREFBQUEsUUFBa0JBLGtEQUFBQSxNQUFnQmpVLFlBQ2xDaVUsa0RBQUFBLFVBQW1CLFNBQUNzeUIsS0FBTW45QyxLQUd4QixJQUQ4QixJQUE1QjRXLFVBQVVrYSxRQUFROXdCLE1BQW9DLGtCQUFkbTlDLEtBQUtuOUMsS0FFN0MsT0FBTyxLQUNGLFFBQUEwbkIsS0FBQXptQixVQUFBQyxPQUx5Qm9CLEtBQUksSUFBQTJMLE1BQUF5WixLQUFBLEVBQUFBLEtBQUEsS0FBQUMsS0FBQSxFQUFBQSxLQUFBRCxLQUFBQyxPQUFKcmxCLEtBQUlxbEIsS0FBQSxHQUFBMW1CLFVBQUEwbUIsTUFNbEMsT0FBT2tELGtEQUFBQSxZQUFxQmhyQixNQUFyQmdyQixrREFBUyxDQUFhc3lCLEtBQU1uOUMsS0FBR3NMLE9BQUtoSixNQUUvQyxNQUd3Q3VvQixrREFBQUEsVUFBb0IsQ0FDNURBLGtEQUFBQSxNQUFnQixDQUFDLFVBQVcsZUFDNUJBLGtEQUFBQSxNLDJnQkMxQ0ssU0FBU3ZTLFdBQVcxTixNQUFPK1QsVUFDaEMsU0FBSy9ULE9BQXFCLE1BQVorVCxXQUNQb0gsc0RBQVFuYixNQUFPK1QsU0FDeEIsQ0FFTyxTQUFTeStCLFVBQVU1NkIsT0FBUTRCLE9BSWhDLE9BSGU1QixPQUFPd0IsTUFBUXhCLE9BQU91QixNQUNWSyxLQUc3QixDQUVPLFNBQVN2QixXQUFXTCxPQUFReEUsRUFBR2hOLElBQUtvVCxPQUN6QyxJQUFNaTVCLFVBQVlELFVBQVU1NkIsT0FBUTRCLE9BQ3BDLE9BQU9wVCxJQUNIb1QsTUFBUSxFQUFJUyxLQUFLa0UsT0FBTy9LLEVBQUl3RSxPQUFPdUIsTUFBUXM1QixXQUMzQ3g0QixLQUFLa0UsT0FBTy9LLEVBQUl3RSxPQUFPdUIsTUFBUXM1QixVQUNyQyxDQUVPLFNBQVMxNkIsV0FBV0ksSUFBRzliLE1BQVksSUFBUitXLEVBQUMvVyxLQUFEK1csRUFBR0MsRUFBQ2hYLEtBQURnWCxFQUNuQyxPQUFPQSxHQUFLOEUsSUFBSXlKLEtBQU92TyxHQUFLOEUsSUFBSW9LLFFBQVVuUCxHQUFLK0UsSUFBSWdCLE1BQVEvRixHQUFLK0UsSUFBSWlCLEtBQ3RFLENBRU8sU0FBU1Isa0JBQWtCemIsTUFBT3lhLE9BQVFPLElBQUtxQixNQUFPcFQsS0FDM0QsSUFBSXFRLFVBQVksRUFDWkMsUUFBVSxFQUNWZzhCLFlBQWNsNUIsTUFBUSxFQUV0Qmk1QixVQUFZRCxVQUFVNTZCLE9BQVE0QixPQUc5QmtaLFlBQWN6YSxXQUFXTCxPQUFRTyxJQUFJL0UsRUFBR2hOLElBQUtvVCxPQUk3Q201QixhQUFlLzZCLE9BQU9nSyxJQUFNekosSUFBSTlFLEdBQUt1RSxPQUFPMkssT0FBU3BLLElBQUk5RSxFQUN6RHUvQixXQUFhaDdCLE9BQU9nSyxJQUFNemtCLE1BQU1rVyxHQUFLdUUsT0FBTzJLLE9BQVNwbEIsTUFBTWtXLEVBRzNEdy9CLGFBQWUxMUMsTUFBTWtXLEVBQUl1RSxPQUFPMkssT0FDaEN1d0IsYUFBZWw3QixPQUFPZ0ssSUFBTXprQixNQUFNa1csRUFzQ3RDLE9BckNnQjhFLElBQUl5SixJQUFNaEssT0FBT2dLLEtBQU96SixJQUFJb0ssT0FBUzNLLE9BQU8ySyxTQUkxRDlMLFNBQVcsRUFDWEMsT0FBU2c4QixhQUdQQyxlQUNFRyxjQUNGcjhCLFNBQVcsRUFDWEMsT0FBU2djLGFBQ0FtZ0IsZUFDVHA4QixTQUFXaWMsWUFDWGhjLE9BQVNnOEIsY0FJVEUsYUFFRm44QixTQUFXQyxPQUFTdFEsSUFDaEJzc0MsWUFBY3o0QixLQUFLa0UsT0FBT2hoQixNQUFNaVcsRUFBSXdFLE9BQU91QixNQUFRczVCLFdBQ25EeDRCLEtBQUtrRSxPQUFPaGhCLE1BQU1pVyxFQUFJd0UsT0FBT3VCLE1BQVFzNUIsV0FFckNFLGFBQ0VqZ0IsWUFBY2pjLFNBQVVBLFNBQVdpYyxZQUNsQ2hjLE9BQVNnYyxZQUNMdjFCLE1BQU1rVyxFQUFJOEUsSUFBSTlFLEVBR3ZCcUQsT0FBU2c4QixZQUdUajhCLFNBQVcsR0FJUixDQUFFQSxTQUFBQSxTQUFVQyxPQUFBQSxPQUNyQixDLDRZQy9FTXE4QixTQUNKLHVGQUVhLFNBQVM3eEMsU0FBUTdFLE1BQXlCLElBQXRCOEUsU0FBUTlFLEtBQVI4RSxTQUFVM0osU0FBUTZFLEtBQVI3RSxTQUMzQyxPQUNFd0osRUFBQUEsK0NBQUFBLE1BQUNDLG1DQUFBQSxTQUFRLENBQUF6SixTQUFBLEVBQ1BGLEVBQUFBLCtDQUFBQSxLQUFBLE9BQUtvTSxNQUFPLENBQUVzdkMsYUFBYyxJQUFLeDdDLFVBQy9CRixFQUFBQSwrQ0FBQUEsS0FBQSxLQUFHbkIsT0FBTyxTQUFTODhDLEtBQUksR0FBQXZ5QyxPQUFLcXlDLFVBQVFyeUMsT0FBR1MsU0FBUSxPQUFNM0osU0FBQyxvQ0FJdkRBLFVBQVdGLEVBQUFBLCtDQUFBQSxLQUFBLE9BQUtvTSxNQUFPLENBQUVzdkMsYUFBYyxJQUFLeDdDLFNBQUVBLFdBQWtCLE9BR3ZFLENBWHdCMEosU0FBUXJKLFlBQUEsV0FBQXFKLFNBQUF2QyxhQUFBLHVFQUFBQywwQkFBQUEsd0JBQUEsa0NBQUFDLEtBQUEsV0FBQUMsV0FBQW9DLFNBQUF2QyxhQUFBSSxLQUFBLGlDLHk3QkNDMUJtMEMsU0FBV3IzQyw4Q0FBQUEsR0FBVTBzQyxRQUdaLFNBQVNwL0IsZUFBYzlNLE1BS25DLElBSkRwRixNQUFLb0YsS0FBTHBGLE1BQUtrOEMsZUFBQTkyQyxLQUNMaU0sVUFBQUEsZUFBUyxJQUFBNnFDLGVBQUd0M0MsOENBQUFBLEdBQVVvUCxRQUFPa29DLGVBQzdCdnJDLFNBQVF2TCxLQUFSdUwsU0FDQWMsWUFBV3JNLEtBQVhxTSxZQUtBLE9BQ0VwUixFQUFBQSwrQ0FBQUEsS0FBQSxPQUFBRSxVQUNFd0osRUFBQUEsK0NBQUFBLE1BQUM0RSwrREFBTSxDQUFDQyxVQUFVLFNBQVNDLE1BQU0sU0FBUXRPLFNBQUEsQ0FDdENQLE9BQVFLLEVBQUFBLCtDQUFBQSxLQUFBLFVBQVFvTSxNQUFPLENBQUVzdkMsYUFBYyxJQUFLeDdDLFNBQUVQLFFBQWtCLE1BQ2pFSyxFQUFBQSwrQ0FBQUEsS0FBQSxTQUFBRSxTQUFPLHNCQUEwQixLQUNqQ0YsRUFBQUEsK0NBQUFBLEtBQUEsVUFDRUMsVUFBVSxlQUNWbU0sTUFBTyxDQUFFcUMsTUFBTyxJQUFLQyxRQUFTLGdCQUM5QjNRLE1BQU91UyxTQUNQL0QsU0FaUyxTQUFYQSxTQUFROUQsT0FBQSxJQUFnQjFLLE1BQUswSyxNQUFmNUosT0FBVWQsTUFBSyxPQUNqQ3FULFlBQVlyVCxPQUFnQmlULFVBQVUsRUFXYjlRLFNBRWxCMDdDLFNBQVNsdkMsS0FBSSxTQUFDa0MsRUFBR0MsS0FBRyxPQUNuQjdPLEVBQUFBLCtDQUFBQSxLQUFBLFVBQWtCakMsTUFBYSxVQUFONlEsRUFBZ0JBLEVBQUksR0FBRzFPLFNBQzdDME8sR0FEVUMsSUFFSixVQU1yQixDQS9CQStzQyxTQUFTRSxRQUFRLFNBRU9qcUMsZUFBY3RSLFlBQUEsaUJBQUFzUixlQUFBeEssYUFBQSxxWEFBQUMsMEJBQUFBLHdCQUFBLG9DQUFBQyxLQUFBLGlCQUFBQyxXQUFBcUssZUFBQXhLLGFBQUFJLEtBQUEsbUMsMDNDQ0loQzBNLFlBQWEzUCxFQUFBQSxnREFBQUEsSUFBZ0JELCtDQUU3QmtNLHVCQUF5QixTQUF6QkEsdUJBQXNCMUwsTUFBQSxJQUFNN0UsU0FBUTZFLEtBQVI3RSxTQUFRLE9BQ3hDd1EsbUNBQUFBLGFBQW1CQSxtQ0FBQUEsU0FBZUMsS0FBS3pRLFVBQVcsQ0FDaERrTSxNQUFPLENBQ0x3RSxnQkFBaUIsY0FFbkIsRUFNVyxTQUFTNUcsTUFBS3ZCLE9BSTFCLElBQUFzekMsZ0JBQUF0ekMsTUFIRHhELFVBQUFBLGVBQVMsSUFBQTgyQyxnQkFBRzVuQyxXQUFVNG5DLGdCQUFBQyxtQkFBQXZ6QyxNQUN0Qnd6QyxhQUFBQSxrQkFBWSxJQUFBRCxvQkFBT0EsbUJBQ2hCNXhDLE9BQUtqRixFQUFBQSxpRkFBQUEsR0FBQXNELE1BQUFyRCxXQUVSK0csVUFBZ0QxQyxFQUFBQSxtQ0FBQUEsVUFDOUMsaUJBQU8sQ0FDTDlILFdBQVksQ0FDVlMsZ0JBQWlCcU8sd0JBRW5CM1AsWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxHQUMvQjZFLElBQUtpSCw4Q0FBQUEsR0FBVUEsOENBQUFBLEdBQVksSUFBSTlMLEtBQUssS0FBTSxHQUFJLEdBQUksUUFBUyxFQUFHLFNBQzlEVyxNQUFPdkUsT0FBT0QsS0FBSzBELGdEQUFBQSxJQUFPOEwsS0FBSSxTQUFDQyxHQUFDLE9BQUsvTCxnREFBQUEsR0FBTStMLEVBQUUsSUFDOUMsR0FDRCxJQVRNaEwsV0FBVXdLLFNBQVZ4SyxXQUFZYixZQUFXcUwsU0FBWHJMLFlBQWE4RSxJQUFHdUcsU0FBSHZHLElBQUtsRSxNQUFLeUssU0FBTHpLLE1BWXRDLE9BQ0VnSSxFQUFBQSwrQ0FBQUEsTUFBQ0MsbUNBQUFBLFNBQVEsQ0FBQXpKLFNBQUEsQ0FDTis3QyxjQUFlajhDLEVBQUFBLCtDQUFBQSxLQUFDNEosaURBQUFBLEVBQVEsQ0FBQ0MsU0FBUyxVQUFhLE1BQ2hEN0osRUFBQUEsK0NBQUFBLEtBQUEsTUFBQTdDLE9BQUFtRCxPQUFBLENBQUtMLFVBQVUsYUFBZ0JtSyxNQUFLLENBQUFsSyxVQUNsQ0YsRUFBQUEsK0NBQUFBLEtBQUNILGdEQUFBQSxHQUFRLENBQ1A4QixXQUFZQSxXQUNaYixZQUFhQSxZQUNiRSxPQUFRQSwrQ0FBQUEsRUFDUmlFLFVBQVdBLFVBQ1hXLElBQUtBLElBQ0w3QixtQkFBaUIsRUFDakI3QyxLQUFNLEdBQ05RLE1BQU9BLGFBS2pCLENBbEN3QnNJLE1BQUt6SixZQUFBLFFBQUF5SixNQUFBM0MsYUFBQSxvYkFBQUMsMEJBQUFBLHdCQUFBLHVDQUFBQyxLQUFBLFFBQUFDLFdBQUF3QyxNQUFBM0MsYUFBQUksS0FBQSxzQyw2NkRDZnZCbkUscUJBQXNCd0IsRUFBQUEsc0RBQUFBLEdBQWdCakYsZ0RBQUFBLElBRXRDcThDLFVBQVlsN0MsK0NBQUFBLEVBQU8wTCxLQUFJLFNBQUN5dkMsR0FBSUMsS0FBRyxPQUFBai9DLE9BQUFtRCxPQUFBLEdBQ2hDNjdDLEdBQUUsQ0FDTGxaLFlBQWFtWixJQUFNLEdBQU0sR0FBQyxJQUd0QkMsV0FBYSxTQUFiQSxXQUFjOTBDLEtBQU1nYyxPQUFLLFNBQUFuYSxPQUFRN0IsS0FBSSxRQUFBNkIsT0FBT21hLE1BQUssRUFFeEMsU0FBUys0QixtQkFBa0J2M0MsTUFBZ0IsSUFBYkUsVUFBU0YsS0FBVEUsVUFDM0NnRCxXQUFnQ0MsRUFBQUEsbUNBQUFBLFVBQVNnMEMsV0FBVS96QyxZQUFBQyxFQUFBQSx1RUFBQUEsR0FBQUgsVUFBQSxHQUE1Q0ksU0FBUUYsV0FBQSxHQUFFRyxZQUFXSCxXQUFBLEdBQzVCc0QsWUFBd0N2RCxFQUFBQSxtQ0FBQUEsWUFBVXdELFlBQUF0RCxFQUFBQSx1RUFBQUEsR0FBQXFELFdBQUEsR0FBM0M0NkIsYUFBWTM2QixXQUFBLEdBQUU2d0MsZ0JBQWU3d0MsV0FBQSxHQUNwQzh3QyxZQUEwRHQwQyxFQUFBQSxtQ0FBQUEsV0FBUyxHQUFLdTBDLFlBQUFyMEMsRUFBQUEsdUVBQUFBLEdBQUFvMEMsV0FBQSxHQUFqRUUsc0JBQXFCRCxXQUFBLEdBQUVFLHlCQUF3QkYsV0FBQSxHQUN0REcsWUFBZ0MxMEMsRUFBQUEsbUNBQUFBLFVBQVMsQ0FBRTIwQyxNQUFPLEVBQUdDLE1BQU8sSUFBSUMsWUFBQTMwQyxFQUFBQSx1RUFBQUEsR0FBQXcwQyxXQUFBLEdBQXpESSxTQUFRRCxXQUFBLEdBQUVFLFlBQVdGLFdBQUEsR0FFdEI1bUMsaUJBQWtCM04sRUFBQUEsbUNBQUFBLGNBQ3RCLFNBQUNFLE9BQUssT0FBQXZMLE9BQUFtRCxPQUFBLEdBQ0FvSSxNQUFNdTZCLFlBQ04sQ0FBRWhqQyxVQUFXLGVBQ2IsQ0FBRUEsVUFBVyxnQkFBZ0IsR0FFbkMsSUFHSXNwQixpQkFBa0IvZ0IsRUFBQUEsbUNBQUFBLGNBQVksU0FBQ0UsT0FBSyxPQUFLNnpDLGdCQUFnQjd6QyxNQUFNLEdBQUUsSUFFakVnOUIscUJBQXNCbDlCLEVBQUFBLG1DQUFBQSxjQUFZLGtCQUFNNjlCLFlBQVksR0FBRSxDQUFDQSxlQUV2RDZXLGtCQUFtQjEwQyxFQUFBQSxtQ0FBQUEsY0FDdkIsU0FBQzIwQyxXQU1zQixnQkFBakI5VyxlQUNGNW1DLFFBQVFDLElBQUksa0JBQ1p5OUMsVUFBVTE1QixpQkFFZCxHQUNBLENBQUM0aUIsZUFHRytXLDZCQUE4QjUwQyxFQUFBQSxtQ0FBQUEsY0FDbEMsa0JBQU1tMEMsMEJBQXlCLFNBQUM3ekMsTUFBSSxPQUFNQSxJQUFJLEdBQUMsR0FDL0MsSUFHSVAsV0FBWUMsRUFBQUEsbUNBQUFBLGNBQ2hCLFNBQUFDLE9BQWtFLElBQS9EQyxNQUFLRCxNQUFMQyxNQUFPN0MsTUFBSzRDLE1BQUw1QyxNQUFPQyxJQUFHMkMsTUFBSDNDLElBQUc2QyxlQUFBRixNQUFFRyxTQUFVQyx5QkFBbUIsSUFBQUYsZ0JBQVFBLGVBQ2pENUMsT0FBVzJDLE1BQVgzQyxRQUNIQSxRQUFVOEMsc0JBQ2JILE1BQU0zQyxRQUFTLEdBR2pCdUMsYUFBWSxTQUFDUSxNQUFTLElBQUFDLFdBQ2RDLFNBQWdELFFBQXhDRCxXQUFHRCxLQUFLRyxNQUFLLFNBQUNDLElBQUUsT0FBS0EsR0FBR3BDLEtBQU80QixNQUFNNUIsRUFBRSxXQUFDLElBQUFpQyxXQUFBQSxXQUFJLENBQUMsRUFDckRJLFNBQVdMLEtBQUt4TCxRQUFPLFNBQUM0TCxJQUFFLE9BQUtBLEdBQUdwQyxLQUFPNEIsTUFBTTVCLEVBQUUsSUFDdkQsTUFBTyxHQUFQc0MsUUFBQUMsRUFBQUEsMkVBQUFBLEdBQVdGLFVBQVEsQ0FBQWhNLE9BQUFtRCxPQUFBLEdBQU8wSSxTQUFVLENBQUFuRCxNQUFBQSxNQUFPQyxJQUFBQSxJQUFLQyxPQUFBQSxVQUNsRCxHQUNGLEdBQ0EsQ0FBQ3VDLGNBR0crMEMsVUFBVzcwQyxFQUFBQSxtQ0FBQUEsY0FDZixTQUFDRSxPQUNDSixhQUFZLFNBQUNRLE1BQ1gsSUFBTXcwQyxPQUFTeDBDLEtBQUs0RCxLQUFJLFNBQUNpekIsTUFBSSxPQUFLQSxLQUFLNzRCLEVBQUUsSUFDbkN5MkMsTUFBUTU2QixLQUFLL2MsSUFBR2pJLE1BQVJnbEIsTUFBSXRaLEVBQUFBLDJFQUFBQSxHQUFRaTBDLFNBQVUsRUFDcEMsTUFBTyxHQUFQbDBDLFFBQUFDLEVBQUFBLDJFQUFBQSxHQUFXUCxNQUFJLENBQUEzTCxPQUFBbUQsT0FBQSxHQUFPb0ksTUFBTyxDQUFBNUIsR0FBSXkyQyxTQUNuQyxHQUNGLEdBQ0EsQ0FBQ2oxQyxjQUdHMjhCLG1CQUFvQno4QixFQUFBQSxtQ0FBQUEsY0FDeEIsU0FBQWUsT0FBc0MsSUFBbkMxRCxNQUFLMEQsTUFBTDFELE1BQU9DLElBQUd5RCxNQUFIekQsSUFBYThDLFNBQVFXLE1BQWhCeEQsT0FDYixHQUFxQixnQkFBakJzZ0MsYUFBSixDQUtBLElBQVE5K0IsS0FBUzgrQixhQUFUOStCLEtBQ0ZtQixNQUFRLENBQ1ovSSxNQUFPMDhDLFdBQVc5MEMsS0FBTXkxQyxTQUFTejFDLE9BQ2pDMUIsTUFBQUEsTUFDQUMsSUFBQUEsSUFDQThDLFNBQUFBLFVBRUYyekMsZ0JBQWdCLE1BQ2hCVSxhQUFZLFNBQUNuMEMsTUFDWCxJQUFnQnlhLE1BQVV6YSxLQUFqQnZCLE1BQ1QsT0FBQXBLLE9BQUFtRCxPQUFBLEdBQ0t3SSxNQUFJbEwsRUFBQUEsd0VBQUFBLEdBQUEsR0FDTjJKLEtBQU9nYyxNQUFRLEdBRXBCLElBQ0E4NUIsU0FBUzMwQyxNQWpCVCxNQUZFNnpDLGdCQUFnQixLQW9CcEIsR0FDQSxDQUFDbFcsYUFBYzJXLFNBQVVULGdCQUFpQlUsWUFBYUksV0FHbkQvekMsYUFBY2QsRUFBQUEsbUNBQUFBLGNBQ2xCLFNBQUFvSCxPQUEyQixJQUF4QmxILE1BQUtrSCxNQUFMbEgsTUFBTzdDLE1BQUsrSixNQUFML0osTUFBT0MsSUFBRzhKLE1BQUg5SixJQUNmd0MsYUFBWSxTQUFDUSxNQUFTLElBQUFVLFlBQ2RSLFNBQWdELFFBQXhDUSxZQUFHVixLQUFLRyxNQUFLLFNBQUNDLElBQUUsT0FBS0EsR0FBR3BDLEtBQU80QixNQUFNNUIsRUFBRSxXQUFDLElBQUEwQyxZQUFBQSxZQUFJLENBQUMsRUFDckRMLFNBQVdMLEtBQUt4TCxRQUFPLFNBQUM0TCxJQUFFLE9BQUtBLEdBQUdwQyxLQUFPNEIsTUFBTTVCLEVBQUUsSUFDdkQsTUFBTyxHQUFQc0MsUUFBQUMsRUFBQUEsMkVBQUFBLEdBQVdGLFVBQVEsQ0FBQWhNLE9BQUFtRCxPQUFBLEdBQU8wSSxTQUFVLENBQUFuRCxNQUFBQSxNQUFPQyxJQUFBQSxPQUM3QyxHQUNGLEdBQ0EsQ0FBQ3dDLGNBR0d4SCxhQUFjMkksRUFBQUEsbUNBQUFBLFVBQVEsa0JBQU0sSUFBSTFJLEtBQUssS0FBTSxFQUFHLEdBQUcsR0FBRSxJQUV6RCxPQUNFMkksRUFBQUEsZ0RBQUFBLE1BQUNDLG1DQUFBQSxTQUFRLENBQUF6SixTQUFBLEVBQ1BGLEVBQUFBLGdEQUFBQSxLQUFDNEosa0RBQUFBLEVBQVEsQ0FBQ0MsU0FBUyxtQkFBa0IzSixVQUNuQ3dKLEVBQUFBLGdEQUFBQSxNQUFDOHpDLDhDQUFBQSxFQUFJLENBQUN2OUMsVUFBVSwwQkFBeUJDLFNBQUEsRUFDdkN3SixFQUFBQSxnREFBQUEsTUFBQSxPQUFLekosVUFBVSxRQUFPQyxTQUFBLEVBQ3BCRixFQUFBQSxnREFBQUEsS0FBQSxNQUFBRSxTQUFJLDBCQUNKRixFQUFBQSxnREFBQUEsS0FBQSxLQUFBRSxTQUFHLG1GQUlGL0MsT0FBT2t5QyxRQUFRMk4sVUFBVXR3QyxLQUFJLFNBQUF5L0IsT0FBQSxJQUFBNkksT0FBQTVzQyxFQUFBQSx1RUFBQUEsR0FBQStqQyxNQUFBLEdBQUU1a0MsS0FBSXl0QyxNQUFBLEdBQUV6eEIsTUFBS3l4QixNQUFBLFVBQ3pDaDFDLEVBQUFBLGdEQUFBQSxLQUFBLE9BQ0V1ckIsVUFBVSxPQUVWQyxZQUFhLFNBQUFBLGNBQUEsT0FDWGpDLGdCQUFnQixDQUFFNXBCLE1BQU8wOEMsV0FBVzkwQyxLQUFNZ2MsT0FBUWhjLEtBQUFBLE1BQU8sRUFDMURySCxTQUVBbThDLFdBQVc5MEMsS0FBTWdjLFFBTGJoYyxLQU1ELEtBRVJ2SCxFQUFBQSxnREFBQUEsS0FBQSxPQUNFdXJCLFVBQVUsT0FDVkMsWUFBYSxTQUFBQSxjQUFBLE9BQU1qQyxnQkFBZ0IsY0FBYyxFQUFDcnBCLFNBQ25ELHdDQUtIRixFQUFBQSxnREFBQUEsS0FBQSxPQUFBRSxVQUNFd0osRUFBQUEsZ0RBQUFBLE1BQUEsU0FBQXhKLFNBQUEsRUFDRUYsRUFBQUEsZ0RBQUFBLEtBQUEsU0FDRXlGLEtBQUssV0FDTDZHLFFBQVNvd0Msc0JBQ1Rud0MsU0FBVTZ3Qyw4QkFDViw4REFNVnA5QyxFQUFBQSxnREFBQUEsS0FBQSxPQUFLQyxVQUFVLFlBQVdDLFVBQ3hCRixFQUFBQSxnREFBQUEsS0FBQ3NELG9CQUFtQixDQUNsQnhDLFlBQWFBLFlBQ2JILFlBQWFDLGdEQUFBQSxHQUFNcUIsTUFDbkJ5akMsb0JBQ0VnWCxzQkFBd0JoWCxvQkFBc0IsS0FFaEQzQyxrQkFBa0IsY0FDbEI1c0IsZ0JBQWlCQSxnQkFDakJuVixPQUFRcUgsU0FDUnBELFVBQVdBLFVBQ1hnZ0Msa0JBQW1CQSxrQkFDbkJxQyxXQUFZNFYsaUJBQ1p6NUMsWUFBYThFLFVBQ2I3RSxjQUFlNEYsWUFDZjFCLGFBQWN5MUMsU0FDZDc1QyxXQUFTLEVBQ1RtRSxZQUFVLFFBS3BCLENBekt3QjIwQyxtQkFBa0IvN0MsWUFBQSxxQkFBQSs3QyxtQkFBQWoxQyxhQUFBLCtLQUFBQywwQkFBQUEsd0JBQUEsa0RBQUFDLEtBQUEscUJBQUFDLFdBQUE4MEMsbUJBQUFqMUMsYUFBQUksS0FBQSxpRCwybURDVHBDbkUscUJBQXNCd0IsRUFBQUEsc0RBQUFBLEdBQWdCakYsZ0RBQUFBLElBRXRDcThDLFVBQVlsN0MsK0NBQUFBLEVBQU8wTCxLQUFJLFNBQUN5dkMsR0FBSUMsS0FBRyxPQUFBai9DLE9BQUFtRCxPQUFBLEdBQ2hDNjdDLEdBQUUsQ0FDTGpaLFlBQWFrWixJQUFNLEdBQU0sRUFDekJuWixZQUFhbVosSUFBTSxHQUFNLEdBQUMsSUFHYixTQUFTanhDLFVBQVNwRyxNQUFnQixJQUFiRSxVQUFTRixLQUFURSxVQUNsQ2dELFdBQWdDQyxFQUFBQSxtQ0FBQUEsVUFBU2cwQyxXQUFVL3pDLFlBQUFDLEVBQUFBLHVFQUFBQSxHQUFBSCxVQUFBLEdBQTVDSSxTQUFRRixXQUFBLEdBQUVHLFlBQVdILFdBQUEsR0FDNUJzRCxZQUFrQ3ZELEVBQUFBLG1DQUFBQSxXQUFTLEdBQUt3RCxZQUFBdEQsRUFBQUEsdUVBQUFBLEdBQUFxRCxXQUFBLEdBQXpDakksVUFBU2tJLFdBQUEsR0FBRSt4QyxhQUFZL3hDLFdBQUEsR0FFeEJ5SyxpQkFBa0IzTixFQUFBQSxtQ0FBQUEsY0FDdEIsU0FBQ0UsT0FBSyxPQUFBdkwsT0FBQW1ELE9BQUEsS0FHRWtELFlBQWNrRixNQUFNdzZCLGNBQWdCLENBQUVqakMsVUFBVyxnQkFBZ0IsR0FFekUsQ0FBQ3VELFlBR0drNkMsZ0JBQWlCbDFDLEVBQUFBLG1DQUFBQSxjQUFZLGtCQUFNaTFDLGNBQWEsU0FBQzMwQyxNQUFJLE9BQU1BLElBQUksR0FBQyxHQUFFLElBRWxFUSxhQUFjZCxFQUFBQSxtQ0FBQUEsY0FDbEIsU0FBQUMsT0FBMkIsSUFBeEJDLE1BQUtELE1BQUxDLE1BQU83QyxNQUFLNEMsTUFBTDVDLE1BQU9DLElBQUcyQyxNQUFIM0MsSUFDZndDLGFBQVksU0FBQ1EsTUFBUyxJQUFBQyxXQUNkQyxTQUFnRCxRQUF4Q0QsV0FBR0QsS0FBS0csTUFBSyxTQUFDQyxJQUFFLE9BQUtBLEdBQUdwQyxLQUFPNEIsTUFBTTVCLEVBQUUsV0FBQyxJQUFBaUMsV0FBQUEsV0FBSSxDQUFDLEVBQ3JESSxTQUFXTCxLQUFLeEwsUUFBTyxTQUFDNEwsSUFBRSxPQUFLQSxHQUFHcEMsS0FBTzRCLE1BQU01QixFQUFFLElBQ3ZELE1BQU8sR0FBUHNDLFFBQUFDLEVBQUFBLDJFQUFBQSxHQUFXRixVQUFRLENBQUFoTSxPQUFBbUQsT0FBQSxHQUFPMEksU0FBVSxDQUFBbkQsTUFBQUEsTUFBT0MsSUFBQUEsT0FDN0MsR0FDRixHQUNBLENBQUN3QyxjQUdHeEgsYUFBYzJJLEVBQUFBLG1DQUFBQSxVQUFRLGtCQUFNLElBQUkxSSxLQUFLLEtBQU0sRUFBRyxHQUFHLEdBQUUsSUFFekQsT0FDRTJJLEVBQUFBLGdEQUFBQSxNQUFDQyxtQ0FBQUEsU0FBUSxDQUFBekosU0FBQSxFQUNQRixFQUFBQSxnREFBQUEsS0FBQzRKLGlEQUFBQSxFQUFRLENBQUNDLFNBQVMsbUJBQWtCM0osVUFDbkN3SixFQUFBQSxnREFBQUEsTUFBQzh6Qyw2Q0FBQUEsRUFBSSxDQUFDdjlDLFVBQVUsMEJBQXlCQyxTQUFBLEVBQ3ZDd0osRUFBQUEsZ0RBQUFBLE1BQUEsT0FBS3pKLFVBQVUsUUFBT0MsU0FBQSxFQUNwQkYsRUFBQUEsZ0RBQUFBLEtBQUEsTUFBQUUsU0FBSSxjQUNKd0osRUFBQUEsZ0RBQUFBLE1BQUEsS0FBQXhKLFNBQUEsQ0FBRyw2RUFHREYsRUFBQUEsZ0RBQUFBLEtBQUEsU0FBTSw4REFFTkEsRUFBQUEsZ0RBQUFBLEtBQUEsU0FBTSxvRkFNVkEsRUFBQUEsZ0RBQUFBLEtBQUEsT0FBQUUsVUFDRXdKLEVBQUFBLGdEQUFBQSxNQUFBLFNBQUF4SixTQUFBLEVBQ0VGLEVBQUFBLGdEQUFBQSxLQUFBLFNBQ0V5RixLQUFLLFdBQ0w2RyxRQUFTOUksVUFDVCtJLFNBQVVteEMsaUJBQ1Ysa0NBTVYxOUMsRUFBQUEsZ0RBQUFBLEtBQUEsT0FBS0MsVUFBVSxZQUFXQyxVQUN4QkYsRUFBQUEsZ0RBQUFBLEtBQUNzRCxvQkFBbUIsQ0FDbEJ4QyxZQUFhQSxZQUNiSCxZQUFhQyxnREFBQUEsR0FBTXFCLE1BQ25COGdDLGtCQUFrQixjQUNsQjVzQixnQkFBaUJBLGdCQUNqQm5WLE9BQVFxSCxTQUNScEQsVUFBV0EsVUFDWHZCLGNBQWU0RixZQUNmOUYsVUFBV0EsVUFDWHcvQixrQkFBbUJ4L0IsVUFBWSxjQUFnQixnQkFLekQsQ0F4RXdCMkgsVUFBUzVLLFlBQUEsWUFBQTRLLFVBQUE5RCxhQUFBLHNLQUFBQywwQkFBQUEsd0JBQUEsMkNBQUFDLEtBQUEsWUFBQUMsV0FBQTJELFVBQUE5RCxhQUFBSSxLQUFBLDBDLDZIQ25CbEIsU0FBU3hHLGVBQXlDLElBQTVCNE4sSUFBRzlQLFVBQUFDLE9BQUEsUUFBQXNwQixJQUFBdnBCLFVBQUEsR0FBQUEsVUFBQSxHQUFHLEVBQUdyQyxLQUFJcUMsVUFBQUMsT0FBQSxRQUFBc3BCLElBQUF2cEIsVUFBQSxHQUFBQSxVQUFBLEdBQUcsSUFBSWdDLEtBQ2pEZ2IsRUFBSXJmLEtBQUttckMsY0FDVDZMLEVBQUloM0MsS0FBS29yQyxXQUNUa0YsRUFBSXR3QyxLQUFLb1csVUFrTmYsTUFoTmEsQ0FDWCxDQUNFLENBQ0VuVCxNQUFPLFVBQ1BrRyxNQUFPLElBQUk5RSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEdBQUksRUFBRyxHQUNwQ2xuQyxJQUFLLElBQUkvRSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEdBQUksRUFBRyxJQUVwQyxDQUNFcnRDLE1BQU8sVUFDUGtHLE1BQU8sSUFBSTlFLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQ3BDbG5DLElBQUssSUFBSS9FLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEdBQUksR0FBSSxFQUFHLElBRXBDLENBQ0VydEMsTUFBTyxVQUNQa0csTUFBTyxJQUFJOUUsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FDcENsbkMsSUFBSyxJQUFJL0UsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsSUFFcEMsQ0FDRXJ0QyxNQUFPLFVBQ1BrRyxNQUFPLElBQUk5RSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUNuQ2xuQyxJQUFLLElBQUkvRSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxJQUVuQyxDQUNFcnRDLE1BQU8sVUFDUGtHLE1BQU8sSUFBSTlFLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQ3BDbG5DLElBQUssSUFBSS9FLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEdBQUksRUFBRyxFQUFHLElBRW5DLENBQ0VydEMsTUFBTyxVQUNQa0csTUFBTyxJQUFJOUUsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FDbkNsbkMsSUFBSyxJQUFJL0UsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsSUFFbkMsQ0FDRXJ0QyxNQUFPLFVBQ1BrRyxNQUFPLElBQUk5RSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUNsQ2xuQyxJQUFLLElBQUkvRSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxLQUdwQyxDQUNFLENBQ0VydEMsTUFBTyxVQUNQa0csTUFBTyxJQUFJOUUsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FDbkNsbkMsSUFBSyxJQUFJL0UsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsSUFFcEMsQ0FDRXJ0QyxNQUFPLFVBQ1BrRyxNQUFPLElBQUk5RSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUNuQ2xuQyxJQUFLLElBQUkvRSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxJQUVuQyxDQUNFcnRDLE1BQU8sVUFDUGtHLE1BQU8sSUFBSTlFLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQ25DbG5DLElBQUssSUFBSS9FLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEdBQUksR0FBSSxFQUFHLElBRXBDLENBQ0VydEMsTUFBTyxVQUNQa0csTUFBTyxJQUFJOUUsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FDbkNsbkMsSUFBSyxJQUFJL0UsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsSUFFcEMsQ0FDRXJ0QyxNQUFPLFVBQ1BrRyxNQUFPLElBQUk5RSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUNuQ2xuQyxJQUFLLElBQUkvRSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxJQUVuQyxDQUNFcnRDLE1BQU8sVUFDUGtHLE1BQU8sSUFBSTlFLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQ25DbG5DLElBQUssSUFBSS9FLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEdBQUksRUFBRyxFQUFHLElBRW5DLENBQ0VydEMsTUFBTyxVQUNQa0csTUFBTyxJQUFJOUUsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FDbkNsbkMsSUFBSyxJQUFJL0UsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsSUFFcEMsQ0FDRXJ0QyxNQUFPLFVBQ1BrRyxNQUFPLElBQUk5RSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUNuQ2xuQyxJQUFLLElBQUkvRSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEdBQUksRUFBRyxJQUVwQyxDQUNFcnRDLE1BQU8sVUFDUGtHLE1BQU8sSUFBSTlFLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQ25DbG5DLElBQUssSUFBSS9FLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEdBQUksR0FBSSxFQUFHLElBRXBDLENBQ0VydEMsTUFBTyxXQUNQa0csTUFBTyxJQUFJOUUsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FDcENsbkMsSUFBSyxJQUFJL0UsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsSUFFcEMsQ0FDRXJ0QyxNQUFPLFdBQ1BrRyxNQUFPLElBQUk5RSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUNuQ2xuQyxJQUFLLElBQUkvRSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxJQUVuQyxDQUNFcnRDLE1BQU8sV0FDUGtHLE1BQU8sSUFBSTlFLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQ25DbG5DLElBQUssSUFBSS9FLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEdBQUksRUFBRyxFQUFHLElBRW5DLENBQ0VydEMsTUFBTyxXQUNQa0csTUFBTyxJQUFJOUUsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FDbkNsbkMsSUFBSyxJQUFJL0UsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsSUFFbkMsQ0FDRXJ0QyxNQUFPLFdBQ1BrRyxNQUFPLElBQUk5RSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUNuQ2xuQyxJQUFLLElBQUkvRSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxJQUVuQyxDQUNFcnRDLE1BQU8sV0FDUGtHLE1BQU8sSUFBSTlFLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQ25DbG5DLElBQUssSUFBSS9FLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEVBQUcsRUFBRyxFQUFHLElBRWxDLENBQ0VydEMsTUFBTyxXQUNQa0csTUFBTyxJQUFJOUUsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FDbkNsbkMsSUFBSyxJQUFJL0UsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsS0FHdEMsQ0FDRSxDQUNFcnRDLE1BQU8sVUFDUGtHLE1BQU8sSUFBSTlFLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQ25DbG5DLElBQUssSUFBSS9FLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEVBQUcsR0FBSSxFQUFHLElBRW5DLENBQ0VydEMsTUFBTyxVQUNQa0csTUFBTyxJQUFJOUUsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FDbkNsbkMsSUFBSyxJQUFJL0UsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsSUFFbkMsQ0FDRXJ0QyxNQUFPLFVBQ1BrRyxNQUFPLElBQUk5RSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUNsQ2xuQyxJQUFLLElBQUkvRSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxLQUdwQyxDQUNFLENBQ0VydEMsTUFBTyxVQUNQa0csTUFBTyxJQUFJOUUsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FDbkNsbkMsSUFBSyxJQUFJL0UsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsSUFFbEMsQ0FDRXJ0QyxNQUFPLFVBQ1BrRyxNQUFPLElBQUk5RSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUNsQ2xuQyxJQUFLLElBQUkvRSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxJQUVuQyxDQUNFcnRDLE1BQU8sVUFDUGtHLE1BQU8sSUFBSTlFLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQ2xDbG5DLElBQUssSUFBSS9FLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEdBQUksRUFBRyxFQUFHLElBRW5DLENBQ0VydEMsTUFBTyxVQUNQa0csTUFBTyxJQUFJOUUsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FDbENsbkMsSUFBSyxJQUFJL0UsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsSUFFbkMsQ0FDRXJ0QyxNQUFPLFVBQ1BrRyxNQUFPLElBQUk5RSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUNuQ2xuQyxJQUFLLElBQUkvRSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxJQUVuQyxDQUNFcnRDLE1BQU8sVUFDUGtHLE1BQU8sSUFBSTlFLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQ25DbG5DLElBQUssSUFBSS9FLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEdBQUksRUFBRyxFQUFHLElBRW5DLENBQ0VydEMsTUFBTyxVQUNQa0csTUFBTyxJQUFJOUUsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FDbkNsbkMsSUFBSyxJQUFJL0UsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsS0FHckMsQ0FDRSxDQUNFcnRDLE1BQU8sVUFDUGtHLE1BQU8sSUFBSTlFLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQ25DbG5DLElBQUssSUFBSS9FLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEdBQUksR0FBSSxFQUFHLElBRXBDLENBQ0VydEMsTUFBTyxVQUNQa0csTUFBTyxJQUFJOUUsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FDcENsbkMsSUFBSyxJQUFJL0UsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsSUFFcEMsQ0FDRXJ0QyxNQUFPLFVBQ1BrRyxNQUFPLElBQUk5RSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEdBQUksRUFBRyxHQUNwQ2xuQyxJQUFLLElBQUkvRSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEdBQUksRUFBRyxJQUVwQyxDQUNFcnRDLE1BQU8sVUFDUGtHLE1BQU8sSUFBSTlFLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQ3BDbG5DLElBQUssSUFBSS9FLEtBQUtnYixFQUFHMjNCLEVBQUcxRyxFQUFHLEdBQUksRUFBRyxFQUFHLElBRW5DLENBQ0VydEMsTUFBTyxVQUNQa0csTUFBTyxJQUFJOUUsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FDbkNsbkMsSUFBSyxJQUFJL0UsS0FBS2diLEVBQUcyM0IsRUFBRzFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsSUFFbkMsQ0FDRXJ0QyxNQUFPLFVBQ1BrRyxNQUFPLElBQUk5RSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEdBQUksRUFBRyxHQUNwQ2xuQyxJQUFLLElBQUkvRSxLQUFLZ2IsRUFBRzIzQixFQUFHMUcsRUFBRyxHQUFJLEdBQUksRUFBRyxNQUs1Qm4rQixJQUNkLEMsdTVDQ25NTTVKLFdBQVlULEVBQUFBLGtDQUFBQSxJQUFnQkQsK0NBSXJCMUUsU0FBVyxTQUFYQSxTQUFZdUssT0FBSyxPQUM1QnBLLEVBQUFBLCtDQUFBQSxLQUFBLE9BQUtvTSxNQUFPLENBQUU0TSxPQUFRLEtBQU05WSxVQUMxQkYsRUFBQUEsK0NBQUFBLEtBQUNLLGtDQUFBQSxHQUFZbEQsT0FBQW1ELE9BQUEsQ0FBQzJFLFVBQVdBLFdBQWVtRixTQUNwQyxFQUhLdkssU0FBUVUsWUFBRyxXQU1qQixJQUFNK0MscUJBQXNCd0IsRUFBQUEscURBQUFBLEdBQWdCakYsVUFFdEM4OUMsaUJBQW1CLFNBQW5CQSxpQkFBb0J2ekMsT0FDL0IsT0FDRXBLLEVBQUFBLCtDQUFBQSxLQUFDc0Qsb0JBQW1CbkcsT0FBQW1ELE9BQUEsQ0FDbEJlLE9BQUssRUFDTHNHLFlBQVUsRUFDVjFDLFVBQVdBLFVBQ1h4QixhQUFhakMsRUFBQUEsc0RBQUFBLFFBQU8saUJBQ3BCRCxlQUFlQyxFQUFBQSxzREFBQUEsUUFBTyxrQkFDdEJvRyxjQUFjcEcsRUFBQUEsc0RBQUFBLFFBQU8sa0JBQ2pCNEksT0FHVixFQVphdXpDLGlCQUFnQnA5QyxZQUFHLG1CQWN6QixJQUFNUyxPQUFTLENBQ3BCLENBQ0VyQixNQUFPLE9BQ1BrRyxNQUFPdEIsZ0RBQVNnQyxJQUFJLEVBQUcsUUFBUUMsU0FBUyxFQUFHLFNBQVNiLFNBQ3BERyxJQUFLdkIsZ0RBQVNnQyxJQUFJLEVBQUcsUUFBUUMsU0FBUyxFQUFHLFNBQVNiLFNBQ2xESSxRQUFRLEdBRVYsQ0FDRXBHLE1BQU8sY0FDUGtHLE1BQU90QixnREFBUzhLLFFBQVEsT0FBTzlJLElBQUksRUFBRyxTQUFTWixTQUMvQ0csSUFBS3ZCLGdEQUFTOEssUUFBUSxPQUFPOUksSUFBSSxHQUFJLFNBQVNaLFNBQzlDSSxRQUFRLEdBR1YsQ0FDRXBHLE1BQU8sY0FDUGtHLE1BQU90QixnREFBUzhLLFFBQVEsT0FBTzlJLElBQUksR0FBSSxTQUFTWixTQUNoREcsSUFBS3ZCLGdEQUFTOEssUUFBUSxPQUFPOUksSUFBSSxHQUFJLFNBQVNaLFNBQzlDSSxRQUFRLEdBRVYsQ0FDRXBHLE1BQU8sZUFDUGtHLE1BQU90QixnREFBUzhLLFFBQVEsT0FBTzFKLFNBQy9CRyxJQUFLdkIsZ0RBQVM4SyxRQUFRLE9BQU85SSxJQUFJLEVBQUcsT0FBT1osU0FDM0NJLFFBQVEsR0FFVixDQUNFcEcsTUFBTyxjQUNQa0csTUFBT3RCLGdEQUFTOEssUUFBUSxPQUFPMUosU0FDL0JHLElBQUt2QixnREFBUzhLLFFBQVEsT0FBTzlJLElBQUksRUFBRyxRQUFRWixTQUM1Q0ksUUFBUSxHQUVWLENBQ0VwRyxNQUFPLGlCQUNQa0csTUFBT3RCLGdEQUFTb0IsU0FDaEJHLElBQUt2QixnREFBU2dDLElBQUksRUFBRyxRQUFRWixTQUM3QkksUUFBUSxJQUlDb0IsaUJBQW1CLENBQzlCLENBQ0V4SCxNQUFPLHdCQUNQa0csTUFBT3RCLGdEQUFTOEssUUFBUSxPQUFPOUksSUFBSSxFQUFHLFNBQVNaLFNBQy9DRyxJQUFLdkIsZ0RBQVM4SyxRQUFRLE9BQU85SSxJQUFJLEdBQUksU0FBU1osU0FDOUNJLFFBQVEsSUFJQ25ELGVBQWlCLENBQzVCLENBQ0VqRCxNQUFPLFVBQ1BrRyxNQUFPdEIsZ0RBQVM4SyxRQUFRLE9BQU85SSxJQUFJLEVBQUcsU0FBU1osU0FDL0NHLElBQUt2QixnREFBUzhLLFFBQVEsT0FBTzlJLElBQUksRUFBRyxTQUFTWixTQUM3Q0ksUUFBUSxFQUNSc0YsV0FBWSxHQUVkLENBQ0UxTCxNQUFPLFVBQ1BrRyxNQUFPdEIsZ0RBQVM4SyxRQUFRLE9BQU85SSxJQUFJLEVBQUcsU0FBU1osU0FDL0NHLElBQUt2QixnREFBUzhLLFFBQVEsT0FBTzlJLElBQUksRUFBRyxTQUFTWixTQUM3Q0ksUUFBUSxFQUNSc0YsV0FBWSxDQUFDLEVBQUcsSUFFbEIsQ0FDRTFMLE1BQU8sVUFDUGtHLE1BQU90QixnREFBUzhLLFFBQVEsT0FBTzlJLElBQUksRUFBRyxTQUFTWixTQUMvQ0csSUFBS3ZCLGdEQUFTOEssUUFBUSxPQUFPOUksSUFBSSxFQUFHLFNBQVNaLFNBQzdDSSxRQUFRLEVBQ1JzRixXQUFZLElBSUh4SSxVQUFZLENBQ3ZCLENBQ0VpRSxHQUFJLEVBQ0pTLEtBQU0sZ0JBRVIsQ0FDRVQsR0FBSSxFQUNKUyxLQUFNLGdCQUVSLENBQ0VULEdBQUksRUFDSlMsS0FBTSxtQkFFVDFILFNBQUF3SCxhQUFBLHVFQUFBQywwQkFBQUEsd0JBQUEsNkJBQUFDLEtBQUEsV0FBQUMsV0FBQTNILFNBQUF3SCxhQUFBSSxLQUFBLDZCQUFBazJDLGlCQUFBdDJDLGFBQUEsK0VBQUFDLDBCQUFBQSx3QkFBQSw2QkFBQUMsS0FBQSxtQkFBQUMsV0FBQW0yQyxpQkFBQXQyQyxhQUFBSSxLQUFBLDRCLDhrQ0M5SGU3RSxlQUFvQ3VaLHVEQUFBQSxFQUE1Q25iLE9BQThCNkIsVUFBY3NaLHVEQUFBQSxFQUFwQkMsS0FFMUJqSSxZQUFhM1AsRUFBQUEsa0NBQUFBLElBQWdCRCwrQ0FHN0JxNUMsU0FBV3Q4QywrQ0FBQUEsRUFBV29MLEtBQUksU0FBQ2hFLE9BQy9CLElBQ1M4dEIsVUFLTDl0QixNQUxGN0MsTUFDSzR3QixRQUlIL3RCLE1BSkY1QyxJQUNPa1AsTUFHTHRNLE1BSEYvSSxNQUNRaytDLFlBRU5uMUMsTUFGRjNDLE9BQ0crM0MsT0FBSzM0QyxFQUFBQSxnRkFBQUEsR0FDTnVELE1BQUt0RCxXQUNULE9BQUFqSSxPQUFBbUQsT0FBQSxHQUFZdzlDLE1BQU8sQ0FBQXRuQixVQUFBQSxVQUFXQyxRQUFBQSxRQUFTemhCLE1BQUFBLE1BQU82b0MsWUFBQUEsYUFDaEQsSUFFYTNwQyxrQkFBb0IsQ0FDL0J3OEIsZUFBZ0IsY0FDaEI1dkMsWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxJQUMvQjB2QyxZQUFhLFVBQ2J6dkMsT0FBUTQ4QyxTQUNSMzRDLFVBQVdrUCxXQUNYeThCLGNBQWUsUUFDZkQsZ0JBQWlCLFFBQ2pCSCxjQUFlLGFBS1h1TixrQkFBb0JsN0MsVUFBVTZKLEtBQUksU0FBQTNILE1BQWdCLE1BQWUsQ0FDckVpNUMsR0FEK0NqNUMsS0FBTitCLEdBRXpDbTNDLE1BRjZEbDVDLEtBQVpwRixNQUdsRCxJQUVZc2MsMEJBQTRCLENBQ3ZDbmIsWUFBYSxJQUFJQyxLQUFLLEtBQU0sRUFBRyxHQUMvQkosWUFBYUMsa0NBQUFBLEdBQU1DLElBQ25CRyxPQUFRNEIsZUFDUnFDLFVBQVdrUCxXQUNYcFIsbUJBQW9CLEtBQ3BCRixVQUFXazdDLGtCQUNYLzZDLHNCQUF1QixRLDBSQzFDekIsU0FBU3c2QyxLQUFJejRDLE1BQWlDLElBQTlCN0UsU0FBUTZFLEtBQVI3RSxTQUFVRCxVQUFTOEUsS0FBVDlFLFVBQVdtTSxNQUFLckgsS0FBTHFILE1BQ25DLE9BQ0VwTSxFQUFBQSwrQ0FBQUEsS0FBQSxPQUFLQyxVQUFTLEdBQUFtSixPQUFLbkosV0FBYSxHQUFFLFNBQVNtTSxNQUFPQSxNQUFNbE0sU0FDckRBLFVBR1AsQ0FOU3M5QyxLQUFJajlDLFlBQUEsT0FBQWk5QyxLQUFBbjJDLGFBQUEsK0NBVWIsMkJBQW1CLG9CQUFBQywwQkFBQUEsd0JBQUEsOEJBQUFDLEtBQUEsT0FBQUMsV0FBQWcyQyxLQUFBbjJDLGFBQUFJLEtBQUEsNkIseW1CQ1pieXlCLGlCQUFtQixTQUFuQkEsaUJBQWdCbjFCLE1BQWlELElBQTNDN0UsU0FBUTZFLEtBQVI3RSxTQUFVRCxVQUFTOEUsS0FBVDlFLFVBQVdtTSxNQUFLckgsS0FBTHFILE1BQU8rdEIsU0FBUXAxQixLQUFSbzFCLFNBQ3RELE9BQ0VuNkIsRUFBQUEsWUFBQUEsS0FBQSxPQUFLQyxVQUFXQSxVQUFXbU0sTUFBT0EsTUFBT2lULElBQUs4YSxTQUFTajZCLFNBQ3BEQSxVQUdQLEVBTk1nNkIsaUJBQWdCMzVCLFlBQUcsbUJBUXpCLDJCQUFlbVEsTUFBQUEsWUFBaUIsU0FBQ3d0QyxzQkFBdUI3K0IsS0FDdEQsSUFDTWpULE1BQVEsQ0FDWit4QyxZQUZnQkQsc0JBQXNCemtCLFNBQVcsR0FBTSxFQUU5QixNQUFRLE9BQ2pDMmtCLFlBQWEsUUFDYkMsWUFBYSxPQUdmLE9BQ0VyK0MsRUFBQUEsWUFBQUEsS0FBQ2s2QixpQkFBZ0IvOEIsT0FBQW1ELE9BQUEsR0FBSzQ5QyxzQkFBcUIsQ0FBRTl4QyxNQUFPQSxNQUFPK3RCLFNBQVU5YSxNQUV6RSxJQ2dFQSw0QkFqRnNCemhCLEVBQUFBLGVBQUFBLElBQUFBLEVBQUFBLGVBQUFBLEdBQUEsQ0FDcEJzRSxnQkFBaUIsU0FBQUEsZ0JBQUNvOEMsc0JBRWhCLElBQU1DLFdBQVdELHFCQUFxQjl1QyxPQUNsQzh1QyxxQkFBcUI5dUMsTUFBTTBoQixNQUFLLFNBQUN4MEIsTUFDL0IsT0FBT0EsS0FBS29XLFVBQVksSUFBTyxDQUNqQyxJQUdFMUcsTUFBUSxDQUNac0MsUUFBUyxPQUNUOHZDLEtBQU0sRUFDTkMsV0FBWSxpQkFDWjd0QyxnQkFBaUIydEMsU0FBVyxVQUFZLFFBRTFDLE9BQ0U3MEMsRUFBQUEsWUFBQUEsTUFBQSxPQUFLMEMsTUFBT0EsTUFBTWxNLFNBQUEsQ0FDZnErQyxXQUNDditDLEVBQUFBLFlBQUFBLEtBQUEsS0FBRzhVLFNBQVN0VCxFQUFBQSxJQUFBQSxRQUFPLDRDQUE0Q3RCLFNBQUMsYUFJakVvK0MscUJBQXFCcCtDLFdBRzVCLEVBQ0ErQyxpQkFBa0JOLHVCQUNsQlAsZ0JBQWlCLFNBQUFBLGdCQUFDczhDLHNCQUVoQixJQUFNQyxnQkFBZ0JELHFCQUFxQjNnRCxPQUNHLElBQTFDMmdELHFCQUFxQjNnRCxNQUFNNmdELFdBRXpCeHlDLE1BQVEsQ0FDWnNDLFFBQVMsT0FDVDh2QyxLQUFNLEVBQ041dEMsZ0JBQWlCK3RDLGNBQWdCLFVBQVksUUFFL0MsT0FDRWoxQyxFQUFBQSxZQUFBQSxNQUFBLE9BQUswQyxNQUFPQSxNQUFNbE0sU0FBQSxDQUNmeStDLGVBQWlCLHFCQUNqQkQscUJBQXFCeCtDLFdBRzVCLEVBQ0FvQyxhQUFjLFNBQUFBLGFBQUN1OEMsbUJBQ2IsSUFBTXp5QyxNQUFRLENBQ1o0RyxPQUFRLFlBQ1JtckMsWUFDRVUsa0JBQWtCbjJDLE1BQU03QyxNQUFNKzRDLFdBQWEsR0FBTSxFQUFJLFFBQVUsTUFDakV2bEIsUUFBUyxPQUVYLE9BQU9yNUIsRUFBQUEsWUFBQUEsS0FBQSxPQUFLb00sTUFBT0EsTUFBTWxNLFNBQUUyK0Msa0JBQWtCMytDLFVBQy9DLEdBQUMsbUJBQ2dCLFNBQUFrQyxnQkFBQ3M4QyxzQkFDaEIsSUFBTXR5QyxNQUM4QixPQUFsQ3N5QyxxQkFBcUJqbEIsVUFDdUIsSUFBNUNpbEIscUJBQXFCM2dELE1BQU0rZ0QsYUFDdkIsQ0FBQyxFQUNELENBQ0U5ckMsT0FBUSxZQUNScEMsZ0JBQ0U4dEMscUJBQXFCM2dELE1BQU02Z0QsWUFBYyxHQUN6Q0YscUJBQXFCM2dELE1BQU02Z0QsWUFBYyxHQUNyQyxRQUNBLE1BQ052bEIsUUFBUyxPQUVqQixPQUFPcjVCLEVBQUFBLFlBQUFBLEtBQUEsT0FBS29NLE1BQU9BLE1BQU1sTSxTQUFFdytDLHFCQUFxQngrQyxVQUNsRCxJQUFDLHFCQUNrQixTQUFBNEIsa0JBQUNpOUMsd0JBQ2xCLE9BQ0UvK0MsRUFBQUEsWUFBQUEsS0FBQSxPQUNFOEcsR0FBRyxnQ0FDSHNGLE1BQU8sQ0FBRXdFLGdCQUFpQixRQUFTMVEsU0FFbEM2K0MsdUJBQXVCNytDLFVBRzlCLEcscUdDbEZGLElBQU1xeEIsSUFBTSxJQUFJeHdCLEtBRWhCLHVCQVFFLENBQ0UrRixHQUFJLEVBQ0puSCxNQUFPLGFBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUN6QitFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEtBR3pCLENBQ0UrRixHQUFJLEVBQ0puSCxNQUFPLGFBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUNuQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEdBQUksRUFBRyxFQUFHLElBR25DLENBQ0UrRixHQUFJLEVBQ0puSCxNQUFPLFdBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUNuQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxHQUFJLEdBQUksRUFBRyxFQUFHLElBR3BDLENBQ0UrRixHQUFJLEVBQ0puSCxNQUFPLGFBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUNsQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQ2hDZ0YsUUFBUSxHQUdWLENBQ0VlLEdBQUksR0FDSm5ILE1BQU8sbUJBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUNsQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEdBQUksR0FBSSxHQUFJLElBRXJDLENBQ0UrRixHQUFJLEVBQ0puSCxNQUFPLGFBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxJQUN6QitFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLElBQ3ZCNFIsS0FBTSx1Q0FFUixDQUNFN0wsR0FBSSxFQUNKbkgsTUFBTyxVQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxHQUN4QytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEdBQUksR0FBSSxHQUFJLEVBQUcsR0FDdEM0UixLQUFNLG1EQUVSLENBQ0U3TCxHQUFJLEVBQ0puSCxNQUFPLFFBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQ3ZDK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUNyQzRSLEtBQU0sZUFFUixDQUNFN0wsR0FBSSxFQUNKbkgsTUFBTyxVQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUN2QytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsSUFFdkMsQ0FDRStGLEdBQUksRUFDSm5ILE1BQU8sYUFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FDdkMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQ3RDNFIsS0FBTSxrQ0FFUixDQUNFN0wsR0FBSSxHQUNKbkgsTUFBTyxTQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUN2QytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsSUFFdkMsQ0FDRStGLEdBQUksR0FDSm5ILE1BQU8sOEJBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUNuQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEdBQUksR0FBSSxHQUFJLElBRXJDLENBQ0UrRixHQUFJLEtBQ0puSCxNQUFPLCtCQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FDcEMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQUksRUFBRyxJQUVwQyxDQUNFK0YsR0FBSSxLQUNKbkgsTUFBTyxnQ0FDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQ3JDK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEVBQUcsSUFFcEMsQ0FDRStGLEdBQUksS0FDSm5ILE1BQU8sZ0NBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQUksR0FBSSxHQUNyQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEdBQUksR0FBSSxFQUFHLElBRXBDLENBQ0UrRixHQUFJLEdBQ0puSCxNQUFPLG1CQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FDckMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxHQUFJLEVBQUcsRUFBRyxJQUVuQyxDQUNFK0YsR0FBSSxLQUNKbkgsTUFBTyx3QkFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQ3JDK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEdBQUksSUFFckMsQ0FDRStGLEdBQUksR0FDSm5ILE1BQU8sa0JBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQUksR0FBSSxHQUNyQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEdBQUksRUFBRyxFQUFHLElBRW5DLENBQ0UrRixHQUFJLEdBQ0puSCxNQUFPLFFBQ1BrRyxNQUFPLElBQUk5RSxNQUFLLElBQUlBLE1BQU9pK0MsVUFBUyxJQUFJaitDLE1BQU82OUMsV0FBYSxJQUM1RDk0QyxJQUFLLElBQUkvRSxNQUFLLElBQUlBLE1BQU9pK0MsVUFBUyxJQUFJaitDLE1BQU82OUMsV0FBYSxLQUU1RCxDQUNFOTNDLEdBQUksR0FDSm5ILE1BQU8sc0JBQ1BrRyxNQUFPMHJCLElBQ1B6ckIsSUFBS3lyQixLQUVQLENBQ0V6cUIsR0FBSSxHQUNKbkgsTUFBTyxlQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FDckMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQUksRUFBRyxJQUVwQyxDQUNFK0YsR0FBSSxHQUNKbkgsTUFBTyx1QkFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQ3JDK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEVBQUcsSUFFcEMsQ0FDRStGLEdBQUksR0FDSm5ILE1BQU8sa0JBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQUksR0FBSSxHQUNyQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEdBQUksR0FBSSxHQUFJLElBRXJDLENBQ0UrRixHQUFJLEdBQ0puSCxNQUFPLHFCQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FDckMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQUksR0FBSSxJQUVyQyxDQUNFK0YsR0FBSSxHQUNKbkgsTUFBTyxzQkFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQ3BDK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEdBQUksSUFFckMsQ0FDRStGLEdBQUksR0FDSm5ILE1BQU8sa0JBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQUksRUFBRyxHQUNwQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEdBQUksR0FBSSxHQUFJLElBRXJDLENBQ0UrRixHQUFJLEdBQ0puSCxNQUFPLGdCQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FDckMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxHQUFJLEdBQUksRUFBRyxJQUVwQyxDQUNFK0YsR0FBSSxHQUNKbkgsTUFBTyxnQkFDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQ3JDK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxHQUFJLEVBQUcsSUFFcEMsQ0FDRStGLEdBQUksR0FDSm5ILE1BQU8sZ0NBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUNuQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEdBQUksRUFBRyxHQUFJLElBRXBDLENBQ0UrRixHQUFJLEdBQ0puSCxNQUFPLGlDQUNQa0csTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FDbkMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sR0FBSSxFQUFHLEVBQUcsR0FBSSxJQUVwQyxDQUNFK0YsR0FBSSxHQUNKbkgsTUFBTyxtQ0FDUGtHLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQ25DK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsR0FBSSxFQUFHLEdBQUksSUFFcEMsQ0FDRStGLEdBQUksR0FDSm5ILE1BQU8sa0NBQ1BrRyxNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUNuQytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEdBQUksRUFBRyxHQUFJLEksNkdDak50Qyx1QkFDRUMsT0FBUSxDQUNOLENBQ0VyQixNQUFPLFlBQ1AwTCxXQUFZLElBQ1p4RixNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQ3RDK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxJQUV2QyxDQUNFcEIsTUFBTyxrQkFDUDBMLFdBQVksSUFDWnhGLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FDdEMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLElBRXRDLENBQ0VwQixNQUFPLElBQ1AwTCxXQUFZLElBQ1p4RixNQUFPLElBQUk5RSxLQUFLLEtBQU0sRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQ3RDK0UsSUFBSyxJQUFJL0UsS0FBSyxLQUFNLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxJQUV2QyxDQUNFcEIsTUFBTyxJQUNQMEwsV0FBWSxJQUNaeEYsTUFBTyxJQUFJOUUsS0FBSyxLQUFNLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUN0QytFLElBQUssSUFBSS9FLEtBQUssS0FBTSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsSUFFdkMsQ0FDRXBCLE1BQU8sSUFDUDBMLFdBQVksSUFDWnhGLE1BQU8sSUFBSTlFLEtBQUssS0FBTSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FDdEMrRSxJQUFLLElBQUkvRSxLQUFLLEtBQU0sRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEtBSXpDcWIsS0FBTSxDQUNKLENBQ0V0VixHQUFJLElBQ0puSCxNQUFPLFVBRVQsQ0FDRW1ILEdBQUksSUFDSm5ILE1BQU8sVUFFVCxDQUNFbUgsR0FBSSxJQUNKbkgsTUFBTyxXLGs4Q0NoQ2IsSUFBTXVLLFlBQWMsQ0FFcEIsRUFFQSxTQUFTQyxXQUFVcEYsTUFHaEIsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSwyQ0FBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsMkNBQUFBLElBQUM0MEMsbURBQUFBLEdBQUksQ0FBQ3QvQyxNQUFNLHFCQUFxQjRLLFFBQVEsVUFDekNGLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxnQkFBYyxpQkFHdEJBLEVBQUFBLDJDQUFBQSxJQUFDTCx5REFBQUEsRUFBSyxDQUFDaXlDLGNBQWMsRUFBTzd2QyxNQUFPLENBQ2pDc3ZDLGFBQWMsSUFDYm54QyxRQUFRLFdBQ1hGLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxnQkFBYyxpQkFFdEJBLEVBQUFBLDJDQUFBQSxJQUFBLDhHQUF3R0EsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFdBQXlCLHFIQUMzSkgsRUFBQUEsMkNBQUFBLElBQUEsc1RBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxtQkFBaUIsb0JBRXpCQSxFQUFBQSwyQ0FBQUEsSUFBQSw4Q0FBd0NBLEVBQUFBLDJDQUFBQSxJQUFBLEtBQUdHLFdBQVcsSUFDbEQsS0FBUSwwQkFDUixPQUFVLFNBQ1YsSUFBTyxnQ0FBOEIsUUFDeEIsUUFBUUgsRUFBQUEsMkNBQUFBLElBQUEsS0FBR0csV0FBVyxJQUNuQyxLQUFRLHlCQUNSLE9BQVUsU0FDVixJQUFPLGdDQUE4QixPQUN6QixNQUNoQkgsRUFBQUEsMkNBQUFBLElBQUEsVUFBR0EsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxLQUFHLFNBQWUsS0FBS0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGlDQUNuRUgsRUFBQUEsMkNBQUFBLElBQUEsVUFBR0EsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxLQUFHLFFBQWMsS0FBS0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLDJDQUNsRUgsRUFBQUEsMkNBQUFBLElBQUEsVUFBR0EsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxLQUFHLFFBQWMsMEJBQ25DSCxFQUFBQSwyQ0FBQUEsSUFBQSxtSUFBNkhBLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxxREFBbUUsbUhBQW1ISCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyx3QkFBd0JSLFFBQVEsVUFBUSxrQkFBNEIsNkJBQzlaRixFQUFBQSwyQ0FBQUEsSUFBQSxtSUFDQUEsRUFBQUEsMkNBQUFBLElBQUEsMkRBQXFEQSxFQUFBQSwyQ0FBQUEsSUFBQSxVQUFRRyxXQUFXLEtBQUcsUUFBa0IsbUtBRWhFSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLEtBQUcsY0FBb0IsNkRBQ2hFSCxFQUFBQSwyQ0FBQUEsSUFBQSxLQUFHRyxXQUFXLElBQ2IsS0FBUSxzQ0FDUixPQUFVLFNBQ1YsSUFBTyxnQ0FBOEIsZ0JBQ2hCLE1BQU1ILEVBQUFBLDJDQUFBQSxJQUFBLEtBQUdHLFdBQVcsSUFDekMsS0FBUSx1QkFDUixPQUFVLFNBQ1YsSUFBTyxnQ0FBOEIsYUFDbkIsUUFBUUgsRUFBQUEsMkNBQUFBLElBQUEsS0FBR0csV0FBVyxJQUN4QyxLQUFRLGlDQUNSLE9BQVUsU0FDVixJQUFPLGdDQUE4QixTQUN2QixNQUNsQkgsRUFBQUEsMkNBQUFBLElBQUEsd0JBQWtCQSxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxZQUFZbUgsUUFBUSxVQUFRLGFBQXVCLGlLQUNoR0YsRUFBQUEsMkNBQUFBLElBQUEsWUFBS0EsRUFBQUEsMkNBQUFBLElBQUEsUUFBTUcsV0FBVyxNQUNsQixVQUFhLGdCQUFjLHNmQW1CL0JILEVBQUFBLDJDQUFBQSxJQUFBLHNDQUFnQ0EsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sWUFBWW1ILFFBQVEsVUFBUSxhQUF1QixzQ0FBc0NGLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxjQUE0QixzTUFBc01ILEVBQUFBLDJDQUFBQSxJQUFBLEtBQUdHLFdBQVcsSUFDMVosS0FBUSxnREFDUixPQUFVLFNBQ1YsSUFBTyxnQ0FBOEIseUJBQ1AsZUFDbENILEVBQUFBLDJDQUFBQSxJQUFBLHdGQUFrRkEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxLQUFHLGFBQW1CLDBKQUEwSkgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxLQUFHLE1BQVksNENBQTRDSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsdUJBQXFDLHdEQUN6WkgsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLHVCQUFxQyx1QkFBdUJILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsS0FBRyxhQUFtQiwwQ0FBMENILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGVBQWVtSCxRQUFRLFVBQVEsZUFBeUIsOEVBQ3pQRixFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sY0FBWSxlQUVwQkEsRUFBQUEsMkNBQUFBLElBQUEsMENBQW9DQSxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxxQkFBcUJSLFFBQVEsVUFBUSxZQUFzQixnRkFBZ0ZGLEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLHVCQUF1QlIsUUFBUSxVQUFRLFFBQWtCLG1DQUFtQ0YsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssc0JBQXNCUixRQUFRLFVBQVEsU0FBbUIsTUFDM1dGLEVBQUFBLDJDQUFBQSxJQUFBLDhSQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSx3UEFDQUEsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLHNCQUFvQix1QkFFNUJBLEVBQUFBLDJDQUFBQSxJQUFBLHNEQUFnREEsRUFBQUEsMkNBQUFBLElBQUEsS0FBR0csV0FBVyxJQUMxRCxLQUFRLHlGQUNSLE9BQVUsU0FDVixJQUFPLGdDQUE4QixTQUN2QixLQUV0QixDQS9GU0wsV0FBVTVKLFlBQUEsYUFpR25CNEosV0FBV00sZ0JBQWlCLEVBRXJCLElBQU15MEMsT0FBUyxTQUFUQSxTQUFpQixNQUFNLElBQUlDLE1BQU0sa0JBQW9CLEVBRWxFRCxPQUFPOWlELFdBQWEsQ0FBRWdqRCxVQUFVLEdBRWhDLElBQU1DLGNBQWdCLENBQUUxL0MsTUFBTyxxQkFBc0IyL0MsZUFBZ0IsQ0FBQyxXQUVoRUMsa0JBQW9CLENBQUMsRUFFM0JGLGNBQWNqakQsV0FBYWlqRCxjQUFjampELFlBQWMsQ0FBQyxFQUN4RGlqRCxjQUFjampELFdBQVc4RyxLQUFJL0YsT0FBQW1ELE9BQUEsR0FDdkIrK0MsY0FBY2pqRCxXQUFXOEcsTUFBUSxDQUFDLEVBQUMsQ0FDdkM0RyxLQUFNLFNBQUFBLE9BQUEsT0FBTU8sRUFBQUEsMkNBQUFBLElBQUNtMUMsbURBQUFBLEdBQVUsQ0FBQ0Qsa0JBQW1CQSxrQkFBbUJFLHdCQUF5QkosZ0JBQWVoMUMsRUFBQUEsMkNBQUFBLElBQUNGLFdBQVUsTUFBZ0IsSUFHbkksMENBQTZCLElBQUFyTixvQkFBQSxVLG1qQ0N0SDdCLElBQU1vTixZQUFjLENBRXBCLEVBRUEsU0FBU0MsV0FBVXBGLE1BR2hCLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsMkNBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLDJDQUFBQSxJQUFDNDBDLG1EQUFBQSxHQUFJLENBQUN0L0MsTUFBTSxxQkFBcUI0SyxRQUFRLFVBQ3pDRixFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sc0JBQW9CLHVCQUU1QkEsRUFBQUEsMkNBQUFBLElBQUEsOEZBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLDhQQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxnS0FDQUEsRUFBQUEsMkNBQUFBLElBQUEsWUFBS0EsRUFBQUEsMkNBQUFBLElBQUEsUUFBTUcsV0FBVyxNQUNsQixVQUFhLGVBQWEsMEZBSTlCSCxFQUFBQSwyQ0FBQUEsSUFBQSxZQUFLQSxFQUFBQSwyQ0FBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsZUFBYSx3S0FROUJILEVBQUFBLDJDQUFBQSxJQUFBLG9DQUE4QkEsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFFBQXNCLDRHQUE0R0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGVBQTZCLCtDQUNqUEgsRUFBQUEsMkNBQUFBLElBQUEsWUFBS0EsRUFBQUEsMkNBQUFBLElBQUEsUUFBTUcsV0FBVyxNQUNsQixVQUFhLGVBQWEsNkZBSTlCSCxFQUFBQSwyQ0FBQUEsSUFBQSxZQUFLQSxFQUFBQSwyQ0FBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsZUFBYSx3SEFLOUJILEVBQUFBLDJDQUFBQSxJQUFBLFlBQUtBLEVBQUFBLDJDQUFBQSxJQUFBLFFBQU1HLFdBQVcsTUFDbEIsVUFBYSxlQUFhLHNJQUs5QkgsRUFBQUEsMkNBQUFBLElBQUEsZ0NBQTBCQSxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsVUFBd0IsU0FBU0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFNBQXVCLFFBQVFILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxRQUFzQixRQUFRSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsWUFBMEIsMFJBRTlQLENBL0NTTCxXQUFVNUosWUFBQSxhQWlEbkI0SixXQUFXTSxnQkFBaUIsRUFFckIsSUFBTXkwQyxPQUFTLFNBQVRBLFNBQWlCLE1BQU0sSUFBSUMsTUFBTSxrQkFBb0IsRUFFbEVELE9BQU85aUQsV0FBYSxDQUFFZ2pELFVBQVUsR0FFaEMsSUFBTUMsY0FBZ0IsQ0FBRTEvQyxNQUFPLHFCQUFzQjIvQyxlQUFnQixDQUFDLFdBRWhFQyxrQkFBb0IsQ0FBQyxFQUUzQkYsY0FBY2pqRCxXQUFhaWpELGNBQWNqakQsWUFBYyxDQUFDLEVBQ3hEaWpELGNBQWNqakQsV0FBVzhHLEtBQUkvRixPQUFBbUQsT0FBQSxHQUN2QisrQyxjQUFjampELFdBQVc4RyxNQUFRLENBQUMsRUFBQyxDQUN2QzRHLEtBQU0sU0FBQUEsT0FBQSxPQUFNTyxFQUFBQSwyQ0FBQUEsSUFBQ20xQyxtREFBQUEsR0FBVSxDQUFDRCxrQkFBbUJBLGtCQUFtQkUsd0JBQXlCSixnQkFBZWgxQyxFQUFBQSwyQ0FBQUEsSUFBQ0YsV0FBVSxNQUFnQixJQUduSSwwQ0FBNkIsSUFBQXJOLG9CQUFBLFUsMm1DQ3JFN0IsSUFBTW9OLFlBQWMsQ0FFcEIsRUFFQSxTQUFTQyxXQUFVcEYsTUFHaEIsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSwyQ0FBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsMkNBQUFBLElBQUM0MEMsbURBQUFBLEdBQUksQ0FBQ3QvQyxNQUFNLHNCQUFzQjRLLFFBQVEsVUFDMUNGLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxVQUFRLFdBRWhCQSxFQUFBQSwyQ0FBQUEsSUFBQSwwTEFDQUEsRUFBQUEsMkNBQUFBLElBQUEsMFBBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssb0NBQW9DUixRQUFRLFVBQVMsbUJBSTFFLENBbEJTSixXQUFVNUosWUFBQSxhQW9CbkI0SixXQUFXTSxnQkFBaUIsRUFFckIsSUFBTXkwQyxPQUFTLFNBQVRBLFNBQWlCLE1BQU0sSUFBSUMsTUFBTSxrQkFBb0IsRUFFbEVELE9BQU85aUQsV0FBYSxDQUFFZ2pELFVBQVUsR0FFaEMsSUFBTUMsY0FBZ0IsQ0FBRTEvQyxNQUFPLHNCQUF1QjIvQyxlQUFnQixDQUFDLFdBRWpFQyxrQkFBb0IsQ0FBQyxFQUUzQkYsY0FBY2pqRCxXQUFhaWpELGNBQWNqakQsWUFBYyxDQUFDLEVBQ3hEaWpELGNBQWNqakQsV0FBVzhHLEtBQUkvRixPQUFBbUQsT0FBQSxHQUN2QisrQyxjQUFjampELFdBQVc4RyxNQUFRLENBQUMsRUFBQyxDQUN2QzRHLEtBQU0sU0FBQUEsT0FBQSxPQUFNTyxFQUFBQSwyQ0FBQUEsSUFBQ20xQyxtREFBQUEsR0FBVSxDQUFDRCxrQkFBbUJBLGtCQUFtQkUsd0JBQXlCSixnQkFBZWgxQyxFQUFBQSwyQ0FBQUEsSUFBQ0YsV0FBVSxNQUFnQixJQUduSSwwQ0FBNkIsSUFBQXJOLG9CQUFBLFUsNm5DQ3hDN0IsSUFBTW9OLFlBQWMsQ0FFcEIsRUFFQSxTQUFTQyxXQUFVcEYsTUFHaEIsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSwyQ0FBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsMkNBQUFBLElBQUM0MEMsbURBQUFBLEdBQUksQ0FBQ3QvQyxNQUFNLG9DQUFvQzRLLFFBQVEsVUFDeERGLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxpQkFBZSxrQkFFdkJBLEVBQUFBLDJDQUFBQSxJQUFBLGlIQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxZQUFLQSxFQUFBQSwyQ0FBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsZUFBYSwyWEFpQjlCSCxFQUFBQSwyQ0FBQUEsSUFBQSxpQkFBV0EsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssNkJBQTZCM0gsTUFBTSxZQUFZbUgsUUFBUSxVQUFRLGFBQXVCLDBFQUNoSEYsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGFBQTJCLGdDQUNuREgsRUFBQUEsMkNBQUFBLElBQUEsMEJBQW9CQSxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyw2QkFBNkIzSCxNQUFNLGdCQUFnQm1ILFFBQVEsVUFBUSxlQUF5QixNQUFNRixFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyw2QkFBNkIzSCxNQUFNLGtCQUFrQm1ILFFBQVEsVUFBUSxpQkFBMkIsVUFBVUYsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssNkJBQTZCM0gsTUFBTSxnQkFBZ0JtSCxRQUFRLFVBQVEsZUFBeUIsZ0hBRW5XRixFQUFBQSwyQ0FBQUEsSUFBQSxZQUFLQSxFQUFBQSwyQ0FBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsZUFBYSwrSkFLOUJILEVBQUFBLDJDQUFBQSxJQUFBLDJGQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFBLEtBQUdHLFdBQVcsTUFBSSx1T0FFMkNILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLHVCQUF1Qm1ILFFBQVEsVUFBUSxxQkFBK0IsZ0JBR2hLRixFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFBLEtBQUdHLFdBQVcsTUFBSSw4TUFJcEJILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUEsS0FBR0csV0FBVyxNQUFJLDhEQUErREgsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFVBQXdCLCtGQUl2SUgsRUFBQUEsMkNBQUFBLElBQUEsNERBQXNEQSxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyw2QkFBNkIzSCxNQUFNLHVCQUF1Qm1ILFFBQVEsVUFBUSxxQkFBK0IsU0FBU0YsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssNkJBQTZCM0gsTUFBTSxlQUFlbUgsUUFBUSxVQUFRLGNBQXdCLE1BQzVSRixFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFBLEtBQUdHLFdBQVcsTUFBSSw2R0FDSEgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssNkJBQTZCM0gsTUFBTSx1QkFBdUJtSCxRQUFRLFVBQVEscUJBQStCLHVMQUl2SUYsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQSxLQUFHRyxXQUFXLE1BQUksT0FBUUgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssNkJBQTZCM0gsTUFBTSx1QkFBdUJtSCxRQUFRLFVBQVEscUJBQStCLG9CQUFvQkYsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssNkJBQTZCM0gsTUFBTSxlQUFlbUgsUUFBUSxVQUFRLGNBQXdCLDJHQUNoTkYsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGNBQTRCLGVBQ3ZISCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLEtBQUcsTUFBWSxxSkFDNkJILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyx3QkFBc0MsYUFDcEhILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxjQUE0QixTQUFTSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsd0JBQXNDLDBCQUEwQkgsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGNBQTRCLGlGQUlwTkgsRUFBQUEsMkNBQUFBLElBQUEsWUFBS0EsRUFBQUEsMkNBQUFBLElBQUEsUUFBTUcsV0FBVyxNQUNsQixVQUFhLGVBQWEscUhBS2xDLENBaEZTTCxXQUFVNUosWUFBQSxhQWtGbkI0SixXQUFXTSxnQkFBaUIsRUFFckIsSUFBTXkwQyxPQUFTLFNBQVRBLFNBQWlCLE1BQU0sSUFBSUMsTUFBTSxrQkFBb0IsRUFFbEVELE9BQU85aUQsV0FBYSxDQUFFZ2pELFVBQVUsR0FFaEMsSUFBTUMsY0FBZ0IsQ0FBRTEvQyxNQUFPLG9DQUFxQzIvQyxlQUFnQixDQUFDLFdBRS9FQyxrQkFBb0IsQ0FBQyxFQUUzQkYsY0FBY2pqRCxXQUFhaWpELGNBQWNqakQsWUFBYyxDQUFDLEVBQ3hEaWpELGNBQWNqakQsV0FBVzhHLEtBQUkvRixPQUFBbUQsT0FBQSxHQUN2QisrQyxjQUFjampELFdBQVc4RyxNQUFRLENBQUMsRUFBQyxDQUN2QzRHLEtBQU0sU0FBQUEsT0FBQSxPQUFNTyxFQUFBQSwyQ0FBQUEsSUFBQ20xQyxtREFBQUEsR0FBVSxDQUFDRCxrQkFBbUJBLGtCQUFtQkUsd0JBQXlCSixnQkFBZWgxQyxFQUFBQSwyQ0FBQUEsSUFBQ0YsV0FBVSxNQUFnQixJQUduSSwwQ0FBNkIsSUFBQXJOLG9CQUFBLFUsMG5DQ3RHN0IsSUFBTW9OLFlBQWMsQ0FFcEIsRUFFQSxTQUFTQyxXQUFVcEYsTUFHaEIsSUFGRHBELFdBQVVvRCxLQUFWcEQsV0FDR3lJLE0sZ2FBQUtqRixDQUFBSixLQUFBSyxXQUVSLE9BQU9pRixFQUFBQSwyQ0FBQUEsSUFMUyxVQUtDQyxTQUFBLEdBQUtKLFlBQWlCRSxNQUFLLENBQUV6SSxXQUFZQSxXQUFZNEksUUFBUSxlQUU1RUYsRUFBQUEsMkNBQUFBLElBQUM0MEMsbURBQUFBLEdBQUksQ0FBQ3QvQyxNQUFNLDRDQUE0QzRLLFFBQVEsVUFDaEVGLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSw0QkFBMEIsNkJBRWxDQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sZUFBYSxnQkFFckJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUkscURBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLDZCQUE2QjNILE1BQU0sZ0JBQWdCbUgsUUFBUSxVQUFTLGNBS3JGRixFQUFBQSwyQ0FBQUEsSUFBQSx1S0FBaUtBLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxTQUF1QixTQUFTSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsT0FBcUIsUUFBUUgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sU0FBU21ILFFBQVEsVUFBUSxVQUFvQixNQUMxVkYsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLGVBQWEsZ0JBRXJCQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLG9EQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyw2QkFBNkIzSCxNQUFNLGdCQUFnQm1ILFFBQVEsVUFBUyxjQUtyRkYsRUFBQUEsMkNBQUFBLElBQUEsaUVBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxxQkFBbUIsc0JBRTNCQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLDhDQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyw2QkFBNkIzSCxNQUFNLHVCQUF1Qm1ILFFBQVEsVUFBUyxjQUs1RkYsRUFBQUEsMkNBQUFBLElBQUEsbUxBQTZLQSxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxTQUFTbUgsUUFBUSxVQUFRLFVBQW9CLE1BQ3JQRixFQUFBQSwyQ0FBQUEsSUFBQSxVQUFHQSxFQUFBQSwyQ0FBQUEsSUFBQSxVQUFRRyxXQUFXLEtBQUcsY0FBd0IsdUJBQXVCSCxFQUFBQSwyQ0FBQUEsSUFBQSxVQUFRRyxXQUFXLEtBQUcsT0FBaUIsNEdBQy9HSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sdUJBQXFCLHdCQUU3QkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSw0QkFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssNkJBQTZCM0gsTUFBTSx5QkFBeUJtSCxRQUFRLFVBQVMsY0FLOUZGLEVBQUFBLDJDQUFBQSxJQUFBLDJDQUFxQ0EsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFNBQXVCLHlOQUN0RkgsRUFBQUEsMkNBQUFBLElBQUEsdUpBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxjQUFZLGVBRXBCQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGlEQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyw2QkFBNkIzSCxNQUFNLGVBQWVtSCxRQUFRLFVBQVMsY0FLcEZGLEVBQUFBLDJDQUFBQSxJQUFBLG1CQUFhQSxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsY0FBNEIsY0FBY0gsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxLQUFHLE1BQVksb0pBQW9KSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsd0JBQXNDLFlBQVlILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxjQUE0QixTQUFTSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsd0JBQXNDLDBCQUEwQkgsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGNBQTRCLDhFQUM5aEJILEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxxQkFBbUIsc0JBRTNCQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHdDQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxnQkFDNURILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssNkJBQTZCM0gsTUFBTSxxQkFBcUJtSCxRQUFRLFVBQVMsY0FLMUZGLEVBQUFBLDJDQUFBQSxJQUFBLHNFQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sYUFBVyxjQUVuQkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxhQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxVQUM1REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyw2QkFBNkIzSCxNQUFNLFlBQVltSCxRQUFRLFVBQVMsY0FLakZGLEVBQUFBLDJDQUFBQSxJQUFBLDJGQUFxRkEsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssNkJBQTZCM0gsTUFBTSxrQkFBa0JtSCxRQUFRLFVBQVEsaUJBQTJCLHlCQUF5QkYsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssNkJBQTZCM0gsTUFBTSxxQkFBcUJtSCxRQUFRLFVBQVEscUJBQStCLDZDQUMvVUYsRUFBQUEsMkNBQUFBLElBQUEsVUFBR0EsRUFBQUEsMkNBQUFBLElBQUEsVUFBUUcsV0FBVyxLQUFHLFNBQW1CLEtBQUtILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxhQUEyQixzRUFBc0VILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLDZCQUE2QjNILE1BQU0scUJBQXFCbUgsUUFBUSxVQUFRLHFCQUErQixhQUFhRixFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsU0FBdUIsTUFDOVZILEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxpQkFBZSxrQkFFdkJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksNkNBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLDZCQUE2QjNILE1BQU0sa0JBQWtCbUgsUUFBUSxVQUFTLGNBS3ZGRixFQUFBQSwyQ0FBQUEsSUFBQSx3SEFBa0hBLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxTQUF1QixTQUFTSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsT0FBcUIsUUFBUUgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sU0FBU21ILFFBQVEsVUFBUSxVQUFvQixNQUMzU0YsRUFBQUEsMkNBQUFBLElBQUEsaUJBQVdBLEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLDZCQUE2QjNILE1BQU0sWUFBWW1ILFFBQVEsVUFBUSxhQUF1QixrQkFBa0JGLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxRQUFzQixzQ0FDaExILEVBQUFBLDJDQUFBQSxJQUFBLFVBQUdBLEVBQUFBLDJDQUFBQSxJQUFBLFVBQVFHLFdBQVcsS0FBRyxTQUFtQixLQUFLSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsYUFBMkIsc0VBQXNFSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyw2QkFBNkIzSCxNQUFNLHFCQUFxQm1ILFFBQVEsVUFBUSxxQkFBK0IsYUFBYUYsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFNBQXVCLE1BQzlWSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0scUJBQW1CLHNCQUUzQkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSx3Q0FDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksZ0JBQzVESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLDZCQUE2QjNILE1BQU0scUJBQXFCbUgsUUFBUSxVQUFTLGNBSzFGRixFQUFBQSwyQ0FBQUEsSUFBQSxrREFDQUEsRUFBQUEsMkNBQUFBLElBQUEsVUFBR0EsRUFBQUEsMkNBQUFBLElBQUEsVUFBUUcsV0FBVyxLQUFHLFNBQW1CLEtBQUtILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxhQUEyQixzRUFBc0VILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLDZCQUE2QjNILE1BQU0scUJBQXFCbUgsUUFBUSxVQUFRLHFCQUErQixhQUFhRixFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsU0FBdUIsS0FFbFcsQ0FoSVNMLFdBQVU1SixZQUFBLGFBa0luQjRKLFdBQVdNLGdCQUFpQixFQUVyQixJQUFNeTBDLE9BQVMsU0FBVEEsU0FBaUIsTUFBTSxJQUFJQyxNQUFNLGtCQUFvQixFQUVsRUQsT0FBTzlpRCxXQUFhLENBQUVnakQsVUFBVSxHQUVoQyxJQUFNQyxjQUFnQixDQUFFMS9DLE1BQU8sNENBQTZDMi9DLGVBQWdCLENBQUMsV0FFdkZDLGtCQUFvQixDQUFDLEVBRTNCRixjQUFjampELFdBQWFpakQsY0FBY2pqRCxZQUFjLENBQUMsRUFDeERpakQsY0FBY2pqRCxXQUFXOEcsS0FBSS9GLE9BQUFtRCxPQUFBLEdBQ3ZCKytDLGNBQWNqakQsV0FBVzhHLE1BQVEsQ0FBQyxFQUFDLENBQ3ZDNEcsS0FBTSxTQUFBQSxPQUFBLE9BQU1PLEVBQUFBLDJDQUFBQSxJQUFDbTFDLG1EQUFBQSxHQUFVLENBQUNELGtCQUFtQkEsa0JBQW1CRSx3QkFBeUJKLGdCQUFlaDFDLEVBQUFBLDJDQUFBQSxJQUFDRixXQUFVLE1BQWdCLElBR25JLDBDQUE2QixJQUFBck4sb0JBQUEsVSwrbUNDdEo3QixJQUFNb04sWUFBYyxDQUVwQixFQUVBLFNBQVNDLFdBQVVwRixNQUdoQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLDJDQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSwyQ0FBQUEsSUFBQzQwQyxtREFBQUEsR0FBSSxDQUFDdC9DLE1BQU0seUJBQXlCNEssUUFBUSxVQUM3Q0YsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLGlCQUFlLGtCQUV2QkEsRUFBQUEsMkNBQUFBLElBQUEsaUJBQVdBLEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLG9DQUFvQ1IsUUFBUSxVQUFRLDBCQUFvQyw4QkFBOEJGLEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLHNCQUFzQlIsUUFBUSxVQUFRLFVBQW9CLGlDQUV6TixDQVpTSixXQUFVNUosWUFBQSxhQWNuQjRKLFdBQVdNLGdCQUFpQixFQUVyQixJQUFNeTBDLE9BQVMsU0FBVEEsU0FBaUIsTUFBTSxJQUFJQyxNQUFNLGtCQUFvQixFQUVsRUQsT0FBTzlpRCxXQUFhLENBQUVnakQsVUFBVSxHQUVoQyxJQUFNQyxjQUFnQixDQUFFMS9DLE1BQU8seUJBQTBCMi9DLGVBQWdCLENBQUMsV0FFcEVDLGtCQUFvQixDQUFDLEVBRTNCRixjQUFjampELFdBQWFpakQsY0FBY2pqRCxZQUFjLENBQUMsRUFDeERpakQsY0FBY2pqRCxXQUFXOEcsS0FBSS9GLE9BQUFtRCxPQUFBLEdBQ3ZCKytDLGNBQWNqakQsV0FBVzhHLE1BQVEsQ0FBQyxFQUFDLENBQ3ZDNEcsS0FBTSxTQUFBQSxPQUFBLE9BQU1PLEVBQUFBLDJDQUFBQSxJQUFDbTFDLG1EQUFBQSxHQUFVLENBQUNELGtCQUFtQkEsa0JBQW1CRSx3QkFBeUJKLGdCQUFlaDFDLEVBQUFBLDJDQUFBQSxJQUFDRixXQUFVLE1BQWdCLElBR25JLDBDQUE2QixJQUFBck4sb0JBQUEsVSwwakNDbEM3QixJQUFNb04sWUFBYyxDQUVwQixFQUVBLFNBQVNDLFdBQVVwRixNQUdoQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLDJDQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSwyQ0FBQUEsSUFBQzQwQyxtREFBQUEsR0FBSSxDQUFDdC9DLE1BQU0sd0JBQXdCNEssUUFBUSxVQUM1Q0YsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLGtCQUFnQixtQkFFeEJBLEVBQUFBLDJDQUFBQSxJQUFBLDZPQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxZQUFLQSxFQUFBQSwyQ0FBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsaUJBQWUsa0lBSWhDSCxFQUFBQSwyQ0FBQUEsSUFBQSw0Q0FBc0NBLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxhQUEyQiwrTkFFL0YsQ0FsQlNMLFdBQVU1SixZQUFBLGFBb0JuQjRKLFdBQVdNLGdCQUFpQixFQUVyQixJQUFNeTBDLE9BQVMsU0FBVEEsU0FBaUIsTUFBTSxJQUFJQyxNQUFNLGtCQUFvQixFQUVsRUQsT0FBTzlpRCxXQUFhLENBQUVnakQsVUFBVSxHQUVoQyxJQUFNQyxjQUFnQixDQUFFMS9DLE1BQU8sd0JBQXlCMi9DLGVBQWdCLENBQUMsV0FFbkVDLGtCQUFvQixDQUFDLEVBRTNCRixjQUFjampELFdBQWFpakQsY0FBY2pqRCxZQUFjLENBQUMsRUFDeERpakQsY0FBY2pqRCxXQUFXOEcsS0FBSS9GLE9BQUFtRCxPQUFBLEdBQ3ZCKytDLGNBQWNqakQsV0FBVzhHLE1BQVEsQ0FBQyxFQUFDLENBQ3ZDNEcsS0FBTSxTQUFBQSxPQUFBLE9BQU1PLEVBQUFBLDJDQUFBQSxJQUFDbTFDLG1EQUFBQSxHQUFVLENBQUNELGtCQUFtQkEsa0JBQW1CRSx3QkFBeUJKLGdCQUFlaDFDLEVBQUFBLDJDQUFBQSxJQUFDRixXQUFVLE1BQWdCLElBR25JLDBDQUE2QixJQUFBck4sb0JBQUEsVSwrbUNDeEM3QixJQUFNb04sWUFBYyxDQUVwQixFQUVBLFNBQVNDLFdBQVVwRixNQUdoQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLDJDQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSwyQ0FBQUEsSUFBQzQwQyxtREFBQUEsR0FBSSxDQUFDdC9DLE1BQU0sK0JBQStCNEssUUFBUSxVQUNuREYsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLDBCQUF3QiwyQkFFaENBLEVBQUFBLDJDQUFBQSxJQUFBLDZEQUF1REEsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFFBQXNCLDJCQUEyQkgsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFFBQXNCLHdEQUNsTEgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssV0FBVzNILE1BQU0sWUFBWW1ILFFBQVEsVUFBUyxvQkFHM0RGLEVBQUFBLDJDQUFBQSxJQUFBLHFDQUErQkEsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFFBQXNCLCtGQUMvRUgsRUFBQUEsMkNBQUFBLElBQUEsWUFBS0EsRUFBQUEsMkNBQUFBLElBQUEsUUFBTUcsV0FBVyxNQUNsQixVQUFhLGVBQWEsc3ZEQTBFOUJILEVBQUFBLDJDQUFBQSxJQUFBLDJJQUFxSUEsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFFBQXNCLGlFQUNyTEgsRUFBQUEsMkNBQUFBLElBQUEsWUFBS0EsRUFBQUEsMkNBQUFBLElBQUEsUUFBTUcsV0FBVyxNQUNsQixVQUFhLGVBQWEseVFBTzlCSCxFQUFBQSwyQ0FBQUEsSUFBQSxzQ0FBZ0NBLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxRQUFzQix5QkFBeUJILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLFFBQVFtSCxRQUFRLFVBQVEsU0FBbUIsV0FDL0tGLEVBQUFBLDJDQUFBQSxJQUFBLFlBQUtBLEVBQUFBLDJDQUFBQSxJQUFBLFFBQU1HLFdBQVcsTUFDbEIsVUFBYSxlQUFhLDRRQWVsQyxDQXBIU0wsV0FBVTVKLFlBQUEsYUFzSG5CNEosV0FBV00sZ0JBQWlCLEVBRXJCLElBQU15MEMsT0FBUyxTQUFUQSxTQUFpQixNQUFNLElBQUlDLE1BQU0sa0JBQW9CLEVBRWxFRCxPQUFPOWlELFdBQWEsQ0FBRWdqRCxVQUFVLEdBRWhDLElBQU1DLGNBQWdCLENBQUUxL0MsTUFBTywrQkFBZ0MyL0MsZUFBZ0IsQ0FBQyxXQUUxRUMsa0JBQW9CLENBQUMsRUFFM0JGLGNBQWNqakQsV0FBYWlqRCxjQUFjampELFlBQWMsQ0FBQyxFQUN4RGlqRCxjQUFjampELFdBQVc4RyxLQUFJL0YsT0FBQW1ELE9BQUEsR0FDdkIrK0MsY0FBY2pqRCxXQUFXOEcsTUFBUSxDQUFDLEVBQUMsQ0FDdkM0RyxLQUFNLFNBQUFBLE9BQUEsT0FBTU8sRUFBQUEsMkNBQUFBLElBQUNtMUMsbURBQUFBLEdBQVUsQ0FBQ0Qsa0JBQW1CQSxrQkFBbUJFLHdCQUF5QkosZ0JBQWVoMUMsRUFBQUEsMkNBQUFBLElBQUNGLFdBQVUsTUFBZ0IsSUFHbkksMENBQTZCLElBQUFyTixvQkFBQSxVLDBtQ0MxSTdCLElBQU1vTixZQUFjLENBRXBCLEVBRUEsU0FBU0MsV0FBVXBGLE1BR2hCLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsMkNBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLDJDQUFBQSxJQUFDNDBDLG1EQUFBQSxHQUFJLENBQUN0L0MsTUFBTSw2QkFBNkI0SyxRQUFRLFVBQ2pERixFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sdUJBQXFCLHdCQUU3QkEsRUFBQUEsMkNBQUFBLElBQUEsaUtBQTJKQSxFQUFBQSwyQ0FBQUEsSUFBQSxVQUFRRyxXQUFXLEtBQUcsV0FBcUIsYUFBYUgsRUFBQUEsMkNBQUFBLElBQUEsS0FBR0csV0FBVyxJQUM3TixLQUFRLHdGQUNSLE9BQVUsU0FDVixJQUFPLGdDQUE4QixRQUN4QixvQkFBb0JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGlCQUFpQm1ILFFBQVEsVUFBUSxTQUFtQixTQUFTRixFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsU0FBdUIsa0JBQzlLSCxFQUFBQSwyQ0FBQUEsSUFBQSxtQkFBYUEsRUFBQUEsMkNBQUFBLElBQUEsVUFBUUcsV0FBVyxLQUFHLHVCQUFpQyw0Q0FBNENILEVBQUFBLDJDQUFBQSxJQUFBLFVBQVFHLFdBQVcsS0FBRyxtQkFBb0JILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsVUFBUSxRQUFzQixXQUFvQixNQUNuT0gsRUFBQUEsMkNBQUFBLElBQUEsa0NBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLFlBQUtBLEVBQUFBLDJDQUFBQSxJQUFBLFFBQU1HLFdBQVcsTUFDbEIsVUFBYSxlQUFhLGtqQkF5QjlCSCxFQUFBQSwyQ0FBQUEsSUFBQSxxREFBK0NBLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxRQUFzQiwrSkFBK0pILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxRQUFzQix1SkFBdUpILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLG1CQUFtQlIsUUFBUSxVQUFRLG1CQUE2QixnQkFBZ0JGLEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGFBQWFtSCxRQUFRLFVBQVEsYUFBdUIseUNBQ2puQkYsRUFBQUEsMkNBQUFBLElBQUEsVUFBR0EsRUFBQUEsMkNBQUFBLElBQUEsVUFBUUcsV0FBVyxLQUFHLGNBQXdCLHNKQUVyRCxDQTlDU0wsV0FBVTVKLFlBQUEsYUFnRG5CNEosV0FBV00sZ0JBQWlCLEVBRXJCLElBQU15MEMsT0FBUyxTQUFUQSxTQUFpQixNQUFNLElBQUlDLE1BQU0sa0JBQW9CLEVBRWxFRCxPQUFPOWlELFdBQWEsQ0FBRWdqRCxVQUFVLEdBRWhDLElBQU1DLGNBQWdCLENBQUUxL0MsTUFBTyw2QkFBOEIyL0MsZUFBZ0IsQ0FBQyxXQUV4RUMsa0JBQW9CLENBQUMsRUFFM0JGLGNBQWNqakQsV0FBYWlqRCxjQUFjampELFlBQWMsQ0FBQyxFQUN4RGlqRCxjQUFjampELFdBQVc4RyxLQUFJL0YsT0FBQW1ELE9BQUEsR0FDdkIrK0MsY0FBY2pqRCxXQUFXOEcsTUFBUSxDQUFDLEVBQUMsQ0FDdkM0RyxLQUFNLFNBQUFBLE9BQUEsT0FBTU8sRUFBQUEsMkNBQUFBLElBQUNtMUMsbURBQUFBLEdBQVUsQ0FBQ0Qsa0JBQW1CQSxrQkFBbUJFLHdCQUF5QkosZ0JBQWVoMUMsRUFBQUEsMkNBQUFBLElBQUNGLFdBQVUsTUFBZ0IsSUFHbkksMENBQTZCLElBQUFyTixvQkFBQSxVLDgrQkNyRTdCLElBQU1vTixZQUFjLENBRXBCLEVBRUEsU0FBU0MsV0FBVXBGLE1BR2hCLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsMkNBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLDJDQUFBQSxJQUFDNDBDLG1EQUFBQSxHQUFJLENBQUN0L0MsTUFBTSxtQkFBbUI0SyxRQUFRLFVBQ3ZDRixFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sMkJBQXlCLDRCQUVqQ0EsRUFBQUEsMkNBQUFBLElBQUEsK0JBQXlCQSxFQUFBQSwyQ0FBQUEsSUFBQSxVQUFRRyxXQUFXLEtBQUcsUUFBa0IsNkJBQTZCSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsV0FBeUIsZ05BQWdOSCxFQUFBQSwyQ0FBQUEsSUFBQSxVQUFRRyxXQUFXLEtBQUcsUUFBa0IsdURBQXVESCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsVUFBd0IsbUNBQW1DSCxFQUFBQSwyQ0FBQUEsSUFBQSxLQUFHRyxXQUFXLElBQy9oQixLQUFRLGlDQUNSLE9BQVUsU0FDVixJQUFPLGdDQUE4QixtQkFDYiwrRkFDNUJILEVBQUFBLDJDQUFBQSxJQUFBLGdGQUEwRUEsRUFBQUEsMkNBQUFBLElBQUEsS0FBR0csV0FBVyxJQUNwRixLQUFRLHlFQUNSLE9BQVUsU0FDVixJQUFPLGdDQUE4QixvQ0FDSSxvQkFBb0JILEVBQUFBLDJDQUFBQSxJQUFBLFVBQVFHLFdBQVcsS0FBRywyQkFBcUMsTUFDNUhILEVBQUFBLDJDQUFBQSxJQUFBLFlBQUtBLEVBQUFBLDJDQUFBQSxJQUFBLFFBQU1HLFdBQVcsTUFDbEIsVUFBYSxnQkFBYyxvcUJBdUIvQkgsRUFBQUEsMkNBQUFBLElBQUEsaUJBQVdBLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxtQkFBaUMsMkhBQTJISCxFQUFBQSwyQ0FBQUEsSUFBQSxLQUFHRyxXQUFXLElBQzNNLEtBQVEseUVBQ1IsT0FBVSxTQUNWLElBQU8sZ0NBQThCLHNDQUNNLHlNQUF5TUgsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGFBQTJCLHdFQUM3U0gsRUFBQUEsMkNBQUFBLElBQUEsVUFBR0EsRUFBQUEsMkNBQUFBLElBQUEsVUFBUUcsV0FBVyxLQUFHLFNBQW1CLFNBQVNILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxrQkFBZ0MsU0FBU0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGtCQUFnQyxzR0FFdEwsQ0FuRFNMLFdBQVU1SixZQUFBLGFBcURuQjRKLFdBQVdNLGdCQUFpQixFQUVyQixJQUFNeTBDLE9BQVMsU0FBVEEsU0FBaUIsTUFBTSxJQUFJQyxNQUFNLGtCQUFvQixFQUVsRUQsT0FBTzlpRCxXQUFhLENBQUVnakQsVUFBVSxHQUVoQyxJQUFNQyxjQUFnQixDQUFFMS9DLE1BQU8sbUJBQW9CMi9DLGVBQWdCLENBQUMsV0FFOURDLGtCQUFvQixDQUFDLEVBRTNCRixjQUFjampELFdBQWFpakQsY0FBY2pqRCxZQUFjLENBQUMsRUFDeERpakQsY0FBY2pqRCxXQUFXOEcsS0FBSS9GLE9BQUFtRCxPQUFBLEdBQ3ZCKytDLGNBQWNqakQsV0FBVzhHLE1BQVEsQ0FBQyxFQUFDLENBQ3ZDNEcsS0FBTSxTQUFBQSxPQUFBLE9BQU1PLEVBQUFBLDJDQUFBQSxJQUFDbTFDLG1EQUFBQSxHQUFVLENBQUNELGtCQUFtQkEsa0JBQW1CRSx3QkFBeUJKLGdCQUFlaDFDLEVBQUFBLDJDQUFBQSxJQUFDRixXQUFVLE1BQWdCLElBR25JLDBDQUE2QixJQUFBck4sb0JBQUEsVSw4bUNDeEU3QixJQUFNb04sWUFBYyxDQUVwQixFQUVBLFNBQVNDLFdBQVVwRixNQUdoQixJQUZEcEQsV0FBVW9ELEtBQVZwRCxXQUNHeUksTSxnYUFBS2pGLENBQUFKLEtBQUFLLFdBRVIsT0FBT2lGLEVBQUFBLDJDQUFBQSxJQUxTLFVBS0NDLFNBQUEsR0FBS0osWUFBaUJFLE1BQUssQ0FBRXpJLFdBQVlBLFdBQVk0SSxRQUFRLGVBRTVFRixFQUFBQSwyQ0FBQUEsSUFBQzQwQyxtREFBQUEsR0FBSSxDQUFDdC9DLE1BQU0sb0JBQW9CNEssUUFBUSxVQUN4Q0YsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLHVCQUFxQix5QkFFN0JBLEVBQUFBLDJDQUFBQSxJQUFBLHdGQUFrRkEsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sWUFBWW1ILFFBQVEsVUFBUSxhQUF1QixlQUFlRixFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsYUFBMkIseUdBQ3BPSCxFQUFBQSwyQ0FBQUEsSUFBQSxxQkFBZUEsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGFBQTJCLHdEQUF3REgsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGFBQTJCLGtDQUFrQ0gsRUFBQUEsMkNBQUFBLElBQUEsS0FBR0csV0FBVyxJQUM3TixLQUFRLHdCQUNSLE9BQVUsU0FDVixJQUFPLGdDQUE4QixVQUN0QixTQUFTSCxFQUFBQSwyQ0FBQUEsSUFBQSxLQUFHRyxXQUFXLElBQ3RDLEtBQVEsb0NBQ1IsT0FBVSxTQUNWLElBQU8sZ0NBQThCLFNBQ3ZCLDRIQUE0SEgsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGFBQTJCLHVHQUNoTUgsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGFBQTJCLDJDQUEyQ0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGlCQUErQix5R0FDNUpILEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FBS0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHVEQUMvQ0gsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUFLSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksMENBQy9DSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQUtILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxnRUFDL0NILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FBS0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHVEQUMvQ0gsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUFLSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksaURBQy9DSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQUtILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSwyQ0FDL0NILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FBS0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGdEQUMvQ0gsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUFLSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksd0NBQy9DSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQUtILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSwrQ0FBNkQsTUFDNUdILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FBS0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLG9CQUMvQ0gsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUFLSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksa0RBQy9DSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQUtILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxrREFDL0NILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FBS0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLDZFQUMvQ0gsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUFLSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksNENBQy9DSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQUtILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxpREFDL0NILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FBS0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGdEQUMvQ0gsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUFLSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksaURBQy9DSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQUtILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSw2RkFDL0NILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FBS0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHFFQUMvQ0gsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUFLSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksbURBQy9DSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQUtILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSx1Q0FDL0NILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FBS0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGdEQUMvQ0gsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUFLSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksaURBQy9DSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQUtILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSx5Q0FDL0NILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FBS0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHlDQUMvQ0gsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUFLSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUkseUNBQy9DSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQUtILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxrQ0FDL0NILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FBS0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGlEQUMvQ0gsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUFLSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksNkRBQy9DSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQUtILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSx3SEFDL0NILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FBS0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLDZEQUMvQ0gsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUFLSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksNkNBQy9DSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQUtILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxrQ0FBZ0QsZUFBZUgsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGlCQUErQixNQUN4S0gsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUFLSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksNENBRWpESCxFQUFBQSwyQ0FBQUEsSUFBQSxxSUFBK0hBLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxhQUEyQixrRkFBa0ZILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxpQkFBK0Isc0RBQXNESCxFQUFBQSwyQ0FBQUEsSUFBQSxLQUFHRyxXQUFXLElBQy9YLEtBQVEsZ0RBQ1IsT0FBVSxTQUNWLElBQU8sZ0NBQThCLG1CQUNiLGNBQzVCSCxFQUFBQSwyQ0FBQUEsSUFBQSxzREFBZ0RBLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxhQUEyQix3QkFBd0JILEVBQUFBLDJDQUFBQSxJQUFBLEtBQUdHLFdBQVcsSUFDdkksS0FBUSwyRUFDUixPQUFVLFNBQ1YsSUFBTyxnQ0FBOEIsb0NBQ0ksK0JBQStCSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsYUFBMkIsdUNBQXVDSCxFQUFBQSwyQ0FBQUEsSUFBQSxLQUFHRyxXQUFXLElBQ2xMLEtBQVEsb0JBQ1IsT0FBVSxTQUNWLElBQU8sZ0NBQThCLE9BQ3pCLGlEQUFpREgsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLDZCQUEyQyxLQUUxSSxDQXhFU0wsV0FBVTVKLFlBQUEsYUEwRW5CNEosV0FBV00sZ0JBQWlCLEVBRXJCLElBQU15MEMsT0FBUyxTQUFUQSxTQUFpQixNQUFNLElBQUlDLE1BQU0sa0JBQW9CLEVBRWxFRCxPQUFPOWlELFdBQWEsQ0FBRWdqRCxVQUFVLEdBRWhDLElBQU1DLGNBQWdCLENBQUUxL0MsTUFBTyxvQkFBcUIyL0MsZUFBZ0IsQ0FBQyxXQUUvREMsa0JBQW9CLENBQUMsRUFFM0JGLGNBQWNqakQsV0FBYWlqRCxjQUFjampELFlBQWMsQ0FBQyxFQUN4RGlqRCxjQUFjampELFdBQVc4RyxLQUFJL0YsT0FBQW1ELE9BQUEsR0FDdkIrK0MsY0FBY2pqRCxXQUFXOEcsTUFBUSxDQUFDLEVBQUMsQ0FDdkM0RyxLQUFNLFNBQUFBLE9BQUEsT0FBTU8sRUFBQUEsMkNBQUFBLElBQUNtMUMsbURBQUFBLEdBQVUsQ0FBQ0Qsa0JBQW1CQSxrQkFBbUJFLHdCQUF5QkosZ0JBQWVoMUMsRUFBQUEsMkNBQUFBLElBQUNGLFdBQVUsTUFBZ0IsSUFHbkksMENBQTZCLElBQUFyTixvQkFBQSxVLHVtQ0M5RjdCLElBQU1vTixZQUFjLENBRXBCLEVBRUEsU0FBU0MsV0FBVXBGLE1BR2hCLElBRkRwRCxXQUFVb0QsS0FBVnBELFdBQ0d5SSxNLGdhQUFLakYsQ0FBQUosS0FBQUssV0FFUixPQUFPaUYsRUFBQUEsMkNBQUFBLElBTFMsVUFLQ0MsU0FBQSxHQUFLSixZQUFpQkUsTUFBSyxDQUFFekksV0FBWUEsV0FBWTRJLFFBQVEsZUFFNUVGLEVBQUFBLDJDQUFBQSxJQUFDNDBDLG1EQUFBQSxHQUFJLENBQUN0L0MsTUFBTSx1QkFBdUI0SyxRQUFRLFVBQzNDRixFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sYUFBVyxjQUVuQkEsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLGFBQVcsY0FFbkJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksNkJBQTJDLEtBQUtILEVBQUFBLDJDQUFBQSxJQUFBLFVBQVFHLFdBQVcsTUFBSSxjQUNoSUgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxZQUFZbUgsUUFBUSxVQUFTLGNBSzVERixFQUFBQSwyQ0FBQUEsSUFBQSxnRkFBMEVBLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxVQUF3QixTQUFTSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsYUFDL0pILEVBQUFBLDJDQUFBQSxJQUFBLFlBQUtBLEVBQUFBLDJDQUFBQSxJQUFBLFFBQU1HLFdBQVcsTUFDbEIsVUFBYSxlQUFhLGdMQU85QkgsRUFBQUEsMkNBQUFBLElBQUEsWUFBS0EsRUFBQUEsMkNBQUFBLElBQUEsUUFBTUcsV0FBVyxNQUNsQixVQUFhLGVBQWEsa1RBWTlCSCxFQUFBQSwyQ0FBQUEsSUFBQSxZQUFLQSxFQUFBQSwyQ0FBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsZUFBYSxvdkJBZ0I5QkgsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLGdCQUFjLGlCQUV0QkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxZQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxnQkFBZ0JtSCxRQUFRLFVBQVMsY0FLaEVGLEVBQUFBLDJDQUFBQSxJQUFBLDJDQUFxQ0EsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFNBQXVCLE1BQ3RGSCxFQUFBQSwyQ0FBQUEsSUFBQSxVQUFHQSxFQUFBQSwyQ0FBQUEsSUFBQSxVQUFRRyxXQUFXLEtBQUcsU0FBbUIsd0JBQXdCSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsYUFBMkIsTUFDekhILEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxVQUFRLFdBRWhCQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHlCQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxzQkFDNURILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sVUFBVW1ILFFBQVEsVUFBUyxjQUsxREYsRUFBQUEsMkNBQUFBLElBQUEsaUZBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLGtLQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxpR0FBMkZBLEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGlCQUFpQm1ILFFBQVEsVUFBUSxpQkFBMkIsU0FBU0YsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sZUFBZW1ILFFBQVEsVUFBUSxlQUF5QixpQkFDOVFGLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxlQUFhLGdCQUVyQkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxzQkFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksZ0JBQzVESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGVBQWVtSCxRQUFRLFVBQVMsY0FLL0RGLEVBQUFBLDJDQUFBQSxJQUFBLDhCQUF3QkEsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFFBQXNCLGlGQUFpRkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sVUFBVW1ILFFBQVEsVUFBUSxVQUFvQixNQUNsT0YsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLFFBQU0sU0FFZEEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxzQkFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksZ0JBQzVESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksbUJBQW9CSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxjQUFjbUgsUUFBUSxVQUFRLGdCQUNoR0YsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxPQUFPbUgsUUFBUSxVQUFTLGNBS3ZERixFQUFBQSwyQ0FBQUEsSUFBQSw0RkFDQ0EsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFFBQXNCLG1DQUFtQ0gsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sVUFBVW1ILFFBQVEsVUFBUSxVQUFvQixtREFFN0pGLEVBQUFBLDJDQUFBQSxJQUFBLHFEQUErQ0EsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sY0FBY21ILFFBQVEsVUFBUSxnQkFDeEdGLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxjQUFZLGVBRXBCQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGNBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksY0FBZUgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sT0FBT21ILFFBQVEsVUFBUSxVQUNwRkYsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxtQ0FDNURILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sY0FBY21ILFFBQVEsVUFBUyxjQUs5REYsRUFBQUEsMkNBQUFBLElBQUEscUNBQStCQSxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsUUFBc0IsOERBQThESCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxPQUFPbUgsUUFBUSxVQUFRLFFBQWtCLGlCQUNqTkYsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLGVBQWEsZ0JBRXJCQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLFlBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksYUFBY0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLG1EQUM1REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxlQUFlbUgsUUFBUSxVQUFTLGNBSy9ERixFQUFBQSwyQ0FBQUEsSUFBQSx5QkFBbUJBLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxRQUFzQiwrRUFDbkVILEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxRQUFNLFNBRWRBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksWUFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksbURBQzVESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksbUJBQW9CSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxVQUFVbUgsUUFBUSxVQUFRLFlBQzVGRixFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLE9BQU9tSCxRQUFRLFVBQVMsY0FLdkRGLEVBQUFBLDJDQUFBQSxJQUFBLHdGQUNDQSxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsUUFBc0IsaURBQ2pESCxFQUFBQSwyQ0FBQUEsSUFBQSxxREFBK0NBLEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLFVBQVVtSCxRQUFRLFVBQVEsWUFDcEdGLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxVQUFRLFdBRWhCQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUkscUJBQ25CSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksY0FBZUgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sT0FBT21ILFFBQVEsVUFBUSxVQUNwRkYsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxtQ0FDNURILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sVUFBVW1ILFFBQVEsVUFBUyxjQUsxREYsRUFBQUEsMkNBQUFBLElBQUEscUNBQStCQSxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsUUFBc0IsOERBQThESCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxPQUFPbUgsUUFBUSxVQUFRLFFBQWtCLGlCQUNqTkYsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLFVBQVEsV0FFaEJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksb0JBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksYUFBY0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLFFBQzVESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLFNBQVNtSCxRQUFRLFVBQVMsY0FLekRGLEVBQUFBLDJDQUFBQSxJQUFBLHFMQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksZUFDbkJILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUNuQkgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQ25CSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksMENBQ25CSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksOENBRXJCSCxFQUFBQSwyQ0FBQUEsSUFBQSx3TEFDQUEsRUFBQUEsMkNBQUFBLElBQUEsWUFBS0EsRUFBQUEsMkNBQUFBLElBQUEsUUFBTUcsV0FBVyxNQUNsQixVQUFhLGVBQWEseUdBUzlCSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sb0JBQWtCLHFCQUUxQkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSw4QkFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksUUFDNURILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sb0JBQW9CbUgsUUFBUSxVQUFTLGNBS3BFRixFQUFBQSwyQ0FBQUEsSUFBQSxvSEFBOEdBLEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLFNBQVNtSCxRQUFRLFVBQVEsVUFBb0IsZ1FBQ3RMRixFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksZUFDbkJILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxjQUVyQkgsRUFBQUEsMkNBQUFBLElBQUEsd0xBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLFlBQUtBLEVBQUFBLDJDQUFBQSxJQUFBLFFBQU1HLFdBQVcsTUFDbEIsVUFBYSxlQUFhLDBEQVk5QkgsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLGlCQUFlLGtCQUV2QkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxpREFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxxQkFDbkJILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0saUJBQWlCbUgsUUFBUSxVQUFTLGNBS2pFRixFQUFBQSwyQ0FBQUEsSUFBQSxrR0FBNEZBLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxjQUE0QixZQUNsSkgsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLG1CQUFpQixvQkFFekJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksaURBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUkscUJBQ25CSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLG1CQUFtQm1ILFFBQVEsVUFBUyxjQUtuRUYsRUFBQUEsMkNBQUFBLElBQUEsb0dBQThGQSxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsY0FBNEIseUNBQ3BKSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0saUJBQWUsa0JBRXZCQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLCtDQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLHFCQUNuQkgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxpQkFBaUJtSCxRQUFRLFVBQVMsY0FLakVGLEVBQUFBLDJDQUFBQSxJQUFBLDRFQUFzRUEsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFFBQXNCLGFBQ3RISCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sZUFBYSxnQkFFckJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksK0NBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksbUJBQ25CSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGVBQWVtSCxRQUFRLFVBQVMsY0FLL0RGLEVBQUFBLDJDQUFBQSxJQUFBLDBFQUFvRUEsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFFBQXNCLGFBQ3BISCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sa0JBQWdCLG1CQUV4QkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxrREFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxzQkFDbkJILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sbUJBQW1CbUgsUUFBUSxVQUFTLGNBS25FRixFQUFBQSwyQ0FBQUEsSUFBQSxxSEFBK0dBLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxXQUF5QixZQUNsS0gsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLGlCQUFlLGtCQUV2QkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxZQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxjQUM1REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxtQkFBbUJtSCxRQUFRLFVBQVMsY0FLbkVGLEVBQUFBLDJDQUFBQSxJQUFBLGtJQUE0SEEsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFlBQTBCLDBDQUNoTEgsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLGFBQVcsY0FFbkJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksdUJBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLFlBQVltSCxRQUFRLFVBQVMsY0FLNURGLEVBQUFBLDJDQUFBQSxJQUFBLHFNQUErTEEsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sdUJBQXVCbUgsUUFBUSxVQUFRLHNCQUFnQyxzREFBc0RGLEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLDBCQUEwQm1ILFFBQVEsVUFBUSx5QkFBbUMsV0FDL2JGLEVBQUFBLDJDQUFBQSxJQUFBLFlBQUtBLEVBQUFBLDJDQUFBQSxJQUFBLFFBQU1HLFdBQVcsTUFDbEIsVUFBYSxlQUFhLGdGQU05QkgsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLHNCQUFvQix1QkFFNUJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksK0VBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLHVCQUF1Qm1ILFFBQVEsVUFBUyxjQUt2RUYsRUFBQUEsMkNBQUFBLElBQUEsdUdBQWlHQSxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxZQUFZbUgsUUFBUSxVQUFRLGFBQXVCLFdBQy9LRixFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0seUJBQXVCLDBCQUUvQkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxvREFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sMEJBQTBCbUgsUUFBUSxVQUFTLGNBSzFFRixFQUFBQSwyQ0FBQUEsSUFBQSxzRkFDQUEsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLGVBQWEsZ0JBRXJCQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLDhDQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxnQkFBZ0JtSCxRQUFRLFVBQVMsY0FLaEVGLEVBQUFBLDJDQUFBQSxJQUFBLHlKQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0saUJBQWUsa0JBRXZCQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHdGQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxrQkFBa0JtSCxRQUFRLFVBQVMsY0FLbEVGLEVBQUFBLDJDQUFBQSxJQUFBLG9KQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSwwREFDQUEsRUFBQUEsMkNBQUFBLElBQUEsVUFBR0EsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxLQUFHLFNBQWUsa0dBQ3BDSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sY0FBWSxlQUVwQkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSw4QkFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sYUFBYW1ILFFBQVEsVUFBUyxjQUs3REYsRUFBQUEsMkNBQUFBLElBQUEsOERBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLHFLQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxVQUFHQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLEtBQUcsbUJBQXlCLDRIQUE0SEgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0saUJBQWlCbUgsUUFBUSxVQUFRLFdBQXFCLGdEQUMzUEYsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLGdCQUFjLGlCQUV0QkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSx3Q0FDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxjQUFlSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxhQUFhbUgsUUFBUSxVQUFRLGdCQUMxRkYsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxpQkFBaUJtSCxRQUFRLFVBQVMsY0FLakVGLEVBQUFBLDJDQUFBQSxJQUFBLDZFQUF1RUEsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sYUFBYW1ILFFBQVEsVUFBUSxjQUF3QixjQUN2SkYsRUFBQUEsMkNBQUFBLElBQUEsVUFBR0EsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxLQUFHLG1CQUF5QixxTEFDOUNILEVBQUFBLDJDQUFBQSxJQUFBLFlBQUtBLEVBQUFBLDJDQUFBQSxJQUFBLFFBQU1HLFdBQVcsTUFDbEIsVUFBYSxlQUFhLGtiQXdCOUJILEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSx5Q0FBdUMsNENBRS9DQSxFQUFBQSwyQ0FBQUEsSUFBQSx3Q0FBa0NBLEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGVBQWVtSCxRQUFRLFVBQVEsZUFBeUIsd0NBQXdDRixFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsZUFBNkIsaURBQWlESCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsUUFBc0IsTUFBTUgsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGFBQTJCLE1BQU1ILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxPQUFxQixlQUFlSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsZ0JBQThCLDhCQUE4QkgsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFNBQXVCLGVBQWVILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxlQUE2QiwrREFBK0RILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxTQUF1QixVQUFVSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsZ0JBQThCLHNCQUFzQkgsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFlBQTBCLDhFQUM3M0JILEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxpQkFBZSxrQkFFdkJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUkscUNBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGtCQUFrQm1ILFFBQVEsVUFBUyxjQUtsRUYsRUFBQUEsMkNBQUFBLElBQUEsd0VBQWtFQSxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsV0FBeUIsZUFDckhILEVBQUFBLDJDQUFBQSxJQUFBLFVBQUdBLEVBQUFBLDJDQUFBQSxJQUFBLFVBQVFHLFdBQVcsS0FBRyxTQUFtQixTQUFTSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxhQUFhbUgsUUFBUSxVQUFRLGNBQXdCLGFBQWFGLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsS0FBRyxPQUFhLHlDQUNqTEgsRUFBQUEsMkNBQUFBLElBQUEsVUFBR0EsRUFBQUEsMkNBQUFBLElBQUEsVUFBUUcsV0FBVyxLQUFHLGNBQXdCLHVIQUNqREgsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLHNCQUFvQix1QkFFNUJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUkscUNBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLHdCQUF3Qm1ILFFBQVEsVUFBUyxjQUt4RUYsRUFBQUEsMkNBQUFBLElBQUEsOEVBQXdFQSxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsaUJBQStCLGVBQ2pJSCxFQUFBQSwyQ0FBQUEsSUFBQSxVQUFHQSxFQUFBQSwyQ0FBQUEsSUFBQSxVQUFRRyxXQUFXLEtBQUcsU0FBbUIsU0FBU0gsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sYUFBYW1ILFFBQVEsVUFBUSxjQUF3QixhQUFhRixFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLEtBQUcsT0FBYSx5Q0FDakxILEVBQUFBLDJDQUFBQSxJQUFBLFVBQUdBLEVBQUFBLDJDQUFBQSxJQUFBLFVBQVFHLFdBQVcsS0FBRyxjQUF3Qix1SEFDakRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxlQUFhLGdCQUVyQkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSw0RkFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxjQUFlSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxhQUFhbUgsUUFBUSxVQUFRLGdCQUMxRkYsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxlQUFlbUgsUUFBUSxVQUFTLGNBSy9ERixFQUFBQSwyQ0FBQUEsSUFBQSx5RkFBbUZBLEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGFBQWFtSCxRQUFRLFVBQVEsY0FBd0IsY0FDbktGLEVBQUFBLDJDQUFBQSxJQUFBLHVCQUFpQkEsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFNBQXVCLGdEQUNsRUgsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLDBDQUF3Qyw2Q0FFaERBLEVBQUFBLDJDQUFBQSxJQUFBLHdDQUFrQ0EsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0saUJBQWlCbUgsUUFBUSxVQUFRLGdCQUEwQix3Q0FBd0NGLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxlQUE2QixpREFBaURILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxRQUFzQixNQUFNSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsYUFBMkIsTUFBTUgsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLE9BQXFCLGVBQWVILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxnQkFBOEIsOEJBQThCSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsU0FBdUIsZUFBZUgsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGVBQTZCLCtEQUErREgsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFNBQXVCLFVBQVVILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxnQkFBOEIsc0JBQXNCSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsWUFBMEIsOEVBQ2g0QkgsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLGNBQVksZUFFcEJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksZ0VBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGVBQWVtSCxRQUFRLFVBQVMsY0FLL0RGLEVBQUFBLDJDQUFBQSxJQUFBLHNFQUFnRUEsRUFBQUEsMkNBQUFBLElBQUEsVUFBUUcsV0FBVyxLQUFHLE9BQWlCLFlBQVlILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxVQUF3QixhQUFhSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsUUFBc0IsK0JBV2xPSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sbUJBQWlCLG9CQUV6QkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSx5REFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0scUJBQXFCbUgsUUFBUSxVQUFTLGNBS3JFRixFQUFBQSwyQ0FBQUEsSUFBQSxnRkFDQUEsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLGlCQUFlLGtCQUV2QkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxhQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxXQUM1REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxrQkFBa0JtSCxRQUFRLFVBQVMsY0FLbEVGLEVBQUFBLDJDQUFBQSxJQUFBLHlOQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sWUFBVSxhQUVsQkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxtQkFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sV0FBV21ILFFBQVEsVUFBUyxjQUszREYsRUFBQUEsMkNBQUFBLElBQUEsaUZBQTJFQSxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsWUFBMEIsMEdBQTBHSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsWUFBMEIsOERBQThESCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxTQUFTbUgsUUFBUSxVQUFRLFVBQW9CLFlBQ25hRixFQUFBQSwyQ0FBQUEsSUFBQSw0Q0FBc0NBLEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGtCQUFrQm1ILFFBQVEsVUFBUSxpQkFBMkIsWUFBWUYsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sd0JBQXdCbUgsUUFBUSxVQUFRLHNCQUFnQyxNQUM3T0YsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLFNBQU8sVUFFZkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSx1REFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksd0RBQzVESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLFlBQVltSCxRQUFRLFVBQVMsY0FLNURGLEVBQUFBLDJDQUFBQSxJQUFBLDhIQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxZQUFLQSxFQUFBQSwyQ0FBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsZUFBYSwwQ0FHOUJILEVBQUFBLDJDQUFBQSxJQUFBLDRGQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxZQUFLQSxFQUFBQSwyQ0FBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsZUFBYSxzRkFPOUJILEVBQUFBLDJDQUFBQSxJQUFBLCtGQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxZQUFLQSxFQUFBQSwyQ0FBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsZUFBYSw2TEFNOUJILEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxpQkFBZSxrQkFFdkJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksWUFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksZUFDNURILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0saUJBQWlCbUgsUUFBUSxVQUFTLGNBS2pFRixFQUFBQSwyQ0FBQUEsSUFBQSxnREFBMENBLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxRQUFzQiwrRkFBK0ZILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxvQkFBa0MsZ0RBQ3JQSCxFQUFBQSwyQ0FBQUEsSUFBQSxvQkFBY0EsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFFBQXNCLG9DQUM5REgsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLG9CQUFrQixxQkFFMUJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksdUdBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLHFCQUFxQm1ILFFBQVEsVUFBUyxjQUtyRUYsRUFBQUEsMkNBQUFBLElBQUEsZ05BQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLHdEQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sVUFBUSxXQUVoQkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxZQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxRQUM1REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxTQUFTbUgsUUFBUSxVQUFTLGNBS3pERixFQUFBQSwyQ0FBQUEsSUFBQSwwSEFDQUEsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLFdBQVMsWUFFakJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksYUFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksVUFDNURILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sVUFBVW1ILFFBQVEsVUFBUyxjQUsxREYsRUFBQUEsMkNBQUFBLElBQUEseURBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxTQUFPLFVBRWZBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksYUFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksVUFDNURILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sUUFBUW1ILFFBQVEsVUFBUyxjQUt4REYsRUFBQUEsMkNBQUFBLElBQUEsc0VBQWdFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLEtBQUcsS0FBVyxpQkFDN0ZILEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxlQUFhLGdCQUVyQkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSx5Q0FDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sZUFBZW1ILFFBQVEsVUFBUyxjQUsvREYsRUFBQUEsMkNBQUFBLElBQUEsK0dBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxzQkFBb0IsdUJBRTVCQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLFlBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksYUFBY0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLFNBQzVESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLHVCQUF1Qm1ILFFBQVEsVUFBUyxjQUt2RUYsRUFBQUEsMkNBQUFBLElBQUEseU1BQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxRQUFNLFNBRWRBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksWUFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksUUFDNURILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sT0FBT21ILFFBQVEsVUFBUyxjQUt2REYsRUFBQUEsMkNBQUFBLElBQUEsNkVBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxhQUFXLGNBRW5CQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLFlBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLFlBQVltSCxRQUFRLFVBQVMsY0FLNURGLEVBQUFBLDJDQUFBQSxJQUFBLG1GQUE2RUEsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sT0FBT21ILFFBQVEsVUFBUSxRQUFrQix3RUFDakpGLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxPQUFLLFFBRWJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksYUFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksV0FDNURILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sZ0JBQWdCbUgsUUFBUSxVQUFTLGNBS2hFRixFQUFBQSwyQ0FBQUEsSUFBQSxvRUFDQUEsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLG1CQUFpQixvQkFFekJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksbUhBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLG9CQUFvQm1ILFFBQVEsVUFBUyxjQUtwRUYsRUFBQUEsMkNBQUFBLElBQUEsbUlBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxrQkFBZ0IsbUJBRXhCQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLG1FQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxzQkFBc0JtSCxRQUFRLFVBQVMsY0FLdEVGLEVBQUFBLDJDQUFBQSxJQUFBLHVJQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxVQUFHQSxFQUFBQSwyQ0FBQUEsSUFBQSxVQUFRRyxXQUFXLEtBQUcsWUFBc0Isc0ZBQy9DSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sdUJBQXFCLHdCQUU3QkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxvREFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0seUJBQXlCbUgsUUFBUSxVQUFTLGNBS3pFRixFQUFBQSwyQ0FBQUEsSUFBQSxtSUFDQUEsRUFBQUEsMkNBQUFBLElBQUEsVUFBR0EsRUFBQUEsMkNBQUFBLElBQUEsVUFBUUcsV0FBVyxLQUFHLCtGQUN6QkgsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLGlCQUFlLGtCQUV2QkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxtRUFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sa0JBQWtCbUgsUUFBUSxVQUFTLGNBS2xFRixFQUFBQSwyQ0FBQUEsSUFBQSx1SUFDQUEsRUFBQUEsMkNBQUFBLElBQUEsVUFBR0EsRUFBQUEsMkNBQUFBLElBQUEsVUFBUUcsV0FBVyxLQUFHLFlBQXNCLHNGQUMvQ0gsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLHFCQUFtQixzQkFFM0JBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksYUFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksV0FDNURILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sdUJBQXVCbUgsUUFBUSxVQUFTLGNBS3ZFRixFQUFBQSwyQ0FBQUEsSUFBQSwySUFDQUEsRUFBQUEsMkNBQUFBLElBQUEsVUFBR0EsRUFBQUEsMkNBQUFBLElBQUEsVUFBUUcsV0FBVyxLQUFHLHFHQUN6QkgsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLE9BQUssUUFFYkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxzQkFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksbUNBQzVESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLE1BQU1tSCxRQUFRLFVBQVMsY0FLdERGLEVBQUFBLDJDQUFBQSxJQUFBLG9FQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sT0FBSyxRQUViQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLHNCQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxzQ0FDNURILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sTUFBTW1ILFFBQVEsVUFBUyxjQUt0REYsRUFBQUEsMkNBQUFBLElBQUEsb0VBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxnQkFBYyxpQkFFdEJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksc0JBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksYUFBY0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGdCQUM1REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxpQkFBaUJtSCxRQUFRLFVBQVMsY0FLakVGLEVBQUFBLDJDQUFBQSxJQUFBLGlGQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sV0FBUyxZQUVqQkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxZQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLGFBQWNILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSw0QkFDNURILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sVUFBVW1ILFFBQVEsVUFBUyxjQUsxREYsRUFBQUEsMkNBQUFBLElBQUEsbUVBQTZEQSxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsV0FBeUIsZ0JBQWdCSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsV0FBeUIsZUFBZUgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sWUFBWW1ILFFBQVEsVUFBUSxhQUF1Qix1RkFBdUZGLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxZQUEwQixXQUMzWkgsRUFBQUEsMkNBQUFBLElBQUEsVUFBR0EsRUFBQUEsMkNBQUFBLElBQUEsVUFBUUcsV0FBVyxLQUFHLGdGQUN6QkgsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLFdBQVMsWUFFakJBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksWUFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sVUFBVW1ILFFBQVEsVUFBUyxjQUsxREYsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sWUFBWW1ILFFBQVEsVUFBUyxhQUUvQyxtRkFFVEYsRUFBQUEsMkNBQUFBLElBQUEsaUJBQVdBLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxVQUF3Qix3SkFBd0pILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxnQkFBOEIsTUFDN1FILEVBQUFBLDJDQUFBQSxJQUFBLFlBQUtBLEVBQUFBLDJDQUFBQSxJQUFBLFFBQU1HLFdBQVcsTUFDbEIsVUFBYSxlQUFhLHlYQWM5QkgsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLHFCQUFtQix1QkFFM0JBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksaUZBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLHNCQUFzQm1ILFFBQVEsVUFBUyxjQUt0RUYsRUFBQUEsMkNBQUFBLElBQUEsbUdBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxvQkFBa0Isc0JBRTFCQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGlGQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxxQkFBcUJtSCxRQUFRLFVBQVMsY0FLckVGLEVBQUFBLDJDQUFBQSxJQUFBLGtGQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sd0JBQXNCLDBCQUU5QkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxpRkFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0seUJBQXlCbUgsUUFBUSxVQUFTLGNBS3pFRixFQUFBQSwyQ0FBQUEsSUFBQSxpR0FDQUEsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLDJCQUF5Qiw2QkFFakNBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksaUZBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLDZCQUE2Qm1ILFFBQVEsVUFBUyxjQUs3RUYsRUFBQUEsMkNBQUFBLElBQUEsK0VBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSw0QkFBMEIsOEJBRWxDQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGlGQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSw4QkFBOEJtSCxRQUFRLFVBQVMsY0FLOUVGLEVBQUFBLDJDQUFBQSxJQUFBLHdFQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sK0JBQTZCLGlDQUVyQ0EsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSw2R0FDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sa0NBQWtDbUgsUUFBUSxVQUFTLGNBS2xGRixFQUFBQSwyQ0FBQUEsSUFBQSw4RUFDQUEsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLDBCQUF3Qiw0QkFFaENBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksaUZBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLDRCQUE0Qm1ILFFBQVEsVUFBUyxjQUs1RUYsRUFBQUEsMkNBQUFBLElBQUEsNkVBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSw2QkFBMkIsK0JBRW5DQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLDZHQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSwrQkFBK0JtSCxRQUFRLFVBQVMsY0FLL0VGLEVBQUFBLDJDQUFBQSxJQUFBLG1GQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sNEJBQTBCLDhCQUVsQ0EsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSw2R0FDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sOEJBQThCbUgsUUFBUSxVQUFTLGNBSzlFRixFQUFBQSwyQ0FBQUEsSUFBQSxvSEFDQUEsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLDJCQUF5Qiw2QkFFakNBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksaUZBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLDZCQUE2Qm1ILFFBQVEsVUFBUyxjQUs3RUYsRUFBQUEsMkNBQUFBLElBQUEseURBQW1EQSxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcsVUFDN0VILEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSwyQkFBeUIsNkJBRWpDQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGlGQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSw2QkFBNkJtSCxRQUFRLFVBQVMsY0FLN0VGLEVBQUFBLDJDQUFBQSxJQUFBLHlFQUFtRUEsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFVBQzdGSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sZ0NBQThCLGtDQUV0Q0EsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSw2R0FDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sbUNBQW1DbUgsUUFBUSxVQUFTLGNBS25GRixFQUFBQSwyQ0FBQUEsSUFBQSw4REFBd0RBLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxVQUNsRkgsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLCtCQUE2QixpQ0FFckNBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksNkdBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLGtDQUFrQ21ILFFBQVEsVUFBUyxjQUtsRkYsRUFBQUEsMkNBQUFBLElBQUEsZ0VBQ0FBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQ0UsR0FBTSxvQ0FBa0Msc0NBRTFDQSxFQUFBQSwyQ0FBQUEsSUFBQSxXQUNFQSxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE1BQUksVUFBV0gsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxNQUFJLGlGQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSx3Q0FBd0NtSCxRQUFRLFVBQVMsY0FLeEZGLEVBQUFBLDJDQUFBQSxJQUFBLCtGQUF5RkEsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sdUJBQXVCbUgsUUFBUSxVQUFRLHFCQUErQixNQUMxTEYsRUFBQUEsMkNBQUFBLElBQUEsTUFDRSxHQUFNLGtDQUFnQyxvQ0FFeENBLEVBQUFBLDJDQUFBQSxJQUFBLFdBQ0VBLEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxVQUFXSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksaUZBQ3pESCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUFJRyxXQUFXLE9BQ2JILEVBQUFBLDJDQUFBQSxJQUFDUywwREFBQUEsRUFBTSxDQUFDQyxLQUFLLFFBQVEzSCxNQUFNLHNDQUFzQ21ILFFBQVEsVUFBUyxjQUt0RkYsRUFBQUEsMkNBQUFBLElBQUEsK0ZBQXlGQSxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSx1QkFBdUJtSCxRQUFRLFVBQVEscUJBQStCLE1BQzFMRixFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sY0FBWSxlQUVwQkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxZQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxhQUFhbUgsUUFBUSxVQUFTLGNBSzdERixFQUFBQSwyQ0FBQUEsSUFBQSxnUEFDQUEsRUFBQUEsMkNBQUFBLElBQUEsWUFBS0EsRUFBQUEsMkNBQUFBLElBQUEsUUFBTUcsV0FBVyxNQUNsQixVQUFhLGVBQWEsb1JBVTlCSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sWUFBVSxhQUVsQkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSxZQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxPQUNiSCxFQUFBQSwyQ0FBQUEsSUFBQ1MsMERBQUFBLEVBQU0sQ0FBQ0MsS0FBSyxRQUFRM0gsTUFBTSxXQUFXbUgsUUFBUSxVQUFTLGNBSzNERixFQUFBQSwyQ0FBQUEsSUFBQSwrR0FBeUdBLEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsS0FBRyxTQUF1QiwwQkFDMUpILEVBQUFBLDJDQUFBQSxJQUFBLHNCQUNBQSxFQUFBQSwyQ0FBQUEsSUFBQSxZQUFLQSxFQUFBQSwyQ0FBQUEsSUFBQSxRQUFNRyxXQUFXLE1BQ2xCLFVBQWEsZUFBYSw2WUFzQjlCSCxFQUFBQSwyQ0FBQUEsSUFBQSxNQUNFLEdBQU0sc0JBQW9CLHVCQUU1QkEsRUFBQUEsMkNBQUFBLElBQUEsV0FDRUEsRUFBQUEsMkNBQUFBLElBQUEsTUFBSUcsV0FBVyxNQUFJLFVBQVdILEVBQUFBLDJDQUFBQSxJQUFBLGNBQVlHLFdBQVcsTUFBSSwrRUFDekRILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsTUFBSSxhQUFjSCxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLE1BQUksYUFDNURILEVBQUFBLDJDQUFBQSxJQUFBLE1BQUlHLFdBQVcsT0FDYkgsRUFBQUEsMkNBQUFBLElBQUNTLDBEQUFBQSxFQUFNLENBQUNDLEtBQUssUUFBUTNILE1BQU0sdUJBQXVCbUgsUUFBUSxVQUFTLGNBS3ZFRixFQUFBQSwyQ0FBQUEsSUFBQSx3REFDQUEsRUFBQUEsMkNBQUFBLElBQUEsVUFBR0EsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLFdBQXlCLHFDQUN0REgsRUFBQUEsMkNBQUFBLElBQUEsVUFBR0EsRUFBQUEsMkNBQUFBLElBQUEsY0FBWUcsV0FBVyxLQUFHLGNBQTRCLHNDQUN6REgsRUFBQUEsMkNBQUFBLElBQUEsdUJBQWlCQSxFQUFBQSwyQ0FBQUEsSUFBQSxjQUFZRyxXQUFXLEtBQUcscUVBRS9DLENBM2xDU0wsV0FBVTVKLFlBQUEsYUE2bENuQjRKLFdBQVdNLGdCQUFpQixFQUVyQixJQUFNeTBDLE9BQVMsU0FBVEEsU0FBaUIsTUFBTSxJQUFJQyxNQUFNLGtCQUFvQixFQUVsRUQsT0FBTzlpRCxXQUFhLENBQUVnakQsVUFBVSxHQUVoQyxJQUFNQyxjQUFnQixDQUFFMS9DLE1BQU8sdUJBQXdCMi9DLGVBQWdCLENBQUMsV0FFbEVDLGtCQUFvQixDQUFDLEVBRTNCRixjQUFjampELFdBQWFpakQsY0FBY2pqRCxZQUFjLENBQUMsRUFDeERpakQsY0FBY2pqRCxXQUFXOEcsS0FBSS9GLE9BQUFtRCxPQUFBLEdBQ3ZCKytDLGNBQWNqakQsV0FBVzhHLE1BQVEsQ0FBQyxFQUFDLENBQ3ZDNEcsS0FBTSxTQUFBQSxPQUFBLE9BQU1PLEVBQUFBLDJDQUFBQSxJQUFDbTFDLG1EQUFBQSxHQUFVLENBQUNELGtCQUFtQkEsa0JBQW1CRSx3QkFBeUJKLGdCQUFlaDFDLEVBQUFBLDJDQUFBQSxJQUFDRixXQUFVLE1BQWdCLElBR25JLDBDQUE2QixJQUFBck4sb0JBQUEsVSxvS0MzbkM3QjRpRCxRQURrQyxvQkFBUSxnREFDaENDLEVBQTRCLElBRTlCamlELEtBQUssQ0FBQ2tpRCxPQUFPOTRDLEdBQUksMjdDQUE0N0MsS0FFcjlDODRDLE9BQU9GLFFBQVVBLE8sc0pDSmpCQSxRQURrQyxvQkFBUSxnREFDaENDLEVBQTRCLElBRTlCamlELEtBQUssQ0FBQ2tpRCxPQUFPOTRDLEdBQUkseStVQUE4K1UsS0FFdmdWODRDLE9BQU9GLFFBQVVBLE8sc0tDSmpCQSxRQURrQyxvQkFBUSxnREFDaENDLEVBQTRCLElBRTlCamlELEtBQUssQ0FBQ2tpRCxPQUFPOTRDLEdBQUksbUVBQW9FLEtBRTdGODRDLE9BQU9GLFFBQVVBLE8sNkpDSmpCQSxRQURrQyxvQkFBUSxnREFDaENDLEVBQTRCLElBRTlCamlELEtBQUssQ0FBQ2tpRCxPQUFPOTRDLEdBQUksNithQUFrL2EsS0FFM2diODRDLE9BQU9GLFFBQVVBLE8sbUtDSmpCQSxRQURrQyxvQkFBUSxnREFDaENDLEVBQTRCLElBRTlCamlELEtBQUssQ0FBQ2tpRCxPQUFPOTRDLEdBQUksZ09BQXFPLEtBRTlQODRDLE9BQU9GLFFBQVVBLE8sNk1DSmpCQSxRQURrQyxvQkFBUSxnREFDaENDLEVBQTRCLElBRTlCamlELEtBQUssQ0FBQ2tpRCxPQUFPOTRDLEdBQUksOERBQStELEtBRXhGNDRDLFFBQVFHLE9BQVMsQ0FDaEIsV0FBYyx1Q0FFZkQsT0FBT0YsUUFBVUEsTyx5SENUakIsSUFBSWh6QyxJQUFNLENBQ1QsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLE9BQVEscUNBQ1IsVUFBVyx3Q0FDWCxhQUFjLHdDQUNkLFVBQVcsd0NBQ1gsYUFBYyx3Q0FDZCxVQUFXLHdDQUNYLGFBQWMsd0NBQ2QsVUFBVyx3Q0FDWCxhQUFjLHdDQUNkLFVBQVcsd0NBQ1gsYUFBYyx3Q0FDZCxVQUFXLHdDQUNYLGFBQWMsd0NBQ2QsVUFBVyx3Q0FDWCxhQUFjLHdDQUNkLFVBQVcscUNBQ1gsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLE9BQVEscUNBQ1IsVUFBVyxxQ0FDWCxPQUFRLHFDQUNSLFVBQVcscUNBQ1gsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLE9BQVEscUNBQ1IsVUFBVyx3Q0FDWCxhQUFjLHdDQUNkLFVBQVcscUNBQ1gsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLE9BQVEscUNBQ1IsVUFBVyxxQ0FDWCxPQUFRLHFDQUNSLFVBQVcscUNBQ1gsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLE9BQVEscUNBQ1IsVUFBVyxxQ0FDWCxPQUFRLHFDQUNSLFVBQVcscUNBQ1gsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLE9BQVEscUNBQ1IsVUFBVyxxQ0FDWCxPQUFRLHFDQUNSLFVBQVcsd0NBQ1gsYUFBYyx3Q0FDZCxVQUFXLHdDQUNYLGFBQWMsd0NBQ2QsVUFBVyxxQ0FDWCxPQUFRLHFDQUNSLFVBQVcscUNBQ1gsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLFVBQVcsd0NBQ1gsYUFBYyx3Q0FDZCxVQUFXLHdDQUNYLGFBQWMsd0NBQ2QsVUFBVyx3Q0FDWCxhQUFjLHdDQUNkLFVBQVcsd0NBQ1gsYUFBYyx3Q0FDZCxVQUFXLHdDQUNYLGFBQWMsd0NBQ2QsVUFBVyx3Q0FDWCxhQUFjLHdDQUNkLFVBQVcsd0NBQ1gsYUFBYyx3Q0FDZCxVQUFXLHdDQUNYLGFBQWMsd0NBQ2QsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLE9BQVEscUNBQ1IsVUFBVyx3Q0FDWCxhQUFjLHdDQUNkLFVBQVcsd0NBQ1gsYUFBYyx3Q0FDZCxVQUFXLHdDQUNYLGFBQWMsd0NBQ2QsVUFBVyxxQ0FDWCxPQUFRLHFDQUNSLFVBQVcscUNBQ1gsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLE9BQVEscUNBQ1IsVUFBVyxxQ0FDWCxPQUFRLHFDQUNSLFVBQVcscUNBQ1gsUUFBUyxzQ0FDVCxXQUFZLHNDQUNaLE9BQVEscUNBQ1IsVUFBVyxxQ0FDWCxPQUFRLHFDQUNSLFVBQVcsd0NBQ1gsYUFBYyx3Q0FDZCxVQUFXLHdDQUNYLGFBQWMsd0NBQ2QsVUFBVyxxQ0FDWCxPQUFRLHFDQUNSLFVBQVcscUNBQ1gsT0FBUSxxQ0FDUixVQUFXLHFDQUNYLE9BQVEscUNBQ1IsVUFBVyxxQ0FD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LElBQUlxekMsSUFDWixDQUNBRCxlQUFlNWlELEtBQU8sU0FBU2tqRCxxQkFDOUIsT0FBT2pqRCxPQUFPRCxLQUFLd1AsSUFDcEIsRUFDQW96QyxlQUFlTyxRQUFVTCxzQkFDekJKLE9BQU9GLFFBQVVJLGVBQ2pCQSxlQUFlaDVDLEdBQUssMEkseUxDekhwQixJQUFJNEYsSUFBTSxDQUNULGlDQUFrQyx5Q0FDbEMsOEJBQStCLHNDQUMvQiw4QkFBK0Isc0NBQy9CLGdEQUFpRCx3REFDakQsNkNBQThDLHFEQUM5QyxrQ0FBbUMsMENBQ25DLHFDQUFzQyw2Q0FDdEMsa0NBQW1DLDBDQUNuQyw2QkFBOEIscUNBQzlCLGlDQUFrQyx5Q0FDbEMsaUNBQWtDLHlDQUNsQywwQkFBMkIsbUNBSTVCLFNBQVNvekMsZUFBZUMsS0FDdkIsSUFBSWo1QyxHQUFLazVDLHNCQUFzQkQsS0FDL0IsT0FBT0Usb0JBQW9CbjVDLEdBQzVCLENBQ0EsU0FBU2s1QyxzQkFBc0JELEtBQzlCLElBQUlFLG9CQUFvQkMsRUFBRXh6QyxJQUFLcXpDLEtBQU0sQ0FDcEMsSUFBSXY4QixFQUFJLElBQUkyN0IsTUFBTSx1QkFBeUJZLElBQU0sS0FFakQsTUFEQXY4QixFQUFFMjhCLEtBQU8sbUJBQ0gzOEIsQ0FDUCxDQUNBLE9BQU85VyxJQUFJcXpDLElBQ1osQ0FDQUQsZUFBZTVpRCxLQUFPLFNBQVNrakQscUJBQzlCLE9BQU9qakQsT0FBT0QsS0FBS3dQLElBQ3BCLEVBQ0FvekMsZUFBZU8sUUFBVUwsc0JBQ3pCSixPQUFPRixRQUFVSSxlQUNqQkEsZUFBZWg1QyxHQUFLLHdILDBLQzVCcEIsRUFIMkIsb0JBQVEsNERBR1YyNUMsV0FBVyxDQUFDLDhJQUFrSCxpS0FBZ0liLFFBQVEsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uLy5zdG9yeWJvb2svcHJldmlldy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi8uc3Rvcnlib29rL3ByZXZpZXcuanMtZ2VuZXJhdGVkLWNvbmZpZy1lbnRyeS5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL0NhbGVuZGFyLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9EcmFnQW5kRHJvcC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvRHVyYXRpb25zLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9MYXlvdXQuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL1RpbWVzbG90cy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvZXhhbXBsZUNvZGUvZG5kLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL2Jhc2ljLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3Avb3V0c2lkZS5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL2RyYWdGcm9tT3V0c2lkZUl0ZW0ubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL2RyYWdGcm9tT3V0c2lkZUl0ZW0uc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9kcmFnZ2FibGVBY2Nlc3Nvci5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvZHJhZ2dhYmxlQWNjZXNzb3Iuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9vbkRyYWdPdmVyLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9vbkRyYWdPdmVyLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvb25EcmFnU3RhcnQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL29uRHJhZ1N0YXJ0LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvb25Ecm9wRnJvbU91dHNpZGUubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL29uRHJvcEZyb21PdXRzaWRlLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvb25FdmVudERyb3AubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL29uRXZlbnREcm9wLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvb25FdmVudFJlc2l6ZS5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvb25FdmVudFJlc2l6ZS5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL3Jlc2l6YWJsZS5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvcmVzaXphYmxlLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvcmVzaXphYmxlQWNjZXNzb3IubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL3Jlc2l6YWJsZUFjY2Vzc29yLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9leGFtcGxlQ29kZS9kbmRyZXNvdXJjZS5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9yZXNvdXJjZS5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcmVzb3VyY2VzL2JhY2tncm91bmRFdmVudHMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9leGFtcGxlQ29kZS9iYWNrZ3JvdW5kRXZlbnRzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvYmFja2dyb3VuZEV2ZW50cy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvYmFzaWMuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2V4YW1wbGVDb2RlL2N1bHR1cmVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvY3VsdHVyZXMuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2V4YW1wbGVDb2RlL2N1c3RvbVZpZXcuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9jdXN0b21WaWV3LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9leGFtcGxlQ29kZS9kYXlqcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2RheWpzLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9leGFtcGxlQ29kZS9sdXhvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2x1eG9uLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9leGFtcGxlQ29kZS9jcmVhdGVFdmVudFdpdGhOb092ZXJsYXAuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9ub092ZXJsYXAuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2V4YW1wbGVDb2RlL3BvcHVwLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvcG9wdXAuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2V4YW1wbGVDb2RlL3JlbmRlcmluZy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL3JlbmRlcmluZy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvZXhhbXBsZUNvZGUvcmVzb3VyY2UuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9yZXNvdXJjZS5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvZXhhbXBsZUNvZGUvc2VsZWN0YWJsZS5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL3NlbGVjdGFibGUuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2V4YW1wbGVDb2RlL3RpbWVzbG90cy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL3RpbWVzbG90cy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvZXhhbXBsZUNvZGUvdGltZXpvbmVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvdGltZXpvbmVzLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9hbGxEYXlBY2Nlc3Nvci5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9hbGxEYXlBY2Nlc3Nvci5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcmVzb3VyY2VzL2FsbERheUV2ZW50cy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2FsbERheU1heFJvd3MubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvYWxsRGF5TWF4Um93cy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvYmFja2dyb3VuZEV2ZW50cy5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9iYWNrZ3JvdW5kRXZlbnRzLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9jb21wb25lbnRzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2N1c3RvbUNvbXBvbmVudHMvQ3VzdG9tVG9vbGJhci5jb21wb25lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9jb21wb25lbnRzLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9jdWx0dXJlLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2N1bHR1cmUuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2RhdGUubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZGF0ZS5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZGF5TGF5b3V0QWxnb3JpdGhtLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2RheUxheW91dEFsZ29yaXRobS5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZGF5UHJvcEdldHRlci5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9kYXlQcm9wR2V0dGVyLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9kZWZhdWx0RGF0ZS5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9kZWZhdWx0RGF0ZS5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZGVmYXVsdFZpZXcubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZGVmYXVsdFZpZXcuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2RyaWxsZG93blZpZXcubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZHJpbGxkb3duVmlldy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZWxlbWVudFByb3BzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2VsZW1lbnRQcm9wcy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZW5kQWNjZXNzb3IubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZW5kQWNjZXNzb3Iuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2V2ZW50UHJvcEdldHRlci5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9ldmVudFByb3BHZXR0ZXIuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2V2ZW50cy5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9ldmVudHMuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHMubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0cy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0FnZW5kYURhdGVGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0FnZW5kYURhdGVGb3JtYXQuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNBZ2VuZGFIZWFkZXJGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0FnZW5kYUhlYWRlckZvcm1hdC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0FnZW5kYVRpbWVGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0FnZW5kYVRpbWVGb3JtYXQuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNBZ2VuZGFUaW1lUmFuZ2VGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0FnZW5kYVRpbWVSYW5nZUZvcm1hdC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0RhdGVGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0RhdGVGb3JtYXQuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNEYXlGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0RheUZvcm1hdC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0RheUhlYWRlckZvcm1hdC5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzRGF5SGVhZGVyRm9ybWF0LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzRGF5UmFuZ2VIZWFkZXJGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0RheVJhbmdlSGVhZGVyRm9ybWF0LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzRXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0V2ZW50VGltZVJhbmdlRW5kRm9ybWF0LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzRXZlbnRUaW1lUmFuZ2VGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0V2ZW50VGltZVJhbmdlRm9ybWF0LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzRXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdC5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzRXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c01vbnRoSGVhZGVyRm9ybWF0Lm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNNb250aEhlYWRlckZvcm1hdC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c1NlbGVjdFJhbmdlRm9ybWF0Lm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNTZWxlY3RSYW5nZUZvcm1hdC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c1RpbWVHdXR0ZXJGb3JtYXQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvZm9ybWF0c1RpbWVHdXR0ZXJGb3JtYXQuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNXZWVrZGF5Rm9ybWF0Lm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNXZWVrZGF5Rm9ybWF0LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9nZXREcmlsbGRvd25WaWV3Lm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2dldERyaWxsZG93blZpZXcuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2dldE5vdy5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9nZXROb3cuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2xlbmd0aC5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9sZW5ndGguc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2xvY2FsaXplci5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9sb2NhbGl6ZXIuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL2xvbmdQcmVzc1RocmVzaG9sZC5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9sb25nUHJlc3NUaHJlc2hvbGQuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL21heC5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9tYXguc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL21lc3NhZ2VzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL21lc3NhZ2VzLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9taW4ubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvbWluLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9vbkRvdWJsZUNsaWNrRXZlbnQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25Eb3VibGVDbGlja0V2ZW50LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9vbkRyaWxsRG93bi5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9vbkRyaWxsRG93bi5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25LZXlQcmVzc0V2ZW50Lm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL29uS2V5UHJlc3NFdmVudC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25OYXZpZ2F0ZS5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9vbk5hdmlnYXRlLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9vblJhbmdlQ2hhbmdlLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL29uUmFuZ2VDaGFuZ2Uuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL29uU2VsZWN0RXZlbnQubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25TZWxlY3RFdmVudC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25TZWxlY3RTbG90Lm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL29uU2VsZWN0U2xvdC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25TZWxlY3RpbmcubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25TZWxlY3Rpbmcuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL29uU2hvd01vcmUubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25TaG93TW9yZS5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvb25WaWV3Lm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL29uVmlldy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvcG9wdXAubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvcG9wdXAuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3BvcHVwT2Zmc2V0Lm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3BvcHVwT2Zmc2V0LnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9yZXNvdXJjZUlkQWNjZXNzb3IubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvcmVzb3VyY2VJZEFjY2Vzc29yLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9yZXNvdXJjZVRpdGxlQWNjZXNzb3IubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvcmVzb3VyY2VUaXRsZUFjY2Vzc29yLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9yZXNvdXJjZXMubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvcmVzb3VyY2VzLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9ydGwubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvcnRsLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9zY3JvbGxUb1RpbWUubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvc2Nyb2xsVG9UaW1lLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9zZWxlY3RhYmxlLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3NlbGVjdGFibGUuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3NlbGVjdGVkLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3NlbGVjdGVkLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9zaG93QWxsRXZlbnRzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3Nob3dBbGxFdmVudHMuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3Nob3dNdWx0aURheVRpbWVzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3Nob3dNdWx0aURheVRpbWVzLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9zbG90R3JvdXBQcm9wR2V0dGVyLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3Nsb3RHcm91cFByb3BHZXR0ZXIuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3Nsb3RQcm9wR2V0dGVyLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3Nsb3RQcm9wR2V0dGVyLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9zdGFydEFjY2Vzc29yLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3N0YXJ0QWNjZXNzb3Iuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3N0ZXAubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvc3RlcC5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvdGltZXNsb3RzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3RpbWVzbG90cy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvdGl0bGVBY2Nlc3Nvci5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy90aXRsZUFjY2Vzc29yLnN0b3JpZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy90b29sYmFyLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3Rvb2xiYXIuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3Rvb2x0aXBBY2Nlc3Nvci5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy90b29sdGlwQWNjZXNzb3Iuc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Byb3BzL3ZpZXcubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvdmlldy5zdG9yaWVzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvdmlld3MubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcHJvcHMvdmlld3Muc3Rvcmllcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvQmFja2dyb3VuZFdyYXBwZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL0JhY2tncm91bmRDZWxscy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvRXZlbnRFbmRpbmdSb3cuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL1Njcm9sbGFibGVXZWVrV3JhcHBlci5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvdXRpbHMvRGF0ZVNsb3RNZXRyaWNzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9EYXRlQ29udGVudFJvdy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvRXZlbnRDZWxsLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9FdmVudFJvdy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvRXZlbnRSb3dNaXhpbi5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvSGVhZGVyLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9Ob29wV3JhcHBlci5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvUG9wdXAuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2hvb2tzL3VzZUNsaWNrT3V0c2lkZS5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvUG9wT3ZlcmxheS5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvU2VsZWN0aW9uLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy91dGlscy9UaW1lU2xvdHMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL3V0aWxzL2xheW91dC1hbGdvcml0aG1zL292ZXJsYXAuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL3V0aWxzL2xheW91dC1hbGdvcml0aG1zL25vLW92ZXJsYXAuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL3V0aWxzL0RheUV2ZW50TGF5b3V0LmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9UaW1lU2xvdEdyb3VwLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9EYXlDb2x1bW5XcmFwcGVyLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9EYXlDb2x1bW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL1RpbWVHdXR0ZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL1Jlc291cmNlSGVhZGVyLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9UaW1lR3JpZEhlYWRlci5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvdXRpbHMvUmVzb3VyY2VzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9UaW1lR3JpZC5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvVGltZUdyaWRFdmVudC5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvYWRkb25zL2RyYWdBbmREcm9wL0RuRENvbnRleHQuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2FkZG9ucy9kcmFnQW5kRHJvcC9FdmVudFdyYXBwZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2FkZG9ucy9kcmFnQW5kRHJvcC9jb21tb24uanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2FkZG9ucy9kcmFnQW5kRHJvcC9FdmVudENvbnRhaW5lcldyYXBwZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2FkZG9ucy9kcmFnQW5kRHJvcC9XZWVrV3JhcHBlci5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvYWRkb25zL2RyYWdBbmREcm9wL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9hZGRvbnMvZHJhZ0FuZERyb3Avd2l0aERyYWdBbmREcm9wLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9FdmVudFdyYXBwZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2xvY2FsaXplci5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvdXRpbHMvbWVzc2FnZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL0RhdGVIZWFkZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL01vbnRoLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9EYXkuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL1dlZWsuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL1dvcmtXZWVrLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9BZ2VuZGEuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL1ZpZXdzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9Ub29sYmFyLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9DYWxlbmRhci5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvdXRpbHMvbW92ZS5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvbG9jYWxpemVycy9tb21lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2xvY2FsaXplcnMvbHV4b24uanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2xvY2FsaXplcnMvb2xkR2xvYmFsaXplLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9sb2NhbGl6ZXJzL2dsb2JhbGl6ZS5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvbG9jYWxpemVycy9kYXRlLWZucy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvbG9jYWxpemVycy9kYXlqcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL3V0aWxzL2FjY2Vzc29ycy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy91dGlscy9kYXRlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvdXRpbHMvZXZlbnRMZXZlbHMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL3V0aWxzL2hlbHBlcnMuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL3V0aWxzL3Byb3BUeXBlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvdXRpbHMvc2VsZWN0aW9uLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvRGVtb0xpbmsuY29tcG9uZW50LmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvVGltZXpvbmVTZWxlY3QuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9leGFtcGxlQ29kZS9iYXNpYy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2V4YW1wbGVDb2RlL2RuZE91dHNpZGVTb3VyY2UuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9kZW1vcy9leGFtcGxlQ29kZS9yZXNpemFibGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9oZWxwZXJzL2NyZWF0ZUV2ZW50cy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2hlbHBlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9zdG9yeURlZmF1bHRzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcmVzb3VyY2VzL0NhcmQuanMiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9yZXNvdXJjZXMvQ3VzdG9tRGF5Q29sdW1uV3JhcHBlci5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Jlc291cmNlcy9jdXN0b21Db21wb25lbnRzLmpzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcmVzb3VyY2VzL2V2ZW50cy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Jlc291cmNlcy9yZXNvdXJjZUV2ZW50cy5qcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL0Fib3V0QmlnQ2FsZW5kYXIuc3Rvcmllcy5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9BYm91dEV4YW1wbGVzLnN0b3JpZXMubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvYWRkb25zL2FkZE9ucy5zdG9yaWVzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9JbnRyb2R1Y3Rpb24uc3Rvcmllcy5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvQVBJLnN0b3JpZXMubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvZHJhZ0FuZERyb3Auc3Rvcmllcy5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9ndWlkZXMvQ3VzdG9tU3R5bGluZy5zdG9yaWVzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2d1aWRlcy9DdXN0b21WaWV3LnN0b3JpZXMubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZ3VpZGVzL0RhdGVzLnN0b3JpZXMubWR4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZ3VpZGVzL1RpbWV6b25lcy5zdG9yaWVzLm1keCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2d1aWRlcy9sb2NhbGl6ZXIuc3Rvcmllcy5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9wcm9wcy9BUEkuc3Rvcmllcy5tZHgiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3JjL2FkZG9ucy9kcmFnQW5kRHJvcC9zdHlsZXMuc2NzcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvc2Fzcy9zdHlsZXMuc2NzcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL3Jlc291cmNlcy9jdXN0b21Ub29sYmFyLnNjc3MiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy9yZXNvdXJjZXMvbWFpbi5zY3NzIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcmVzb3VyY2VzL3Byb3BHZXR0ZXIuc2NzcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zdG9yaWVzL2RlbW9zL2V4YW1wbGVDb2RlL3JlbmRlcmluZy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS8gc3luYyBeXFwuXFwvLiokIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3NyYy9hZGRvbnMvZHJhZ0FuZERyb3Avc3R5bGVzLnNjc3M/N2NmMCIsIndlYnBhY2s6Ly9yZWFjdC1iaWctY2FsZW5kYXIvLi9zcmMvc2Fzcy9zdHlsZXMuc2Nzcz8xOGZlIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcmVzb3VyY2VzL2N1c3RvbVRvb2xiYXIuc2Nzcz9hNTRlIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcmVzb3VyY2VzL21haW4uc2Nzcz84MjQ4Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvcmVzb3VyY2VzL3Byb3BHZXR0ZXIuc2Nzcz9mMjc5Iiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvZGVtb3MvZXhhbXBsZUNvZGUvcmVuZGVyaW5nLm1vZHVsZS5zY3NzPzJmNDAiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vc3Rvcmllcy8gc3luYyBeXFwuKD84YzljIiwid2VicGFjazovL3JlYWN0LWJpZy1jYWxlbmRhci8uL3N0b3JpZXMvIHN5bmMgXlxcLigiLCJ3ZWJwYWNrOi8vcmVhY3QtYmlnLWNhbGVuZGFyLy4vZ2VuZXJhdGVkLXN0b3JpZXMtZW50cnkuY2pzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBwYXJhbWV0ZXJzID0ge1xuICBhY3Rpb25zOiB7IGFyZ1R5cGVzUmVnZXg6ICdeb25bQS1aXS4qJyB9LFxuICBjb250cm9sczoge1xuICAgIC8vIFRPRE86IHJlZmFjdG9yIGpzRG9jcyBpbiBDYWxlbmRhciBjb250cm9sXG4gICAgLy9leHBhbmRlZDogdHJ1ZSxcbiAgICBtYXRjaGVyczoge1xuICAgICAgY29sb3I6IC8oYmFja2dyb3VuZHxjb2xvcikkL2ksXG4gICAgICBkYXRlOiAvRGF0ZSQvLFxuICAgIH0sXG4gIH0sXG4gIHN0b3J5U29ydDoge1xuICAgIG9yZGVyOiBbXG4gICAgICAnQWJvdXQgQmlnIENhbGVuZGFyJyxcbiAgICAgICdBYm91dCBPdXIgRXhhbXBsZXMnLFxuICAgICAgJ3Byb3BzJyxcbiAgICAgICdFeGFtcGxlcycsXG4gICAgICAnR3VpZGVzJyxcbiAgICAgICdBZGRvbnMnLFxuICAgICAgWydJbnRyb2R1Y3Rpb24nLCAncHJvcHMnXSxcbiAgICBdLFxuICB9LFxuICB2aWV3TW9kZTogJ2RvY3MnLFxufVxuIiwiZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGVudW1lcmFibGVPbmx5ICYmIChzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSkpLCBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IG51bGwgIT0gYXJndW1lbnRzW2ldID8gYXJndW1lbnRzW2ldIDoge307IGkgJSAyID8gb3duS2V5cyhPYmplY3Qoc291cmNlKSwgITApLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSkgOiBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCB7IGFkZERlY29yYXRvciwgYWRkUGFyYW1ldGVycywgYWRkTG9hZGVyLCBhZGRBcmdzLCBhZGRBcmdUeXBlcywgYWRkQXJnc0VuaGFuY2VyLCBhZGRBcmdUeXBlc0VuaGFuY2VyLCBzZXRHbG9iYWxSZW5kZXIgfSBmcm9tICcvaG9tZS9ydW5uZXIvd29yay9yZWFjdC1iaWctY2FsZW5kYXIvcmVhY3QtYmlnLWNhbGVuZGFyL25vZGVfbW9kdWxlcy9Ac3Rvcnlib29rL2NsaWVudC1hcGknO1xuaW1wb3J0ICogYXMgY29uZmlnIGZyb20gJy9ob21lL3J1bm5lci93b3JrL3JlYWN0LWJpZy1jYWxlbmRhci9yZWFjdC1iaWctY2FsZW5kYXIvLnN0b3J5Ym9vay9wcmV2aWV3LmpzJztcbk9iamVjdC5rZXlzKGNvbmZpZykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIHZhciB2YWx1ZSA9IGNvbmZpZ1trZXldO1xuXG4gIHN3aXRjaCAoa2V5KSB7XG4gICAgY2FzZSAnYXJncyc6XG4gICAgICB7XG4gICAgICAgIHJldHVybiBhZGRBcmdzKHZhbHVlKTtcbiAgICAgIH1cblxuICAgIGNhc2UgJ2FyZ1R5cGVzJzpcbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIGFkZEFyZ1R5cGVzKHZhbHVlKTtcbiAgICAgIH1cblxuICAgIGNhc2UgJ2RlY29yYXRvcnMnOlxuICAgICAge1xuICAgICAgICByZXR1cm4gdmFsdWUuZm9yRWFjaChmdW5jdGlvbiAoZGVjb3JhdG9yKSB7XG4gICAgICAgICAgcmV0dXJuIGFkZERlY29yYXRvcihkZWNvcmF0b3IsIGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICBjYXNlICdsb2FkZXJzJzpcbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmZvckVhY2goZnVuY3Rpb24gKGxvYWRlcikge1xuICAgICAgICAgIHJldHVybiBhZGRMb2FkZXIobG9hZGVyLCBmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgY2FzZSAncGFyYW1ldGVycyc6XG4gICAgICB7XG4gICAgICAgIHJldHVybiBhZGRQYXJhbWV0ZXJzKF9vYmplY3RTcHJlYWQoe30sIHZhbHVlKSwgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgY2FzZSAnYXJnVHlwZXNFbmhhbmNlcnMnOlxuICAgICAge1xuICAgICAgICByZXR1cm4gdmFsdWUuZm9yRWFjaChmdW5jdGlvbiAoZW5oYW5jZXIpIHtcbiAgICAgICAgICByZXR1cm4gYWRkQXJnVHlwZXNFbmhhbmNlcihlbmhhbmNlcik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgY2FzZSAnYXJnc0VuaGFuY2Vycyc6XG4gICAgICB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uIChlbmhhbmNlcikge1xuICAgICAgICAgIHJldHVybiBhZGRBcmdzRW5oYW5jZXIoZW5oYW5jZXIpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgIGNhc2UgJ3JlbmRlcic6XG4gICAgICB7XG4gICAgICAgIHJldHVybiBzZXRHbG9iYWxSZW5kZXIodmFsdWUpO1xuICAgICAgfVxuXG4gICAgY2FzZSAnZ2xvYmFscyc6XG4gICAgY2FzZSAnZ2xvYmFsVHlwZXMnOlxuICAgICAge1xuICAgICAgICB2YXIgdiA9IHt9O1xuICAgICAgICB2W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIGFkZFBhcmFtZXRlcnModiwgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgY2FzZSAnX19uYW1lZEV4cG9ydHNPcmRlcic6XG4gICAgY2FzZSAnZGVjb3JhdGVTdG9yeSc6XG4gICAgY2FzZSAncmVuZGVyVG9ET00nOlxuICAgICAge1xuICAgICAgICByZXR1cm4gbnVsbDsgLy8gVGhpcyBrZXkgaXMgbm90IGhhbmRsZWQgZGlyZWN0bHkgaW4gdjYgbW9kZS5cbiAgICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItdGVtcGxhdGVcbiAgICAgICAgcmV0dXJuIGNvbnNvbGUubG9nKGtleSArICcgd2FzIG5vdCBzdXBwb3J0ZWQgOiggIScpO1xuICAgICAgfVxuICB9XG59KTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgeyBhY3Rpb24gfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWFjdGlvbnMnXFxuXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAnLi4vc3JjJ1xcblxcbmltcG9ydCB7XFxuICBldmVudHMsXFxuICBDYWxlbmRhciBhcyBCYXNlQ2FsZW5kYXIsXFxuICBWaWV3cyxcXG4gIHJlc291cmNlRXZlbnRzLFxcbiAgcmVzb3VyY2VzLFxcbn0gZnJvbSAnLi9oZWxwZXJzJ1xcblxcbmltcG9ydCBjcmVhdGVFdmVudHMgZnJvbSAnLi9oZWxwZXJzL2NyZWF0ZUV2ZW50cydcXG5pbXBvcnQgY3VzdG9tQ29tcG9uZW50cyBmcm9tICcuL3Jlc291cmNlcy9jdXN0b21Db21wb25lbnRzJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkaXRpb25hbCBFeGFtcGxlcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgZGVjb3JhdG9yczogW1xcbiAgICAoU3RvcnkpID0+IChcXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICAgIDxTdG9yeSAvPlxcbiAgICAgIDwvZGl2PlxcbiAgICApLFxcbiAgXSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gPEJhc2VDYWxlbmRhciB7Li4uYXJnc30gLz5cXG5cXG5leHBvcnQgY29uc3QgQ29tcGxleERheVZpZXdMYXlvdXQgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkNvbXBsZXhEYXlWaWV3TGF5b3V0LnN0b3J5TmFtZSA9ICdjb21wbGV4IGRheSB2aWV3IGxheW91dCdcXG5Db21wbGV4RGF5Vmlld0xheW91dC5hcmdzID0ge1xcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgpLFxcbiAgZXZlbnRzOiBjcmVhdGVFdmVudHMoMSksXFxuICBzdGVwOiAzMCxcXG59XFxuXFxuY29uc3QgVGltZUd1dHRlciA9ICgpID0+IDxwPkN1c3RvbSBndXR0ZXIgdGV4dDwvcD5cXG5cXG5leHBvcnQgY29uc3QgQ3VzdG9tVGltZUd1dHRlckhlYWRlciA9IFRlbXBsYXRlLmJpbmQoe30pXFxuQ3VzdG9tVGltZUd1dHRlckhlYWRlci5zdG9yeU5hbWUgPSAnY3VzdG9tIFRpbWVHdXR0ZXIgaGVhZGVyJ1xcbkN1c3RvbVRpbWVHdXR0ZXJIZWFkZXIuYXJncyA9IHtcXG4gIHBvcHVwOiB0cnVlLFxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxcbiAgb25TZWxlY3RFdmVudDogYWN0aW9uKCdldmVudCBzZWxlY3RlZCcpLFxcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXFxuICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXFxuICBjb21wb25lbnRzOiB7XFxuICAgIHRpbWVHdXR0ZXJIZWFkZXI6IFRpbWVHdXR0ZXIsXFxuICB9LFxcbn1cXG5cXG5leHBvcnQgY29uc3QgQ3VzdG9tVGltZUd1dHRlcldyYXBwZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkN1c3RvbVRpbWVHdXR0ZXJXcmFwcGVyLnN0b3J5TmFtZSA9ICdjdXN0b20gVGltZUd1dHRlciB3cmFwcGVyJ1xcbkN1c3RvbVRpbWVHdXR0ZXJXcmFwcGVyLmFyZ3MgPSB7XFxuICBwb3B1cDogdHJ1ZSxcXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcXG4gIG9uU2VsZWN0RXZlbnQ6IGFjdGlvbignZXZlbnQgc2VsZWN0ZWQnKSxcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVldLFxcbiAgY29tcG9uZW50czoge1xcbiAgICB0aW1lR3V0dGVyV3JhcHBlcjogY3VzdG9tQ29tcG9uZW50cy50aW1lR3V0dGVyV3JhcHBlcixcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBjb25zdCBDdXN0b21EYXRlQ2VsbFdyYXBwZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkN1c3RvbURhdGVDZWxsV3JhcHBlci5zdG9yeU5hbWUgPSAnYWRkIGN1c3RvbSBkYXRlQ2VsbFdyYXBwZXInXFxuQ3VzdG9tRGF0ZUNlbGxXcmFwcGVyLmFyZ3MgPSB7XFxuICBkZWZhdWx0VmlldzogVmlld3MuTU9OVEgsXFxuICBldmVudHMsXFxuICBjb21wb25lbnRzOiB7XFxuICAgIGRhdGVDZWxsV3JhcHBlcjogY3VzdG9tQ29tcG9uZW50cy5kYXRlQ2VsbFdyYXBwZXIsXFxuICB9LFxcbn1cXG5cXG5leHBvcnQgY29uc3QgQ3VzdG9tVGltZVNsb3RXcmFwcGVyID0gVGVtcGxhdGUuYmluZCh7fSlcXG5DdXN0b21UaW1lU2xvdFdyYXBwZXIuc3RvcnlOYW1lID0gJ2FkZCBjdXN0b20gdGltZVNsb3RXcmFwcGVyJ1xcbkN1c3RvbVRpbWVTbG90V3JhcHBlci5hcmdzID0ge1xcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcXG4gIGV2ZW50cyxcXG4gIGNvbXBvbmVudHM6IHtcXG4gICAgdGltZVNsb3RXcmFwcGVyOiBjdXN0b21Db21wb25lbnRzLnRpbWVTbG90V3JhcHBlcixcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBjb25zdCBDdXN0b21FdmVudFdyYXBwZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkN1c3RvbUV2ZW50V3JhcHBlci5zdG9yeU5hbWUgPSAnYWRkIGN1c3RvbSBldmVudFdyYXBwZXInXFxuQ3VzdG9tRXZlbnRXcmFwcGVyLmFyZ3MgPSB7XFxuICBkZWZhdWx0VmlldzogVmlld3MuREFZLFxcbiAgZXZlbnRzLFxcbiAgY29tcG9uZW50czoge1xcbiAgICBldmVudFdyYXBwZXI6IGN1c3RvbUNvbXBvbmVudHMuZXZlbnRXcmFwcGVyLFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IEN1c3RvbU5vQWdlbmRhRXZlbnRzTGFiZWwgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkN1c3RvbU5vQWdlbmRhRXZlbnRzTGFiZWwuc3RvcnlOYW1lID0gJ2FkZCBjdXN0b20gbm8gYWdlbmRhIGV2ZW50cyBsYWJlbCdcXG5DdXN0b21Ob0FnZW5kYUV2ZW50c0xhYmVsLmFyZ3MgPSB7XFxuICBkZWZhdWx0VmlldzogVmlld3MuQUdFTkRBLFxcbiAgZXZlbnRzLFxcbiAgbWVzc2FnZXM6IHtcXG4gICAgbm9FdmVudHNJblJhbmdlOiAnVGhlcmUgYXJlIG5vIHNwZWNpYWwgZXZlbnRzIGluIHRoaXMgcmFuZ2UgW3Rlc3QgbWVzc2FnZV0nLFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IEN1c3RvbURheUNvbHVtbldyYXBwZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkN1c3RvbURheUNvbHVtbldyYXBwZXIuc3RvcnlOYW1lID0gJ2FkZCBjdXN0b20gZGF5Q29sdW1uV3JhcHBlcidcXG5DdXN0b21EYXlDb2x1bW5XcmFwcGVyLmFyZ3MgPSB7XFxuICBkZWZhdWx0VmlldzogVmlld3MuREFZLFxcbiAgZXZlbnRzOiByZXNvdXJjZUV2ZW50cyxcXG4gIHJlc291cmNlczogcmVzb3VyY2VzLFxcbiAgcmVzb3VyY2VBY2Nlc3NvcjogJ3Jlc291cmNlSWQnLFxcbiAgcmVzb3VyY2VJZEFjY2Vzc29yOiAnaWQnLFxcbiAgcmVzb3VyY2VUaXRsZUFjY2Vzc29yOiAnbmFtZScsXFxuICBjb21wb25lbnRzOiB7XFxuICAgIGRheUNvbHVtbldyYXBwZXI6IGN1c3RvbUNvbXBvbmVudHMuZGF5Q29sdW1uV3JhcHBlcixcXG4gIH0sXFxufVxcbkN1c3RvbURheUNvbHVtbldyYXBwZXIucGFyYW1ldGVycyA9IHtcXG4gIGRvY3M6IHtcXG4gICAgZGVzY3JpcHRpb246IHtcXG4gICAgICBzdG9yeTpcXG4gICAgICAgICdUaGUgY3VzdG9tIERheUNvbHVtbldyYXBwZXIgYWxsb3dzIHlvdSB0byBhZGQgeW91ciBvd24gY3VzdG9tIGxvZ2ljIHdoZW4gcmVuZGVyaW5nIGEgRGF5IENvbHVtbi4nLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkNvbXBsZXhEYXlWaWV3TGF5b3V0XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMH0sXCJlbmRMb2NcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjozMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6NTMsXCJsaW5lXCI6MzB9fSxcIkN1c3RvbVRpbWVHdXR0ZXJIZWFkZXJcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZExvY1wiOntcImNvbFwiOjUzLFwibGluZVwiOjMwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZEJvZHlcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjozMH19LFwiQ3VzdG9tVGltZUd1dHRlcldyYXBwZXJcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZExvY1wiOntcImNvbFwiOjUzLFwibGluZVwiOjMwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZEJvZHlcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjozMH19LFwiQ3VzdG9tRGF0ZUNlbGxXcmFwcGVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMH0sXCJlbmRMb2NcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjozMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6NTMsXCJsaW5lXCI6MzB9fSxcIkN1c3RvbVRpbWVTbG90V3JhcHBlclwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzB9LFwiZW5kTG9jXCI6e1wiY29sXCI6NTMsXCJsaW5lXCI6MzB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzB9LFwiZW5kQm9keVwiOntcImNvbFwiOjUzLFwibGluZVwiOjMwfX0sXCJDdXN0b21FdmVudFdyYXBwZXJcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZExvY1wiOntcImNvbFwiOjUzLFwibGluZVwiOjMwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZEJvZHlcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjozMH19LFwiQ3VzdG9tTm9BZ2VuZGFFdmVudHNMYWJlbFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzB9LFwiZW5kTG9jXCI6e1wiY29sXCI6NTMsXCJsaW5lXCI6MzB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzB9LFwiZW5kQm9keVwiOntcImNvbFwiOjUzLFwibGluZVwiOjMwfX0sXCJDdXN0b21EYXlDb2x1bW5XcmFwcGVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMH0sXCJlbmRMb2NcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjozMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6NTMsXCJsaW5lXCI6MzB9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBhY3Rpb24gfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWFjdGlvbnMnXG5cbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAnLi4vc3JjJ1xuXG5pbXBvcnQge1xuICBldmVudHMsXG4gIENhbGVuZGFyIGFzIEJhc2VDYWxlbmRhcixcbiAgVmlld3MsXG4gIHJlc291cmNlRXZlbnRzLFxuICByZXNvdXJjZXMsXG59IGZyb20gJy4vaGVscGVycydcblxuaW1wb3J0IGNyZWF0ZUV2ZW50cyBmcm9tICcuL2hlbHBlcnMvY3JlYXRlRXZlbnRzJ1xuaW1wb3J0IGN1c3RvbUNvbXBvbmVudHMgZnJvbSAnLi9yZXNvdXJjZXMvY3VzdG9tQ29tcG9uZW50cydcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0FkZGl0aW9uYWwgRXhhbXBsZXMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBkZWNvcmF0b3JzOiBbXG4gICAgKFN0b3J5KSA9PiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgICA8U3RvcnkgLz5cbiAgICAgIDwvZGl2PlxuICAgICksXG4gIF0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IDxCYXNlQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XG5cbmV4cG9ydCBjb25zdCBDb21wbGV4RGF5Vmlld0xheW91dCA9IFRlbXBsYXRlLmJpbmQoe30pO1xuQ29tcGxleERheVZpZXdMYXlvdXQuc3RvcnlOYW1lID0gJ2NvbXBsZXggZGF5IHZpZXcgbGF5b3V0J1xuQ29tcGxleERheVZpZXdMYXlvdXQuYXJncyA9IHtcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKCksXG4gIGV2ZW50czogY3JlYXRlRXZlbnRzKDEpLFxuICBzdGVwOiAzMCxcbn1cblxuY29uc3QgVGltZUd1dHRlciA9ICgpID0+IDxwPkN1c3RvbSBndXR0ZXIgdGV4dDwvcD5cblxuZXhwb3J0IGNvbnN0IEN1c3RvbVRpbWVHdXR0ZXJIZWFkZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KTtcbkN1c3RvbVRpbWVHdXR0ZXJIZWFkZXIuc3RvcnlOYW1lID0gJ2N1c3RvbSBUaW1lR3V0dGVyIGhlYWRlcidcbkN1c3RvbVRpbWVHdXR0ZXJIZWFkZXIuYXJncyA9IHtcbiAgcG9wdXA6IHRydWUsXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgb25TZWxlY3RFdmVudDogYWN0aW9uKCdldmVudCBzZWxlY3RlZCcpLFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMSksXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICB0aW1lR3V0dGVySGVhZGVyOiBUaW1lR3V0dGVyLFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgQ3VzdG9tVGltZUd1dHRlcldyYXBwZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KTtcbkN1c3RvbVRpbWVHdXR0ZXJXcmFwcGVyLnN0b3J5TmFtZSA9ICdjdXN0b20gVGltZUd1dHRlciB3cmFwcGVyJ1xuQ3VzdG9tVGltZUd1dHRlcldyYXBwZXIuYXJncyA9IHtcbiAgcG9wdXA6IHRydWUsXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgb25TZWxlY3RFdmVudDogYWN0aW9uKCdldmVudCBzZWxlY3RlZCcpLFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMSksXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICB0aW1lR3V0dGVyV3JhcHBlcjogY3VzdG9tQ29tcG9uZW50cy50aW1lR3V0dGVyV3JhcHBlcixcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEN1c3RvbURhdGVDZWxsV3JhcHBlciA9IFRlbXBsYXRlLmJpbmQoe30pO1xuQ3VzdG9tRGF0ZUNlbGxXcmFwcGVyLnN0b3J5TmFtZSA9ICdhZGQgY3VzdG9tIGRhdGVDZWxsV3JhcHBlcidcbkN1c3RvbURhdGVDZWxsV3JhcHBlci5hcmdzID0ge1xuICBkZWZhdWx0VmlldzogVmlld3MuTU9OVEgsXG4gIGV2ZW50cyxcbiAgY29tcG9uZW50czoge1xuICAgIGRhdGVDZWxsV3JhcHBlcjogY3VzdG9tQ29tcG9uZW50cy5kYXRlQ2VsbFdyYXBwZXIsXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBDdXN0b21UaW1lU2xvdFdyYXBwZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KTtcbkN1c3RvbVRpbWVTbG90V3JhcHBlci5zdG9yeU5hbWUgPSAnYWRkIGN1c3RvbSB0aW1lU2xvdFdyYXBwZXInXG5DdXN0b21UaW1lU2xvdFdyYXBwZXIuYXJncyA9IHtcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcbiAgZXZlbnRzLFxuICBjb21wb25lbnRzOiB7XG4gICAgdGltZVNsb3RXcmFwcGVyOiBjdXN0b21Db21wb25lbnRzLnRpbWVTbG90V3JhcHBlcixcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEN1c3RvbUV2ZW50V3JhcHBlciA9IFRlbXBsYXRlLmJpbmQoe30pO1xuQ3VzdG9tRXZlbnRXcmFwcGVyLnN0b3J5TmFtZSA9ICdhZGQgY3VzdG9tIGV2ZW50V3JhcHBlcidcbkN1c3RvbUV2ZW50V3JhcHBlci5hcmdzID0ge1xuICBkZWZhdWx0VmlldzogVmlld3MuREFZLFxuICBldmVudHMsXG4gIGNvbXBvbmVudHM6IHtcbiAgICBldmVudFdyYXBwZXI6IGN1c3RvbUNvbXBvbmVudHMuZXZlbnRXcmFwcGVyLFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgQ3VzdG9tTm9BZ2VuZGFFdmVudHNMYWJlbCA9IFRlbXBsYXRlLmJpbmQoe30pO1xuQ3VzdG9tTm9BZ2VuZGFFdmVudHNMYWJlbC5zdG9yeU5hbWUgPSAnYWRkIGN1c3RvbSBubyBhZ2VuZGEgZXZlbnRzIGxhYmVsJ1xuQ3VzdG9tTm9BZ2VuZGFFdmVudHNMYWJlbC5hcmdzID0ge1xuICBkZWZhdWx0VmlldzogVmlld3MuQUdFTkRBLFxuICBldmVudHMsXG4gIG1lc3NhZ2VzOiB7XG4gICAgbm9FdmVudHNJblJhbmdlOiAnVGhlcmUgYXJlIG5vIHNwZWNpYWwgZXZlbnRzIGluIHRoaXMgcmFuZ2UgW3Rlc3QgbWVzc2FnZV0nLFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgQ3VzdG9tRGF5Q29sdW1uV3JhcHBlciA9IFRlbXBsYXRlLmJpbmQoe30pO0N1c3RvbURheUNvbHVtbldyYXBwZXIuc3RvcnlOYW1lID0gJ2FkZCBjdXN0b20gZGF5Q29sdW1uV3JhcHBlcidcbkN1c3RvbURheUNvbHVtbldyYXBwZXIuYXJncyA9IHtcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcbiAgZXZlbnRzOiByZXNvdXJjZUV2ZW50cyxcbiAgcmVzb3VyY2VzOiByZXNvdXJjZXMsXG4gIHJlc291cmNlQWNjZXNzb3I6ICdyZXNvdXJjZUlkJyxcbiAgcmVzb3VyY2VJZEFjY2Vzc29yOiAnaWQnLFxuICByZXNvdXJjZVRpdGxlQWNjZXNzb3I6ICduYW1lJyxcbiAgY29tcG9uZW50czoge1xuICAgIGRheUNvbHVtbldyYXBwZXI6IGN1c3RvbUNvbXBvbmVudHMuZGF5Q29sdW1uV3JhcHBlcixcbiAgfSxcbn1cbkN1c3RvbURheUNvbHVtbldyYXBwZXIucGFyYW1ldGVycyA9IHtcbiAgZG9jczoge1xuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICBzdG9yeTpcbiAgICAgICAgJ1RoZSBjdXN0b20gRGF5Q29sdW1uV3JhcHBlciBhbGxvd3MgeW91IHRvIGFkZCB5b3VyIG93biBjdXN0b20gbG9naWMgd2hlbiByZW5kZXJpbmcgYSBEYXkgQ29sdW1uLicsXG4gICAgfSxcbiAgfSxcbn1cblxuXG5cbkNvbXBsZXhEYXlWaWV3TGF5b3V0LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gPEJhc2VDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5Db21wbGV4RGF5Vmlld0xheW91dC5wYXJhbWV0ZXJzIH07XG5DdXN0b21UaW1lR3V0dGVySGVhZGVyLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gPEJhc2VDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5DdXN0b21UaW1lR3V0dGVySGVhZGVyLnBhcmFtZXRlcnMgfTtcbkN1c3RvbVRpbWVHdXR0ZXJXcmFwcGVyLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gPEJhc2VDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5DdXN0b21UaW1lR3V0dGVyV3JhcHBlci5wYXJhbWV0ZXJzIH07XG5DdXN0b21EYXRlQ2VsbFdyYXBwZXIucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiA8QmFzZUNhbGVuZGFyIHsuLi5hcmdzfSAvPlwiIH0sIC4uLkN1c3RvbURhdGVDZWxsV3JhcHBlci5wYXJhbWV0ZXJzIH07XG5DdXN0b21UaW1lU2xvdFdyYXBwZXIucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiA8QmFzZUNhbGVuZGFyIHsuLi5hcmdzfSAvPlwiIH0sIC4uLkN1c3RvbVRpbWVTbG90V3JhcHBlci5wYXJhbWV0ZXJzIH07XG5DdXN0b21FdmVudFdyYXBwZXIucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiA8QmFzZUNhbGVuZGFyIHsuLi5hcmdzfSAvPlwiIH0sIC4uLkN1c3RvbUV2ZW50V3JhcHBlci5wYXJhbWV0ZXJzIH07XG5DdXN0b21Ob0FnZW5kYUV2ZW50c0xhYmVsLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gPEJhc2VDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5DdXN0b21Ob0FnZW5kYUV2ZW50c0xhYmVsLnBhcmFtZXRlcnMgfTtcbkN1c3RvbURheUNvbHVtbldyYXBwZXIucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiA8QmFzZUNhbGVuZGFyIHsuLi5hcmdzfSAvPlwiIH0sIC4uLkN1c3RvbURheUNvbHVtbldyYXBwZXIucGFyYW1ldGVycyB9OyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCB7IGFjdGlvbiB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tYWN0aW9ucydcXG5cXG5pbXBvcnQge1xcbiAgZXZlbnRzLFxcbiAgcmVzb3VyY2VFdmVudHMsXFxuICByZXNvdXJjZXMsXFxuICBDYWxlbmRhcixcXG4gIFZpZXdzLFxcbiAgRHJhZ0FuZERyb3BDYWxlbmRhcixcXG59IGZyb20gJy4vaGVscGVycydcXG5pbXBvcnQgY3VzdG9tQ29tcG9uZW50cyBmcm9tICcuL3Jlc291cmNlcy9jdXN0b21Db21wb25lbnRzJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkaXRpb25hbCBFeGFtcGxlcy9EcmFnIGFuZCBEcm9wJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBkZWNvcmF0b3JzOiBbXFxuICAgIChTdG9yeSkgPT4gKFxcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgICAgPFN0b3J5IC8+XFxuICAgICAgPC9kaXY+XFxuICAgICksXFxuICBdLFxcbn1cXG5cXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPERyYWdBbmREcm9wQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IERyYWdnYWJsZUFuZFJlc2l6YWJsZSA9IFRlbXBsYXRlLmJpbmQoe30pXFxuRHJhZ2dhYmxlQW5kUmVzaXphYmxlLnN0b3J5TmFtZSA9ICdkcmFnZ2FibGUgYW5kIHJlc2l6YWJsZSdcXG5EcmFnZ2FibGVBbmRSZXNpemFibGUuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgpLFxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXFxuICBldmVudHMsXFxuICByZXNpemFibGU6IHRydWUsXFxuICBvbkV2ZW50RHJvcDogYWN0aW9uKCdldmVudCBkcm9wcGVkJyksXFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IEN1c3RvbVN0ZXBzQW5kVGltZXNsb3RzID0gVGVtcGxhdGUuYmluZCh7fSlcXG5DdXN0b21TdGVwc0FuZFRpbWVzbG90cy5zdG9yeU5hbWUgPVxcbiAgJ2RyYWdnYWJsZSBhbmQgcmVzaXphYmxlIHdpdGggbm9uLWRlZmF1bHQgc3RlcHMgYW5kIHRpbWVzbG90cydcXG5DdXN0b21TdGVwc0FuZFRpbWVzbG90cy5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKCksXFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcXG4gIGV2ZW50cyxcXG4gIHJlc2l6YWJsZTogdHJ1ZSxcXG4gIG9uRXZlbnREcm9wOiBhY3Rpb24oJ2V2ZW50IGRyb3BwZWQnKSxcXG4gIG9uRXZlbnRSZXNpemU6IGFjdGlvbignZXZlbnQgcmVzaXplZCcpLFxcbiAgc3RlcHM6IDE1LFxcbiAgdGltZXNsb3RzOiA0LFxcbn1cXG5cXG5leHBvcnQgY29uc3QgV2l0aE11bHRpRGF5VGltZXMgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbldpdGhNdWx0aURheVRpbWVzLnN0b3J5TmFtZSA9ICdkcmFnZ2FibGUgYW5kIHJlc2l6YWJsZSB3aXRoIHNob3dNdWx0aURheVRpbWVzJ1xcbldpdGhNdWx0aURheVRpbWVzLmFyZ3MgPSB7XFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoKSxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgZXZlbnRzLFxcbiAgcmVzaXphYmxlOiB0cnVlLFxcbiAgc2hvd011bHRpRGF5VGltZXM6IHRydWUsXFxuICBvbkV2ZW50RHJvcDogYWN0aW9uKCdldmVudCBkcm9wcGVkJyksXFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IFdpdGhDdXN0b21EYXRlQ2VsbFdyYXBwZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbldpdGhDdXN0b21EYXRlQ2VsbFdyYXBwZXIuc3RvcnlOYW1lID1cXG4gICdkcmFnZ2FibGUgYW5kIHJlc2l6YWJsZSB3aXRoIGN1c3RvbSBkYXRlQ2VsbFdyYXBwZXInXFxuV2l0aEN1c3RvbURhdGVDZWxsV3JhcHBlci5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKCksXFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcXG4gIGV2ZW50cyxcXG4gIHJlc2l6YWJsZTogdHJ1ZSxcXG4gIHNob3dNdWx0aURheVRpbWVzOiB0cnVlLFxcbiAgb25FdmVudERyb3A6IGFjdGlvbignZXZlbnQgZHJvcHBlZCcpLFxcbiAgb25FdmVudFJlc2l6ZTogYWN0aW9uKCdldmVudCByZXNpemVkJyksXFxuICBjb21wb25lbnRzOiB7XFxuICAgIGRhdGVDZWxsV3JhcHBlcjogY3VzdG9tQ29tcG9uZW50cy5kYXRlQ2VsbFdyYXBwZXIsXFxuICB9LFxcbn1cXG5cXG5leHBvcnQgY29uc3QgV2l0aEN1c3RvbVRpbWVzbG90V3JhcHBlciA9IFRlbXBsYXRlLmJpbmQoe30pXFxuV2l0aEN1c3RvbVRpbWVzbG90V3JhcHBlci5zdG9yeU5hbWUgPVxcbiAgJ2RyYWdnYWJsZSBhbmQgcmVzaXphYmxlIHdpdGggY3VzdG9tIHRpbWVTbG90V3JhcHBlcidcXG5XaXRoQ3VzdG9tVGltZXNsb3RXcmFwcGVyLmFyZ3MgPSB7XFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoKSxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgZXZlbnRzLFxcbiAgcmVzaXphYmxlOiB0cnVlLFxcbiAgc2hvd011bHRpRGF5VGltZXM6IHRydWUsXFxuICBvbkV2ZW50RHJvcDogYWN0aW9uKCdldmVudCBkcm9wcGVkJyksXFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcXG4gIGNvbXBvbmVudHM6IHtcXG4gICAgdGltZVNsb3RXcmFwcGVyOiBjdXN0b21Db21wb25lbnRzLnRpbWVTbG90V3JhcHBlcixcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBjb25zdCBXaXRoQ3VzdG9tRXZlbnRXcmFwcGVyID0gVGVtcGxhdGUuYmluZCh7fSlcXG5XaXRoQ3VzdG9tRXZlbnRXcmFwcGVyLnN0b3J5TmFtZSA9XFxuICAnZHJhZ2dhYmxlIGFuZCByZXNpemFibGUgd2l0aCBjdXN0b20gZXZlbnRXcmFwcGVyJ1xcbldpdGhDdXN0b21FdmVudFdyYXBwZXIuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgpLFxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXFxuICBldmVudHMsXFxuICByZXNpemFibGU6IHRydWUsXFxuICBzaG93TXVsdGlEYXlUaW1lczogdHJ1ZSxcXG4gIG9uRXZlbnREcm9wOiBhY3Rpb24oJ2V2ZW50IGRyb3BwZWQnKSxcXG4gIG9uRXZlbnRSZXNpemU6IGFjdGlvbignZXZlbnQgcmVzaXplZCcpLFxcbiAgY29tcG9uZW50czoge1xcbiAgICBldmVudFdyYXBwZXI6IGN1c3RvbUNvbXBvbmVudHMuZXZlbnRXcmFwcGVyLFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IERyYWdnYWJsZU11bHRpcGxlUmVzb3VyY2VzID0gVGVtcGxhdGUuYmluZCh7fSlcXG5EcmFnZ2FibGVNdWx0aXBsZVJlc291cmNlcy5zdG9yeU5hbWUgPVxcbiAgJ2RyYWdnYWJsZSBhbmQgcmVzaXphYmxlIHdpdGggbXVsdGlwbGUgcmVzb3VyY2UgbGFuZXMnXFxuRHJhZ2dhYmxlTXVsdGlwbGVSZXNvdXJjZXMuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgpLFxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcXG4gIHZpZXdzOiBbVmlld3MuREFZLCBWaWV3cy5XRUVLLCBWaWV3cy5BR0VOREFdLFxcbiAgZXZlbnRzOiByZXNvdXJjZUV2ZW50cyxcXG4gIHJlc291cmNlczogcmVzb3VyY2VzLFxcbiAgcmVzb3VyY2VBY2Nlc3NvcjogJ3Jlc291cmNlSWQnLFxcbiAgcmVzb3VyY2VJZEFjY2Vzc29yOiAnaWQnLFxcbiAgcmVzb3VyY2VUaXRsZUFjY2Vzc29yOiAnbmFtZScsXFxuICByZXNpemFibGU6IHRydWUsXFxuICBvbkV2ZW50RHJvcDogYWN0aW9uKCdldmVudCBkcm9wcGVkJyksXFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkRyYWdnYWJsZUFuZFJlc2l6YWJsZVwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjZ9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNn0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozMH19LFwiQ3VzdG9tU3RlcHNBbmRUaW1lc2xvdHNcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjI2fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MzB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjZ9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MzB9fSxcIldpdGhNdWx0aURheVRpbWVzXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNn0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI2fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMwfX0sXCJXaXRoQ3VzdG9tRGF0ZUNlbGxXcmFwcGVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNn0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI2fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMwfX0sXCJXaXRoQ3VzdG9tVGltZXNsb3RXcmFwcGVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNn0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI2fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMwfX0sXCJXaXRoQ3VzdG9tRXZlbnRXcmFwcGVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNn0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI2fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMwfX0sXCJEcmFnZ2FibGVNdWx0aXBsZVJlc291cmNlc1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjZ9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNn0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozMH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGFjdGlvbiB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tYWN0aW9ucydcblxuaW1wb3J0IHtcbiAgZXZlbnRzLFxuICByZXNvdXJjZUV2ZW50cyxcbiAgcmVzb3VyY2VzLFxuICBDYWxlbmRhcixcbiAgVmlld3MsXG4gIERyYWdBbmREcm9wQ2FsZW5kYXIsXG59IGZyb20gJy4vaGVscGVycydcbmltcG9ydCBjdXN0b21Db21wb25lbnRzIGZyb20gJy4vcmVzb3VyY2VzL2N1c3RvbUNvbXBvbmVudHMnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdBZGRpdGlvbmFsIEV4YW1wbGVzL0RyYWcgYW5kIERyb3AnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBkZWNvcmF0b3JzOiBbXG4gICAgKFN0b3J5KSA9PiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgICA8U3RvcnkgLz5cbiAgICAgIDwvZGl2PlxuICAgICksXG4gIF0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8RHJhZ0FuZERyb3BDYWxlbmRhciB7Li4uYXJnc30gLz5cbiAgPC9kaXY+XG4pXG5cbmV4cG9ydCBjb25zdCBEcmFnZ2FibGVBbmRSZXNpemFibGUgPSBUZW1wbGF0ZS5iaW5kKHt9KTtcbkRyYWdnYWJsZUFuZFJlc2l6YWJsZS5zdG9yeU5hbWUgPSAnZHJhZ2dhYmxlIGFuZCByZXNpemFibGUnXG5EcmFnZ2FibGVBbmRSZXNpemFibGUuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKCksXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICBldmVudHMsXG4gIHJlc2l6YWJsZTogdHJ1ZSxcbiAgb25FdmVudERyb3A6IGFjdGlvbignZXZlbnQgZHJvcHBlZCcpLFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcbn1cblxuZXhwb3J0IGNvbnN0IEN1c3RvbVN0ZXBzQW5kVGltZXNsb3RzID0gVGVtcGxhdGUuYmluZCh7fSk7XG5DdXN0b21TdGVwc0FuZFRpbWVzbG90cy5zdG9yeU5hbWUgPVxuICAnZHJhZ2dhYmxlIGFuZCByZXNpemFibGUgd2l0aCBub24tZGVmYXVsdCBzdGVwcyBhbmQgdGltZXNsb3RzJ1xuQ3VzdG9tU3RlcHNBbmRUaW1lc2xvdHMuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKCksXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICBldmVudHMsXG4gIHJlc2l6YWJsZTogdHJ1ZSxcbiAgb25FdmVudERyb3A6IGFjdGlvbignZXZlbnQgZHJvcHBlZCcpLFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcbiAgc3RlcHM6IDE1LFxuICB0aW1lc2xvdHM6IDQsXG59XG5cbmV4cG9ydCBjb25zdCBXaXRoTXVsdGlEYXlUaW1lcyA9IFRlbXBsYXRlLmJpbmQoe30pO1xuV2l0aE11bHRpRGF5VGltZXMuc3RvcnlOYW1lID0gJ2RyYWdnYWJsZSBhbmQgcmVzaXphYmxlIHdpdGggc2hvd011bHRpRGF5VGltZXMnXG5XaXRoTXVsdGlEYXlUaW1lcy5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXG4gIGV2ZW50cyxcbiAgcmVzaXphYmxlOiB0cnVlLFxuICBzaG93TXVsdGlEYXlUaW1lczogdHJ1ZSxcbiAgb25FdmVudERyb3A6IGFjdGlvbignZXZlbnQgZHJvcHBlZCcpLFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcbn1cblxuZXhwb3J0IGNvbnN0IFdpdGhDdXN0b21EYXRlQ2VsbFdyYXBwZXIgPSBUZW1wbGF0ZS5iaW5kKHt9KTtcbldpdGhDdXN0b21EYXRlQ2VsbFdyYXBwZXIuc3RvcnlOYW1lID1cbiAgJ2RyYWdnYWJsZSBhbmQgcmVzaXphYmxlIHdpdGggY3VzdG9tIGRhdGVDZWxsV3JhcHBlcidcbldpdGhDdXN0b21EYXRlQ2VsbFdyYXBwZXIuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKCksXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICBldmVudHMsXG4gIHJlc2l6YWJsZTogdHJ1ZSxcbiAgc2hvd011bHRpRGF5VGltZXM6IHRydWUsXG4gIG9uRXZlbnREcm9wOiBhY3Rpb24oJ2V2ZW50IGRyb3BwZWQnKSxcbiAgb25FdmVudFJlc2l6ZTogYWN0aW9uKCdldmVudCByZXNpemVkJyksXG4gIGNvbXBvbmVudHM6IHtcbiAgICBkYXRlQ2VsbFdyYXBwZXI6IGN1c3RvbUNvbXBvbmVudHMuZGF0ZUNlbGxXcmFwcGVyLFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgV2l0aEN1c3RvbVRpbWVzbG90V3JhcHBlciA9IFRlbXBsYXRlLmJpbmQoe30pO1xuV2l0aEN1c3RvbVRpbWVzbG90V3JhcHBlci5zdG9yeU5hbWUgPVxuICAnZHJhZ2dhYmxlIGFuZCByZXNpemFibGUgd2l0aCBjdXN0b20gdGltZVNsb3RXcmFwcGVyJ1xuV2l0aEN1c3RvbVRpbWVzbG90V3JhcHBlci5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXG4gIGV2ZW50cyxcbiAgcmVzaXphYmxlOiB0cnVlLFxuICBzaG93TXVsdGlEYXlUaW1lczogdHJ1ZSxcbiAgb25FdmVudERyb3A6IGFjdGlvbignZXZlbnQgZHJvcHBlZCcpLFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcbiAgY29tcG9uZW50czoge1xuICAgIHRpbWVTbG90V3JhcHBlcjogY3VzdG9tQ29tcG9uZW50cy50aW1lU2xvdFdyYXBwZXIsXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBXaXRoQ3VzdG9tRXZlbnRXcmFwcGVyID0gVGVtcGxhdGUuYmluZCh7fSk7XG5XaXRoQ3VzdG9tRXZlbnRXcmFwcGVyLnN0b3J5TmFtZSA9XG4gICdkcmFnZ2FibGUgYW5kIHJlc2l6YWJsZSB3aXRoIGN1c3RvbSBldmVudFdyYXBwZXInXG5XaXRoQ3VzdG9tRXZlbnRXcmFwcGVyLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgpLFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcbiAgZXZlbnRzLFxuICByZXNpemFibGU6IHRydWUsXG4gIHNob3dNdWx0aURheVRpbWVzOiB0cnVlLFxuICBvbkV2ZW50RHJvcDogYWN0aW9uKCdldmVudCBkcm9wcGVkJyksXG4gIG9uRXZlbnRSZXNpemU6IGFjdGlvbignZXZlbnQgcmVzaXplZCcpLFxuICBjb21wb25lbnRzOiB7XG4gICAgZXZlbnRXcmFwcGVyOiBjdXN0b21Db21wb25lbnRzLmV2ZW50V3JhcHBlcixcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IERyYWdnYWJsZU11bHRpcGxlUmVzb3VyY2VzID0gVGVtcGxhdGUuYmluZCh7fSk7RHJhZ2dhYmxlTXVsdGlwbGVSZXNvdXJjZXMuc3RvcnlOYW1lID1cbiAgJ2RyYWdnYWJsZSBhbmQgcmVzaXphYmxlIHdpdGggbXVsdGlwbGUgcmVzb3VyY2UgbGFuZXMnXG5EcmFnZ2FibGVNdWx0aXBsZVJlc291cmNlcy5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcbiAgdmlld3M6IFtWaWV3cy5EQVksIFZpZXdzLldFRUssIFZpZXdzLkFHRU5EQV0sXG4gIGV2ZW50czogcmVzb3VyY2VFdmVudHMsXG4gIHJlc291cmNlczogcmVzb3VyY2VzLFxuICByZXNvdXJjZUFjY2Vzc29yOiAncmVzb3VyY2VJZCcsXG4gIHJlc291cmNlSWRBY2Nlc3NvcjogJ2lkJyxcbiAgcmVzb3VyY2VUaXRsZUFjY2Vzc29yOiAnbmFtZScsXG4gIHJlc2l6YWJsZTogdHJ1ZSxcbiAgb25FdmVudERyb3A6IGFjdGlvbignZXZlbnQgZHJvcHBlZCcpLFxuICBvbkV2ZW50UmVzaXplOiBhY3Rpb24oJ2V2ZW50IHJlc2l6ZWQnKSxcbn1cblxuXG5cbkRyYWdnYWJsZUFuZFJlc2l6YWJsZS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8RHJhZ0FuZERyb3BDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5EcmFnZ2FibGVBbmRSZXNpemFibGUucGFyYW1ldGVycyB9O1xuQ3VzdG9tU3RlcHNBbmRUaW1lc2xvdHMucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPERyYWdBbmREcm9wQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uQ3VzdG9tU3RlcHNBbmRUaW1lc2xvdHMucGFyYW1ldGVycyB9O1xuV2l0aE11bHRpRGF5VGltZXMucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPERyYWdBbmREcm9wQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uV2l0aE11bHRpRGF5VGltZXMucGFyYW1ldGVycyB9O1xuV2l0aEN1c3RvbURhdGVDZWxsV3JhcHBlci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8RHJhZ0FuZERyb3BDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5XaXRoQ3VzdG9tRGF0ZUNlbGxXcmFwcGVyLnBhcmFtZXRlcnMgfTtcbldpdGhDdXN0b21UaW1lc2xvdFdyYXBwZXIucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPERyYWdBbmREcm9wQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uV2l0aEN1c3RvbVRpbWVzbG90V3JhcHBlci5wYXJhbWV0ZXJzIH07XG5XaXRoQ3VzdG9tRXZlbnRXcmFwcGVyLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxEcmFnQW5kRHJvcENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVwiIH0sIC4uLldpdGhDdXN0b21FdmVudFdyYXBwZXIucGFyYW1ldGVycyB9O1xuRHJhZ2dhYmxlTXVsdGlwbGVSZXNvdXJjZXMucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPERyYWdBbmREcm9wQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uRHJhZ2dhYmxlTXVsdGlwbGVSZXNvdXJjZXMucGFyYW1ldGVycyB9OyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCB7XFxuICBDYWxlbmRhcixcXG4gIFZpZXdzLFxcbiAgbW9tZW50TG9jYWxpemVyLFxcbiAgZ2xvYmFsaXplTG9jYWxpemVyLFxcbiAgbHV4b25Mb2NhbGl6ZXIsXFxufSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXFxuaW1wb3J0IHdpdGhEcmFnQW5kRHJvcCBmcm9tICcuLi9zcmMvYWRkb25zL2RyYWdBbmREcm9wJ1xcblxcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCAnbW9tZW50LXRpbWV6b25lL2J1aWxkcy9tb21lbnQtdGltZXpvbmUtd2l0aC1kYXRhLTE5NzAtMjAzMCdcXG5pbXBvcnQgZ2xvYmFsaXplIGZyb20gJ2dsb2JhbGl6ZSdcXG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gJ2x1eG9uJ1xcblxcbmNvbnN0IGxvY2FsaXplcnMgPSB7XFxuICBnbG9iYWxpemU6IGdsb2JhbGl6ZUxvY2FsaXplcihnbG9iYWxpemUpLFxcbiAgbW9tZW50OiBtb21lbnRMb2NhbGl6ZXIobW9tZW50KSxcXG4gIGx1eG9uOiBsdXhvbkxvY2FsaXplcihEYXRlVGltZSwgeyBmaXJzdERheU9mV2VlazogNyB9KSxcXG59XFxuXFxuY29uc3QgRHJhZ2dhYmxlQ2FsZW5kYXIgPSB3aXRoRHJhZ0FuZERyb3AoQ2FsZW5kYXIpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdBZGRpdGlvbmFsIEV4YW1wbGVzL0V2ZW50IER1cmF0aW9ucycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgZGVjb3JhdG9yczogW1xcbiAgICAoU3RvcnkpID0+IChcXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICAgIDxTdG9yeSAvPlxcbiAgICAgIDwvZGl2PlxcbiAgICApLFxcbiAgXSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoeyBsb2NhbGl6ZXI6IGxvYyA9ICdtb21lbnQnLCAuLi5hcmdzIH0pID0+IHtcXG4gIGNvbnN0IGxvY2FsaXplciA9IGxvY2FsaXplcnNbbG9jXVxcbiAgcmV0dXJuIDxEcmFnZ2FibGVDYWxlbmRhciBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gey4uLmFyZ3N9IC8+XFxufVxcblxcbmV4cG9ydCBjb25zdCBEYXlsaWdodFNhdmluZ3NTdGFydHMgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkRheWxpZ2h0U2F2aW5nc1N0YXJ0cy5hcmdUeXBlcyA9IHtcXG4gIGxvY2FsaXplcjoge1xcbiAgICBvcHRpb25zOiBbJ2dsb2JhbGl6ZScsICdtb21lbnQnLCAnbHV4b24nXSxcXG4gICAgY29udHJvbDoge1xcbiAgICAgIHR5cGU6ICdzZWxlY3QnLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuRGF5bGlnaHRTYXZpbmdzU3RhcnRzLmFyZ3MgPSB7XFxuICBkZWZhdWx0VmlldzogVmlld3MuREFZLFxcbiAgbG9jYWxpemVyOiAnbW9tZW50JyxcXG4gIG1pbjogbW9tZW50KCcxMjowMGFtJywgJ2g6bW1hJykudG9EYXRlKCksXFxuICBtYXg6IG1vbWVudCgnMTE6NTlwbScsICdoOm1tYScpLnRvRGF0ZSgpLFxcbiAgZXZlbnRzOiBbXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ29uIERTVCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCAxKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCAyLCAzMCksXFxuICAgICAgYWxsRGF5OiBmYWxzZSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnY3Jvc3NlcyBEU1QnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgMSksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgNiwgMzApLFxcbiAgICAgIGFsbERheTogZmFsc2UsXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ0FmdGVyIERTVCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCA3KSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCA5LCAzMCksXFxuICAgICAgYWxsRGF5OiBmYWxzZSxcXG4gICAgfSxcXG4gIF0sXFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAyMiwgMiwgMTMpLFxcbn1cXG5cXG5leHBvcnQgY29uc3QgRGF5bGlnaHRTYXZpbmdzU3RhcnRzQWZ0ZXIyQW0gPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkRheWxpZ2h0U2F2aW5nc1N0YXJ0c0FmdGVyMkFtLmFyZ1R5cGVzID0ge1xcbiAgbG9jYWxpemVyOiB7XFxuICAgIG9wdGlvbnM6IFsnZ2xvYmFsaXplJywgJ21vbWVudCcsICdsdXhvbiddLFxcbiAgICBjb250cm9sOiB7XFxuICAgICAgdHlwZTogJ3NlbGVjdCcsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5EYXlsaWdodFNhdmluZ3NTdGFydHNBZnRlcjJBbS5hcmdzID0ge1xcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcXG4gIGxvY2FsaXplcjogJ21vbWVudCcsXFxuICBtaW46IG1vbWVudCgnMzowMGFtJywgJ2g6bW1hJykudG9EYXRlKCksXFxuICBtYXg6IG1vbWVudCgnMTE6NTlwbScsICdoOm1tYScpLnRvRGF0ZSgpLFxcbiAgZXZlbnRzOiBbXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ29uIERTVCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCAxKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCAyLCAzMCksXFxuICAgICAgYWxsRGF5OiBmYWxzZSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnY3Jvc3NlcyBEU1QnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgMSksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgNiwgMzApLFxcbiAgICAgIGFsbERheTogZmFsc2UsXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ0FmdGVyIERTVCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCA3KSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCA5LCAzMCksXFxuICAgICAgYWxsRGF5OiBmYWxzZSxcXG4gICAgfSxcXG4gIF0sXFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAyMiwgMiwgMTMpLFxcbn1cXG5cXG5leHBvcnQgY29uc3QgRGF5bGlnaHRTYXZpbmdzRW5kcyA9IFRlbXBsYXRlLmJpbmQoe30pXFxuRGF5bGlnaHRTYXZpbmdzRW5kcy5hcmdUeXBlcyA9IHtcXG4gIGxvY2FsaXplcjoge1xcbiAgICBvcHRpb25zOiBbJ2dsb2JhbGl6ZScsICdtb21lbnQnLCAnbHV4b24nXSxcXG4gICAgY29udHJvbDoge1xcbiAgICAgIHR5cGU6ICdzZWxlY3QnLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuRGF5bGlnaHRTYXZpbmdzRW5kcy5hcmdzID0ge1xcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcXG4gIGxvY2FsaXplcjogJ21vbWVudCcsXFxuICBtaW46IG1vbWVudCgnMTI6MDBhbScsICdoOm1tYScpLnRvRGF0ZSgpLFxcbiAgbWF4OiBtb21lbnQoJzExOjU5cG0nLCAnaDptbWEnKS50b0RhdGUoKSxcXG4gIGV2ZW50czogW1xcbiAgICB7XFxuICAgICAgdGl0bGU6ICdvbiBEU1QnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAxMCwgNiwgMSksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAxMCwgNiwgMywgMzApLFxcbiAgICAgIGFsbERheTogZmFsc2UsXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ2Nyb3NzZXMgRFNUJyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAyMiwgMTAsIDYsIDEpLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAyMiwgMTAsIDYsIDYsIDMwKSxcXG4gICAgICBhbGxEYXk6IGZhbHNlLFxcbiAgICB9LFxcbiAgICB7XFxuICAgICAgdGl0bGU6ICdBZnRlciBEU1QnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAxMCwgNiwgNyksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAxMCwgNiwgNywgNDUpLFxcbiAgICAgIGFsbERheTogZmFsc2UsXFxuICAgIH0sXFxuICBdLFxcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMjIsIDEwLCA2KSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IERheWxpZ2h0U2F2aW5nc0VuZHNBZnRlcjJBbSA9IFRlbXBsYXRlLmJpbmQoe30pXFxuRGF5bGlnaHRTYXZpbmdzRW5kc0FmdGVyMkFtLmFyZ1R5cGVzID0ge1xcbiAgbG9jYWxpemVyOiB7XFxuICAgIG9wdGlvbnM6IFsnZ2xvYmFsaXplJywgJ21vbWVudCcsICdsdXhvbiddLFxcbiAgICBjb250cm9sOiB7XFxuICAgICAgdHlwZTogJ3NlbGVjdCcsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5EYXlsaWdodFNhdmluZ3NFbmRzQWZ0ZXIyQW0uYXJncyA9IHtcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5EQVksXFxuICBsb2NhbGl6ZXI6ICdtb21lbnQnLFxcbiAgbWluOiBtb21lbnQoJzM6MDBhbScsICdoOm1tYScpLnRvRGF0ZSgpLFxcbiAgbWF4OiBtb21lbnQoJzExOjU5cG0nLCAnaDptbWEnKS50b0RhdGUoKSxcXG4gIGV2ZW50czogW1xcbiAgICB7XFxuICAgICAgdGl0bGU6ICdBZnRlciBEU1QnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAxMCwgNiwgNyksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAxMCwgNiwgOSwgMzApLFxcbiAgICAgIGFsbERheTogZmFsc2UsXFxuICAgIH0sXFxuICBdLFxcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMjIsIDEwLCA2KSxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkRheWxpZ2h0U2F2aW5nc1N0YXJ0c1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzZ9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozOX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozNn0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozOX19LFwiRGF5bGlnaHRTYXZpbmdzU3RhcnRzQWZ0ZXIyQW1cIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjM2fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6Mzl9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzZ9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6Mzl9fSxcIkRheWxpZ2h0U2F2aW5nc0VuZHNcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjM2fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6Mzl9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzZ9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6Mzl9fSxcIkRheWxpZ2h0U2F2aW5nc0VuZHNBZnRlcjJBbVwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzZ9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozOX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozNn0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozOX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIENhbGVuZGFyLFxuICBWaWV3cyxcbiAgbW9tZW50TG9jYWxpemVyLFxuICBnbG9iYWxpemVMb2NhbGl6ZXIsXG4gIGx1eG9uTG9jYWxpemVyLFxufSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgd2l0aERyYWdBbmREcm9wIGZyb20gJy4uL3NyYy9hZGRvbnMvZHJhZ0FuZERyb3AnXG5cbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0ICdtb21lbnQtdGltZXpvbmUvYnVpbGRzL21vbWVudC10aW1lem9uZS13aXRoLWRhdGEtMTk3MC0yMDMwJ1xuaW1wb3J0IGdsb2JhbGl6ZSBmcm9tICdnbG9iYWxpemUnXG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gJ2x1eG9uJ1xuXG5jb25zdCBsb2NhbGl6ZXJzID0ge1xuICBnbG9iYWxpemU6IGdsb2JhbGl6ZUxvY2FsaXplcihnbG9iYWxpemUpLFxuICBtb21lbnQ6IG1vbWVudExvY2FsaXplcihtb21lbnQpLFxuICBsdXhvbjogbHV4b25Mb2NhbGl6ZXIoRGF0ZVRpbWUsIHsgZmlyc3REYXlPZldlZWs6IDcgfSksXG59XG5cbmNvbnN0IERyYWdnYWJsZUNhbGVuZGFyID0gd2l0aERyYWdBbmREcm9wKENhbGVuZGFyKVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnQWRkaXRpb25hbCBFeGFtcGxlcy9FdmVudCBEdXJhdGlvbnMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBkZWNvcmF0b3JzOiBbXG4gICAgKFN0b3J5KSA9PiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgICA8U3RvcnkgLz5cbiAgICAgIDwvZGl2PlxuICAgICksXG4gIF0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKHsgbG9jYWxpemVyOiBsb2MgPSAnbW9tZW50JywgLi4uYXJncyB9KSA9PiB7XG4gIGNvbnN0IGxvY2FsaXplciA9IGxvY2FsaXplcnNbbG9jXVxuICByZXR1cm4gPERyYWdnYWJsZUNhbGVuZGFyIGxvY2FsaXplcj17bG9jYWxpemVyfSB7Li4uYXJnc30gLz5cbn1cblxuZXhwb3J0IGNvbnN0IERheWxpZ2h0U2F2aW5nc1N0YXJ0cyA9IFRlbXBsYXRlLmJpbmQoe30pO1xuRGF5bGlnaHRTYXZpbmdzU3RhcnRzLmFyZ1R5cGVzID0ge1xuICBsb2NhbGl6ZXI6IHtcbiAgICBvcHRpb25zOiBbJ2dsb2JhbGl6ZScsICdtb21lbnQnLCAnbHV4b24nXSxcbiAgICBjb250cm9sOiB7XG4gICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICB9LFxuICB9LFxufVxuRGF5bGlnaHRTYXZpbmdzU3RhcnRzLmFyZ3MgPSB7XG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5EQVksXG4gIGxvY2FsaXplcjogJ21vbWVudCcsXG4gIG1pbjogbW9tZW50KCcxMjowMGFtJywgJ2g6bW1hJykudG9EYXRlKCksXG4gIG1heDogbW9tZW50KCcxMTo1OXBtJywgJ2g6bW1hJykudG9EYXRlKCksXG4gIGV2ZW50czogW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnb24gRFNUJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgMSksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCAyLCAzMCksXG4gICAgICBhbGxEYXk6IGZhbHNlLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdjcm9zc2VzIERTVCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAyMiwgMiwgMTMsIDEpLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgNiwgMzApLFxuICAgICAgYWxsRGF5OiBmYWxzZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnQWZ0ZXIgRFNUJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgNyksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCA5LCAzMCksXG4gICAgICBhbGxEYXk6IGZhbHNlLFxuICAgIH0sXG4gIF0sXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDIyLCAyLCAxMyksXG59XG5cbmV4cG9ydCBjb25zdCBEYXlsaWdodFNhdmluZ3NTdGFydHNBZnRlcjJBbSA9IFRlbXBsYXRlLmJpbmQoe30pO1xuRGF5bGlnaHRTYXZpbmdzU3RhcnRzQWZ0ZXIyQW0uYXJnVHlwZXMgPSB7XG4gIGxvY2FsaXplcjoge1xuICAgIG9wdGlvbnM6IFsnZ2xvYmFsaXplJywgJ21vbWVudCcsICdsdXhvbiddLFxuICAgIGNvbnRyb2w6IHtcbiAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgIH0sXG4gIH0sXG59XG5EYXlsaWdodFNhdmluZ3NTdGFydHNBZnRlcjJBbS5hcmdzID0ge1xuICBkZWZhdWx0VmlldzogVmlld3MuREFZLFxuICBsb2NhbGl6ZXI6ICdtb21lbnQnLFxuICBtaW46IG1vbWVudCgnMzowMGFtJywgJ2g6bW1hJykudG9EYXRlKCksXG4gIG1heDogbW9tZW50KCcxMTo1OXBtJywgJ2g6bW1hJykudG9EYXRlKCksXG4gIGV2ZW50czogW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnb24gRFNUJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgMSksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCAyLCAzMCksXG4gICAgICBhbGxEYXk6IGZhbHNlLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdjcm9zc2VzIERTVCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAyMiwgMiwgMTMsIDEpLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgNiwgMzApLFxuICAgICAgYWxsRGF5OiBmYWxzZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnQWZ0ZXIgRFNUJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCAyLCAxMywgNyksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMjIsIDIsIDEzLCA5LCAzMCksXG4gICAgICBhbGxEYXk6IGZhbHNlLFxuICAgIH0sXG4gIF0sXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDIyLCAyLCAxMyksXG59XG5cbmV4cG9ydCBjb25zdCBEYXlsaWdodFNhdmluZ3NFbmRzID0gVGVtcGxhdGUuYmluZCh7fSk7XG5EYXlsaWdodFNhdmluZ3NFbmRzLmFyZ1R5cGVzID0ge1xuICBsb2NhbGl6ZXI6IHtcbiAgICBvcHRpb25zOiBbJ2dsb2JhbGl6ZScsICdtb21lbnQnLCAnbHV4b24nXSxcbiAgICBjb250cm9sOiB7XG4gICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICB9LFxuICB9LFxufVxuRGF5bGlnaHRTYXZpbmdzRW5kcy5hcmdzID0ge1xuICBkZWZhdWx0VmlldzogVmlld3MuREFZLFxuICBsb2NhbGl6ZXI6ICdtb21lbnQnLFxuICBtaW46IG1vbWVudCgnMTI6MDBhbScsICdoOm1tYScpLnRvRGF0ZSgpLFxuICBtYXg6IG1vbWVudCgnMTE6NTlwbScsICdoOm1tYScpLnRvRGF0ZSgpLFxuICBldmVudHM6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ29uIERTVCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAyMiwgMTAsIDYsIDEpLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAxMCwgNiwgMywgMzApLFxuICAgICAgYWxsRGF5OiBmYWxzZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnY3Jvc3NlcyBEU1QnLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMjIsIDEwLCA2LCAxKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAyMiwgMTAsIDYsIDYsIDMwKSxcbiAgICAgIGFsbERheTogZmFsc2UsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ0FmdGVyIERTVCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAyMiwgMTAsIDYsIDcpLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCAxMCwgNiwgNywgNDUpLFxuICAgICAgYWxsRGF5OiBmYWxzZSxcbiAgICB9LFxuICBdLFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAyMiwgMTAsIDYpLFxufVxuXG5leHBvcnQgY29uc3QgRGF5bGlnaHRTYXZpbmdzRW5kc0FmdGVyMkFtID0gVGVtcGxhdGUuYmluZCh7fSk7RGF5bGlnaHRTYXZpbmdzRW5kc0FmdGVyMkFtLmFyZ1R5cGVzID0ge1xuICBsb2NhbGl6ZXI6IHtcbiAgICBvcHRpb25zOiBbJ2dsb2JhbGl6ZScsICdtb21lbnQnLCAnbHV4b24nXSxcbiAgICBjb250cm9sOiB7XG4gICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICB9LFxuICB9LFxufVxuRGF5bGlnaHRTYXZpbmdzRW5kc0FmdGVyMkFtLmFyZ3MgPSB7XG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5EQVksXG4gIGxvY2FsaXplcjogJ21vbWVudCcsXG4gIG1pbjogbW9tZW50KCczOjAwYW0nLCAnaDptbWEnKS50b0RhdGUoKSxcbiAgbWF4OiBtb21lbnQoJzExOjU5cG0nLCAnaDptbWEnKS50b0RhdGUoKSxcbiAgZXZlbnRzOiBbXG4gICAge1xuICAgICAgdGl0bGU6ICdBZnRlciBEU1QnLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMjIsIDEwLCA2LCA3KSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAyMiwgMTAsIDYsIDksIDMwKSxcbiAgICAgIGFsbERheTogZmFsc2UsXG4gICAgfSxcbiAgXSxcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMjIsIDEwLCA2KSxcbn1cblxuXG5cbkRheWxpZ2h0U2F2aW5nc1N0YXJ0cy5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKHsgbG9jYWxpemVyOiBsb2MgPSAnbW9tZW50JywgLi4uYXJncyB9KSA9PiB7XFxuICBjb25zdCBsb2NhbGl6ZXIgPSBsb2NhbGl6ZXJzW2xvY11cXG4gIHJldHVybiA8RHJhZ2dhYmxlQ2FsZW5kYXIgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IHsuLi5hcmdzfSAvPlxcbn1cIiB9LCAuLi5EYXlsaWdodFNhdmluZ3NTdGFydHMucGFyYW1ldGVycyB9O1xuRGF5bGlnaHRTYXZpbmdzU3RhcnRzQWZ0ZXIyQW0ucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIih7IGxvY2FsaXplcjogbG9jID0gJ21vbWVudCcsIC4uLmFyZ3MgfSkgPT4ge1xcbiAgY29uc3QgbG9jYWxpemVyID0gbG9jYWxpemVyc1tsb2NdXFxuICByZXR1cm4gPERyYWdnYWJsZUNhbGVuZGFyIGxvY2FsaXplcj17bG9jYWxpemVyfSB7Li4uYXJnc30gLz5cXG59XCIgfSwgLi4uRGF5bGlnaHRTYXZpbmdzU3RhcnRzQWZ0ZXIyQW0ucGFyYW1ldGVycyB9O1xuRGF5bGlnaHRTYXZpbmdzRW5kcy5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKHsgbG9jYWxpemVyOiBsb2MgPSAnbW9tZW50JywgLi4uYXJncyB9KSA9PiB7XFxuICBjb25zdCBsb2NhbGl6ZXIgPSBsb2NhbGl6ZXJzW2xvY11cXG4gIHJldHVybiA8RHJhZ2dhYmxlQ2FsZW5kYXIgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IHsuLi5hcmdzfSAvPlxcbn1cIiB9LCAuLi5EYXlsaWdodFNhdmluZ3NFbmRzLnBhcmFtZXRlcnMgfTtcbkRheWxpZ2h0U2F2aW5nc0VuZHNBZnRlcjJBbS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKHsgbG9jYWxpemVyOiBsb2MgPSAnbW9tZW50JywgLi4uYXJncyB9KSA9PiB7XFxuICBjb25zdCBsb2NhbGl6ZXIgPSBsb2NhbGl6ZXJzW2xvY11cXG4gIHJldHVybiA8RHJhZ2dhYmxlQ2FsZW5kYXIgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IHsuLi5hcmdzfSAvPlxcbn1cIiB9LCAuLi5EYXlsaWdodFNhdmluZ3NFbmRzQWZ0ZXIyQW0ucGFyYW1ldGVycyB9OyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCB7IGFjdGlvbiB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tYWN0aW9ucydcXG5cXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5cXG5pbXBvcnQgeyBldmVudHMsIENhbGVuZGFyLCBWaWV3cywgRHJhZ0FuZERyb3BDYWxlbmRhciB9IGZyb20gJy4vaGVscGVycydcXG5pbXBvcnQgY3JlYXRlRXZlbnRzIGZyb20gJy4vaGVscGVycy9jcmVhdGVFdmVudHMnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdBZGRpdGlvbmFsIEV4YW1wbGVzL0xheW91dCcsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgZGVjb3JhdG9yczogW1xcbiAgICAoU3RvcnkpID0+IChcXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICAgIDxTdG9yeSAvPlxcbiAgICAgIDwvZGl2PlxcbiAgICApLFxcbiAgXSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcblxcbmNvbnN0IGRlZmF1bHREYXRlID0gbmV3IERhdGUoKVxcblxcbmV4cG9ydCBjb25zdCBFdmVudExheW91dCA9IFRlbXBsYXRlLmJpbmQoe30pXFxuRXZlbnRMYXlvdXQuYXJncyA9IHtcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5EQVksXFxuICBkZWZhdWx0RGF0ZSxcXG4gIHRpbWVzbG90czogNCxcXG4gIGV2ZW50czogY3JlYXRlRXZlbnRzKDEpLFxcbn1cXG5cXG5leHBvcnQgY29uc3QgRmlyc3RPZldlZWtBbGxEYXkgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkZpcnN0T2ZXZWVrQWxsRGF5LnN0b3J5TmFtZSA9ICdmaXJzdCBvZiB0aGUgd2VlayBhbGwtZGF5IGV2ZW50J1xcbkZpcnN0T2ZXZWVrQWxsRGF5LmFyZ3MgPSB7XFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxcbiAgZXZlbnRzOiBbXFxuICAgIHtcXG4gICAgICBhbGxEYXk6IHRydWUsXFxuICAgICAgdGl0bGU6ICdBbGwgRGF5IEV2ZW50JyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxcbiAgICB9LFxcbiAgXSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IEVuZE9mV2Vla0FsbERheSA9IFRlbXBsYXRlLmJpbmQoe30pXFxuRW5kT2ZXZWVrQWxsRGF5LnN0b3J5TmFtZSA9ICdlbmQgb2YgdGhlIHdlZWsgYWxsLWRheSBldmVudCdcXG5FbmRPZldlZWtBbGxEYXkuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXFxuICBldmVudHM6IFtcXG4gICAge1xcbiAgICAgIGFsbERheTogdHJ1ZSxcXG4gICAgICB0aXRsZTogJ0FsbCBEYXkgRXZlbnQnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXFxuICAgIH0sXFxuICBdLFxcbn1cXG5cXG5leHBvcnQgY29uc3QgRXZlbnRBdFN0YXJ0T2ZXZWVrID0gVGVtcGxhdGUuYmluZCh7fSlcXG5FdmVudEF0U3RhcnRPZldlZWsuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE2LCAxMSwgNCksXFxuICBldmVudHM6IFtcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnaGFzIHRpbWUnLFxcbiAgICAgIHN0YXJ0OiBtb21lbnQobmV3IERhdGUoMjAxNiwgMTEsIDQpKVxcbiAgICAgICAgLmFkZCgxLCAnZGF5cycpXFxuICAgICAgICAuc3VidHJhY3QoNSwgJ2hvdXJzJylcXG4gICAgICAgIC50b0RhdGUoKSxcXG4gICAgICBlbmQ6IG1vbWVudChuZXcgRGF0ZSgyMDE2LCAxMSwgNCkpXFxuICAgICAgICAuYWRkKDEsICdkYXlzJylcXG4gICAgICAgIC5zdWJ0cmFjdCg0LCAnaG91cnMnKVxcbiAgICAgICAgLnRvRGF0ZSgpLFxcbiAgICB9LFxcbiAgXSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IEV2ZW50QXRFbmRPZldlZWsgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkV2ZW50QXRFbmRPZldlZWsuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXFxuICBldmVudHM6IFtcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnaGFzIHRpbWUnLFxcbiAgICAgIHN0YXJ0OiBtb21lbnQobmV3IERhdGUoMjAxNiwgMTEsIDMpKVxcbiAgICAgICAgLmFkZCgxLCAnZGF5cycpXFxuICAgICAgICAuc3VidHJhY3QoNSwgJ2hvdXJzJylcXG4gICAgICAgIC50b0RhdGUoKSxcXG4gICAgICBlbmQ6IG1vbWVudChuZXcgRGF0ZSgyMDE2LCAxMSwgMykpXFxuICAgICAgICAuYWRkKDEsICdkYXlzJylcXG4gICAgICAgIC5zdWJ0cmFjdCg0LCAnaG91cnMnKVxcbiAgICAgICAgLnRvRGF0ZSgpLFxcbiAgICB9LFxcbiAgXSxcXG59XFxuXFxuZXhwb3J0IGNvbnN0IEV2ZW50c09uQUNvbnN0cmFpbmVkRGF5Q29sdW1uID0gVGVtcGxhdGUuYmluZCh7fSlcXG5FdmVudHNPbkFDb25zdHJhaW5lZERheUNvbHVtbi5hcmdzID0ge1xcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcXG4gIG1pbjogbW9tZW50KCc4IGFtJywgJ2ggYScpLnRvRGF0ZSgpLFxcbiAgbWF4OiBtb21lbnQoJzUgcG0nLCAnaCBhJykudG9EYXRlKCksXFxuICBldmVudHMsXFxufVxcblxcbmV4cG9ydCBjb25zdCBOb0R1cmF0aW9uID0gVGVtcGxhdGUuYmluZCh7fSlcXG5Ob0R1cmF0aW9uLmFyZ3MgPSB7XFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxcbiAgZXZlbnRzOiBbXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ3N0YXJ0IG9mIHRoZSB3ZWVrJyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxcbiAgICB9LFxcbiAgICB7XFxuICAgICAgdGl0bGU6ICdlbmQgb2YgdGhlIHdlZWsnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ21pZGRsZScsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDExLCA2KSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCA2KSxcXG4gICAgfSxcXG4gIF0sXFxufVxcblxcbmV4cG9ydCBjb25zdCBEYXlTcGFuID0gVGVtcGxhdGUuYmluZCh7fSlcXG5EYXlTcGFuLnN0b3J5TmFtZSA9ICdTaW5nbGUgZGF5cyBzaG91bGQgb25seSBzcGFuIG9uZSBzbG90LCBtdWx0aS1kYXlzIG11bHRpcGxlJ1xcbkRheVNwYW4uYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcXG4gIGV2ZW50czogW1xcbiAgICB7XFxuICAgICAgdGl0bGU6ICdTaW5nbGVEYXkgMScsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEwKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDExKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnU2luZ2xlRGF5IDInLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxMSksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMiksXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ1NpbmdsZURheSAzJyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMTIpLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgICB9LFxcbiAgICB7XFxuICAgICAgdGl0bGU6ICdTaW5nbGVEYXkgNCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDE0KSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnTXVsdGlEYXkgMScsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDI0KSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDI1LCAxLCAwLCAwLCAwKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnTXVsdGlEYXkgMicsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDI1KSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDI2LCAxLCAwLCAwLCAwKSxcXG4gICAgfSxcXG4gIF0sXFxufVxcblxcbmV4cG9ydCBjb25zdCBaZXJvRHVyYXRpb25PZGRpdGllcyA9ICgpID0+IHtcXG4gIHJldHVybiAoXFxuICAgIDxEcmFnQW5kRHJvcENhbGVuZGFyXFxuICAgICAgZGVmYXVsdERhdGU9e25ldyBEYXRlKDIwMTUsIDMsIDEpfVxcbiAgICAgIGV2ZW50cz17W1xcbiAgICAgICAge1xcbiAgICAgICAgICBpZDogNCxcXG4gICAgICAgICAgdGl0bGU6ICcwIGRheSBkdXJhdGlvbicsXFxuICAgICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCA4LCAwLCAwLCAwKSxcXG4gICAgICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCA4LCAwLCAwLCAwKSxcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgIGlkOiA0LFxcbiAgICAgICAgICB0aXRsZTogJzEgZGF5IGR1cmF0aW9uJyxcXG4gICAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDksIDAsIDAsIDApLFxcbiAgICAgICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEwLCAwLCAwLCAwKSxcXG4gICAgICAgIH0sXFxuICAgICAgXX1cXG4gICAgLz5cXG4gIClcXG59XFxuXFxuZXhwb3J0IGNvbnN0IFplcm9EdXJhdGlvbk92ZXJsYXAgPSAoKSA9PiB7XFxuICByZXR1cm4gKFxcbiAgICA8RHJhZ0FuZERyb3BDYWxlbmRhclxcbiAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICBldmVudHM9e1tcXG4gICAgICAgIHtcXG4gICAgICAgICAgdGl0bGU6ICdldmVudCBhJyxcXG4gICAgICAgICAgc3RhcnQ6IGRlZmF1bHREYXRlLFxcbiAgICAgICAgICBlbmQ6IGRlZmF1bHREYXRlLFxcbiAgICAgICAgfSxcXG4gICAgICAgIHtcXG4gICAgICAgICAgdGl0bGU6ICdldmVudCBiJyxcXG4gICAgICAgICAgc3RhcnQ6IGRlZmF1bHREYXRlLFxcbiAgICAgICAgICBlbmQ6IGRlZmF1bHREYXRlLFxcbiAgICAgICAgfSxcXG4gICAgICBdfVxcbiAgICAgIGRheUxheW91dEFsZ29yaXRobT17J25vLW92ZXJsYXAnfVxcbiAgICAgIHNjcm9sbFRvVGltZT17ZGVmYXVsdERhdGV9XFxuICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgIC8+XFxuICApXFxufVxcblxcbmV4cG9ydCBjb25zdCBPdmVybGFwcGluZ0JhY2tncm91bmRFdmVudHNPdmVybGFwID0gVGVtcGxhdGUuYmluZCh7fSlcXG5PdmVybGFwcGluZ0JhY2tncm91bmRFdmVudHNPdmVybGFwLnN0b3J5TmFtZSA9XFxuICBcXFwiT3ZlcmxhcHBpbmcgQmFja2dyb3VuZCBFdmVudHMgLSAnb3ZlcmxhcCdcXFwiXFxuT3ZlcmxhcHBpbmdCYWNrZ3JvdW5kRXZlbnRzT3ZlcmxhcC5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTYsIDExLCAzKSxcXG4gIGRheUxheW91dEFsZ29yaXRobTogJ292ZXJsYXAnLFxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXFxuICBzY3JvbGxUb1RpbWU6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCA3LCAwKSxcXG4gIGJhY2tncm91bmRFdmVudHM6IFtcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnRmlyc3QgRXZlbnQnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjgsIDEwLCAzMCksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjgsIDE4LCAwKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnU2Vjb25kIEV2ZW50JyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI4LCAxMiwgMCksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjgsIDE2LCAzMCksXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ1RoaXJkIEV2ZW50JyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI5LCA4LCAwKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOSwgMjEsIDApLFxcbiAgICB9LFxcbiAgICB7XFxuICAgICAgdGl0bGU6ICdGb3VydGggRXZlbnQnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDksIDMwKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOSwgMTksIDMwKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnRmlmdGggRXZlbnQnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDExLCAwKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOSwgMTgsIDApLFxcbiAgICB9LFxcbiAgICB7XFxuICAgICAgdGl0bGU6ICdTaXh0aCBFdmVudCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCA5LCAwKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCAxNCwgMCksXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ1NldmVudGggRXZlbnQnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgMTEsIDApLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDEsIDE2LCAwKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnRWlnaHRoIEV2ZW50JyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDEsIDEzLCAwKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCAxOCwgMCksXFxuICAgIH0sXFxuICBdLFxcbn1cXG5cXG5leHBvcnQgY29uc3QgT3ZlcmxhcHBpbmdCYWNrZ3JvdW5kRXZlbnRzTm9PdmVybGFwID0gVGVtcGxhdGUuYmluZCh7fSlcXG5PdmVybGFwcGluZ0JhY2tncm91bmRFdmVudHNOb092ZXJsYXAuc3RvcnlOYW1lID1cXG4gIFxcXCJPdmVybGFwcGluZyBCYWNrZ3JvdW5kIEV2ZW50cyAtICduby1vdmVybGFwJ1xcXCJcXG5PdmVybGFwcGluZ0JhY2tncm91bmRFdmVudHNOb092ZXJsYXAuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXFxuICBkYXlMYXlvdXRBbGdvcml0aG06ICduby1vdmVybGFwJyxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgc2Nyb2xsVG9UaW1lOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgNywgMCksXFxuICBiYWNrZ3JvdW5kRXZlbnRzOiBbXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ0ZpcnN0IEV2ZW50JyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI4LCAxMCwgMzApLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTAsIDI4LCAxOCwgMCksXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ1NlY29uZCBFdmVudCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOCwgMTIsIDApLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTAsIDI4LCAxNiwgMzApLFxcbiAgICB9LFxcbiAgICB7XFxuICAgICAgdGl0bGU6ICdUaGlyZCBFdmVudCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOSwgOCwgMCksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDIxLCAwKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnRm91cnRoIEV2ZW50JyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI5LCA5LCAzMCksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDE5LCAzMCksXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ0ZpZnRoIEV2ZW50JyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI5LCAxMSwgMCksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDE4LCAwKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnU2l4dGggRXZlbnQnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgOSwgMCksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgMTQsIDApLFxcbiAgICB9LFxcbiAgICB7XFxuICAgICAgdGl0bGU6ICdTZXZlbnRoIEV2ZW50JyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDEsIDExLCAwKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCAxNiwgMCksXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ0VpZ2h0aCBFdmVudCcsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCAxMywgMCksXFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgMTgsIDApLFxcbiAgICB9LFxcbiAgXSxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkV2ZW50TGF5b3V0XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyMX0sXCJlbmRMb2NcIjp7XCJjb2xcIjo0OSxcImxpbmVcIjoyMX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyMX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6NDksXCJsaW5lXCI6MjF9fSxcIkZpcnN0T2ZXZWVrQWxsRGF5XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyMX0sXCJlbmRMb2NcIjp7XCJjb2xcIjo0OSxcImxpbmVcIjoyMX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyMX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6NDksXCJsaW5lXCI6MjF9fSxcIkVuZE9mV2Vla0FsbERheVwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjF9LFwiZW5kTG9jXCI6e1wiY29sXCI6NDksXCJsaW5lXCI6MjF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjF9LFwiZW5kQm9keVwiOntcImNvbFwiOjQ5LFwibGluZVwiOjIxfX0sXCJFdmVudEF0U3RhcnRPZldlZWtcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjIxfSxcImVuZExvY1wiOntcImNvbFwiOjQ5LFwibGluZVwiOjIxfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjIxfSxcImVuZEJvZHlcIjp7XCJjb2xcIjo0OSxcImxpbmVcIjoyMX19LFwiRXZlbnRBdEVuZE9mV2Vla1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjF9LFwiZW5kTG9jXCI6e1wiY29sXCI6NDksXCJsaW5lXCI6MjF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjF9LFwiZW5kQm9keVwiOntcImNvbFwiOjQ5LFwibGluZVwiOjIxfX0sXCJFdmVudHNPbkFDb25zdHJhaW5lZERheUNvbHVtblwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjF9LFwiZW5kTG9jXCI6e1wiY29sXCI6NDksXCJsaW5lXCI6MjF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjF9LFwiZW5kQm9keVwiOntcImNvbFwiOjQ5LFwibGluZVwiOjIxfX0sXCJOb0R1cmF0aW9uXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyMX0sXCJlbmRMb2NcIjp7XCJjb2xcIjo0OSxcImxpbmVcIjoyMX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyMX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6NDksXCJsaW5lXCI6MjF9fSxcIkRheVNwYW5cIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjIxfSxcImVuZExvY1wiOntcImNvbFwiOjQ5LFwibGluZVwiOjIxfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjIxfSxcImVuZEJvZHlcIjp7XCJjb2xcIjo0OSxcImxpbmVcIjoyMX19LFwiWmVyb0R1cmF0aW9uT2RkaXRpZXNcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjM2LFwibGluZVwiOjE2NX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjE4NX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjozNixcImxpbmVcIjoxNjV9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MTg1fX0sXCJaZXJvRHVyYXRpb25PdmVybGFwXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjozNSxcImxpbmVcIjoxODd9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMDh9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MzUsXCJsaW5lXCI6MTg3fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwOH19LFwiT3ZlcmxhcHBpbmdCYWNrZ3JvdW5kRXZlbnRzT3ZlcmxhcFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjF9LFwiZW5kTG9jXCI6e1wiY29sXCI6NDksXCJsaW5lXCI6MjF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjF9LFwiZW5kQm9keVwiOntcImNvbFwiOjQ5LFwibGluZVwiOjIxfX0sXCJPdmVybGFwcGluZ0JhY2tncm91bmRFdmVudHNOb092ZXJsYXBcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjIxfSxcImVuZExvY1wiOntcImNvbFwiOjQ5LFwibGluZVwiOjIxfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjIxfSxcImVuZEJvZHlcIjp7XCJjb2xcIjo0OSxcImxpbmVcIjoyMX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGFjdGlvbiB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tYWN0aW9ucydcblxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5cbmltcG9ydCB7IGV2ZW50cywgQ2FsZW5kYXIsIFZpZXdzLCBEcmFnQW5kRHJvcENhbGVuZGFyIH0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IGNyZWF0ZUV2ZW50cyBmcm9tICcuL2hlbHBlcnMvY3JlYXRlRXZlbnRzJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnQWRkaXRpb25hbCBFeGFtcGxlcy9MYXlvdXQnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBkZWNvcmF0b3JzOiBbXG4gICAgKFN0b3J5KSA9PiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgICA8U3RvcnkgLz5cbiAgICAgIDwvZGl2PlxuICAgICksXG4gIF0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IDxDYWxlbmRhciB7Li4uYXJnc30gLz5cblxuY29uc3QgZGVmYXVsdERhdGUgPSBuZXcgRGF0ZSgpXG5cbmV4cG9ydCBjb25zdCBFdmVudExheW91dCA9IFRlbXBsYXRlLmJpbmQoe30pO1xuRXZlbnRMYXlvdXQuYXJncyA9IHtcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcbiAgZGVmYXVsdERhdGUsXG4gIHRpbWVzbG90czogNCxcbiAgZXZlbnRzOiBjcmVhdGVFdmVudHMoMSksXG59XG5cbmV4cG9ydCBjb25zdCBGaXJzdE9mV2Vla0FsbERheSA9IFRlbXBsYXRlLmJpbmQoe30pO1xuRmlyc3RPZldlZWtBbGxEYXkuc3RvcnlOYW1lID0gJ2ZpcnN0IG9mIHRoZSB3ZWVrIGFsbC1kYXkgZXZlbnQnXG5GaXJzdE9mV2Vla0FsbERheS5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxuICBldmVudHM6IFtcbiAgICB7XG4gICAgICBhbGxEYXk6IHRydWUsXG4gICAgICB0aXRsZTogJ0FsbCBEYXkgRXZlbnQnLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDExLCA0KSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxuICAgIH0sXG4gIF0sXG59XG5cbmV4cG9ydCBjb25zdCBFbmRPZldlZWtBbGxEYXkgPSBUZW1wbGF0ZS5iaW5kKHt9KTtcbkVuZE9mV2Vla0FsbERheS5zdG9yeU5hbWUgPSAnZW5kIG9mIHRoZSB3ZWVrIGFsbC1kYXkgZXZlbnQnXG5FbmRPZldlZWtBbGxEYXkuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTYsIDExLCAzKSxcbiAgZXZlbnRzOiBbXG4gICAge1xuICAgICAgYWxsRGF5OiB0cnVlLFxuICAgICAgdGl0bGU6ICdBbGwgRGF5IEV2ZW50JyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCAzKSxcbiAgICB9LFxuICBdLFxufVxuXG5leHBvcnQgY29uc3QgRXZlbnRBdFN0YXJ0T2ZXZWVrID0gVGVtcGxhdGUuYmluZCh7fSk7XG5FdmVudEF0U3RhcnRPZldlZWsuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTYsIDExLCA0KSxcbiAgZXZlbnRzOiBbXG4gICAge1xuICAgICAgdGl0bGU6ICdoYXMgdGltZScsXG4gICAgICBzdGFydDogbW9tZW50KG5ldyBEYXRlKDIwMTYsIDExLCA0KSlcbiAgICAgICAgLmFkZCgxLCAnZGF5cycpXG4gICAgICAgIC5zdWJ0cmFjdCg1LCAnaG91cnMnKVxuICAgICAgICAudG9EYXRlKCksXG4gICAgICBlbmQ6IG1vbWVudChuZXcgRGF0ZSgyMDE2LCAxMSwgNCkpXG4gICAgICAgIC5hZGQoMSwgJ2RheXMnKVxuICAgICAgICAuc3VidHJhY3QoNCwgJ2hvdXJzJylcbiAgICAgICAgLnRvRGF0ZSgpLFxuICAgIH0sXG4gIF0sXG59XG5cbmV4cG9ydCBjb25zdCBFdmVudEF0RW5kT2ZXZWVrID0gVGVtcGxhdGUuYmluZCh7fSk7XG5FdmVudEF0RW5kT2ZXZWVrLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXG4gIGV2ZW50czogW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnaGFzIHRpbWUnLFxuICAgICAgc3RhcnQ6IG1vbWVudChuZXcgRGF0ZSgyMDE2LCAxMSwgMykpXG4gICAgICAgIC5hZGQoMSwgJ2RheXMnKVxuICAgICAgICAuc3VidHJhY3QoNSwgJ2hvdXJzJylcbiAgICAgICAgLnRvRGF0ZSgpLFxuICAgICAgZW5kOiBtb21lbnQobmV3IERhdGUoMjAxNiwgMTEsIDMpKVxuICAgICAgICAuYWRkKDEsICdkYXlzJylcbiAgICAgICAgLnN1YnRyYWN0KDQsICdob3VycycpXG4gICAgICAgIC50b0RhdGUoKSxcbiAgICB9LFxuICBdLFxufVxuXG5leHBvcnQgY29uc3QgRXZlbnRzT25BQ29uc3RyYWluZWREYXlDb2x1bW4gPSBUZW1wbGF0ZS5iaW5kKHt9KTtcbkV2ZW50c09uQUNvbnN0cmFpbmVkRGF5Q29sdW1uLmFyZ3MgPSB7XG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5EQVksXG4gIG1pbjogbW9tZW50KCc4IGFtJywgJ2ggYScpLnRvRGF0ZSgpLFxuICBtYXg6IG1vbWVudCgnNSBwbScsICdoIGEnKS50b0RhdGUoKSxcbiAgZXZlbnRzLFxufVxuXG5leHBvcnQgY29uc3QgTm9EdXJhdGlvbiA9IFRlbXBsYXRlLmJpbmQoe30pO1xuTm9EdXJhdGlvbi5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxuICBldmVudHM6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ3N0YXJ0IG9mIHRoZSB3ZWVrJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgNCksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCA0KSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnZW5kIG9mIHRoZSB3ZWVrJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCAzKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnbWlkZGxlJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgNiksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCA2KSxcbiAgICB9LFxuICBdLFxufVxuXG5leHBvcnQgY29uc3QgRGF5U3BhbiA9IFRlbXBsYXRlLmJpbmQoe30pO1xuRGF5U3Bhbi5zdG9yeU5hbWUgPSAnU2luZ2xlIGRheXMgc2hvdWxkIG9ubHkgc3BhbiBvbmUgc2xvdCwgbXVsdGktZGF5cyBtdWx0aXBsZSdcbkRheVNwYW4uYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxuICBldmVudHM6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ1NpbmdsZURheSAxJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxMCksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDExKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnU2luZ2xlRGF5IDInLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDExKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTIpLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdTaW5nbGVEYXkgMycsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMTIpLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ1NpbmdsZURheSA0JyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDE0KSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnTXVsdGlEYXkgMScsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMjQpLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAyNSwgMSwgMCwgMCwgMCksXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ011bHRpRGF5IDInLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDI1KSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMjYsIDEsIDAsIDAsIDApLFxuICAgIH0sXG4gIF0sXG59XG5cbmV4cG9ydCBjb25zdCBaZXJvRHVyYXRpb25PZGRpdGllcyA9ICgpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8RHJhZ0FuZERyb3BDYWxlbmRhclxuICAgICAgZGVmYXVsdERhdGU9e25ldyBEYXRlKDIwMTUsIDMsIDEpfVxuICAgICAgZXZlbnRzPXtbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogNCxcbiAgICAgICAgICB0aXRsZTogJzAgZGF5IGR1cmF0aW9uJyxcbiAgICAgICAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgOCwgMCwgMCwgMCksXG4gICAgICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCA4LCAwLCAwLCAwKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiA0LFxuICAgICAgICAgIHRpdGxlOiAnMSBkYXkgZHVyYXRpb24nLFxuICAgICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCA5LCAwLCAwLCAwKSxcbiAgICAgICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEwLCAwLCAwLCAwKSxcbiAgICAgICAgfSxcbiAgICAgIF19XG4gICAgLz5cbiAgKVxufTtcblxuZXhwb3J0IGNvbnN0IFplcm9EdXJhdGlvbk92ZXJsYXAgPSAoKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPERyYWdBbmREcm9wQ2FsZW5kYXJcbiAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgIGV2ZW50cz17W1xuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdldmVudCBhJyxcbiAgICAgICAgICBzdGFydDogZGVmYXVsdERhdGUsXG4gICAgICAgICAgZW5kOiBkZWZhdWx0RGF0ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiAnZXZlbnQgYicsXG4gICAgICAgICAgc3RhcnQ6IGRlZmF1bHREYXRlLFxuICAgICAgICAgIGVuZDogZGVmYXVsdERhdGUsXG4gICAgICAgIH0sXG4gICAgICBdfVxuICAgICAgZGF5TGF5b3V0QWxnb3JpdGhtPXsnbm8tb3ZlcmxhcCd9XG4gICAgICBzY3JvbGxUb1RpbWU9e2RlZmF1bHREYXRlfVxuICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XG4gICAgLz5cbiAgKVxufTtcblxuZXhwb3J0IGNvbnN0IE92ZXJsYXBwaW5nQmFja2dyb3VuZEV2ZW50c092ZXJsYXAgPSBUZW1wbGF0ZS5iaW5kKHt9KTtcbk92ZXJsYXBwaW5nQmFja2dyb3VuZEV2ZW50c092ZXJsYXAuc3RvcnlOYW1lID1cbiAgXCJPdmVybGFwcGluZyBCYWNrZ3JvdW5kIEV2ZW50cyAtICdvdmVybGFwJ1wiXG5PdmVybGFwcGluZ0JhY2tncm91bmRFdmVudHNPdmVybGFwLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXG4gIGRheUxheW91dEFsZ29yaXRobTogJ292ZXJsYXAnLFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcbiAgc2Nyb2xsVG9UaW1lOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgNywgMCksXG4gIGJhY2tncm91bmRFdmVudHM6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ0ZpcnN0IEV2ZW50JyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjgsIDEwLCAzMCksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOCwgMTgsIDApLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdTZWNvbmQgRXZlbnQnLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOCwgMTIsIDApLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjgsIDE2LCAzMCksXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ1RoaXJkIEV2ZW50JyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDgsIDApLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDIxLCAwKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnRm91cnRoIEV2ZW50JyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDksIDMwKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTAsIDI5LCAxOSwgMzApLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdGaWZ0aCBFdmVudCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI5LCAxMSwgMCksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOSwgMTgsIDApLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdTaXh0aCBFdmVudCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDEsIDksIDApLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgMTQsIDApLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdTZXZlbnRoIEV2ZW50JyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgMTEsIDApLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgMTYsIDApLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdFaWdodGggRXZlbnQnLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCAxMywgMCksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCAxOCwgMCksXG4gICAgfSxcbiAgXSxcbn1cblxuZXhwb3J0IGNvbnN0IE92ZXJsYXBwaW5nQmFja2dyb3VuZEV2ZW50c05vT3ZlcmxhcCA9IFRlbXBsYXRlLmJpbmQoe30pO092ZXJsYXBwaW5nQmFja2dyb3VuZEV2ZW50c05vT3ZlcmxhcC5zdG9yeU5hbWUgPVxuICBcIk92ZXJsYXBwaW5nIEJhY2tncm91bmQgRXZlbnRzIC0gJ25vLW92ZXJsYXAnXCJcbk92ZXJsYXBwaW5nQmFja2dyb3VuZEV2ZW50c05vT3ZlcmxhcC5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNiwgMTEsIDMpLFxuICBkYXlMYXlvdXRBbGdvcml0aG06ICduby1vdmVybGFwJyxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXG4gIHNjcm9sbFRvVGltZTogbmV3IERhdGUoMjAxNiwgMTEsIDEsIDcsIDApLFxuICBiYWNrZ3JvdW5kRXZlbnRzOiBbXG4gICAge1xuICAgICAgdGl0bGU6ICdGaXJzdCBFdmVudCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI4LCAxMCwgMzApLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjgsIDE4LCAwKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnU2Vjb25kIEV2ZW50JyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjgsIDEyLCAwKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTAsIDI4LCAxNiwgMzApLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdUaGlyZCBFdmVudCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI5LCA4LCAwKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTAsIDI5LCAyMSwgMCksXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ0ZvdXJ0aCBFdmVudCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTAsIDI5LCA5LCAzMCksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOSwgMTksIDMwKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnRmlmdGggRXZlbnQnLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAyOSwgMTEsIDApLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMCwgMjksIDE4LCAwKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnU2l4dGggRXZlbnQnLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDExLCAxLCA5LCAwKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDEsIDE0LCAwKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnU2V2ZW50aCBFdmVudCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDEsIDExLCAwKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDEsIDE2LCAwKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnRWlnaHRoIEV2ZW50JyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgMTMsIDApLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMSwgMTgsIDApLFxuICAgIH0sXG4gIF0sXG59XG5cblxuXG5FdmVudExheW91dC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IDxDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5FdmVudExheW91dC5wYXJhbWV0ZXJzIH07XG5GaXJzdE9mV2Vla0FsbERheS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IDxDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5GaXJzdE9mV2Vla0FsbERheS5wYXJhbWV0ZXJzIH07XG5FbmRPZldlZWtBbGxEYXkucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XCIgfSwgLi4uRW5kT2ZXZWVrQWxsRGF5LnBhcmFtZXRlcnMgfTtcbkV2ZW50QXRTdGFydE9mV2Vlay5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IDxDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5FdmVudEF0U3RhcnRPZldlZWsucGFyYW1ldGVycyB9O1xuRXZlbnRBdEVuZE9mV2Vlay5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IDxDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5FdmVudEF0RW5kT2ZXZWVrLnBhcmFtZXRlcnMgfTtcbkV2ZW50c09uQUNvbnN0cmFpbmVkRGF5Q29sdW1uLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gPENhbGVuZGFyIHsuLi5hcmdzfSAvPlwiIH0sIC4uLkV2ZW50c09uQUNvbnN0cmFpbmVkRGF5Q29sdW1uLnBhcmFtZXRlcnMgfTtcbk5vRHVyYXRpb24ucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XCIgfSwgLi4uTm9EdXJhdGlvbi5wYXJhbWV0ZXJzIH07XG5EYXlTcGFuLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gPENhbGVuZGFyIHsuLi5hcmdzfSAvPlwiIH0sIC4uLkRheVNwYW4ucGFyYW1ldGVycyB9O1xuWmVyb0R1cmF0aW9uT2RkaXRpZXMucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIigpID0+IHtcXG4gIHJldHVybiAoXFxuICAgIDxEcmFnQW5kRHJvcENhbGVuZGFyXFxuICAgICAgZGVmYXVsdERhdGU9e25ldyBEYXRlKDIwMTUsIDMsIDEpfVxcbiAgICAgIGV2ZW50cz17W1xcbiAgICAgICAge1xcbiAgICAgICAgICBpZDogNCxcXG4gICAgICAgICAgdGl0bGU6ICcwIGRheSBkdXJhdGlvbicsXFxuICAgICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCA4LCAwLCAwLCAwKSxcXG4gICAgICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCA4LCAwLCAwLCAwKSxcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgIGlkOiA0LFxcbiAgICAgICAgICB0aXRsZTogJzEgZGF5IGR1cmF0aW9uJyxcXG4gICAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDksIDAsIDAsIDApLFxcbiAgICAgICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEwLCAwLCAwLCAwKSxcXG4gICAgICAgIH0sXFxuICAgICAgXX1cXG4gICAgLz5cXG4gIClcXG59XCIgfSwgLi4uWmVyb0R1cmF0aW9uT2RkaXRpZXMucGFyYW1ldGVycyB9O1xuWmVyb0R1cmF0aW9uT3ZlcmxhcC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKCkgPT4ge1xcbiAgcmV0dXJuIChcXG4gICAgPERyYWdBbmREcm9wQ2FsZW5kYXJcXG4gICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgZXZlbnRzPXtbXFxuICAgICAgICB7XFxuICAgICAgICAgIHRpdGxlOiAnZXZlbnQgYScsXFxuICAgICAgICAgIHN0YXJ0OiBkZWZhdWx0RGF0ZSxcXG4gICAgICAgICAgZW5kOiBkZWZhdWx0RGF0ZSxcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgIHRpdGxlOiAnZXZlbnQgYicsXFxuICAgICAgICAgIHN0YXJ0OiBkZWZhdWx0RGF0ZSxcXG4gICAgICAgICAgZW5kOiBkZWZhdWx0RGF0ZSxcXG4gICAgICAgIH0sXFxuICAgICAgXX1cXG4gICAgICBkYXlMYXlvdXRBbGdvcml0aG09eyduby1vdmVybGFwJ31cXG4gICAgICBzY3JvbGxUb1RpbWU9e2RlZmF1bHREYXRlfVxcbiAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxcbiAgICAvPlxcbiAgKVxcbn1cIiB9LCAuLi5aZXJvRHVyYXRpb25PdmVybGFwLnBhcmFtZXRlcnMgfTtcbk92ZXJsYXBwaW5nQmFja2dyb3VuZEV2ZW50c092ZXJsYXAucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XCIgfSwgLi4uT3ZlcmxhcHBpbmdCYWNrZ3JvdW5kRXZlbnRzT3ZlcmxhcC5wYXJhbWV0ZXJzIH07XG5PdmVybGFwcGluZ0JhY2tncm91bmRFdmVudHNOb092ZXJsYXAucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XCIgfSwgLi4uT3ZlcmxhcHBpbmdCYWNrZ3JvdW5kRXZlbnRzTm9PdmVybGFwLnBhcmFtZXRlcnMgfTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgeyBhY3Rpb24gfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWFjdGlvbnMnXFxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi9zcmMnXFxuXFxuaW1wb3J0IHsgQ2FsZW5kYXIgYXMgQmFzZUNhbGVuZGFyLCBWaWV3cywgZXZlbnRzIH0gZnJvbSAnLi9oZWxwZXJzJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkaXRpb25hbCBFeGFtcGxlcy9UaW1lc2xvdHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGRlY29yYXRvcnM6IFtcXG4gICAgKFN0b3J5KSA9PiAoXFxuICAgICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgICA8U3RvcnkgLz5cXG4gICAgICA8L2Rpdj5cXG4gICAgKSxcXG4gIF0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IDxCYXNlQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuXFxuZXhwb3J0IGNvbnN0IFNlbGVjdGFibGVTdGVwMTV4NFNsb3QgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcblNlbGVjdGFibGVTdGVwMTV4NFNsb3Quc3RvcnlOYW1lID0gJ3NlbGVjdGFibGUsIHN0ZXAgMTUsIDQgdGltZXNsb3RzJ1xcblNlbGVjdGFibGVTdGVwMTV4NFNsb3QuYXJncyA9IHtcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKCksXFxuICBzZWxlY3RhYmxlOiB0cnVlLFxcbiAgdGltZXNsb3RzOiA0LFxcbiAgc3RlcDogMTUsXFxuICBldmVudHMsXFxuICBvblNlbGVjdEV2ZW50OiBhY3Rpb24oJ2V2ZW50IHNlbGVjdGVkJyksXFxuICBvblNlbGVjdFNsb3Q6IGFjdGlvbignc2xvdCBzZWxlY3RlZCcpLFxcbn1cXG5cXG5leHBvcnQgY29uc3QgU2VsZWN0YWJsZVN0ZXAxMHg2U2xvdCA9IFRlbXBsYXRlLmJpbmQoe30pXFxuU2VsZWN0YWJsZVN0ZXAxMHg2U2xvdC5zdG9yeU5hbWUgPSAnc2VsZWN0YWJsZSwgc3RlcCAxMCwgNiB0aW1lc2xvdHMnXFxuU2VsZWN0YWJsZVN0ZXAxMHg2U2xvdC5hcmdzID0ge1xcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoKSxcXG4gIHNlbGVjdGFibGU6IHRydWUsXFxuICB0aW1lc2xvdHM6IDYsXFxuICBzdGVwOiAxMCxcXG4gIGV2ZW50cyxcXG4gIG9uU2VsZWN0RXZlbnQ6IGFjdGlvbignZXZlbnQgc2VsZWN0ZWQnKSxcXG4gIG9uU2VsZWN0U2xvdDogYWN0aW9uKCdzbG90IHNlbGVjdGVkJyksXFxufVxcblxcbmV4cG9ydCBjb25zdCBTZWxlY3RhYmxlU3RlcDV4NlNsb3QgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcblNlbGVjdGFibGVTdGVwNXg2U2xvdC5zdG9yeU5hbWUgPSAnc2VsZWN0YWJsZSwgc3RlcCA1LCA2IHRpbWVzbG90cydcXG5TZWxlY3RhYmxlU3RlcDV4NlNsb3QuYXJncyA9IHtcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKCksXFxuICBzZWxlY3RhYmxlOiB0cnVlLFxcbiAgdGltZXNsb3RzOiA2LFxcbiAgc3RlcDogNSxcXG4gIGV2ZW50cyxcXG4gIG9uU2VsZWN0RXZlbnQ6IGFjdGlvbignZXZlbnQgc2VsZWN0ZWQnKSxcXG4gIG9uU2VsZWN0U2xvdDogYWN0aW9uKCdzbG90IHNlbGVjdGVkJyksXFxufVxcblxcbmV4cG9ydCBjb25zdCBTZWxlY3RhYmxlM1Nsb3QgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcblNlbGVjdGFibGUzU2xvdC5zdG9yeU5hbWUgPSAnc2VsZWN0YWJsZSwgMyB0aW1lc2xvdHMnXFxuU2VsZWN0YWJsZTNTbG90LmFyZ3MgPSB7XFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgpLFxcbiAgc2VsZWN0YWJsZTogdHJ1ZSxcXG4gIHRpbWVzbG90czogMyxcXG4gIGV2ZW50cyxcXG4gIG9uU2VsZWN0RXZlbnQ6IGFjdGlvbignZXZlbnQgc2VsZWN0ZWQnKSxcXG4gIG9uU2VsZWN0U2xvdDogYWN0aW9uKCdzbG90IHNlbGVjdGVkJyksXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJTZWxlY3RhYmxlU3RlcDE1eDRTbG90XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjoxOX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6NTMsXCJsaW5lXCI6MTl9fSxcIlNlbGVjdGFibGVTdGVwMTB4NlNsb3RcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjUzLFwibGluZVwiOjE5fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjoxOX19LFwiU2VsZWN0YWJsZVN0ZXA1eDZTbG90XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjo1MyxcImxpbmVcIjoxOX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6NTMsXCJsaW5lXCI6MTl9fSxcIlNlbGVjdGFibGUzU2xvdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6NTMsXCJsaW5lXCI6MTl9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjUzLFwibGluZVwiOjE5fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgYWN0aW9uIH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1hY3Rpb25zJ1xuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi9zcmMnXG5cbmltcG9ydCB7IENhbGVuZGFyIGFzIEJhc2VDYWxlbmRhciwgVmlld3MsIGV2ZW50cyB9IGZyb20gJy4vaGVscGVycydcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0FkZGl0aW9uYWwgRXhhbXBsZXMvVGltZXNsb3RzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgZGVjb3JhdG9yczogW1xuICAgIChTdG9yeSkgPT4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPFN0b3J5IC8+XG4gICAgICA8L2Rpdj5cbiAgICApLFxuICBdLFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiA8QmFzZUNhbGVuZGFyIHsuLi5hcmdzfSAvPlxuXG5leHBvcnQgY29uc3QgU2VsZWN0YWJsZVN0ZXAxNXg0U2xvdCA9IFRlbXBsYXRlLmJpbmQoe30pO1xuU2VsZWN0YWJsZVN0ZXAxNXg0U2xvdC5zdG9yeU5hbWUgPSAnc2VsZWN0YWJsZSwgc3RlcCAxNSwgNCB0aW1lc2xvdHMnXG5TZWxlY3RhYmxlU3RlcDE1eDRTbG90LmFyZ3MgPSB7XG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoKSxcbiAgc2VsZWN0YWJsZTogdHJ1ZSxcbiAgdGltZXNsb3RzOiA0LFxuICBzdGVwOiAxNSxcbiAgZXZlbnRzLFxuICBvblNlbGVjdEV2ZW50OiBhY3Rpb24oJ2V2ZW50IHNlbGVjdGVkJyksXG4gIG9uU2VsZWN0U2xvdDogYWN0aW9uKCdzbG90IHNlbGVjdGVkJyksXG59XG5cbmV4cG9ydCBjb25zdCBTZWxlY3RhYmxlU3RlcDEweDZTbG90ID0gVGVtcGxhdGUuYmluZCh7fSk7XG5TZWxlY3RhYmxlU3RlcDEweDZTbG90LnN0b3J5TmFtZSA9ICdzZWxlY3RhYmxlLCBzdGVwIDEwLCA2IHRpbWVzbG90cydcblNlbGVjdGFibGVTdGVwMTB4NlNsb3QuYXJncyA9IHtcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgpLFxuICBzZWxlY3RhYmxlOiB0cnVlLFxuICB0aW1lc2xvdHM6IDYsXG4gIHN0ZXA6IDEwLFxuICBldmVudHMsXG4gIG9uU2VsZWN0RXZlbnQ6IGFjdGlvbignZXZlbnQgc2VsZWN0ZWQnKSxcbiAgb25TZWxlY3RTbG90OiBhY3Rpb24oJ3Nsb3Qgc2VsZWN0ZWQnKSxcbn1cblxuZXhwb3J0IGNvbnN0IFNlbGVjdGFibGVTdGVwNXg2U2xvdCA9IFRlbXBsYXRlLmJpbmQoe30pO1xuU2VsZWN0YWJsZVN0ZXA1eDZTbG90LnN0b3J5TmFtZSA9ICdzZWxlY3RhYmxlLCBzdGVwIDUsIDYgdGltZXNsb3RzJ1xuU2VsZWN0YWJsZVN0ZXA1eDZTbG90LmFyZ3MgPSB7XG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoKSxcbiAgc2VsZWN0YWJsZTogdHJ1ZSxcbiAgdGltZXNsb3RzOiA2LFxuICBzdGVwOiA1LFxuICBldmVudHMsXG4gIG9uU2VsZWN0RXZlbnQ6IGFjdGlvbignZXZlbnQgc2VsZWN0ZWQnKSxcbiAgb25TZWxlY3RTbG90OiBhY3Rpb24oJ3Nsb3Qgc2VsZWN0ZWQnKSxcbn1cblxuZXhwb3J0IGNvbnN0IFNlbGVjdGFibGUzU2xvdCA9IFRlbXBsYXRlLmJpbmQoe30pO1NlbGVjdGFibGUzU2xvdC5zdG9yeU5hbWUgPSAnc2VsZWN0YWJsZSwgMyB0aW1lc2xvdHMnXG5TZWxlY3RhYmxlM1Nsb3QuYXJncyA9IHtcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgpLFxuICBzZWxlY3RhYmxlOiB0cnVlLFxuICB0aW1lc2xvdHM6IDMsXG4gIGV2ZW50cyxcbiAgb25TZWxlY3RFdmVudDogYWN0aW9uKCdldmVudCBzZWxlY3RlZCcpLFxuICBvblNlbGVjdFNsb3Q6IGFjdGlvbignc2xvdCBzZWxlY3RlZCcpLFxufVxuXG5cblxuU2VsZWN0YWJsZVN0ZXAxNXg0U2xvdC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IDxCYXNlQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XCIgfSwgLi4uU2VsZWN0YWJsZVN0ZXAxNXg0U2xvdC5wYXJhbWV0ZXJzIH07XG5TZWxlY3RhYmxlU3RlcDEweDZTbG90LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gPEJhc2VDYWxlbmRhciB7Li4uYXJnc30gLz5cIiB9LCAuLi5TZWxlY3RhYmxlU3RlcDEweDZTbG90LnBhcmFtZXRlcnMgfTtcblNlbGVjdGFibGVTdGVwNXg2U2xvdC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IDxCYXNlQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XCIgfSwgLi4uU2VsZWN0YWJsZVN0ZXA1eDZTbG90LnBhcmFtZXRlcnMgfTtcblNlbGVjdGFibGUzU2xvdC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IDxCYXNlQ2FsZW5kYXIgey4uLmFyZ3N9IC8+XCIgfSwgLi4uU2VsZWN0YWJsZTNTbG90LnBhcmFtZXRlcnMgfTsiLCJpbXBvcnQgUmVhY3QsIHsgRnJhZ21lbnQsIHVzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBEYXRlTG9jYWxpemVyIH0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuaW1wb3J0IERlbW9MaW5rIGZyb20gJy4uLy4uL0RlbW9MaW5rLmNvbXBvbmVudCdcbi8vIFN0b3J5Ym9vayBjYW5ub3QgYWxpYXMgdGhpcywgc28geW91IHdvdWxkIHVzZSAncmVhY3QtYmlnLWNhbGVuZGFyL2xpYi9hZGRvbnMvZHJhZ0FuZERyb3AnXG5pbXBvcnQgd2l0aERyYWdBbmREcm9wIGZyb20gJy4uLy4uLy4uL3NyYy9hZGRvbnMvZHJhZ0FuZERyb3AnXG4vLyBTdG9yeWJvb2sgY2Fubm90IGFsaWFzIHRoaXMsIHNvIHlvdSB3b3VsZCB1c2UgJ3JlYWN0LWJpZy1jYWxlbmRhci9saWIvYWRkb25zL2RyYWdBbmREcm9wL3N0eWxlcy5zY3NzJ1xuaW1wb3J0ICcuLi8uLi8uLi9zcmMvYWRkb25zL2RyYWdBbmREcm9wL3N0eWxlcy5zY3NzJ1xuXG5jb25zdCBEcmFnQW5kRHJvcENhbGVuZGFyID0gd2l0aERyYWdBbmREcm9wKENhbGVuZGFyKVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEcmFnQW5kRHJvcCh7IGxvY2FsaXplciB9KSB7XG4gIGNvbnN0IFtteUV2ZW50cywgc2V0TXlFdmVudHNdID0gdXNlU3RhdGUoZXZlbnRzKVxuXG4gIGNvbnN0IG1vdmVFdmVudCA9IHVzZUNhbGxiYWNrKFxuICAgICh7IGV2ZW50LCBzdGFydCwgZW5kLCBpc0FsbERheTogZHJvcHBlZE9uQWxsRGF5U2xvdCA9IGZhbHNlIH0pID0+IHtcbiAgICAgIGNvbnN0IHsgYWxsRGF5IH0gPSBldmVudFxuICAgICAgaWYgKCFhbGxEYXkgJiYgZHJvcHBlZE9uQWxsRGF5U2xvdCkge1xuICAgICAgICBldmVudC5hbGxEYXkgPSB0cnVlXG4gICAgICB9XG4gICAgICBpZiAoYWxsRGF5ICYmICFkcm9wcGVkT25BbGxEYXlTbG90KSB7XG4gICAgICAgICAgZXZlbnQuYWxsRGF5ID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHNldE15RXZlbnRzKChwcmV2KSA9PiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gcHJldi5maW5kKChldikgPT4gZXYuaWQgPT09IGV2ZW50LmlkKSA/PyB7fVxuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IHByZXYuZmlsdGVyKChldikgPT4gZXYuaWQgIT09IGV2ZW50LmlkKVxuICAgICAgICByZXR1cm4gWy4uLmZpbHRlcmVkLCB7IC4uLmV4aXN0aW5nLCBzdGFydCwgZW5kLCBhbGxEYXk6IGV2ZW50LmFsbERheSB9XVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtzZXRNeUV2ZW50c11cbiAgKVxuXG4gIGNvbnN0IHJlc2l6ZUV2ZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgZXZlbnQsIHN0YXJ0LCBlbmQgfSkgPT4ge1xuICAgICAgc2V0TXlFdmVudHMoKHByZXYpID0+IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBwcmV2LmZpbmQoKGV2KSA9PiBldi5pZCA9PT0gZXZlbnQuaWQpID8/IHt9XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gcHJldi5maWx0ZXIoKGV2KSA9PiBldi5pZCAhPT0gZXZlbnQuaWQpXG4gICAgICAgIHJldHVybiBbLi4uZmlsdGVyZWQsIHsgLi4uZXhpc3RpbmcsIHN0YXJ0LCBlbmQgfV1cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbc2V0TXlFdmVudHNdXG4gIClcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMTIpLCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIDxEZW1vTGluayBmaWxlTmFtZT1cImRuZFwiPlxuICAgICAgICA8c3Ryb25nPlxuICAgICAgICAgIERyYWcgYW5kIERyb3AgYW4gXCJldmVudFwiIGZyb20gb25lIHNsb3QgdG8gYW5vdGhlciB0byBcIm1vdmVcIiB0aGUgZXZlbnQsXG4gICAgICAgICAgb3IgZHJhZyBhbiBldmVudCdzIGRyYWcgaGFuZGxlcyB0byBcInJlc2l6ZVwiIHRoZSBldmVudC5cbiAgICAgICAgPC9zdHJvbmc+XG4gICAgICA8L0RlbW9MaW5rPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPERyYWdBbmREcm9wQ2FsZW5kYXJcbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLk1PTlRIfVxuICAgICAgICAgIGV2ZW50cz17bXlFdmVudHN9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgb25FdmVudERyb3A9e21vdmVFdmVudH1cbiAgICAgICAgICBvbkV2ZW50UmVzaXplPXtyZXNpemVFdmVudH1cbiAgICAgICAgICBwb3B1cFxuICAgICAgICAgIHJlc2l6YWJsZVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9GcmFnbWVudD5cbiAgKVxufVxuRHJhZ0FuZERyb3AucHJvcFR5cGVzID0ge1xuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGVMb2NhbGl6ZXIpLFxufVxuIiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uLy4uL3NyYydcXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi4vLi4vZGVtb3MvZXhhbXBsZUNvZGUvZG5kJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG51bGwsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFeGFtcGxlMSgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVxcbkV4YW1wbGUxLnN0b3J5TmFtZSA9ICdCYXNpYyBEcmFnIG4gRHJvcCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRXhhbXBsZTFcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJ1xuaW1wb3J0IEJhc2ljIGZyb20gJy4uLy4uL2RlbW9zL2V4YW1wbGVDb2RlL2RuZCdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0FkZG9ucy9EcmFnIGFuZCBEcm9wJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG51bGwsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IEV4YW1wbGUxID0gZnVuY3Rpb24gRXhhbXBsZTEoKSB7XG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O0V4YW1wbGUxLnN0b3J5TmFtZSA9ICdCYXNpYyBEcmFnIG4gRHJvcCdcblxuXG5cbkV4YW1wbGUxLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBFeGFtcGxlMSgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLkV4YW1wbGUxLnBhcmFtZXRlcnMgfTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJ1xcbmltcG9ydCBCYXNpYyBmcm9tICcuLi8uLi9kZW1vcy9leGFtcGxlQ29kZS9kbmRPdXRzaWRlU291cmNlJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG51bGwsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFeGFtcGxlMygpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVxcbkV4YW1wbGUzLnN0b3J5TmFtZSA9ICdEcmFnIGFuZCBEcm9wIChmcm9tIG91dHNpZGUgY2FsZW5kYXIpJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJFeGFtcGxlM1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMnXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi4vLi4vZGVtb3MvZXhhbXBsZUNvZGUvZG5kT3V0c2lkZVNvdXJjZSdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0FkZG9ucy9EcmFnIGFuZCBEcm9wJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG51bGwsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IEV4YW1wbGUzID0gZnVuY3Rpb24gRXhhbXBsZTMoKSB7XG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O0V4YW1wbGUzLnN0b3J5TmFtZSA9ICdEcmFnIGFuZCBEcm9wIChmcm9tIG91dHNpZGUgY2FsZW5kYXIpJ1xuXG5cblxuRXhhbXBsZTMucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEV4YW1wbGUzKCkge1xcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XCIgfSwgLi4uRXhhbXBsZTMucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRyYWdmcm9tb3V0c2lkZWl0ZW1cIlxuICAgIH19PntgZHJhZ0Zyb21PdXRzaWRlSXRlbWB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKCkgPT4gYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEEgY2FsbGJhY2sgdG8gZ2V0IGEgdGVtcG9yYXJ5IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGV2ZW50YH08L2lubGluZUNvZGU+e2AgdG8gZGlzcGxheSBpbiBhIHNsb3QgaW4gdGhlIHByb2Nlc3Mgb2YgZHJhZ2dpbmcgZnJvbSBvdXRzaWRlLiBUaGlzIGlzIG5vdCByZXF1aXJlZCBmb3IgRHJhZyBhbmQgRHJvcCB0byBmdW5jdGlvbiwgYnV0IHByb3ZpZGVzIGEgbmljZSB2aXN1YWwgY3VlIHRvIHRoZSB1c2VyIHdoZW4gZHJhZ2dpbmcgaW4gYW4gaXRlbSBmcm9tIG91dHNpZGUgb2YgdGhlIENhbGVuZGFyLmB9PC9wPlxuICAgIDxwPntgVGlwOiBUb2dnbGUgdGhlIGNoZWNrYm94LCBpbiB0aGUgZXhhbXBsZSwgYW5kIGRyYWcgYW4gb3V0c2lkZSBpdGVtIGluLiBEbyB0aGlzIGZyb20gYm90aCBjaGVja2JveCBzdGF0ZXMgdG8gc2VlIHRoZSBkaWZmZXJlbmNlIGluIGVmZmVjdC5gfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wcy0tZHJhZy1mcm9tLW91dHNpZGUtaXRlbVwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYydcXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi4vLi4vLi4vZGVtb3MvZXhhbXBsZUNvZGUvZG5kT3V0c2lkZVNvdXJjZSdcXG5pbXBvcnQgbWR4IGZyb20gJy4vZHJhZ0Zyb21PdXRzaWRlSXRlbS5tZHgnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZnVuY3Rpb24gRHJhZ0Zyb21PdXRzaWRlSXRlbSgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVxcbkRyYWdGcm9tT3V0c2lkZUl0ZW0uc3RvcnlOYW1lID0gJ2RyYWdGcm9tT3V0c2lkZUl0ZW0nXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkRyYWdGcm9tT3V0c2lkZUl0ZW1cIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIxfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJ1xuaW1wb3J0IEJhc2ljIGZyb20gJy4uLy4uLy4uL2RlbW9zL2V4YW1wbGVDb2RlL2RuZE91dHNpZGVTb3VyY2UnXG5pbXBvcnQgbWR4IGZyb20gJy4vZHJhZ0Zyb21PdXRzaWRlSXRlbS5tZHgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IERyYWdGcm9tT3V0c2lkZUl0ZW0gPSBmdW5jdGlvbiBEcmFnRnJvbU91dHNpZGVJdGVtKCkge1xuICByZXR1cm4gPEJhc2ljIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxufTtEcmFnRnJvbU91dHNpZGVJdGVtLnN0b3J5TmFtZSA9ICdkcmFnRnJvbU91dHNpZGVJdGVtJ1xuXG5cblxuRHJhZ0Zyb21PdXRzaWRlSXRlbS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRHJhZ0Zyb21PdXRzaWRlSXRlbSgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLkRyYWdGcm9tT3V0c2lkZUl0ZW0ucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRyYWdnYWJsZWFjY2Vzc29yXCJcbiAgICB9fT57YGRyYWdnYWJsZUFjY2Vzc29yYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmd8ZnVuY3Rpb24gKGV2ZW50KSA9PiBib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2AoKSA9PiB0cnVlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgV2hlbiB1c2VkLCBjYW4gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gJ2V2ZW50JyBpcyBkcmFnZ2FibGVgfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wcy0tZHJhZ2dhYmxlLWFjY2Vzc29yXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJ1xcbmltcG9ydCBCYXNpYyBmcm9tICcuLi8uLi8uLi9kZW1vcy9leGFtcGxlQ29kZS9kbmRPdXRzaWRlU291cmNlJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9kcmFnZ2FibGVBY2Nlc3Nvci5tZHgnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZnVuY3Rpb24gRHJhZ2dhYmxlQWNjZXNzb3IoKSB7XFxuICByZXR1cm4gPEJhc2ljIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cXG5EcmFnZ2FibGVBY2Nlc3Nvci5zdG9yeU5hbWUgPSAnZHJhZ2dhYmxlQWNjZXNzb3InXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkRyYWdnYWJsZUFjY2Vzc29yXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYydcbmltcG9ydCBCYXNpYyBmcm9tICcuLi8uLi8uLi9kZW1vcy9leGFtcGxlQ29kZS9kbmRPdXRzaWRlU291cmNlJ1xuaW1wb3J0IG1keCBmcm9tICcuL2RyYWdnYWJsZUFjY2Vzc29yLm1keCdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0FkZG9ucy9EcmFnIGFuZCBEcm9wL3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgY29uc3QgRHJhZ2dhYmxlQWNjZXNzb3IgPSBmdW5jdGlvbiBEcmFnZ2FibGVBY2Nlc3NvcigpIHtcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07RHJhZ2dhYmxlQWNjZXNzb3Iuc3RvcnlOYW1lID0gJ2RyYWdnYWJsZUFjY2Vzc29yJ1xuXG5cblxuRHJhZ2dhYmxlQWNjZXNzb3IucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIERyYWdnYWJsZUFjY2Vzc29yKCkge1xcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XCIgfSwgLi4uRHJhZ2dhYmxlQWNjZXNzb3IucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9uZHJhZ292ZXJcIlxuICAgIH19Pntgb25EcmFnT3ZlcmB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRyYWdFdmVudDogU3ludGhldGljRXZlbnQpID0+IGFueWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YElmIGFuIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uRHJhZ092ZXJgfTwvaW5saW5lQ29kZT57YCBjYWxsYmFjayBgfTxlbSBwYXJlbnROYW1lPVwicFwiPntgaXNgfTwvZW0+e2AgcGFzc2VkLCB0aGVuIGl0IGNhbiBkaXNjcmltaW5hdGUgYXMgdG8gd2hldGhlciBhIGRyYWdnYWJsZSBpdGVtIGlzIGRyb3BwYWJsZSBvbiB0aGUgY2FsZW5kYXIuIFRvIGRlc2lnbmF0ZSBhIGRyYWdnYWJsZSBpdGVtIGFzIGRyb3BwYWJsZSwgY2FsbCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BldmVudC5wcmV2ZW50RGVmYXVsdGB9PC9pbmxpbmVDb2RlPntgIGluc2lkZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvbkRyYWdPdmVyYH08L2lubGluZUNvZGU+e2AuIElmIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGV2ZW50LnByZXZlbnREZWZhdWx0YH08L2lubGluZUNvZGU+e2AgaXMgbm90IGNhbGxlZCBpbiB0aGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25EcmFnT3ZlcmB9PC9pbmxpbmVDb2RlPntgIGNhbGxiYWNrLCB0aGVuIHRoZSBkcmFnZ2FibGUgaXRlbSB3aWxsIG5vdCBiZSBkcm9wcGFibGUgb24gdGhlIGNhbGVuZGFyLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzLS1vbi1kcmFnLW92ZXJcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnXFxuaW1wb3J0IEJhc2ljIGZyb20gJy4uLy4uLy4uL2RlbW9zL2V4YW1wbGVDb2RlL2RuZE91dHNpZGVTb3VyY2UnXFxuaW1wb3J0IG1keCBmcm9tICcuL29uRHJhZ092ZXIubWR4J1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AvcHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGZ1bmN0aW9uIE9uRHJhZ092ZXIoKSB7XFxuICByZXR1cm4gPEJhc2ljIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cXG5PbkRyYWdPdmVyLnN0b3J5TmFtZSA9ICdvbkRyYWdPdmVyJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPbkRyYWdPdmVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYydcbmltcG9ydCBCYXNpYyBmcm9tICcuLi8uLi8uLi9kZW1vcy9leGFtcGxlQ29kZS9kbmRPdXRzaWRlU291cmNlJ1xuaW1wb3J0IG1keCBmcm9tICcuL29uRHJhZ092ZXIubWR4J1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AvcHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBjb25zdCBPbkRyYWdPdmVyID0gZnVuY3Rpb24gT25EcmFnT3ZlcigpIHtcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07T25EcmFnT3Zlci5zdG9yeU5hbWUgPSAnb25EcmFnT3ZlcidcblxuXG5cbk9uRHJhZ092ZXIucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIE9uRHJhZ092ZXIoKSB7XFxuICByZXR1cm4gPEJhc2ljIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5PbkRyYWdPdmVyLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbmRyYWdzdGFydFwiXG4gICAgfX0+e2BvbkRyYWdTdGFydGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKHsgZXZlbnQsIGFjdGlvbiwgZGlyZWN0aW9uIH0pID0+IGFueWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEEgY2FsbGJhY2sgZmlyZWQgd2hlbiB1c2VyIGJlZ2lucyB0byBkcmFnIGFuIGV2ZW50LmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzLS1vbi1kcmFnLXN0YXJ0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJ1xcbmltcG9ydCBCYXNpYyBmcm9tICcuLi8uLi8uLi9kZW1vcy9leGFtcGxlQ29kZS9kbmRPdXRzaWRlU291cmNlJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9vbkRyYWdTdGFydC5tZHgnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZnVuY3Rpb24gT25EcmFnU3RhcnQoKSB7XFxuICByZXR1cm4gPEJhc2ljIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cXG5PbkRyYWdTdGFydC5zdG9yeU5hbWUgPSAnb25EcmFnU3RhcnQnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIk9uRHJhZ1N0YXJ0XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYydcbmltcG9ydCBCYXNpYyBmcm9tICcuLi8uLi8uLi9kZW1vcy9leGFtcGxlQ29kZS9kbmRPdXRzaWRlU291cmNlJ1xuaW1wb3J0IG1keCBmcm9tICcuL29uRHJhZ1N0YXJ0Lm1keCdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0FkZG9ucy9EcmFnIGFuZCBEcm9wL3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgY29uc3QgT25EcmFnU3RhcnQgPSBmdW5jdGlvbiBPbkRyYWdTdGFydCgpIHtcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07T25EcmFnU3RhcnQuc3RvcnlOYW1lID0gJ29uRHJhZ1N0YXJ0J1xuXG5cblxuT25EcmFnU3RhcnQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIE9uRHJhZ1N0YXJ0KCkge1xcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XCIgfSwgLi4uT25EcmFnU3RhcnQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9uZHJvcGZyb21vdXRzaWRlXCJcbiAgICB9fT57YG9uRHJvcEZyb21PdXRzaWRlYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoeyBzdGFydCwgZW5kLCBhbGxEYXkgfSkgPT4gYW55YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQSBjYWxsYmFjayBmaXJlZCB3aGVuIHVzZXIgZHJvcHMgYW4gaXRlbSBvbnRvIHRoZSBDYWxlbmRhciBmcm9tIG91dHNpZGUgb2YgdGhlIENhbGVuZGFyLiBEZXZlbG9wZXJzIHdpbGwgdHlwaWNhbGx5IHVzZSB0aGlzIG1ldGhvZCB0byBhZGQgbmV3IGl0ZW1zIHRvIHRoZSBDYWxlbmRhcidzIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImV2ZW50c1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YGV2ZW50c2B9PC9MaW5rVG8+e2AuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgSW1wb3J0YW50OmB9PC9zdHJvbmc+e2AgVGhlIGNhbGxiYWNrIGRvZXMgYH08c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2Bub3RgfTwvc3Ryb25nPntgIHJlY2VpdmUgdGhlIGVsZW1lbnQgYmVpbmcgZHJvcHBlZC4gSXQgb25seSByZWNlaXZlcyB0aGUgZGV0YWlscyBvZiB0aGUgc2xvdCBhbiBlbGVtZW50IHdhcyBkcm9wcGVkIG9uLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzLS1vbi1kcm9wLWZyb20tb3V0c2lkZVwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYydcXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi4vLi4vLi4vZGVtb3MvZXhhbXBsZUNvZGUvZG5kT3V0c2lkZVNvdXJjZSdcXG5pbXBvcnQgbWR4IGZyb20gJy4vb25Ecm9wRnJvbU91dHNpZGUubWR4J1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AvcHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGZ1bmN0aW9uIE9uRHJvcEZyb21PdXRzaWRlKCkge1xcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XFxuT25Ecm9wRnJvbU91dHNpZGUuc3RvcnlOYW1lID0gJ29uRHJvcEZyb21PdXRzaWRlJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPbkRyb3BGcm9tT3V0c2lkZVwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIxfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MjF9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi4vLi4vLi4vZGVtb3MvZXhhbXBsZUNvZGUvZG5kT3V0c2lkZVNvdXJjZSdcbmltcG9ydCBtZHggZnJvbSAnLi9vbkRyb3BGcm9tT3V0c2lkZS5tZHgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IE9uRHJvcEZyb21PdXRzaWRlID0gZnVuY3Rpb24gT25Ecm9wRnJvbU91dHNpZGUoKSB7XG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O09uRHJvcEZyb21PdXRzaWRlLnN0b3J5TmFtZSA9ICdvbkRyb3BGcm9tT3V0c2lkZSdcblxuXG5cbk9uRHJvcEZyb21PdXRzaWRlLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBPbkRyb3BGcm9tT3V0c2lkZSgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLk9uRHJvcEZyb21PdXRzaWRlLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbmV2ZW50ZHJvcFwiXG4gICAgfX0+e2BvbkV2ZW50RHJvcGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKHsgZXZlbnQsIHN0YXJ0LCBlbmQsIGFsbERheSB9KSA9PiBhbnlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBIGNhbGxiYWNrIGZpcmVkIHdoZW4gdXNlciBkcm9wcyBhbiBpdGVtIGZyb20gb25lIHNsb3QgdG8gYW5vdGhlciBmcm9tIHdpdGhpbiB0aGUgQ2FsZW5kYXIuIERldmVsb3BlcnMgd2lsbCB0eXBpY2FsbHkgdXNlIHRoaXMgbWV0aG9kIHRvIHVwZGF0ZSBhbiBpdGVtJ3MgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgc3RhcnRgfTwvaW5saW5lQ29kZT57YCBhbmQgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZW5kYH08L2lubGluZUNvZGU+e2AgaW4gYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZXZlbnRzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZXZlbnRzYH08L0xpbmtUbz57YC5gfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wcy0tb24tZXZlbnQtZHJvcFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYydcXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi4vLi4vLi4vZGVtb3MvZXhhbXBsZUNvZGUvZG5kT3V0c2lkZVNvdXJjZSdcXG5pbXBvcnQgbWR4IGZyb20gJy4vb25FdmVudERyb3AubWR4J1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AvcHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGZ1bmN0aW9uIE9uRXZlbnREcm9wKCkge1xcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XFxuT25FdmVudERyb3Auc3RvcnlOYW1lID0gJ29uRXZlbnREcm9wJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPbkV2ZW50RHJvcFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIxfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MjF9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi4vLi4vLi4vZGVtb3MvZXhhbXBsZUNvZGUvZG5kT3V0c2lkZVNvdXJjZSdcbmltcG9ydCBtZHggZnJvbSAnLi9vbkV2ZW50RHJvcC5tZHgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IE9uRXZlbnREcm9wID0gZnVuY3Rpb24gT25FdmVudERyb3AoKSB7XG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O09uRXZlbnREcm9wLnN0b3J5TmFtZSA9ICdvbkV2ZW50RHJvcCdcblxuXG5cbk9uRXZlbnREcm9wLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBPbkV2ZW50RHJvcCgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLk9uRXZlbnREcm9wLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbmV2ZW50cmVzaXplXCJcbiAgICB9fT57YG9uRXZlbnRSZXNpemVgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uICh7IGV2ZW50LCBzdGFydCwgZW5kIH0pID0+IGFueWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEEgY2FsbGJhY2sgZmlyZWQgd2hlbiB1c2VyIHJlc2l6ZXMgYW4gZXZlbnQuIERldmVsb3BlcnMgd2lsbCB0eXBpY2FsbHkgdXNlIHRoaXMgbWV0aG9kIHRvIHVwZGF0ZSBhbiBpdGVtJ3MgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgc3RhcnRgfTwvaW5saW5lQ29kZT57YCBhbmQgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZW5kYH08L2lubGluZUNvZGU+e2AgaW4gYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZXZlbnRzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZXZlbnRzYH08L0xpbmtUbz57YC5gfTwvcD5cbiAgICA8cD57YFRoZSBgfTxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJyZXNpemFibGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2ByZXNpemFibGVgfTwvTGlua1RvPntgIHByb3AgbXVzdCBiZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B0cnVlYH08L2lubGluZUNvZGU+e2AgKHRoZSBkZWZhdWx0KSB0byB1c2UgdGhlIG1ldGhvZC5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BOb3RlOmB9PC9zdHJvbmc+e2AgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgcmVzaXphYmxlYH08L2lubGluZUNvZGU+e2AgZXZlbnRzIG11c3QgYWxzbyBiZSBkcmFnZ2FibGUuIFlvdSBjYW5ub3QgcmVzaXplIGFuIGV2ZW50IHdpdGggYSBgfTxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJkcmFnZ2FibGUtYWNjZXNzb3JcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BkcmFnZ2FibGVBY2Nlc3NvcmB9PC9MaW5rVG8+e2AgcHJvcCBvZiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BmYWxzZWB9PC9pbmxpbmVDb2RlPntgLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzLS1vbi1ldmVudC1yZXNpemVcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnXFxuaW1wb3J0IEJhc2ljIGZyb20gJy4uLy4uLy4uL2RlbW9zL2V4YW1wbGVDb2RlL3Jlc2l6YWJsZSdcXG5pbXBvcnQgbWR4IGZyb20gJy4vb25FdmVudFJlc2l6ZS5tZHgnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZnVuY3Rpb24gT25FdmVudFJlc2l6ZSgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVxcbk9uRXZlbnRSZXNpemUuc3RvcnlOYW1lID0gJ29uRXZlbnRSZXNpemUnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIk9uRXZlbnRSZXNpemVcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIxfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJ1xuaW1wb3J0IEJhc2ljIGZyb20gJy4uLy4uLy4uL2RlbW9zL2V4YW1wbGVDb2RlL3Jlc2l6YWJsZSdcbmltcG9ydCBtZHggZnJvbSAnLi9vbkV2ZW50UmVzaXplLm1keCdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0FkZG9ucy9EcmFnIGFuZCBEcm9wL3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgY29uc3QgT25FdmVudFJlc2l6ZSA9IGZ1bmN0aW9uIE9uRXZlbnRSZXNpemUoKSB7XG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O09uRXZlbnRSZXNpemUuc3RvcnlOYW1lID0gJ29uRXZlbnRSZXNpemUnXG5cblxuXG5PbkV2ZW50UmVzaXplLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBPbkV2ZW50UmVzaXplKCkge1xcbiAgcmV0dXJuIDxCYXNpYyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XCIgfSwgLi4uT25FdmVudFJlc2l6ZS5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwicmVzaXphYmxlXCJcbiAgICB9fT57YHJlc2l6YWJsZWB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgdHJ1ZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERldGVybWluZXMgaWYgZXZlbnRzIG1heSBiZSByZXNpemVkIG9uIHRoZSBDYWxlbmRhci4gVXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGB9PExpbmtUbyBraW5kPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtcHJvcHNcIiBzdG9yeT1cIm9uLWV2ZW50LXJlc2l6ZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uRXZlbnRSZXNpemVgfTwvTGlua1RvPntgLiBXaGVuIHVzZWQgd2l0aCB0aGUgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwicmVzaXphYmxlLWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgcmVzaXphYmxlQWNjZXNzb3JgfTwvTGlua1RvPntgIHRoZSBkZXZlbG9wZXIgaGFzIGV2ZW4gZ3JlYXRlciBjb250cm9sLmB9PC9wPlxuICAgIDxwPjxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YE5vdGU6YH08L3N0cm9uZz57YCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2ByZXNpemFibGVgfTwvaW5saW5lQ29kZT57YCBldmVudHMgbXVzdCBhbHNvIGJlIGRyYWdnYWJsZS4gWW91IGNhbm5vdCByZXNpemUgYW4gZXZlbnQgd2l0aCBhIGB9PExpbmtUbyBraW5kPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtcHJvcHNcIiBzdG9yeT1cImRyYWdnYWJsZS1hY2Nlc3NvclwiIG1keFR5cGU9XCJMaW5rVG9cIj57YGRyYWdnYWJsZUFjY2Vzc29yYH08L0xpbmtUbz57YCBwcm9wIG9mIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGZhbHNlYH08L2lubGluZUNvZGU+e2AuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtcHJvcHMtLXJlc2l6YWJsZVwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYydcXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi4vLi4vLi4vZGVtb3MvZXhhbXBsZUNvZGUvcmVzaXphYmxlJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9yZXNpemFibGUubWR4J1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AvcHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGZ1bmN0aW9uIFJlc2l6YWJsZSgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVxcblJlc2l6YWJsZS5zdG9yeU5hbWUgPSAncmVzaXphYmxlJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJSZXNpemFibGVcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIxfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJ1xuaW1wb3J0IEJhc2ljIGZyb20gJy4uLy4uLy4uL2RlbW9zL2V4YW1wbGVDb2RlL3Jlc2l6YWJsZSdcbmltcG9ydCBtZHggZnJvbSAnLi9yZXNpemFibGUubWR4J1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AvcHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBjb25zdCBSZXNpemFibGUgPSBmdW5jdGlvbiBSZXNpemFibGUoKSB7XG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O1Jlc2l6YWJsZS5zdG9yeU5hbWUgPSAncmVzaXphYmxlJ1xuXG5cblxuUmVzaXphYmxlLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBSZXNpemFibGUoKSB7XFxuICByZXR1cm4gPEJhc2ljIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5SZXNpemFibGUucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcInJlc2l6YWJsZWFjY2Vzc29yXCJcbiAgICB9fT57YHJlc2l6YWJsZUFjY2Vzc29yYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmd8ZnVuY3Rpb24gKGV2ZW50KSA9PiBib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2AoKSA9PiB0cnVlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRGV0ZXJtaW5lcyBpZiBhbiBldmVudCBpcyByZXNpemFibGUuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgTm90ZTpgfTwvc3Ryb25nPntgIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHJlc2l6YWJsZWB9PC9pbmxpbmVDb2RlPntgIGV2ZW50cyBtdXN0IGFsc28gYmUgZHJhZ2dhYmxlLiBZb3UgY2Fubm90IHJlc2l6ZSBhbiBldmVudCB3aXRoIGEgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwiZHJhZ2dhYmxlLWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZHJhZ2dhYmxlQWNjZXNzb3JgfTwvTGlua1RvPntgIHByb3Agb2YgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZmFsc2VgfTwvaW5saW5lQ29kZT57YC5gfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wcy0tcmVzaXphYmxlXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJ1xcbmltcG9ydCBCYXNpYyBmcm9tICcuLi8uLi8uLi9kZW1vcy9leGFtcGxlQ29kZS9yZXNpemFibGUnXFxuaW1wb3J0IG1keCBmcm9tICcuL3Jlc2l6YWJsZUFjY2Vzc29yLm1keCdcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ0FkZG9ucy9EcmFnIGFuZCBEcm9wL3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBmdW5jdGlvbiBSZXNpemFibGVBY2Nlc3NvcigpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVxcblJlc2l6YWJsZUFjY2Vzc29yLnN0b3J5TmFtZSA9ICdyZXNpemFibGVBY2Nlc3NvcidcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiUmVzaXphYmxlQWNjZXNzb3JcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIxfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJ1xuaW1wb3J0IEJhc2ljIGZyb20gJy4uLy4uLy4uL2RlbW9zL2V4YW1wbGVDb2RlL3Jlc2l6YWJsZSdcbmltcG9ydCBtZHggZnJvbSAnLi9yZXNpemFibGVBY2Nlc3Nvci5tZHgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IFJlc2l6YWJsZUFjY2Vzc29yID0gZnVuY3Rpb24gUmVzaXphYmxlQWNjZXNzb3IoKSB7XG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O1Jlc2l6YWJsZUFjY2Vzc29yLnN0b3J5TmFtZSA9ICdyZXNpemFibGVBY2Nlc3NvcidcblxuXG5cblJlc2l6YWJsZUFjY2Vzc29yLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBSZXNpemFibGVBY2Nlc3NvcigpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLlJlc2l6YWJsZUFjY2Vzc29yLnBhcmFtZXRlcnMgfTsiLCJpbXBvcnQgUmVhY3QsIHsgRnJhZ21lbnQsIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBEYXRlTG9jYWxpemVyIH0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuaW1wb3J0IERlbW9MaW5rIGZyb20gJy4uLy4uL0RlbW9MaW5rLmNvbXBvbmVudCdcbi8vIFN0b3J5Ym9vayBjYW5ub3QgYWxpYXMgdGhpcywgc28geW91IHdvdWxkIHVzZSAncmVhY3QtYmlnLWNhbGVuZGFyL2xpYi9hZGRvbnMvZHJhZ0FuZERyb3AnXG5pbXBvcnQgd2l0aERyYWdBbmREcm9wIGZyb20gJy4uLy4uLy4uL3NyYy9hZGRvbnMvZHJhZ0FuZERyb3AnXG4vLyBTdG9yeWJvb2sgY2Fubm90IGFsaWFzIHRoaXMsIHNvIHlvdSB3b3VsZCB1c2UgJ3JlYWN0LWJpZy1jYWxlbmRhci9saWIvYWRkb25zL2RyYWdBbmREcm9wL3N0eWxlcy5zY3NzJ1xuaW1wb3J0ICcuLi8uLi8uLi9zcmMvYWRkb25zL2RyYWdBbmREcm9wL3N0eWxlcy5zY3NzJ1xuXG5jb25zdCBEcmFnQW5kRHJvcENhbGVuZGFyID0gd2l0aERyYWdBbmREcm9wKENhbGVuZGFyKVxuXG5jb25zdCBldmVudHMgPSBbXG4gIHtcbiAgICBpZDogMCxcbiAgICB0aXRsZTogJ0JvYXJkIG1lZXRpbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgOSwgMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgMTMsIDAsIDApLFxuICAgIHJlc291cmNlSWQ6IFsxLCAyXSxcbiAgfSxcbiAge1xuICAgIGlkOiAxLFxuICAgIHRpdGxlOiAnTVMgdHJhaW5pbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgMTQsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxOCwgMCwgMjksIDE2LCAzMCwgMCksXG4gICAgcmVzb3VyY2VJZDogMixcbiAgfSxcbiAge1xuICAgIGlkOiAyLFxuICAgIHRpdGxlOiAnVGVhbSBsZWFkIG1lZXRpbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgOCwgMzAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxOCwgMCwgMjksIDEyLCAzMCwgMCksXG4gICAgcmVzb3VyY2VJZDogMyxcbiAgfSxcbiAge1xuICAgIGlkOiAxMCxcbiAgICB0aXRsZTogJ0JvYXJkIG1lZXRpbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCAwLCAzMCwgMjMsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxOCwgMCwgMzAsIDIzLCA1OSwgMCksXG4gICAgcmVzb3VyY2VJZDogMSxcbiAgfSxcbiAge1xuICAgIGlkOiAxMSxcbiAgICB0aXRsZTogJ0JpcnRoZGF5IFBhcnR5JyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxOCwgMCwgMzAsIDcsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxOCwgMCwgMzAsIDEwLCAzMCwgMCksXG4gICAgcmVzb3VyY2VJZDogNCxcbiAgfSxcbiAge1xuICAgIGlkOiAxMixcbiAgICB0aXRsZTogJ0JvYXJkIG1lZXRpbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgMjMsIDU5LCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTgsIDAsIDMwLCAxMywgMCwgMCksXG4gICAgcmVzb3VyY2VJZDogMSxcbiAgfSxcbiAge1xuICAgIGlkOiAxMyxcbiAgICB0aXRsZTogJ0JvYXJkIG1lZXRpbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgMjMsIDUwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTgsIDAsIDMwLCAxMywgMCwgMCksXG4gICAgcmVzb3VyY2VJZDogMixcbiAgfSxcbiAge1xuICAgIGlkOiAxNCxcbiAgICB0aXRsZTogJ0JvYXJkIG1lZXRpbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgMjMsIDQwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTgsIDAsIDMwLCAxMywgMCwgMCksXG4gICAgcmVzb3VyY2VJZDogNCxcbiAgfSxcbl1cblxuY29uc3QgcmVzb3VyY2VNYXAgPSBbXG4gIHsgcmVzb3VyY2VJZDogMSwgcmVzb3VyY2VUaXRsZTogJ0JvYXJkIHJvb20nIH0sXG4gIHsgcmVzb3VyY2VJZDogMiwgcmVzb3VyY2VUaXRsZTogJ1RyYWluaW5nIHJvb20nIH0sXG4gIHsgcmVzb3VyY2VJZDogMywgcmVzb3VyY2VUaXRsZTogJ01lZXRpbmcgcm9vbSAxJyB9LFxuICB7IHJlc291cmNlSWQ6IDQsIHJlc291cmNlVGl0bGU6ICdNZWV0aW5nIHJvb20gMicgfSxcbl1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRG5EUmVzb3VyY2UoeyBsb2NhbGl6ZXIgfSkge1xuICBjb25zdCBbbXlFdmVudHMsIHNldE15RXZlbnRzXSA9IHVzZVN0YXRlKGV2ZW50cylcbiAgY29uc3QgW2NvcHlFdmVudCwgc2V0Q29weUV2ZW50XSA9IHVzZVN0YXRlKHRydWUpXG5cbiAgY29uc3QgdG9nZ2xlQ29weUV2ZW50ID0gdXNlQ2FsbGJhY2soKCkgPT4gc2V0Q29weUV2ZW50KCh2YWwpID0+ICF2YWwpLCBbXSlcblxuICBjb25zdCBtb3ZlRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAoe1xuICAgICAgZXZlbnQsXG4gICAgICBzdGFydCxcbiAgICAgIGVuZCxcbiAgICAgIHJlc291cmNlSWQsXG4gICAgICBpc0FsbERheTogZHJvcHBlZE9uQWxsRGF5U2xvdCA9IGZhbHNlLFxuICAgIH0pID0+IHtcbiAgICAgIGNvbnN0IHsgYWxsRGF5IH0gPSBldmVudFxuICAgICAgaWYgKCFhbGxEYXkgJiYgZHJvcHBlZE9uQWxsRGF5U2xvdCkge1xuICAgICAgICBldmVudC5hbGxEYXkgPSB0cnVlXG4gICAgICB9XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShldmVudC5yZXNvdXJjZUlkKSkge1xuICAgICAgICBpZiAoY29weUV2ZW50KSB7XG4gICAgICAgICAgcmVzb3VyY2VJZCA9IFsuLi5uZXcgU2V0KFsuLi5ldmVudC5yZXNvdXJjZUlkLCByZXNvdXJjZUlkXSldXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBldmVudC5yZXNvdXJjZUlkLmZpbHRlcihcbiAgICAgICAgICAgIChldikgPT4gZXYgIT09IGV2ZW50LnNvdXJjZVJlc291cmNlXG4gICAgICAgICAgKVxuICAgICAgICAgIHJlc291cmNlSWQgPSBbLi4ubmV3IFNldChbLi4uZmlsdGVyZWQsIHJlc291cmNlSWRdKV1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjb3B5RXZlbnQpIHtcbiAgICAgICAgcmVzb3VyY2VJZCA9IFsuLi5uZXcgU2V0KFtldmVudC5yZXNvdXJjZUlkLCByZXNvdXJjZUlkXSldXG4gICAgICB9XG5cbiAgICAgIHNldE15RXZlbnRzKChwcmV2KSA9PiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gcHJldi5maW5kKChldikgPT4gZXYuaWQgPT09IGV2ZW50LmlkKSA/PyB7fVxuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IHByZXYuZmlsdGVyKChldikgPT4gZXYuaWQgIT09IGV2ZW50LmlkKVxuICAgICAgICByZXR1cm4gWy4uLmZpbHRlcmVkLCB7IC4uLmV4aXN0aW5nLCBzdGFydCwgZW5kLCByZXNvdXJjZUlkLCBhbGxEYXkgfV1cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbc2V0TXlFdmVudHMsIGNvcHlFdmVudF1cbiAgKVxuXG4gIGNvbnN0IHJlc2l6ZUV2ZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgZXZlbnQsIHN0YXJ0LCBlbmQgfSkgPT4ge1xuICAgICAgc2V0TXlFdmVudHMoKHByZXYpID0+IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBwcmV2LmZpbmQoKGV2KSA9PiBldi5pZCA9PT0gZXZlbnQuaWQpID8/IHt9XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gcHJldi5maWx0ZXIoKGV2KSA9PiBldi5pZCAhPT0gZXZlbnQuaWQpXG4gICAgICAgIHJldHVybiBbLi4uZmlsdGVyZWQsIHsgLi4uZXhpc3RpbmcsIHN0YXJ0LCBlbmQgfV1cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbc2V0TXlFdmVudHNdXG4gIClcblxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBzY3JvbGxUb1RpbWUgfSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSksXG4gICAgICBzY3JvbGxUb1RpbWU6IG5ldyBEYXRlKDE5NzIsIDAsIDEsIDgpLFxuICAgIH0pLFxuICAgIFtdXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIDxEZW1vTGluayBmaWxlTmFtZT1cImRuZHJlc291cmNlXCI+XG4gICAgICAgIDxzdHJvbmc+XG4gICAgICAgICAgRHJhZyBhbmQgRHJvcCBhbiBcImV2ZW50XCIgZnJvbSBvbmUgcmVzb3VyY2Ugc2xvdCB0byBhbm90aGVyLlxuICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW46ICcxMHB4IDAgMjBweCAwJyB9fT5cbiAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgY2hlY2tlZD17Y29weUV2ZW50fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17dG9nZ2xlQ29weUV2ZW50fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIEtlZXAgY29weSBvZiBkcmFnZ2VkIFwic291cmNlXCIgZXZlbnQgaW4gaXRzIG9yaWdpbmFsIHJlc291cmNlIHNsb3QuXG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0RlbW9MaW5rPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPERyYWdBbmREcm9wQ2FsZW5kYXJcbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLkRBWX1cbiAgICAgICAgICBldmVudHM9e215RXZlbnRzfVxuICAgICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICAgIG9uRXZlbnREcm9wPXttb3ZlRXZlbnR9XG4gICAgICAgICAgb25FdmVudFJlc2l6ZT17cmVzaXplRXZlbnR9XG4gICAgICAgICAgcmVzaXphYmxlXG4gICAgICAgICAgcmVzb3VyY2VJZEFjY2Vzc29yPVwicmVzb3VyY2VJZFwiXG4gICAgICAgICAgcmVzb3VyY2VzPXtyZXNvdXJjZU1hcH1cbiAgICAgICAgICByZXNvdXJjZVRpdGxlQWNjZXNzb3I9XCJyZXNvdXJjZVRpdGxlXCJcbiAgICAgICAgICBzY3JvbGxUb1RpbWU9e3Njcm9sbFRvVGltZX1cbiAgICAgICAgICBzZWxlY3RhYmxlXG4gICAgICAgICAgc2hvd011bHRpRGF5VGltZXM9e3RydWV9XG4gICAgICAgICAgc3RlcD17MTV9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0ZyYWdtZW50PlxuICApXG59XG5EbkRSZXNvdXJjZS5wcm9wVHlwZXMgPSB7XG4gIGxvY2FsaXplcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZUxvY2FsaXplciksXG59XG4iLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJ1xcbmltcG9ydCBEbkRSZXNvdXJjZSBmcm9tICcuLi8uLi9kZW1vcy9leGFtcGxlQ29kZS9kbmRyZXNvdXJjZSdcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ0FkZG9ucy9EcmFnIGFuZCBEcm9wJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBudWxsLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZnVuY3Rpb24gRXhhbXBsZTIoKSB7XFxuICByZXR1cm4gPERuRFJlc291cmNlIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cXG5FeGFtcGxlMi5zdG9yeU5hbWUgPSAnUmVzb3VyY2UgRHJhZyBhbmQgRHJvcCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRXhhbXBsZTJcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJ1xuaW1wb3J0IERuRFJlc291cmNlIGZyb20gJy4uLy4uL2RlbW9zL2V4YW1wbGVDb2RlL2RuZHJlc291cmNlJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnQWRkb25zL0RyYWcgYW5kIERyb3AnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbnVsbCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgY29uc3QgRXhhbXBsZTIgPSBmdW5jdGlvbiBFeGFtcGxlMigpIHtcbiAgcmV0dXJuIDxEbkRSZXNvdXJjZSBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07RXhhbXBsZTIuc3RvcnlOYW1lID0gJ1Jlc291cmNlIERyYWcgYW5kIERyb3AnXG5cblxuXG5FeGFtcGxlMi5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRXhhbXBsZTIoKSB7XFxuICByZXR1cm4gPERuRFJlc291cmNlIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5FeGFtcGxlMi5wYXJhbWV0ZXJzIH07IiwiZXhwb3J0IGRlZmF1bHQgW1xuICB7XG4gICAgaWQ6IDAsXG4gICAgdGl0bGU6ICdBdmFpbGFibGUgZm9yIENsaWVudHMnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxMywgNiksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMywgMTgpLFxuICB9LFxuXVxuIiwiaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIERhdGVMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgRGVtb0xpbmsgZnJvbSAnLi4vLi4vRGVtb0xpbmsuY29tcG9uZW50J1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IGJhY2tncm91bmRFdmVudHMgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2JhY2tncm91bmRFdmVudHMnXG5pbXBvcnQgKiBhcyBkYXRlcyBmcm9tICcuLi8uLi8uLi9zcmMvdXRpbHMvZGF0ZXMnXG5cbmxldCBhbGxWaWV3cyA9IE9iamVjdC5rZXlzKFZpZXdzKS5tYXAoKGspID0+IFZpZXdzW2tdKVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCYWNrZ3JvdW5kRXZlbnRzQ2FsZW5kYXIoeyBsb2NhbGl6ZXIgfSkge1xuICBjb25zdCB7IGRlZmF1bHREYXRlLCBtYXggfSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gICAgICBtYXg6IGRhdGVzLmFkZChkYXRlcy5lbmRPZihuZXcgRGF0ZSgyMDE1LCAxNywgMSksICdkYXknKSwgLTEsICdob3VycycpLFxuICAgIH0pLFxuICAgIFtdXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIDxEZW1vTGluayBmaWxlTmFtZT1cImJhY2tncm91bmRFdmVudHNcIiAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPENhbGVuZGFyXG4gICAgICAgICAgYmFja2dyb3VuZEV2ZW50cz17YmFja2dyb3VuZEV2ZW50c31cbiAgICAgICAgICBkYXlMYXlvdXRBbGdvcml0aG09XCJuby1vdmVybGFwXCJcbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLkRBWX1cbiAgICAgICAgICBldmVudHM9e2V2ZW50c31cbiAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICBtYXg9e21heH1cbiAgICAgICAgICBzaG93TXVsdGlEYXlUaW1lc1xuICAgICAgICAgIHN0ZXA9ezYwfVxuICAgICAgICAgIHZpZXdzPXthbGxWaWV3c31cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvRnJhZ21lbnQ+XG4gIClcbn1cbkJhY2tncm91bmRFdmVudHNDYWxlbmRhci5wcm9wVHlwZXMgPSB7XG4gIGxvY2FsaXplcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZUxvY2FsaXplciksXG59XG4iLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBCYWNrZ3JvdW5kQ2FsZW5kYXIgZnJvbSAnLi9leGFtcGxlQ29kZS9iYWNrZ3JvdW5kRXZlbnRzJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG51bGwsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFeGFtcGxlMTAoKSB7XFxuICByZXR1cm4gPEJhY2tncm91bmRDYWxlbmRhciBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XFxuRXhhbXBsZTEwLnN0b3J5TmFtZSA9ICdCYWNrZ3JvdW5kIEV2ZW50cydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRXhhbXBsZTEwXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBCYWNrZ3JvdW5kQ2FsZW5kYXIgZnJvbSAnLi9leGFtcGxlQ29kZS9iYWNrZ3JvdW5kRXZlbnRzJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbnVsbCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgY29uc3QgRXhhbXBsZTEwID0gZnVuY3Rpb24gRXhhbXBsZTEwKCkge1xuICByZXR1cm4gPEJhY2tncm91bmRDYWxlbmRhciBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07RXhhbXBsZTEwLnN0b3J5TmFtZSA9ICdCYWNrZ3JvdW5kIEV2ZW50cydcblxuXG5cbkV4YW1wbGUxMC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRXhhbXBsZTEwKCkge1xcbiAgcmV0dXJuIDxCYWNrZ3JvdW5kQ2FsZW5kYXIgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLkV4YW1wbGUxMC5wYXJhbWV0ZXJzIH07IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgQmFzaWMgZnJvbSAnLi9leGFtcGxlQ29kZS9iYXNpYydcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ0V4YW1wbGVzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBudWxsLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZnVuY3Rpb24gRXhhbXBsZTEoKSB7XFxuICByZXR1cm4gPEJhc2ljIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cXG5FeGFtcGxlMS5zdG9yeU5hbWUgPSAnQmFzaWMgRGVtbydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRXhhbXBsZTFcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IEJhc2ljIGZyb20gJy4vZXhhbXBsZUNvZGUvYmFzaWMnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdFeGFtcGxlcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBudWxsLFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBjb25zdCBFeGFtcGxlMSA9IGZ1bmN0aW9uIEV4YW1wbGUxKCkge1xuICByZXR1cm4gPEJhc2ljIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxufTtFeGFtcGxlMS5zdG9yeU5hbWUgPSAnQmFzaWMgRGVtbydcblxuXG5cbkV4YW1wbGUxLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBFeGFtcGxlMSgpIHtcXG4gIHJldHVybiA8QmFzaWMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLkV4YW1wbGUxLnBhcmFtZXRlcnMgfTsiLCJpbXBvcnQgUmVhY3QsIHsgRnJhZ21lbnQsIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgQ2FsZW5kYXIsIERhdGVMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgRGVtb0xpbmsgZnJvbSAnLi4vLi4vRGVtb0xpbmsuY29tcG9uZW50J1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IExheW91dCBmcm9tICdyZWFjdC10YWNrbGUtYm94L0xheW91dCdcblxucmVxdWlyZSgnZ2xvYmFsaXplL2xpYi9jdWx0dXJlcy9nbG9iYWxpemUuY3VsdHVyZS5lbi1HQicpXG5yZXF1aXJlKCdnbG9iYWxpemUvbGliL2N1bHR1cmVzL2dsb2JhbGl6ZS5jdWx0dXJlLmVzJylcbnJlcXVpcmUoJ2dsb2JhbGl6ZS9saWIvY3VsdHVyZXMvZ2xvYmFsaXplLmN1bHR1cmUuZnInKVxucmVxdWlyZSgnZ2xvYmFsaXplL2xpYi9jdWx0dXJlcy9nbG9iYWxpemUuY3VsdHVyZS5hci1BRScpXG5cbmNvbnN0IGN1bHR1cmVzID0gWydlbicsICdlbi1HQicsICdlcycsICdmcicsICdhci1BRSddXG5jb25zdCBsYW5nID0ge1xuICBlbjogbnVsbCxcbiAgJ2VuLUdCJzogbnVsbCxcbiAgZXM6IHtcbiAgICB3ZWVrOiAnU2VtYW5hJyxcbiAgICB3b3JrX3dlZWs6ICdTZW1hbmEgZGUgdHJhYmFqbycsXG4gICAgZGF5OiAnRMOtYScsXG4gICAgbW9udGg6ICdNZXMnLFxuICAgIHByZXZpb3VzOiAnQXRyw6FzJyxcbiAgICBuZXh0OiAnRGVzcHXDqXMnLFxuICAgIHRvZGF5OiAnSG95JyxcbiAgICBhZ2VuZGE6ICdFbCBEaWFyaW8nLFxuXG4gICAgc2hvd01vcmU6ICh0b3RhbCkgPT4gYCske3RvdGFsfSBtw6FzYCxcbiAgfSxcbiAgZnI6IHtcbiAgICB3ZWVrOiAnTGEgc2VtYWluZScsXG4gICAgd29ya193ZWVrOiAnU2VtYWluZSBkZSB0cmF2YWlsJyxcbiAgICBkYXk6ICdKb3VyJyxcbiAgICBtb250aDogJ01vaXMnLFxuICAgIHByZXZpb3VzOiAnQW50w6lyaWV1cicsXG4gICAgbmV4dDogJ1Byb2NoYWluJyxcbiAgICB0b2RheTogYEF1am91cmQnaHVpYCxcbiAgICBhZ2VuZGE6ICdPcmRyZSBkdSBqb3VyJyxcblxuICAgIHNob3dNb3JlOiAodG90YWwpID0+IGArJHt0b3RhbH0gcGx1c2AsXG4gIH0sXG4gICdhci1BRSc6IHtcbiAgICB3ZWVrOiAn2KPYs9io2YjYuScsXG4gICAgd29ya193ZWVrOiAn2KPYs9io2YjYuSDYp9mE2LnZhdmEJyxcbiAgICBkYXk6ICfZitmI2YUnLFxuICAgIG1vbnRoOiAn2LTZh9ixJyxcbiAgICBwcmV2aW91czogJ9iz2KfYqNmCJyxcbiAgICBuZXh0OiAn2KfZhNiq2KfZhNmKJyxcbiAgICB0b2RheTogJ9in2YTZitmI2YUnLFxuICAgIGFnZW5kYTogJ9is2K/ZiNmEINij2LnZhdin2YQnLFxuXG4gICAgc2hvd01vcmU6ICh0b3RhbCkgPT4gYCske3RvdGFsfSDYpdi22KfZgdmKYCxcbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ3VsdHVyZXNEZW1vKHsgbG9jYWxpemVyIH0pIHtcbiAgY29uc3QgW2N1bHR1cmUsIHNldEN1bHR1cmVdID0gdXNlU3RhdGUoJ2ZyJylcbiAgY29uc3QgW3JpZ2h0VG9MZWZ0LCBzZXRSaWdodFRvTGVmdF0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBjdWx0dXJlT25DbGljayA9IHVzZUNhbGxiYWNrKFxuICAgICh7IHRhcmdldDogeyB2YWx1ZSB9IH0pID0+IHtcbiAgICAgIC8vIHJlYWxseSBiZXR0ZXIgdG8gdXNlUmVkdWNlciBmb3Igc2ltdWx0YW5lb3VzbHkgc2V0dGluZyBtdWx0aXBsZSBzdGF0ZSB2YWx1ZXNcbiAgICAgIHNldEN1bHR1cmUodmFsdWUpXG4gICAgICBzZXRSaWdodFRvTGVmdCh2YWx1ZSA9PT0gJ2FyLUFFJylcbiAgICB9LFxuICAgIFtzZXRDdWx0dXJlXVxuICApXG5cbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgbWVzc2FnZXMgfSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcbiAgICAgIG1lc3NhZ2VzOiBsYW5nW2N1bHR1cmVdLFxuICAgIH0pLFxuICAgIFtjdWx0dXJlXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8RnJhZ21lbnQ+XG4gICAgICA8RGVtb0xpbmsgZmlsZU5hbWU9XCJjdWx0dXJlc1wiPlxuICAgICAgICA8TGF5b3V0IGRpcmVjdGlvbj1cImNvbHVtblwiIGFsaWduPVwiY2VudGVyXCI+XG4gICAgICAgICAgPGxhYmVsPlNlbGVjdCBhIEN1bHR1cmU8L2xhYmVsPnsnICd9XG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiAyMDAsIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snIH19XG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU9eydmcid9XG4gICAgICAgICAgICBvbkNoYW5nZT17Y3VsdHVyZU9uQ2xpY2t9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2N1bHR1cmVzLm1hcCgoYywgaWR4KSA9PiAoXG4gICAgICAgICAgICAgIDxvcHRpb24ga2V5PXtpZHh9IHZhbHVlPXtjfT5cbiAgICAgICAgICAgICAgICB7Y31cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9MYXlvdXQ+XG4gICAgICA8L0RlbW9MaW5rPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPENhbGVuZGFyXG4gICAgICAgICAgY3VsdHVyZT17Y3VsdHVyZX1cbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZXZlbnRzPXtldmVudHN9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgbWVzc2FnZXM9e21lc3NhZ2VzfVxuICAgICAgICAgIHJ0bD17cmlnaHRUb0xlZnR9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0ZyYWdtZW50PlxuICApXG59XG5DdWx0dXJlc0RlbW8ucHJvcFR5cGVzID0ge1xuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGVMb2NhbGl6ZXIpLFxufVxuIiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgQ3VsdHVyZURlbW8gZnJvbSAnLi9leGFtcGxlQ29kZS9jdWx0dXJlcydcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ0V4YW1wbGVzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBudWxsLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZnVuY3Rpb24gRXhhbXBsZTUoKSB7XFxuICByZXR1cm4gPEN1bHR1cmVEZW1vIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cXG5FeGFtcGxlNS5zdG9yeU5hbWUgPSAnTG9jYWxpemF0aW9uJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJFeGFtcGxlNVwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgQ3VsdHVyZURlbW8gZnJvbSAnLi9leGFtcGxlQ29kZS9jdWx0dXJlcydcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0V4YW1wbGVzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG51bGwsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IEV4YW1wbGU1ID0gZnVuY3Rpb24gRXhhbXBsZTUoKSB7XG4gIHJldHVybiA8Q3VsdHVyZURlbW8gbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O0V4YW1wbGU1LnN0b3J5TmFtZSA9ICdMb2NhbGl6YXRpb24nXG5cblxuXG5FeGFtcGxlNS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRXhhbXBsZTUoKSB7XFxuICByZXR1cm4gPEN1bHR1cmVEZW1vIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5FeGFtcGxlNS5wYXJhbWV0ZXJzIH07IiwiaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5cbmltcG9ydCAqIGFzIGRhdGVzIGZyb20gJ2RhdGUtYXJpdGhtZXRpYydcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgTmF2aWdhdGUsIERhdGVMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgVGltZUdyaWQgZnJvbSAnLi4vLi4vLi4vc3JjL1RpbWVHcmlkJyAvLyB1c2UgJ3JlYWN0LWJpZy1jYWxlbmRhci9saWIvVGltZUdyaWQnLiBDYW4ndCAnYWxpYXMnIGluIFN0b3J5Ym9va1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IERlbW9MaW5rIGZyb20gJy4uLy4uL0RlbW9MaW5rLmNvbXBvbmVudCdcblxuZnVuY3Rpb24gTXlXZWVrKHtcbiAgZGF0ZSxcbiAgbG9jYWxpemVyLFxuICBtYXggPSBsb2NhbGl6ZXIuZW5kT2YobmV3IERhdGUoKSwgJ2RheScpLFxuICBtaW4gPSBsb2NhbGl6ZXIuc3RhcnRPZihuZXcgRGF0ZSgpLCAnZGF5JyksXG4gIHNjcm9sbFRvVGltZSA9IGxvY2FsaXplci5zdGFydE9mKG5ldyBEYXRlKCksICdkYXknKSxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgY29uc3QgY3VyclJhbmdlID0gdXNlTWVtbyhcbiAgICAoKSA9PiBNeVdlZWsucmFuZ2UoZGF0ZSwgeyBsb2NhbGl6ZXIgfSksXG4gICAgW2RhdGUsIGxvY2FsaXplcl1cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFRpbWVHcmlkXG4gICAgICBkYXRlPXtkYXRlfVxuICAgICAgZXZlbnRPZmZzZXQ9ezE1fVxuICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICBtYXg9e21heH1cbiAgICAgIG1pbj17bWlufVxuICAgICAgcmFuZ2U9e2N1cnJSYW5nZX1cbiAgICAgIHNjcm9sbFRvVGltZT17c2Nyb2xsVG9UaW1lfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuTXlXZWVrLnByb3BUeXBlcyA9IHtcbiAgZGF0ZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBtYXg6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICBtaW46IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICBzY3JvbGxUb1RpbWU6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxufVxuXG5NeVdlZWsucmFuZ2UgPSAoZGF0ZSwgeyBsb2NhbGl6ZXIgfSkgPT4ge1xuICBjb25zdCBzdGFydCA9IGRhdGVcbiAgY29uc3QgZW5kID0gZGF0ZXMuYWRkKHN0YXJ0LCAyLCAnZGF5JylcblxuICBsZXQgY3VycmVudCA9IHN0YXJ0XG4gIGNvbnN0IHJhbmdlID0gW11cblxuICB3aGlsZSAobG9jYWxpemVyLmx0ZShjdXJyZW50LCBlbmQsICdkYXknKSkge1xuICAgIHJhbmdlLnB1c2goY3VycmVudClcbiAgICBjdXJyZW50ID0gbG9jYWxpemVyLmFkZChjdXJyZW50LCAxLCAnZGF5JylcbiAgfVxuXG4gIHJldHVybiByYW5nZVxufVxuXG5NeVdlZWsubmF2aWdhdGUgPSAoZGF0ZSwgYWN0aW9uLCB7IGxvY2FsaXplciB9KSA9PiB7XG4gIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgY2FzZSBOYXZpZ2F0ZS5QUkVWSU9VUzpcbiAgICAgIHJldHVybiBsb2NhbGl6ZXIuYWRkKGRhdGUsIC0zLCAnZGF5JylcblxuICAgIGNhc2UgTmF2aWdhdGUuTkVYVDpcbiAgICAgIHJldHVybiBsb2NhbGl6ZXIuYWRkKGRhdGUsIDMsICdkYXknKVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkYXRlXG4gIH1cbn1cblxuTXlXZWVrLnRpdGxlID0gKGRhdGUpID0+IHtcbiAgcmV0dXJuIGBNeSBhd2Vzb21lIHdlZWs6ICR7ZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoKX1gXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEN1c3RvbVZpZXcoeyBsb2NhbGl6ZXIgfSkge1xuICBjb25zdCB7IGRlZmF1bHREYXRlLCB2aWV3cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxuICAgICAgdmlld3M6IHtcbiAgICAgICAgbW9udGg6IHRydWUsXG4gICAgICAgIHdlZWs6IE15V2VlayxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPEZyYWdtZW50PlxuICAgICAgPERlbW9MaW5rIGZpbGVOYW1lPVwiY3VzdG9tVmlld1wiPlxuICAgICAgICA8c3Ryb25nPlRoZSBDYWxlbmRhciBiZWxvdyBpbXBsZW1lbnRzIGEgY3VzdG9tIDMtZGF5IHdlZWsgdmlldzwvc3Ryb25nPlxuICAgICAgPC9EZW1vTGluaz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICAgIDxDYWxlbmRhclxuICAgICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cbiAgICAgICAgICBldmVudHM9e2V2ZW50c31cbiAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICB2aWV3cz17dmlld3N9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0ZyYWdtZW50PlxuICApXG59XG5DdXN0b21WaWV3LnByb3BUeXBlcyA9IHtcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlTG9jYWxpemVyKSxcbn1cbiIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IEN1c3RvbVZpZXcgZnJvbSAnLi9leGFtcGxlQ29kZS9jdXN0b21WaWV3J1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG51bGwsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFeGFtcGxlOSgpIHtcXG4gIHJldHVybiA8Q3VzdG9tVmlldyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XFxuRXhhbXBsZTkuc3RvcnlOYW1lID0gJ0N1c3RvbSBDYWxlbmRhciBWaWV3cydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRXhhbXBsZTlcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IEN1c3RvbVZpZXcgZnJvbSAnLi9leGFtcGxlQ29kZS9jdXN0b21WaWV3J1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbnVsbCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgY29uc3QgRXhhbXBsZTkgPSBmdW5jdGlvbiBFeGFtcGxlOSgpIHtcbiAgcmV0dXJuIDxDdXN0b21WaWV3IGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxufTtFeGFtcGxlOS5zdG9yeU5hbWUgPSAnQ3VzdG9tIENhbGVuZGFyIFZpZXdzJ1xuXG5cblxuRXhhbXBsZTkucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEV4YW1wbGU5KCkge1xcbiAgcmV0dXJuIDxDdXN0b21WaWV3IGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5FeGFtcGxlOS5wYXJhbWV0ZXJzIH07IiwiaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIGRheWpzTG9jYWxpemVyIH0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuaW1wb3J0IERlbW9MaW5rIGZyb20gJy4uLy4uL0RlbW9MaW5rLmNvbXBvbmVudCdcbmltcG9ydCBldmVudHMgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2V2ZW50cydcblxuLy8gTm90ZSB0aGF0IHRoZSBkYXlqc0xvY2FsaXplciBleHRlbmRzIERheS5qcyB3aXRoIHRoZSBmb2xsb3dpbmcgcGx1Z2luczpcbi8vIC0gSXNCZXR3ZWVuXG4vLyAtIElzU2FtZU9yQWZ0ZXJcbi8vIC0gSXNTYW1lT3JCZWZvcmVcbi8vIC0gTG9jYWxlRGF0YVxuLy8gLSBMb2NhbGl6ZWRGb3JtYXRcbi8vIC0gTWluTWF4XG4vLyAtIFVUQ1xuXG4vLyBhZGQgb3B0aW9uYWwgdGltZSB6b25lIHN1cHBvcnRcbmltcG9ydCB0aW1lem9uZSBmcm9tICdkYXlqcy9wbHVnaW4vdGltZXpvbmUnXG5kYXlqcy5leHRlbmQodGltZXpvbmUpXG5cbmNvbnN0IGRqTG9jYWxpemVyID0gZGF5anNMb2NhbGl6ZXIoZGF5anMpXG5cbmNvbnN0IENvbG9yZWREYXRlQ2VsbFdyYXBwZXIgPSAoeyBjaGlsZHJlbiB9KSA9PlxuICBSZWFjdC5jbG9uZUVsZW1lbnQoUmVhY3QuQ2hpbGRyZW4ub25seShjaGlsZHJlbiksIHtcbiAgICBzdHlsZToge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAnbGlnaHRibHVlJyxcbiAgICB9LFxuICB9KVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEYXlqcyh7IC4uLnByb3BzIH0pIHtcbiAgY29uc3QgeyBjb21wb25lbnRzLCBkZWZhdWx0RGF0ZSwgbWF4LCB2aWV3cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgY29tcG9uZW50czoge1xuICAgICAgICB0aW1lU2xvdFdyYXBwZXI6IENvbG9yZWREYXRlQ2VsbFdyYXBwZXIsXG4gICAgICB9LFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxuICAgICAgbWF4OiBkYXlqcygpLmVuZE9mKCdkYXknKS5zdWJ0cmFjdCgxLCAnaG91cnMnKS50b0RhdGUoKSxcbiAgICAgIHZpZXdzOiBPYmplY3Qua2V5cyhWaWV3cykubWFwKChrKSA9PiBWaWV3c1trXSksXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPEZyYWdtZW50PlxuICAgICAgPERlbW9MaW5rIGZpbGVOYW1lPVwiZGF5anNcIiAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIiB7Li4ucHJvcHN9PlxuICAgICAgICA8Q2FsZW5kYXJcbiAgICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgICBldmVudHM9e2V2ZW50c31cbiAgICAgICAgICBsb2NhbGl6ZXI9e2RqTG9jYWxpemVyfVxuICAgICAgICAgIG1heD17bWF4fVxuICAgICAgICAgIHNob3dNdWx0aURheVRpbWVzXG4gICAgICAgICAgc3RlcD17NjB9XG4gICAgICAgICAgdmlld3M9e3ZpZXdzfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9GcmFnbWVudD5cbiAgKVxufVxuIiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJ1xcbmltcG9ydCB7IENhbGVuZGFyLCBkYXlqc0xvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgRGF5anMgZnJvbSAnLi9leGFtcGxlQ29kZS9kYXlqcydcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ0V4YW1wbGVzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBudWxsLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gZGF5anNMb2NhbGl6ZXIoZGF5anMpXFxuXFxuZXhwb3J0IGZ1bmN0aW9uIERheWpzTG9jYWxpemVyKCkge1xcbiAgcmV0dXJuIDxEYXlqcyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkRheWpzTG9jYWxpemVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcydcbmltcG9ydCB7IENhbGVuZGFyLCBkYXlqc0xvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBEYXlqcyBmcm9tICcuL2V4YW1wbGVDb2RlL2RheWpzJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbnVsbCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBsb2NhbGl6ZXIgPSBkYXlqc0xvY2FsaXplcihkYXlqcylcblxuZXhwb3J0IGNvbnN0IERheWpzTG9jYWxpemVyID0gZnVuY3Rpb24gRGF5anNMb2NhbGl6ZXIoKSB7XG4gIHJldHVybiA8RGF5anMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XG59O1xuXG5cbkRheWpzTG9jYWxpemVyLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBEYXlqc0xvY2FsaXplcigpIHtcXG4gIHJldHVybiA8RGF5anMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLkRheWpzTG9jYWxpemVyLnBhcmFtZXRlcnMgfTsiLCJpbXBvcnQgUmVhY3QsIHsgRnJhZ21lbnQsIHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENhbGVuZGFyLCBsdXhvbkxvY2FsaXplciwgVmlld3MgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgeyBEYXRlVGltZSwgU2V0dGluZ3MgfSBmcm9tICdsdXhvbidcbmltcG9ydCBEZW1vTGluayBmcm9tICcuLi8uLi9EZW1vTGluay5jb21wb25lbnQnXG5cbmltcG9ydCBldmVudHMgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBUaW1lem9uZVNlbGVjdCBmcm9tICcuLi9UaW1lem9uZVNlbGVjdCdcblxuY29uc3QgZGVmYXVsdFRaID0gRGF0ZVRpbWUubG9jYWwoKS56b25lTmFtZVxuY29uc3QgZGVmYXVsdERhdGVTdHIgPSAnMjAxNS0wNC0xMydcblxuZnVuY3Rpb24gZ2V0RGF0ZShzdHIsIERhdGVUaW1lT2JqKSB7XG4gIHJldHVybiBEYXRlVGltZU9iai5mcm9tSVNPKHN0cikudG9KU0RhdGUoKVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMdXhvbigpIHtcbiAgY29uc3QgW3RpbWV6b25lLCBzZXRUaW1lem9uZV0gPSB1c2VTdGF0ZShkZWZhdWx0VFopXG5cbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZ2V0Tm93LCBsb2NhbGl6ZXIsIG15RXZlbnRzLCBzY3JvbGxUb1RpbWUgfSA9XG4gICAgdXNlTWVtbygoKSA9PiB7XG4gICAgICBTZXR0aW5ncy5kZWZhdWx0Wm9uZSA9IHRpbWV6b25lXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWZhdWx0RGF0ZTogZ2V0RGF0ZShkZWZhdWx0RGF0ZVN0ciwgRGF0ZVRpbWUpLFxuICAgICAgICBnZXROb3c6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkudG9KU0RhdGUoKSxcbiAgICAgICAgbG9jYWxpemVyOiBsdXhvbkxvY2FsaXplcihEYXRlVGltZSksXG4gICAgICAgIG15RXZlbnRzOiBbLi4uZXZlbnRzXSxcbiAgICAgICAgc2Nyb2xsVG9UaW1lOiBEYXRlVGltZS5sb2NhbCgpLnRvSlNEYXRlKCksXG4gICAgICB9XG4gICAgfSwgW3RpbWV6b25lXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBTZXR0aW5ncy5kZWZhdWx0Wm9uZSA9IGRlZmF1bHRUWiAvLyByZXNldCB0byBicm93c2VyIFRaIG9uIHVubW91bnRcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHJldHVybiAoXG4gICAgPEZyYWdtZW50PlxuICAgICAgPERlbW9MaW5rIGZpbGVOYW1lPVwibHV4b25cIj5cbiAgICAgICAgPFRpbWV6b25lU2VsZWN0XG4gICAgICAgICAgZGVmYXVsdFRaPXtkZWZhdWx0VFp9XG4gICAgICAgICAgc2V0VGltZXpvbmU9e3NldFRpbWV6b25lfVxuICAgICAgICAgIHRpbWV6b25lPXt0aW1lem9uZX1cbiAgICAgICAgICB0aXRsZT17YFRoaXMgY2FsZW5kYXIgdXNlcyB0aGUgJ2x1eG9uTG9jYWxpemVyJ2B9XG4gICAgICAgIC8+XG4gICAgICA8L0RlbW9MaW5rPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPENhbGVuZGFyXG4gICAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxuICAgICAgICAgIGV2ZW50cz17bXlFdmVudHN9XG4gICAgICAgICAgZ2V0Tm93PXtnZXROb3d9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgc2Nyb2xsVG9UaW1lPXtzY3JvbGxUb1RpbWV9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0ZyYWdtZW50PlxuICApXG59XG4iLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gJ2x1eG9uJ1xcbmltcG9ydCB7IENhbGVuZGFyLCBsdXhvbkxvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgTHV4b24gZnJvbSAnLi9leGFtcGxlQ29kZS9sdXhvbidcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ0V4YW1wbGVzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBudWxsLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbHV4b25Mb2NhbGl6ZXIoRGF0ZVRpbWUpXFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEx1eG9uTG9jYWxpemVyKCkge1xcbiAgcmV0dXJuIDxMdXhvbiBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkx1eG9uTG9jYWxpemVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nXG5pbXBvcnQgeyBDYWxlbmRhciwgbHV4b25Mb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgTHV4b24gZnJvbSAnLi9leGFtcGxlQ29kZS9sdXhvbidcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0V4YW1wbGVzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG51bGwsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbHV4b25Mb2NhbGl6ZXIoRGF0ZVRpbWUpXG5cbmV4cG9ydCBjb25zdCBMdXhvbkxvY2FsaXplciA9IGZ1bmN0aW9uIEx1eG9uTG9jYWxpemVyKCkge1xuICByZXR1cm4gPEx1eG9uIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxufTtcblxuXG5MdXhvbkxvY2FsaXplci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gTHV4b25Mb2NhbGl6ZXIoKSB7XFxuICByZXR1cm4gPEx1eG9uIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5MdXhvbkxvY2FsaXplci5wYXJhbWV0ZXJzIH07IiwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSwgdXNlTWVtbywgRnJhZ21lbnQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgRGF0ZUxvY2FsaXplciB9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbmltcG9ydCBEZW1vTGluayBmcm9tICcuLi8uLi9EZW1vTGluay5jb21wb25lbnQnXG5pbXBvcnQgZXZlbnRzIGZyb20gJy4uLy4uL3Jlc291cmNlcy9ldmVudHMnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENyZWF0ZUV2ZW50V2l0aE5vT3ZlcmxhcCh7XG4gIGxvY2FsaXplcixcbiAgZGF5TGF5b3V0QWxnb3JpdGhtID0gJ25vLW92ZXJsYXAnLFxufSkge1xuICBjb25zdCBbbXlFdmVudHMsIHNldEV2ZW50c10gPSB1c2VTdGF0ZShldmVudHMpXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0U2xvdCA9IHVzZUNhbGxiYWNrKFxuICAgICh7IHN0YXJ0LCBlbmQgfSkgPT4ge1xuICAgICAgY29uc3QgdGl0bGUgPSB3aW5kb3cucHJvbXB0KCdOZXcgRXZlbnQgTmFtZScpXG4gICAgICBpZiAodGl0bGUpIHtcbiAgICAgICAgc2V0RXZlbnRzKChwcmV2KSA9PiBbLi4ucHJldiwgeyBzdGFydCwgZW5kLCB0aXRsZSB9XSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZXRFdmVudHNdXG4gIClcblxuICBjb25zdCBoYW5kbGVTZWxlY3RFdmVudCA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4gd2luZG93LmFsZXJ0KGV2ZW50LnRpdGxlKSxcbiAgICBbXVxuICApXG5cbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgc2Nyb2xsVG9UaW1lIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTIpLFxuICAgICAgc2Nyb2xsVG9UaW1lOiBuZXcgRGF0ZSgxOTcwLCAxLCAxLCA2KSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8RnJhZ21lbnQ+XG4gICAgICA8RGVtb0xpbmsgZmlsZU5hbWU9XCJjcmVhdGVFdmVudFdpdGhOb092ZXJsYXBcIj5cbiAgICAgICAgPHN0cm9uZz5cbiAgICAgICAgICBDbGljayBhbiBldmVudCB0byBzZWUgbW9yZSBpbmZvLCBvciBkcmFnIHRoZSBtb3VzZSBvdmVyIHRoZSBjYWxlbmRhclxuICAgICAgICAgIHRvIHNlbGVjdCBhIGRhdGUvdGltZSByYW5nZS5cbiAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICBUaGUgZXZlbnRzIGFyZSBiZWluZyBhcnJhbmdlZCBieSBgbm8tb3ZlcmxhcGAgYWxnb3JpdGhtLlxuICAgICAgICA8L3N0cm9uZz5cbiAgICAgIDwvRGVtb0xpbms+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgICA8Q2FsZW5kYXJcbiAgICAgICAgICBkYXlMYXlvdXRBbGdvcml0aG09e2RheUxheW91dEFsZ29yaXRobX1cbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XG4gICAgICAgICAgZXZlbnRzPXtteUV2ZW50c31cbiAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICBvblNlbGVjdEV2ZW50PXtoYW5kbGVTZWxlY3RFdmVudH1cbiAgICAgICAgICBvblNlbGVjdFNsb3Q9e2hhbmRsZVNlbGVjdFNsb3R9XG4gICAgICAgICAgc2VsZWN0YWJsZVxuICAgICAgICAgIHNjcm9sbFRvVGltZT17c2Nyb2xsVG9UaW1lfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9GcmFnbWVudD5cbiAgKVxufVxuXG5DcmVhdGVFdmVudFdpdGhOb092ZXJsYXAucHJvcFR5cGVzID0ge1xuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGVMb2NhbGl6ZXIpLFxuICBkYXlMYXlvdXRBbGdvcml0aG06IFByb3BUeXBlcy5zdHJpbmcsXG59XG4iLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBDcmVhdGVFdmVudFdpdGhOb092ZXJsYXAgZnJvbSAnLi9leGFtcGxlQ29kZS9jcmVhdGVFdmVudFdpdGhOb092ZXJsYXAnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdFeGFtcGxlcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbnVsbCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEV4YW1wbGUzKCkge1xcbiAgcmV0dXJuIDxDcmVhdGVFdmVudFdpdGhOb092ZXJsYXAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVxcbkV4YW1wbGUzLnN0b3J5TmFtZSA9ICdDcmVhdGUgZXZlbnRzIHdpdGggbm8tb3ZlcmxhcCBhbGdvcml0aG0nXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkV4YW1wbGUzXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBDcmVhdGVFdmVudFdpdGhOb092ZXJsYXAgZnJvbSAnLi9leGFtcGxlQ29kZS9jcmVhdGVFdmVudFdpdGhOb092ZXJsYXAnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdFeGFtcGxlcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBudWxsLFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBjb25zdCBFeGFtcGxlMyA9IGZ1bmN0aW9uIEV4YW1wbGUzKCkge1xuICByZXR1cm4gPENyZWF0ZUV2ZW50V2l0aE5vT3ZlcmxhcCBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07RXhhbXBsZTMuc3RvcnlOYW1lID0gJ0NyZWF0ZSBldmVudHMgd2l0aCBuby1vdmVybGFwIGFsZ29yaXRobSdcblxuXG5cbkV4YW1wbGUzLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBFeGFtcGxlMygpIHtcXG4gIHJldHVybiA8Q3JlYXRlRXZlbnRXaXRoTm9PdmVybGFwIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5FeGFtcGxlMy5wYXJhbWV0ZXJzIH07IiwiaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBDYWxlbmRhciwgRGF0ZUxvY2FsaXplciB9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbmltcG9ydCBEZW1vTGluayBmcm9tICcuLi8uLi9EZW1vTGluay5jb21wb25lbnQnXG5pbXBvcnQgZXZlbnRzIGZyb20gJy4uLy4uL3Jlc291cmNlcy9ldmVudHMnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBvcHVwKHsgbG9jYWxpemVyIH0pIHtcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcbiAgcmV0dXJuIChcbiAgICA8RnJhZ21lbnQ+XG4gICAgICA8RGVtb0xpbmsgZmlsZU5hbWU9XCJwb3B1cFwiPlxuICAgICAgICA8c3Ryb25nPlxuICAgICAgICAgIENsaWNrIHRoZSBcIismIzEyMzt4JiMxMjU7IG1vcmVcIiBsaW5rIG9uIGFueSBjYWxlbmRhciBkYXkgdGhhdCBjYW5ub3RcbiAgICAgICAgICBmaXQgYWxsIHRoZSBkYXlzIGV2ZW50cyB0byBzZWUgYW4gaW5saW5lIHBvcHVwIG9mIGFsbCB0aGUgZXZlbnRzLlxuICAgICAgICA8L3N0cm9uZz5cbiAgICAgIDwvRGVtb0xpbms+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgICA8Q2FsZW5kYXJcbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZXZlbnRzPXtldmVudHN9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgcG9wdXBcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvRnJhZ21lbnQ+XG4gIClcbn1cblBvcHVwLnByb3BUeXBlcyA9IHtcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlTG9jYWxpemVyKSxcbn1cbiIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IFBvcHVwRGVtbyBmcm9tICcuL2V4YW1wbGVDb2RlL3BvcHVwJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG51bGwsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFeGFtcGxlNigpIHtcXG4gIHJldHVybiA8UG9wdXBEZW1vIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cXG5FeGFtcGxlNi5zdG9yeU5hbWUgPSAnU2hvdyBtb3JlIHZpYSBhIHBvcHVwJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJFeGFtcGxlNlwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgUG9wdXBEZW1vIGZyb20gJy4vZXhhbXBsZUNvZGUvcG9wdXAnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdFeGFtcGxlcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBudWxsLFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBjb25zdCBFeGFtcGxlNiA9IGZ1bmN0aW9uIEV4YW1wbGU2KCkge1xuICByZXR1cm4gPFBvcHVwRGVtbyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07RXhhbXBsZTYuc3RvcnlOYW1lID0gJ1Nob3cgbW9yZSB2aWEgYSBwb3B1cCdcblxuXG5cbkV4YW1wbGU2LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBFeGFtcGxlNigpIHtcXG4gIHJldHVybiA8UG9wdXBEZW1vIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5FeGFtcGxlNi5wYXJhbWV0ZXJzIH07IiwiaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIERhdGVMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgRGVtb0xpbmsgZnJvbSAnLi4vLi4vRGVtb0xpbmsuY29tcG9uZW50J1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3JlbmRlcmluZy5tb2R1bGUuc2NzcydcblxuZnVuY3Rpb24gRXZlbnQoeyBldmVudCB9KSB7XG4gIHJldHVybiAoXG4gICAgPHNwYW4+XG4gICAgICA8c3Ryb25nPntldmVudC50aXRsZX08L3N0cm9uZz5cbiAgICAgIHtldmVudC5kZXNjICYmICc6ICAnICsgZXZlbnQuZGVzY31cbiAgICA8L3NwYW4+XG4gIClcbn1cbkV2ZW50LnByb3BUeXBlcyA9IHtcbiAgZXZlbnQ6IFByb3BUeXBlcy5vYmplY3QsXG59XG5cbmZ1bmN0aW9uIEV2ZW50QWdlbmRhKHsgZXZlbnQgfSkge1xuICByZXR1cm4gKFxuICAgIDxzcGFuPlxuICAgICAgPGVtIHN0eWxlPXt7IGNvbG9yOiAnbWFnZW50YScgfX0+e2V2ZW50LnRpdGxlfTwvZW0+XG4gICAgICA8cD57ZXZlbnQuZGVzY308L3A+XG4gICAgPC9zcGFuPlxuICApXG59XG5FdmVudEFnZW5kYS5wcm9wVHlwZXMgPSB7XG4gIGV2ZW50OiBQcm9wVHlwZXMub2JqZWN0LFxufVxuXG5jb25zdCBjdXN0b21EYXlQcm9wR2V0dGVyID0gKGRhdGUpID0+IHtcbiAgaWYgKGRhdGUuZ2V0RGF0ZSgpID09PSA3IHx8IGRhdGUuZ2V0RGF0ZSgpID09PSAxNSlcbiAgICByZXR1cm4ge1xuICAgICAgY2xhc3NOYW1lOiBzdHlsZXMuc3BlY2lhbERheSxcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGJvcmRlcjogJ3NvbGlkIDNweCAnICsgKGRhdGUuZ2V0RGF0ZSgpID09PSA3ID8gJyNmYWEnIDogJyNhZmEnKSxcbiAgICAgIH0sXG4gICAgfVxuICBlbHNlIHJldHVybiB7fVxufVxuXG5jb25zdCBjdXN0b21TbG90UHJvcEdldHRlciA9IChkYXRlKSA9PiB7XG4gIGlmIChkYXRlLmdldERhdGUoKSA9PT0gNyB8fCBkYXRlLmdldERhdGUoKSA9PT0gMTUpXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsYXNzTmFtZTogc3R5bGVzLnNwZWNpYWxEYXksXG4gICAgfVxuICBlbHNlIHJldHVybiB7fVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSZW5kZXJpbmcoeyBsb2NhbGl6ZXIgfSkge1xuICBjb25zdCB7IGNvbXBvbmVudHMsIGRlZmF1bHREYXRlIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIGFnZW5kYToge1xuICAgICAgICAgIGV2ZW50OiBFdmVudEFnZW5kYSxcbiAgICAgICAgfSxcbiAgICAgICAgZXZlbnQ6IEV2ZW50LFxuICAgICAgfSxcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCA3KSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8RnJhZ21lbnQ+XG4gICAgICA8RGVtb0xpbmsgZmlsZU5hbWU9XCJyZW5kZXJpbmdcIiAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPENhbGVuZGFyXG4gICAgICAgICAgY29tcG9uZW50cz17Y29tcG9uZW50c31cbiAgICAgICAgICBkYXlQcm9wR2V0dGVyPXtjdXN0b21EYXlQcm9wR2V0dGVyfVxuICAgICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuQUdFTkRBfVxuICAgICAgICAgIGV2ZW50cz17ZXZlbnRzfVxuICAgICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICAgIHNsb3RQcm9wR2V0dGVyPXtjdXN0b21TbG90UHJvcEdldHRlcn1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvRnJhZ21lbnQ+XG4gIClcbn1cblJlbmRlcmluZy5wcm9wVHlwZXMgPSB7XG4gIGxvY2FsaXplcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZUxvY2FsaXplciksXG59XG4iLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBSZW5kZXJpbmcgZnJvbSAnLi9leGFtcGxlQ29kZS9yZW5kZXJpbmcnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdFeGFtcGxlcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbnVsbCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEV4YW1wbGU4KCkge1xcbiAgcmV0dXJuIDxSZW5kZXJpbmcgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVxcbkV4YW1wbGU4LnN0b3J5TmFtZSA9ICdDdXN0b21pemVkIENvbXBvbmVudCBSZW5kZXJpbmcnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkV4YW1wbGU4XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBSZW5kZXJpbmcgZnJvbSAnLi9leGFtcGxlQ29kZS9yZW5kZXJpbmcnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdFeGFtcGxlcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBudWxsLFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBjb25zdCBFeGFtcGxlOCA9IGZ1bmN0aW9uIEV4YW1wbGU4KCkge1xuICByZXR1cm4gPFJlbmRlcmluZyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07RXhhbXBsZTguc3RvcnlOYW1lID0gJ0N1c3RvbWl6ZWQgQ29tcG9uZW50IFJlbmRlcmluZydcblxuXG5cbkV4YW1wbGU4LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBFeGFtcGxlOCgpIHtcXG4gIHJldHVybiA8UmVuZGVyaW5nIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5FeGFtcGxlOC5wYXJhbWV0ZXJzIH07IiwiaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIERhdGVMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgRGVtb0xpbmsgZnJvbSAnLi4vLi4vRGVtb0xpbmsuY29tcG9uZW50J1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5jb25zdCBldmVudHMgPSBbXG4gIHtcbiAgICBpZDogMCxcbiAgICB0aXRsZTogJ0JvYXJkIG1lZXRpbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgOSwgMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgMTMsIDAsIDApLFxuICAgIHJlc291cmNlSWQ6IDEsXG4gIH0sXG4gIHtcbiAgICBpZDogMSxcbiAgICB0aXRsZTogJ01TIHRyYWluaW5nJyxcbiAgICBhbGxEYXk6IHRydWUsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTgsIDAsIDI5LCAxNCwgMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgMTYsIDMwLCAwKSxcbiAgICByZXNvdXJjZUlkOiAyLFxuICB9LFxuICB7XG4gICAgaWQ6IDIsXG4gICAgdGl0bGU6ICdUZWFtIGxlYWQgbWVldGluZycsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTgsIDAsIDI5LCA4LCAzMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSwgMTIsIDMwLCAwKSxcbiAgICByZXNvdXJjZUlkOiBbMiwgM10sXG4gIH0sXG4gIHtcbiAgICBpZDogMTEsXG4gICAgdGl0bGU6ICdCaXJ0aGRheSBQYXJ0eScsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTgsIDAsIDMwLCA3LCAwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTgsIDAsIDMwLCAxMCwgMzAsIDApLFxuICAgIHJlc291cmNlSWQ6IDQsXG4gIH0sXG5dXG5cbmNvbnN0IHJlc291cmNlTWFwID0gW1xuICB7IHJlc291cmNlSWQ6IDEsIHJlc291cmNlVGl0bGU6ICdCb2FyZCByb29tJyB9LFxuICB7IHJlc291cmNlSWQ6IDIsIHJlc291cmNlVGl0bGU6ICdUcmFpbmluZyByb29tJyB9LFxuICB7IHJlc291cmNlSWQ6IDMsIHJlc291cmNlVGl0bGU6ICdNZWV0aW5nIHJvb20gMScgfSxcbiAgeyByZXNvdXJjZUlkOiA0LCByZXNvdXJjZVRpdGxlOiAnTWVldGluZyByb29tIDInIH0sXG5dXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJlc291cmNlKHsgbG9jYWxpemVyIH0pIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgdmlld3MgfSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE4LCAwLCAyOSksXG4gICAgICB2aWV3czogWydkYXknLCAnd29ya193ZWVrJ10sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPEZyYWdtZW50PlxuICAgICAgPERlbW9MaW5rIGZpbGVOYW1lPVwicmVzb3VyY2VcIiAvPlxuICAgICAgPHN0cm9uZz5cbiAgICAgICAgVGhlIGNhbGVuZGFyIGJlbG93IHVzZXMgdGhlIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJyZXNvdXJjZS1pZC1hY2Nlc3NvclwiPnJlc291cmNlSWRBY2Nlc3NvcjwvTGlua1RvPiwgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInJlc291cmNlLXRpdGxlLWFjY2Vzc29yXCI+cmVzb3VyY2VUaXRsZUFjY2Vzc29yPC9MaW5rVG8+IGFuZCA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwicmVzb3VyY2VzXCI+cmVzb3VyY2VzPC9MaW5rVG8+IHByb3BzIHRvIHNob3cgZXZlbnRzIHNjaGVkdWxlZCBmb3IgZGlmZmVyZW50IHJlc291cmNlcy5cbiAgICAgICAgPGJyLz5cbiAgICAgICAgRXZlbnRzIGNhbiBiZSBtYXBwZWQgdG8gYSBzaW5nbGUgcmVzb3VyY2UsIG9yIG11bHRpcGxlIHJlc291cmNlcy5cbiAgICAgIDwvc3Ryb25nPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPENhbGVuZGFyXG4gICAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5EQVl9XG4gICAgICAgICAgZXZlbnRzPXtldmVudHN9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgcmVzb3VyY2VJZEFjY2Vzc29yPVwicmVzb3VyY2VJZFwiXG4gICAgICAgICAgcmVzb3VyY2VzPXtyZXNvdXJjZU1hcH1cbiAgICAgICAgICByZXNvdXJjZVRpdGxlQWNjZXNzb3I9XCJyZXNvdXJjZVRpdGxlXCJcbiAgICAgICAgICBzdGVwPXs2MH1cbiAgICAgICAgICB2aWV3cz17dmlld3N9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0ZyYWdtZW50PlxuICApXG59XG5SZXNvdXJjZS5wcm9wVHlwZXMgPSB7XG4gIGxvY2FsaXplcjogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZUxvY2FsaXplciksXG59XG4iLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBSZXNvdXJjZSBmcm9tICcuL2V4YW1wbGVDb2RlL3Jlc291cmNlJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG51bGwsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFeGFtcGxlMTEoKSB7XFxuICByZXR1cm4gPFJlc291cmNlIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cXG5FeGFtcGxlMTEuc3RvcnlOYW1lID0gJ1Jlc291cmNlIFNjaGVkdWxpbmcnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkV4YW1wbGUxMVwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgUmVzb3VyY2UgZnJvbSAnLi9leGFtcGxlQ29kZS9yZXNvdXJjZSdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0V4YW1wbGVzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG51bGwsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IEV4YW1wbGUxMSA9IGZ1bmN0aW9uIEV4YW1wbGUxMSgpIHtcbiAgcmV0dXJuIDxSZXNvdXJjZSBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07RXhhbXBsZTExLnN0b3J5TmFtZSA9ICdSZXNvdXJjZSBTY2hlZHVsaW5nJ1xuXG5cblxuRXhhbXBsZTExLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBFeGFtcGxlMTEoKSB7XFxuICByZXR1cm4gPFJlc291cmNlIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxcbn1cIiB9LCAuLi5FeGFtcGxlMTEucGFyYW1ldGVycyB9OyIsImltcG9ydCBSZWFjdCwgeyBGcmFnbWVudCwgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIERhdGVMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgRGVtb0xpbmsgZnJvbSAnLi4vLi4vRGVtb0xpbmsuY29tcG9uZW50J1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZXZlbnRzJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTZWxlY3RhYmxlKHsgbG9jYWxpemVyIH0pIHtcbiAgY29uc3QgW215RXZlbnRzLCBzZXRFdmVudHNdID0gdXNlU3RhdGUoZXZlbnRzKVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFNsb3QgPSB1c2VDYWxsYmFjayhcbiAgICAoeyBzdGFydCwgZW5kIH0pID0+IHtcbiAgICAgIGNvbnN0IHRpdGxlID0gd2luZG93LnByb21wdCgnTmV3IEV2ZW50IG5hbWUnKVxuICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgIHNldEV2ZW50cygocHJldikgPT4gWy4uLnByZXYsIHsgc3RhcnQsIGVuZCwgdGl0bGUgfV0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbc2V0RXZlbnRzXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0RXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQpID0+IHdpbmRvdy5hbGVydChldmVudC50aXRsZSksXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIHNjcm9sbFRvVGltZSB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEyKSxcbiAgICAgIHNjcm9sbFRvVGltZTogbmV3IERhdGUoMTk3MCwgMSwgMSwgNiksXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPEZyYWdtZW50PlxuICAgICAgPERlbW9MaW5rIGZpbGVOYW1lPVwic2VsZWN0YWJsZVwiPlxuICAgICAgICA8c3Ryb25nPlxuICAgICAgICAgIENsaWNrIGFuIGV2ZW50IHRvIHNlZSBtb3JlIGluZm8sIG9yIGRyYWcgdGhlIG1vdXNlIG92ZXIgdGhlIGNhbGVuZGFyXG4gICAgICAgICAgdG8gc2VsZWN0IGEgZGF0ZS90aW1lIHJhbmdlLlxuICAgICAgICA8L3N0cm9uZz5cbiAgICAgIDwvRGVtb0xpbms+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgICA8Q2FsZW5kYXJcbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XG4gICAgICAgICAgZXZlbnRzPXtteUV2ZW50c31cbiAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICBvblNlbGVjdEV2ZW50PXtoYW5kbGVTZWxlY3RFdmVudH1cbiAgICAgICAgICBvblNlbGVjdFNsb3Q9e2hhbmRsZVNlbGVjdFNsb3R9XG4gICAgICAgICAgc2VsZWN0YWJsZVxuICAgICAgICAgIHNjcm9sbFRvVGltZT17c2Nyb2xsVG9UaW1lfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9GcmFnbWVudD5cbiAgKVxufVxuXG5TZWxlY3RhYmxlLnByb3BUeXBlcyA9IHtcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlTG9jYWxpemVyKSxcbn1cbiIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IFNlbGVjdGFibGUgZnJvbSAnLi9leGFtcGxlQ29kZS9zZWxlY3RhYmxlJ1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG51bGwsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFeGFtcGxlMigpIHtcXG4gIHJldHVybiA8U2VsZWN0YWJsZSBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XFxuRXhhbXBsZTIuc3RvcnlOYW1lID0gJ0NyZWF0ZSBFdmVudHMnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkV4YW1wbGUyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MjB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBTZWxlY3RhYmxlIGZyb20gJy4vZXhhbXBsZUNvZGUvc2VsZWN0YWJsZSdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0V4YW1wbGVzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG51bGwsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IEV4YW1wbGUyID0gZnVuY3Rpb24gRXhhbXBsZTIoKSB7XG4gIHJldHVybiA8U2VsZWN0YWJsZSBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cbn07RXhhbXBsZTIuc3RvcnlOYW1lID0gJ0NyZWF0ZSBFdmVudHMnXG5cblxuXG5FeGFtcGxlMi5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRXhhbXBsZTIoKSB7XFxuICByZXR1cm4gPFNlbGVjdGFibGUgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLkV4YW1wbGUyLnBhcmFtZXRlcnMgfTsiLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbywgRnJhZ21lbnQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgRGF0ZUxvY2FsaXplciB9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbmltcG9ydCBEZW1vTGluayBmcm9tICcuLi8uLi9EZW1vTGluay5jb21wb25lbnQnXG5pbXBvcnQgZXZlbnRzIGZyb20gJy4uLy4uL3Jlc291cmNlcy9ldmVudHMnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRpbWVzbG90cyh7IGxvY2FsaXplciB9KSB7XG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxMiksIFtdKVxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIDxEZW1vTGluayBmaWxlTmFtZT1cInRpbWVzbG90c1wiIC8+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgICA8Q2FsZW5kYXJcbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XG4gICAgICAgICAgZXZlbnRzPXtldmVudHN9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgc3RlcD17MTV9XG4gICAgICAgICAgdGltZXNsb3RzPXs4fVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9GcmFnbWVudD5cbiAgKVxufVxuVGltZXNsb3RzLnByb3BUeXBlcyA9IHtcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlTG9jYWxpemVyKSxcbn1cbiIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IFRpbWVzbG90cyBmcm9tICcuL2V4YW1wbGVDb2RlL3RpbWVzbG90cydcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ0V4YW1wbGVzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBudWxsLFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZnVuY3Rpb24gRXhhbXBsZTcoKSB7XFxuICByZXR1cm4gPFRpbWVzbG90cyBsb2NhbGl6ZXI9e2xvY2FsaXplcn0gLz5cXG59XFxuRXhhbXBsZTcuc3RvcnlOYW1lID0gJ1RpbWVzbG90cydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRXhhbXBsZTdcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTh9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE4fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjIwfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IFRpbWVzbG90cyBmcm9tICcuL2V4YW1wbGVDb2RlL3RpbWVzbG90cydcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ0V4YW1wbGVzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG51bGwsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGNvbnN0IEV4YW1wbGU3ID0gZnVuY3Rpb24gRXhhbXBsZTcoKSB7XG4gIHJldHVybiA8VGltZXNsb3RzIGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxufTtFeGFtcGxlNy5zdG9yeU5hbWUgPSAnVGltZXNsb3RzJ1xuXG5cblxuRXhhbXBsZTcucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEV4YW1wbGU3KCkge1xcbiAgcmV0dXJuIDxUaW1lc2xvdHMgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9IC8+XFxufVwiIH0sIC4uLkV4YW1wbGU3LnBhcmFtZXRlcnMgfTsiLCJpbXBvcnQgUmVhY3QsIHsgRnJhZ21lbnQsIHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIsIFZpZXdzIH0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgJ21vbWVudC10aW1lem9uZSdcbmltcG9ydCBEZW1vTGluayBmcm9tICcuLi8uLi9EZW1vTGluay5jb21wb25lbnQnXG5pbXBvcnQgZXZlbnRzIGZyb20gJy4uLy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgVGltZXpvbmVTZWxlY3QgZnJvbSAnLi4vVGltZXpvbmVTZWxlY3QnXG5cbmNvbnN0IGRlZmF1bHRUWiA9IG1vbWVudC50ei5ndWVzcygpXG5jb25zdCBkZWZhdWx0RGF0ZVN0ciA9ICcyMDE1LTQtMTMnXG5cbmZ1bmN0aW9uIGdldERhdGUoc3RyLCBtb21lbnRPYmopIHtcbiAgcmV0dXJuIG1vbWVudE9iaihzdHIsICdZWVlZLU1NLUREJykudG9EYXRlKClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVGltZXpvbmVzKCkge1xuICBjb25zdCBbdGltZXpvbmUsIHNldFRpbWV6b25lXSA9IHVzZVN0YXRlKGRlZmF1bHRUWilcblxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBnZXROb3csIGxvY2FsaXplciwgbXlFdmVudHMsIHNjcm9sbFRvVGltZSB9ID1cbiAgICB1c2VNZW1vKCgpID0+IHtcbiAgICAgIG1vbWVudC50ei5zZXREZWZhdWx0KHRpbWV6b25lKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVmYXVsdERhdGU6IGdldERhdGUoZGVmYXVsdERhdGVTdHIsIG1vbWVudCksXG4gICAgICAgIGdldE5vdzogKCkgPT4gbW9tZW50KCkudG9EYXRlKCksXG4gICAgICAgIGxvY2FsaXplcjogbW9tZW50TG9jYWxpemVyKG1vbWVudCksXG4gICAgICAgIG15RXZlbnRzOiBbLi4uZXZlbnRzXSxcbiAgICAgICAgc2Nyb2xsVG9UaW1lOiBtb21lbnQoKS50b0RhdGUoKSxcbiAgICAgIH1cbiAgICB9LCBbdGltZXpvbmVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIG1vbWVudC50ei5zZXREZWZhdWx0KCkgLy8gcmVzZXQgdG8gYnJvd3NlciBUWiBvbiB1bm1vdW50XG4gICAgfVxuICB9LCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIDxEZW1vTGluayBmaWxlTmFtZT1cInRpbWV6b25lc1wiPlxuICAgICAgICA8VGltZXpvbmVTZWxlY3RcbiAgICAgICAgICBkZWZhdWx0VFo9e2RlZmF1bHRUWn1cbiAgICAgICAgICBzZXRUaW1lem9uZT17c2V0VGltZXpvbmV9XG4gICAgICAgICAgdGltZXpvbmU9e3RpbWV6b25lfVxuICAgICAgICAvPlxuICAgICAgPC9EZW1vTGluaz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICAgIDxDYWxlbmRhclxuICAgICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cbiAgICAgICAgICBldmVudHM9e215RXZlbnRzfVxuICAgICAgICAgIGdldE5vdz17Z2V0Tm93fVxuICAgICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICAgIHNjcm9sbFRvVGltZT17c2Nyb2xsVG9UaW1lfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9GcmFnbWVudD5cbiAgKVxufVxuIiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IFRpbWV6b25lQ2FsZW5kYXIgZnJvbSAnLi9leGFtcGxlQ29kZS90aW1lem9uZXMnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdFeGFtcGxlcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbnVsbCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFeGFtcGxlNCgpIHtcXG4gIHJldHVybiA8VGltZXpvbmVDYWxlbmRhciAvPlxcbn1cXG5FeGFtcGxlNC5zdG9yeU5hbWUgPSAnVGltZXpvbmVzJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJFeGFtcGxlNFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxNX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjE3fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTV9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MTd9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBUaW1lem9uZUNhbGVuZGFyIGZyb20gJy4vZXhhbXBsZUNvZGUvdGltZXpvbmVzJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAnRXhhbXBsZXMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbnVsbCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRXhhbXBsZTQgPSBmdW5jdGlvbiBFeGFtcGxlNCgpIHtcbiAgcmV0dXJuIDxUaW1lem9uZUNhbGVuZGFyIC8+XG59O0V4YW1wbGU0LnN0b3J5TmFtZSA9ICdUaW1lem9uZXMnXG5cblxuXG5FeGFtcGxlNC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRXhhbXBsZTQoKSB7XFxuICByZXR1cm4gPFRpbWV6b25lQ2FsZW5kYXIgLz5cXG59XCIgfSwgLi4uRXhhbXBsZTQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJhbGxkYXlhY2Nlc3NvclwiXG4gICAgfX0+e2BhbGxEYXlBY2Nlc3NvcmB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nIHwgZnVuY3Rpb24gKGV2ZW50OiBPYmplY3QpID0+IGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogJ2FsbERheSdgfTwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERldGVybWluZXMgd2hldGhlciB0aGUgZXZlbnQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYW4gXCJhbGwgZGF5XCIgZXZlbnQgYW5kIGlnbm9yZSB0aW1lLiBNdXN0IHJlc29sdmUgdG8gYSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2Bib29sZWFuYH08L2lubGluZUNvZGU+e2AgdmFsdWUuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLWFsbC1kYXktYWNjZXNzb3JcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCB7IGFjY2Vzc29yU3RvcnlBcmdzIH0gZnJvbSAnLi9zdG9yeURlZmF1bHRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9hbGxEYXlBY2Nlc3Nvci5tZHgnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZTogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IEFsbERheUFjY2Vzc29yID0gVGVtcGxhdGUuYmluZCh7fSlcXG5BbGxEYXlBY2Nlc3Nvci5zdG9yeU5hbWUgPSAnYWxsRGF5QWNjZXNzb3InXFxuQWxsRGF5QWNjZXNzb3IuYXJncyA9IGFjY2Vzc29yU3RvcnlBcmdzXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkFsbERheUFjY2Vzc29yXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyMX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI1fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjIxfSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI1fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgeyBhY2Nlc3NvclN0b3J5QXJncyB9IGZyb20gJy4vc3RvcnlEZWZhdWx0cydcbmltcG9ydCBtZHggZnJvbSAnLi9hbGxEYXlBY2Nlc3Nvci5tZHgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IEFsbERheUFjY2Vzc29yID0gVGVtcGxhdGUuYmluZCh7fSk7QWxsRGF5QWNjZXNzb3Iuc3RvcnlOYW1lID0gJ2FsbERheUFjY2Vzc29yJ1xuQWxsRGF5QWNjZXNzb3IuYXJncyA9IGFjY2Vzc29yU3RvcnlBcmdzXG5cblxuXG5BbGxEYXlBY2Nlc3Nvci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uQWxsRGF5QWNjZXNzb3IucGFyYW1ldGVycyB9OyIsImV4cG9ydCBkZWZhdWx0IFtcbiAge1xuICAgIGlkOiAwLFxuICAgIHRpdGxlOiAnQWxsIERheSBFdmVudCB2ZXJ5IGxvbmcgdGl0bGUnLFxuICAgIGFsbERheTogdHJ1ZSxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcbiAgfSxcbiAge1xuICAgIGlkOiAxLFxuICAgIHRpdGxlOiAnIzIgQWxsIERheSBFdmVudCB2ZXJ5IGxvbmcgdGl0bGUnLFxuICAgIGFsbERheTogdHJ1ZSxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAyKSxcbiAgfSxcbiAge1xuICAgIGlkOiAyLFxuICAgIHRpdGxlOiAnIzMgQWxsIERheSBFdmVudCB2ZXJ5IGxvbmcgdGl0bGUnLFxuICAgIGFsbERheTogdHJ1ZSxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcbiAgfSxcbiAge1xuICAgIGlkOiAzLFxuICAgIHRpdGxlOiAnIzQgQWxsIERheSBFdmVudCcsXG4gICAgYWxsRGF5OiB0cnVlLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxuICB9LFxuICB7XG4gICAgaWQ6IDQsXG4gICAgdGl0bGU6ICcjNSBBbGwgRGF5IEV2ZW50JyxcbiAgICBhbGxEYXk6IHRydWUsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMSksXG4gIH0sXG4gIHtcbiAgICBpZDogNSxcbiAgICB0aXRsZTogJyM2IEFsbCBEYXkgRXZlbnQnLFxuICAgIGFsbERheTogdHJ1ZSxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgNyksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCA3KSxcbiAgfSxcbl1cbiIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImFsbGRheW1heHJvd3NcIlxuICAgIH19PntgYWxsRGF5TWF4Um93c2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbnVtYmVyYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BJbmZpbml0eWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERldGVybWluZXMgYSBtYXhpbXVtIGFtb3VudCBvZiByb3dzIG9mIGV2ZW50cyB0byBkaXNwbGF5IGluIHRoZSBhbGwgZGF5IHNlY3Rpb24gZm9yIFdlZWsgYW5kIERheSB2aWV3cywgd2lsbCBkaXNwbGF5IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHNob3dNb3JlYH08L2lubGluZUNvZGU+e2AgYnV0dG9uIGlmIGV2ZW50cyBleGNlZGUgdGhpcyBudW1iZXIuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLWFsbC1kYXktbWF4LXJvd3NcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBhbGxEYXlFdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2FsbERheUV2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vYWxsRGF5TWF4Um93cy5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZTogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IEFsbERheU1heFJvd3MgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkFsbERheU1heFJvd3Muc3RvcnlOYW1lID0gJ2FsbERheU1heFJvd3MnXFxuQWxsRGF5TWF4Um93cy5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXFxuICBldmVudHM6IGFsbERheUV2ZW50cyxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG4gIGFsbERheU1heFJvd3M6IDIsXFxuICBwb3B1cDogdHJ1ZSxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkFsbERheU1heFJvd3NcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjI0fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6Mjh9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjR9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6Mjh9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGFsbERheUV2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvYWxsRGF5RXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2FsbERheU1heFJvd3MubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgYXJnVHlwZXM6IHtcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBkZWZhdWx0RGF0ZTogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgQWxsRGF5TWF4Um93cyA9IFRlbXBsYXRlLmJpbmQoe30pO0FsbERheU1heFJvd3Muc3RvcnlOYW1lID0gJ2FsbERheU1heFJvd3MnXG5BbGxEYXlNYXhSb3dzLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXG4gIGV2ZW50czogYWxsRGF5RXZlbnRzLFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG4gIGFsbERheU1heFJvd3M6IDIsXG4gIHBvcHVwOiB0cnVlLFxufVxuXG5cblxuQWxsRGF5TWF4Um93cy5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uQWxsRGF5TWF4Um93cy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiYmFja2dyb3VuZGV2ZW50c1wiXG4gICAgfX0+e2BiYWNrZ3JvdW5kRXZlbnRzYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BhcnJheU9mKEJhY2tncm91bmRFdmVudClgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YFtdYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQW4gYXJyYXkgb2YgYmFja2dyb3VuZCBldmVudCBvYmplY3RzIHRvIGRpc3BsYXkgb24gdGhlIGNhbGVuZGFyLiBCYWNrZ3JvdW5kXG5FdmVudHMgYmVoYXZlIHNpbWlsYXJseSB0byBFdmVudHMgYnV0IGFyZSBub3QgZmFjdG9yZWQgaW50byBFdmVudCBvdmVybGFwIGxvZ2ljLFxuYWxsb3dpbmcgdGhlbSB0byBzaXQgYmVoaW5kIGFueSBFdmVudHMgdGhhdCBtYXkgb2NjdXIgZHVyaW5nIHRoZSBzYW1lIHBlcmlvZC5cbkJhY2tncm91bmQgRXZlbnRzIG9iamVjdHMgY2FuIGJlIGFueSBzaGFwZSwgYXMgbG9uZyBhcyB0aGUgQ2FsZW5kYXIga25vd3MgaG93IHRvXG5yZXRyaWV2ZSB0aGUgZm9sbG93aW5nIGRldGFpbHMgb2YgdGhlIGV2ZW50OmB9PC9wPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHN0YXJ0IHRpbWVgfTwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BlbmQgdGltZWB9PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRWFjaCBvZiB0aGVzZSBwcm9wZXJ0aWVzIGNhbiBiZSBjdXN0b21pemVkIG9yIGdlbmVyYXRlZCBkeW5hbWljYWxseSBieVxuc2V0dGluZyB0aGUgdmFyaW91cyBcImFjY2Vzc29yXCIgcHJvcHMuIFdpdGhvdXQgYW55IGNvbmZpZ3VyYXRpb24gdGhlIGRlZmF1bHRcbmV2ZW50IHNob3VsZCBsb29rIGxpa2U6YH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YEJhY2tncm91bmRFdmVudCB7XG4gIHN0YXJ0OiBEYXRlLFxuICBlbmQ6IERhdGUsXG59XG5gfTwvY29kZT48L3ByZT5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tYmFjay1ncm91bmQtZXZlbnRzXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgeyBiYWNrZ3JvdW5kRXZlbnRzLCBldmVudHMgfSBmcm9tICcuLi9oZWxwZXJzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9iYWNrZ3JvdW5kRXZlbnRzLm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHRWaWV3OiB7XFxuICAgICAgY29udHJvbDoge1xcbiAgICAgICAgdHlwZTogbnVsbCxcXG4gICAgICB9LFxcbiAgICB9LFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IEJhY2tHcm91bmRFdmVudHMgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkJhY2tHcm91bmRFdmVudHMuc3RvcnlOYW1lID0gJ2JhY2tncm91bmRFdmVudHMnXFxuQmFja0dyb3VuZEV2ZW50cy5hcmdzID0ge1xcbiAgYmFja2dyb3VuZEV2ZW50cyxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgZXZlbnRzLFxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxcbn1cXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiQmFja0dyb3VuZEV2ZW50c1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6Mjh9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozMn0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozMn19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgeyBiYWNrZ3JvdW5kRXZlbnRzLCBldmVudHMgfSBmcm9tICcuLi9oZWxwZXJzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2JhY2tncm91bmRFdmVudHMubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgYXJnVHlwZXM6IHtcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBkZWZhdWx0Vmlldzoge1xuICAgICAgY29udHJvbDoge1xuICAgICAgICB0eXBlOiBudWxsLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgQmFja0dyb3VuZEV2ZW50cyA9IFRlbXBsYXRlLmJpbmQoe30pO0JhY2tHcm91bmRFdmVudHMuc3RvcnlOYW1lID0gJ2JhY2tncm91bmRFdmVudHMnXG5CYWNrR3JvdW5kRXZlbnRzLmFyZ3MgPSB7XG4gIGJhY2tncm91bmRFdmVudHMsXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICBldmVudHMsXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcbn1cblxuXG5cbkJhY2tHcm91bmRFdmVudHMucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVwiIH0sIC4uLkJhY2tHcm91bmRFdmVudHMucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImNvbXBvbmVudHNcIlxuICAgIH19PntgY29tcG9uZW50c2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgb2JqZWN0YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ3VzdG9taXplIGhvdyBkaWZmZXJlbnQgc2VjdGlvbnMgb2YgdGhlIGNhbGVuZGFyIHJlbmRlciBieSBwcm92aWRpbmcgY3VzdG9tIENvbXBvbmVudHMuIEluIHBhcnRpY3VsYXIgdGhlIEV2ZW50IGNvbXBvbmVudCBjYW4gYmUgc3BlY2lmaWVkIGZvciB0aGUgZW50aXJlIGNhbGVuZGFyLCBvciB5b3UgY2FuIHByb3ZpZGUgYW4gaW5kaXZpZHVhbCBjb21wb25lbnQgZm9yIGVhY2ggdmlldyB0eXBlLmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanN4XCJcbiAgICAgIH19PntgY29uc3QgY29tcG9uZW50cyA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgZXZlbnQ6IE15RXZlbnQsIC8vIHVzZWQgYnkgZWFjaCB2aWV3IChNb250aCwgRGF5LCBXZWVrKVxuICBldmVudFdyYXBwZXI6IE15RXZlbnRXcmFwcGVyLFxuICBldmVudENvbnRhaW5lcldyYXBwZXI6IE15RXZlbnRDb250YWluZXJXcmFwcGVyLFxuICBkYXRlQ2VsbFdyYXBwZXI6IE15RGF0ZUNlbGxXcmFwcGVyLFxuICBkYXlDb2x1bW5XcmFwcGVyOiBNeURheUNvbHVtbldyYXBwZXIsXG4gIHRpbWVTbG90V3JhcHBlcjogTXlUaW1lU2xvdFdyYXBwZXIsXG4gIHRpbWVHdXR0ZXJIZWFkZXI6IE15VGltZUd1dHRlcldyYXBwZXIsXG4gIHJlc291cmNlSGVhZGVyOiBNeVJlc291cmNlSGVhZGVyLFxuICB0b29sYmFyOiBNeVRvb2xiYXIsXG4gIGFnZW5kYToge1xuICAgIGV2ZW50OiBNeUFnZW5kYUV2ZW50LCAvLyB3aXRoIHRoZSBhZ2VuZGEgdmlldyB1c2UgYSBkaWZmZXJlbnQgY29tcG9uZW50IHRvIHJlbmRlciBldmVudHNcbiAgICB0aW1lOiBNeUFnZW5kYVRpbWUsXG4gICAgZGF0ZTogTXlBZ2VuZGFEYXRlLFxuICB9LFxuICBkYXk6IHtcbiAgICBoZWFkZXI6IE15RGF5SGVhZGVyLFxuICAgIGV2ZW50OiBNeURheUV2ZW50LFxuICB9LFxuICB3ZWVrOiB7XG4gICAgaGVhZGVyOiBNeVdlZWtIZWFkZXIsXG4gICAgZXZlbnQ6IE15V2Vla0V2ZW50LFxuICB9LFxuICBtb250aDoge1xuICAgIGhlYWRlcjogTXlNb250aEhlYWRlcixcbiAgICBkYXRlSGVhZGVyOiBNeU1vbnRoRGF0ZUhlYWRlcixcbiAgICBldmVudDogTXlNb250aEV2ZW50LFxuICB9XG59KSwgW10pXG48Q2FsZW5kYXIgY29tcG9uZW50cz17Y29tcG9uZW50c30gLz5cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tY29tcG9uZW50c1wiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCdcbmltcG9ydCB7IE5hdmlnYXRlIGFzIG5hdmlnYXRlIH0gZnJvbSAnLi4vLi4vLi4vc3JjJ1xuXG5mdW5jdGlvbiBWaWV3TmFtZXNHcm91cCh7IHZpZXdzOiB2aWV3TmFtZXMsIHZpZXcsIG1lc3NhZ2VzLCBvblZpZXcgfSkge1xuICByZXR1cm4gdmlld05hbWVzLm1hcCgobmFtZSkgPT4gKFxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAga2V5PXtuYW1lfVxuICAgICAgY2xhc3NOYW1lPXtjbHN4KHsgJ3JiYy1hY3RpdmUnOiB2aWV3ID09PSBuYW1lIH0pfVxuICAgICAgb25DbGljaz17KCkgPT4gb25WaWV3KG5hbWUpfVxuICAgID5cbiAgICAgIHttZXNzYWdlc1tuYW1lXX1cbiAgICA8L2J1dHRvbj5cbiAgKSlcbn1cblZpZXdOYW1lc0dyb3VwLnByb3BUeXBlcyA9IHtcbiAgbWVzc2FnZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9uVmlldzogUHJvcFR5cGVzLmZ1bmMsXG4gIHZpZXc6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHZpZXdzOiBQcm9wVHlwZXMuYXJyYXksXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEN1c3RvbVRvb2xiYXIoe1xuICAvLyBkYXRlLCAvLyBhdmFpbGFibGUsIGJ1dCBub3QgdXNlZCBoZXJlXG4gIGxhYmVsLFxuICBsb2NhbGl6ZXI6IHsgbWVzc2FnZXMgfSxcbiAgb25OYXZpZ2F0ZSxcbiAgb25WaWV3LFxuICB2aWV3LFxuICB2aWV3cyxcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJiYy10b29sYmFyXCI+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJyYmMtYnRuLWdyb3VwXCI+XG4gICAgICAgIDxWaWV3TmFtZXNHcm91cFxuICAgICAgICAgIHZpZXc9e3ZpZXd9XG4gICAgICAgICAgdmlld3M9e3ZpZXdzfVxuICAgICAgICAgIG1lc3NhZ2VzPXttZXNzYWdlc31cbiAgICAgICAgICBvblZpZXc9e29uVmlld31cbiAgICAgICAgLz5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicmJjLXRvb2xiYXItbGFiZWxcIj57bGFiZWx9PC9zcGFuPlxuXG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2Nsc3goJ3JiYy1idG4tZ3JvdXAnLCAnZXhhbXBsZXMtLWN1c3RvbS10b29sYmFyJyl9PlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4gb25OYXZpZ2F0ZShuYXZpZ2F0ZS5QUkVWSU9VUyl9XG4gICAgICAgICAgYXJpYS1sYWJlbD17bWVzc2FnZXMucHJldmlvdXN9XG4gICAgICAgID5cbiAgICAgICAgICAmIzYwO1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uTmF2aWdhdGUobmF2aWdhdGUuVE9EQVkpfVxuICAgICAgICAgIGFyaWEtbGFiZWw9e21lc3NhZ2VzLnRvZGF5fVxuICAgICAgICA+XG4gICAgICAgICAgJiM4MjI2O1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uTmF2aWdhdGUobmF2aWdhdGUuTkVYVCl9XG4gICAgICAgICAgYXJpYS1sYWJlbD17bWVzc2FnZXMubmV4dH1cbiAgICAgICAgPlxuICAgICAgICAgICYjNjI7XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICApXG59XG5DdXN0b21Ub29sYmFyLnByb3BUeXBlcyA9IHtcbiAgZGF0ZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG4gIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIG1lc3NhZ2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICBvbk5hdmlnYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25WaWV3OiBQcm9wVHlwZXMuZnVuYyxcbiAgdmlldzogUHJvcFR5cGVzLnN0cmluZyxcbiAgdmlld3M6IFByb3BUeXBlcy5hcnJheSxcbn1cbiIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2NvbXBvbmVudHMubWR4J1xcbmltcG9ydCBDdXN0b21Ub29sYmFyIGZyb20gJy4vY3VzdG9tQ29tcG9uZW50cy9DdXN0b21Ub29sYmFyLmNvbXBvbmVudCdcXG5pbXBvcnQgJy4uL3Jlc291cmNlcy9jdXN0b21Ub29sYmFyLnNjc3MnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIENvbXBvbmVudHMoKSB7XFxuICBjb25zdCB7IGNvbXBvbmVudHMsIGRlZmF1bHREYXRlIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGNvbXBvbmVudHM6IHtcXG4gICAgICAgIHRvb2xiYXI6IEN1c3RvbVRvb2xiYXIsXFxuICAgICAgfSxcXG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgY29tcG9uZW50cz17Y29tcG9uZW50c31cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuQ29tcG9uZW50cy5zdG9yeU5hbWUgPSAnY29tcG9uZW50cydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiQ29tcG9uZW50c1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoyMX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQyfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MjF9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDJ9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9jb21wb25lbnRzLm1keCdcbmltcG9ydCBDdXN0b21Ub29sYmFyIGZyb20gJy4vY3VzdG9tQ29tcG9uZW50cy9DdXN0b21Ub29sYmFyLmNvbXBvbmVudCdcbmltcG9ydCAnLi4vcmVzb3VyY2VzL2N1c3RvbVRvb2xiYXIuc2NzcydcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IENvbXBvbmVudHMgPSBmdW5jdGlvbiBDb21wb25lbnRzKCkge1xuICBjb25zdCB7IGNvbXBvbmVudHMsIGRlZmF1bHREYXRlIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIHRvb2xiYXI6IEN1c3RvbVRvb2xiYXIsXG4gICAgICB9LFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0NvbXBvbmVudHMuc3RvcnlOYW1lID0gJ2NvbXBvbmVudHMnXG5cblxuXG5Db21wb25lbnRzLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBDb21wb25lbnRzKCkge1xcbiAgY29uc3QgeyBjb21wb25lbnRzLCBkZWZhdWx0RGF0ZSB9ID0gdXNlTWVtbyhcXG4gICAgKCkgPT4gKHtcXG4gICAgICBjb21wb25lbnRzOiB7XFxuICAgICAgICB0b29sYmFyOiBDdXN0b21Ub29sYmFyLFxcbiAgICAgIH0sXFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLkNvbXBvbmVudHMucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImN1bHR1cmVcIlxuICAgIH19PntgY3VsdHVyZWB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2Bub25lIChicm93c2VyIGRlZmF1bHQpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgU3BlY2lmeSBhIHNwZWNpZmljIGN1bHR1cmUgY29kZSBmb3IgdGhlIENhbGVuZGFyLiBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgY3VsdHVyZWB9PC9pbmxpbmVDb2RlPntgIGlzIHVzZWQgYnkgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0c1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YGZvcm1hdHNgfTwvTGlua1RvPntgIHdpdGggeW91ciBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJsb2NhbGl6ZXJcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2Bsb2NhbGl6ZXJgfTwvTGlua1RvPntgIHRvICdmb3JtYXQnIGRhdGUvdGltZSBpbmZvcm1hdGlvbiBvbiB0aGUgQ2FsZW5kYXIuIFRvIGxvY2FsaXplIG1lc3NhZ2luZywgdXNlIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJtZXNzYWdlc1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YG1lc3NhZ2VzYH08L0xpbmtUbz57YCBwcm9wLmB9PC9wPlxuICAgIDxwPntgU2VlIHRoZSBgfTxMaW5rVG8ga2luZD1cImV4YW1wbGVzXCIgc3Rvcnk9XCJleGFtcGxlLTVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BMb2NhbGl6YXRpb24gRXhhbXBsZWB9PC9MaW5rVG8+e2AgZm9yIGFub3RoZXIgZXhhbXBsZSBvZiBjb21iaW5pbmcgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgcnRsYH08L2lubGluZUNvZGU+e2AsIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGxvY2FsaXplcmB9PC9pbmxpbmVDb2RlPntgLCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BjdWx0dXJlYH08L2lubGluZUNvZGU+e2AgYW5kIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG1lc3NhZ2VzYH08L2lubGluZUNvZGU+e2AuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgTm90ZTogaXQncyBnZW5lcmFsbHkgYmV0dGVyIHRvIGhhbmRsZSB0aGlzIGdsb2JhbGx5IHZpYSB5b3VyIGkxOG4gbGlicmFyeS5gfTwvc3Ryb25nPjwvcD5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tY3VsdHVyZVwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vY3VsdHVyZS5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHREYXRlOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBjdWx0dXJlOiB7XFxuICAgICAgb3B0aW9uczogWydlcycsICdmcicsICdlbi11cycsICdlbi1nYiddLFxcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgQ3VsdHVyZSA9IFRlbXBsYXRlLmJpbmQoe30pXFxuQ3VsdHVyZS5zdG9yeU5hbWUgPSAnY3VsdHVyZSdcXG5DdWx0dXJlLmFyZ3MgPSB7XFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxcbiAgY3VsdHVyZTogJ2VzJyxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkN1bHR1cmVcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MzR9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzB9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MzR9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9jdWx0dXJlLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBjdWx0dXJlOiB7XG4gICAgICBvcHRpb25zOiBbJ2VzJywgJ2ZyJywgJ2VuLXVzJywgJ2VuLWdiJ10sXG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgQ3VsdHVyZSA9IFRlbXBsYXRlLmJpbmQoe30pO0N1bHR1cmUuc3RvcnlOYW1lID0gJ2N1bHR1cmUnXG5DdWx0dXJlLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxuICBjdWx0dXJlOiAnZXMnLFxufVxuXG5cblxuQ3VsdHVyZS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uQ3VsdHVyZS5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZGF0ZVwiXG4gICAgfX0+e2BkYXRlYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BpbnN0YW5jZU9mKERhdGUpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BuZXcgRGF0ZSgpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGNvbnRyb2xsZWQgYnk6IGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLW5hdmlnYXRlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgb25OYXZpZ2F0ZWB9PC9MaW5rVG8+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIGN1cnJlbnQgZGF0ZSB2YWx1ZSBvZiB0aGUgY2FsZW5kYXIuIERldGVybWluZXMgdGhlIHZpc2libGUgdmlldyByYW5nZS5cbklmIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGRhdGVgfTwvaW5saW5lQ29kZT57YCBpcyBvbWl0dGVkIHRoZW4gdGhlIHJlc3VsdCBvZiBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJnZXQtbm93XCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZ2V0Tm93YH08L0xpbmtUbz57YCBpcyB1c2VkOyBvdGhlcndpc2UgdGhlXG5jdXJyZW50IGRhdGUgaXMgdXNlZC5gfTwvcD5cbiAgICA8cD57YFRoaXMgaXMgYSBjb250cm9sbGFibGUgcHJvcCwgd2hlbiB1c2luZyBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1uYXZpZ2F0ZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uTmF2aWdhdGVgfTwvTGlua1RvPjwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWNhbC1kYXRlXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2RhdGUubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBDYWxEYXRlKCkge1xcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMSkpXFxuXFxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGF0ZT17ZGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbkNhbERhdGUuc3RvcnlOYW1lID0gJ2RhdGUnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkNhbERhdGVcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozNH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM0fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9kYXRlLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IENhbERhdGUgPSBmdW5jdGlvbiBDYWxEYXRlKCkge1xuICBjb25zdCBbZGF0ZSwgc2V0RGF0ZV0gPSB1c2VTdGF0ZShuZXcgRGF0ZSgyMDE1LCAzLCAxKSlcblxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGF0ZT17ZGF0ZX1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0NhbERhdGUuc3RvcnlOYW1lID0gJ2RhdGUnXG5cblxuXG5DYWxEYXRlLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBDYWxEYXRlKCkge1xcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMSkpXFxuXFxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGF0ZT17ZGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLkNhbERhdGUucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRheWxheW91dGFsZ29yaXRobVwiXG4gICAgfX0+e2BkYXlMYXlvdXRBbGdvcml0aG1gfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0cmluZyB8IEZ1bmN0aW9uKGV2ZW50cywgbWluaW11bVN0YXJ0RGlmZmVyZW5jZSwgc2xvdE1ldHJpY3MsIGFjY2Vzc29ycylgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG92ZXJsYXBgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBIGRheSBldmVudCBsYXlvdXQoYXJyYW5nZW1lbnQpIGFsZ29yaXRobS5gfTwvcD5cbiAgICA8cD48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb3ZlcmxhcGB9PC9pbmxpbmVDb2RlPntgIGFsbG93cyBldmVudHMgdG8gYmUgb3ZlcmxhcHBlZC5gfTwvcD5cbiAgICA8cD48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbm8tb3ZlcmxhcGB9PC9pbmxpbmVDb2RlPntgIHJlc2l6ZXMgZXZlbnRzIHRvIGF2b2lkIG92ZXJsYXAuYH08L3A+XG4gICAgPHA+e2BvciBjdXN0b20gYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgRnVuY3Rpb24oZXZlbnRzLCBtaW5pbXVtU3RhcnREaWZmZXJlbmNlLCBzbG90TWV0cmljcywgYWNjZXNzb3JzKWB9PC9pbmxpbmVDb2RlPjwvcD5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tZGF5LWxheW91dC1hbGdvcml0aG1cIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2RheUxheW91dEFsZ29yaXRobS5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHREYXRlOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHRWaWV3OiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkYXlMYXlvdXRBbGdvcml0aG06IHtcXG4gICAgICBvcHRpb25zOiBbJ292ZXJsYXAnLCAnbm8tb3ZlcmxhcCddLFxcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgRGF5TGF5b3V0QWxnb3JpdGhtID0gVGVtcGxhdGUuYmluZCh7fSlcXG5EYXlMYXlvdXRBbGdvcml0aG0uc3RvcnlOYW1lID0gJ2RheUxheW91dEFsZ29yaXRobSdcXG5EYXlMYXlvdXRBbGdvcml0aG0uYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG4gIGRheUxheW91dEFsZ29yaXRobTogJ25vLW92ZXJsYXAnLFxcbn1cXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRGF5TGF5b3V0QWxnb3JpdGhtXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM1fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjMxfSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM1fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZGF5TGF5b3V0QWxnb3JpdGhtLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBkZWZhdWx0VmlldzogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRheUxheW91dEFsZ29yaXRobToge1xuICAgICAgb3B0aW9uczogWydvdmVybGFwJywgJ25vLW92ZXJsYXAnXSxcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cbiAgPC9kaXY+XG4pXG5cbmV4cG9ydCBjb25zdCBEYXlMYXlvdXRBbGdvcml0aG0gPSBUZW1wbGF0ZS5iaW5kKHt9KTtEYXlMYXlvdXRBbGdvcml0aG0uc3RvcnlOYW1lID0gJ2RheUxheW91dEFsZ29yaXRobSdcbkRheUxheW91dEFsZ29yaXRobS5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG4gIGRheUxheW91dEFsZ29yaXRobTogJ25vLW92ZXJsYXAnLFxufVxuXG5cblxuRGF5TGF5b3V0QWxnb3JpdGhtLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5EYXlMYXlvdXRBbGdvcml0aG0ucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRheXByb3BnZXR0ZXJcIlxuICAgIH19PntgZGF5UHJvcEdldHRlcmB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUpID0+IHtjbGFzc05hbWU/OiBzdHJpbmcsIHN0eWxlPzogT2JqZWN0fWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YE9wdGlvbmFsbHkgcHJvdmlkZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBvYmplY3Qgb2YgY2xhc3NOYW1lIG9yIHN0eWxlIHByb3BzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHRoZSBkYXkgYmFja2dyb3VuZC5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BDYXV0aW9uIWB9PC9zdHJvbmc+e2AgU3R5bGVzIHRoYXQgY2hhbmdlIGxheW91dCBvciBwb3NpdGlvbiBtYXkgYnJlYWsgdGhlIGNhbGVuZGFyIGluIHVuZXhwZWN0ZWQgd2F5cy5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWRheS1wcm9wLWdldHRlclwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9kYXlQcm9wR2V0dGVyLm1keCdcXG5pbXBvcnQgJy4uL3Jlc291cmNlcy9wcm9wR2V0dGVyLnNjc3MnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIERheVByb3BHZXR0ZXIoKSB7XFxuICBjb25zdCBkYXlQcm9wR2V0dGVyID0gdXNlQ2FsbGJhY2soXFxuICAgIChkYXRlKSA9PiAoe1xcbiAgICAgIC4uLihtb21lbnQoZGF0ZSkuZGF5KCkgPT09IDIgJiYge1xcbiAgICAgICAgY2xhc3NOYW1lOiAndHVlc2RheScsXFxuICAgICAgfSksXFxuICAgICAgLi4uKG1vbWVudChkYXRlKS5kYXkoKSA9PT0gNCAmJiB7XFxuICAgICAgICBzdHlsZToge1xcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdkYXJrZ3JlZW4nLFxcbiAgICAgICAgICBjb2xvcjogJ3doaXRlJyxcXG4gICAgICAgIH0sXFxuICAgICAgfSksXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxcbiAgICAgICAgZGF5UHJvcEdldHRlcj17ZGF5UHJvcEdldHRlcn1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuRGF5UHJvcEdldHRlci5zdG9yeU5hbWUgPSAnZGF5UHJvcEdldHRlcidcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRGF5UHJvcEdldHRlclwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoyMH0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ5fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MjB9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDl9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2RheVByb3BHZXR0ZXIubWR4J1xuaW1wb3J0ICcuLi9yZXNvdXJjZXMvcHJvcEdldHRlci5zY3NzJ1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRGF5UHJvcEdldHRlciA9IGZ1bmN0aW9uIERheVByb3BHZXR0ZXIoKSB7XG4gIGNvbnN0IGRheVByb3BHZXR0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZGF0ZSkgPT4gKHtcbiAgICAgIC4uLihtb21lbnQoZGF0ZSkuZGF5KCkgPT09IDIgJiYge1xuICAgICAgICBjbGFzc05hbWU6ICd0dWVzZGF5JyxcbiAgICAgIH0pLFxuICAgICAgLi4uKG1vbWVudChkYXRlKS5kYXkoKSA9PT0gNCAmJiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnZGFya2dyZWVuJyxcbiAgICAgICAgICBjb2xvcjogJ3doaXRlJyxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFtdXG4gIClcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMTMpLCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cbiAgICAgICAgZGF5UHJvcEdldHRlcj17ZGF5UHJvcEdldHRlcn1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0RheVByb3BHZXR0ZXIuc3RvcnlOYW1lID0gJ2RheVByb3BHZXR0ZXInXG5cblxuXG5EYXlQcm9wR2V0dGVyLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBEYXlQcm9wR2V0dGVyKCkge1xcbiAgY29uc3QgZGF5UHJvcEdldHRlciA9IHVzZUNhbGxiYWNrKFxcbiAgICAoZGF0ZSkgPT4gKHtcXG4gICAgICAuLi4obW9tZW50KGRhdGUpLmRheSgpID09PSAyICYmIHtcXG4gICAgICAgIGNsYXNzTmFtZTogJ3R1ZXNkYXknLFxcbiAgICAgIH0pLFxcbiAgICAgIC4uLihtb21lbnQoZGF0ZSkuZGF5KCkgPT09IDQgJiYge1xcbiAgICAgICAgc3R5bGU6IHtcXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnZGFya2dyZWVuJyxcXG4gICAgICAgICAgY29sb3I6ICd3aGl0ZScsXFxuICAgICAgICB9LFxcbiAgICAgIH0pLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksIFtdKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGRheVByb3BHZXR0ZXI9e2RheVByb3BHZXR0ZXJ9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLkRheVByb3BHZXR0ZXIucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRlZmF1bHRkYXRlXCJcbiAgICB9fT57YGRlZmF1bHREYXRlYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BpbnN0YW5jZU9mKERhdGUpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BuZXcgRGF0ZSgpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgU2V0cyB0aGUgaW5pdGlhbCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BkYXRlYH08L2lubGluZUNvZGU+e2AgdmFsdWUgaW4geW91ciBjYWxlbmRhciB3aGVuIHlvdSBkb24ndCB3YW50IGl0IHRvIGJlICd0b2RheScsIHdoZW4gbm90IHVzaW5nIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGdldE5vd2B9PC9pbmxpbmVDb2RlPntgLCBvciBjb250cm9sbGluZyBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BkYXRlYH08L2lubGluZUNvZGU+e2AuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLWRlZmF1bHQtZGF0ZVwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZGVmYXVsdERhdGUubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdFZpZXc6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgRGVmYXVsdERhdGUgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkRlZmF1bHREYXRlLnN0b3J5TmFtZSA9ICdkZWZhdWx0RGF0ZSdcXG5EZWZhdWx0RGF0ZS5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5EQVksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJEZWZhdWx0RGF0ZVwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6Mjh9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozMn0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozMn19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2RlZmF1bHREYXRlLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdFZpZXc6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IERlZmF1bHREYXRlID0gVGVtcGxhdGUuYmluZCh7fSk7RGVmYXVsdERhdGUuc3RvcnlOYW1lID0gJ2RlZmF1bHREYXRlJ1xuRGVmYXVsdERhdGUuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG59XG5cblxuXG5EZWZhdWx0RGF0ZS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uRGVmYXVsdERhdGUucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRlZmF1bHR2aWV3XCJcbiAgICB9fT57YGRlZmF1bHRWaWV3YH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YFZpZXdzLk1PTlRIIChtb250aHx3ZWVrfHdvcmtfd2Vla3xkYXl8YWdlbmRhKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFRoZSBpbml0aWFsIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHZpZXdgfTwvaW5saW5lQ29kZT57YCBzZXQgZm9yIHlvdXIgY2FsZW5kYXIgd2hlbiB5b3UgZG9uJ3Qgd2FudCBpdCB0byBiZSB0aGUgZGVmYXVsdCAoJ21vbnRoJykuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLWRlZmF1bHQtdmlld1wiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZGVmYXVsdFZpZXcubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgRGVmYXVsdFZpZXcgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkRlZmF1bHRWaWV3LnN0b3J5TmFtZSA9ICdkZWZhdWx0VmlldydcXG5EZWZhdWx0Vmlldy5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5EQVksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJEZWZhdWx0Vmlld1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6Mjh9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozMn0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyOH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozMn19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2RlZmF1bHRWaWV3Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IERlZmF1bHRWaWV3ID0gVGVtcGxhdGUuYmluZCh7fSk7RGVmYXVsdFZpZXcuc3RvcnlOYW1lID0gJ2RlZmF1bHRWaWV3J1xuRGVmYXVsdFZpZXcuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG59XG5cblxuXG5EZWZhdWx0Vmlldy5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uRGVmYXVsdFZpZXcucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRyaWxsZG93bnZpZXdcIlxuICAgIH19PntgZHJpbGxkb3duVmlld2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BWaWV3cy5EQVlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUaGUgc3RyaW5nIG5hbWUgb2YgdGhlIGRlc3RpbmF0aW9uIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHZpZXdgfTwvaW5saW5lQ29kZT57YCBmb3IgZHJpbGwtZG93biBhY3Rpb25zLCBzdWNoIGFzIGNsaWNraW5nIGEgZGF0ZSBoZWFkZXIsIG9yIHRoZSB0cnVuY2F0ZWQgZXZlbnRzIGxpbmtzLiBJZiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BnZXREcmlsbGRvd25WaWV3YH08L2lubGluZUNvZGU+e2AgaXMgYWxzbyBzcGVjaWZpZWQgaXQgd2lsbCBiZSB1c2VkIGluc3RlYWQuYH08L3A+XG4gICAgPHA+e2BTZXQgdG8gYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbnVsbGB9PC9pbmxpbmVDb2RlPntgIHRvIGRpc2FibGUgZHJpbGwtZG93biBhY3Rpb25zLmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2A8Q2FsZW5kYXIgZHJpbGxkb3duVmlldz1cImFnZW5kYVwiIC8+XG5gfTwvY29kZT48L3ByZT5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tZHJpbGxkb3duLXZpZXdcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2RyaWxsZG93blZpZXcubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICAgIGRyaWxsZG93blZpZXc6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiAnc2VsZWN0JyxcXG4gICAgICAgIG9wdGlvbnM6IFsnZGF5JywgJ2FnZW5kYSddLFxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBWaWV3cy5EQVksXFxuICAgICAgfSxcXG4gICAgfSxcXG4gIH0sXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVxcblxcbmV4cG9ydCBjb25zdCBEcmlsbGRvd25WaWV3ID0gVGVtcGxhdGUuYmluZCh7fSlcXG5EcmlsbGRvd25WaWV3LnN0b3J5TmFtZSA9ICdkcmlsbGRvd25WaWV3J1xcbkRyaWxsZG93blZpZXcuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcXG4gIGRyaWxsZG93blZpZXc6IFZpZXdzLkFHRU5EQSxcXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkRyaWxsZG93blZpZXdcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjM1fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6Mzl9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzV9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6Mzl9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9kcmlsbGRvd25WaWV3Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkcmlsbGRvd25WaWV3OiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICBvcHRpb25zOiBbJ2RheScsICdhZ2VuZGEnXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBWaWV3cy5EQVksXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cbiAgPC9kaXY+XG4pXG5cbmV4cG9ydCBjb25zdCBEcmlsbGRvd25WaWV3ID0gVGVtcGxhdGUuYmluZCh7fSk7RHJpbGxkb3duVmlldy5zdG9yeU5hbWUgPSAnZHJpbGxkb3duVmlldydcbkRyaWxsZG93blZpZXcuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxuICBkcmlsbGRvd25WaWV3OiBWaWV3cy5BR0VOREEsXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxufVxuXG5cblxuRHJpbGxkb3duVmlldy5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uRHJpbGxkb3duVmlldy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZWxlbWVudHByb3BzXCJcbiAgICB9fT57YGVsZW1lbnRQcm9wc2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgb2JqZWN0YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgUHJvcHMgcGFzc2VkIHRvIG1haW4gY2FsZW5kYXIgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgPGRpdj5gfTwvaW5saW5lQ29kZT57YC5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BOb3RlOmB9PC9zdHJvbmc+e2AgV2lsbCBub3QgcGFzcyBkb3duIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGNsYXNzTmFtZWB9PC9pbmxpbmVDb2RlPntgLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS1lbGVtZW50LXByb3BzXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2VsZW1lbnRQcm9wcy5tZHgnXFxuaW1wb3J0ICcuLi9yZXNvdXJjZXMvcHJvcEdldHRlci5zY3NzJ1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gIH0sXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVxcblxcbmV4cG9ydCBjb25zdCBFbGVtZW50UHJvcHMgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcbkVsZW1lbnRQcm9wcy5zdG9yeU5hbWUgPSAnZWxlbWVudFByb3BzJ1xcbkVsZW1lbnRQcm9wcy5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gIGVsZW1lbnRQcm9wczogeyBpZDogJ215X3NjaGVkdWxlcicgfSxcXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkVsZW1lbnRQcm9wc1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjR9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjoyOH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjoyOH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZWxlbWVudFByb3BzLm1keCdcbmltcG9ydCAnLi4vcmVzb3VyY2VzL3Byb3BHZXR0ZXIuc2NzcydcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gIH0sXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cbiAgPC9kaXY+XG4pXG5cbmV4cG9ydCBjb25zdCBFbGVtZW50UHJvcHMgPSBUZW1wbGF0ZS5iaW5kKHt9KTtFbGVtZW50UHJvcHMuc3RvcnlOYW1lID0gJ2VsZW1lbnRQcm9wcydcbkVsZW1lbnRQcm9wcy5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxuICBlbGVtZW50UHJvcHM6IHsgaWQ6ICdteV9zY2hlZHVsZXInIH0sXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxufVxuXG5cblxuRWxlbWVudFByb3BzLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5FbGVtZW50UHJvcHMucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImVuZGFjY2Vzc29yXCJcbiAgICB9fT57YGVuZEFjY2Vzc29yYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmcgfCBmdW5jdGlvbiAoZXZlbnQ6IE9iamVjdCkgPT4gRGF0ZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiAnZW5kJ2B9PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIGVuZCBkYXRlL3RpbWUgb2YgdGhlIGV2ZW50LiBNdXN0IHJlc29sdmUgdG8gYSBKYXZhU2NyaXB0IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YERhdGVgfTwvaW5saW5lQ29kZT57YCBvYmplY3QuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLWVuZC1hY2Nlc3NvclwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IHsgYWNjZXNzb3JTdG9yeUFyZ3MgfSBmcm9tICcuL3N0b3J5RGVmYXVsdHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2VuZEFjY2Vzc29yLm1keCdcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHREYXRlOiB7XFxuICAgICAgY29udHJvbDoge1xcbiAgICAgICAgdHlwZTogbnVsbCxcXG4gICAgICB9LFxcbiAgICB9LFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IEVuZEFjY2Vzc29yID0gVGVtcGxhdGUuYmluZCh7fSlcXG5FbmRBY2Nlc3Nvci5zdG9yeU5hbWUgPSAnZW5kQWNjZXNzb3InXFxuRW5kQWNjZXNzb3IuYXJncyA9IGFjY2Vzc29yU3RvcnlBcmdzXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkVuZEFjY2Vzc29yXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI5fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI1fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI5fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgeyBhY2Nlc3NvclN0b3J5QXJncyB9IGZyb20gJy4vc3RvcnlEZWZhdWx0cydcbmltcG9ydCBtZHggZnJvbSAnLi9lbmRBY2Nlc3Nvci5tZHgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IEVuZEFjY2Vzc29yID0gVGVtcGxhdGUuYmluZCh7fSk7RW5kQWNjZXNzb3Iuc3RvcnlOYW1lID0gJ2VuZEFjY2Vzc29yJ1xuRW5kQWNjZXNzb3IuYXJncyA9IGFjY2Vzc29yU3RvcnlBcmdzXG5cblxuXG5FbmRBY2Nlc3Nvci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uRW5kQWNjZXNzb3IucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImV2ZW50cHJvcGdldHRlclwiXG4gICAgfX0+e2BldmVudFByb3BHZXR0ZXJgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChldmVudDogT2JqZWN0LCBzdGFydDogRGF0ZSwgZW5kOiBEYXRlLCBpc1NlbGVjdGVkOiBib29sZWFuKSA9PiB7Y2xhc3NOYW1lPzogc3RyaW5nLCBzdHlsZT86IE9iamVjdH1gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BPcHRpb25hbGx5IHByb3ZpZGUgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gb2JqZWN0IG9mIGNsYXNzTmFtZSBvciBzdHlsZSBwcm9wcyB0byBiZSBhcHBsaWVkIHRvIHRoZSB0aGUgZXZlbnQgbm9kZS5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWV2ZW50LXByb3AtZ2V0dGVyXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2V2ZW50UHJvcEdldHRlci5tZHgnXFxuaW1wb3J0ICcuLi9yZXNvdXJjZXMvcHJvcEdldHRlci5zY3NzJ1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBFdmVudFByb3BHZXR0ZXIoKSB7XFxuICBjb25zdCBldmVudFByb3BHZXR0ZXIgPSB1c2VDYWxsYmFjayhcXG4gICAgKGV2ZW50LCBzdGFydCwgZW5kLCBpc1NlbGVjdGVkKSA9PiAoe1xcbiAgICAgIC4uLihpc1NlbGVjdGVkICYmIHtcXG4gICAgICAgIHN0eWxlOiB7XFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMwMDAnLFxcbiAgICAgICAgfSxcXG4gICAgICB9KSxcXG4gICAgICAuLi4obW9tZW50KHN0YXJ0KS5ob3VyKCkgPCAxMiAmJiB7XFxuICAgICAgICBjbGFzc05hbWU6ICdwb3dkZXJCbHVlJyxcXG4gICAgICB9KSxcXG4gICAgICAuLi4oZXZlbnQudGl0bGUuaW5jbHVkZXMoJ01lZXRpbmcnKSAmJiB7XFxuICAgICAgICBjbGFzc05hbWU6ICdkYXJrR3JlZW4nLFxcbiAgICAgIH0pLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e25ldyBEYXRlKDIwMTUsIDMsIDEzKX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxcbiAgICAgICAgZXZlbnRQcm9wR2V0dGVyPXtldmVudFByb3BHZXR0ZXJ9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbkV2ZW50UHJvcEdldHRlci5zdG9yeU5hbWUgPSAnZXZlbnRQcm9wR2V0dGVyJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJFdmVudFByb3BHZXR0ZXJcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MjB9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo0OX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjIwfSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ5fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9ldmVudFByb3BHZXR0ZXIubWR4J1xuaW1wb3J0ICcuLi9yZXNvdXJjZXMvcHJvcEdldHRlci5zY3NzJ1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRXZlbnRQcm9wR2V0dGVyID0gZnVuY3Rpb24gRXZlbnRQcm9wR2V0dGVyKCkge1xuICBjb25zdCBldmVudFByb3BHZXR0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQsIHN0YXJ0LCBlbmQsIGlzU2VsZWN0ZWQpID0+ICh7XG4gICAgICAuLi4oaXNTZWxlY3RlZCAmJiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzAwMCcsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIC4uLihtb21lbnQoc3RhcnQpLmhvdXIoKSA8IDEyICYmIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncG93ZGVyQmx1ZScsXG4gICAgICB9KSxcbiAgICAgIC4uLihldmVudC50aXRsZS5pbmNsdWRlcygnTWVldGluZycpICYmIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZGFya0dyZWVuJyxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFtdXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e25ldyBEYXRlKDIwMTUsIDMsIDEzKX1cbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XG4gICAgICAgIGV2ZW50UHJvcEdldHRlcj17ZXZlbnRQcm9wR2V0dGVyfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07RXZlbnRQcm9wR2V0dGVyLnN0b3J5TmFtZSA9ICdldmVudFByb3BHZXR0ZXInXG5cblxuXG5FdmVudFByb3BHZXR0ZXIucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEV2ZW50UHJvcEdldHRlcigpIHtcXG4gIGNvbnN0IGV2ZW50UHJvcEdldHRlciA9IHVzZUNhbGxiYWNrKFxcbiAgICAoZXZlbnQsIHN0YXJ0LCBlbmQsIGlzU2VsZWN0ZWQpID0+ICh7XFxuICAgICAgLi4uKGlzU2VsZWN0ZWQgJiYge1xcbiAgICAgICAgc3R5bGU6IHtcXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzAwMCcsXFxuICAgICAgICB9LFxcbiAgICAgIH0pLFxcbiAgICAgIC4uLihtb21lbnQoc3RhcnQpLmhvdXIoKSA8IDEyICYmIHtcXG4gICAgICAgIGNsYXNzTmFtZTogJ3Bvd2RlckJsdWUnLFxcbiAgICAgIH0pLFxcbiAgICAgIC4uLihldmVudC50aXRsZS5pbmNsdWRlcygnTWVldGluZycpICYmIHtcXG4gICAgICAgIGNsYXNzTmFtZTogJ2RhcmtHcmVlbicsXFxuICAgICAgfSksXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17bmV3IERhdGUoMjAxNSwgMywgMTMpfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBldmVudFByb3BHZXR0ZXI9e2V2ZW50UHJvcEdldHRlcn1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uRXZlbnRQcm9wR2V0dGVyLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJldmVudHNcIlxuICAgIH19PntgZXZlbnRzYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BhcnJheU9mKEV2ZW50KWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgW11gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBbiBhcnJheSBvZiBldmVudCBvYmplY3RzIHRvIGRpc3BsYXkgb24gdGhlIGNhbGVuZGFyLiBFdmVudHMgb2JqZWN0c1xuY2FuIGJlIGFueSBzaGFwZSwgYXMgbG9uZyBhcyB0aGUgQ2FsZW5kYXIga25vd3MgaG93IHRvIHJldHJpZXZlIHRoZVxuZm9sbG93aW5nIGRldGFpbHMgb2YgdGhlIGV2ZW50OmB9PC9wPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHN0YXJ0IHRpbWVgfTwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BlbmQgdGltZWB9PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHRpdGxlYH08L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgd2hldGhlciBpdHMgYW4gXCJhbGwgZGF5XCIgZXZlbnQgb3Igbm90YH08L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgYW55IHJlc291cmNlIHRoZSBldmVudCBtYXkgYmUgcmVsYXRlZCB0b2B9PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRWFjaCBvZiB0aGVzZSBwcm9wZXJ0aWVzIGNhbiBiZSBjdXN0b21pemVkIG9yIGdlbmVyYXRlZCBkeW5hbWljYWxseSBieVxuc2V0dGluZyB0aGUgdmFyaW91cyBcImFjY2Vzc29yXCIgcHJvcHMuIFdpdGhvdXQgYW55IGNvbmZpZ3VyYXRpb24gdGhlIGRlZmF1bHRcbmV2ZW50IHNob3VsZCBsb29rIGxpa2U6YH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YEV2ZW50IHtcbiAgdGl0bGU6IHN0cmluZyxcbiAgc3RhcnQ6IERhdGUsXG4gIGVuZDogRGF0ZSxcbiAgYWxsRGF5PzogYm9vbGVhblxuICByZXNvdXJjZT86IGFueSxcbn1cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS1ldmVudHNcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZXZlbnRzLm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgRXZlbnRzID0gVGVtcGxhdGUuYmluZCh7fSlcXG5FdmVudHMuc3RvcnlOYW1lID0gJ2V2ZW50cydcXG5FdmVudHMuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJFdmVudHNcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjI3fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MzF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6Mjd9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MzF9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2V2ZW50cy5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cbiAgPC9kaXY+XG4pXG5cbmV4cG9ydCBjb25zdCBFdmVudHMgPSBUZW1wbGF0ZS5iaW5kKHt9KTtFdmVudHMuc3RvcnlOYW1lID0gJ2V2ZW50cydcbkV2ZW50cy5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxuICBldmVudHM6IGRlbW9FdmVudHMsXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcbn1cblxuXG5cbkV2ZW50cy5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uRXZlbnRzLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJmb3JtYXRzXCJcbiAgICB9fT57YGZvcm1hdHNgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YE9iamVjdGB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwibG9jYWxpemVyXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBMb2NhbGl6ZXJcbiAgICA8L0xpbmtUbz4gc3BlY2lmaWMgZm9ybWF0cywgdGVsbCB0aGUgQ2FsZW5kYXIgaG93IHRvIGZvcm1hdCBhbmQgZGlzcGxheSBkYXRlcyBhbmRcbnRpbWVzLlxuICAgIDxwPntgVGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGZvcm1hdGB9PC9pbmxpbmVDb2RlPntgIHR5cGVzIGFyZSBkZXBlbmRlbnQgb24gdGhlIGNvbmZpZ3VyZWQgbG9jYWxpemVyOyBib3RoIE1vbWVudCBhbmQgR2xvYmFsaXplIGFjY2VwdCBzdHJpbmdzIG9mIHRva2VucyBhY2NvcmRpbmcgdG8gdGhlaXIgb3duIHNwZWNpZmljYXRpb24sIHN1Y2ggYXM6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YCdERCBtbSB5eXl5J2B9PC9pbmxpbmVDb2RlPntgLmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2Bjb25zdCBmb3JtYXRzID0gdXNlTWVtbygoKSA9PiAoe1xuICBkYXRlRm9ybWF0OiAnZGQnLFxuXG4gIGRheUZvcm1hdDogKGRhdGUsICwgbG9jYWxpemVyKSA9PlxuICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ0RERCcsIGN1bHR1cmUpLFxuXG4gIGRheVJhbmdlSGVhZGVyRm9ybWF0OiAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cbiAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCB7IGRhdGU6ICdzaG9ydCcgfSwgY3VsdHVyZSkgKyAnIOKAlCAnICtcbiAgICBsb2NhbGl6ZXIuZm9ybWF0KGVuZCwgeyBkYXRlOiAnc2hvcnQnIH0sIGN1bHR1cmUpXG59KSwgW10pXG5cbjxDYWxlbmRhciBmb3JtYXRzPXtmb3JtYXRzfSAvPlxuYH08L2NvZGU+PC9wcmU+XG4gICAgPENhbnZhcyBtZHhUeXBlPVwiQ2FudmFzXCI+XG4gIDxTdG9yeSBpZD1cInByb3BzLS1mb3JtYXRzXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzLm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5leHBvcnQgZnVuY3Rpb24gRm9ybWF0cygpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxcbiAgICAgIGZvcm1hdHM6IHtcXG4gICAgICAgIC8vIHRoZSAnZGF0ZScgb24gZWFjaCBkYXkgY2VsbCBvZiB0aGUgJ21vbnRoJyB2aWV3XFxuICAgICAgICBkYXRlRm9ybWF0OiAnRCcsXFxuICAgICAgICAvLyB0aGUgZGF5IG9mIHRoZSB3ZWVrIGhlYWRlciBpbiB0aGUgJ21vbnRoJyB2aWV3XFxuICAgICAgICB3ZWVrZGF5Rm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkZGRkJywgY3VsdHVyZSksXFxuICAgICAgICAvLyB0aGUgZGF5IGhlYWRlciBpbiB0aGUgJ3dlZWsnIGFuZCAnZGF5JyAoVGltZSBHcmlkKSB2aWV3c1xcbiAgICAgICAgZGF5Rm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkZGRkIERvJywgY3VsdHVyZSksXFxuICAgICAgICAvLyB0aGUgdGltZSBpbiB0aGUgZ3V0dGVyIGluIHRoZSBUaW1lIEdyaWQgdmlld3NcXG4gICAgICAgIHRpbWVHdXR0ZXJGb3JtYXQ6IChkYXRlLCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2hoOm1tIGEnLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuRm9ybWF0cy5zdG9yeU5hbWUgPSAnZm9ybWF0cydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRm9ybWF0c1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjUwfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NTB9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEZvcm1hdHMgPSBmdW5jdGlvbiBGb3JtYXRzKCkge1xuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMSksXG4gICAgICBmb3JtYXRzOiB7XG4gICAgICAgIC8vIHRoZSAnZGF0ZScgb24gZWFjaCBkYXkgY2VsbCBvZiB0aGUgJ21vbnRoJyB2aWV3XG4gICAgICAgIGRhdGVGb3JtYXQ6ICdEJyxcbiAgICAgICAgLy8gdGhlIGRheSBvZiB0aGUgd2VlayBoZWFkZXIgaW4gdGhlICdtb250aCcgdmlld1xuICAgICAgICB3ZWVrZGF5Rm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2RkZGQnLCBjdWx0dXJlKSxcbiAgICAgICAgLy8gdGhlIGRheSBoZWFkZXIgaW4gdGhlICd3ZWVrJyBhbmQgJ2RheScgKFRpbWUgR3JpZCkgdmlld3NcbiAgICAgICAgZGF5Rm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2RkZGQgRG8nLCBjdWx0dXJlKSxcbiAgICAgICAgLy8gdGhlIHRpbWUgaW4gdGhlIGd1dHRlciBpbiB0aGUgVGltZSBHcmlkIHZpZXdzXG4gICAgICAgIHRpbWVHdXR0ZXJGb3JtYXQ6IChkYXRlLCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnaGg6bW0gYScsIGN1bHR1cmUpLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0Zvcm1hdHMuc3RvcnlOYW1lID0gJ2Zvcm1hdHMnXG5cblxuXG5Gb3JtYXRzLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBGb3JtYXRzKCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cyB9ID0gdXNlTWVtbyhcXG4gICAgKCkgPT4gKHtcXG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMSksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgLy8gdGhlICdkYXRlJyBvbiBlYWNoIGRheSBjZWxsIG9mIHRoZSAnbW9udGgnIHZpZXdcXG4gICAgICAgIGRhdGVGb3JtYXQ6ICdEJyxcXG4gICAgICAgIC8vIHRoZSBkYXkgb2YgdGhlIHdlZWsgaGVhZGVyIGluIHRoZSAnbW9udGgnIHZpZXdcXG4gICAgICAgIHdlZWtkYXlGb3JtYXQ6IChkYXRlLCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2RkZGQnLCBjdWx0dXJlKSxcXG4gICAgICAgIC8vIHRoZSBkYXkgaGVhZGVyIGluIHRoZSAnd2VlaycgYW5kICdkYXknIChUaW1lIEdyaWQpIHZpZXdzXFxuICAgICAgICBkYXlGb3JtYXQ6IChkYXRlLCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2RkZGQgRG8nLCBjdWx0dXJlKSxcXG4gICAgICAgIC8vIHRoZSB0aW1lIGluIHRoZSBndXR0ZXIgaW4gdGhlIFRpbWUgR3JpZCB2aWV3c1xcbiAgICAgICAgdGltZUd1dHRlckZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnaGg6bW0gYScsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJmb3JtYXRzYWdlbmRhZGF0ZWZvcm1hdFwiXG4gICAgfX0+e2Bmb3JtYXRzLmFnZW5kYURhdGVGb3JtYXRgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChkYXRlOiBEYXRlLCBjdWx0dXJlOiA/c3RyaW5nLCBsb2NhbGl6ZXI6IERhdGVMb2NhbGl6ZXIpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERhdGVzIGRpc3BsYXllZCBpbiB0aGUgZ3V0dGVyIG9mIHRoZSBBZ2VuZGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgdmlld2B9PC9pbmxpbmVDb2RlPjwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWZvcm1hdHMtYWdlbmRhLWRhdGUtZm9ybWF0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0FnZW5kYURhdGVGb3JtYXQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBGb3JtYXRzQWdlbmREYXRlRm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBhZ2VuZGFEYXRlRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkZGRkIE1NTU0gRG8nLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZLCBWaWV3cy5BR0VOREFdLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLkFHRU5EQX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbkZvcm1hdHNBZ2VuZERhdGVGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuYWdlbmRhRGF0ZUZvcm1hdCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRm9ybWF0c0FnZW5kRGF0ZUZvcm1hdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ0fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDR9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0FnZW5kYURhdGVGb3JtYXQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRm9ybWF0c0FnZW5kRGF0ZUZvcm1hdCA9IGZ1bmN0aW9uIEZvcm1hdHNBZ2VuZERhdGVGb3JtYXQoKSB7XG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxuICAgICAgZm9ybWF0czoge1xuICAgICAgICBhZ2VuZGFEYXRlRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2RkZGQgTU1NTSBEbycsIGN1bHR1cmUpLFxuICAgICAgfSxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZLCBWaWV3cy5BR0VOREFdLFxuICAgIH0pLFxuICAgIFtdXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuQUdFTkRBfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgICAgdmlld3M9e3ZpZXdzfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtGb3JtYXRzQWdlbmREYXRlRm9ybWF0LnN0b3J5TmFtZSA9ICdmb3JtYXRzLmFnZW5kYURhdGVGb3JtYXQnXG5cblxuXG5Gb3JtYXRzQWdlbmREYXRlRm9ybWF0LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBGb3JtYXRzQWdlbmREYXRlRm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBhZ2VuZGFEYXRlRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkZGRkIE1NTU0gRG8nLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZLCBWaWV3cy5BR0VOREFdLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLkFHRU5EQX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLkZvcm1hdHNBZ2VuZERhdGVGb3JtYXQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNhZ2VuZGFoZWFkZXJmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5hZ2VuZGFIZWFkZXJGb3JtYXRgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChyYW5nZTogT2JqZWN0IHtzdGFydDogRGF0ZSwgZW5kOiBEYXRlfSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUb29sYmFyIGhlYWRlciBmb3JtYXQgZm9yIHRoZSBBZ2VuZGEgdmlldywgZS5nLiBcIjQvMS8yMDE1IOKAlCA1LzEvMjAxNVwiYH08L3A+XG4gICAgPENhbnZhcyBtZHhUeXBlPVwiQ2FudmFzXCI+XG4gIDxTdG9yeSBpZD1cInByb3BzLS1mb3JtYXRzLWFnZW5kYS1oZWFkZXItZm9ybWF0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0FnZW5kYUhlYWRlckZvcm1hdC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1hdHNBZ2VuZEhlYWRlckZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgYWdlbmRhSGVhZGVyRm9ybWF0OiAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChzdGFydCwgJ2RkZGQgTU1NTSBEbywgWVlZWScsIGN1bHR1cmUpICtcXG4gICAgICAgICAgJyAtICcgK1xcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGVuZCwgJ2RkZGQgTU1NTSBEbywgWVlZWScsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgICAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVksIFZpZXdzLkFHRU5EQV0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuQUdFTkRBfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIHZpZXdzPXt2aWV3c31cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuRm9ybWF0c0FnZW5kSGVhZGVyRm9ybWF0LnN0b3J5TmFtZSA9ICdmb3JtYXRzLmFnZW5kYUhlYWRlckZvcm1hdCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRm9ybWF0c0FnZW5kSGVhZGVyRm9ybWF0XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NDZ9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo0Nn19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzQWdlbmRhSGVhZGVyRm9ybWF0Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEZvcm1hdHNBZ2VuZEhlYWRlckZvcm1hdCA9IGZ1bmN0aW9uIEZvcm1hdHNBZ2VuZEhlYWRlckZvcm1hdCgpIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gICAgICBmb3JtYXRzOiB7XG4gICAgICAgIGFnZW5kYUhlYWRlckZvcm1hdDogKHsgc3RhcnQsIGVuZCB9LCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChzdGFydCwgJ2RkZGQgTU1NTSBEbywgWVlZWScsIGN1bHR1cmUpICtcbiAgICAgICAgICAnIC0gJyArXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChlbmQsICdkZGRkIE1NTU0gRG8sIFlZWVknLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWSwgVmlld3MuQUdFTkRBXSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLkFHRU5EQX1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAgIHZpZXdzPXt2aWV3c31cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07Rm9ybWF0c0FnZW5kSGVhZGVyRm9ybWF0LnN0b3J5TmFtZSA9ICdmb3JtYXRzLmFnZW5kYUhlYWRlckZvcm1hdCdcblxuXG5cbkZvcm1hdHNBZ2VuZEhlYWRlckZvcm1hdC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRm9ybWF0c0FnZW5kSGVhZGVyRm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBhZ2VuZGFIZWFkZXJGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCAnZGRkZCBNTU1NIERvLCBZWVlZJywgY3VsdHVyZSkgK1xcbiAgICAgICAgICAnIC0gJyArXFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZW5kLCAnZGRkZCBNTU1NIERvLCBZWVlZJywgY3VsdHVyZSksXFxuICAgICAgfSxcXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWSwgVmlld3MuQUdFTkRBXSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5BR0VOREF9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgdmlld3M9e3ZpZXdzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzQWdlbmRIZWFkZXJGb3JtYXQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNhZ2VuZGF0aW1lZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMuYWdlbmRhVGltZUZvcm1hdGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGltZSBvbmx5IChub3QgcmFuZ2UpIGRpc3BsYXllZCBpbiB0aGUgZ3V0dGVyIG9mIHRoZSBBZ2VuZGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgdmlld2B9PC9pbmxpbmVDb2RlPjwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWZvcm1hdHMtYWdlbmRhLXRpbWUtZm9ybWF0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0FnZW5kYVRpbWVGb3JtYXQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBGb3JtYXRzQWdlbmRUaW1lRm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBhZ2VuZGFUaW1lRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdoaDptbSBBJywgY3VsdHVyZSksXFxuICAgICAgfSxcXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWSwgVmlld3MuQUdFTkRBXSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5BR0VOREF9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgdmlld3M9e3ZpZXdzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5Gb3JtYXRzQWdlbmRUaW1lRm9ybWF0LnN0b3J5TmFtZSA9ICdmb3JtYXRzLmFnZW5kYVRpbWVGb3JtYXQnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkZvcm1hdHNBZ2VuZFRpbWVGb3JtYXRcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo0NH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ0fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2Zvcm1hdHNBZ2VuZGFUaW1lRm9ybWF0Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEZvcm1hdHNBZ2VuZFRpbWVGb3JtYXQgPSBmdW5jdGlvbiBGb3JtYXRzQWdlbmRUaW1lRm9ybWF0KCkge1xuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzLCB2aWV3cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgYWdlbmRhVGltZUZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdoaDptbSBBJywgY3VsdHVyZSksXG4gICAgICB9LFxuICAgICAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVksIFZpZXdzLkFHRU5EQV0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5BR0VOREF9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICB2aWV3cz17dmlld3N9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0Zvcm1hdHNBZ2VuZFRpbWVGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuYWdlbmRhVGltZUZvcm1hdCdcblxuXG5cbkZvcm1hdHNBZ2VuZFRpbWVGb3JtYXQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEZvcm1hdHNBZ2VuZFRpbWVGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzLCB2aWV3cyB9ID0gdXNlTWVtbyhcXG4gICAgKCkgPT4gKHtcXG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgICAgIGZvcm1hdHM6IHtcXG4gICAgICAgIGFnZW5kYVRpbWVGb3JtYXQ6IChkYXRlLCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2hoOm1tIEEnLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZLCBWaWV3cy5BR0VOREFdLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLkFHRU5EQX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLkZvcm1hdHNBZ2VuZFRpbWVGb3JtYXQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNhZ2VuZGF0aW1lcmFuZ2Vmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5hZ2VuZGFUaW1lUmFuZ2VGb3JtYXRgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChyYW5nZTogT2JqZWN0IHtzdGFydDogRGF0ZSwgZW5kOiBEYXRlfSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUaW1lIHJhbmdlIGRpc3BsYXllZCBpbiB0aGUgZ3V0dGVyIG9mIHRoZSBBZ2VuZGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgdmlld2B9PC9pbmxpbmVDb2RlPjwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWZvcm1hdHMtYWdlbmRhLXRpbWUtcmFuZ2UtZm9ybWF0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0FnZW5kYVRpbWVSYW5nZUZvcm1hdC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1hdHNBZ2VuZGFUaW1lUmFuZ2VGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzLCB2aWV3cyB9ID0gdXNlTWVtbyhcXG4gICAgKCkgPT4gKHtcXG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgICAgIGZvcm1hdHM6IHtcXG4gICAgICAgIGFnZW5kYVRpbWVSYW5nZUZvcm1hdDogKHsgc3RhcnQsIGVuZCB9LCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoc3RhcnQsICdoaDptbSBBJywgY3VsdHVyZSkgK1xcbiAgICAgICAgICAnIC0gJyArXFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZW5kLCAnaGg6bW0gQScsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgICAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVksIFZpZXdzLkFHRU5EQV0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuQUdFTkRBfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIHZpZXdzPXt2aWV3c31cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuRm9ybWF0c0FnZW5kYVRpbWVSYW5nZUZvcm1hdC5zdG9yeU5hbWUgPSAnZm9ybWF0cy5hZ2VuZGFUaW1lUmFuZ2VGb3JtYXQnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkZvcm1hdHNBZ2VuZGFUaW1lUmFuZ2VGb3JtYXRcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo0Nn0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ2fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2Zvcm1hdHNBZ2VuZGFUaW1lUmFuZ2VGb3JtYXQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRm9ybWF0c0FnZW5kYVRpbWVSYW5nZUZvcm1hdCA9IGZ1bmN0aW9uIEZvcm1hdHNBZ2VuZGFUaW1lUmFuZ2VGb3JtYXQoKSB7XG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxuICAgICAgZm9ybWF0czoge1xuICAgICAgICBhZ2VuZGFUaW1lUmFuZ2VGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoc3RhcnQsICdoaDptbSBBJywgY3VsdHVyZSkgK1xuICAgICAgICAgICcgLSAnICtcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGVuZCwgJ2hoOm1tIEEnLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWSwgVmlld3MuQUdFTkRBXSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLkFHRU5EQX1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAgIHZpZXdzPXt2aWV3c31cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07Rm9ybWF0c0FnZW5kYVRpbWVSYW5nZUZvcm1hdC5zdG9yeU5hbWUgPSAnZm9ybWF0cy5hZ2VuZGFUaW1lUmFuZ2VGb3JtYXQnXG5cblxuXG5Gb3JtYXRzQWdlbmRhVGltZVJhbmdlRm9ybWF0LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBGb3JtYXRzQWdlbmRhVGltZVJhbmdlRm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBhZ2VuZGFUaW1lUmFuZ2VGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCAnaGg6bW0gQScsIGN1bHR1cmUpICtcXG4gICAgICAgICAgJyAtICcgK1xcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGVuZCwgJ2hoOm1tIEEnLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZLCBWaWV3cy5BR0VOREFdLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLkFHRU5EQX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLkZvcm1hdHNBZ2VuZGFUaW1lUmFuZ2VGb3JtYXQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNkYXRlZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMuZGF0ZUZvcm1hdGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRm9ybWF0IGZvciB0aGUgZGF5IG9mIHRoZSBtb250aCBoZWFkaW5nIGluIHRoZSBNb250aCB2aWV3LiBlLmcuIFwiMDFcIiwgXCIwMlwiLCBcIjAzXCIsIGV0Y2B9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tZm9ybWF0cy1kYXRlLWZvcm1hdFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0RhdGVGb3JtYXQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBGb3JtYXRzRGF0ZUZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxcbiAgICAgIGZvcm1hdHM6IHtcXG4gICAgICAgIGRhdGVGb3JtYXQ6IChkYXRlLCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ0QnLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuRm9ybWF0c0RhdGVGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZGF0ZUZvcm1hdCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRm9ybWF0c0RhdGVGb3JtYXRcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo0MX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQxfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0RhdGVGb3JtYXQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRm9ybWF0c0RhdGVGb3JtYXQgPSBmdW5jdGlvbiBGb3JtYXRzRGF0ZUZvcm1hdCgpIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxuICAgICAgZm9ybWF0czoge1xuICAgICAgICBkYXRlRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ0QnLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtGb3JtYXRzRGF0ZUZvcm1hdC5zdG9yeU5hbWUgPSAnZm9ybWF0cy5kYXRlRm9ybWF0J1xuXG5cblxuRm9ybWF0c0RhdGVGb3JtYXQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEZvcm1hdHNEYXRlRm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cyB9ID0gdXNlTWVtbyhcXG4gICAgKCkgPT4gKHtcXG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMSksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZGF0ZUZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnRCcsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzRGF0ZUZvcm1hdC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c2RheWZvcm1hdFwiXG4gICAgfX0+e2Bmb3JtYXRzLmRheUZvcm1hdGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQSBkYXkgb2YgdGhlIHdlZWsgZm9ybWF0IGZvciBXZWVrIGFuZCBEYXkgaGVhZGluZ3MsIGUuZy4gXCJXZWQgMDEvMDRcImB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tZm9ybWF0cy1kYXktZm9ybWF0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0RheUZvcm1hdC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1hdHNEYXlGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzLCB2aWV3cyB9ID0gdXNlTWVtbyhcXG4gICAgKCkgPT4gKHtcXG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgICAgIGZvcm1hdHM6IHtcXG4gICAgICAgIGRheUZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnZGRkIE1NL0REJywgY3VsdHVyZSksXFxuICAgICAgfSxcXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbkZvcm1hdHNEYXlGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZGF5Rm9ybWF0J1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJGb3JtYXRzRGF5Rm9ybWF0XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NDR9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo0NH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzRGF5Rm9ybWF0Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEZvcm1hdHNEYXlGb3JtYXQgPSBmdW5jdGlvbiBGb3JtYXRzRGF5Rm9ybWF0KCkge1xuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzLCB2aWV3cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgZGF5Rm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2RkZCBNTS9ERCcsIGN1bHR1cmUpLFxuICAgICAgfSxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZXSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICB2aWV3cz17dmlld3N9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0Zvcm1hdHNEYXlGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZGF5Rm9ybWF0J1xuXG5cblxuRm9ybWF0c0RheUZvcm1hdC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRm9ybWF0c0RheUZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZGF5Rm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkZGQgTU0vREQnLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZXSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIHZpZXdzPXt2aWV3c31cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uRm9ybWF0c0RheUZvcm1hdC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c2RheWhlYWRlcmZvcm1hdFwiXG4gICAgfX0+e2Bmb3JtYXRzLmRheUhlYWRlckZvcm1hdGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVG9vbGJhciBoZWFkZXIgZm9ybWF0IGZvciB0aGUgRGF5IHZpZXcsIGUuZy4gXCJXZWRuZXNkYXkgQXByIDAxXCJgfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWZvcm1hdHMtZGF5LWhlYWRlci1mb3JtYXRcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzRGF5SGVhZGVyRm9ybWF0Lm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5leHBvcnQgZnVuY3Rpb24gRm9ybWF0c0RheUhlYWRlckZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZGF5SGVhZGVyRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkZGRkIE1NTU0gRG8nLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZXSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5EQVl9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgdmlld3M9e3ZpZXdzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5Gb3JtYXRzRGF5SGVhZGVyRm9ybWF0LnN0b3J5TmFtZSA9ICdmb3JtYXRzLmRheUhlYWRlckZvcm1hdCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRm9ybWF0c0RheUhlYWRlckZvcm1hdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ0fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDR9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0RheUhlYWRlckZvcm1hdC5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBGb3JtYXRzRGF5SGVhZGVyRm9ybWF0ID0gZnVuY3Rpb24gRm9ybWF0c0RheUhlYWRlckZvcm1hdCgpIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gICAgICBmb3JtYXRzOiB7XG4gICAgICAgIGRheUhlYWRlckZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkZGRkIE1NTU0gRG8nLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5EQVl9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICB2aWV3cz17dmlld3N9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0Zvcm1hdHNEYXlIZWFkZXJGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZGF5SGVhZGVyRm9ybWF0J1xuXG5cblxuRm9ybWF0c0RheUhlYWRlckZvcm1hdC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRm9ybWF0c0RheUhlYWRlckZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZGF5SGVhZGVyRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkZGRkIE1NTU0gRG8nLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICAgIHZpZXdzOiBbVmlld3MuV0VFSywgVmlld3MuREFZXSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5EQVl9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgdmlld3M9e3ZpZXdzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzRGF5SGVhZGVyRm9ybWF0LnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJmb3JtYXRzZGF5cmFuZ2VoZWFkZXJmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5kYXlSYW5nZUhlYWRlckZvcm1hdGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKHJhbmdlOiBPYmplY3Qge3N0YXJ0OiBEYXRlLCBlbmQ6IERhdGV9LCBjdWx0dXJlOiA/c3RyaW5nLCBsb2NhbGl6ZXI6IERhdGVMb2NhbGl6ZXIpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFRvb2xiYXIgaGVhZGVyIGZvcm1hdCBmb3IgdGhlIFdlZWsgdmlld3MsIGUuZy4gXCJNYXIgMjkgLSBBcHIgMDRcImB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tZm9ybWF0cy1kYXktcmFuZ2UtaGVhZGVyLWZvcm1hdFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2Zvcm1hdHNEYXlSYW5nZUhlYWRlckZvcm1hdC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1hdHNEYXlSYW5nZUhlYWRlckZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZGF5UmFuZ2VIZWFkZXJGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCAnZGRkIEQnLCBjdWx0dXJlKSArXFxuICAgICAgICAgICcgLSAnICtcXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChlbmQsICdkZGQgRCcsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgICAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVldLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgdmlld3M9e3ZpZXdzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5Gb3JtYXRzRGF5UmFuZ2VIZWFkZXJGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZGF5UmFuZ2VIZWFkZXJGb3JtYXQnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkZvcm1hdHNEYXlSYW5nZUhlYWRlckZvcm1hdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ2fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDZ9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0RheVJhbmdlSGVhZGVyRm9ybWF0Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEZvcm1hdHNEYXlSYW5nZUhlYWRlckZvcm1hdCA9IGZ1bmN0aW9uIEZvcm1hdHNEYXlSYW5nZUhlYWRlckZvcm1hdCgpIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gICAgICBmb3JtYXRzOiB7XG4gICAgICAgIGRheVJhbmdlSGVhZGVyRm9ybWF0OiAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCAnZGRkIEQnLCBjdWx0dXJlKSArXG4gICAgICAgICAgJyAtICcgK1xuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZW5kLCAnZGRkIEQnLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgICAgdmlld3M9e3ZpZXdzfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtGb3JtYXRzRGF5UmFuZ2VIZWFkZXJGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZGF5UmFuZ2VIZWFkZXJGb3JtYXQnXG5cblxuXG5Gb3JtYXRzRGF5UmFuZ2VIZWFkZXJGb3JtYXQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEZvcm1hdHNEYXlSYW5nZUhlYWRlckZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZGF5UmFuZ2VIZWFkZXJGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCAnZGRkIEQnLCBjdWx0dXJlKSArXFxuICAgICAgICAgICcgLSAnICtcXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChlbmQsICdkZGQgRCcsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgICAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVldLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgdmlld3M9e3ZpZXdzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzRGF5UmFuZ2VIZWFkZXJGb3JtYXQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNldmVudHRpbWVyYW5nZWVuZGZvcm1hdFwiXG4gICAgfX0+e2Bmb3JtYXRzLmV2ZW50VGltZVJhbmdlRW5kRm9ybWF0YH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBbiBvcHRpb25hbCBldmVudCB0aW1lIHJhbmdlIGZvciBldmVudHMgdGhhdCBjb250aW51ZSBvbnRvIGFub3RoZXIgZGF5LiBVc2VkIHdpdGggYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic2hvdy1tdWx0aS1kYXktdGltZXNcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BzaG93TXVsdGlEYXlUaW1lc2B9PC9MaW5rVG8+e2AuYH08L3A+XG4gICAgPENhbnZhcyBtZHhUeXBlPVwiQ2FudmFzXCI+XG4gIDxTdG9yeSBpZD1cInByb3BzLS1mb3JtYXRzLWV2ZW50LXRpbWUtcmFuZ2UtZW5kLWZvcm1hdFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2Zvcm1hdHNFdmVudFRpbWVSYW5nZUVuZEZvcm1hdC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1hdHNFdmVudFRpbWVSYW5nZUVuZEZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBldmVudFRpbWVSYW5nZUVuZEZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgJyA8PCAnICsgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnaGg6bW0gQScsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBzaG93TXVsdGlEYXlUaW1lc1xcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5Gb3JtYXRzRXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkZvcm1hdHNFdmVudFRpbWVSYW5nZUVuZEZvcm1hdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQzfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDN9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0V2ZW50VGltZVJhbmdlRW5kRm9ybWF0Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEZvcm1hdHNFdmVudFRpbWVSYW5nZUVuZEZvcm1hdCA9IGZ1bmN0aW9uIEZvcm1hdHNFdmVudFRpbWVSYW5nZUVuZEZvcm1hdCgpIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgZXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQ6IChkYXRlLCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XG4gICAgICAgICAgJyA8PCAnICsgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnaGg6bW0gQScsIGN1bHR1cmUpLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICBzaG93TXVsdGlEYXlUaW1lc1xuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtGb3JtYXRzRXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQnXG5cblxuXG5Gb3JtYXRzRXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEZvcm1hdHNFdmVudFRpbWVSYW5nZUVuZEZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBldmVudFRpbWVSYW5nZUVuZEZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgJyA8PCAnICsgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnaGg6bW0gQScsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBzaG93TXVsdGlEYXlUaW1lc1xcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzRXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNldmVudHRpbWVyYW5nZWZvcm1hdFwiXG4gICAgfX0+e2Bmb3JtYXRzLmV2ZW50VGltZVJhbmdlRm9ybWF0YH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAocmFuZ2U6IE9iamVjdCB7c3RhcnQ6IERhdGUsIGVuZDogRGF0ZX0sIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGltZSByYW5nZSBkaXNwbGF5ZWQgb24gZXZlbnRzIGluIFRpbWUgR3JpZCB2aWV3cy5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWZvcm1hdHMtZXZlbnQtdGltZS1yYW5nZS1mb3JtYXRcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzRXZlbnRUaW1lUmFuZ2VGb3JtYXQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBGb3JtYXRzRXZlbnRUaW1lUmFuZ2VGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZXZlbnRUaW1lUmFuZ2VGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCAnaGg6bW0gYScsIGN1bHR1cmUpICtcXG4gICAgICAgICAgJyAtICcgK1xcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGVuZCwgJ2hoOm1tIGEnLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5Gb3JtYXRzRXZlbnRUaW1lUmFuZ2VGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMuZXZlbnRUaW1lUmFuZ2VGb3JtYXQnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkZvcm1hdHNFdmVudFRpbWVSYW5nZUZvcm1hdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ0fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDR9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0V2ZW50VGltZVJhbmdlRm9ybWF0Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEZvcm1hdHNFdmVudFRpbWVSYW5nZUZvcm1hdCA9IGZ1bmN0aW9uIEZvcm1hdHNFdmVudFRpbWVSYW5nZUZvcm1hdCgpIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgZXZlbnRUaW1lUmFuZ2VGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoc3RhcnQsICdoaDptbSBhJywgY3VsdHVyZSkgK1xuICAgICAgICAgICcgLSAnICtcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGVuZCwgJ2hoOm1tIGEnLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07Rm9ybWF0c0V2ZW50VGltZVJhbmdlRm9ybWF0LnN0b3J5TmFtZSA9ICdmb3JtYXRzLmV2ZW50VGltZVJhbmdlRm9ybWF0J1xuXG5cblxuRm9ybWF0c0V2ZW50VGltZVJhbmdlRm9ybWF0LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBGb3JtYXRzRXZlbnRUaW1lUmFuZ2VGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZXZlbnRUaW1lUmFuZ2VGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCAnaGg6bW0gYScsIGN1bHR1cmUpICtcXG4gICAgICAgICAgJyAtICcgK1xcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGVuZCwgJ2hoOm1tIGEnLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzRXZlbnRUaW1lUmFuZ2VGb3JtYXQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNldmVudHRpbWVyYW5nZXN0YXJ0Zm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMuZXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQW4gb3B0aW9uYWwgZXZlbnQgdGltZSByYW5nZSBmb3IgZXZlbnRzIHRoYXQgY29udGludWUgb250byBhbm90aGVyIGRheS4gVXNlZCB3aXRoIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNob3ctbXVsdGktZGF5LXRpbWVzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgc2hvd011bHRpRGF5VGltZXNgfTwvTGlua1RvPntgLmB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tZm9ybWF0cy1ldmVudC10aW1lLXJhbmdlLXN0YXJ0LWZvcm1hdFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2Zvcm1hdHNFdmVudFRpbWVSYW5nZVN0YXJ0Rm9ybWF0Lm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5leHBvcnQgZnVuY3Rpb24gRm9ybWF0c0V2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnaGg6bW0gQScsIGN1bHR1cmUpICsgJyA+PiAnLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBzaG93TXVsdGlEYXlUaW1lc1xcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5Gb3JtYXRzRXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdC5zdG9yeU5hbWUgPSAnZm9ybWF0cy5ldmVudFRpbWVSYW5nZVN0YXJ0Rm9ybWF0J1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJGb3JtYXRzRXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQzfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDN9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c0V2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRm9ybWF0c0V2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQgPSBmdW5jdGlvbiBGb3JtYXRzRXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdCgpIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgZXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdoaDptbSBBJywgY3VsdHVyZSkgKyAnID4+ICcsXG4gICAgICB9LFxuICAgIH0pLFxuICAgIFtdXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAgIHNob3dNdWx0aURheVRpbWVzXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0Zvcm1hdHNFdmVudFRpbWVSYW5nZVN0YXJ0Rm9ybWF0LnN0b3J5TmFtZSA9ICdmb3JtYXRzLmV2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQnXG5cblxuXG5Gb3JtYXRzRXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRm9ybWF0c0V2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgZXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnaGg6bW0gQScsIGN1bHR1cmUpICsgJyA+PiAnLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBzaG93TXVsdGlEYXlUaW1lc1xcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzRXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c21vbnRoaGVhZGVyZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMubW9udGhIZWFkZXJGb3JtYXRgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChkYXRlOiBEYXRlLCBjdWx0dXJlOiA/c3RyaW5nLCBsb2NhbGl6ZXI6IERhdGVMb2NhbGl6ZXIpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFRvb2xiYXIgaGVhZGVyIGZvcm1hdCBmb3IgdGhlIE1vbnRoIHZpZXcsIGUuZyBcIjIwMTUgQXByaWxcImB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tZm9ybWF0cy1tb250aC1oZWFkZXItZm9ybWF0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzTW9udGhIZWFkZXJGb3JtYXQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBGb3JtYXRzTW9udGhIZWFkZXJGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBtb250aEhlYWRlckZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCBgTU1NTSBbJ11ZWWAsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5Gb3JtYXRzTW9udGhIZWFkZXJGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMubW9udGhIZWFkZXJGb3JtYXQnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkZvcm1hdHNNb250aEhlYWRlckZvcm1hdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQxfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDF9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzTW9udGhIZWFkZXJGb3JtYXQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRm9ybWF0c01vbnRoSGVhZGVyRm9ybWF0ID0gZnVuY3Rpb24gRm9ybWF0c01vbnRoSGVhZGVyRm9ybWF0KCkge1xuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMSksXG4gICAgICBmb3JtYXRzOiB7XG4gICAgICAgIG1vbnRoSGVhZGVyRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgYE1NTU0gWyddWVlgLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtGb3JtYXRzTW9udGhIZWFkZXJGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMubW9udGhIZWFkZXJGb3JtYXQnXG5cblxuXG5Gb3JtYXRzTW9udGhIZWFkZXJGb3JtYXQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEZvcm1hdHNNb250aEhlYWRlckZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxcbiAgICAgIGZvcm1hdHM6IHtcXG4gICAgICAgIG1vbnRoSGVhZGVyRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsIGBNTU1NIFsnXVlZYCwgY3VsdHVyZSksXFxuICAgICAgfSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLkZvcm1hdHNNb250aEhlYWRlckZvcm1hdC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c3NlbGVjdHJhbmdlZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMuc2VsZWN0UmFuZ2VGb3JtYXRgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChyYW5nZTogT2JqZWN0IHtzdGFydDogRGF0ZSwgZW5kOiBEYXRlfSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBIHRpbWUgcmFuZ2UgZm9ybWF0IHNob3duIGluIHRoZSBoaWdobGlnaHRlZCBhcmVhIHdoZW4gc2VsZWN0aW5nIHRpbWUgc2xvdHMsIGUuZyBcIjA4OjAwIGFtIOKAlCAxMjowMCBwbVwiYH08L3A+XG4gICAgPENhbnZhcyBtZHhUeXBlPVwiQ2FudmFzXCI+XG4gIDxTdG9yeSBpZD1cInByb3BzLS1mb3JtYXRzLXNlbGVjdC1yYW5nZS1mb3JtYXRcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzU2VsZWN0UmFuZ2VGb3JtYXQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBGb3JtYXRzU2VsZWN0UmFuZ2VGb3JtYXQoKSB7XFxuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzLCB2aWV3cyB9ID0gdXNlTWVtbyhcXG4gICAgKCkgPT4gKHtcXG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgICAgIGZvcm1hdHM6IHtcXG4gICAgICAgIHNlbGVjdFJhbmdlRm9ybWF0OiAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChzdGFydCwgJ2hoOm1tIGEnLCBjdWx0dXJlKSArXFxuICAgICAgICAgICcgLSAnICtcXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChlbmQsICdoaDptbSBhJywgY3VsdHVyZSksXFxuICAgICAgfSxcXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBzZWxlY3RhYmxlXFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbkZvcm1hdHNTZWxlY3RSYW5nZUZvcm1hdC5zdG9yeU5hbWUgPSAnZm9ybWF0cy5zZWxlY3RSYW5nZUZvcm1hdCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRm9ybWF0c1NlbGVjdFJhbmdlRm9ybWF0XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NDd9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo0N319fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzU2VsZWN0UmFuZ2VGb3JtYXQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRm9ybWF0c1NlbGVjdFJhbmdlRm9ybWF0ID0gZnVuY3Rpb24gRm9ybWF0c1NlbGVjdFJhbmdlRm9ybWF0KCkge1xuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzLCB2aWV3cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgc2VsZWN0UmFuZ2VGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoc3RhcnQsICdoaDptbSBhJywgY3VsdHVyZSkgK1xuICAgICAgICAgICcgLSAnICtcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGVuZCwgJ2hoOm1tIGEnLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgICAgc2VsZWN0YWJsZVxuICAgICAgICB2aWV3cz17dmlld3N9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0Zvcm1hdHNTZWxlY3RSYW5nZUZvcm1hdC5zdG9yeU5hbWUgPSAnZm9ybWF0cy5zZWxlY3RSYW5nZUZvcm1hdCdcblxuXG5cbkZvcm1hdHNTZWxlY3RSYW5nZUZvcm1hdC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gRm9ybWF0c1NlbGVjdFJhbmdlRm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICBzZWxlY3RSYW5nZUZvcm1hdDogKHsgc3RhcnQsIGVuZCB9LCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoc3RhcnQsICdoaDptbSBhJywgY3VsdHVyZSkgK1xcbiAgICAgICAgICAnIC0gJyArXFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZW5kLCAnaGg6bW0gYScsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgICAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVldLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgc2VsZWN0YWJsZVxcbiAgICAgICAgdmlld3M9e3ZpZXdzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzU2VsZWN0UmFuZ2VGb3JtYXQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHN0aW1lZ3V0dGVyZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMudGltZUd1dHRlckZvcm1hdGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIHRpbWVzdGFtcCBjZWxsIGZvcm1hdHMgaW4gV2VlayBhbmQgVGltZSB2aWV3cywgZS5nLiBcIjQ6MDAgQU1cImB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tZm9ybWF0cy10aW1lLWd1dHRlci1mb3JtYXRcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzVGltZUd1dHRlckZvcm1hdC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1hdHNUaW1lR3V0dGVyRm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cywgdmlld3MgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBmb3JtYXRzOiB7XFxuICAgICAgICB0aW1lR3V0dGVyRm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxcbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdoaDptbSBhJywgY3VsdHVyZSksXFxuICAgICAgfSxcXG4gICAgICB2aWV3czogW1ZpZXdzLldFRUssIFZpZXdzLkRBWV0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGZvcm1hdHM9e2Zvcm1hdHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbkZvcm1hdHNUaW1lR3V0dGVyRm9ybWF0LnN0b3J5TmFtZSA9ICdmb3JtYXRzLnRpbWVHdXR0ZXJGb3JtYXQnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkZvcm1hdHNUaW1lR3V0dGVyRm9ybWF0XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NDR9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo0NH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9mb3JtYXRzVGltZUd1dHRlckZvcm1hdC5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBGb3JtYXRzVGltZUd1dHRlckZvcm1hdCA9IGZ1bmN0aW9uIEZvcm1hdHNUaW1lR3V0dGVyRm9ybWF0KCkge1xuICBjb25zdCB7IGRlZmF1bHREYXRlLCBmb3JtYXRzLCB2aWV3cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgdGltZUd1dHRlckZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cbiAgICAgICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdoaDptbSBhJywgY3VsdHVyZSksXG4gICAgICB9LFxuICAgICAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVldLFxuICAgIH0pLFxuICAgIFtdXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAgIHZpZXdzPXt2aWV3c31cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07Rm9ybWF0c1RpbWVHdXR0ZXJGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMudGltZUd1dHRlckZvcm1hdCdcblxuXG5cbkZvcm1hdHNUaW1lR3V0dGVyRm9ybWF0LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBGb3JtYXRzVGltZUd1dHRlckZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgdGltZUd1dHRlckZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnaGg6bW0gYScsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgICAgdmlld3M6IFtWaWV3cy5XRUVLLCBWaWV3cy5EQVldLFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgdmlld3M9e3ZpZXdzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzVGltZUd1dHRlckZvcm1hdC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c3dlZWtkYXlmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy53ZWVrZGF5Rm9ybWF0YH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BXZWVrIGRheSBuYW1lIGZvcm1hdCBmb3IgdGhlIE1vbnRoIHdlZWsgZGF5IGhlYWRpbmdzLCBlLmc6IFwiU3VuXCIsIFwiTW9uXCIsIFwiVHVlXCIsIGV0Y2B9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tZm9ybWF0cy13ZWVrZGF5LWZvcm1hdFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c1dlZWtkYXlGb3JtYXQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBGb3JtYXRzV2Vla2RheUZvcm1hdCgpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIGZvcm1hdHMgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxcbiAgICAgIGZvcm1hdHM6IHtcXG4gICAgICAgIHdlZWtkYXlGb3JtYXQ6IChkYXRlLCBjdWx0dXJlLCBsb2NhbGl6ZXIpID0+XFxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2RkZGQnLCBjdWx0dXJlKSxcXG4gICAgICB9LFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuRm9ybWF0c1dlZWtkYXlGb3JtYXQuc3RvcnlOYW1lID0gJ2Zvcm1hdHMud2Vla2RheUZvcm1hdCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiRm9ybWF0c1dlZWtkYXlGb3JtYXRcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo0MX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQxfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZm9ybWF0c1dlZWtkYXlGb3JtYXQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgRm9ybWF0c1dlZWtkYXlGb3JtYXQgPSBmdW5jdGlvbiBGb3JtYXRzV2Vla2RheUZvcm1hdCgpIHtcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cyB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxuICAgICAgZm9ybWF0czoge1xuICAgICAgICB3ZWVrZGF5Rm9ybWF0OiAoZGF0ZSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAgICAgIGxvY2FsaXplci5mb3JtYXQoZGF0ZSwgJ2RkZGQnLCBjdWx0dXJlKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgZm9ybWF0cz17Zm9ybWF0c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtGb3JtYXRzV2Vla2RheUZvcm1hdC5zdG9yeU5hbWUgPSAnZm9ybWF0cy53ZWVrZGF5Rm9ybWF0J1xuXG5cblxuRm9ybWF0c1dlZWtkYXlGb3JtYXQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEZvcm1hdHNXZWVrZGF5Rm9ybWF0KCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgZm9ybWF0cyB9ID0gdXNlTWVtbyhcXG4gICAgKCkgPT4gKHtcXG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMSksXFxuICAgICAgZm9ybWF0czoge1xcbiAgICAgICAgd2Vla2RheUZvcm1hdDogKGRhdGUsIGN1bHR1cmUsIGxvY2FsaXplcikgPT5cXG4gICAgICAgICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnZGRkZCcsIGN1bHR1cmUpLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBmb3JtYXRzPXtmb3JtYXRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5Gb3JtYXRzV2Vla2RheUZvcm1hdC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZ2V0ZHJpbGxkb3dudmlld1wiXG4gICAgfX0+e2BnZXREcmlsbGRvd25WaWV3YH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAodGFyZ2V0RGF0ZTogRGF0ZSwgY3VycmVudFZpZXdOYW1lOiBzdHJpbmcsIGNvbmZpZ3VyZWRWaWV3TmFtZXM6IFZpZXdzW10pID0+IHN0cmluZ3xudWxsYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gZHJpbGxkb3duVmlldywgYnV0IGFjY2VwdHMgYSBmdW5jdGlvbiB0aGF0IGNhbiByZXR1cm4gYSB2aWV3IG5hbWUuIEl0J3MgdXNlZnVsIGZvciBjdXN0b21pemluZyB0aGUgZHJpbGwtZG93biBhY3Rpb25zIGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0IGRhdGUgYW5kIHRyaWdnZXJpbmcgdmlldy5gfTwvcD5cbiAgICA8cD57YFJldHVybiBudWxsIHRvIGRpc2FibGUgZHJpbGwtZG93biBhY3Rpb25zLmB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tZ2V0LWRyaWxsZG93bi12aWV3XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vZ2V0RHJpbGxkb3duVmlldy5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIEdldERyaWxsZG93blZpZXcoKSB7XFxuICBjb25zdCBnZXREcmlsbGRvd25WaWV3ID0gdXNlQ2FsbGJhY2soXFxuICAgICh0YXJnZXREYXRlLCBjdXJyZW50Vmlld05hbWUsIGNvbmZpZ3VyZWRWaWV3TmFtZXMpID0+IHtcXG4gICAgICBpZiAoY3VycmVudFZpZXdOYW1lID09PSAnbW9udGgnICYmIGNvbmZpZ3VyZWRWaWV3TmFtZXMuaW5jbHVkZXMoJ3dlZWsnKSlcXG4gICAgICAgIHJldHVybiAnd2VlaydcXG5cXG4gICAgICByZXR1cm4gbnVsbFxcbiAgICB9LFxcbiAgICBbXVxcbiAgKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgZ2V0RHJpbGxkb3duVmlldz17Z2V0RHJpbGxkb3duVmlld31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuR2V0RHJpbGxkb3duVmlldy5zdG9yeU5hbWUgPSAnZ2V0RHJpbGxkb3duVmlldydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiR2V0RHJpbGxkb3duVmlld1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQyfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDJ9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vZ2V0RHJpbGxkb3duVmlldy5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBHZXREcmlsbGRvd25WaWV3ID0gZnVuY3Rpb24gR2V0RHJpbGxkb3duVmlldygpIHtcbiAgY29uc3QgZ2V0RHJpbGxkb3duVmlldyA9IHVzZUNhbGxiYWNrKFxuICAgICh0YXJnZXREYXRlLCBjdXJyZW50Vmlld05hbWUsIGNvbmZpZ3VyZWRWaWV3TmFtZXMpID0+IHtcbiAgICAgIGlmIChjdXJyZW50Vmlld05hbWUgPT09ICdtb250aCcgJiYgY29uZmlndXJlZFZpZXdOYW1lcy5pbmNsdWRlcygnd2VlaycpKVxuICAgICAgICByZXR1cm4gJ3dlZWsnXG5cbiAgICAgIHJldHVybiBudWxsXG4gICAgfSxcbiAgICBbXVxuICApXG5cbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGdldERyaWxsZG93blZpZXc9e2dldERyaWxsZG93blZpZXd9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07R2V0RHJpbGxkb3duVmlldy5zdG9yeU5hbWUgPSAnZ2V0RHJpbGxkb3duVmlldydcblxuXG5cbkdldERyaWxsZG93blZpZXcucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIEdldERyaWxsZG93blZpZXcoKSB7XFxuICBjb25zdCBnZXREcmlsbGRvd25WaWV3ID0gdXNlQ2FsbGJhY2soXFxuICAgICh0YXJnZXREYXRlLCBjdXJyZW50Vmlld05hbWUsIGNvbmZpZ3VyZWRWaWV3TmFtZXMpID0+IHtcXG4gICAgICBpZiAoY3VycmVudFZpZXdOYW1lID09PSAnbW9udGgnICYmIGNvbmZpZ3VyZWRWaWV3TmFtZXMuaW5jbHVkZXMoJ3dlZWsnKSlcXG4gICAgICAgIHJldHVybiAnd2VlaydcXG5cXG4gICAgICByZXR1cm4gbnVsbFxcbiAgICB9LFxcbiAgICBbXVxcbiAgKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgZ2V0RHJpbGxkb3duVmlldz17Z2V0RHJpbGxkb3duVmlld31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uR2V0RHJpbGxkb3duVmlldy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiZ2V0bm93XCJcbiAgICB9fT57YGdldE5vd2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKCkgPT4gRGF0ZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgKCkgPT4gbmV3IERhdGUoKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERldGVybWluZXMgdGhlIGN1cnJlbnQgZGF0ZS90aW1lIHdoaWNoIGlzIGhpZ2hsaWdodGVkIGluIHRoZSB2aWV3cy5gfTwvcD5cbiAgICA8cD57YFRoZSB2YWx1ZSBhZmZlY3RzIHdoaWNoIGRheSBpcyBzaGFkZWQgYW5kIHdoaWNoIHRpbWUgaXMgc2hvd24gYXMgdGhlIGN1cnJlbnQgdGltZS4gSXQgYWxzbyBhZmZlY3RzIHRoZSBkYXRlIHVzZWQgYnkgdGhlIFRvZGF5IGJ1dHRvbiBpbiB0aGUgdG9vbGJhci5gfTwvcD5cbiAgICA8cD57YFByb3ZpZGluZyBhIHZhbHVlIGhlcmUgY2FuIGJlIHVzZWZ1bCB3aGVuIHlvdSBhcmUgaW1wbGVtZW50aW5nIHRpbWUgem9uZXMgdXNpbmcgdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHN0YXJ0QWNjZXNzb3JgfTwvaW5saW5lQ29kZT57YCBhbmQgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZW5kQWNjZXNzb3JgfTwvaW5saW5lQ29kZT57YCBwcm9wZXJ0aWVzLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS1nZXQtbm93XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2dldE5vdy5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuY29uc3QgZ2V0Tm93ID0gKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMTMpXFxuXFxuZXhwb3J0IGNvbnN0IEdldE5vdyA9IFRlbXBsYXRlLmJpbmQoe30pXFxuR2V0Tm93LnN0b3J5TmFtZSA9ICdnZXROb3cnXFxuR2V0Tm93LmFyZ3MgPSB7XFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBnZXROb3csXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJHZXROb3dcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjIzfSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6Mjd9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjN9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6Mjd9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2dldE5vdy5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5jb25zdCBnZXROb3cgPSAoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxMylcblxuZXhwb3J0IGNvbnN0IEdldE5vdyA9IFRlbXBsYXRlLmJpbmQoe30pO0dldE5vdy5zdG9yeU5hbWUgPSAnZ2V0Tm93J1xuR2V0Tm93LmFyZ3MgPSB7XG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgZ2V0Tm93LFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG59XG5cblxuXG5HZXROb3cucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVwiIH0sIC4uLkdldE5vdy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwibGVuZ3RoXCJcbiAgICB9fT57YGxlbmd0aGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbnVtYmVyYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2AzMGB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERldGVybWluZXMgdGhlIGVuZCBkYXRlIGZyb20gZGF0ZSBwcm9wIGluIHRoZSBhZ2VuZGEgdmlldyBkYXRlIHByb3AgKyBsZW5ndGggKGluIG51bWJlciBvZiBkYXlzKSA9IGVuZCBkYXRlLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS1sZW5ndGhcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL2xlbmd0aC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZToge1xcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6IG51bGwsXFxuICAgICAgfSxcXG4gICAgfSxcXG4gICAgZGVmYXVsdFZpZXc6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICAgIGxlbmd0aDogJ251bWJlcicsXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgTGVuZ3RoID0gVGVtcGxhdGUuYmluZCh7fSlcXG5MZW5ndGguc3RvcnlOYW1lID0gJ2xlbmd0aCdcXG5MZW5ndGguYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBkZWZhdWx0VmlldzogVmlld3MuQUdFTkRBLFxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxcbiAgbGVuZ3RoOiAxNCxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkxlbmd0aFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzR9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozOH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozNH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozOH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2xlbmd0aC5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZpZXc6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBsZW5ndGg6ICdudW1iZXInLFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgTGVuZ3RoID0gVGVtcGxhdGUuYmluZCh7fSk7TGVuZ3RoLnN0b3J5TmFtZSA9ICdsZW5ndGgnXG5MZW5ndGguYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkFHRU5EQSxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxuICBsZW5ndGg6IDE0LFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG59XG5cblxuXG5MZW5ndGgucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVwiIH0sIC4uLkxlbmd0aC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwibG9jYWxpemVyXCJcbiAgICB9fT57YGxvY2FsaXplcmB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgaW5zdGFuY2VPZihEYXRlTG9jYWxpemVyKWB9PC9pbmxpbmVDb2RlPntgIGB9PHN0cm9uZyBwYXJlbnROYW1lPVwibGlcIj57YHJlcXVpcmVkYH08L3N0cm9uZz48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUaGUgbG9jYWxpemVyIHVzZWQgZm9yIGB9PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgZm9ybWF0dGluZyBkYXRlc2B9PC9zdHJvbmc+e2AgYW5kIHRpbWVzIGFjY29yZGluZyB0byB0aGUgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0c1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YGZvcm1hdHNgfTwvTGlua1RvPntgIGFuZCBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJjdWx0dXJlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgY3VsdHVyZWB9PC9MaW5rVG8+e2AuIFRvIGZvcm1hdCBidXR0b25zIGFuZCBtZXNzYWdpbmcgdXNlIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJtZXNzYWdlc1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YG1lc3NhZ2VzYH08L0xpbmtUbz57YCBwcm9wLmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2AvLyBXaGVuIHVzaW5nIFxcYERheS5qc1xcYFxuaW1wb3J0IHsgZGF5anNMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnXG4vLyBhbmQsIGZvciBvcHRpb25hbCB0aW1lIHpvbmUgc3VwcG9ydFxuaW1wb3J0IHRpbWV6b25lIGZyb20gJ2RheWpzL3BsdWdpbi90aW1lem9uZSdcblxuZGF5anMuZXh0ZW5kKHRpbWV6b25lKVxuLy8gZW5kIG9wdGlvbmFsIHRpbWUgem9uZSBzdXBwb3J0XG5cbi8vIE5vdGUgdGhhdCB0aGUgZGF5anNMb2NhbGl6ZXIgZXh0ZW5kcyBEYXkuanMgd2l0aCB0aGUgZm9sbG93aW5nIHBsdWdpbnM6XG4vLyAtIElzQmV0d2VlblxuLy8gLSBJc1NhbWVPckFmdGVyXG4vLyAtIElzU2FtZU9yQmVmb3JlXG4vLyAtIExvY2FsZURhdGFcbi8vIC0gTG9jYWxpemVkRm9ybWF0XG4vLyAtIE1pbk1heFxuLy8gLSBVVENcblxuY29uc3QgbG9jYWxpemVyID0gZGF5anNMb2NhbGl6ZXIoZGF5anMpXG5gfTwvY29kZT48L3ByZT5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgLy8gV2hlbiB1c2luZyBcXGBHbG9iYWxpemVcXGBcbmltcG9ydCB7IGdsb2JhbGl6ZUxvY2FsaXplciB9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbmltcG9ydCBnbG9iYWxpemUgZnJvbSAnZ2xvYmFsaXplJ1xuXG5jb25zdCBsb2NhbGl6ZXIgPSBnbG9iYWxpemVMb2NhbGl6ZXIoZ2xvYmFsaXplKVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YC8vIFdoZW4gdXNpbmcgXFxgTHV4b25cXGBcbmltcG9ydCB7IGx1eG9uTG9jYWxpemVyIH0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuaW1wb3J0IHsgRGF0ZVRpbWUsIFNldHRpbmdzIH0gZnJvbSAnbHV4b24nXG4vLyBvbmx5IHVzZSBcXGBTZXR0aW5nc1xcYCBpZiB5b3UgcmVxdWlyZSBvcHRpb25hbCB0aW1lIHpvbmUgc3VwcG9ydFxuU2V0dGluZ3MuZGVmYXVsdFpvbmUgPSAnQW1lcmljYS9Mb3NfQW5nZWxlcydcbi8vIGVuZCBvcHRpb25hbCB0aW1lIHpvbmUgc3VwcG9ydFxuXG4vLyBMdXhvbiB1c2VzIHRoZSBJbnRsIEFQSSwgd2hpY2ggY3VycmVudGx5IGRvZXMgbm90IGNvbnRhaW4gXFxgd2Vla0luZm9cXGBcbi8vIHRvIGRldGVybWluZSB3aGljaCB3ZWVrZGF5IGlzIHRoZSBzdGFydCBvZiB0aGUgd2VlayBieSBcXGBjdWx0dXJlXFxgLlxuLy8gVGhlIFxcYGx1eG9uTG9jYWxpemVyXFxgIGRlZmF1bHRzIHRoaXMgdG8gU3VuZGF5LCB3aGljaCBkaWZmZXJzIGZyb21cbi8vIHRoZSBMdXhvbiBkZWZhdWx0IG9mIE1vbmRheS4gVGhlIGxvY2FsaXplciByZXF1aXJlcyB0aGlzIG9wdGlvblxuLy8gdG8gY2hhbmdlIHRoZSBkaXNwbGF5LCBhbmQgdGhlIGRhdGUgbWF0aCBmb3IgZGV0ZXJtaW5pbmcgdGhlXG4vLyBzdGFydCBvZiBhIHdlZWsuIEx1eG9uIHVzZXMgbm9uLXplcm8gYmFzZWQgdmFsdWVzIGZvciBcXGB3ZWVrZGF5XFxgLlxuY29uc3QgbG9jYWxpemVyID0gbHV4b25Mb2NhbGl6ZXIoRGF0ZVRpbWUsIHsgZmlyc3REYXlPZldlZWs6IDcgfSlcbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2AvLyBXaGVuIHVzaW5nIFxcYG1vbWVudFxcYFxuaW1wb3J0IHsgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG4vLyBhbmQsIGZvciBvcHRpb25hbCB0aW1lIHpvbmUgc3VwcG9ydFxuaW1wb3J0ICdtb21lbnQtdGltZXpvbmUnXG5cbm1vbWVudC50ei5zZXREZWZhdWx0KCdBbWVyaWNhL0xvc19BbmdlbGVzJylcbi8vIGVuZCBvcHRpb25hbCB0aW1lIHpvbmUgc3VwcG9ydFxuXG5jb25zdCBsb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPHA+e2BTZWUgdGhlIGB9PExpbmtUbyBraW5kPVwiZXhhbXBsZXNcIiBzdG9yeT1cImV4YW1wbGUtNVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YExvY2FsaXphdGlvbiBFeGFtcGxlYH08L0xpbmtUbz57YCBmb3IgYW5vdGhlciBleGFtcGxlIG9mIGNvbWJpbmluZyBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BydGxgfTwvaW5saW5lQ29kZT57YCwgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbG9jYWxpemVyYH08L2lubGluZUNvZGU+e2AsIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGN1bHR1cmVgfTwvaW5saW5lQ29kZT57YCBhbmQgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbWVzc2FnZXNgfTwvaW5saW5lQ29kZT57YC5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLWxvY2FsaXplclwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPGgyIHsuLi57XG4gICAgICBcImlkXCI6IFwibW9yZS1pbmZvcm1hdGlvblwiXG4gICAgfX0+e2BNb3JlIEluZm9ybWF0aW9uYH08L2gyPlxuICAgIDxwPntgVGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGxvY2FsaXplcmB9PC9pbmxpbmVDb2RlPntgIGNhbiBiZSB1c2VkIGZvciBkYXRlIG1hdGggaW4gYSBudW1iZXIgb2Ygd2F5cy4gTG9vayBhdCB0aGUgYH08TGlua1RvIGtpbmQ9XCJndWlkZXMtbG9jYWxpemVyc1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YExvY2FsaXplciBHdWlkZWB9PC9MaW5rVG8+e2AgZm9yIG1vcmUgaW5mb3JtYXRpb24uYH08L3A+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vbG9jYWxpemVyLm1keCdcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbiAgZGVjb3JhdG9yczogW1xcbiAgICAoU3RvcnkpID0+IChcXG4gICAgICA8ZGl2IHN0eWxlPXt7IGhlaWdodDogODAwIH19PlxcbiAgICAgICAgPFN0b3J5IC8+XFxuICAgICAgPC9kaXY+XFxuICAgICksXFxuICBdLFxcbn1cXG5cXG5leHBvcnQgZnVuY3Rpb24gTG9jYWxpemVyKCkge1xcbiAgY29uc3QgbG9jYWxpemVyID0gdXNlTWVtbygoKSA9PiBtb21lbnRMb2NhbGl6ZXIobW9tZW50KSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtuZXcgRGF0ZSgyMDE1LCAzLCAxMyl9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuTG9jYWxpemVyLnN0b3J5TmFtZSA9ICdsb2NhbGl6ZXIgKidcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiTG9jYWxpemVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjI0fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MzZ9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoyNH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozNn19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL2xvY2FsaXplci5tZHgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbiAgZGVjb3JhdG9yczogW1xuICAgIChTdG9yeSkgPT4gKFxuICAgICAgPGRpdiBzdHlsZT17eyBoZWlnaHQ6IDgwMCB9fT5cbiAgICAgICAgPFN0b3J5IC8+XG4gICAgICA8L2Rpdj5cbiAgICApLFxuICBdLFxufVxuXG5leHBvcnQgY29uc3QgTG9jYWxpemVyID0gZnVuY3Rpb24gTG9jYWxpemVyKCkge1xuICBjb25zdCBsb2NhbGl6ZXIgPSB1c2VNZW1vKCgpID0+IG1vbWVudExvY2FsaXplcihtb21lbnQpLCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e25ldyBEYXRlKDIwMTUsIDMsIDEzKX1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07TG9jYWxpemVyLnN0b3J5TmFtZSA9ICdsb2NhbGl6ZXIgKidcblxuXG5cbkxvY2FsaXplci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gTG9jYWxpemVyKCkge1xcbiAgY29uc3QgbG9jYWxpemVyID0gdXNlTWVtbygoKSA9PiBtb21lbnRMb2NhbGl6ZXIobW9tZW50KSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtuZXcgRGF0ZSgyMDE1LCAzLCAxMyl9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uTG9jYWxpemVyLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJsb25ncHJlc3N0aHJlc2hvbGRcIlxuICAgIH19PntgbG9uZ1ByZXNzVGhyZXNob2xkYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BudW1iZXJgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YDI1MGB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIG1pbGlzZWNvbmRzIHRoZSB1c2VyIG11c3QgcHJlc3MgYW5kIGhvbGQgb24gdGhlIHNjcmVlbiBmb3IgYSB0b3VjaCB0byBiZSBjb25zaWRlcmVkIGEgXCJsb25nIHByZXNzLlwiIExvbmcgcHJlc3NlcyBhcmUgdXNlZCBmb3IgdGltZSBzbG90IHNlbGVjdGlvbiBvbiB0b3VjaCBkZXZpY2VzLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS1sb25nLXByZXNzLXRocmVzaG9sZFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9sb25nUHJlc3NUaHJlc2hvbGQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICAgIGxvbmdQcmVzc1RocmVzaG9sZDogJ251bWJlcicsXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgTG9uZ1ByZXNzVGhyZXNob2xkID0gVGVtcGxhdGUuYmluZCh7fSlcXG5Mb25nUHJlc3NUaHJlc2hvbGQuc3RvcnlOYW1lID0gJ2xvbmdQcmVzc1RocmVzaG9sZCdcXG5Mb25nUHJlc3NUaHJlc2hvbGQuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxuICBsb25nUHJlc3NUaHJlc2hvbGQ6IDI1MCxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIkxvbmdQcmVzc1RocmVzaG9sZFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6Mjl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozM30sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozM319fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vbG9uZ1ByZXNzVGhyZXNob2xkLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBsb25nUHJlc3NUaHJlc2hvbGQ6ICdudW1iZXInLFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgTG9uZ1ByZXNzVGhyZXNob2xkID0gVGVtcGxhdGUuYmluZCh7fSk7TG9uZ1ByZXNzVGhyZXNob2xkLnN0b3J5TmFtZSA9ICdsb25nUHJlc3NUaHJlc2hvbGQnXG5Mb25nUHJlc3NUaHJlc2hvbGQuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG4gIGxvbmdQcmVzc1RocmVzaG9sZDogMjUwLFxufVxuXG5cblxuTG9uZ1ByZXNzVGhyZXNob2xkLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5Mb25nUHJlc3NUaHJlc2hvbGQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm1heFwiXG4gICAgfX0+e2BtYXhgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGluc3RhbmNlT2YoRGF0ZSlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG5ldyBEYXRlKDE5NzIsIDAsIDEsIDIzLCA1OSwgNTkpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ29uc3RyYWlucyB0aGUgbWF4aW11bSB0aW1lIG9mIHRoZSBEYXkgYW5kIFdlZWsgdmlld3MuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLW1heFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vbWF4Lm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdFZpZXc6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIG1heDogeyBjb250cm9sOiB7IHR5cGU6ICdkYXRlJyB9IH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgTWF4ID0gVGVtcGxhdGUuYmluZCh7fSlcXG5NYXguc3RvcnlOYW1lID0gJ21heCdcXG5NYXguYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG4gIG1heDogbmV3IERhdGUoMTk3MiwgMCwgMSwgMjAsIDU5LCA1OSksXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJNYXhcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjI2fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MzB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjZ9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MzB9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9tYXgubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgYXJnVHlwZXM6IHtcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBkZWZhdWx0RGF0ZTogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHRWaWV3OiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgbWF4OiB7IGNvbnRyb2w6IHsgdHlwZTogJ2RhdGUnIH0gfSxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IE1heCA9IFRlbXBsYXRlLmJpbmQoe30pO01heC5zdG9yeU5hbWUgPSAnbWF4J1xuTWF4LmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICBldmVudHM6IGRlbW9FdmVudHMsXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcbiAgbWF4OiBuZXcgRGF0ZSgxOTcyLCAwLCAxLCAyMCwgNTksIDU5KSxcbn1cblxuXG5cbk1heC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uTWF4LnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJtZXNzYWdlc1wiXG4gICAgfX0+e2BtZXNzYWdlc2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgT2JqZWN0YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgU3RyaW5nIG1lc3NhZ2VzIHVzZWQgdGhyb3VnaG91dCB0aGUgY29tcG9uZW50LCBvdmVycmlkZSB0byBwcm92aWRlIGxvY2FsaXphdGlvbnMgZm9yIGJ1dHRvbiB0ZXh0LCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B0aXRsZWB9PC9pbmxpbmVDb2RlPntgIGF0dHJpYnV0ZXMgYW5kIG1vcmUuYH08L3A+XG4gICAgPHA+e2BkZWZ1YWx0c2B9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2B7XG4gIGRhdGU6ICdEYXRlJyxcbiAgdGltZTogJ1RpbWUnLFxuICBldmVudDogJ0V2ZW50JyxcbiAgYWxsRGF5OiAnQWxsIERheScsXG4gIHdlZWs6ICdXZWVrJyxcbiAgd29ya193ZWVrOiAnV29yayBXZWVrJyxcbiAgZGF5OiAnRGF5JyxcbiAgbW9udGg6ICdNb250aCcsXG4gIHByZXZpb3VzOiAnQmFjaycsXG4gIG5leHQ6ICdOZXh0JyxcbiAgeWVzdGVyZGF5OiAnWWVzdGVyZGF5JyxcbiAgdG9tb3Jyb3c6ICdUb21vcnJvdycsXG4gIHRvZGF5OiAnVG9kYXknLFxuICBhZ2VuZGE6ICdBZ2VuZGEnLFxuXG4gIG5vRXZlbnRzSW5SYW5nZTogJ1RoZXJlIGFyZSBubyBldmVudHMgaW4gdGhpcyByYW5nZS4nLFxuICAvKipcbiAgICogcGFyYW1zIHt0b3RhbH0gY291bnQgb2YgcmVtYWluaW5nIGV2ZW50cyBcbiAgICogcGFyYW1zIHtyZW1haW5pbmdFdmVudHN9IHJlbWFpbmluZyBldmVudHMgXG4gICAqIHBhcmFtcyB7ZXZlbnRzfSBhbGwgZXZlbnRzIGluIGRheVxuICAgKi9cbiAgc2hvd01vcmU6ICh0b3RhbCwgcmVtYWluaW5nRXZlbnRzLCBldmVudHMpID0+IFxcYCtcXCR7dG90YWx9IG3DoXNcXGAsXG59XG5gfTwvY29kZT48L3ByZT5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLW1lc3NhZ2VzXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9tZXNzYWdlcy5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIE1lc3NhZ2VzKCkge1xcbiAgY29uc3QgeyBkZWZhdWx0RGF0ZSwgbWVzc2FnZXMgfSA9IHVzZU1lbW8oXFxuICAgICgpID0+ICh7XFxuICAgICAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gICAgICBtZXNzYWdlczoge1xcbiAgICAgICAgd2VlazogJ1NlbWFuYScsXFxuICAgICAgICB3b3JrX3dlZWs6ICdTZW1hbmEgZGUgdHJhYmFqbycsXFxuICAgICAgICBkYXk6ICdEw61hJyxcXG4gICAgICAgIG1vbnRoOiAnTWVzJyxcXG4gICAgICAgIHByZXZpb3VzOiAnQXRyw6FzJyxcXG4gICAgICAgIG5leHQ6ICdEZXNwdcOpcycsXFxuICAgICAgICB0b2RheTogJ0hveScsXFxuICAgICAgICBhZ2VuZGE6ICdFbCBEaWFyaW8nLFxcblxcbiAgICAgICAgc2hvd01vcmU6ICh0b3RhbCkgPT4gYCske3RvdGFsfSBtw6FzYCxcXG4gICAgICB9LFxcbiAgICB9KSxcXG4gICAgW11cXG4gIClcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgbWVzc2FnZXM9e21lc3NhZ2VzfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5NZXNzYWdlcy5zdG9yeU5hbWUgPSAnbWVzc2FnZXMnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIk1lc3NhZ2VzXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NDl9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo0OX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL21lc3NhZ2VzLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IE1lc3NhZ2VzID0gZnVuY3Rpb24gTWVzc2FnZXMoKSB7XG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIG1lc3NhZ2VzIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxuICAgICAgbWVzc2FnZXM6IHtcbiAgICAgICAgd2VlazogJ1NlbWFuYScsXG4gICAgICAgIHdvcmtfd2VlazogJ1NlbWFuYSBkZSB0cmFiYWpvJyxcbiAgICAgICAgZGF5OiAnRMOtYScsXG4gICAgICAgIG1vbnRoOiAnTWVzJyxcbiAgICAgICAgcHJldmlvdXM6ICdBdHLDoXMnLFxuICAgICAgICBuZXh0OiAnRGVzcHXDqXMnLFxuICAgICAgICB0b2RheTogJ0hveScsXG4gICAgICAgIGFnZW5kYTogJ0VsIERpYXJpbycsXG5cbiAgICAgICAgc2hvd01vcmU6ICh0b3RhbCkgPT4gYCske3RvdGFsfSBtw6FzYCxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICBtZXNzYWdlcz17bWVzc2FnZXN9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O01lc3NhZ2VzLnN0b3J5TmFtZSA9ICdtZXNzYWdlcydcblxuXG5cbk1lc3NhZ2VzLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBNZXNzYWdlcygpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIG1lc3NhZ2VzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICAgICAgbWVzc2FnZXM6IHtcXG4gICAgICAgIHdlZWs6ICdTZW1hbmEnLFxcbiAgICAgICAgd29ya193ZWVrOiAnU2VtYW5hIGRlIHRyYWJham8nLFxcbiAgICAgICAgZGF5OiAnRMOtYScsXFxuICAgICAgICBtb250aDogJ01lcycsXFxuICAgICAgICBwcmV2aW91czogJ0F0csOhcycsXFxuICAgICAgICBuZXh0OiAnRGVzcHXDqXMnLFxcbiAgICAgICAgdG9kYXk6ICdIb3knLFxcbiAgICAgICAgYWdlbmRhOiAnRWwgRGlhcmlvJyxcXG5cXG4gICAgICAgIHNob3dNb3JlOiAodG90YWwpID0+IGArJHt0b3RhbH0gbcOhc2AsXFxuICAgICAgfSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG1lc3NhZ2VzPXttZXNzYWdlc31cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uTWVzc2FnZXMucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm1pblwiXG4gICAgfX0+e2BtaW5gfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGluc3RhbmNlT2YoRGF0ZSlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG5ldyBEYXRlKDE5NzIsIDAsIDEsIDAsIDAsIDAsIDApYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ29uc3RyYWlucyB0aGUgbWluaW11bSB0aW1lIG9mIHRoZSBEYXkgYW5kIFdlZWsgdmlld3MuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLW1pblwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vbWluLm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdFZpZXc6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIG1pbjogeyBjb250cm9sOiB7IHR5cGU6ICdkYXRlJyB9IH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgTWluID0gVGVtcGxhdGUuYmluZCh7fSlcXG5NaW4uc3RvcnlOYW1lID0gJ21pbidcXG5NaW4uYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG4gIG1pbjogbmV3IERhdGUoMTk3MiwgMCwgMSwgOCksXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJNaW5cIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjI2fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MzB9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjZ9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MzB9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9taW4ubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgYXJnVHlwZXM6IHtcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBkZWZhdWx0RGF0ZTogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHRWaWV3OiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgbWluOiB7IGNvbnRyb2w6IHsgdHlwZTogJ2RhdGUnIH0gfSxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IE1pbiA9IFRlbXBsYXRlLmJpbmQoe30pO01pbi5zdG9yeU5hbWUgPSAnbWluJ1xuTWluLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxuICBldmVudHM6IGRlbW9FdmVudHMsXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcbiAgbWluOiBuZXcgRGF0ZSgxOTcyLCAwLCAxLCA4KSxcbn1cblxuXG5cbk1pbi5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uTWluLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbmRvdWJsZWNsaWNrZXZlbnRcIlxuICAgIH19Pntgb25Eb3VibGVDbGlja0V2ZW50YH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZXZlbnQ6IE9iamVjdCkgPT4gYW55YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ2FsbGJhY2sgZmlyZWQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGNsaWNrZWQgdHdpY2UuIChpLmUuOiBhbiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvbkRvdWJsZUNsaWNrYH08L2lubGluZUNvZGU+e2AgaGFuZGxlcikuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgTm90ZTpgfTwvc3Ryb25nPntgIFRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJzZWxlY3RhYmxlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgc2VsZWN0YWJsZWB9PC9MaW5rVG8+e2AgcHJvcCBpcyBgfTxlbSBwYXJlbnROYW1lPVwicFwiPntgbm90YH08L2VtPntgIHJlcXVpcmVkIGZvciB0aGlzIHByb3AgdG8gZnVuY3Rpb24uYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgSW1wb3J0YW50OmB9PC9zdHJvbmc+e2AgVGhlIGV2ZW50IHBhc3NlZCBpbnRvIHRoZSBmdW5jdGlvbiBpcyB0aGUgQ2FsZW5kYXIgRXZlbnQsIG5vdCB0aGUgU3ludGhldGljRXZlbnQgZXhwZWN0ZWQgYnkgbW9zdCBjbGljayBoYW5kbGVycy5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLW9uLWRvdWJsZS1jbGljay1ldmVudFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9vbkRvdWJsZUNsaWNrRXZlbnQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmZ1bmN0aW9uIGJ1aWxkTWVzc2FnZShjYWxFdmVudCwgZXZlbnROYW1lKSB7XFxuICByZXR1cm4gYFske2V2ZW50TmFtZX1dIGFuICdldmVudCcgc2VsZWN0aW9uIHdhcyBtYWRlIHdpdGg6XFxuICAke0pTT04uc3RyaW5naWZ5KGNhbEV2ZW50LCBudWxsLCAyKX1gXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBPbkRvdWJsZUNsaWNrRXZlbnQoKSB7XFxuICBjb25zdCBjbGlja1JlZiA9IHVzZVJlZihudWxsKVxcblxcbiAgdXNlRWZmZWN0KCgpID0+IHtcXG4gICAgLyoqXFxuICAgICAqIFdoYXQgSXMgVGhpcz9cXG4gICAgICogVGhpcyBpcyB0byBwcmV2ZW50IGEgbWVtb3J5IGxlYWssIGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgeW91XFxuICAgICAqIHRlYXJkb3duIHlvdXIgaW50ZXJmYWNlIHByaW9yIHRvIHRoZSB0aW1lZCBtZXRob2QgYmVpbmcgY2FsbGVkLlxcbiAgICAgKi9cXG4gICAgcmV0dXJuICgpID0+IHtcXG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICB9XFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uU2VsZWN0RXZlbnQgPSB1c2VDYWxsYmFjaygoY2FsRXZlbnQpID0+IHtcXG4gICAgLyoqXFxuICAgICAqIEhlcmUgd2UgYXJlIHdhaXRpbmcgMjUwIG1pbGxpc2Vjb25kcyAodXNlIHdoYXQgeW91IHdhbnQpIHByaW9yIHRvIGZpcmluZ1xcbiAgICAgKiBvdXIgbWV0aG9kLiBXaHk/IEJlY2F1c2UgYm90aCAnY2xpY2snIGFuZCAnZG91YmxlQ2xpY2snXFxuICAgICAqIHdvdWxkIGZpcmUsIGluIHRoZSBldmVudCBvZiBhICdkb3VibGVDbGljaycuIEJ5IGRvaW5nXFxuICAgICAqIHRoaXMsIHRoZSAnY2xpY2snIGhhbmRsZXIgaXMgb3ZlcnJpZGRlbiBieSB0aGUgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgKiBhY3Rpb24uXFxuICAgICAqL1xcbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5hbGVydChidWlsZE1lc3NhZ2UoY2FsRXZlbnQsICdvblNlbGVjdEV2ZW50JykpXFxuICAgIH0sIDI1MClcXG4gIH0sIFtdKVxcblxcbiAgY29uc3Qgb25Eb3VibGVDbGlja0V2ZW50ID0gdXNlQ2FsbGJhY2soKGNhbEV2ZW50KSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBOb3RpY2Ugb3VyIHVzZSBvZiB0aGUgc2FtZSByZWYgYXMgYWJvdmUuXFxuICAgICAqL1xcbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5hbGVydChidWlsZE1lc3NhZ2UoY2FsRXZlbnQsICdvbkRvdWJsZUNsaWNrRXZlbnQnKSlcXG4gICAgfSwgMjUwKVxcbiAgfSwgW10pXFxuXFxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMSksIFtdKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBvbkRvdWJsZUNsaWNrRXZlbnQ9e29uRG91YmxlQ2xpY2tFdmVudH1cXG4gICAgICAgIG9uU2VsZWN0RXZlbnQ9e29uU2VsZWN0RXZlbnR9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbk9uRG91YmxlQ2xpY2tFdmVudC5zdG9yeU5hbWUgPSAnb25Eb3VibGVDbGlja0V2ZW50J1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPbkRvdWJsZUNsaWNrRXZlbnRcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MjR9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo3NX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjI0fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjc1fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9vbkRvdWJsZUNsaWNrRXZlbnQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5mdW5jdGlvbiBidWlsZE1lc3NhZ2UoY2FsRXZlbnQsIGV2ZW50TmFtZSkge1xuICByZXR1cm4gYFske2V2ZW50TmFtZX1dIGFuICdldmVudCcgc2VsZWN0aW9uIHdhcyBtYWRlIHdpdGg6XG4gICR7SlNPTi5zdHJpbmdpZnkoY2FsRXZlbnQsIG51bGwsIDIpfWBcbn1cblxuZXhwb3J0IGNvbnN0IE9uRG91YmxlQ2xpY2tFdmVudCA9IGZ1bmN0aW9uIE9uRG91YmxlQ2xpY2tFdmVudCgpIHtcbiAgY29uc3QgY2xpY2tSZWYgPSB1c2VSZWYobnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8qKlxuICAgICAqIFdoYXQgSXMgVGhpcz9cbiAgICAgKiBUaGlzIGlzIHRvIHByZXZlbnQgYSBtZW1vcnkgbGVhaywgaW4gdGhlIG9mZiBjaGFuY2UgdGhhdCB5b3VcbiAgICAgKiB0ZWFyZG93biB5b3VyIGludGVyZmFjZSBwcmlvciB0byB0aGUgdGltZWQgbWV0aG9kIGJlaW5nIGNhbGxlZC5cbiAgICAgKi9cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9uU2VsZWN0RXZlbnQgPSB1c2VDYWxsYmFjaygoY2FsRXZlbnQpID0+IHtcbiAgICAvKipcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgKHVzZSB3aGF0IHlvdSB3YW50KSBwcmlvciB0byBmaXJpbmdcbiAgICAgKiBvdXIgbWV0aG9kLiBXaHk/IEJlY2F1c2UgYm90aCAnY2xpY2snIGFuZCAnZG91YmxlQ2xpY2snXG4gICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcbiAgICAgKiBhY3Rpb24uXG4gICAgICovXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShjYWxFdmVudCwgJ29uU2VsZWN0RXZlbnQnKSlcbiAgICB9LCAyNTApXG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9uRG91YmxlQ2xpY2tFdmVudCA9IHVzZUNhbGxiYWNrKChjYWxFdmVudCkgPT4ge1xuICAgIC8qKlxuICAgICAqIE5vdGljZSBvdXIgdXNlIG9mIHRoZSBzYW1lIHJlZiBhcyBhYm92ZS5cbiAgICAgKi9cbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxuICAgIGNsaWNrUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKGNhbEV2ZW50LCAnb25Eb3VibGVDbGlja0V2ZW50JykpXG4gICAgfSwgMjUwKVxuICB9LCBbXSlcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMSksIFtdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICBvbkRvdWJsZUNsaWNrRXZlbnQ9e29uRG91YmxlQ2xpY2tFdmVudH1cbiAgICAgICAgb25TZWxlY3RFdmVudD17b25TZWxlY3RFdmVudH1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07T25Eb3VibGVDbGlja0V2ZW50LnN0b3J5TmFtZSA9ICdvbkRvdWJsZUNsaWNrRXZlbnQnXG5cblxuXG5PbkRvdWJsZUNsaWNrRXZlbnQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIE9uRG91YmxlQ2xpY2tFdmVudCgpIHtcXG4gIGNvbnN0IGNsaWNrUmVmID0gdXNlUmVmKG51bGwpXFxuXFxuICB1c2VFZmZlY3QoKCkgPT4ge1xcbiAgICAvKipcXG4gICAgICogV2hhdCBJcyBUaGlzP1xcbiAgICAgKiBUaGlzIGlzIHRvIHByZXZlbnQgYSBtZW1vcnkgbGVhaywgaW4gdGhlIG9mZiBjaGFuY2UgdGhhdCB5b3VcXG4gICAgICogdGVhcmRvd24geW91ciBpbnRlcmZhY2UgcHJpb3IgdG8gdGhlIHRpbWVkIG1ldGhvZCBiZWluZyBjYWxsZWQuXFxuICAgICAqL1xcbiAgICByZXR1cm4gKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIH1cXG4gIH0sIFtdKVxcblxcbiAgY29uc3Qgb25TZWxlY3RFdmVudCA9IHVzZUNhbGxiYWNrKChjYWxFdmVudCkgPT4ge1xcbiAgICAvKipcXG4gICAgICogSGVyZSB3ZSBhcmUgd2FpdGluZyAyNTAgbWlsbGlzZWNvbmRzICh1c2Ugd2hhdCB5b3Ugd2FudCkgcHJpb3IgdG8gZmlyaW5nXFxuICAgICAqIG91ciBtZXRob2QuIFdoeT8gQmVjYXVzZSBib3RoICdjbGljaycgYW5kICdkb3VibGVDbGljaydcXG4gICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcXG4gICAgICogdGhpcywgdGhlICdjbGljaycgaGFuZGxlciBpcyBvdmVycmlkZGVuIGJ5IHRoZSAnZG91YmxlQ2xpY2snXFxuICAgICAqIGFjdGlvbi5cXG4gICAgICovXFxuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIGNsaWNrUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShjYWxFdmVudCwgJ29uU2VsZWN0RXZlbnQnKSlcXG4gICAgfSwgMjUwKVxcbiAgfSwgW10pXFxuXFxuICBjb25zdCBvbkRvdWJsZUNsaWNrRXZlbnQgPSB1c2VDYWxsYmFjaygoY2FsRXZlbnQpID0+IHtcXG4gICAgLyoqXFxuICAgICAqIE5vdGljZSBvdXIgdXNlIG9mIHRoZSBzYW1lIHJlZiBhcyBhYm92ZS5cXG4gICAgICovXFxuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIGNsaWNrUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShjYWxFdmVudCwgJ29uRG91YmxlQ2xpY2tFdmVudCcpKVxcbiAgICB9LCAyNTApXFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uRG91YmxlQ2xpY2tFdmVudD17b25Eb3VibGVDbGlja0V2ZW50fVxcbiAgICAgICAgb25TZWxlY3RFdmVudD17b25TZWxlY3RFdmVudH1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uT25Eb3VibGVDbGlja0V2ZW50LnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbmRyaWxsZG93blwiXG4gICAgfX0+e2BvbkRyaWxsRG93bmB9PC9oMT5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLW9uLWRyaWxsLWRvd25cIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSkgPT4gLy8gZG8gc29tZXRoaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ2FsbGJhY2sgZmlyZWQgd2hlbiBkYXRlIGhlYWRlciwgb3IgdGhlIHRydW5jYXRlZCBldmVudCBsaW5rcyBhcmUgY2xpY2tlZC4gV2hlbiBpbmNsdWRlZCwgaXQgd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBkcmlsbGRvd24gYmVoYXZpb3IuYH08L3A+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vb25EcmlsbERvd24ubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBPbkRyaWxsRG93bigpIHtcXG4gIGNvbnN0IFt2aWV3LCBzZXRWaWV3XSA9IHVzZVN0YXRlKFZpZXdzLk1PTlRIKVxcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMTMpKVxcbiAgY29uc3Qgb25OYXZpZ2F0ZSA9IHVzZUNhbGxiYWNrKChuZXdEYXRlKSA9PiBzZXREYXRlKG5ld0RhdGUpLCBbc2V0RGF0ZV0pXFxuICBjb25zdCBvblZpZXcgPSB1c2VDYWxsYmFjaygobmV3VmlldykgPT4gc2V0VmlldyhuZXdWaWV3KSwgW3NldFZpZXddKVxcbiAgY29uc3Qgb25EcmlsbERvd24gPSB1c2VDYWxsYmFjayhcXG4gICAgKG5ld0RhdGUpID0+IHtcXG4gICAgICBzZXREYXRlKG5ld0RhdGUpXFxuICAgICAgc2V0VmlldyhWaWV3cy5BR0VOREEpXFxuICAgIH0sXFxuICAgIFtzZXREYXRlLCBzZXRWaWV3XVxcbiAgKVxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkYXRlPXtkYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25EcmlsbERvd249e29uRHJpbGxEb3dufVxcbiAgICAgICAgb25OYXZpZ2F0ZT17b25OYXZpZ2F0ZX1cXG4gICAgICAgIG9uVmlldz17b25WaWV3fVxcbiAgICAgICAgdmlldz17dmlld31cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuT25EcmlsbERvd24uc3RvcnlOYW1lID0gJ29uRHJpbGxEb3duJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPbkRyaWxsRG93blwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQ0fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDR9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9vbkRyaWxsRG93bi5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBPbkRyaWxsRG93biA9IGZ1bmN0aW9uIE9uRHJpbGxEb3duKCkge1xuICBjb25zdCBbdmlldywgc2V0Vmlld10gPSB1c2VTdGF0ZShWaWV3cy5NT05USClcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMTMpKVxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcbiAgY29uc3Qgb25WaWV3ID0gdXNlQ2FsbGJhY2soKG5ld1ZpZXcpID0+IHNldFZpZXcobmV3VmlldyksIFtzZXRWaWV3XSlcbiAgY29uc3Qgb25EcmlsbERvd24gPSB1c2VDYWxsYmFjayhcbiAgICAobmV3RGF0ZSkgPT4ge1xuICAgICAgc2V0RGF0ZShuZXdEYXRlKVxuICAgICAgc2V0VmlldyhWaWV3cy5BR0VOREEpXG4gICAgfSxcbiAgICBbc2V0RGF0ZSwgc2V0Vmlld11cbiAgKVxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGF0ZT17ZGF0ZX1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAgIG9uRHJpbGxEb3duPXtvbkRyaWxsRG93bn1cbiAgICAgICAgb25OYXZpZ2F0ZT17b25OYXZpZ2F0ZX1cbiAgICAgICAgb25WaWV3PXtvblZpZXd9XG4gICAgICAgIHZpZXc9e3ZpZXd9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O09uRHJpbGxEb3duLnN0b3J5TmFtZSA9ICdvbkRyaWxsRG93bidcblxuXG5cbk9uRHJpbGxEb3duLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBPbkRyaWxsRG93bigpIHtcXG4gIGNvbnN0IFt2aWV3LCBzZXRWaWV3XSA9IHVzZVN0YXRlKFZpZXdzLk1PTlRIKVxcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMTMpKVxcbiAgY29uc3Qgb25OYXZpZ2F0ZSA9IHVzZUNhbGxiYWNrKChuZXdEYXRlKSA9PiBzZXREYXRlKG5ld0RhdGUpLCBbc2V0RGF0ZV0pXFxuICBjb25zdCBvblZpZXcgPSB1c2VDYWxsYmFjaygobmV3VmlldykgPT4gc2V0VmlldyhuZXdWaWV3KSwgW3NldFZpZXddKVxcbiAgY29uc3Qgb25EcmlsbERvd24gPSB1c2VDYWxsYmFjayhcXG4gICAgKG5ld0RhdGUpID0+IHtcXG4gICAgICBzZXREYXRlKG5ld0RhdGUpXFxuICAgICAgc2V0VmlldyhWaWV3cy5BR0VOREEpXFxuICAgIH0sXFxuICAgIFtzZXREYXRlLCBzZXRWaWV3XVxcbiAgKVxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkYXRlPXtkYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25EcmlsbERvd249e29uRHJpbGxEb3dufVxcbiAgICAgICAgb25OYXZpZ2F0ZT17b25OYXZpZ2F0ZX1cXG4gICAgICAgIG9uVmlldz17b25WaWV3fVxcbiAgICAgICAgdmlldz17dmlld31cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uT25EcmlsbERvd24ucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9ua2V5cHJlc3NldmVudFwiXG4gICAgfX0+e2BvbktleVByZXNzRXZlbnRgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChldmVudDogT2JqZWN0LCBlOiBTeW50aGV0aWNFdmVudCkgPT4gdm9pZGB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YENhbGxiYWNrIGZpcmVkIHdoZW4gYSBmb2N1c2VkIGNhbGVuZGFyIGV2ZW50IHJlY2VpdmVzIGEga2V5IHByZXNzLmB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tb24ta2V5LXByZXNzLWV2ZW50XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL29uS2V5UHJlc3NFdmVudC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZnVuY3Rpb24gYnVpbGRNZXNzYWdlKGV2ZW50LCB7IGFsdEtleSwgY3RybEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGtleSB9KSB7XFxuICBsZXQgcHJlZml4ID0gJydcXG4gIGlmIChhbHRLZXkpIHtcXG4gICAgcHJlZml4ID0gJ0FMVCArICdcXG4gIH0gZWxzZSBpZiAoY3RybEtleSkge1xcbiAgICBwcmVmaXggPSAnQ1RSTCArICdcXG4gIH0gZWxzZSBpZiAoc2hpZnRLZXkpIHtcXG4gICAgcHJlZml4ID0gJ1NISUZUICsgJ1xcbiAgfSBlbHNlIGlmIChtZXRhS2V5KSB7XFxuICAgIHByZWZpeCA9ICdDTUQgKyAnXFxuICB9XFxuICByZXR1cm4gYFlvdSBwcmVzc2VkIG9uIHRoZSBcXFwiJHtwcmVmaXh9JHtrZXl9XFxcIiBvbiBcXFwiZXZlbnRcXFwiOlxcbkpTT04uc3RyaW5naWZ5KGV2ZW50LCBudWxsLCAyKWBcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIE9uS2V5UHJlc3NFdmVudCgpIHtcXG4gIGNvbnN0IHByZXNzUmVmID0gdXNlUmVmKG51bGwpXFxuXFxuICB1c2VFZmZlY3QoKCkgPT4ge1xcbiAgICByZXR1cm4gKCkgPT4ge1xcbiAgICAgIC8vIFRvIHByZXZlbnQgcG9zc2libGUgbWVtb3J5IGxlYWsgb24gdW5tb3VudFxcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQocHJlc3NSZWY/LmN1cnJlbnQpXFxuICAgIH1cXG4gIH0sIFtdKVxcblxcbiAgY29uc3Qgb25LZXlQcmVzc0V2ZW50ID0gdXNlQ2FsbGJhY2soKGV2ZW50LCBrZXlwcmVzc0V2ZW50KSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBXZSBkZWxheSBvdXIgcmVzcG9uc2UgdG8gY2FwdHVyZSBjdHJsL3NoaWZ0L2FsdCArIGtleVxcbiAgICAgKiAqU3Rvcnlib29rIHdpbGwgc3dhbGxvdyBzb21lIHByZXNzZXMgZnJvbSBpdCdzIG93biBidWlsdC1pbnNcXG4gICAgICovXFxuICAgIHByZXNzUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShldmVudCwga2V5cHJlc3NFdmVudCkpXFxuICAgIH0sIDI1MClcXG4gIH0sIFtdKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uS2V5UHJlc3NFdmVudD17b25LZXlQcmVzc0V2ZW50fVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5PbktleVByZXNzRXZlbnQuc3RvcnlOYW1lID0gJ29uS2V5cHJlc3NFdmVudCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiT25LZXlQcmVzc0V2ZW50XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjM0fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NjZ9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjozNH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo2Nn19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vb25LZXlQcmVzc0V2ZW50Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZnVuY3Rpb24gYnVpbGRNZXNzYWdlKGV2ZW50LCB7IGFsdEtleSwgY3RybEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGtleSB9KSB7XG4gIGxldCBwcmVmaXggPSAnJ1xuICBpZiAoYWx0S2V5KSB7XG4gICAgcHJlZml4ID0gJ0FMVCArICdcbiAgfSBlbHNlIGlmIChjdHJsS2V5KSB7XG4gICAgcHJlZml4ID0gJ0NUUkwgKyAnXG4gIH0gZWxzZSBpZiAoc2hpZnRLZXkpIHtcbiAgICBwcmVmaXggPSAnU0hJRlQgKyAnXG4gIH0gZWxzZSBpZiAobWV0YUtleSkge1xuICAgIHByZWZpeCA9ICdDTUQgKyAnXG4gIH1cbiAgcmV0dXJuIGBZb3UgcHJlc3NlZCBvbiB0aGUgXCIke3ByZWZpeH0ke2tleX1cIiBvbiBcImV2ZW50XCI6XG5KU09OLnN0cmluZ2lmeShldmVudCwgbnVsbCwgMilgXG59XG5cbmV4cG9ydCBjb25zdCBPbktleVByZXNzRXZlbnQgPSBmdW5jdGlvbiBPbktleVByZXNzRXZlbnQoKSB7XG4gIGNvbnN0IHByZXNzUmVmID0gdXNlUmVmKG51bGwpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gVG8gcHJldmVudCBwb3NzaWJsZSBtZW1vcnkgbGVhayBvbiB1bm1vdW50XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHByZXNzUmVmPy5jdXJyZW50KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3Qgb25LZXlQcmVzc0V2ZW50ID0gdXNlQ2FsbGJhY2soKGV2ZW50LCBrZXlwcmVzc0V2ZW50KSA9PiB7XG4gICAgLyoqXG4gICAgICogV2UgZGVsYXkgb3VyIHJlc3BvbnNlIHRvIGNhcHR1cmUgY3RybC9zaGlmdC9hbHQgKyBrZXlcbiAgICAgKiAqU3Rvcnlib29rIHdpbGwgc3dhbGxvdyBzb21lIHByZXNzZXMgZnJvbSBpdCdzIG93biBidWlsdC1pbnNcbiAgICAgKi9cbiAgICBwcmVzc1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShldmVudCwga2V5cHJlc3NFdmVudCkpXG4gICAgfSwgMjUwKVxuICB9LCBbXSlcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMTMpLCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgICAgb25LZXlQcmVzc0V2ZW50PXtvbktleVByZXNzRXZlbnR9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O09uS2V5UHJlc3NFdmVudC5zdG9yeU5hbWUgPSAnb25LZXlwcmVzc0V2ZW50J1xuXG5cblxuT25LZXlQcmVzc0V2ZW50LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBPbktleVByZXNzRXZlbnQoKSB7XFxuICBjb25zdCBwcmVzc1JlZiA9IHVzZVJlZihudWxsKVxcblxcbiAgdXNlRWZmZWN0KCgpID0+IHtcXG4gICAgcmV0dXJuICgpID0+IHtcXG4gICAgICAvLyBUbyBwcmV2ZW50IHBvc3NpYmxlIG1lbW9yeSBsZWFrIG9uIHVubW91bnRcXG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHByZXNzUmVmPy5jdXJyZW50KVxcbiAgICB9XFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uS2V5UHJlc3NFdmVudCA9IHVzZUNhbGxiYWNrKChldmVudCwga2V5cHJlc3NFdmVudCkgPT4ge1xcbiAgICAvKipcXG4gICAgICogV2UgZGVsYXkgb3VyIHJlc3BvbnNlIHRvIGNhcHR1cmUgY3RybC9zaGlmdC9hbHQgKyBrZXlcXG4gICAgICogKlN0b3J5Ym9vayB3aWxsIHN3YWxsb3cgc29tZSBwcmVzc2VzIGZyb20gaXQncyBvd24gYnVpbHQtaW5zXFxuICAgICAqL1xcbiAgICBwcmVzc1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5hbGVydChidWlsZE1lc3NhZ2UoZXZlbnQsIGtleXByZXNzRXZlbnQpKVxcbiAgICB9LCAyNTApXFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksIFtdKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBvbktleVByZXNzRXZlbnQ9e29uS2V5UHJlc3NFdmVudH1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uT25LZXlQcmVzc0V2ZW50LnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbm5hdmlnYXRlXCJcbiAgICB9fT57YG9uTmF2aWdhdGVgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGNvbnRyb2xzOiBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJkYXRlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZGF0ZWB9PC9MaW5rVG8+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGV4YW1wbGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2AobmV3RGF0ZSkgPT4gc2V0RGF0ZShuZXdEYXRlKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGRhdGVgfTwvaW5saW5lQ29kZT57YCB2YWx1ZSBjaGFuZ2VzLiBXaGVuIGluY2x1ZGVkIGl0IGlzIHVzZWQgdG8gJ2NvbnRyb2wnIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJkYXRlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZGF0ZWB9PC9MaW5rVG8+e2AgcHJvcCB2YWx1ZS5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLW9uLW5hdmlnYXRlXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL29uTmF2aWdhdGUubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBPbk5hdmlnYXRlKCkge1xcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMSkpXFxuXFxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGF0ZT17ZGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbk9uTmF2aWdhdGUuc3RvcnlOYW1lID0gJ29uTmF2aWdhdGUnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIk9uTmF2aWdhdGVcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozNH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM0fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9vbk5hdmlnYXRlLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IE9uTmF2aWdhdGUgPSBmdW5jdGlvbiBPbk5hdmlnYXRlKCkge1xuICBjb25zdCBbZGF0ZSwgc2V0RGF0ZV0gPSB1c2VTdGF0ZShuZXcgRGF0ZSgyMDE1LCAzLCAxKSlcblxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGF0ZT17ZGF0ZX1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O09uTmF2aWdhdGUuc3RvcnlOYW1lID0gJ29uTmF2aWdhdGUnXG5cblxuXG5Pbk5hdmlnYXRlLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBPbk5hdmlnYXRlKCkge1xcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMSkpXFxuXFxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGF0ZT17ZGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLk9uTmF2aWdhdGUucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9ucmFuZ2VjaGFuZ2VcIlxuICAgIH19Pntgb25SYW5nZUNoYW5nZWB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKHJhbmdlOiBBcnJheSBbMXw3XSB8IE9iamVjdCB7c3RhcnQ6IERhdGUsIGVuZDogRGF0ZX0pID0+IC8vIGRvIHNvbWV0aGluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIHZpc2libGUgZGF0ZSByYW5nZSBjaGFuZ2VzLiBSZXR1cm5zIGFuIEFycmF5IG9mIGRhdGVzIG9yIGFuIG9iamVjdCB3aXRoIHN0YXJ0IGFuZCBlbmQgZGF0ZXMgZm9yIEJVSUxUSU4gdmlld3MuYH08L3A+XG4gICAgPHA+e2BDdXN0b20gdmlld3MgbWF5IHJldHVybiBzb21ldGhpbmcgZGlmZmVyZW50LmB9PC9wPlxuICAgIDxwPjxlbSBwYXJlbnROYW1lPVwicFwiPntgTm90ZTpgfTwvZW0+e2AgVGhpcyBtZXRob2QgaXMgbm90IGZpcmVkIG9uIGluaXRpYWwgcmVuZGVyLiBPbmx5IGFzIHRoZSB1c2VyIG5hdmlnYXRlcyB0aHJvdWdoIEJpZyBDYWxlbmRhci5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLW9uLXJhbmdlLWNoYW5nZVwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciwgVmlld3MgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vb25SYW5nZUNoYW5nZS5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZnVuY3Rpb24gYnVpbGRNZXNzYWdlKHJhbmdlKSB7XFxuICBpZiAoIXJhbmdlKSB7XFxuICAgIHJldHVybiAnbm8gcmFuZ2UnXFxuICB9XFxuICBpZiAoIUFycmF5LmlzQXJyYXkocmFuZ2UpKSB7XFxuICAgIHJldHVybiBgW29uUmFuZ2VDaGFuZ2VdIHdhcyBnaXZlbiBhbiBvYmplY3Qgd2l0aFxcbiAgICBhIHN0YXJ0IG9mICR7cmFuZ2Uuc3RhcnQudG9Mb2NhbGVTdHJpbmcoKX1cXG4gICAgYW5kIGFuIGVuZCBvZiAke3JhbmdlLmVuZC50b0xvY2FsZVN0cmluZygpfS5cXG4gICAgQW4gb2JqZWN0IHdpdGggJ3N0YXJ0JyBhbmQgJ2VuZCcgaXMgcGFzc2VkXFxuICAgIHdoZW4gaW4gdGhlICdtb250aCcgb3IgJ2FnZW5kYScgdmlld3MuYFxcbiAgfVxcbiAgaWYgKHJhbmdlLmxlbmd0aCA9PT0gMSkge1xcbiAgICByZXR1cm4gYFtvblJhbmdlQ2hhbmdlXSB3YXMgZ2l2ZW4gYW4gYXJyYXkgd2l0aFxcbiAgICBhIHNpbmdsZSBpdGVtIG9mICR7cmFuZ2VbMF0udG9Mb2NhbGVTdHJpbmcoKX0sXFxuICAgIHdoaWNoIG9ubHkgb2NjdXJzIHdpdGhpbiB0aGUgJ2RheScgdmlldy5gXFxuICB9XFxuICByZXR1cm4gYFtvblJhbmdlQ2hhbmdlXSB3YXMgZ2l2ZW4gYW4gYXJyYXkgb2Ygc2V2ZW4gZGF0ZXMsXFxuICBzdGFydGluZyB3aXRoICR7cmFuZ2VbMF0udG9Mb2NhbGVTdHJpbmcoKX1cXG4gIGFuZCBlbmRpbmcgd2l0aCAke3JhbmdlWzZdLnRvTG9jYWxlU3RyaW5nKCl9LlxcbiAgVGhpcyBvY2N1cnMgd2hlbiB3aXRoaW4gdGhlICd3ZWVrJyBvciAnd29yayB3ZWVrJyB2aWV3cy5gXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBPblJhbmdlQ2hhbmdlKCkge1xcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMSkpXFxuXFxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcXG5cXG4gIGNvbnN0IG9uUmFuZ2VDaGFuZ2UgPSB1c2VDYWxsYmFjaygocmFuZ2UpID0+IHtcXG4gICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShyYW5nZSkpXFxuICB9LCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGF0ZT17ZGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XFxuICAgICAgICBvblJhbmdlQ2hhbmdlPXtvblJhbmdlQ2hhbmdlfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5PblJhbmdlQ2hhbmdlLnN0b3J5TmFtZSA9ICdvblJhbmdlQ2hhbmdlJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPblJhbmdlQ2hhbmdlXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjQxfSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NjF9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjo0MX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo2MX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciwgVmlld3MgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL29uUmFuZ2VDaGFuZ2UubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5mdW5jdGlvbiBidWlsZE1lc3NhZ2UocmFuZ2UpIHtcbiAgaWYgKCFyYW5nZSkge1xuICAgIHJldHVybiAnbm8gcmFuZ2UnXG4gIH1cbiAgaWYgKCFBcnJheS5pc0FycmF5KHJhbmdlKSkge1xuICAgIHJldHVybiBgW29uUmFuZ2VDaGFuZ2VdIHdhcyBnaXZlbiBhbiBvYmplY3Qgd2l0aFxuICAgIGEgc3RhcnQgb2YgJHtyYW5nZS5zdGFydC50b0xvY2FsZVN0cmluZygpfVxuICAgIGFuZCBhbiBlbmQgb2YgJHtyYW5nZS5lbmQudG9Mb2NhbGVTdHJpbmcoKX0uXG4gICAgQW4gb2JqZWN0IHdpdGggJ3N0YXJ0JyBhbmQgJ2VuZCcgaXMgcGFzc2VkXG4gICAgd2hlbiBpbiB0aGUgJ21vbnRoJyBvciAnYWdlbmRhJyB2aWV3cy5gXG4gIH1cbiAgaWYgKHJhbmdlLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBgW29uUmFuZ2VDaGFuZ2VdIHdhcyBnaXZlbiBhbiBhcnJheSB3aXRoXG4gICAgYSBzaW5nbGUgaXRlbSBvZiAke3JhbmdlWzBdLnRvTG9jYWxlU3RyaW5nKCl9LFxuICAgIHdoaWNoIG9ubHkgb2NjdXJzIHdpdGhpbiB0aGUgJ2RheScgdmlldy5gXG4gIH1cbiAgcmV0dXJuIGBbb25SYW5nZUNoYW5nZV0gd2FzIGdpdmVuIGFuIGFycmF5IG9mIHNldmVuIGRhdGVzLFxuICBzdGFydGluZyB3aXRoICR7cmFuZ2VbMF0udG9Mb2NhbGVTdHJpbmcoKX1cbiAgYW5kIGVuZGluZyB3aXRoICR7cmFuZ2VbNl0udG9Mb2NhbGVTdHJpbmcoKX0uXG4gIFRoaXMgb2NjdXJzIHdoZW4gd2l0aGluIHRoZSAnd2Vlaycgb3IgJ3dvcmsgd2Vlaycgdmlld3MuYFxufVxuXG5leHBvcnQgY29uc3QgT25SYW5nZUNoYW5nZSA9IGZ1bmN0aW9uIE9uUmFuZ2VDaGFuZ2UoKSB7XG4gIGNvbnN0IFtkYXRlLCBzZXREYXRlXSA9IHVzZVN0YXRlKG5ldyBEYXRlKDIwMTUsIDMsIDEpKVxuXG4gIGNvbnN0IG9uTmF2aWdhdGUgPSB1c2VDYWxsYmFjaygobmV3RGF0ZSkgPT4gc2V0RGF0ZShuZXdEYXRlKSwgW3NldERhdGVdKVxuXG4gIGNvbnN0IG9uUmFuZ2VDaGFuZ2UgPSB1c2VDYWxsYmFjaygocmFuZ2UpID0+IHtcbiAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKHJhbmdlKSlcbiAgfSwgW10pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRhdGU9e2RhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICBvbk5hdmlnYXRlPXtvbk5hdmlnYXRlfVxuICAgICAgICBvblJhbmdlQ2hhbmdlPXtvblJhbmdlQ2hhbmdlfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtPblJhbmdlQ2hhbmdlLnN0b3J5TmFtZSA9ICdvblJhbmdlQ2hhbmdlJ1xuXG5cblxuT25SYW5nZUNoYW5nZS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gT25SYW5nZUNoYW5nZSgpIHtcXG4gIGNvbnN0IFtkYXRlLCBzZXREYXRlXSA9IHVzZVN0YXRlKG5ldyBEYXRlKDIwMTUsIDMsIDEpKVxcblxcbiAgY29uc3Qgb25OYXZpZ2F0ZSA9IHVzZUNhbGxiYWNrKChuZXdEYXRlKSA9PiBzZXREYXRlKG5ld0RhdGUpLCBbc2V0RGF0ZV0pXFxuXFxuICBjb25zdCBvblJhbmdlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKHJhbmdlKSA9PiB7XFxuICAgIHdpbmRvdy5hbGVydChidWlsZE1lc3NhZ2UocmFuZ2UpKVxcbiAgfSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRhdGU9e2RhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBvbk5hdmlnYXRlPXtvbk5hdmlnYXRlfVxcbiAgICAgICAgb25SYW5nZUNoYW5nZT17b25SYW5nZUNoYW5nZX1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uT25SYW5nZUNoYW5nZS5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwib25zZWxlY3RldmVudFwiXG4gICAgfX0+e2BvblNlbGVjdEV2ZW50YH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZXZlbnQ6IE9iamVjdCkgPT4gYW55YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ2FsbGJhY2sgZmlyZWQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIHNlbGVjdGVkIChpLmUuOiBhbiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvbkNsaWNrYH08L2lubGluZUNvZGU+e2AgaGFuZGxlcikuYH08L3A+XG4gICAgPHA+e2BUaGUgbWV0aG9kIHJlY2VpdmVzIHRoZSBzZWxlY3RlZCBldmVudCBhcyBhIHBhcmFtZXRlci4gSWYgdXNpbmcgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwicmVzb3VyY2VzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgcmVzb3VyY2VzYH08L0xpbmtUbz57YCwgYW5kIGFyZSBpbiBhIFRpbWVHcmlkIHZpZXcgKCdkYXknIG9yICd3ZWVrJyksIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BldmVudGB9PC9pbmxpbmVDb2RlPntgIHdpbGwgaGF2ZSBhbiBhZGRpdGlvbmFsIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHNvdXJjZVJlc291cmNlYH08L2lubGluZUNvZGU+e2AgcHJvcGVydHkgY29udGFpbmluZyB0aGUgcmVzb3VyY2Ugb2JqZWN0IHRoYXQgdGhlIGV2ZW50IGlzIGFzc29jaWF0ZWQgd2l0aC5gfTwvcD5cbiAgICA8cD57YENsaWNraW5nIG9uIGEgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiYmFja2dyb3VuZEV2ZW50c1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YGJhY2tncm91bmRFdmVudGB9PC9MaW5rVG8+e2Agd2lsbCBhbHNvIGZpcmUgdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uU2VsZWN0RXZlbnRgfTwvaW5saW5lQ29kZT57YCBjYWxsYmFjay4gSXQgd2lsbCBhbHNvIHJlY2VpdmUgdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGJhY2tncm91bmRFdmVudGB9PC9pbmxpbmVDb2RlPntgIGFzIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BldmVudGB9PC9pbmxpbmVDb2RlPntgIG9iamVjdCwgYnV0IGNvbnRhaW4gYSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2Bpc0JhY2tncm91bmRFdmVudGB9PC9pbmxpbmVDb2RlPntgIHByb3BlcnR5IHNldCB0byBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B0cnVlYH08L2lubGluZUNvZGU+e2AuIFRoaXMgd2lsbCBhbGxvdyB5b3UgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhIGJhY2tncm91bmQgZXZlbnQgYW5kIGEgcmVndWxhciBldmVudCB3aXRoaW4geW91ciBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvblNlbGVjdEV2ZW50YH08L2lubGluZUNvZGU+e2AgaGFuZGxlci5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BOb3RlOmB9PC9zdHJvbmc+e2AgVGhlIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNlbGVjdGFibGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BzZWxlY3RhYmxlYH08L0xpbmtUbz57YCBwcm9wIGlzIGB9PGVtIHBhcmVudE5hbWU9XCJwXCI+e2Bub3RgfTwvZW0+e2AgcmVxdWlyZWQgZm9yIHRoaXMgcHJvcCB0byBmdW5jdGlvbi5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BJbXBvcnRhbnQ6YH08L3N0cm9uZz57YCBUaGUgZXZlbnQgcGFzc2VkIGludG8gdGhlIGZ1bmN0aW9uIGlzIHRoZSBDYWxlbmRhciBFdmVudCwgbm90IHRoZSBTeW50aGV0aWNFdmVudCBleHBlY3RlZCBieSBtb3N0IGNsaWNrIGhhbmRsZXJzLmB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tb24tc2VsZWN0LWV2ZW50XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL29uU2VsZWN0RXZlbnQubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmZ1bmN0aW9uIGJ1aWxkTWVzc2FnZShjYWxFdmVudCwgZXZlbnROYW1lKSB7XFxuICByZXR1cm4gYFske2V2ZW50TmFtZX1dIGFuICdldmVudCcgc2VsZWN0aW9uIHdhcyBtYWRlIHdpdGg6XFxuICAke0pTT04uc3RyaW5naWZ5KGNhbEV2ZW50LCBudWxsLCAyKX1gXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBPblNlbGVjdEV2ZW50KCkge1xcbiAgY29uc3QgY2xpY2tSZWYgPSB1c2VSZWYobnVsbClcXG5cXG4gIHVzZUVmZmVjdCgoKSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBXaGF0IElzIFRoaXM/XFxuICAgICAqIFRoaXMgaXMgdG8gcHJldmVudCBhIG1lbW9yeSBsZWFrLCBpbiB0aGUgb2ZmIGNoYW5jZSB0aGF0IHlvdVxcbiAgICAgKiB0ZWFyZG93biB5b3VyIGludGVyZmFjZSBwcmlvciB0byB0aGUgdGltZWQgbWV0aG9kIGJlaW5nIGNhbGxlZC5cXG4gICAgICovXFxuICAgIHJldHVybiAoKSA9PiB7XFxuICAgICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgfVxcbiAgfSwgW10pXFxuXFxuICBjb25zdCBvblNlbGVjdEV2ZW50ID0gdXNlQ2FsbGJhY2soKGNhbEV2ZW50KSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgKHVzZSB3aGF0IHlvdSB3YW50KSBwcmlvciB0byBmaXJpbmdcXG4gICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgKiB3b3VsZCBmaXJlLCBpbiB0aGUgZXZlbnQgb2YgYSAnZG91YmxlQ2xpY2snLiBCeSBkb2luZ1xcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcXG4gICAgICogYWN0aW9uLlxcbiAgICAgKi9cXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKGNhbEV2ZW50LCAnb25TZWxlY3RFdmVudCcpKVxcbiAgICB9LCAyNTApXFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uRG91YmxlQ2xpY2tFdmVudCA9IHVzZUNhbGxiYWNrKChjYWxFdmVudCkgPT4ge1xcbiAgICAvKipcXG4gICAgICogTm90aWNlIG91ciB1c2Ugb2YgdGhlIHNhbWUgcmVmIGFzIGFib3ZlLlxcbiAgICAgKi9cXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKGNhbEV2ZW50LCAnb25Eb3VibGVDbGlja0V2ZW50JykpXFxuICAgIH0sIDI1MClcXG4gIH0sIFtdKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25Eb3VibGVDbGlja0V2ZW50PXtvbkRvdWJsZUNsaWNrRXZlbnR9XFxuICAgICAgICBvblNlbGVjdEV2ZW50PXtvblNlbGVjdEV2ZW50fVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5PblNlbGVjdEV2ZW50LnN0b3J5TmFtZSA9ICdvblNlbGVjdEV2ZW50J1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPblNlbGVjdEV2ZW50XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjI0fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NzV9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoyNH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo3NX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vb25TZWxlY3RFdmVudC5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmZ1bmN0aW9uIGJ1aWxkTWVzc2FnZShjYWxFdmVudCwgZXZlbnROYW1lKSB7XG4gIHJldHVybiBgWyR7ZXZlbnROYW1lfV0gYW4gJ2V2ZW50JyBzZWxlY3Rpb24gd2FzIG1hZGUgd2l0aDpcbiAgJHtKU09OLnN0cmluZ2lmeShjYWxFdmVudCwgbnVsbCwgMil9YFxufVxuXG5leHBvcnQgY29uc3QgT25TZWxlY3RFdmVudCA9IGZ1bmN0aW9uIE9uU2VsZWN0RXZlbnQoKSB7XG4gIGNvbnN0IGNsaWNrUmVmID0gdXNlUmVmKG51bGwpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvKipcbiAgICAgKiBXaGF0IElzIFRoaXM/XG4gICAgICogVGhpcyBpcyB0byBwcmV2ZW50IGEgbWVtb3J5IGxlYWssIGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgeW91XG4gICAgICogdGVhcmRvd24geW91ciBpbnRlcmZhY2UgcHJpb3IgdG8gdGhlIHRpbWVkIG1ldGhvZCBiZWluZyBjYWxsZWQuXG4gICAgICovXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBvblNlbGVjdEV2ZW50ID0gdXNlQ2FsbGJhY2soKGNhbEV2ZW50KSA9PiB7XG4gICAgLyoqXG4gICAgICogSGVyZSB3ZSBhcmUgd2FpdGluZyAyNTAgbWlsbGlzZWNvbmRzICh1c2Ugd2hhdCB5b3Ugd2FudCkgcHJpb3IgdG8gZmlyaW5nXG4gICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xuICAgICAqIHdvdWxkIGZpcmUsIGluIHRoZSBldmVudCBvZiBhICdkb3VibGVDbGljaycuIEJ5IGRvaW5nXG4gICAgICogdGhpcywgdGhlICdjbGljaycgaGFuZGxlciBpcyBvdmVycmlkZGVuIGJ5IHRoZSAnZG91YmxlQ2xpY2snXG4gICAgICogYWN0aW9uLlxuICAgICAqL1xuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHdpbmRvdy5hbGVydChidWlsZE1lc3NhZ2UoY2FsRXZlbnQsICdvblNlbGVjdEV2ZW50JykpXG4gICAgfSwgMjUwKVxuICB9LCBbXSlcblxuICBjb25zdCBvbkRvdWJsZUNsaWNrRXZlbnQgPSB1c2VDYWxsYmFjaygoY2FsRXZlbnQpID0+IHtcbiAgICAvKipcbiAgICAgKiBOb3RpY2Ugb3VyIHVzZSBvZiB0aGUgc2FtZSByZWYgYXMgYWJvdmUuXG4gICAgICovXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShjYWxFdmVudCwgJ29uRG91YmxlQ2xpY2tFdmVudCcpKVxuICAgIH0sIDI1MClcbiAgfSwgW10pXG5cbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgICAgb25Eb3VibGVDbGlja0V2ZW50PXtvbkRvdWJsZUNsaWNrRXZlbnR9XG4gICAgICAgIG9uU2VsZWN0RXZlbnQ9e29uU2VsZWN0RXZlbnR9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O09uU2VsZWN0RXZlbnQuc3RvcnlOYW1lID0gJ29uU2VsZWN0RXZlbnQnXG5cblxuXG5PblNlbGVjdEV2ZW50LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBPblNlbGVjdEV2ZW50KCkge1xcbiAgY29uc3QgY2xpY2tSZWYgPSB1c2VSZWYobnVsbClcXG5cXG4gIHVzZUVmZmVjdCgoKSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBXaGF0IElzIFRoaXM/XFxuICAgICAqIFRoaXMgaXMgdG8gcHJldmVudCBhIG1lbW9yeSBsZWFrLCBpbiB0aGUgb2ZmIGNoYW5jZSB0aGF0IHlvdVxcbiAgICAgKiB0ZWFyZG93biB5b3VyIGludGVyZmFjZSBwcmlvciB0byB0aGUgdGltZWQgbWV0aG9kIGJlaW5nIGNhbGxlZC5cXG4gICAgICovXFxuICAgIHJldHVybiAoKSA9PiB7XFxuICAgICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgfVxcbiAgfSwgW10pXFxuXFxuICBjb25zdCBvblNlbGVjdEV2ZW50ID0gdXNlQ2FsbGJhY2soKGNhbEV2ZW50KSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgKHVzZSB3aGF0IHlvdSB3YW50KSBwcmlvciB0byBmaXJpbmdcXG4gICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgKiB3b3VsZCBmaXJlLCBpbiB0aGUgZXZlbnQgb2YgYSAnZG91YmxlQ2xpY2snLiBCeSBkb2luZ1xcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcXG4gICAgICogYWN0aW9uLlxcbiAgICAgKi9cXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKGNhbEV2ZW50LCAnb25TZWxlY3RFdmVudCcpKVxcbiAgICB9LCAyNTApXFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uRG91YmxlQ2xpY2tFdmVudCA9IHVzZUNhbGxiYWNrKChjYWxFdmVudCkgPT4ge1xcbiAgICAvKipcXG4gICAgICogTm90aWNlIG91ciB1c2Ugb2YgdGhlIHNhbWUgcmVmIGFzIGFib3ZlLlxcbiAgICAgKi9cXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKGNhbEV2ZW50LCAnb25Eb3VibGVDbGlja0V2ZW50JykpXFxuICAgIH0sIDI1MClcXG4gIH0sIFtdKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25Eb3VibGVDbGlja0V2ZW50PXtvbkRvdWJsZUNsaWNrRXZlbnR9XFxuICAgICAgICBvblNlbGVjdEV2ZW50PXtvblNlbGVjdEV2ZW50fVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5PblNlbGVjdEV2ZW50LnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbnNlbGVjdHNsb3RcIlxuICAgIH19Pntgb25TZWxlY3RTbG90YH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoT2JqZWN0OiBzbG90SW5mbykgPT4gYW55YH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHJlcXVpcmVzOiBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJzZWxlY3RhYmxlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgc2VsZWN0YWJsZWB9PC9MaW5rVG8+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQSBjYWxsYmFjayBmaXJlZCB3aGVuIGEgZGF0ZSBzZWxlY3Rpb24gaXMgbWFkZS4gT25seSBmaXJlcyB3aGVuIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNlbGVjdGFibGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BzZWxlY3RhYmxlYH08L0xpbmtUbz57YCBpcyB0cnVlLmB9PC9wPlxuICAgIDxwPjxlbSBwYXJlbnROYW1lPVwicFwiPntgVGhpbmdzIFRvIEtub3c6YH08L2VtPntgIFdoZW4geW91ICdkb3VibGVDbGljaycsIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJyB3aWxsIGZpcmUuIENsaWNrIG9uIHRoZSAnc2hvd0NvZGUnIGJ1dHRvbiwgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZXhhbXBsZSBiZWxvdywgdG8gc2VlIGhvdyB5b3UgY2FuIGdldCBhcm91bmQgdGhpcyBpc3N1ZS5gfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgOyhzbG90SW5mbzoge1xuICBzdGFydDogRGF0ZSxcbiAgZW5kOiBEYXRlLFxuICBzbG90czogQXJyYXk8RGF0ZT4sXG4gIGFjdGlvbjogJ3NlbGVjdCcgfCAnY2xpY2snIHwgJ2RvdWJsZUNsaWNrJyxcbiAgcmVzb3VyY2VJZDogP251bWJlciwgLy8gb25seSBpZiB0aGUgY2FsZW5kYXIgaXMgcmVzb3VyY2Ugdmlld1xuICBib3VuZHM6ID97XG4gICAgLy8gRm9yIFwic2VsZWN0XCIgYWN0aW9uXG4gICAgeDogbnVtYmVyLFxuICAgIHk6IG51bWJlcixcbiAgICB0b3A6IG51bWJlcixcbiAgICByaWdodDogbnVtYmVyLFxuICAgIGxlZnQ6IG51bWJlcixcbiAgICBib3R0b206IG51bWJlcixcbiAgfSxcbiAgYm94OiA/e1xuICAgIC8vIEZvciBcImNsaWNrXCIgb3IgXCJkb3VibGVDbGlja1wiIGFjdGlvbnNcbiAgICBjbGllbnRYOiBudW1iZXIsXG4gICAgY2xpZW50WTogbnVtYmVyLFxuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXIsXG4gIH0sXG59KSA9PiBhbnlcbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxoMiB7Li4ue1xuICAgICAgXCJpZFwiOiBcIndoYXRzLXRoZS1kaWZmZXJlbmNlXCJcbiAgICB9fT57YFdoYXQncyBUaGUgRGlmZmVyZW5jZT9gfTwvaDI+XG4gICAgPHA+e2BIb3cgaXMgdGhpcyBkaWZmZXJlbnQgZnJvbSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1zZWxlY3RpbmdcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvblNlbGVjdGluZ2B9PC9MaW5rVG8+e2A/IFRoYXQgaXMgYSB2ZXJ5IGdvb2QgcXVlc3Rpb24uIFRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvblNlbGVjdGluZ2B9PC9pbmxpbmVDb2RlPntgIG1ldGhvZCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgVGltZSB2aWV3cyAoYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgd2Vla2B9PC9pbmxpbmVDb2RlPntgLCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B3b3JrIHdlZWtgfTwvaW5saW5lQ29kZT57YCwgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZGF5YH08L2lubGluZUNvZGU+e2ApLCB3aGVyZWFzIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uU2VsZWN0U2xvdGB9PC9pbmxpbmVDb2RlPntgIGlzIGFsc28gYXZhaWxhYmxlIGluIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2Btb250aGB9PC9pbmxpbmVDb2RlPntgIHZpZXcuIFRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvblNlbGVjdGluZ2B9PC9pbmxpbmVDb2RlPntgIG1ldGhvZCBhbGxvd3MgeW91IHRvICdjYW5jZWwnIHlvdXIgc2VsZWN0aW9uIGJ5IHJldHVybmluZyBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BmYWxzZWB9PC9pbmxpbmVDb2RlPntgLiBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25TZWxlY3RTbG90YH08L2lubGluZUNvZGU+e2AgbWV0aG9kIHJldHVybnMgYSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BzbG90SW5mb2B9PC9pbmxpbmVDb2RlPntgIG9iamVjdCwgY29udGFpbmluZyBhIGxvdCBvZiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHlvdXIgc2VsZWN0aW9uLmB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tb24tc2VsZWN0LXNsb3RcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vb25TZWxlY3RTbG90Lm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5mdW5jdGlvbiBidWlsZE1lc3NhZ2Uoc2xvdEluZm8pIHtcXG4gIHJldHVybiBgW29uU2VsZWN0U2xvdF0gYSBkYXRlIHNlbGVjdGlvbiB3YXMgbWFkZSwgcGFzc2luZyAnc2xvdEluZm8nXFxuICAke0pTT04uc3RyaW5naWZ5KHNsb3RJbmZvLCBudWxsLCAyKX1gXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBPblNlbGVjdFNsb3QoKSB7XFxuICBjb25zdCBjbGlja1JlZiA9IHVzZVJlZihudWxsKVxcblxcbiAgdXNlRWZmZWN0KCgpID0+IHtcXG4gICAgLyoqXFxuICAgICAqIFdoYXQgSXMgVGhpcz9cXG4gICAgICogVGhpcyBpcyB0byBwcmV2ZW50IGEgbWVtb3J5IGxlYWssIGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgeW91XFxuICAgICAqIHRlYXJkb3duIHlvdXIgaW50ZXJmYWNlIHByaW9yIHRvIHRoZSB0aW1lZCBtZXRob2QgYmVpbmcgY2FsbGVkLlxcbiAgICAgKi9cXG4gICAgcmV0dXJuICgpID0+IHtcXG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICB9XFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uU2VsZWN0U2xvdCA9IHVzZUNhbGxiYWNrKChzbG90SW5mbykgPT4ge1xcbiAgICAvKipcXG4gICAgICogSGVyZSB3ZSBhcmUgd2FpdGluZyAyNTAgbWlsbGlzZWNvbmRzICh1c2Ugd2hhdCB5b3Ugd2FudCkgcHJpb3IgdG8gZmlyaW5nXFxuICAgICAqIG91ciBtZXRob2QuIFdoeT8gQmVjYXVzZSBib3RoICdjbGljaycgYW5kICdkb3VibGVDbGljaydcXG4gICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcXG4gICAgICogdGhpcywgdGhlICdjbGljaycgaGFuZGxlciBpcyBvdmVycmlkZGVuIGJ5IHRoZSAnZG91YmxlQ2xpY2snXFxuICAgICAqIGFjdGlvbi5cXG4gICAgICovXFxuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIGNsaWNrUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShzbG90SW5mbykpXFxuICAgIH0sIDI1MClcXG4gIH0sIFtdKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25TZWxlY3RTbG90PXtvblNlbGVjdFNsb3R9XFxuICAgICAgICBzZWxlY3RhYmxlXFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbk9uU2VsZWN0U2xvdC5zdG9yeU5hbWUgPSAnb25TZWxlY3RTbG90J1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPblNlbGVjdFNsb3RcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MjR9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo2NX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjI0fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjY1fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9vblNlbGVjdFNsb3QubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5mdW5jdGlvbiBidWlsZE1lc3NhZ2Uoc2xvdEluZm8pIHtcbiAgcmV0dXJuIGBbb25TZWxlY3RTbG90XSBhIGRhdGUgc2VsZWN0aW9uIHdhcyBtYWRlLCBwYXNzaW5nICdzbG90SW5mbydcbiAgJHtKU09OLnN0cmluZ2lmeShzbG90SW5mbywgbnVsbCwgMil9YFxufVxuXG5leHBvcnQgY29uc3QgT25TZWxlY3RTbG90ID0gZnVuY3Rpb24gT25TZWxlY3RTbG90KCkge1xuICBjb25zdCBjbGlja1JlZiA9IHVzZVJlZihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLyoqXG4gICAgICogV2hhdCBJcyBUaGlzP1xuICAgICAqIFRoaXMgaXMgdG8gcHJldmVudCBhIG1lbW9yeSBsZWFrLCBpbiB0aGUgb2ZmIGNoYW5jZSB0aGF0IHlvdVxuICAgICAqIHRlYXJkb3duIHlvdXIgaW50ZXJmYWNlIHByaW9yIHRvIHRoZSB0aW1lZCBtZXRob2QgYmVpbmcgY2FsbGVkLlxuICAgICAqL1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3Qgb25TZWxlY3RTbG90ID0gdXNlQ2FsbGJhY2soKHNsb3RJbmZvKSA9PiB7XG4gICAgLyoqXG4gICAgICogSGVyZSB3ZSBhcmUgd2FpdGluZyAyNTAgbWlsbGlzZWNvbmRzICh1c2Ugd2hhdCB5b3Ugd2FudCkgcHJpb3IgdG8gZmlyaW5nXG4gICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xuICAgICAqIHdvdWxkIGZpcmUsIGluIHRoZSBldmVudCBvZiBhICdkb3VibGVDbGljaycuIEJ5IGRvaW5nXG4gICAgICogdGhpcywgdGhlICdjbGljaycgaGFuZGxlciBpcyBvdmVycmlkZGVuIGJ5IHRoZSAnZG91YmxlQ2xpY2snXG4gICAgICogYWN0aW9uLlxuICAgICAqL1xuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHdpbmRvdy5hbGVydChidWlsZE1lc3NhZ2Uoc2xvdEluZm8pKVxuICAgIH0sIDI1MClcbiAgfSwgW10pXG5cbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgICA8Q2FsZW5kYXJcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgICAgb25TZWxlY3RTbG90PXtvblNlbGVjdFNsb3R9XG4gICAgICAgIHNlbGVjdGFibGVcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07T25TZWxlY3RTbG90LnN0b3J5TmFtZSA9ICdvblNlbGVjdFNsb3QnXG5cblxuXG5PblNlbGVjdFNsb3QucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIE9uU2VsZWN0U2xvdCgpIHtcXG4gIGNvbnN0IGNsaWNrUmVmID0gdXNlUmVmKG51bGwpXFxuXFxuICB1c2VFZmZlY3QoKCkgPT4ge1xcbiAgICAvKipcXG4gICAgICogV2hhdCBJcyBUaGlzP1xcbiAgICAgKiBUaGlzIGlzIHRvIHByZXZlbnQgYSBtZW1vcnkgbGVhaywgaW4gdGhlIG9mZiBjaGFuY2UgdGhhdCB5b3VcXG4gICAgICogdGVhcmRvd24geW91ciBpbnRlcmZhY2UgcHJpb3IgdG8gdGhlIHRpbWVkIG1ldGhvZCBiZWluZyBjYWxsZWQuXFxuICAgICAqL1xcbiAgICByZXR1cm4gKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIH1cXG4gIH0sIFtdKVxcblxcbiAgY29uc3Qgb25TZWxlY3RTbG90ID0gdXNlQ2FsbGJhY2soKHNsb3RJbmZvKSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgKHVzZSB3aGF0IHlvdSB3YW50KSBwcmlvciB0byBmaXJpbmdcXG4gICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgKiB3b3VsZCBmaXJlLCBpbiB0aGUgZXZlbnQgb2YgYSAnZG91YmxlQ2xpY2snLiBCeSBkb2luZ1xcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcXG4gICAgICogYWN0aW9uLlxcbiAgICAgKi9cXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKHNsb3RJbmZvKSlcXG4gICAgfSwgMjUwKVxcbiAgfSwgW10pXFxuXFxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMSksIFtdKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBvblNlbGVjdFNsb3Q9e29uU2VsZWN0U2xvdH1cXG4gICAgICAgIHNlbGVjdGFibGVcXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uT25TZWxlY3RTbG90LnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbnNlbGVjdGluZ1wiXG4gICAgfX0+e2BvblNlbGVjdGluZ2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgKHJhbmdlOiBPYmplY3QgeyBzdGFydDogRGF0ZSwgZW5kOiBEYXRlLCByZXNvdXJjZUlkOiBudWxsfHN0cmluZ3xudW1iZXIgfSkgPT4gP2Jvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgcmVxdWlyZXM6IGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNlbGVjdGFibGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BzZWxlY3RhYmxlYH08L0xpbmtUbz48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BDYWxsYmFjayBmaXJlZCB3aGVuIGRyYWdnaW5nIGEgc2VsZWN0aW9uIGluIHRoZSBUaW1lIHZpZXdzLiBPbmx5IGZpcmVzIHdoZW4gYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic2VsZWN0YWJsZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YHNlbGVjdGFibGVgfTwvTGlua1RvPntgIGlzIHRydWUuYH08L3A+XG4gICAgPHA+e2BSZXR1cm5pbmcgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZmFsc2VgfTwvaW5saW5lQ29kZT57YCBmcm9tIHRoZSBoYW5kbGVyIHdpbGwgcHJldmVudCBhIHNlbGVjdGlvbi5gfTwvcD5cbiAgICA8aDIgey4uLntcbiAgICAgIFwiaWRcIjogXCJ3aGF0cy10aGUtZGlmZmVyZW5jZVwiXG4gICAgfX0+e2BXaGF0J3MgVGhlIERpZmZlcmVuY2U/YH08L2gyPlxuICAgIDxwPntgSG93IGlzIHRoaXMgZGlmZmVyZW50IGZyb20gYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwib24tc2VsZWN0LXNsb3RcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvblNlbGVjdFNsb3RgfTwvTGlua1RvPntgPyBUaGF0IGlzIGEgdmVyeSBnb29kIHF1ZXN0aW9uLiBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25TZWxlY3RpbmdgfTwvaW5saW5lQ29kZT57YCBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgaW4gdGhlIFRpbWUgdmlld3MgKGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHdlZWtgfTwvaW5saW5lQ29kZT57YCwgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgd29yayB3ZWVrYH08L2lubGluZUNvZGU+e2AsIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGRheWB9PC9pbmxpbmVDb2RlPntgKSwgd2hlcmVhcyBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvblNlbGVjdFNsb3RgfTwvaW5saW5lQ29kZT57YCBpcyBhbHNvIGF2YWlsYWJsZSBpbiB0aGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbW9udGhgfTwvaW5saW5lQ29kZT57YCB2aWV3LiBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25TZWxlY3RpbmdgfTwvaW5saW5lQ29kZT57YCBtZXRob2QgYWxsb3dzIHlvdSB0byAnY2FuY2VsJyB5b3VyIHNlbGVjdGlvbiBieSByZXR1cm5pbmcgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZmFsc2VgfTwvaW5saW5lQ29kZT57YC4gVGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uU2VsZWN0U2xvdGB9PC9pbmxpbmVDb2RlPntgIG1ldGhvZCByZXR1cm5zIGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgc2xvdEluZm9gfTwvaW5saW5lQ29kZT57YCBvYmplY3QsIGNvbnRhaW5pbmcgYSBsb3Qgb2YgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIHNlbGVjdGlvbi5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLW9uLXNlbGVjdGluZ1wiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vb25TZWxlY3RpbmcubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmZ1bmN0aW9uIGJ1aWxkTWVzc2FnZShyYW5nZSwgZXZlbnROYW1lKSB7XFxuICByZXR1cm4gYFske2V2ZW50TmFtZX1dIGEgZGF0ZSByYW5nZSBzZWxlY3Rpb24gd2FzIG1hZGUsIHBhc3Npbmc6XFxuICAke0pTT04uc3RyaW5naWZ5KHJhbmdlLCBudWxsLCAyKX1gXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBPblNlbGVjdGluZygpIHtcXG4gIGNvbnN0IGNsaWNrUmVmID0gdXNlUmVmKG51bGwpXFxuXFxuICB1c2VFZmZlY3QoKCkgPT4ge1xcbiAgICAvKipcXG4gICAgICogV2hhdCBJcyBUaGlzP1xcbiAgICAgKiBUaGlzIGlzIHRvIHByZXZlbnQgYSBtZW1vcnkgbGVhaywgaW4gdGhlIG9mZiBjaGFuY2UgdGhhdCB5b3VcXG4gICAgICogdGVhcmRvd24geW91ciBpbnRlcmZhY2UgcHJpb3IgdG8gdGhlIHRpbWVkIG1ldGhvZCBiZWluZyBjYWxsZWQuXFxuICAgICAqL1xcbiAgICByZXR1cm4gKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIH1cXG4gIH0sIFtdKVxcblxcbiAgY29uc3Qgb25TZWxlY3RTbG90ID0gdXNlQ2FsbGJhY2soKHNsb3RJbmZvKSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgKHVzZSB3aGF0IHlvdSB3YW50KSBwcmlvciB0byBmaXJpbmdcXG4gICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgKiB3b3VsZCBmaXJlLCBpbiB0aGUgZXZlbnQgb2YgYSAnZG91YmxlQ2xpY2snLiBCeSBkb2luZ1xcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcXG4gICAgICogYWN0aW9uLlxcbiAgICAgKi9cXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKHNsb3RJbmZvLCAnb25TZWxlY3RTbG90JykpXFxuICAgIH0sIDI1MClcXG4gIH0sIFtdKVxcblxcbiAgY29uc3Qgb25TZWxlY3RpbmcgPSB1c2VDYWxsYmFjaygocmFuZ2UpID0+IHtcXG4gICAgLyoqXFxuICAgICAqIEhlcmUgd2UgYXJlIHdhaXRpbmcgMjUwIG1pbGxpc2Vjb25kcyAodXNlIHdoYXQgeW91IHdhbnQpIHByaW9yIHRvIGZpcmluZ1xcbiAgICAgKiBvdXIgbWV0aG9kLiBXaHk/IEJlY2F1c2UgYm90aCAnY2xpY2snIGFuZCAnZG91YmxlQ2xpY2snXFxuICAgICAqIHdvdWxkIGZpcmUsIGluIHRoZSBldmVudCBvZiBhICdkb3VibGVDbGljaycuIEJ5IGRvaW5nXFxuICAgICAqIHRoaXMsIHRoZSAnY2xpY2snIGhhbmRsZXIgaXMgb3ZlcnJpZGRlbiBieSB0aGUgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgKiBhY3Rpb24uXFxuICAgICAqL1xcbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5hbGVydChidWlsZE1lc3NhZ2UocmFuZ2UsICdvblNlbGVjdGluZycpKVxcbiAgICB9LCAyNTApXFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25TZWxlY3Rpbmc9e29uU2VsZWN0aW5nfVxcbiAgICAgICAgb25TZWxlY3RTbG90PXtvblNlbGVjdFNsb3R9XFxuICAgICAgICBzZWxlY3RhYmxlXFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbk9uU2VsZWN0aW5nLnN0b3J5TmFtZSA9ICdvblNlbGVjdGluZydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiT25TZWxlY3RpbmdcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MjR9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo4MX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjI0fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjgxfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vb25TZWxlY3RpbmcubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5mdW5jdGlvbiBidWlsZE1lc3NhZ2UocmFuZ2UsIGV2ZW50TmFtZSkge1xuICByZXR1cm4gYFske2V2ZW50TmFtZX1dIGEgZGF0ZSByYW5nZSBzZWxlY3Rpb24gd2FzIG1hZGUsIHBhc3Npbmc6XG4gICR7SlNPTi5zdHJpbmdpZnkocmFuZ2UsIG51bGwsIDIpfWBcbn1cblxuZXhwb3J0IGNvbnN0IE9uU2VsZWN0aW5nID0gZnVuY3Rpb24gT25TZWxlY3RpbmcoKSB7XG4gIGNvbnN0IGNsaWNrUmVmID0gdXNlUmVmKG51bGwpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvKipcbiAgICAgKiBXaGF0IElzIFRoaXM/XG4gICAgICogVGhpcyBpcyB0byBwcmV2ZW50IGEgbWVtb3J5IGxlYWssIGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgeW91XG4gICAgICogdGVhcmRvd24geW91ciBpbnRlcmZhY2UgcHJpb3IgdG8gdGhlIHRpbWVkIG1ldGhvZCBiZWluZyBjYWxsZWQuXG4gICAgICovXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBvblNlbGVjdFNsb3QgPSB1c2VDYWxsYmFjaygoc2xvdEluZm8pID0+IHtcbiAgICAvKipcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgKHVzZSB3aGF0IHlvdSB3YW50KSBwcmlvciB0byBmaXJpbmdcbiAgICAgKiBvdXIgbWV0aG9kLiBXaHk/IEJlY2F1c2UgYm90aCAnY2xpY2snIGFuZCAnZG91YmxlQ2xpY2snXG4gICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcbiAgICAgKiBhY3Rpb24uXG4gICAgICovXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShzbG90SW5mbywgJ29uU2VsZWN0U2xvdCcpKVxuICAgIH0sIDI1MClcbiAgfSwgW10pXG5cbiAgY29uc3Qgb25TZWxlY3RpbmcgPSB1c2VDYWxsYmFjaygocmFuZ2UpID0+IHtcbiAgICAvKipcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgKHVzZSB3aGF0IHlvdSB3YW50KSBwcmlvciB0byBmaXJpbmdcbiAgICAgKiBvdXIgbWV0aG9kLiBXaHk/IEJlY2F1c2UgYm90aCAnY2xpY2snIGFuZCAnZG91YmxlQ2xpY2snXG4gICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcbiAgICAgKiBhY3Rpb24uXG4gICAgICovXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShyYW5nZSwgJ29uU2VsZWN0aW5nJykpXG4gICAgfSwgMjUwKVxuICB9LCBbXSlcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMSksIFtdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgICAgb25TZWxlY3Rpbmc9e29uU2VsZWN0aW5nfVxuICAgICAgICBvblNlbGVjdFNsb3Q9e29uU2VsZWN0U2xvdH1cbiAgICAgICAgc2VsZWN0YWJsZVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtPblNlbGVjdGluZy5zdG9yeU5hbWUgPSAnb25TZWxlY3RpbmcnXG5cblxuXG5PblNlbGVjdGluZy5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gT25TZWxlY3RpbmcoKSB7XFxuICBjb25zdCBjbGlja1JlZiA9IHVzZVJlZihudWxsKVxcblxcbiAgdXNlRWZmZWN0KCgpID0+IHtcXG4gICAgLyoqXFxuICAgICAqIFdoYXQgSXMgVGhpcz9cXG4gICAgICogVGhpcyBpcyB0byBwcmV2ZW50IGEgbWVtb3J5IGxlYWssIGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgeW91XFxuICAgICAqIHRlYXJkb3duIHlvdXIgaW50ZXJmYWNlIHByaW9yIHRvIHRoZSB0aW1lZCBtZXRob2QgYmVpbmcgY2FsbGVkLlxcbiAgICAgKi9cXG4gICAgcmV0dXJuICgpID0+IHtcXG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICB9XFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uU2VsZWN0U2xvdCA9IHVzZUNhbGxiYWNrKChzbG90SW5mbykgPT4ge1xcbiAgICAvKipcXG4gICAgICogSGVyZSB3ZSBhcmUgd2FpdGluZyAyNTAgbWlsbGlzZWNvbmRzICh1c2Ugd2hhdCB5b3Ugd2FudCkgcHJpb3IgdG8gZmlyaW5nXFxuICAgICAqIG91ciBtZXRob2QuIFdoeT8gQmVjYXVzZSBib3RoICdjbGljaycgYW5kICdkb3VibGVDbGljaydcXG4gICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcXG4gICAgICogdGhpcywgdGhlICdjbGljaycgaGFuZGxlciBpcyBvdmVycmlkZGVuIGJ5IHRoZSAnZG91YmxlQ2xpY2snXFxuICAgICAqIGFjdGlvbi5cXG4gICAgICovXFxuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIGNsaWNrUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShzbG90SW5mbywgJ29uU2VsZWN0U2xvdCcpKVxcbiAgICB9LCAyNTApXFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uU2VsZWN0aW5nID0gdXNlQ2FsbGJhY2soKHJhbmdlKSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgKHVzZSB3aGF0IHlvdSB3YW50KSBwcmlvciB0byBmaXJpbmdcXG4gICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgKiB3b3VsZCBmaXJlLCBpbiB0aGUgZXZlbnQgb2YgYSAnZG91YmxlQ2xpY2snLiBCeSBkb2luZ1xcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcXG4gICAgICogYWN0aW9uLlxcbiAgICAgKi9cXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKHJhbmdlLCAnb25TZWxlY3RpbmcnKSlcXG4gICAgfSwgMjUwKVxcbiAgfSwgW10pXFxuXFxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMSksIFtdKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBkZWZhdWx0Vmlldz17Vmlld3MuV0VFS31cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uU2VsZWN0aW5nPXtvblNlbGVjdGluZ31cXG4gICAgICAgIG9uU2VsZWN0U2xvdD17b25TZWxlY3RTbG90fVxcbiAgICAgICAgc2VsZWN0YWJsZVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5PblNlbGVjdGluZy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwib25zaG93bW9yZVwiXG4gICAgfX0+e2BvblNob3dNb3JlYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZXZlbnRzOiBBcnJheVtldmVudDogT2JqZWN0XSwgZGF0ZTogRGF0ZSkgPT4gYW55YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ2FsbGJhY2sgZmlyZWQgd2hlbiBhICt7Y291bnR9IG1vcmUgaXMgY2xpY2tlZC4gUmVjZWl2ZXMgYH08c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BhbGxgfTwvc3Ryb25nPntgIG9mIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BldmVudHNgfTwvaW5saW5lQ29kZT57YCBmb3IgdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGRhdGVgfTwvaW5saW5lQ29kZT57YCBvbiB3aGljaCBpdCB3YXMgc2VsZWN0ZWQuYH08L3A+XG4gICAgey8qIFJlcXVpcmVkIHdoZW4gdXNpbmcgdGhlIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJkby1zaG93LW1vcmUtZHJpbGwtZG93blwiPmRvU2hvd01vcmVEcmlsbERvd248L0xpbmtUbz4gcHJvcHMgYXMgYGZhbHNlYC4gKi99XG4gICAgPENhbnZhcyBtZHhUeXBlPVwiQ2FudmFzXCI+XG4gIDxTdG9yeSBpZD1cInByb3BzLS1vbi1zaG93LW1vcmVcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xcbmltcG9ydCBtZHggZnJvbSAnLi9vblNob3dNb3JlLm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5mdW5jdGlvbiBidWlsZE1lc3NhZ2UoY2FsRXZlbnRzLCBkYXRlKSB7XFxuICByZXR1cm4gYFtvblNob3dNb3JlXSByZWNlaXZlZCAke1xcbiAgICBjYWxFdmVudHMubGVuZ3RoXFxuICB9IGZvciAke2RhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCl9YFxcbn1cXG5cXG5leHBvcnQgZnVuY3Rpb24gT25TaG93TW9yZSgpIHtcXG4gIGNvbnN0IG9uU2hvd01vcmUgPSB1c2VDYWxsYmFjayhcXG4gICAgKGV2ZW50cywgZGF0ZSkgPT4gd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShldmVudHMsIGRhdGUpKSxcXG4gICAgW11cXG4gIClcXG5cXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uU2hvd01vcmU9e29uU2hvd01vcmV9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbk9uU2hvd01vcmUuc3RvcnlOYW1lID0gJ29uU2hvd01vcmUnXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIk9uU2hvd01vcmVcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MjV9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo0M30sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjI1fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQzfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL29uU2hvd01vcmUubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5mdW5jdGlvbiBidWlsZE1lc3NhZ2UoY2FsRXZlbnRzLCBkYXRlKSB7XG4gIHJldHVybiBgW29uU2hvd01vcmVdIHJlY2VpdmVkICR7XG4gICAgY2FsRXZlbnRzLmxlbmd0aFxuICB9IGZvciAke2RhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCl9YFxufVxuXG5leHBvcnQgY29uc3QgT25TaG93TW9yZSA9IGZ1bmN0aW9uIE9uU2hvd01vcmUoKSB7XG4gIGNvbnN0IG9uU2hvd01vcmUgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnRzLCBkYXRlKSA9PiB3aW5kb3cuYWxlcnQoYnVpbGRNZXNzYWdlKGV2ZW50cywgZGF0ZSkpLFxuICAgIFtdXG4gIClcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMSksIFtdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICBvblNob3dNb3JlPXtvblNob3dNb3JlfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtPblNob3dNb3JlLnN0b3J5TmFtZSA9ICdvblNob3dNb3JlJ1xuXG5cblxuT25TaG93TW9yZS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gT25TaG93TW9yZSgpIHtcXG4gIGNvbnN0IG9uU2hvd01vcmUgPSB1c2VDYWxsYmFjayhcXG4gICAgKGV2ZW50cywgZGF0ZSkgPT4gd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShldmVudHMsIGRhdGUpKSxcXG4gICAgW11cXG4gIClcXG5cXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uU2hvd01vcmU9e29uU2hvd01vcmV9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLk9uU2hvd01vcmUucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9udmlld1wiXG4gICAgfX0+e2BvblZpZXdgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogJ2Z1bmN0aW9uJ2B9PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGNvbnRyb2xzOiBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJ2aWV3XCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgdmlld2B9PC9MaW5rVG8+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGV4YW1wbGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2AobmV3VmlldykgPT4gc2V0VmlldyhuZXdWaWV3KWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHZpZXdgfTwvaW5saW5lQ29kZT57YCB2YWx1ZSBjaGFuZ2VzLiBXaGVuIGluY2x1ZGVkIGl0IGlzIHVzZWQgdG8gJ2NvbnRyb2wnIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJ2aWV3XCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgdmlld2B9PC9MaW5rVG8+e2AgcHJvcCB2YWx1ZS5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLW9uLXZpZXdcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL29uVmlldy5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIE9uVmlldygpIHtcXG4gIGNvbnN0IFtkYXRlLCBzZXREYXRlXSA9IHVzZVN0YXRlKG5ldyBEYXRlKDIwMTUsIDMsIDEpKVxcbiAgY29uc3QgW3ZpZXcsIHNldFZpZXddID0gdXNlU3RhdGUoVmlld3MuV0VFSylcXG5cXG4gIGNvbnN0IG9uTmF2aWdhdGUgPSB1c2VDYWxsYmFjaygobmV3RGF0ZSkgPT4gc2V0RGF0ZShuZXdEYXRlKSwgW3NldERhdGVdKVxcbiAgY29uc3Qgb25WaWV3ID0gdXNlQ2FsbGJhY2soKG5ld1ZpZXcpID0+IHNldFZpZXcobmV3VmlldyksIFtzZXRWaWV3XSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGF0ZT17ZGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XFxuICAgICAgICBvblZpZXc9e29uVmlld31cXG4gICAgICAgIHZpZXc9e3ZpZXd9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbk9uVmlldy5zdG9yeU5hbWUgPSAnb25WaWV3J1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJPblZpZXdcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozOH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM4fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vb25WaWV3Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IE9uVmlldyA9IGZ1bmN0aW9uIE9uVmlldygpIHtcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMSkpXG4gIGNvbnN0IFt2aWV3LCBzZXRWaWV3XSA9IHVzZVN0YXRlKFZpZXdzLldFRUspXG5cbiAgY29uc3Qgb25OYXZpZ2F0ZSA9IHVzZUNhbGxiYWNrKChuZXdEYXRlKSA9PiBzZXREYXRlKG5ld0RhdGUpLCBbc2V0RGF0ZV0pXG4gIGNvbnN0IG9uVmlldyA9IHVzZUNhbGxiYWNrKChuZXdWaWV3KSA9PiBzZXRWaWV3KG5ld1ZpZXcpLCBbc2V0Vmlld10pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRhdGU9e2RhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICBvbk5hdmlnYXRlPXtvbk5hdmlnYXRlfVxuICAgICAgICBvblZpZXc9e29uVmlld31cbiAgICAgICAgdmlldz17dmlld31cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07T25WaWV3LnN0b3J5TmFtZSA9ICdvblZpZXcnXG5cblxuXG5PblZpZXcucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIE9uVmlldygpIHtcXG4gIGNvbnN0IFtkYXRlLCBzZXREYXRlXSA9IHVzZVN0YXRlKG5ldyBEYXRlKDIwMTUsIDMsIDEpKVxcbiAgY29uc3QgW3ZpZXcsIHNldFZpZXddID0gdXNlU3RhdGUoVmlld3MuV0VFSylcXG5cXG4gIGNvbnN0IG9uTmF2aWdhdGUgPSB1c2VDYWxsYmFjaygobmV3RGF0ZSkgPT4gc2V0RGF0ZShuZXdEYXRlKSwgW3NldERhdGVdKVxcbiAgY29uc3Qgb25WaWV3ID0gdXNlQ2FsbGJhY2soKG5ld1ZpZXcpID0+IHNldFZpZXcobmV3VmlldyksIFtzZXRWaWV3XSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGF0ZT17ZGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uTmF2aWdhdGU9e29uTmF2aWdhdGV9XFxuICAgICAgICBvblZpZXc9e29uVmlld31cXG4gICAgICAgIHZpZXc9e3ZpZXd9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLk9uVmlldy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwicG9wdXBcIlxuICAgIH19PntgcG9wdXBgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHRydWVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BTaG93IHRydW5jYXRlZCBldmVudHMgaW4gYW4gb3ZlcmxheSB3aGVuIHlvdSBjbGljayB0aGUgXCIrYH08ZW0gcGFyZW50TmFtZT1cInBcIj57YHhgfTwvZW0+e2AgbW9yZVwiIGxpbmsuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLXBvcHVwXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3BvcHVwLm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHREYXRlOiB7XFxuICAgICAgY29udHJvbDoge1xcbiAgICAgICAgdHlwZTogbnVsbCxcXG4gICAgICB9LFxcbiAgICB9LFxcbiAgICBwb3B1cDogJ2Jvb2xlYW4nLFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IFBvcHVwID0gVGVtcGxhdGUuYmluZCh7fSlcXG5Qb3B1cC5zdG9yeU5hbWUgPSAncG9wdXAnXFxuUG9wdXAuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxuICBwb3B1cDogdHJ1ZSxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIlBvcHVwXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyOX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMzfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjMzfX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9wb3B1cC5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcG9wdXA6ICdib29sZWFuJyxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IFBvcHVwID0gVGVtcGxhdGUuYmluZCh7fSk7UG9wdXAuc3RvcnlOYW1lID0gJ3BvcHVwJ1xuUG9wdXAuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG4gIHBvcHVwOiB0cnVlLFxufVxuXG5cblxuUG9wdXAucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVwiIH0sIC4uLlBvcHVwLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJwb3B1cG9mZnNldFwiXG4gICAgfX0+e2Bwb3B1cE9mZnNldGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbnVtYmVyfHNoYXBlIHt4OiBudW1iZXIsIHk6IG51bWJlcn1gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BEaXN0YW5jZSBpbiBwaXhlbHMsIGZyb20gdGhlIGVkZ2VzIG9mIHRoZSB2aWV3cG9ydCwgdGhlIFwic2hvdyBtb3JlXCIgb3ZlcmxheSBzaG91bGQgYmUgcG9zaXRpb25lZC5gfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tcG9wdXAtb2Zmc2V0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3BvcHVwT2Zmc2V0Lm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHREYXRlOiB7XFxuICAgICAgY29udHJvbDoge1xcbiAgICAgICAgdHlwZTogbnVsbCxcXG4gICAgICB9LFxcbiAgICB9LFxcbiAgICBwb3B1cDogJ2Jvb2xlYW4nLFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IFBvcHVwT2Zmc2V0ID0gVGVtcGxhdGUuYmluZCh7fSlcXG5Qb3B1cE9mZnNldC5zdG9yeU5hbWUgPSAncG9wdXBPZmZzZXQnXFxuUG9wdXBPZmZzZXQuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxuICBwb3B1cDogdHJ1ZSxcXG4gIHBvcHVwT2Zmc2V0OiB7IHg6IDMwLCB5OiAyMCB9LFxcbn1cXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiUG9wdXBPZmZzZXRcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjI5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MzN9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6Mjl9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MzN9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IENhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL3BvcHVwT2Zmc2V0Lm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBwb3B1cDogJ2Jvb2xlYW4nLFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgUG9wdXBPZmZzZXQgPSBUZW1wbGF0ZS5iaW5kKHt9KTtQb3B1cE9mZnNldC5zdG9yeU5hbWUgPSAncG9wdXBPZmZzZXQnXG5Qb3B1cE9mZnNldC5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxuICBldmVudHM6IGRlbW9FdmVudHMsXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcbiAgcG9wdXA6IHRydWUsXG4gIHBvcHVwT2Zmc2V0OiB7IHg6IDMwLCB5OiAyMCB9LFxufVxuXG5cblxuUG9wdXBPZmZzZXQucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVwiIH0sIC4uLlBvcHVwT2Zmc2V0LnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJyZXNvdXJjZWlkYWNjZXNzb3JcIlxuICAgIH19PntgcmVzb3VyY2VJZEFjY2Vzc29yYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmcgfCBmdW5jdGlvbiAocmVzb3VyY2U6IE9iamVjdCkgPT4gc3RyaW5nIHwgbnVtYmVyIC8vIG11c3QgYmUgdW5pcXVlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgUHJvdmlkZXMgYSB1bmlxdWUgaWRlbnRpZmllciwgb3IgYW4gYXJyYXkgb2YgdW5pcXVlIGlkZW50aWZpZXJzLCBmb3IgZWFjaCByZXNvdXJjZSBpbiB0aGUgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwicmVzb3VyY2VzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgcmVzb3VyY2VzYH08L0xpbmtUbz57YCBhcnJheWB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS1yZXNvdXJjZS1pZC1hY2Nlc3NvclwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IHsgcmVzb3VyY2VBY2Nlc3NvclN0b3J5QXJncyB9IGZyb20gJy4vc3RvcnlEZWZhdWx0cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vcmVzb3VyY2VJZEFjY2Vzc29yLm1keCdcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHREYXRlOiB7XFxuICAgICAgY29udHJvbDoge1xcbiAgICAgICAgdHlwZTogbnVsbCxcXG4gICAgICB9LFxcbiAgICB9LFxcbiAgICBkZWZhdWx0Vmlldzoge1xcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6IG51bGwsXFxuICAgICAgfSxcXG4gICAgfSxcXG4gIH0sXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVxcblxcbmV4cG9ydCBjb25zdCBSZXNvdXJjZUlkQWNjZXNzb3IgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcblJlc291cmNlSWRBY2Nlc3Nvci5zdG9yeU5hbWUgPSAncmVzb3VyY2VJZEFjY2Vzc29yJ1xcblJlc291cmNlSWRBY2Nlc3Nvci5hcmdzID0gcmVzb3VyY2VBY2Nlc3NvclN0b3J5QXJnc1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJSZXNvdXJjZUlkQWNjZXNzb3JcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6MzR9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzB9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6MzR9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCB7IHJlc291cmNlQWNjZXNzb3JTdG9yeUFyZ3MgfSBmcm9tICcuL3N0b3J5RGVmYXVsdHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vcmVzb3VyY2VJZEFjY2Vzc29yLm1keCdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgYXJnVHlwZXM6IHtcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBkZWZhdWx0RGF0ZToge1xuICAgICAgY29udHJvbDoge1xuICAgICAgICB0eXBlOiBudWxsLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWaWV3OiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cbiAgPC9kaXY+XG4pXG5cbmV4cG9ydCBjb25zdCBSZXNvdXJjZUlkQWNjZXNzb3IgPSBUZW1wbGF0ZS5iaW5kKHt9KTtSZXNvdXJjZUlkQWNjZXNzb3Iuc3RvcnlOYW1lID0gJ3Jlc291cmNlSWRBY2Nlc3NvcidcblJlc291cmNlSWRBY2Nlc3Nvci5hcmdzID0gcmVzb3VyY2VBY2Nlc3NvclN0b3J5QXJnc1xuXG5cblxuUmVzb3VyY2VJZEFjY2Vzc29yLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5SZXNvdXJjZUlkQWNjZXNzb3IucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcInJlc291cmNldGl0bGVhY2Nlc3NvclwiXG4gICAgfX0+e2ByZXNvdXJjZVRpdGxlQWNjZXNzb3JgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0cmluZyB8IGZ1bmN0aW9uIChyZXNvdXJjZTogT2JqZWN0KSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BQcm92aWRlcyBhIGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIHRoZSByZXNvdXJjZSBvYmplY3QsIHVzZWQgaW4gaGVhZGVycy5gfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tcmVzb3VyY2UtdGl0bGUtYWNjZXNzb3JcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCB7IHJlc291cmNlQWNjZXNzb3JTdG9yeUFyZ3MgfSBmcm9tICcuL3N0b3J5RGVmYXVsdHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3Jlc291cmNlVGl0bGVBY2Nlc3Nvci5tZHgnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZToge1xcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6IG51bGwsXFxuICAgICAgfSxcXG4gICAgfSxcXG4gICAgZGVmYXVsdFZpZXc6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgUmVzb3VyY2VUaXRsZUFjY2Vzc29yID0gVGVtcGxhdGUuYmluZCh7fSlcXG5SZXNvdXJjZVRpdGxlQWNjZXNzb3Iuc3RvcnlOYW1lID0gJ3Jlc291cmNlVGl0bGVBY2Nlc3NvcidcXG5SZXNvdXJjZVRpdGxlQWNjZXNzb3IuYXJncyA9IHJlc291cmNlQWNjZXNzb3JTdG9yeUFyZ3NcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiUmVzb3VyY2VUaXRsZUFjY2Vzc29yXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMH0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM0fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjMwfSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM0fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgeyByZXNvdXJjZUFjY2Vzc29yU3RvcnlBcmdzIH0gZnJvbSAnLi9zdG9yeURlZmF1bHRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL3Jlc291cmNlVGl0bGVBY2Nlc3Nvci5tZHgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0Vmlldzoge1xuICAgICAgY29udHJvbDoge1xuICAgICAgICB0eXBlOiBudWxsLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgUmVzb3VyY2VUaXRsZUFjY2Vzc29yID0gVGVtcGxhdGUuYmluZCh7fSk7UmVzb3VyY2VUaXRsZUFjY2Vzc29yLnN0b3J5TmFtZSA9ICdyZXNvdXJjZVRpdGxlQWNjZXNzb3InXG5SZXNvdXJjZVRpdGxlQWNjZXNzb3IuYXJncyA9IHJlc291cmNlQWNjZXNzb3JTdG9yeUFyZ3NcblxuXG5cblJlc291cmNlVGl0bGVBY2Nlc3Nvci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uUmVzb3VyY2VUaXRsZUFjY2Vzc29yLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJyZXNvdXJjZXNcIlxuICAgIH19PntgcmVzb3VyY2VzYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BhcnJheU9mKFJlc291cmNlKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEFuIGFycmF5IG9mIHJlc291cmNlIG9iamVjdHMgdGhhdCBtYXAgZXZlbnRzIHRvIGEgc3BlY2lmaWMgcmVzb3VyY2UuIFJlc291cmNlIG9iamVjdHMsIGxpa2UgZXZlbnRzLCBjYW4gYmUgYW55IHNoYXBlIG9yIGhhdmUgYW55IHByb3BlcnRpZXMsIGJ1dCBzaG91bGQgYmUgdW5pcXVseSBpZGVudGlmaWFibGUgdmlhIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJyZXNvdXJjZS1pZC1hY2Nlc3NvclwiIG1keFR5cGU9XCJMaW5rVG9cIj57YHJlc291cmNlSWRBY2Nlc3NvcmB9PC9MaW5rVG8+e2AsIGFzIHdlbGwgYXMgYSBcInRpdGxlXCIgb3IgbmFtZSBhcyBwcm92aWRlZCBieSB0aGUgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwicmVzb3VyY2UtdGl0bGUtYWNjZXNzb3JcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2ByZXNvdXJjZVRpdGxlQWNjZXNzb3JgfTwvTGlua1RvPntgIHByb3AuYH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YFJlc291cmNlIHtcbiAgaWQ6IHN0cmluZyB8IG51bWJlciwgLy8gbXVzdCBiZSB1bmlxdWVcbiAgdGl0bGU6IHN0cmluZ1xufVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLXJlc291cmNlc1wiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IHJlc291cmNlRGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvcmVzb3VyY2VFdmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3Jlc291cmNlcy5tZHgnXFxuXFxuY29uc3QgeyBldmVudHM6IHJlc291cmNlRXZlbnRzLCBsaXN0OiByZXNvdXJjZXMgfSA9IHJlc291cmNlRGF0YVxcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICAgIGRlZmF1bHRWaWV3OiB7XFxuICAgICAgY29udHJvbDoge1xcbiAgICAgICAgdHlwZTogbnVsbCxcXG4gICAgICB9LFxcbiAgICB9LFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IFJlc291cmNlcyA9IFRlbXBsYXRlLmJpbmQoe30pXFxuUmVzb3VyY2VzLnN0b3J5TmFtZSA9ICdyZXNvdXJjZXMnXFxuUmVzb3VyY2VzLmFyZ3MgPSB7XFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgNCksXFxuICBkZWZhdWx0VmlldzogVmlld3MuREFZLFxcbiAgZXZlbnRzOiByZXNvdXJjZUV2ZW50cyxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG4gIHJlc291cmNlcyxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIlJlc291cmNlc1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzV9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozOX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozNX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozOX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgcmVzb3VyY2VEYXRhIGZyb20gJy4uL3Jlc291cmNlcy9yZXNvdXJjZUV2ZW50cydcbmltcG9ydCBtZHggZnJvbSAnLi9yZXNvdXJjZXMubWR4J1xuXG5jb25zdCB7IGV2ZW50czogcmVzb3VyY2VFdmVudHMsIGxpc3Q6IHJlc291cmNlcyB9ID0gcmVzb3VyY2VEYXRhXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZpZXc6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IFJlc291cmNlcyA9IFRlbXBsYXRlLmJpbmQoe30pO1Jlc291cmNlcy5zdG9yeU5hbWUgPSAncmVzb3VyY2VzJ1xuUmVzb3VyY2VzLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCA0KSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcbiAgZXZlbnRzOiByZXNvdXJjZUV2ZW50cyxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxuICByZXNvdXJjZXMsXG59XG5cblxuXG5SZXNvdXJjZXMucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcIihhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVwiIH0sIC4uLlJlc291cmNlcy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwicnRsXCJcbiAgICB9fT57YHJ0bGB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZmFsc2VgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BTd2l0Y2ggdGhlIGNhbGVuZGFyIHRvIGEgcmlnaHQtdG8tbGVmdCByZWFkIGRpcmVjdGlvbi4gQmVzdCBpZiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggeW91ciBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJsb2NhbGl6ZXJcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2Bsb2NhbGl6ZXJgfTwvTGlua1RvPntgIGFuZCBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJtZXNzYWdlc1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YG1lc3NhZ2VzYH08L0xpbmtUbz57YCBwcm9wcy5gfTwvcD5cbiAgICA8cD57YFNlZSB0aGUgYH08TGlua1RvIGtpbmQ9XCJleGFtcGxlc1wiIHN0b3J5PVwiZXhhbXBsZS01XCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgTG9jYWxpemF0aW9uIEV4YW1wbGVgfTwvTGlua1RvPntgIGZvciBhbm90aGVyIGV4YW1wbGUgb2YgY29tYmluaW5nIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHJ0bGB9PC9pbmxpbmVDb2RlPntgLCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2Bsb2NhbGl6ZXJgfTwvaW5saW5lQ29kZT57YCwgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgY3VsdHVyZWB9PC9pbmxpbmVDb2RlPntgIGFuZCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BtZXNzYWdlc2B9PC9pbmxpbmVDb2RlPntgLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS1yaWdodC10by1sZWZ0XCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3J0bC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZToge1xcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6IG51bGwsXFxuICAgICAgfSxcXG4gICAgfSxcXG4gICAgcnRsOiAnYm9vbGVhbicsXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuLy8gVE9ETzogbG9jYWxpemUgZXhhbXBsZSBmb3IgQXJhYmljXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgUmlnaHRUb0xlZnQgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcblJpZ2h0VG9MZWZ0LnN0b3J5TmFtZSA9ICdydGwnXFxuUmlnaHRUb0xlZnQuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxuICBydGw6IHRydWUsXFxuICBtZXNzYWdlczoge1xcbiAgICB3ZWVrOiAn2KPYs9io2YjYuScsXFxuICAgIHdvcmtfd2VlazogJ9ij2LPYqNmI2Lkg2KfZhNi52YXZhCcsXFxuICAgIGRheTogJ9mK2YjZhScsXFxuICAgIG1vbnRoOiAn2LTZh9ixJyxcXG4gICAgcHJldmlvdXM6ICfYs9in2KjZgicsXFxuICAgIG5leHQ6ICfYp9mE2KrYp9mE2YonLFxcbiAgICB0b2RheTogJ9in2YTZitmI2YUnLFxcbiAgICBhZ2VuZGE6ICfYrNiv2YjZhCDYo9i52YXYp9mEJyxcXG5cXG4gICAgc2hvd01vcmU6ICh0b3RhbCkgPT4gYCske3RvdGFsfSDYpdi22KfZgdmKYCxcXG4gIH0sXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJSaWdodFRvTGVmdFwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzB9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozNH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozMH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozNH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vcnRsLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIGFyZ1R5cGVzOiB7XG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZXZlbnRzOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdERhdGU6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBydGw6ICdib29sZWFuJyxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG4vLyBUT0RPOiBsb2NhbGl6ZSBleGFtcGxlIGZvciBBcmFiaWNcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgUmlnaHRUb0xlZnQgPSBUZW1wbGF0ZS5iaW5kKHt9KTtSaWdodFRvTGVmdC5zdG9yeU5hbWUgPSAncnRsJ1xuUmlnaHRUb0xlZnQuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG4gIHJ0bDogdHJ1ZSxcbiAgbWVzc2FnZXM6IHtcbiAgICB3ZWVrOiAn2KPYs9io2YjYuScsXG4gICAgd29ya193ZWVrOiAn2KPYs9io2YjYuSDYp9mE2LnZhdmEJyxcbiAgICBkYXk6ICfZitmI2YUnLFxuICAgIG1vbnRoOiAn2LTZh9ixJyxcbiAgICBwcmV2aW91czogJ9iz2KfYqNmCJyxcbiAgICBuZXh0OiAn2KfZhNiq2KfZhNmKJyxcbiAgICB0b2RheTogJ9in2YTZitmI2YUnLFxuICAgIGFnZW5kYTogJ9is2K/ZiNmEINij2LnZhdin2YQnLFxuXG4gICAgc2hvd01vcmU6ICh0b3RhbCkgPT4gYCske3RvdGFsfSDYpdi22KfZgdmKYCxcbiAgfSxcbn1cblxuXG5cblJpZ2h0VG9MZWZ0LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5SaWdodFRvTGVmdC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwic2Nyb2xsdG90aW1lXCJcbiAgICB9fT57YHNjcm9sbFRvVGltZWB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgaW5zdGFuY2VPZihEYXRlKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbmV3IERhdGUoKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERldGVybWluZXMgaG93IGZhciBkb3duIHRoZSBzY3JvbGwgcGFuZSBpcyBpbml0aWFsbHkgc2Nyb2xsZWQgZG93bi5gfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tc2Nyb2xsLXRvLXRpbWVcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3Njcm9sbFRvVGltZS5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHREYXRlOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGRlZmF1bHRWaWV3OiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBzY3JvbGxUb1RpbWU6IHsgY29udHJvbDogeyB0eXBlOiAnZGF0ZScgfSB9LFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IFNjcm9sbFRvVGltZSA9IFRlbXBsYXRlLmJpbmQoe30pXFxuU2Nyb2xsVG9UaW1lLnN0b3J5TmFtZSA9ICdzY3JvbGxUb1RpbWUnXFxuU2Nyb2xsVG9UaW1lLmFyZ3MgPSB7XFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxuICBzY3JvbGxUb1RpbWU6IG5ldyBEYXRlKDE5NzIsIDAsIDEsIDIyKSxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIlNjcm9sbFRvVGltZVwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjZ9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozMH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNn0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozMH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL3Njcm9sbFRvVGltZS5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdFZpZXc6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBzY3JvbGxUb1RpbWU6IHsgY29udHJvbDogeyB0eXBlOiAnZGF0ZScgfSB9LFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgU2Nyb2xsVG9UaW1lID0gVGVtcGxhdGUuYmluZCh7fSk7U2Nyb2xsVG9UaW1lLnN0b3J5TmFtZSA9ICdzY3JvbGxUb1RpbWUnXG5TY3JvbGxUb1RpbWUuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxuICBzY3JvbGxUb1RpbWU6IG5ldyBEYXRlKDE5NzIsIDAsIDEsIDIyKSxcbn1cblxuXG5cblNjcm9sbFRvVGltZS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uU2Nyb2xsVG9UaW1lLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJzZWxlY3RhYmxlXCJcbiAgICB9fT57YHNlbGVjdGFibGVgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGJvb2xlYW4gfCAnaWdub3JlRXZlbnRzJ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEFsbG93cyBtb3VzZSBzZWxlY3Rpb24gb2YgcmFuZ2VzIG9mIGRhdGVzL3RpbWVzLmB9PC9wPlxuICAgIDxwPntgVGhlICdpZ25vcmVFdmVudHMnIG9wdGlvbiBwcmV2ZW50cyBzZWxlY3Rpb24gY29kZSBmcm9tIHJ1bm5pbmcgd2hlbiBhIGRyYWcgYmVnaW5zIG92ZXIgYW4gZXZlbnQuIFVzZWZ1bCB3aGVuIHlvdSB3YW50IGN1c3RvbSBldmVudCBjbGljayBvciBkcmFnIGxvZ2ljYH08L3A+XG4gICAgPENhbnZhcyBtZHhUeXBlPVwiQ2FudmFzXCI+XG4gIDxTdG9yeSBpZD1cInByb3BzLS1zZWxlY3RhYmxlXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3NlbGVjdGFibGUubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmZ1bmN0aW9uIGJ1aWxkTWVzc2FnZShzbG90SW5mbykge1xcbiAgcmV0dXJuIGBbb25TZWxlY3RTbG90XSBhIGRhdGUgc2VsZWN0aW9uIHdhcyBtYWRlLCBwYXNzaW5nICdzbG90SW5mbydcXG4gICR7SlNPTi5zdHJpbmdpZnkoc2xvdEluZm8sIG51bGwsIDIpfWBcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIFNlbGVjdGFibGUoKSB7XFxuICBjb25zdCBjbGlja1JlZiA9IHVzZVJlZihudWxsKVxcblxcbiAgdXNlRWZmZWN0KCgpID0+IHtcXG4gICAgLyoqXFxuICAgICAqIFdoYXQgSXMgVGhpcz9cXG4gICAgICogVGhpcyBpcyB0byBwcmV2ZW50IGEgbWVtb3J5IGxlYWssIGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgeW91XFxuICAgICAqIHRlYXJkb3duIHlvdXIgaW50ZXJmYWNlIHByaW9yIHRvIHRoZSB0aW1lZCBtZXRob2QgYmVpbmcgY2FsbGVkLlxcbiAgICAgKi9cXG4gICAgcmV0dXJuICgpID0+IHtcXG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICB9XFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uU2VsZWN0U2xvdCA9IHVzZUNhbGxiYWNrKChzbG90SW5mbykgPT4ge1xcbiAgICAvKipcXG4gICAgICogSGVyZSB3ZSBhcmUgd2FpdGluZyAyNTAgbWlsbGlzZWNvbmRzIHByaW9yIHRvIGZpcmluZ1xcbiAgICAgKiBvdXIgbWV0aG9kLiBXaHk/IEJlY2F1c2UgYm90aCAnY2xpY2snIGFuZCAnZG91YmxlQ2xpY2snXFxuICAgICAqIHdvdWxkIGZpcmUsIGluIHRoZSBldmVudCBvZiBhICdkb3VibGVDbGljaycuIEJ5IGRvaW5nXFxuICAgICAqIHRoaXMsIHRoZSAnY2xpY2snIGhhbmRsZXIgaXMgb3ZlcnJpZGRlbiBieSB0aGUgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgKiBhY3Rpb24uXFxuICAgICAqL1xcbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5hbGVydChidWlsZE1lc3NhZ2Uoc2xvdEluZm8pKVxcbiAgICB9LCAyNTApXFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uU2VsZWN0U2xvdD17b25TZWxlY3RTbG90fVxcbiAgICAgICAgc2VsZWN0YWJsZVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5TZWxlY3RhYmxlLnN0b3J5TmFtZSA9ICdzZWxlY3RhYmxlJ1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJTZWxlY3RhYmxlXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjI0fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NjV9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoyNH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo2NX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vc2VsZWN0YWJsZS5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmZ1bmN0aW9uIGJ1aWxkTWVzc2FnZShzbG90SW5mbykge1xuICByZXR1cm4gYFtvblNlbGVjdFNsb3RdIGEgZGF0ZSBzZWxlY3Rpb24gd2FzIG1hZGUsIHBhc3NpbmcgJ3Nsb3RJbmZvJ1xuICAke0pTT04uc3RyaW5naWZ5KHNsb3RJbmZvLCBudWxsLCAyKX1gXG59XG5cbmV4cG9ydCBjb25zdCBTZWxlY3RhYmxlID0gZnVuY3Rpb24gU2VsZWN0YWJsZSgpIHtcbiAgY29uc3QgY2xpY2tSZWYgPSB1c2VSZWYobnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8qKlxuICAgICAqIFdoYXQgSXMgVGhpcz9cbiAgICAgKiBUaGlzIGlzIHRvIHByZXZlbnQgYSBtZW1vcnkgbGVhaywgaW4gdGhlIG9mZiBjaGFuY2UgdGhhdCB5b3VcbiAgICAgKiB0ZWFyZG93biB5b3VyIGludGVyZmFjZSBwcmlvciB0byB0aGUgdGltZWQgbWV0aG9kIGJlaW5nIGNhbGxlZC5cbiAgICAgKi9cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9uU2VsZWN0U2xvdCA9IHVzZUNhbGxiYWNrKChzbG90SW5mbykgPT4ge1xuICAgIC8qKlxuICAgICAqIEhlcmUgd2UgYXJlIHdhaXRpbmcgMjUwIG1pbGxpc2Vjb25kcyBwcmlvciB0byBmaXJpbmdcbiAgICAgKiBvdXIgbWV0aG9kLiBXaHk/IEJlY2F1c2UgYm90aCAnY2xpY2snIGFuZCAnZG91YmxlQ2xpY2snXG4gICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcbiAgICAgKiB0aGlzLCB0aGUgJ2NsaWNrJyBoYW5kbGVyIGlzIG92ZXJyaWRkZW4gYnkgdGhlICdkb3VibGVDbGljaydcbiAgICAgKiBhY3Rpb24uXG4gICAgICovXG4gICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcbiAgICBjbGlja1JlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShzbG90SW5mbykpXG4gICAgfSwgMjUwKVxuICB9LCBbXSlcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMSksIFtdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICBvblNlbGVjdFNsb3Q9e29uU2VsZWN0U2xvdH1cbiAgICAgICAgc2VsZWN0YWJsZVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKVxufTtTZWxlY3RhYmxlLnN0b3J5TmFtZSA9ICdzZWxlY3RhYmxlJ1xuXG5cblxuU2VsZWN0YWJsZS5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiZnVuY3Rpb24gU2VsZWN0YWJsZSgpIHtcXG4gIGNvbnN0IGNsaWNrUmVmID0gdXNlUmVmKG51bGwpXFxuXFxuICB1c2VFZmZlY3QoKCkgPT4ge1xcbiAgICAvKipcXG4gICAgICogV2hhdCBJcyBUaGlzP1xcbiAgICAgKiBUaGlzIGlzIHRvIHByZXZlbnQgYSBtZW1vcnkgbGVhaywgaW4gdGhlIG9mZiBjaGFuY2UgdGhhdCB5b3VcXG4gICAgICogdGVhcmRvd24geW91ciBpbnRlcmZhY2UgcHJpb3IgdG8gdGhlIHRpbWVkIG1ldGhvZCBiZWluZyBjYWxsZWQuXFxuICAgICAqL1xcbiAgICByZXR1cm4gKCkgPT4ge1xcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIH1cXG4gIH0sIFtdKVxcblxcbiAgY29uc3Qgb25TZWxlY3RTbG90ID0gdXNlQ2FsbGJhY2soKHNsb3RJbmZvKSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBIZXJlIHdlIGFyZSB3YWl0aW5nIDI1MCBtaWxsaXNlY29uZHMgcHJpb3IgdG8gZmlyaW5nXFxuICAgICAqIG91ciBtZXRob2QuIFdoeT8gQmVjYXVzZSBib3RoICdjbGljaycgYW5kICdkb3VibGVDbGljaydcXG4gICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcXG4gICAgICogdGhpcywgdGhlICdjbGljaycgaGFuZGxlciBpcyBvdmVycmlkZGVuIGJ5IHRoZSAnZG91YmxlQ2xpY2snXFxuICAgICAqIGFjdGlvbi5cXG4gICAgICovXFxuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgIGNsaWNrUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgd2luZG93LmFsZXJ0KGJ1aWxkTWVzc2FnZShzbG90SW5mbykpXFxuICAgIH0sIDI1MClcXG4gIH0sIFtdKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25TZWxlY3RTbG90PXtvblNlbGVjdFNsb3R9XFxuICAgICAgICBzZWxlY3RhYmxlXFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLlNlbGVjdGFibGUucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcInNlbGVjdGVkXCJcbiAgICB9fT57YHNlbGVjdGVkYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BFdmVudDogT2JqZWN0YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIHNlbGVjdGVkIGV2ZW50LCBpZiBhbnkuIEJ5IGRlZmF1bHQsIEJpZyBDYWxlbmRhciAnY29udHJvbHMnIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BzZWxlY3RlZGB9PC9pbmxpbmVDb2RlPntgIChoaWdobGlnaHRlZCkgZXZlbnQgaW4gdGhlIGRpc3BsYXkuIFlvdSBjYW4gdXNlIHRoaXMgcHJvcCB0byBjb250cm9sIHdoaWNoIGV2ZW50IGlzIGhpZ2hsaWdodGVkLiBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgc2VsZWN0ZWRgfTwvaW5saW5lQ29kZT57YCBldmVudCBtdXN0IGJlIGEgb2JqZWN0IHJlZmVyZW5jZSB0byB0aGUgZXZlbnQgd2l0aGluIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJldmVudHNcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BldmVudHNgfTwvTGlua1RvPntgIGFycmF5LmB9PC9wPlxuICAgIDxwPntgT2Z0ZW4gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLXNlbGVjdC1ldmVudFwiIG1keFR5cGU9XCJMaW5rVG9cIj57YE9uU2VsZWN0RXZlbnRgfTwvTGlua1RvPntgIGFuZC9vciBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1kb3VibGUtY2xpY2stZXZlbnRcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvbkRvdWJsZUNsaWNrRXZlbnRgfTwvTGlua1RvPntgLmB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tc2VsZWN0ZWRcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3NlbGVjdGVkLm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5leHBvcnQgZnVuY3Rpb24gU2VsZWN0ZWQoKSB7XFxuICBjb25zdCBbc2VsZWN0ZWQsIHNldFNlbGVjdGVkXSA9IHVzZVN0YXRlKCgpID0+IHtcXG4gICAgLy8gbGV0J3MgbWFrZSBhbiBpbml0aWFsIHNlbGVjdGlvblxcbiAgICByZXR1cm4gZGVtb0V2ZW50cy5maW5kKFxcbiAgICAgIChldmVudCkgPT4gZXZlbnQudGl0bGUgPT09ICdJdGFld29uIEhhbGxvd2VlbiBNZWV0aW5nJ1xcbiAgICApXFxuICB9KVxcbiAgY29uc3QgY2xpY2tSZWYgPSB1c2VSZWYobnVsbClcXG5cXG4gIHVzZUVmZmVjdCgoKSA9PiB7XFxuICAgIC8qKlxcbiAgICAgKiBXaGF0IElzIFRoaXM/XFxuICAgICAqIFRoaXMgaXMgdG8gcHJldmVudCBhIG1lbW9yeSBsZWFrLCBpbiB0aGUgb2ZmIGNoYW5jZSB0aGF0IHlvdVxcbiAgICAgKiB0ZWFyZG93biB5b3VyIGludGVyZmFjZSBwcmlvciB0byB0aGUgdGltZWQgbWV0aG9kIGJlaW5nIGNhbGxlZC5cXG4gICAgICovXFxuICAgIHJldHVybiAoKSA9PiB7XFxuICAgICAgd2luZG93LmNsZWFyVGltZW91dChjbGlja1JlZj8uY3VycmVudClcXG4gICAgfVxcbiAgfSwgW10pXFxuXFxuICBjb25zdCBvblNlbGVjdEV2ZW50ID0gdXNlQ2FsbGJhY2soXFxuICAgIChjYWxFdmVudCkgPT4ge1xcbiAgICAgIC8qKlxcbiAgICAgICAqIEhlcmUgd2UgYXJlIHdhaXRpbmcgMjUwIG1pbGxpc2Vjb25kcyAodXNlIHdoYXQgeW91IHdhbnQpIHByaW9yIHRvIGZpcmluZ1xcbiAgICAgICAqIG91ciBtZXRob2QuIFdoeT8gQmVjYXVzZSBib3RoICdjbGljaycgYW5kICdkb3VibGVDbGljaydcXG4gICAgICAgKiB3b3VsZCBmaXJlLCBpbiB0aGUgZXZlbnQgb2YgYSAnZG91YmxlQ2xpY2snLiBCeSBkb2luZ1xcbiAgICAgICAqIHRoaXMsIHRoZSAnY2xpY2snIGhhbmRsZXIgaXMgb3ZlcnJpZGRlbiBieSB0aGUgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgICAqIGFjdGlvbi5cXG4gICAgICAgKi9cXG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICAgIGNsaWNrUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XFxuICAgICAgICBzZXRTZWxlY3RlZChjYWxFdmVudClcXG4gICAgICB9LCAyNTApXFxuICAgIH0sXFxuICAgIFtzZXRTZWxlY3RlZF1cXG4gIClcXG5cXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAgIG9uU2VsZWN0RXZlbnQ9e29uU2VsZWN0RXZlbnR9XFxuICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWR9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcblNlbGVjdGVkLnN0b3J5TmFtZSA9ICdzZWxlY3RlZCdcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiU2VsZWN0ZWRcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjo2OX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjY5fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vc2VsZWN0ZWQubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgU2VsZWN0ZWQgPSBmdW5jdGlvbiBTZWxlY3RlZCgpIHtcbiAgY29uc3QgW3NlbGVjdGVkLCBzZXRTZWxlY3RlZF0gPSB1c2VTdGF0ZSgoKSA9PiB7XG4gICAgLy8gbGV0J3MgbWFrZSBhbiBpbml0aWFsIHNlbGVjdGlvblxuICAgIHJldHVybiBkZW1vRXZlbnRzLmZpbmQoXG4gICAgICAoZXZlbnQpID0+IGV2ZW50LnRpdGxlID09PSAnSXRhZXdvbiBIYWxsb3dlZW4gTWVldGluZydcbiAgICApXG4gIH0pXG4gIGNvbnN0IGNsaWNrUmVmID0gdXNlUmVmKG51bGwpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvKipcbiAgICAgKiBXaGF0IElzIFRoaXM/XG4gICAgICogVGhpcyBpcyB0byBwcmV2ZW50IGEgbWVtb3J5IGxlYWssIGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgeW91XG4gICAgICogdGVhcmRvd24geW91ciBpbnRlcmZhY2UgcHJpb3IgdG8gdGhlIHRpbWVkIG1ldGhvZCBiZWluZyBjYWxsZWQuXG4gICAgICovXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBvblNlbGVjdEV2ZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKGNhbEV2ZW50KSA9PiB7XG4gICAgICAvKipcbiAgICAgICAqIEhlcmUgd2UgYXJlIHdhaXRpbmcgMjUwIG1pbGxpc2Vjb25kcyAodXNlIHdoYXQgeW91IHdhbnQpIHByaW9yIHRvIGZpcmluZ1xuICAgICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xuICAgICAgICogd291bGQgZmlyZSwgaW4gdGhlIGV2ZW50IG9mIGEgJ2RvdWJsZUNsaWNrJy4gQnkgZG9pbmdcbiAgICAgICAqIHRoaXMsIHRoZSAnY2xpY2snIGhhbmRsZXIgaXMgb3ZlcnJpZGRlbiBieSB0aGUgJ2RvdWJsZUNsaWNrJ1xuICAgICAgICogYWN0aW9uLlxuICAgICAgICovXG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxuICAgICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U2VsZWN0ZWQoY2FsRXZlbnQpXG4gICAgICB9LCAyNTApXG4gICAgfSxcbiAgICBbc2V0U2VsZWN0ZWRdXG4gIClcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMSksIFtdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICBvblNlbGVjdEV2ZW50PXtvblNlbGVjdEV2ZW50fVxuICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWR9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O1NlbGVjdGVkLnN0b3J5TmFtZSA9ICdzZWxlY3RlZCdcblxuXG5cblNlbGVjdGVkLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBTZWxlY3RlZCgpIHtcXG4gIGNvbnN0IFtzZWxlY3RlZCwgc2V0U2VsZWN0ZWRdID0gdXNlU3RhdGUoKCkgPT4ge1xcbiAgICAvLyBsZXQncyBtYWtlIGFuIGluaXRpYWwgc2VsZWN0aW9uXFxuICAgIHJldHVybiBkZW1vRXZlbnRzLmZpbmQoXFxuICAgICAgKGV2ZW50KSA9PiBldmVudC50aXRsZSA9PT0gJ0l0YWV3b24gSGFsbG93ZWVuIE1lZXRpbmcnXFxuICAgIClcXG4gIH0pXFxuICBjb25zdCBjbGlja1JlZiA9IHVzZVJlZihudWxsKVxcblxcbiAgdXNlRWZmZWN0KCgpID0+IHtcXG4gICAgLyoqXFxuICAgICAqIFdoYXQgSXMgVGhpcz9cXG4gICAgICogVGhpcyBpcyB0byBwcmV2ZW50IGEgbWVtb3J5IGxlYWssIGluIHRoZSBvZmYgY2hhbmNlIHRoYXQgeW91XFxuICAgICAqIHRlYXJkb3duIHlvdXIgaW50ZXJmYWNlIHByaW9yIHRvIHRoZSB0aW1lZCBtZXRob2QgYmVpbmcgY2FsbGVkLlxcbiAgICAgKi9cXG4gICAgcmV0dXJuICgpID0+IHtcXG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGNsaWNrUmVmPy5jdXJyZW50KVxcbiAgICB9XFxuICB9LCBbXSlcXG5cXG4gIGNvbnN0IG9uU2VsZWN0RXZlbnQgPSB1c2VDYWxsYmFjayhcXG4gICAgKGNhbEV2ZW50KSA9PiB7XFxuICAgICAgLyoqXFxuICAgICAgICogSGVyZSB3ZSBhcmUgd2FpdGluZyAyNTAgbWlsbGlzZWNvbmRzICh1c2Ugd2hhdCB5b3Ugd2FudCkgcHJpb3IgdG8gZmlyaW5nXFxuICAgICAgICogb3VyIG1ldGhvZC4gV2h5PyBCZWNhdXNlIGJvdGggJ2NsaWNrJyBhbmQgJ2RvdWJsZUNsaWNrJ1xcbiAgICAgICAqIHdvdWxkIGZpcmUsIGluIHRoZSBldmVudCBvZiBhICdkb3VibGVDbGljaycuIEJ5IGRvaW5nXFxuICAgICAgICogdGhpcywgdGhlICdjbGljaycgaGFuZGxlciBpcyBvdmVycmlkZGVuIGJ5IHRoZSAnZG91YmxlQ2xpY2snXFxuICAgICAgICogYWN0aW9uLlxcbiAgICAgICAqL1xcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoY2xpY2tSZWY/LmN1cnJlbnQpXFxuICAgICAgY2xpY2tSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcXG4gICAgICAgIHNldFNlbGVjdGVkKGNhbEV2ZW50KVxcbiAgICAgIH0sIDI1MClcXG4gICAgfSxcXG4gICAgW3NldFNlbGVjdGVkXVxcbiAgKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25TZWxlY3RFdmVudD17b25TZWxlY3RFdmVudH1cXG4gICAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZH1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uU2VsZWN0ZWQucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcInNob3dhbGxldmVudHNcIlxuICAgIH19Pntgc2hvd0FsbEV2ZW50c2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZmFsc2VgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BEaXNwbGF5cyBhbGwgZXZlbnRzIG9uIHRoZSBtb250aCB2aWV3IGluc3RlYWQgb2YgaGF2aW5nIHNvbWUgaGlkZGVuIGJlaGluZCAre2NvdW50fSBtb3JlLiBUaGlzIHdpbGwgY2F1c2UgdGhlIHJvd3MgaW4gdGhlIG1vbnRoIHZpZXcgdG8gYmUgc2Nyb2xsYWJsZSBpZiB0aGUgbnVtYmVyIG9mIGV2ZW50cyBleGNlZWQgdGhlIGhlaWdodCBvZiB0aGUgcm93LmB9PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tc2hvdy1hbGwtZXZlbnRzXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3Nob3dBbGxFdmVudHMubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICAgIHNob3dBbGxFdmVudHM6ICdib29sZWFuJyxcXG4gIH0sXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVxcblxcbmV4cG9ydCBjb25zdCBTaG93QWxsRXZlbnRzID0gVGVtcGxhdGUuYmluZCh7fSlcXG5TaG93QWxsRXZlbnRzLnN0b3J5TmFtZSA9ICdzaG93QWxsRXZlbnRzJ1xcblNob3dBbGxFdmVudHMuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxuICBzaG93QWxsRXZlbnRzOiB0cnVlLFxcbn1cXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiU2hvd0FsbEV2ZW50c1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6Mjl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozM30sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozM319fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vc2hvd0FsbEV2ZW50cy5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgc2hvd0FsbEV2ZW50czogJ2Jvb2xlYW4nLFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgU2hvd0FsbEV2ZW50cyA9IFRlbXBsYXRlLmJpbmQoe30pO1Nob3dBbGxFdmVudHMuc3RvcnlOYW1lID0gJ3Nob3dBbGxFdmVudHMnXG5TaG93QWxsRXZlbnRzLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxuICBzaG93QWxsRXZlbnRzOiB0cnVlLFxufVxuXG5cblxuU2hvd0FsbEV2ZW50cy5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uU2hvd0FsbEV2ZW50cy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwic2hvd211bHRpZGF5dGltZXNcIlxuICAgIH19Pntgc2hvd011bHRpRGF5VGltZXNgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZhbHNlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgU3VwcG9ydCB0byBzaG93IG11bHRpLWRheSBldmVudHMgd2l0aCBzcGVjaWZpYyBzdGFydCBhbmQgZW5kIHRpbWVzIGluIHRoZSBtYWluIHRpbWUgZ3JpZCAocmF0aGVyIHRoYW4gaW4gdGhlIGFsbCBkYXkgaGVhZGVyKS5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BOb3RlOiBUaGlzIG1heSBjYXVzZSBjYWxlbmRhcnMgd2l0aCBzZXZlcmFsIGV2ZW50cyB0byBsb29rIHZlcnkgYnVzeSBpbiB0aGUgd2VlayBhbmQgZGF5IHZpZXdzLmB9PC9zdHJvbmc+PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS1zaG93LW11bHRpLWRheS10aW1lc1wiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3Nob3dNdWx0aURheVRpbWVzLm1keCdcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBhcmdUeXBlczoge1xcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdFZpZXc6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgbWF4OiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIHNob3dNdWx0aURheVRpbWVzOiAnYm9vbGVhbicsXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgU2hvd011bHRpRGF5VGltZXMgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcblNob3dNdWx0aURheVRpbWVzLnN0b3J5TmFtZSA9ICdzaG93TXVsdGlEYXlUaW1lcydcXG5TaG93TXVsdGlEYXlUaW1lcy5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTYsIDExLCA0KSxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgZXZlbnRzOiBbXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ3N0YXJ0IG9mIHRoZSB3ZWVrJyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDQsIDE1KSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCA1LCAzKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnc2luZ2xlIGRheSBsb25nZXIgdGhhbiBtYXgnLFxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE2LCAxMSwgNCwgMTUpLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDQsIDIzLCAzMCksXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICB0aXRsZTogJ2VuZCBvZiB0aGUgd2VlaycsXFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDExLCAzKSxcXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDExLCAzKSxcXG4gICAgfSxcXG4gICAge1xcbiAgICAgIHRpdGxlOiAnbWlkZGxlJyxcXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDYpLFxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDYpLFxcbiAgICB9LFxcbiAgXSxcXG4gIGxvY2FsaXplcjogbUxvY2FsaXplcixcXG4gIG1heDogbW9tZW50KCkuZW5kT2YoJ2RheScpLmFkZCgtMSwgJ2hvdXJzJykudG9EYXRlKCksXFxuICBzaG93TXVsdGlEYXlUaW1lczogdHJ1ZSxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIlNob3dNdWx0aURheVRpbWVzXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI5fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI1fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI5fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBtZHggZnJvbSAnLi9zaG93TXVsdGlEYXlUaW1lcy5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXG4gICAgZGVmYXVsdFZpZXc6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBtYXg6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBzaG93TXVsdGlEYXlUaW1lczogJ2Jvb2xlYW4nLFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgU2hvd011bHRpRGF5VGltZXMgPSBUZW1wbGF0ZS5iaW5kKHt9KTtTaG93TXVsdGlEYXlUaW1lcy5zdG9yeU5hbWUgPSAnc2hvd011bHRpRGF5VGltZXMnXG5TaG93TXVsdGlEYXlUaW1lcy5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNiwgMTEsIDQpLFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcbiAgZXZlbnRzOiBbXG4gICAge1xuICAgICAgdGl0bGU6ICdzdGFydCBvZiB0aGUgd2VlaycsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDQsIDE1KSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDUsIDMpLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdzaW5nbGUgZGF5IGxvbmdlciB0aGFuIG1heCcsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDQsIDE1KSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNiwgMTEsIDQsIDIzLCAzMCksXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ2VuZCBvZiB0aGUgd2VlaycsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDMpLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgMyksXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ21pZGRsZScsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNiwgMTEsIDYpLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE2LCAxMSwgNiksXG4gICAgfSxcbiAgXSxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxuICBtYXg6IG1vbWVudCgpLmVuZE9mKCdkYXknKS5hZGQoLTEsICdob3VycycpLnRvRGF0ZSgpLFxuICBzaG93TXVsdGlEYXlUaW1lczogdHJ1ZSxcbn1cblxuXG5cblNob3dNdWx0aURheVRpbWVzLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5TaG93TXVsdGlEYXlUaW1lcy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwic2xvdGdyb3VwcHJvcGdldHRlclwiXG4gICAgfX0+e2BzbG90R3JvdXBQcm9wR2V0dGVyYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZ3JvdXA6IERhdGVbXSkgPT4geyBzdHlsZT86IE9iamVjdCB9YH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgT3B0aW9uYWxseSBwcm92aWRlIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIG9iamVjdCBvZiBjbGFzc05hbWUgb3Igc3R5bGUgcHJvcHMgdG8gYmUgYXBwbGllZCB0byB0aGUgdGltZS1zbG90IG5vZGUuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgQ2F1dGlvbiEgU3R5bGVzIHRoYXQgY2hhbmdlIGxheW91dCBvciBwb3NpdGlvbiBtYXkgYnJlYWsgdGhlIGNhbGVuZGFyIGluIHVuZXhwZWN0ZWQgd2F5cy5gfTwvc3Ryb25nPjwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLXNsb3QtZ3JvdXAtcHJvcC1nZXR0ZXJcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vc2xvdEdyb3VwUHJvcEdldHRlci5tZHgnXFxuaW1wb3J0ICcuLi9yZXNvdXJjZXMvcHJvcEdldHRlci5zY3NzJ1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBTbG90R3JvdXBQcm9wR2V0dGVyKCkge1xcbiAgY29uc3Qgc2xvdEdyb3VwUHJvcEdldHRlciA9IHVzZUNhbGxiYWNrKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIHN0eWxlOiB7XFxuICAgICAgICBtaW5IZWlnaHQ6IDYwLFxcbiAgICAgIH0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxcbiAgICAgICAgc2xvdEdyb3VwUHJvcEdldHRlcj17c2xvdEdyb3VwUHJvcEdldHRlcn1cXG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cXG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XFxuU2xvdEdyb3VwUHJvcEdldHRlci5zdG9yeU5hbWUgPSAnc2xvdEdyb3VwUHJvcEdldHRlcidcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiU2xvdEdyb3VwUHJvcEdldHRlclwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6NyxcImxpbmVcIjoyMH0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjQzfSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjcsXCJsaW5lXCI6MjB9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6NDN9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL3Nsb3RHcm91cFByb3BHZXR0ZXIubWR4J1xuaW1wb3J0ICcuLi9yZXNvdXJjZXMvcHJvcEdldHRlci5zY3NzJ1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgU2xvdEdyb3VwUHJvcEdldHRlciA9IGZ1bmN0aW9uIFNsb3RHcm91cFByb3BHZXR0ZXIoKSB7XG4gIGNvbnN0IHNsb3RHcm91cFByb3BHZXR0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoKSA9PiAoe1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgbWluSGVpZ2h0OiA2MCxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IGRlZmF1bHREYXRlID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksIFtdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxuICAgICAgICBzbG90R3JvdXBQcm9wR2V0dGVyPXtzbG90R3JvdXBQcm9wR2V0dGVyfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn07U2xvdEdyb3VwUHJvcEdldHRlci5zdG9yeU5hbWUgPSAnc2xvdEdyb3VwUHJvcEdldHRlcidcblxuXG5cblNsb3RHcm91cFByb3BHZXR0ZXIucGFyYW1ldGVycyA9IHsgc3RvcnlTb3VyY2U6IHsgc291cmNlOiBcImZ1bmN0aW9uIFNsb3RHcm91cFByb3BHZXR0ZXIoKSB7XFxuICBjb25zdCBzbG90R3JvdXBQcm9wR2V0dGVyID0gdXNlQ2FsbGJhY2soXFxuICAgICgpID0+ICh7XFxuICAgICAgc3R5bGU6IHtcXG4gICAgICAgIG1pbkhlaWdodDogNjAsXFxuICAgICAgfSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMTMpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBzbG90R3JvdXBQcm9wR2V0dGVyPXtzbG90R3JvdXBQcm9wR2V0dGVyfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cIiB9LCAuLi5TbG90R3JvdXBQcm9wR2V0dGVyLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJzbG90cHJvcGdldHRlclwiXG4gICAgfX0+e2BzbG90UHJvcEdldHRlcmB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUpID0+IHtjbGFzc05hbWU/OiBzdHJpbmcsIHN0eWxlPzogT2JqZWN0fWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YE9wdGlvbmFsbHkgcHJvdmlkZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBvYmplY3Qgb2YgY2xhc3NOYW1lIG9yIHN0eWxlIHByb3BzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHRoZSB0aW1lLXNsb3Qgbm9kZS5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BDYXV0aW9uIWB9PC9zdHJvbmc+e2AgU3R5bGVzIHRoYXQgY2hhbmdlIGxheW91dCBvciBwb3NpdGlvbiBtYXkgYnJlYWsgdGhlIGNhbGVuZGFyIGluIHVuZXhwZWN0ZWQgd2F5cy5gfTwvcD5cbiAgICA8Q2FudmFzIG1keFR5cGU9XCJDYW52YXNcIj5cbiAgPFN0b3J5IGlkPVwicHJvcHMtLXNsb3QtcHJvcC1nZXR0ZXJcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvQ2FudmFzPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vc2xvdFByb3BHZXR0ZXIubWR4J1xcbmltcG9ydCAnLi4vcmVzb3VyY2VzL3Byb3BHZXR0ZXIuc2NzcydcXG5cXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcXG5cXG5leHBvcnQgZGVmYXVsdCB7XFxuICB0aXRsZTogJ3Byb3BzJyxcXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5leHBvcnQgZnVuY3Rpb24gU2xvdFByb3BHZXR0ZXIoKSB7XFxuICBjb25zdCBzbG90UHJvcEdldHRlciA9IHVzZUNhbGxiYWNrKFxcbiAgICAoZGF0ZSkgPT4gKHtcXG4gICAgICBjbGFzc05hbWU6ICdzbG90RGVmYXVsdCcsXFxuICAgICAgLi4uKG1vbWVudChkYXRlKS5ob3VyKCkgPCA4ICYmIHtcXG4gICAgICAgIHN0eWxlOiB7XFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3Bvd2RlcmJsdWUnLFxcbiAgICAgICAgICBjb2xvcjogJ2JsYWNrJyxcXG4gICAgICAgIH0sXFxuICAgICAgfSksXFxuICAgICAgLi4uKG1vbWVudChkYXRlKS5ob3VyKCkgPiAxMiAmJiB7XFxuICAgICAgICBzdHlsZToge1xcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdkYXJrZ3JlZW4nLFxcbiAgICAgICAgICBjb2xvcjogJ3doaXRlJyxcXG4gICAgICAgIH0sXFxuICAgICAgfSksXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSwgW10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cXG4gICAgICAgIGRlZmF1bHRWaWV3PXtWaWV3cy5XRUVLfVxcbiAgICAgICAgc2xvdFByb3BHZXR0ZXI9e3Nsb3RQcm9wR2V0dGVyfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5TbG90UHJvcEdldHRlci5zdG9yeU5hbWUgPSAnc2xvdFByb3BHZXR0ZXInXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIlNsb3RQcm9wR2V0dGVyXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjIwfSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6NTN9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoyMH0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjo1M319fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vc2xvdFByb3BHZXR0ZXIubWR4J1xuaW1wb3J0ICcuLi9yZXNvdXJjZXMvcHJvcEdldHRlci5zY3NzJ1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgU2xvdFByb3BHZXR0ZXIgPSBmdW5jdGlvbiBTbG90UHJvcEdldHRlcigpIHtcbiAgY29uc3Qgc2xvdFByb3BHZXR0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZGF0ZSkgPT4gKHtcbiAgICAgIGNsYXNzTmFtZTogJ3Nsb3REZWZhdWx0JyxcbiAgICAgIC4uLihtb21lbnQoZGF0ZSkuaG91cigpIDwgOCAmJiB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAncG93ZGVyYmx1ZScsXG4gICAgICAgICAgY29sb3I6ICdibGFjaycsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIC4uLihtb21lbnQoZGF0ZSkuaG91cigpID4gMTIgJiYge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ2RhcmtncmVlbicsXG4gICAgICAgICAgY29sb3I6ICd3aGl0ZScsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSwgW10pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgICAgPENhbGVuZGFyXG4gICAgICAgIGRlZmF1bHREYXRlPXtkZWZhdWx0RGF0ZX1cbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XG4gICAgICAgIHNsb3RQcm9wR2V0dGVyPXtzbG90UHJvcEdldHRlcn1cbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O1Nsb3RQcm9wR2V0dGVyLnN0b3J5TmFtZSA9ICdzbG90UHJvcEdldHRlcidcblxuXG5cblNsb3RQcm9wR2V0dGVyLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBTbG90UHJvcEdldHRlcigpIHtcXG4gIGNvbnN0IHNsb3RQcm9wR2V0dGVyID0gdXNlQ2FsbGJhY2soXFxuICAgIChkYXRlKSA9PiAoe1xcbiAgICAgIGNsYXNzTmFtZTogJ3Nsb3REZWZhdWx0JyxcXG4gICAgICAuLi4obW9tZW50KGRhdGUpLmhvdXIoKSA8IDggJiYge1xcbiAgICAgICAgc3R5bGU6IHtcXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAncG93ZGVyYmx1ZScsXFxuICAgICAgICAgIGNvbG9yOiAnYmxhY2snLFxcbiAgICAgICAgfSxcXG4gICAgICB9KSxcXG4gICAgICAuLi4obW9tZW50KGRhdGUpLmhvdXIoKSA+IDEyICYmIHtcXG4gICAgICAgIHN0eWxlOiB7XFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ2RhcmtncmVlbicsXFxuICAgICAgICAgIGNvbG9yOiAnd2hpdGUnLFxcbiAgICAgICAgfSxcXG4gICAgICB9KSxcXG4gICAgfSksXFxuICAgIFtdXFxuICApXFxuXFxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMTMpLCBbXSlcXG5cXG4gIHJldHVybiAoXFxuICAgIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICAgIDxDYWxlbmRhclxcbiAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxcbiAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLldFRUt9XFxuICAgICAgICBzbG90UHJvcEdldHRlcj17c2xvdFByb3BHZXR0ZXJ9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLlNsb3RQcm9wR2V0dGVyLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJzdGFydGFjY2Vzc29yXCJcbiAgICB9fT57YHN0YXJ0QWNjZXNzb3JgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0cmluZyB8IGZ1bmN0aW9uIChldmVudDogT2JqZWN0KSA9PiBEYXRlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6ICdzdGFydCdgfTwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFRoZSBzdGFydCBkYXRlL3RpbWUgb2YgdGhlIGV2ZW50LiBNdXN0IHJlc29sdmUgdG8gYSBKYXZhU2NyaXB0IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YERhdGVgfTwvaW5saW5lQ29kZT57YCBvYmplY3QuYH08L3A+XG4gICAgPFN0b3J5IGlkPVwicHJvcHMtLXN0YXJ0LWFjY2Vzc29yXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gJy4uLy4uL3NyYydcXG5pbXBvcnQgeyBhY2Nlc3NvclN0b3J5QXJncyB9IGZyb20gJy4vc3RvcnlEZWZhdWx0cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vc3RhcnRBY2Nlc3Nvci5tZHgnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZToge1xcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6IG51bGwsXFxuICAgICAgfSxcXG4gICAgfSxcXG4gIH0sXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVxcblxcbmV4cG9ydCBjb25zdCBTdGFydEFjY2Vzc29yID0gVGVtcGxhdGUuYmluZCh7fSlcXG5TdGFydEFjY2Vzc29yLnN0b3J5TmFtZSA9ICdzdGFydEFjY2Vzc29yJ1xcblN0YXJ0QWNjZXNzb3IuYXJncyA9IGFjY2Vzc29yU3RvcnlBcmdzXFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIlN0YXJ0QWNjZXNzb3JcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjE3LFwibGluZVwiOjI1fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6Mjl9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MjV9LFwiZW5kQm9keVwiOntcImNvbFwiOjEsXCJsaW5lXCI6Mjl9fX07XG4gICAgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCB7IGFjY2Vzc29yU3RvcnlBcmdzIH0gZnJvbSAnLi9zdG9yeURlZmF1bHRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL3N0YXJ0QWNjZXNzb3IubWR4J1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cbiAgPC9kaXY+XG4pXG5cbmV4cG9ydCBjb25zdCBTdGFydEFjY2Vzc29yID0gVGVtcGxhdGUuYmluZCh7fSk7U3RhcnRBY2Nlc3Nvci5zdG9yeU5hbWUgPSAnc3RhcnRBY2Nlc3NvcidcblN0YXJ0QWNjZXNzb3IuYXJncyA9IGFjY2Vzc29yU3RvcnlBcmdzXG5cblxuXG5TdGFydEFjY2Vzc29yLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5TdGFydEFjY2Vzc29yLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJzdGVwXCJcbiAgICB9fT57YHN0ZXBgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG51bWJlcmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgMzBgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BEZXRlcm1pbmVzIHRoZSBzZWxlY3RhYmxlIHRpbWUgaW5jcmVtZW50cyBpbiB3ZWVrIGFuZCBkYXkgdmlld3NgfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tc3RlcFwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vc3RlcC5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZToge1xcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6IG51bGwsXFxuICAgICAgfSxcXG4gICAgfSxcXG4gICAgZGVmYXVsdFZpZXc6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICAgIHN0ZXA6ICdudW1iZXInLFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IFN0ZXAgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcblN0ZXAuc3RvcnlOYW1lID0gJ3N0ZXAnXFxuU3RlcC5hcmdzID0ge1xcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcXG4gIGRlZmF1bHRWaWV3OiBWaWV3cy5XRUVLLFxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxcbiAgc3RlcDogMTUsXFxufVxcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJTdGVwXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozNH0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM4fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjM0fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM4fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vc3RlcC5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZpZXc6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBzdGVwOiAnbnVtYmVyJyxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiaGVpZ2h0NjAwXCI+XG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IFN0ZXAgPSBUZW1wbGF0ZS5iaW5kKHt9KTtTdGVwLnN0b3J5TmFtZSA9ICdzdGVwJ1xuU3RlcC5hcmdzID0ge1xuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxuICBkZWZhdWx0VmlldzogVmlld3MuV0VFSyxcbiAgZXZlbnRzOiBkZW1vRXZlbnRzLFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG4gIHN0ZXA6IDE1LFxufVxuXG5cblxuU3RlcC5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uU3RlcC5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwidGltZXNsb3RzXCJcbiAgICB9fT57YHRpbWVzbG90c2B9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbnVtYmVyYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIG51bWJlciBvZiBzbG90cyBwZXIgXCJzZWN0aW9uXCIgaW4gdGhlIHRpbWUgZ3JpZCB2aWV3cy4gQWRqdXN0IHdpdGggYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic3RlcFwiIG1keFR5cGU9XCJMaW5rVG9cIj57YHN0ZXBgfTwvTGlua1RvPntgIHRvIGNoYW5nZSB0aGUgZGVmYXVsdCBvZiAxIGhvdXIgbG9uZyBncm91cHMsIHdpdGggMzAgbWludXRlIHNsb3RzLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS10aW1lc2xvdHNcIiBtZHhUeXBlPVwiU3RvcnlcIiAvPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlOyIsIlxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gQHRzLW5vY2hlY2tcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fU1RPUllfXyA9IFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3RpbWVzbG90cy5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZToge1xcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6IG51bGwsXFxuICAgICAgfSxcXG4gICAgfSxcXG4gICAgZGVmYXVsdFZpZXc6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICAgIHN0ZXA6ICdudW1iZXInLFxcbiAgICB0aW1lc2xvdHM6ICdudW1iZXInLFxcbiAgfSxcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXFxuXFxuZXhwb3J0IGNvbnN0IFRpbWVzbG90cyA9IFRlbXBsYXRlLmJpbmQoe30pXFxuVGltZXNsb3RzLnN0b3J5TmFtZSA9ICd0aW1lc2xvdHMnXFxuVGltZXNsb3RzLmFyZ3MgPSB7XFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxuICBzdGVwOiAxNSxcXG4gIHRpbWVzbG90czogNCxcXG59XFxuXCI7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX0xPQ0FUSU9OU19NQVBfXyA9IHtcIlRpbWVzbG90c1wiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6MzV9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozOX0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjozNX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozOX19fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL3RpbWVzbG90cy5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZpZXc6IHtcbiAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBzdGVwOiAnbnVtYmVyJyxcbiAgICB0aW1lc2xvdHM6ICdudW1iZXInLFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgVGltZXNsb3RzID0gVGVtcGxhdGUuYmluZCh7fSk7VGltZXNsb3RzLnN0b3J5TmFtZSA9ICd0aW1lc2xvdHMnXG5UaW1lc2xvdHMuYXJncyA9IHtcbiAgZGVmYXVsdERhdGU6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLldFRUssXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxuICBzdGVwOiAxNSxcbiAgdGltZXNsb3RzOiA0LFxufVxuXG5cblxuVGltZXNsb3RzLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCIoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcIiB9LCAuLi5UaW1lc2xvdHMucGFyYW1ldGVycyB9OyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IENhbnZhcywgU3RvcnkgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcInRpdGxlYWNjZXNzb3JcIlxuICAgIH19PntgdGl0bGVBY2Nlc3NvcmB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nIHwgZnVuY3Rpb24gKGV2ZW50OiBPYmplY3QpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiAndGl0bGUnYH08L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBY2Nlc3NvciBmb3IgdGhlIGV2ZW50IHRpdGxlLCB1c2VkIHRvIGRpc3BsYXkgZXZlbnQgaW5mb3JtYXRpb24uIFNob3VsZCByZXNvbHZlIHRvIGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgcmVuZGVyYWJsZWB9PC9pbmxpbmVDb2RlPntgIHZhbHVlLmB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS10aXRsZS1hY2Nlc3NvclwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IHsgYWNjZXNzb3JTdG9yeUFyZ3MgfSBmcm9tICcuL3N0b3J5RGVmYXVsdHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3RpdGxlQWNjZXNzb3IubWR4J1xcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICB9LFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxcbiAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cXG4gIDwvZGl2PlxcbilcXG5cXG5leHBvcnQgY29uc3QgVGl0bGVBY2Nlc3NvciA9IFRlbXBsYXRlLmJpbmQoe30pXFxuVGl0bGVBY2Nlc3Nvci5zdG9yeU5hbWUgPSAndGl0bGVBY2Nlc3NvcidcXG5UaXRsZUFjY2Vzc29yLmFyZ3MgPSBhY2Nlc3NvclN0b3J5QXJnc1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJUaXRsZUFjY2Vzc29yXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI5fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI1fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI5fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgeyBhY2Nlc3NvclN0b3J5QXJncyB9IGZyb20gJy4vc3RvcnlEZWZhdWx0cydcbmltcG9ydCBtZHggZnJvbSAnLi90aXRsZUFjY2Vzc29yLm1keCdcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgYXJnVHlwZXM6IHtcbiAgICBsb2NhbGl6ZXI6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcbiAgICBkZWZhdWx0RGF0ZToge1xuICAgICAgY29udHJvbDoge1xuICAgICAgICB0eXBlOiBudWxsLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgVGl0bGVBY2Nlc3NvciA9IFRlbXBsYXRlLmJpbmQoe30pO1RpdGxlQWNjZXNzb3Iuc3RvcnlOYW1lID0gJ3RpdGxlQWNjZXNzb3InXG5UaXRsZUFjY2Vzc29yLmFyZ3MgPSBhY2Nlc3NvclN0b3J5QXJnc1xuXG5cblxuVGl0bGVBY2Nlc3Nvci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uVGl0bGVBY2Nlc3Nvci5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwidG9vbGJhclwiXG4gICAgfX0+e2B0b29sYmFyYH08L2gxPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2Bib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2B0cnVlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0b29sYmFyIGlzIGRpc3BsYXllZGB9PC9wPlxuICAgIDxTdG9yeSBpZD1cInByb3BzLS10b29sYmFyXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcXG5pbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi4vLi4vc3JjJ1xcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3Rvb2xiYXIubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIGFyZ1R5cGVzOiB7XFxuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBldmVudHM6IHsgY29udHJvbDogeyB0eXBlOiBudWxsIH0gfSxcXG4gICAgZGVmYXVsdERhdGU6IHtcXG4gICAgICBjb250cm9sOiB7XFxuICAgICAgICB0eXBlOiBudWxsLFxcbiAgICAgIH0sXFxuICAgIH0sXFxuICAgIHRvb2xiYXI6ICdib29sZWFuJyxcXG4gIH0sXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVxcblxcbmV4cG9ydCBjb25zdCBUb29sYmFyID0gVGVtcGxhdGUuYmluZCh7fSlcXG5Ub29sYmFyLnN0b3J5TmFtZSA9ICd0b29sYmFyJ1xcblRvb2xiYXIuYXJncyA9IHtcXG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXFxuICBldmVudHM6IGRlbW9FdmVudHMsXFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXFxuICB0b29sYmFyOiB0cnVlLFxcbn1cXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiVG9vbGJhclwiOntcInN0YXJ0TG9jXCI6e1wiY29sXCI6MTcsXCJsaW5lXCI6Mjl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozM30sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozM319fTtcbiAgICBcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJy4uLy4uL3NyYydcbmltcG9ydCBkZW1vRXZlbnRzIGZyb20gJy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgbWR4IGZyb20gJy4vdG9vbGJhci5tZHgnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgdG9vbGJhcjogJ2Jvb2xlYW4nLFxuICB9LFxuICBwYXJhbWV0ZXJzOiB7XG4gICAgZG9jczoge1xuICAgICAgcGFnZTogbWR4LFxuICAgIH0sXG4gIH0sXG59XG5cbmNvbnN0IFRlbXBsYXRlID0gKGFyZ3MpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgVG9vbGJhciA9IFRlbXBsYXRlLmJpbmQoe30pO1Rvb2xiYXIuc3RvcnlOYW1lID0gJ3Rvb2xiYXInXG5Ub29sYmFyLmFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMyksXG4gIGV2ZW50czogZGVtb0V2ZW50cyxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxuICB0b29sYmFyOiB0cnVlLFxufVxuXG5cblxuVG9vbGJhci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uVG9vbGJhci5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwidG9vbHRpcGFjY2Vzc29yXCJcbiAgICB9fT57YHRvb2x0aXBBY2Nlc3NvcmB9PC9oMT5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nIHwgZnVuY3Rpb24gKGV2ZW50OiBPYmplY3QpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiAndGl0bGUnYH08L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBY2Nlc3NvciBmb3IgdGhlIGV2ZW50IHRvb2x0aXAsIHVzZWQgdG8gZGlzcGxheSBldmVudCBpbmZvcm1hdGlvbi4gU2hvdWxkIHJlc29sdmUgdG8gYSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2ByZW5kZXJhYmxlYH08L2lubGluZUNvZGU+e2AgdmFsdWUuIFJlbW92ZXMgdGhlIHRvb2x0aXAgaWYgbnVsbC5gfTwvcD5cbiAgICA8U3RvcnkgaWQ9XCJwcm9wcy0tdG9vbHRpcC1hY2Nlc3NvclwiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXFxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IHsgYWNjZXNzb3JTdG9yeUFyZ3MgfSBmcm9tICcuL3N0b3J5RGVmYXVsdHMnXFxuaW1wb3J0IG1keCBmcm9tICcuL3Rvb2x0aXBBY2Nlc3Nvci5tZHgnXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgYXJnVHlwZXM6IHtcXG4gICAgbG9jYWxpemVyOiB7IGNvbnRyb2w6IHsgdHlwZTogbnVsbCB9IH0sXFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxcbiAgICBkZWZhdWx0RGF0ZToge1xcbiAgICAgIGNvbnRyb2w6IHtcXG4gICAgICAgIHR5cGU6IG51bGwsXFxuICAgICAgfSxcXG4gICAgfSxcXG4gIH0sXFxuICBwYXJhbWV0ZXJzOiB7XFxuICAgIGRvY3M6IHtcXG4gICAgICBwYWdlOiBtZHgsXFxuICAgIH0sXFxuICB9LFxcbn1cXG5cXG5jb25zdCBUZW1wbGF0ZSA9IChhcmdzKSA9PiAoXFxuICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgPENhbGVuZGFyIHsuLi5hcmdzfSAvPlxcbiAgPC9kaXY+XFxuKVxcblxcbmV4cG9ydCBjb25zdCBUb29sdGlwQWNjZXNzb3IgPSBUZW1wbGF0ZS5iaW5kKHt9KVxcblRvb2x0aXBBY2Nlc3Nvci5zdG9yeU5hbWUgPSAndG9vbHRpcEFjY2Vzc29yJ1xcblRvb2x0aXBBY2Nlc3Nvci5hcmdzID0gYWNjZXNzb3JTdG9yeUFyZ3NcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiVG9vbHRpcEFjY2Vzc29yXCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjoxNyxcImxpbmVcIjoyNX0sXCJlbmRMb2NcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI5fSxcInN0YXJ0Qm9keVwiOntcImNvbFwiOjE3LFwibGluZVwiOjI1fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjI5fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgeyBhY2Nlc3NvclN0b3J5QXJncyB9IGZyb20gJy4vc3RvcnlEZWZhdWx0cydcbmltcG9ydCBtZHggZnJvbSAnLi90b29sdGlwQWNjZXNzb3IubWR4J1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRpdGxlOiAncHJvcHMnLFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxuICBhcmdUeXBlczoge1xuICAgIGxvY2FsaXplcjogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGV2ZW50czogeyBjb250cm9sOiB7IHR5cGU6IG51bGwgfSB9LFxuICAgIGRlZmF1bHREYXRlOiB7XG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgVGVtcGxhdGUgPSAoYXJncykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiPlxuICAgIDxDYWxlbmRhciB7Li4uYXJnc30gLz5cbiAgPC9kaXY+XG4pXG5cbmV4cG9ydCBjb25zdCBUb29sdGlwQWNjZXNzb3IgPSBUZW1wbGF0ZS5iaW5kKHt9KTtUb29sdGlwQWNjZXNzb3Iuc3RvcnlOYW1lID0gJ3Rvb2x0aXBBY2Nlc3NvcidcblRvb2x0aXBBY2Nlc3Nvci5hcmdzID0gYWNjZXNzb3JTdG9yeUFyZ3NcblxuXG5cblRvb2x0aXBBY2Nlc3Nvci5wYXJhbWV0ZXJzID0geyBzdG9yeVNvdXJjZTogeyBzb3VyY2U6IFwiKGFyZ3MpID0+IChcXG4gIDxkaXYgY2xhc3NOYW1lPVxcXCJoZWlnaHQ2MDBcXFwiPlxcbiAgICA8Q2FsZW5kYXIgey4uLmFyZ3N9IC8+XFxuICA8L2Rpdj5cXG4pXCIgfSwgLi4uVG9vbHRpcEFjY2Vzc29yLnBhcmFtZXRlcnMgfTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBDYW52YXMsIFN0b3J5IH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJ2aWV3XCJcbiAgICB9fT57YHZpZXdgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgVmlld3MuTU9OVEggKG1vbnRofHdlZWt8d29ya193ZWVrfGRheXxhZ2VuZGEpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGNvbnRyb2xsZWQgYnk6IGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLXZpZXdcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvblZpZXdgfTwvTGlua1RvPjwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFRoZSBjdXJyZW50IHZpZXcgdmFsdWUgb2YgdGhlIGNhbGVuZGFyLiBEZXRlcm1pbmVzIHRoZSB2aXNpYmxlICd2aWV3Jy5cbklmIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHZpZXdgfTwvaW5saW5lQ29kZT57YCBpcyBvbWl0dGVkIHRoZW4gaXQgaXMgZGVmYXVsdGVkIHRvICdtb250aCcuYH08L3A+XG4gICAgPHA+e2BUaGlzIGlzIGEgY29udHJvbGxhYmxlIHByb3AsIHdoZW4gdXNpbmcgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwib24tdmlld1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uVmlld2B9PC9MaW5rVG8+PC9wPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tdmlld1wiIG1keFR5cGU9XCJTdG9yeVwiIC8+XG4gICAgPC9DYW52YXM+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7IiwiXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAvLyBAdHMtbm9jaGVja1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19TVE9SWV9fID0gXCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vdmlldy5tZHgnXFxuXFxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXFxuXFxuZXhwb3J0IGRlZmF1bHQge1xcbiAgdGl0bGU6ICdwcm9wcycsXFxuICBjb21wb25lbnQ6IENhbGVuZGFyLFxcbiAgcGFyYW1ldGVyczoge1xcbiAgICBkb2NzOiB7XFxuICAgICAgcGFnZTogbWR4LFxcbiAgICB9LFxcbiAgfSxcXG59XFxuXFxuZXhwb3J0IGZ1bmN0aW9uIFZpZXcoKSB7XFxuICBjb25zdCBbZGF0ZSwgc2V0RGF0ZV0gPSB1c2VTdGF0ZShuZXcgRGF0ZSgyMDE1LCAzLCAxKSlcXG4gIGNvbnN0IFt2aWV3LCBzZXRWaWV3XSA9IHVzZVN0YXRlKFZpZXdzLldFRUspXFxuXFxuICBjb25zdCBvbk5hdmlnYXRlID0gdXNlQ2FsbGJhY2soKG5ld0RhdGUpID0+IHNldERhdGUobmV3RGF0ZSksIFtzZXREYXRlXSlcXG4gIGNvbnN0IG9uVmlldyA9IHVzZUNhbGxiYWNrKChuZXdWaWV3KSA9PiBzZXRWaWV3KG5ld1ZpZXcpLCBbc2V0Vmlld10pXFxuXFxuICByZXR1cm4gKFxcbiAgICA8ZGl2IGNsYXNzTmFtZT1cXFwiaGVpZ2h0NjAwXFxcIj5cXG4gICAgICA8Q2FsZW5kYXJcXG4gICAgICAgIGRhdGU9e2RhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICBvbk5hdmlnYXRlPXtvbk5hdmlnYXRlfVxcbiAgICAgICAgb25WaWV3PXtvblZpZXd9XFxuICAgICAgICB2aWV3PXt2aWV3fVxcbiAgICAgIC8+XFxuICAgIDwvZGl2PlxcbiAgKVxcbn1cXG5WaWV3LnN0b3J5TmFtZSA9ICd2aWV3J1xcblwiO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgX19MT0NBVElPTlNfTUFQX18gPSB7XCJWaWV3XCI6e1wic3RhcnRMb2NcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZExvY1wiOntcImNvbFwiOjEsXCJsaW5lXCI6Mzh9LFwic3RhcnRCb2R5XCI6e1wiY29sXCI6NyxcImxpbmVcIjoxOX0sXCJlbmRCb2R5XCI6e1wiY29sXCI6MSxcImxpbmVcIjozOH19fTtcbiAgICBcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL3ZpZXcubWR4J1xuXG5jb25zdCBtTG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcblxuZXhwb3J0IGRlZmF1bHQge1xuICB0aXRsZTogJ3Byb3BzJyxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcbiAgcGFyYW1ldGVyczoge1xuICAgIGRvY3M6IHtcbiAgICAgIHBhZ2U6IG1keCxcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgY29uc3QgVmlldyA9IGZ1bmN0aW9uIFZpZXcoKSB7XG4gIGNvbnN0IFtkYXRlLCBzZXREYXRlXSA9IHVzZVN0YXRlKG5ldyBEYXRlKDIwMTUsIDMsIDEpKVxuICBjb25zdCBbdmlldywgc2V0Vmlld10gPSB1c2VTdGF0ZShWaWV3cy5XRUVLKVxuXG4gIGNvbnN0IG9uTmF2aWdhdGUgPSB1c2VDYWxsYmFjaygobmV3RGF0ZSkgPT4gc2V0RGF0ZShuZXdEYXRlKSwgW3NldERhdGVdKVxuICBjb25zdCBvblZpZXcgPSB1c2VDYWxsYmFjaygobmV3VmlldykgPT4gc2V0VmlldyhuZXdWaWV3KSwgW3NldFZpZXddKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkYXRlPXtkYXRlfVxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XG4gICAgICAgIGxvY2FsaXplcj17bUxvY2FsaXplcn1cbiAgICAgICAgb25OYXZpZ2F0ZT17b25OYXZpZ2F0ZX1cbiAgICAgICAgb25WaWV3PXtvblZpZXd9XG4gICAgICAgIHZpZXc9e3ZpZXd9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O1ZpZXcuc3RvcnlOYW1lID0gJ3ZpZXcnXG5cblxuXG5WaWV3LnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBWaWV3KCkge1xcbiAgY29uc3QgW2RhdGUsIHNldERhdGVdID0gdXNlU3RhdGUobmV3IERhdGUoMjAxNSwgMywgMSkpXFxuICBjb25zdCBbdmlldywgc2V0Vmlld10gPSB1c2VTdGF0ZShWaWV3cy5XRUVLKVxcblxcbiAgY29uc3Qgb25OYXZpZ2F0ZSA9IHVzZUNhbGxiYWNrKChuZXdEYXRlKSA9PiBzZXREYXRlKG5ld0RhdGUpLCBbc2V0RGF0ZV0pXFxuICBjb25zdCBvblZpZXcgPSB1c2VDYWxsYmFjaygobmV3VmlldykgPT4gc2V0VmlldyhuZXdWaWV3KSwgW3NldFZpZXddKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkYXRlPXtkYXRlfVxcbiAgICAgICAgZXZlbnRzPXtkZW1vRXZlbnRzfVxcbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxcbiAgICAgICAgb25OYXZpZ2F0ZT17b25OYXZpZ2F0ZX1cXG4gICAgICAgIG9uVmlldz17b25WaWV3fVxcbiAgICAgICAgdmlldz17dmlld31cXG4gICAgICAvPlxcbiAgICA8L2Rpdj5cXG4gIClcXG59XCIgfSwgLi4uVmlldy5wYXJhbWV0ZXJzIH07IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgQ2FudmFzLCBTdG9yeSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwidmlld3NcIlxuICAgIH19Pntgdmlld3NgfTwvaDE+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YFZpZXdzICgnbW9udGgnfCd3ZWVrJ3wnd29ya193ZWVrJ3wnZGF5J3wnYWdlbmRhJylgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YFt2aWV3cy5NT05USCwgdmlld3MuV0VFSywgdmlld3MuREFZLCB2aWV3cy5BR0VOREFdYH08L2lubGluZUNvZGU+PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQW4gYXJyYXkgb2YgYnVpbHQtaW4gdmlldyBuYW1lcyB0byBhbGxvdyB0aGUgY2FsZW5kYXIgdG8gZGlzcGxheS4gYWNjZXB0cyBlaXRoZXIgYW4gYXJyYXkgb2YgYnVpbHRpbiB2aWV3IG5hbWVzLGB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2B2aWV3cz17Wydtb250aCcsICdkYXknLCAnYWdlbmRhJ119XG5gfTwvY29kZT48L3ByZT5cbiAgICA8cD57YG9yIGFuIG9iamVjdCBoYXNoIG9mIHRoZSB2aWV3IG5hbWUgYW5kIHRoZSBjb21wb25lbnQgKG9yIGJvb2xlYW4gZm9yIGJ1aWx0aW4pLmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2B2aWV3cz17e1xuICBtb250aDogdHJ1ZSxcbiAgd2VlazogZmFsc2UsXG4gIG15d2VlazogV29ya1dlZWtWaWV3Q29tcG9uZW50LFxufX1cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwPntgQ3VzdG9tIHZpZXdzIGNhbiBiZSBhbnkgUmVhY3QgY29tcG9uZW50LCB0aGF0IGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBpbnRlcmZhY2U6YH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YGludGVyZmFjZSBWaWV3IHtcbiAgc3RhdGljIHRpdGxlKGRhdGU6IERhdGUsIHsgZm9ybWF0czogRGF0ZUZvcm1hdFtdLCBjdWx0dXJlOiBzdHJpbmc/LCAuLi5wcm9wcyB9KTogc3RyaW5nXG4gIHN0YXRpYyBuYXZpZ2F0ZShkYXRlOiBEYXRlLCBhY3Rpb246ICdQUkVWJyB8ICdORVhUJyB8ICdEQVRFJyk6IERhdGVcbn1cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxDYW52YXMgbWR4VHlwZT1cIkNhbnZhc1wiPlxuICA8U3RvcnkgaWQ9XCJwcm9wcy0tY2FsLXZpZXdzXCIgbWR4VHlwZT1cIlN0b3J5XCIgLz5cbiAgICA8L0NhbnZhcz5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTsiLCJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIEB0cy1ub2NoZWNrXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciBfX1NUT1JZX18gPSBcImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXFxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXFxuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXFxuaW1wb3J0IGRlbW9FdmVudHMgZnJvbSAnLi4vcmVzb3VyY2VzL2V2ZW50cydcXG5pbXBvcnQgbWR4IGZyb20gJy4vdmlld3MubWR4J1xcblxcbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxcblxcbmV4cG9ydCBkZWZhdWx0IHtcXG4gIHRpdGxlOiAncHJvcHMnLFxcbiAgY29tcG9uZW50OiBDYWxlbmRhcixcXG4gIHBhcmFtZXRlcnM6IHtcXG4gICAgZG9jczoge1xcbiAgICAgIHBhZ2U6IG1keCxcXG4gICAgfSxcXG4gIH0sXFxufVxcblxcbmV4cG9ydCBmdW5jdGlvbiBDYWxWaWV3cygpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcXG4gICAgICB2aWV3czogW1ZpZXdzLk1PTlRILCBWaWV3cy5EQVksIFZpZXdzLkFHRU5EQV0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVxcbkNhbFZpZXdzLnN0b3J5TmFtZSA9ICd2aWV3cydcXG5cIjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIF9fTE9DQVRJT05TX01BUF9fID0ge1wiQ2FsVmlld3NcIjp7XCJzdGFydExvY1wiOntcImNvbFwiOjcsXCJsaW5lXCI6MTl9LFwiZW5kTG9jXCI6e1wiY29sXCI6MSxcImxpbmVcIjozOH0sXCJzdGFydEJvZHlcIjp7XCJjb2xcIjo3LFwibGluZVwiOjE5fSxcImVuZEJvZHlcIjp7XCJjb2xcIjoxLFwibGluZVwiOjM4fX19O1xuICAgIFxuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXIsIFZpZXdzLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IG1keCBmcm9tICcuL3ZpZXdzLm1keCdcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgdGl0bGU6ICdwcm9wcycsXG4gIGNvbXBvbmVudDogQ2FsZW5kYXIsXG4gIHBhcmFtZXRlcnM6IHtcbiAgICBkb2NzOiB7XG4gICAgICBwYWdlOiBtZHgsXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IENhbFZpZXdzID0gZnVuY3Rpb24gQ2FsVmlld3MoKSB7XG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIHZpZXdzIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMSksXG4gICAgICB2aWV3czogW1ZpZXdzLk1PTlRILCBWaWV3cy5EQVksIFZpZXdzLkFHRU5EQV0sXG4gICAgfSksXG4gICAgW11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgIDxDYWxlbmRhclxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgIGV2ZW50cz17ZGVtb0V2ZW50c31cbiAgICAgICAgbG9jYWxpemVyPXttTG9jYWxpemVyfVxuICAgICAgICB2aWV3cz17dmlld3N9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59O0NhbFZpZXdzLnN0b3J5TmFtZSA9ICd2aWV3cydcblxuXG5cbkNhbFZpZXdzLnBhcmFtZXRlcnMgPSB7IHN0b3J5U291cmNlOiB7IHNvdXJjZTogXCJmdW5jdGlvbiBDYWxWaWV3cygpIHtcXG4gIGNvbnN0IHsgZGVmYXVsdERhdGUsIHZpZXdzIH0gPSB1c2VNZW1vKFxcbiAgICAoKSA9PiAoe1xcbiAgICAgIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxKSxcXG4gICAgICB2aWV3czogW1ZpZXdzLk1PTlRILCBWaWV3cy5EQVksIFZpZXdzLkFHRU5EQV0sXFxuICAgIH0pLFxcbiAgICBbXVxcbiAgKVxcblxcbiAgcmV0dXJuIChcXG4gICAgPGRpdiBjbGFzc05hbWU9XFxcImhlaWdodDYwMFxcXCI+XFxuICAgICAgPENhbGVuZGFyXFxuICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XFxuICAgICAgICBldmVudHM9e2RlbW9FdmVudHN9XFxuICAgICAgICBsb2NhbGl6ZXI9e21Mb2NhbGl6ZXJ9XFxuICAgICAgICB2aWV3cz17dmlld3N9XFxuICAgICAgLz5cXG4gICAgPC9kaXY+XFxuICApXFxufVwiIH0sIC4uLkNhbFZpZXdzLnBhcmFtZXRlcnMgfTsiLCJpbXBvcnQgTm9vcFdyYXBwZXIgZnJvbSAnLi9Ob29wV3JhcHBlcidcblxuZXhwb3J0IGRlZmF1bHQgTm9vcFdyYXBwZXJcbiIsImltcG9ydCBSZWFjdCwgeyBjcmVhdGVSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnXG5cbmltcG9ydCB7IG5vdGlmeSB9IGZyb20gJy4vdXRpbHMvaGVscGVycydcbmltcG9ydCB7IGRhdGVDZWxsU2VsZWN0aW9uLCBnZXRTbG90QXRYLCBwb2ludEluQm94IH0gZnJvbSAnLi91dGlscy9zZWxlY3Rpb24nXG5pbXBvcnQgU2VsZWN0aW9uLCB7IGdldEJvdW5kc0Zvck5vZGUsIGlzRXZlbnQsIGlzU2hvd01vcmUgfSBmcm9tICcuL1NlbGVjdGlvbidcblxuY2xhc3MgQmFja2dyb3VuZENlbGxzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMsIGNvbnRleHQpIHtcbiAgICBzdXBlcihwcm9wcywgY29udGV4dClcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBzZWxlY3Rpbmc6IGZhbHNlLFxuICAgIH1cbiAgICB0aGlzLmNvbnRhaW5lclJlZiA9IGNyZWF0ZVJlZigpXG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLnByb3BzLnNlbGVjdGFibGUgJiYgdGhpcy5fc2VsZWN0YWJsZSgpXG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLl90ZWFyZG93blNlbGVjdGFibGUoKVxuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgIGlmICghcHJldlByb3BzLnNlbGVjdGFibGUgJiYgdGhpcy5wcm9wcy5zZWxlY3RhYmxlKSB0aGlzLl9zZWxlY3RhYmxlKClcblxuICAgIGlmIChwcmV2UHJvcHMuc2VsZWN0YWJsZSAmJiAhdGhpcy5wcm9wcy5zZWxlY3RhYmxlKVxuICAgICAgdGhpcy5fdGVhcmRvd25TZWxlY3RhYmxlKClcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBsZXQge1xuICAgICAgcmFuZ2UsXG4gICAgICBnZXROb3csXG4gICAgICBnZXR0ZXJzLFxuICAgICAgZGF0ZTogY3VycmVudERhdGUsXG4gICAgICBjb21wb25lbnRzOiB7IGRhdGVDZWxsV3JhcHBlcjogV3JhcHBlciB9LFxuICAgICAgbG9jYWxpemVyLFxuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgbGV0IHsgc2VsZWN0aW5nLCBzdGFydElkeCwgZW5kSWR4IH0gPSB0aGlzLnN0YXRlXG4gICAgbGV0IGN1cnJlbnQgPSBnZXROb3coKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLXJvdy1iZ1wiIHJlZj17dGhpcy5jb250YWluZXJSZWZ9PlxuICAgICAgICB7cmFuZ2UubWFwKChkYXRlLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGxldCBzZWxlY3RlZCA9IHNlbGVjdGluZyAmJiBpbmRleCA+PSBzdGFydElkeCAmJiBpbmRleCA8PSBlbmRJZHhcbiAgICAgICAgICBjb25zdCB7IGNsYXNzTmFtZSwgc3R5bGUgfSA9IGdldHRlcnMuZGF5UHJvcChkYXRlKVxuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxXcmFwcGVyIGtleT17aW5kZXh9IHZhbHVlPXtkYXRlfSByYW5nZT17cmFuZ2V9PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChcbiAgICAgICAgICAgICAgICAgICdyYmMtZGF5LWJnJyxcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkICYmICdyYmMtc2VsZWN0ZWQtY2VsbCcsXG4gICAgICAgICAgICAgICAgICBsb2NhbGl6ZXIuaXNTYW1lRGF0ZShkYXRlLCBjdXJyZW50KSAmJiAncmJjLXRvZGF5JyxcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnREYXRlICYmXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsaXplci5uZXEoY3VycmVudERhdGUsIGRhdGUsICdtb250aCcpICYmXG4gICAgICAgICAgICAgICAgICAgICdyYmMtb2ZmLXJhbmdlLWJnJ1xuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1dyYXBwZXI+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIF9zZWxlY3RhYmxlKCkge1xuICAgIGxldCBub2RlID0gdGhpcy5jb250YWluZXJSZWYuY3VycmVudFxuICAgIGxldCBzZWxlY3RvciA9ICh0aGlzLl9zZWxlY3RvciA9IG5ldyBTZWxlY3Rpb24odGhpcy5wcm9wcy5jb250YWluZXIsIHtcbiAgICAgIGxvbmdQcmVzc1RocmVzaG9sZDogdGhpcy5wcm9wcy5sb25nUHJlc3NUaHJlc2hvbGQsXG4gICAgfSkpXG5cbiAgICBsZXQgc2VsZWN0b3JDbGlja3NIYW5kbGVyID0gKHBvaW50LCBhY3Rpb25UeXBlKSA9PiB7XG4gICAgICBpZiAoIWlzRXZlbnQobm9kZSwgcG9pbnQpICYmICFpc1Nob3dNb3JlKG5vZGUsIHBvaW50KSkge1xuICAgICAgICBsZXQgcm93Qm94ID0gZ2V0Qm91bmRzRm9yTm9kZShub2RlKVxuICAgICAgICBsZXQgeyByYW5nZSwgcnRsIH0gPSB0aGlzLnByb3BzXG5cbiAgICAgICAgaWYgKHBvaW50SW5Cb3gocm93Qm94LCBwb2ludCkpIHtcbiAgICAgICAgICBsZXQgY3VycmVudENlbGwgPSBnZXRTbG90QXRYKHJvd0JveCwgcG9pbnQueCwgcnRsLCByYW5nZS5sZW5ndGgpXG5cbiAgICAgICAgICB0aGlzLl9zZWxlY3RTbG90KHtcbiAgICAgICAgICAgIHN0YXJ0SWR4OiBjdXJyZW50Q2VsbCxcbiAgICAgICAgICAgIGVuZElkeDogY3VycmVudENlbGwsXG4gICAgICAgICAgICBhY3Rpb246IGFjdGlvblR5cGUsXG4gICAgICAgICAgICBib3g6IHBvaW50LFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5pdGlhbCA9IHt9XG4gICAgICB0aGlzLnNldFN0YXRlKHsgc2VsZWN0aW5nOiBmYWxzZSB9KVxuICAgIH1cblxuICAgIHNlbGVjdG9yLm9uKCdzZWxlY3RpbmcnLCAoYm94KSA9PiB7XG4gICAgICBsZXQgeyByYW5nZSwgcnRsIH0gPSB0aGlzLnByb3BzXG5cbiAgICAgIGxldCBzdGFydElkeCA9IC0xXG4gICAgICBsZXQgZW5kSWR4ID0gLTFcblxuICAgICAgaWYgKCF0aGlzLnN0YXRlLnNlbGVjdGluZykge1xuICAgICAgICBub3RpZnkodGhpcy5wcm9wcy5vblNlbGVjdFN0YXJ0LCBbYm94XSlcbiAgICAgICAgdGhpcy5faW5pdGlhbCA9IHsgeDogYm94LngsIHk6IGJveC55IH1cbiAgICAgIH1cbiAgICAgIGlmIChzZWxlY3Rvci5pc1NlbGVjdGVkKG5vZGUpKSB7XG4gICAgICAgIGxldCBub2RlQm94ID0gZ2V0Qm91bmRzRm9yTm9kZShub2RlKVxuICAgICAgICA7KHsgc3RhcnRJZHgsIGVuZElkeCB9ID0gZGF0ZUNlbGxTZWxlY3Rpb24oXG4gICAgICAgICAgdGhpcy5faW5pdGlhbCxcbiAgICAgICAgICBub2RlQm94LFxuICAgICAgICAgIGJveCxcbiAgICAgICAgICByYW5nZS5sZW5ndGgsXG4gICAgICAgICAgcnRsXG4gICAgICAgICkpXG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBzZWxlY3Rpbmc6IHRydWUsXG4gICAgICAgIHN0YXJ0SWR4LFxuICAgICAgICBlbmRJZHgsXG4gICAgICB9KVxuICAgIH0pXG5cbiAgICBzZWxlY3Rvci5vbignYmVmb3JlU2VsZWN0JywgKGJveCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHMuc2VsZWN0YWJsZSAhPT0gJ2lnbm9yZUV2ZW50cycpIHJldHVyblxuXG4gICAgICByZXR1cm4gIWlzRXZlbnQodGhpcy5jb250YWluZXJSZWYuY3VycmVudCwgYm94KVxuICAgIH0pXG5cbiAgICBzZWxlY3Rvci5vbignY2xpY2snLCAocG9pbnQpID0+IHNlbGVjdG9yQ2xpY2tzSGFuZGxlcihwb2ludCwgJ2NsaWNrJykpXG5cbiAgICBzZWxlY3Rvci5vbignZG91YmxlQ2xpY2snLCAocG9pbnQpID0+XG4gICAgICBzZWxlY3RvckNsaWNrc0hhbmRsZXIocG9pbnQsICdkb3VibGVDbGljaycpXG4gICAgKVxuXG4gICAgc2VsZWN0b3Iub24oJ3NlbGVjdCcsIChib3VuZHMpID0+IHtcbiAgICAgIHRoaXMuX3NlbGVjdFNsb3QoeyAuLi50aGlzLnN0YXRlLCBhY3Rpb246ICdzZWxlY3QnLCBib3VuZHMgfSlcbiAgICAgIHRoaXMuX2luaXRpYWwgPSB7fVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNlbGVjdGluZzogZmFsc2UgfSlcbiAgICAgIG5vdGlmeSh0aGlzLnByb3BzLm9uU2VsZWN0RW5kLCBbdGhpcy5zdGF0ZV0pXG4gICAgfSlcbiAgfVxuXG4gIF90ZWFyZG93blNlbGVjdGFibGUoKSB7XG4gICAgaWYgKCF0aGlzLl9zZWxlY3RvcikgcmV0dXJuXG4gICAgdGhpcy5fc2VsZWN0b3IudGVhcmRvd24oKVxuICAgIHRoaXMuX3NlbGVjdG9yID0gbnVsbFxuICB9XG5cbiAgX3NlbGVjdFNsb3QoeyBlbmRJZHgsIHN0YXJ0SWR4LCBhY3Rpb24sIGJvdW5kcywgYm94IH0pIHtcbiAgICBpZiAoZW5kSWR4ICE9PSAtMSAmJiBzdGFydElkeCAhPT0gLTEpXG4gICAgICB0aGlzLnByb3BzLm9uU2VsZWN0U2xvdCAmJlxuICAgICAgICB0aGlzLnByb3BzLm9uU2VsZWN0U2xvdCh7XG4gICAgICAgICAgc3RhcnQ6IHN0YXJ0SWR4LFxuICAgICAgICAgIGVuZDogZW5kSWR4LFxuICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICBib3VuZHMsXG4gICAgICAgICAgYm94LFxuICAgICAgICAgIHJlc291cmNlSWQ6IHRoaXMucHJvcHMucmVzb3VyY2VJZCxcbiAgICAgICAgfSlcbiAgfVxufVxuXG5CYWNrZ3JvdW5kQ2VsbHMucHJvcFR5cGVzID0ge1xuICBkYXRlOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcbiAgZ2V0Tm93OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuXG4gIGdldHRlcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY29tcG9uZW50czogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuXG4gIGNvbnRhaW5lcjogUHJvcFR5cGVzLmZ1bmMsXG4gIGRheVByb3BHZXR0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBzZWxlY3RhYmxlOiBQcm9wVHlwZXMub25lT2YoW3RydWUsIGZhbHNlLCAnaWdub3JlRXZlbnRzJ10pLFxuICBsb25nUHJlc3NUaHJlc2hvbGQ6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgb25TZWxlY3RTbG90OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvblNlbGVjdEVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VsZWN0U3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIHJhbmdlOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSksXG4gIHJ0bDogUHJvcFR5cGVzLmJvb2wsXG4gIHR5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHJlc291cmNlSWQ6IFByb3BUeXBlcy5hbnksXG5cbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMuYW55LFxufVxuXG5leHBvcnQgZGVmYXVsdCBCYWNrZ3JvdW5kQ2VsbHNcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnXG5pbXBvcnQgRXZlbnRSb3dNaXhpbiBmcm9tICcuL0V2ZW50Um93TWl4aW4nXG5pbXBvcnQgeyBldmVudExldmVscyB9IGZyb20gJy4vdXRpbHMvZXZlbnRMZXZlbHMnXG5pbXBvcnQgcmFuZ2UgZnJvbSAnbG9kYXNoL3JhbmdlJ1xuXG5sZXQgaXNTZWdtZW50SW5TbG90ID0gKHNlZywgc2xvdCkgPT4gc2VnLmxlZnQgPD0gc2xvdCAmJiBzZWcucmlnaHQgPj0gc2xvdFxubGV0IGV2ZW50c0luU2xvdCA9IChzZWdtZW50cywgc2xvdCkgPT5cbiAgc2VnbWVudHMuZmlsdGVyKChzZWcpID0+IGlzU2VnbWVudEluU2xvdChzZWcsIHNsb3QpKS5tYXAoKHNlZykgPT4gc2VnLmV2ZW50KVxuXG5jbGFzcyBFdmVudEVuZGluZ1JvdyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHJlbmRlcigpIHtcbiAgICBsZXQge1xuICAgICAgc2VnbWVudHMsXG4gICAgICBzbG90TWV0cmljczogeyBzbG90cyB9LFxuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgbGV0IHJvd1NlZ21lbnRzID0gZXZlbnRMZXZlbHMoc2VnbWVudHMpLmxldmVsc1swXVxuXG4gICAgbGV0IGN1cnJlbnQgPSAxLFxuICAgICAgbGFzdEVuZCA9IDEsXG4gICAgICByb3cgPSBbXVxuXG4gICAgd2hpbGUgKGN1cnJlbnQgPD0gc2xvdHMpIHtcbiAgICAgIGxldCBrZXkgPSAnX2x2bF8nICsgY3VycmVudFxuXG4gICAgICBsZXQgeyBldmVudCwgbGVmdCwgcmlnaHQsIHNwYW4gfSA9XG4gICAgICAgIHJvd1NlZ21lbnRzLmZpbHRlcigoc2VnKSA9PiBpc1NlZ21lbnRJblNsb3Qoc2VnLCBjdXJyZW50KSlbMF0gfHwge30gLy9lc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICAgIGlmICghZXZlbnQpIHtcbiAgICAgICAgY3VycmVudCsrXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGxldCBnYXAgPSBNYXRoLm1heCgwLCBsZWZ0IC0gbGFzdEVuZClcblxuICAgICAgaWYgKHRoaXMuY2FuUmVuZGVyU2xvdEV2ZW50KGxlZnQsIHNwYW4pKSB7XG4gICAgICAgIGxldCBjb250ZW50ID0gRXZlbnRSb3dNaXhpbi5yZW5kZXJFdmVudCh0aGlzLnByb3BzLCBldmVudClcblxuICAgICAgICBpZiAoZ2FwKSB7XG4gICAgICAgICAgcm93LnB1c2goRXZlbnRSb3dNaXhpbi5yZW5kZXJTcGFuKHNsb3RzLCBnYXAsIGtleSArICdfZ2FwJykpXG4gICAgICAgIH1cblxuICAgICAgICByb3cucHVzaChFdmVudFJvd01peGluLnJlbmRlclNwYW4oc2xvdHMsIHNwYW4sIGtleSwgY29udGVudCkpXG5cbiAgICAgICAgbGFzdEVuZCA9IGN1cnJlbnQgPSByaWdodCArIDFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChnYXApIHtcbiAgICAgICAgICByb3cucHVzaChFdmVudFJvd01peGluLnJlbmRlclNwYW4oc2xvdHMsIGdhcCwga2V5ICsgJ19nYXAnKSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJvdy5wdXNoKFxuICAgICAgICAgIEV2ZW50Um93TWl4aW4ucmVuZGVyU3BhbihcbiAgICAgICAgICAgIHNsb3RzLFxuICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIHRoaXMucmVuZGVyU2hvd01vcmUoc2VnbWVudHMsIGN1cnJlbnQpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIGxhc3RFbmQgPSBjdXJyZW50ID0gY3VycmVudCArIDFcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJyYmMtcm93XCI+e3Jvd308L2Rpdj5cbiAgfVxuXG4gIGNhblJlbmRlclNsb3RFdmVudChzbG90LCBzcGFuKSB7XG4gICAgbGV0IHsgc2VnbWVudHMgfSA9IHRoaXMucHJvcHNcblxuICAgIHJldHVybiByYW5nZShzbG90LCBzbG90ICsgc3BhbikuZXZlcnkoKHMpID0+IHtcbiAgICAgIGNvbnN0IGNvdW50ID0gZXZlbnRzSW5TbG90KHNlZ21lbnRzLCBzKS5sZW5ndGhcblxuICAgICAgcmV0dXJuIGNvdW50ID09PSAxXG4gICAgfSlcbiAgfVxuXG4gIHJlbmRlclNob3dNb3JlKHNlZ21lbnRzLCBzbG90KSB7XG4gICAgbGV0IHsgbG9jYWxpemVyLCBzbG90TWV0cmljcyB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IGV2ZW50cyA9IHNsb3RNZXRyaWNzLmdldEV2ZW50c0ZvclNsb3Qoc2xvdClcbiAgICBjb25zdCByZW1haW5pbmdFdmVudHMgPSBldmVudHNJblNsb3Qoc2VnbWVudHMsIHNsb3QpXG4gICAgY29uc3QgY291bnQgPSByZW1haW5pbmdFdmVudHMubGVuZ3RoXG4gICAgcmV0dXJuIGNvdW50ID8gKFxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAga2V5PXsnc21fJyArIHNsb3R9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xzeCgncmJjLWJ1dHRvbi1saW5rJywgJ3JiYy1zaG93LW1vcmUnKX1cbiAgICAgICAgb25DbGljaz17KGUpID0+IHRoaXMuc2hvd01vcmUoc2xvdCwgZSl9XG4gICAgICA+XG4gICAgICAgIHtsb2NhbGl6ZXIubWVzc2FnZXMuc2hvd01vcmUoY291bnQsIHJlbWFpbmluZ0V2ZW50cywgZXZlbnRzKX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICkgOiAoXG4gICAgICBmYWxzZVxuICAgIClcbiAgfVxuXG4gIHNob3dNb3JlKHNsb3QsIGUpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgdGhpcy5wcm9wcy5vblNob3dNb3JlKHNsb3QsIGUudGFyZ2V0KVxuICB9XG59XG5cbkV2ZW50RW5kaW5nUm93LnByb3BUeXBlcyA9IHtcbiAgc2VnbWVudHM6IFByb3BUeXBlcy5hcnJheSxcbiAgc2xvdHM6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uU2hvd01vcmU6IFByb3BUeXBlcy5mdW5jLFxuICAuLi5FdmVudFJvd01peGluLnByb3BUeXBlcyxcbn1cblxuRXZlbnRFbmRpbmdSb3cuZGVmYXVsdFByb3BzID0ge1xuICAuLi5FdmVudFJvd01peGluLmRlZmF1bHRQcm9wcyxcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXZlbnRFbmRpbmdSb3dcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgU2Nyb2xsYWJsZVdlZWtXcmFwcGVyID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJyYmMtcm93LWNvbnRlbnQtc2Nyb2xsLWNvbnRhaW5lclwiPntjaGlsZHJlbn08L2Rpdj5cbn1cblxuZXhwb3J0IGRlZmF1bHQgU2Nyb2xsYWJsZVdlZWtXcmFwcGVyXG4iLCJpbXBvcnQgbWVtb2l6ZSBmcm9tICdtZW1vaXplLW9uZSdcbmltcG9ydCB7IGV2ZW50U2VnbWVudHMsIGVuZE9mUmFuZ2UsIGV2ZW50TGV2ZWxzIH0gZnJvbSAnLi9ldmVudExldmVscydcblxubGV0IGlzU2VnbWVudEluU2xvdCA9IChzZWcsIHNsb3QpID0+IHNlZy5sZWZ0IDw9IHNsb3QgJiYgc2VnLnJpZ2h0ID49IHNsb3RcblxuY29uc3QgaXNFcXVhbCA9IChhLCBiKSA9PlxuICBhWzBdLnJhbmdlID09PSBiWzBdLnJhbmdlICYmIGFbMF0uZXZlbnRzID09PSBiWzBdLmV2ZW50c1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2xvdE1ldHJpY3MoKSB7XG4gIHJldHVybiBtZW1vaXplKChvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgeyByYW5nZSwgZXZlbnRzLCBtYXhSb3dzLCBtaW5Sb3dzLCBhY2Nlc3NvcnMsIGxvY2FsaXplciB9ID0gb3B0aW9uc1xuICAgIGxldCB7IGZpcnN0LCBsYXN0IH0gPSBlbmRPZlJhbmdlKHsgZGF0ZVJhbmdlOiByYW5nZSwgbG9jYWxpemVyIH0pXG5cbiAgICBsZXQgc2VnbWVudHMgPSBldmVudHMubWFwKChldnQpID0+XG4gICAgICBldmVudFNlZ21lbnRzKGV2dCwgcmFuZ2UsIGFjY2Vzc29ycywgbG9jYWxpemVyKVxuICAgIClcblxuICAgIGxldCB7IGxldmVscywgZXh0cmEgfSA9IGV2ZW50TGV2ZWxzKHNlZ21lbnRzLCBNYXRoLm1heChtYXhSb3dzIC0gMSwgMSkpXG4gICAgLy8gU3VidHJhY3QgMSBmcm9tIG1pblJvd3MgdG8gbm90IGluY2x1ZGUgc2hvd01vcmUgYnV0dG9uIHJvdyB3aGVuXG4gICAgLy8gaXQgd291bGQgYmUgcmVuZGVyZWRcbiAgICBjb25zdCBtaW5FdmVudFJvd3MgPSBleHRyYS5sZW5ndGggPiAwID8gbWluUm93cyAtIDEgOiBtaW5Sb3dzXG4gICAgd2hpbGUgKGxldmVscy5sZW5ndGggPCBtaW5FdmVudFJvd3MpIGxldmVscy5wdXNoKFtdKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZpcnN0LFxuICAgICAgbGFzdCxcblxuICAgICAgbGV2ZWxzLFxuICAgICAgZXh0cmEsXG4gICAgICByYW5nZSxcbiAgICAgIHNsb3RzOiByYW5nZS5sZW5ndGgsXG5cbiAgICAgIGNsb25lKGFyZ3MpIHtcbiAgICAgICAgY29uc3QgbWV0cmljcyA9IGdldFNsb3RNZXRyaWNzKClcbiAgICAgICAgcmV0dXJuIG1ldHJpY3MoeyAuLi5vcHRpb25zLCAuLi5hcmdzIH0pXG4gICAgICB9LFxuXG4gICAgICBnZXREYXRlRm9yU2xvdChzbG90TnVtYmVyKSB7XG4gICAgICAgIHJldHVybiByYW5nZVtzbG90TnVtYmVyXVxuICAgICAgfSxcblxuICAgICAgZ2V0U2xvdEZvckRhdGUoZGF0ZSkge1xuICAgICAgICByZXR1cm4gcmFuZ2UuZmluZCgocikgPT4gbG9jYWxpemVyLmlzU2FtZURhdGUociwgZGF0ZSkpXG4gICAgICB9LFxuXG4gICAgICBnZXRFdmVudHNGb3JTbG90KHNsb3QpIHtcbiAgICAgICAgcmV0dXJuIHNlZ21lbnRzXG4gICAgICAgICAgLmZpbHRlcigoc2VnKSA9PiBpc1NlZ21lbnRJblNsb3Qoc2VnLCBzbG90KSlcbiAgICAgICAgICAubWFwKChzZWcpID0+IHNlZy5ldmVudClcbiAgICAgIH0sXG5cbiAgICAgIGNvbnRpbnVlc1ByaW9yKGV2ZW50KSB7XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZXIuY29udGludWVzUHJpb3IoYWNjZXNzb3JzLnN0YXJ0KGV2ZW50KSwgZmlyc3QpXG4gICAgICB9LFxuXG4gICAgICBjb250aW51ZXNBZnRlcihldmVudCkge1xuICAgICAgICBjb25zdCBzdGFydCA9IGFjY2Vzc29ycy5zdGFydChldmVudClcbiAgICAgICAgY29uc3QgZW5kID0gYWNjZXNzb3JzLmVuZChldmVudClcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplci5jb250aW51ZXNBZnRlcihzdGFydCwgZW5kLCBsYXN0KVxuICAgICAgfSxcbiAgICB9XG4gIH0sIGlzRXF1YWwpXG59XG4iLCJpbXBvcnQgUmVhY3QsIHsgY3JlYXRlUmVmIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4J1xuaW1wb3J0IGdldEhlaWdodCBmcm9tICdkb20taGVscGVycy9oZWlnaHQnXG5pbXBvcnQgcXNhIGZyb20gJ2RvbS1oZWxwZXJzL3F1ZXJ5U2VsZWN0b3JBbGwnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5cbmltcG9ydCBCYWNrZ3JvdW5kQ2VsbHMgZnJvbSAnLi9CYWNrZ3JvdW5kQ2VsbHMnXG5pbXBvcnQgRXZlbnRSb3cgZnJvbSAnLi9FdmVudFJvdydcbmltcG9ydCBFdmVudEVuZGluZ1JvdyBmcm9tICcuL0V2ZW50RW5kaW5nUm93J1xuaW1wb3J0IE5vb3BXcmFwcGVyIGZyb20gJy4vTm9vcFdyYXBwZXInXG5pbXBvcnQgU2Nyb2xsYWJsZVdlZWtXcmFwcGVyIGZyb20gJy4vU2Nyb2xsYWJsZVdlZWtXcmFwcGVyJ1xuaW1wb3J0ICogYXMgRGF0ZVNsb3RNZXRyaWNzIGZyb20gJy4vdXRpbHMvRGF0ZVNsb3RNZXRyaWNzJ1xuXG5jbGFzcyBEYXRlQ29udGVudFJvdyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHtcbiAgICBzdXBlciguLi5hcmdzKVxuXG4gICAgdGhpcy5jb250YWluZXJSZWYgPSBjcmVhdGVSZWYoKVxuICAgIHRoaXMuaGVhZGluZ1Jvd1JlZiA9IGNyZWF0ZVJlZigpXG4gICAgdGhpcy5ldmVudFJvd1JlZiA9IGNyZWF0ZVJlZigpXG5cbiAgICB0aGlzLnNsb3RNZXRyaWNzID0gRGF0ZVNsb3RNZXRyaWNzLmdldFNsb3RNZXRyaWNzKClcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdFNsb3QgPSAoc2xvdCkgPT4ge1xuICAgIGNvbnN0IHsgcmFuZ2UsIG9uU2VsZWN0U2xvdCB9ID0gdGhpcy5wcm9wc1xuXG4gICAgb25TZWxlY3RTbG90KHJhbmdlLnNsaWNlKHNsb3Quc3RhcnQsIHNsb3QuZW5kICsgMSksIHNsb3QpXG4gIH1cblxuICBoYW5kbGVTaG93TW9yZSA9IChzbG90LCB0YXJnZXQpID0+IHtcbiAgICBjb25zdCB7IHJhbmdlLCBvblNob3dNb3JlIH0gPSB0aGlzLnByb3BzXG4gICAgbGV0IG1ldHJpY3MgPSB0aGlzLnNsb3RNZXRyaWNzKHRoaXMucHJvcHMpXG4gICAgbGV0IHJvdyA9IHFzYSh0aGlzLmNvbnRhaW5lclJlZi5jdXJyZW50LCAnLnJiYy1yb3ctYmcnKVswXVxuXG4gICAgbGV0IGNlbGxcbiAgICBpZiAocm93KSBjZWxsID0gcm93LmNoaWxkcmVuW3Nsb3QgLSAxXVxuXG4gICAgbGV0IGV2ZW50cyA9IG1ldHJpY3MuZ2V0RXZlbnRzRm9yU2xvdChzbG90KVxuICAgIG9uU2hvd01vcmUoZXZlbnRzLCByYW5nZVtzbG90IC0gMV0sIGNlbGwsIHNsb3QsIHRhcmdldClcbiAgfVxuXG4gIGdldENvbnRhaW5lciA9ICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gdGhpcy5wcm9wc1xuICAgIHJldHVybiBjb250YWluZXIgPyBjb250YWluZXIoKSA6IHRoaXMuY29udGFpbmVyUmVmLmN1cnJlbnRcbiAgfVxuXG4gIGdldFJvd0xpbWl0KCkge1xuICAgIC8qIEd1ZXNzaW5nIHRoaXMgb25seSBnZXRzIGNhbGxlZCBvbiB0aGUgZHVtbXlSb3cgKi9cbiAgICBjb25zdCBldmVudEhlaWdodCA9IGdldEhlaWdodCh0aGlzLmV2ZW50Um93UmVmLmN1cnJlbnQpXG4gICAgY29uc3QgaGVhZGluZ0hlaWdodCA9IHRoaXMuaGVhZGluZ1Jvd1JlZj8uY3VycmVudFxuICAgICAgPyBnZXRIZWlnaHQodGhpcy5oZWFkaW5nUm93UmVmLmN1cnJlbnQpXG4gICAgICA6IDBcbiAgICBjb25zdCBldmVudFNwYWNlID0gZ2V0SGVpZ2h0KHRoaXMuY29udGFpbmVyUmVmLmN1cnJlbnQpIC0gaGVhZGluZ0hlaWdodFxuXG4gICAgcmV0dXJuIE1hdGgubWF4KE1hdGguZmxvb3IoZXZlbnRTcGFjZSAvIGV2ZW50SGVpZ2h0KSwgMSlcbiAgfVxuXG4gIHJlbmRlckhlYWRpbmdDZWxsID0gKGRhdGUsIGluZGV4KSA9PiB7XG4gICAgbGV0IHsgcmVuZGVySGVhZGVyLCBnZXROb3csIGxvY2FsaXplciB9ID0gdGhpcy5wcm9wc1xuXG4gICAgcmV0dXJuIHJlbmRlckhlYWRlcih7XG4gICAgICBkYXRlLFxuICAgICAga2V5OiBgaGVhZGVyXyR7aW5kZXh9YCxcbiAgICAgIGNsYXNzTmFtZTogY2xzeChcbiAgICAgICAgJ3JiYy1kYXRlLWNlbGwnLFxuICAgICAgICBsb2NhbGl6ZXIuaXNTYW1lRGF0ZShkYXRlLCBnZXROb3coKSkgJiYgJ3JiYy1ub3cnXG4gICAgICApLFxuICAgIH0pXG4gIH1cblxuICByZW5kZXJEdW1teSA9ICgpID0+IHtcbiAgICBsZXQgeyBjbGFzc05hbWUsIHJhbmdlLCByZW5kZXJIZWFkZXIsIHNob3dBbGxFdmVudHMgfSA9IHRoaXMucHJvcHNcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0gcmVmPXt0aGlzLmNvbnRhaW5lclJlZn0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goXG4gICAgICAgICAgICAncmJjLXJvdy1jb250ZW50JyxcbiAgICAgICAgICAgIHNob3dBbGxFdmVudHMgJiYgJ3JiYy1yb3ctY29udGVudC1zY3JvbGxhYmxlJ1xuICAgICAgICAgICl9XG4gICAgICAgID5cbiAgICAgICAgICB7cmVuZGVySGVhZGVyICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLXJvd1wiIHJlZj17dGhpcy5oZWFkaW5nUm93UmVmfT5cbiAgICAgICAgICAgICAge3JhbmdlLm1hcCh0aGlzLnJlbmRlckhlYWRpbmdDZWxsKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYmMtcm93XCIgcmVmPXt0aGlzLmV2ZW50Um93UmVmfT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLXJvdy1zZWdtZW50XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLWV2ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYmMtZXZlbnQtY29udGVudFwiPiZuYnNwOzwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBkYXRlLFxuICAgICAgcnRsLFxuICAgICAgcmFuZ2UsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBzZWxlY3RlZCxcbiAgICAgIHNlbGVjdGFibGUsXG4gICAgICByZW5kZXJGb3JNZWFzdXJlLFxuXG4gICAgICBhY2Nlc3NvcnMsXG4gICAgICBnZXR0ZXJzLFxuICAgICAgY29tcG9uZW50cyxcblxuICAgICAgZ2V0Tm93LFxuICAgICAgcmVuZGVySGVhZGVyLFxuICAgICAgb25TZWxlY3QsXG4gICAgICBsb2NhbGl6ZXIsXG4gICAgICBvblNlbGVjdFN0YXJ0LFxuICAgICAgb25TZWxlY3RFbmQsXG4gICAgICBvbkRvdWJsZUNsaWNrLFxuICAgICAgb25LZXlQcmVzcyxcbiAgICAgIHJlc291cmNlSWQsXG4gICAgICBsb25nUHJlc3NUaHJlc2hvbGQsXG4gICAgICBpc0FsbERheSxcbiAgICAgIHJlc2l6YWJsZSxcbiAgICAgIHNob3dBbGxFdmVudHMsXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGlmIChyZW5kZXJGb3JNZWFzdXJlKSByZXR1cm4gdGhpcy5yZW5kZXJEdW1teSgpXG5cbiAgICBsZXQgbWV0cmljcyA9IHRoaXMuc2xvdE1ldHJpY3ModGhpcy5wcm9wcylcbiAgICBsZXQgeyBsZXZlbHMsIGV4dHJhIH0gPSBtZXRyaWNzXG5cbiAgICBsZXQgU2Nyb2xsYWJsZVdlZWtDb21wb25lbnQgPSBzaG93QWxsRXZlbnRzXG4gICAgICA/IFNjcm9sbGFibGVXZWVrV3JhcHBlclxuICAgICAgOiBOb29wV3JhcHBlclxuICAgIGxldCBXZWVrV3JhcHBlciA9IGNvbXBvbmVudHMud2Vla1dyYXBwZXJcblxuICAgIGNvbnN0IGV2ZW50Um93UHJvcHMgPSB7XG4gICAgICBzZWxlY3RlZCxcbiAgICAgIGFjY2Vzc29ycyxcbiAgICAgIGdldHRlcnMsXG4gICAgICBsb2NhbGl6ZXIsXG4gICAgICBjb21wb25lbnRzLFxuICAgICAgb25TZWxlY3QsXG4gICAgICBvbkRvdWJsZUNsaWNrLFxuICAgICAgb25LZXlQcmVzcyxcbiAgICAgIHJlc291cmNlSWQsXG4gICAgICBzbG90TWV0cmljczogbWV0cmljcyxcbiAgICAgIHJlc2l6YWJsZSxcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0gcm9sZT1cInJvd2dyb3VwXCIgcmVmPXt0aGlzLmNvbnRhaW5lclJlZn0+XG4gICAgICAgIDxCYWNrZ3JvdW5kQ2VsbHNcbiAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICBkYXRlPXtkYXRlfVxuICAgICAgICAgIGdldE5vdz17Z2V0Tm93fVxuICAgICAgICAgIHJ0bD17cnRsfVxuICAgICAgICAgIHJhbmdlPXtyYW5nZX1cbiAgICAgICAgICBzZWxlY3RhYmxlPXtzZWxlY3RhYmxlfVxuICAgICAgICAgIGNvbnRhaW5lcj17dGhpcy5nZXRDb250YWluZXJ9XG4gICAgICAgICAgZ2V0dGVycz17Z2V0dGVyc31cbiAgICAgICAgICBvblNlbGVjdFN0YXJ0PXtvblNlbGVjdFN0YXJ0fVxuICAgICAgICAgIG9uU2VsZWN0RW5kPXtvblNlbGVjdEVuZH1cbiAgICAgICAgICBvblNlbGVjdFNsb3Q9e3RoaXMuaGFuZGxlU2VsZWN0U2xvdH1cbiAgICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICAgIGxvbmdQcmVzc1RocmVzaG9sZD17bG9uZ1ByZXNzVGhyZXNob2xkfVxuICAgICAgICAgIHJlc291cmNlSWQ9e3Jlc291cmNlSWR9XG4gICAgICAgIC8+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChcbiAgICAgICAgICAgICdyYmMtcm93LWNvbnRlbnQnLFxuICAgICAgICAgICAgc2hvd0FsbEV2ZW50cyAmJiAncmJjLXJvdy1jb250ZW50LXNjcm9sbGFibGUnXG4gICAgICAgICAgKX1cbiAgICAgICAgICByb2xlPVwicm93XCJcbiAgICAgICAgPlxuICAgICAgICAgIHtyZW5kZXJIZWFkZXIgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYmMtcm93IFwiIHJlZj17dGhpcy5oZWFkaW5nUm93UmVmfT5cbiAgICAgICAgICAgICAge3JhbmdlLm1hcCh0aGlzLnJlbmRlckhlYWRpbmdDZWxsKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFNjcm9sbGFibGVXZWVrQ29tcG9uZW50PlxuICAgICAgICAgICAgPFdlZWtXcmFwcGVyIGlzQWxsRGF5PXtpc0FsbERheX0gey4uLmV2ZW50Um93UHJvcHN9IHJ0bD17dGhpcy5wcm9wcy5ydGx9PlxuICAgICAgICAgICAgICB7bGV2ZWxzLm1hcCgoc2VncywgaWR4KSA9PiAoXG4gICAgICAgICAgICAgICAgPEV2ZW50Um93IGtleT17aWR4fSBzZWdtZW50cz17c2Vnc30gey4uLmV2ZW50Um93UHJvcHN9IC8+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICB7ISFleHRyYS5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICAgIDxFdmVudEVuZGluZ1Jvd1xuICAgICAgICAgICAgICAgICAgc2VnbWVudHM9e2V4dHJhfVxuICAgICAgICAgICAgICAgICAgb25TaG93TW9yZT17dGhpcy5oYW5kbGVTaG93TW9yZX1cbiAgICAgICAgICAgICAgICAgIHsuLi5ldmVudFJvd1Byb3BzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1dlZWtXcmFwcGVyPlxuICAgICAgICAgIDwvU2Nyb2xsYWJsZVdlZWtDb21wb25lbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG59XG5cbkRhdGVDb250ZW50Um93LnByb3BUeXBlcyA9IHtcbiAgZGF0ZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG4gIGV2ZW50czogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIHJhbmdlOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcblxuICBydGw6IFByb3BUeXBlcy5ib29sLFxuICByZXNpemFibGU6IFByb3BUeXBlcy5ib29sLFxuICByZXNvdXJjZUlkOiBQcm9wVHlwZXMuYW55LFxuICByZW5kZXJGb3JNZWFzdXJlOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVuZGVySGVhZGVyOiBQcm9wVHlwZXMuZnVuYyxcblxuICBjb250YWluZXI6IFByb3BUeXBlcy5mdW5jLFxuICBzZWxlY3RlZDogUHJvcFR5cGVzLm9iamVjdCxcbiAgc2VsZWN0YWJsZTogUHJvcFR5cGVzLm9uZU9mKFt0cnVlLCBmYWxzZSwgJ2lnbm9yZUV2ZW50cyddKSxcbiAgbG9uZ1ByZXNzVGhyZXNob2xkOiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIG9uU2hvd01vcmU6IFByb3BUeXBlcy5mdW5jLFxuICBzaG93QWxsRXZlbnRzOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25TZWxlY3RTbG90OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3Q6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdEVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VsZWN0U3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvbkRvdWJsZUNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25LZXlQcmVzczogUHJvcFR5cGVzLmZ1bmMsXG4gIGRheVByb3BHZXR0ZXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gIGdldE5vdzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgaXNBbGxEYXk6IFByb3BUeXBlcy5ib29sLFxuXG4gIGFjY2Vzc29yczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjb21wb25lbnRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGdldHRlcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG5cbiAgbWluUm93czogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBtYXhSb3dzOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG59XG5cbkRhdGVDb250ZW50Um93LmRlZmF1bHRQcm9wcyA9IHtcbiAgbWluUm93czogMCxcbiAgbWF4Um93czogSW5maW5pdHksXG59XG5cbmV4cG9ydCBkZWZhdWx0IERhdGVDb250ZW50Um93XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4J1xuXG5jbGFzcyBFdmVudENlbGwgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgbGV0IHtcbiAgICAgIHN0eWxlLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgZXZlbnQsXG4gICAgICBzZWxlY3RlZCxcbiAgICAgIGlzQWxsRGF5LFxuICAgICAgb25TZWxlY3QsXG4gICAgICBvbkRvdWJsZUNsaWNrLFxuICAgICAgb25LZXlQcmVzcyxcbiAgICAgIGxvY2FsaXplcixcbiAgICAgIGNvbnRpbnVlc1ByaW9yLFxuICAgICAgY29udGludWVzQWZ0ZXIsXG4gICAgICBhY2Nlc3NvcnMsXG4gICAgICBnZXR0ZXJzLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjb21wb25lbnRzOiB7IGV2ZW50OiBFdmVudCwgZXZlbnRXcmFwcGVyOiBFdmVudFdyYXBwZXIgfSxcbiAgICAgIHNsb3RTdGFydCxcbiAgICAgIHNsb3RFbmQsXG4gICAgICAuLi5wcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgZGVsZXRlIHByb3BzLnJlc2l6YWJsZVxuXG4gICAgbGV0IHRpdGxlID0gYWNjZXNzb3JzLnRpdGxlKGV2ZW50KVxuICAgIGxldCB0b29sdGlwID0gYWNjZXNzb3JzLnRvb2x0aXAoZXZlbnQpXG4gICAgbGV0IGVuZCA9IGFjY2Vzc29ycy5lbmQoZXZlbnQpXG4gICAgbGV0IHN0YXJ0ID0gYWNjZXNzb3JzLnN0YXJ0KGV2ZW50KVxuICAgIGxldCBhbGxEYXkgPSBhY2Nlc3NvcnMuYWxsRGF5KGV2ZW50KVxuXG4gICAgbGV0IHNob3dBc0FsbERheSA9XG4gICAgICBpc0FsbERheSB8fFxuICAgICAgYWxsRGF5IHx8XG4gICAgICBsb2NhbGl6ZXIuZGlmZihzdGFydCwgbG9jYWxpemVyLmNlaWwoZW5kLCAnZGF5JyksICdkYXknKSA+IDFcblxuICAgIGxldCB1c2VyUHJvcHMgPSBnZXR0ZXJzLmV2ZW50UHJvcChldmVudCwgc3RhcnQsIGVuZCwgc2VsZWN0ZWQpXG5cbiAgICBjb25zdCBjb250ZW50ID0gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYmMtZXZlbnQtY29udGVudFwiIHRpdGxlPXt0b29sdGlwIHx8IHVuZGVmaW5lZH0+XG4gICAgICAgIHtFdmVudCA/IChcbiAgICAgICAgICA8RXZlbnRcbiAgICAgICAgICAgIGV2ZW50PXtldmVudH1cbiAgICAgICAgICAgIGNvbnRpbnVlc1ByaW9yPXtjb250aW51ZXNQcmlvcn1cbiAgICAgICAgICAgIGNvbnRpbnVlc0FmdGVyPXtjb250aW51ZXNBZnRlcn1cbiAgICAgICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgICAgIGlzQWxsRGF5PXthbGxEYXl9XG4gICAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICAgIHNsb3RTdGFydD17c2xvdFN0YXJ0fVxuICAgICAgICAgICAgc2xvdEVuZD17c2xvdEVuZH1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIHRpdGxlXG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEV2ZW50V3JhcHBlciB7Li4udGhpcy5wcm9wc30gdHlwZT1cImRhdGVcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICBzdHlsZT17eyAuLi51c2VyUHJvcHMuc3R5bGUsIC4uLnN0eWxlIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KCdyYmMtZXZlbnQnLCBjbGFzc05hbWUsIHVzZXJQcm9wcy5jbGFzc05hbWUsIHtcbiAgICAgICAgICAgICdyYmMtc2VsZWN0ZWQnOiBzZWxlY3RlZCxcbiAgICAgICAgICAgICdyYmMtZXZlbnQtYWxsZGF5Jzogc2hvd0FzQWxsRGF5LFxuICAgICAgICAgICAgJ3JiYy1ldmVudC1jb250aW51ZXMtcHJpb3InOiBjb250aW51ZXNQcmlvcixcbiAgICAgICAgICAgICdyYmMtZXZlbnQtY29udGludWVzLWFmdGVyJzogY29udGludWVzQWZ0ZXIsXG4gICAgICAgICAgfSl9XG4gICAgICAgICAgb25DbGljaz17KGUpID0+IG9uU2VsZWN0ICYmIG9uU2VsZWN0KGV2ZW50LCBlKX1cbiAgICAgICAgICBvbkRvdWJsZUNsaWNrPXsoZSkgPT4gb25Eb3VibGVDbGljayAmJiBvbkRvdWJsZUNsaWNrKGV2ZW50LCBlKX1cbiAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleVByZXNzICYmIG9uS2V5UHJlc3MoZXZlbnQsIGUpfVxuICAgICAgICA+XG4gICAgICAgICAge3R5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJyA/IGNoaWxkcmVuKGNvbnRlbnQpIDogY29udGVudH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0V2ZW50V3JhcHBlcj5cbiAgICApXG4gIH1cbn1cblxuRXZlbnRDZWxsLnByb3BUeXBlcyA9IHtcbiAgZXZlbnQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc2xvdFN0YXJ0OiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcbiAgc2xvdEVuZDogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG5cbiAgcmVzaXphYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc0FsbERheTogUHJvcFR5cGVzLmJvb2wsXG4gIGNvbnRpbnVlc1ByaW9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgY29udGludWVzQWZ0ZXI6IFByb3BUeXBlcy5ib29sLFxuXG4gIGFjY2Vzc29yczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjb21wb25lbnRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGdldHRlcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMub2JqZWN0LFxuXG4gIG9uU2VsZWN0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Eb3VibGVDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uS2V5UHJlc3M6IFByb3BUeXBlcy5mdW5jLFxufVxuXG5leHBvcnQgZGVmYXVsdCBFdmVudENlbGxcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgRXZlbnRSb3dNaXhpbiBmcm9tICcuL0V2ZW50Um93TWl4aW4nXG5cbmNsYXNzIEV2ZW50Um93IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgcmVuZGVyKCkge1xuICAgIGxldCB7XG4gICAgICBzZWdtZW50cyxcbiAgICAgIHNsb3RNZXRyaWNzOiB7IHNsb3RzIH0sXG4gICAgICBjbGFzc05hbWUsXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGxldCBsYXN0RW5kID0gMVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHN4KGNsYXNzTmFtZSwgJ3JiYy1yb3cnKX0+XG4gICAgICAgIHtzZWdtZW50cy5yZWR1Y2UoKHJvdywgeyBldmVudCwgbGVmdCwgcmlnaHQsIHNwYW4gfSwgbGkpID0+IHtcbiAgICAgICAgICBsZXQga2V5ID0gJ19sdmxfJyArIGxpXG4gICAgICAgICAgbGV0IGdhcCA9IGxlZnQgLSBsYXN0RW5kXG5cbiAgICAgICAgICBsZXQgY29udGVudCA9IEV2ZW50Um93TWl4aW4ucmVuZGVyRXZlbnQodGhpcy5wcm9wcywgZXZlbnQpXG5cbiAgICAgICAgICBpZiAoZ2FwKSByb3cucHVzaChFdmVudFJvd01peGluLnJlbmRlclNwYW4oc2xvdHMsIGdhcCwgYCR7a2V5fV9nYXBgKSlcblxuICAgICAgICAgIHJvdy5wdXNoKEV2ZW50Um93TWl4aW4ucmVuZGVyU3BhbihzbG90cywgc3Bhbiwga2V5LCBjb250ZW50KSlcblxuICAgICAgICAgIGxhc3RFbmQgPSByaWdodCArIDFcblxuICAgICAgICAgIHJldHVybiByb3dcbiAgICAgICAgfSwgW10pfVxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG59XG5cbkV2ZW50Um93LnByb3BUeXBlcyA9IHtcbiAgc2VnbWVudHM6IFByb3BUeXBlcy5hcnJheSxcbiAgLi4uRXZlbnRSb3dNaXhpbi5wcm9wVHlwZXMsXG59XG5cbkV2ZW50Um93LmRlZmF1bHRQcm9wcyA9IHtcbiAgLi4uRXZlbnRSb3dNaXhpbi5kZWZhdWx0UHJvcHMsXG59XG5cbmV4cG9ydCBkZWZhdWx0IEV2ZW50Um93XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgRXZlbnRDZWxsIGZyb20gJy4vRXZlbnRDZWxsJ1xuaW1wb3J0IHsgaXNTZWxlY3RlZCB9IGZyb20gJy4vdXRpbHMvc2VsZWN0aW9uJ1xuXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9wcm9wLXR5cGVzICovXG5leHBvcnQgZGVmYXVsdCB7XG4gIHByb3BUeXBlczoge1xuICAgIHNsb3RNZXRyaWNzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG5cbiAgICBzZWxlY3RlZDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBpc0FsbERheTogUHJvcFR5cGVzLmJvb2wsXG5cbiAgICBhY2Nlc3NvcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBjb21wb25lbnRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgZ2V0dGVyczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuXG4gICAgb25TZWxlY3Q6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uRG91YmxlQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uS2V5UHJlc3M6IFByb3BUeXBlcy5mdW5jLFxuICB9LFxuXG4gIGRlZmF1bHRQcm9wczoge1xuICAgIHNlZ21lbnRzOiBbXSxcbiAgICBzZWxlY3RlZDoge30sXG4gIH0sXG5cbiAgcmVuZGVyRXZlbnQocHJvcHMsIGV2ZW50KSB7XG4gICAgbGV0IHtcbiAgICAgIHNlbGVjdGVkLFxuICAgICAgaXNBbGxEYXk6IF8sXG4gICAgICBhY2Nlc3NvcnMsXG4gICAgICBnZXR0ZXJzLFxuICAgICAgb25TZWxlY3QsXG4gICAgICBvbkRvdWJsZUNsaWNrLFxuICAgICAgb25LZXlQcmVzcyxcbiAgICAgIGxvY2FsaXplcixcbiAgICAgIHNsb3RNZXRyaWNzLFxuICAgICAgY29tcG9uZW50cyxcbiAgICAgIHJlc2l6YWJsZSxcbiAgICB9ID0gcHJvcHNcblxuICAgIGxldCBjb250aW51ZXNQcmlvciA9IHNsb3RNZXRyaWNzLmNvbnRpbnVlc1ByaW9yKGV2ZW50KVxuICAgIGxldCBjb250aW51ZXNBZnRlciA9IHNsb3RNZXRyaWNzLmNvbnRpbnVlc0FmdGVyKGV2ZW50KVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxFdmVudENlbGxcbiAgICAgICAgZXZlbnQ9e2V2ZW50fVxuICAgICAgICBnZXR0ZXJzPXtnZXR0ZXJzfVxuICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgYWNjZXNzb3JzPXthY2Nlc3NvcnN9XG4gICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XG4gICAgICAgIG9uU2VsZWN0PXtvblNlbGVjdH1cbiAgICAgICAgb25Eb3VibGVDbGljaz17b25Eb3VibGVDbGlja31cbiAgICAgICAgb25LZXlQcmVzcz17b25LZXlQcmVzc31cbiAgICAgICAgY29udGludWVzUHJpb3I9e2NvbnRpbnVlc1ByaW9yfVxuICAgICAgICBjb250aW51ZXNBZnRlcj17Y29udGludWVzQWZ0ZXJ9XG4gICAgICAgIHNsb3RTdGFydD17c2xvdE1ldHJpY3MuZmlyc3R9XG4gICAgICAgIHNsb3RFbmQ9e3Nsb3RNZXRyaWNzLmxhc3R9XG4gICAgICAgIHNlbGVjdGVkPXtpc1NlbGVjdGVkKGV2ZW50LCBzZWxlY3RlZCl9XG4gICAgICAgIHJlc2l6YWJsZT17cmVzaXphYmxlfVxuICAgICAgLz5cbiAgICApXG4gIH0sXG5cbiAgcmVuZGVyU3BhbihzbG90cywgbGVuLCBrZXksIGNvbnRlbnQgPSAnICcpIHtcbiAgICBsZXQgcGVyID0gKE1hdGguYWJzKGxlbikgLyBzbG90cykgKiAxMDAgKyAnJSdcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGtleT17a2V5fVxuICAgICAgICBjbGFzc05hbWU9XCJyYmMtcm93LXNlZ21lbnRcIlxuICAgICAgICAvLyBJRTEwLzExIG5lZWQgbWF4LXdpZHRoLiBmbGV4LWJhc2lzIGRvZXNuJ3QgcmVzcGVjdCBib3gtc2l6aW5nXG4gICAgICAgIHN0eWxlPXt7IFdlYmtpdEZsZXhCYXNpczogcGVyLCBmbGV4QmFzaXM6IHBlciwgbWF4V2lkdGg6IHBlciB9fVxuICAgICAgPlxuICAgICAgICB7Y29udGVudH1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfSxcbn1cbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuY29uc3QgSGVhZGVyID0gKHsgbGFiZWwgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzcGFuIHJvbGU9XCJjb2x1bW5oZWFkZXJcIiBhcmlhLXNvcnQ9XCJub25lXCI+XG4gICAgICB7bGFiZWx9XG4gICAgPC9zcGFuPlxuICApXG59XG5cbkhlYWRlci5wcm9wVHlwZXMgPSB7XG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgSGVhZGVyXG4iLCJmdW5jdGlvbiBOb29wV3JhcHBlcihwcm9wcykge1xuICByZXR1cm4gcHJvcHMuY2hpbGRyZW5cbn1cblxuZXhwb3J0IGRlZmF1bHQgTm9vcFdyYXBwZXJcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBnZXRPZmZzZXQgZnJvbSAnZG9tLWhlbHBlcnMvb2Zmc2V0J1xuXG5pbXBvcnQgdXNlQ2xpY2tPdXRzaWRlIGZyb20gJy4vaG9va3MvdXNlQ2xpY2tPdXRzaWRlJ1xuaW1wb3J0IEV2ZW50Q2VsbCBmcm9tICcuL0V2ZW50Q2VsbCdcbmltcG9ydCB7IGlzU2VsZWN0ZWQgfSBmcm9tICcuL3V0aWxzL3NlbGVjdGlvbidcblxuLyoqXG4gKiBDaGFuZ2VzIHRvIHJlYWN0LW92ZXJsYXlzIGNhdXNlIGlzc3VlIHdpdGggYXV0byBwb3NpdGlvbmluZyxcbiAqIHNvIHdlIG5lZWQgdG8gbWFudWFsbHkgY2FsY3VsYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgcG9wcGVyLFxuICogYW5kIGNvbnN0cmFpbiBpdCB0byB0aGUgTW9udGggY29udGFpbmVyLlxuICovXG5mdW5jdGlvbiBnZXRQb3NpdGlvbih7IHRhcmdldCwgb2Zmc2V0LCBjb250YWluZXIsIGJveCB9KSB7XG4gIGNvbnN0IHsgdG9wLCBsZWZ0LCB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRPZmZzZXQodGFyZ2V0KVxuICBjb25zdCB7XG4gICAgdG9wOiBjVG9wLFxuICAgIGxlZnQ6IGNMZWZ0LFxuICAgIHdpZHRoOiBjV2lkdGgsXG4gICAgaGVpZ2h0OiBjSGVpZ2h0LFxuICB9ID0gZ2V0T2Zmc2V0KGNvbnRhaW5lcilcbiAgY29uc3QgeyB3aWR0aDogYldpZHRoLCBoZWlnaHQ6IGJIZWlnaHQgfSA9IGdldE9mZnNldChib3gpXG4gIGNvbnN0IHZpZXdCb3R0b20gPSBjVG9wICsgY0hlaWdodFxuICBjb25zdCB2aWV3UmlnaHQgPSBjTGVmdCArIGNXaWR0aFxuICBjb25zdCBib3R0b20gPSB0b3AgKyBiSGVpZ2h0XG4gIGNvbnN0IHJpZ2h0ID0gbGVmdCArIGJXaWR0aFxuICBjb25zdCB7IHgsIHkgfSA9IG9mZnNldFxuICBjb25zdCB0b3BPZmZzZXQgPSBib3R0b20gPiB2aWV3Qm90dG9tID8gdG9wIC0gYkhlaWdodCAtIHkgOiB0b3AgKyB5ICsgaGVpZ2h0XG4gIGNvbnN0IGxlZnRPZmZzZXQgPSByaWdodCA+IHZpZXdSaWdodCA/IGxlZnQgKyB4IC0gYldpZHRoICsgd2lkdGggOiBsZWZ0ICsgeFxuXG4gIHJldHVybiB7XG4gICAgdG9wT2Zmc2V0LFxuICAgIGxlZnRPZmZzZXQsXG4gIH1cbn1cblxuZnVuY3Rpb24gUG9wKHtcbiAgY29udGFpbmVyUmVmLFxuICBhY2Nlc3NvcnMsXG4gIGdldHRlcnMsXG4gIHNlbGVjdGVkLFxuICBjb21wb25lbnRzLFxuICBsb2NhbGl6ZXIsXG4gIHBvc2l0aW9uLFxuICBzaG93LFxuICBldmVudHMsXG4gIHNsb3RTdGFydCxcbiAgc2xvdEVuZCxcbiAgb25TZWxlY3QsXG4gIG9uRG91YmxlQ2xpY2ssXG4gIG9uS2V5UHJlc3MsXG4gIGhhbmRsZURyYWdTdGFydCxcbiAgcG9wcGVyUmVmLFxuICB0YXJnZXQsXG4gIG9mZnNldCxcbn0pIHtcbiAgdXNlQ2xpY2tPdXRzaWRlKHsgcmVmOiBwb3BwZXJSZWYsIGNhbGxiYWNrOiBzaG93IH0pXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgeyB0b3BPZmZzZXQsIGxlZnRPZmZzZXQgfSA9IGdldFBvc2l0aW9uKHtcbiAgICAgIHRhcmdldCxcbiAgICAgIG9mZnNldCxcbiAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyUmVmLmN1cnJlbnQsXG4gICAgICBib3g6IHBvcHBlclJlZi5jdXJyZW50LFxuICAgIH0pXG4gICAgcG9wcGVyUmVmLmN1cnJlbnQuc3R5bGUudG9wID0gYCR7dG9wT2Zmc2V0fXB4YFxuICAgIHBvcHBlclJlZi5jdXJyZW50LnN0eWxlLmxlZnQgPSBgJHtsZWZ0T2Zmc2V0fXB4YFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW29mZnNldC54LCBvZmZzZXQueSwgdGFyZ2V0XSlcblxuICBjb25zdCB7IHdpZHRoIH0gPSBwb3NpdGlvblxuICBjb25zdCBzdHlsZSA9IHtcbiAgICBtaW5XaWR0aDogd2lkdGggKyB3aWR0aCAvIDIsXG4gIH1cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHN0eWxlPXtzdHlsZX0gY2xhc3NOYW1lPVwicmJjLW92ZXJsYXlcIiByZWY9e3BvcHBlclJlZn0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJiYy1vdmVybGF5LWhlYWRlclwiPlxuICAgICAgICB7bG9jYWxpemVyLmZvcm1hdChzbG90U3RhcnQsICdkYXlIZWFkZXJGb3JtYXQnKX1cbiAgICAgIDwvZGl2PlxuICAgICAge2V2ZW50cy5tYXAoKGV2ZW50LCBpZHgpID0+IChcbiAgICAgICAgPEV2ZW50Q2VsbFxuICAgICAgICAgIGtleT17aWR4fVxuICAgICAgICAgIHR5cGU9XCJwb3B1cFwiXG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgZXZlbnQ9e2V2ZW50fVxuICAgICAgICAgIGdldHRlcnM9e2dldHRlcnN9XG4gICAgICAgICAgb25TZWxlY3Q9e29uU2VsZWN0fVxuICAgICAgICAgIGFjY2Vzc29ycz17YWNjZXNzb3JzfVxuICAgICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XG4gICAgICAgICAgb25Eb3VibGVDbGljaz17b25Eb3VibGVDbGlja31cbiAgICAgICAgICBvbktleVByZXNzPXtvbktleVByZXNzfVxuICAgICAgICAgIGNvbnRpbnVlc1ByaW9yPXtsb2NhbGl6ZXIubHQoYWNjZXNzb3JzLmVuZChldmVudCksIHNsb3RTdGFydCwgJ2RheScpfVxuICAgICAgICAgIGNvbnRpbnVlc0FmdGVyPXtsb2NhbGl6ZXIuZ3RlKGFjY2Vzc29ycy5zdGFydChldmVudCksIHNsb3RFbmQsICdkYXknKX1cbiAgICAgICAgICBzbG90U3RhcnQ9e3Nsb3RTdGFydH1cbiAgICAgICAgICBzbG90RW5kPXtzbG90RW5kfVxuICAgICAgICAgIHNlbGVjdGVkPXtpc1NlbGVjdGVkKGV2ZW50LCBzZWxlY3RlZCl9XG4gICAgICAgICAgZHJhZ2dhYmxlPXt0cnVlfVxuICAgICAgICAgIG9uRHJhZ1N0YXJ0PXsoKSA9PiBoYW5kbGVEcmFnU3RhcnQoZXZlbnQpfVxuICAgICAgICAgIG9uRHJhZ0VuZD17KCkgPT4gc2hvdygpfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgPC9kaXY+XG4gIClcbn1cblxuY29uc3QgUG9wdXAgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiAoXG4gIDxQb3Agey4uLnByb3BzfSBwb3BwZXJSZWY9e3JlZn0gLz5cbikpXG5Qb3B1cC5wcm9wVHlwZXMgPSB7XG4gIGFjY2Vzc29yczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnZXR0ZXJzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHNlbGVjdGVkOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjb21wb25lbnRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGxvY2FsaXplcjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBwb3NpdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzaG93OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBldmVudHM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzbG90U3RhcnQ6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsXG4gIHNsb3RFbmQ6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICBvblNlbGVjdDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRG91YmxlQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvbktleVByZXNzOiBQcm9wVHlwZXMuZnVuYyxcbiAgaGFuZGxlRHJhZ1N0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9mZnNldDogUHJvcFR5cGVzLnNoYXBlKHsgeDogUHJvcFR5cGVzLm51bWJlciwgeTogUHJvcFR5cGVzLm51bWJlciB9KSxcbn1cbmV4cG9ydCBkZWZhdWx0IFBvcHVwXG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlQ2xpY2tPdXRzaWRlKHsgcmVmLCBjYWxsYmFjayB9KSB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGUpID0+IHtcbiAgICAgIGlmIChyZWYuY3VycmVudCAmJiAhcmVmLmN1cnJlbnQuY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgICAgIGNhbGxiYWNrKClcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgfVxuICB9LCBbcmVmLCBjYWxsYmFja10pXG59XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAncmVhY3Qtb3ZlcmxheXMnXG5pbXBvcnQgUG9wdXAgZnJvbSAnLi9Qb3B1cCdcblxuZnVuY3Rpb24gQ2FsT3ZlcmxheSh7XG4gIGNvbnRhaW5lclJlZixcbiAgcG9wdXBPZmZzZXQgPSA1LFxuICBvdmVybGF5LFxuICBhY2Nlc3NvcnMsXG4gIGxvY2FsaXplcixcbiAgY29tcG9uZW50cyxcbiAgZ2V0dGVycyxcbiAgc2VsZWN0ZWQsXG4gIGhhbmRsZVNlbGVjdEV2ZW50LFxuICBoYW5kbGVEb3VibGVDbGlja0V2ZW50LFxuICBoYW5kbGVLZXlQcmVzc0V2ZW50LFxuICBoYW5kbGVEcmFnU3RhcnQsXG4gIG9uSGlkZSxcbiAgb3ZlcmxheURpc3BsYXksXG59KSB7XG4gIGNvbnN0IHBvcHBlclJlZiA9IHVzZVJlZihudWxsKVxuICBpZiAoIW92ZXJsYXkucG9zaXRpb24pIHJldHVybiBudWxsXG5cbiAgbGV0IG9mZnNldCA9IHBvcHVwT2Zmc2V0XG4gIGlmICghaXNOYU4ocG9wdXBPZmZzZXQpKSB7XG4gICAgb2Zmc2V0ID0geyB4OiBwb3B1cE9mZnNldCwgeTogcG9wdXBPZmZzZXQgfVxuICB9XG5cbiAgY29uc3QgeyBwb3NpdGlvbiwgZXZlbnRzLCBkYXRlLCBlbmQgfSA9IG92ZXJsYXlcbiAgcmV0dXJuIChcbiAgICA8T3ZlcmxheVxuICAgICAgcm9vdENsb3NlXG4gICAgICBmbGlwXG4gICAgICBzaG93XG4gICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgb25IaWRlPXtvbkhpZGV9XG4gICAgICB0YXJnZXQ9e292ZXJsYXkudGFyZ2V0fVxuICAgID5cbiAgICAgIHsoeyBwcm9wcyB9KSA9PiAoXG4gICAgICAgIDxQb3B1cFxuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICBjb250YWluZXJSZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgICByZWY9e3BvcHBlclJlZn1cbiAgICAgICAgICB0YXJnZXQ9e292ZXJsYXkudGFyZ2V0fVxuICAgICAgICAgIG9mZnNldD17b2Zmc2V0fVxuICAgICAgICAgIGFjY2Vzc29ycz17YWNjZXNzb3JzfVxuICAgICAgICAgIGdldHRlcnM9e2dldHRlcnN9XG4gICAgICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgcG9zaXRpb249e3Bvc2l0aW9ufVxuICAgICAgICAgIHNob3c9e292ZXJsYXlEaXNwbGF5fVxuICAgICAgICAgIGV2ZW50cz17ZXZlbnRzfVxuICAgICAgICAgIHNsb3RTdGFydD17ZGF0ZX1cbiAgICAgICAgICBzbG90RW5kPXtlbmR9XG4gICAgICAgICAgb25TZWxlY3Q9e2hhbmRsZVNlbGVjdEV2ZW50fVxuICAgICAgICAgIG9uRG91YmxlQ2xpY2s9e2hhbmRsZURvdWJsZUNsaWNrRXZlbnR9XG4gICAgICAgICAgb25LZXlQcmVzcz17aGFuZGxlS2V5UHJlc3NFdmVudH1cbiAgICAgICAgICBoYW5kbGVEcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9PdmVybGF5PlxuICApXG59XG5cbmNvbnN0IFBvcE92ZXJsYXkgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiAoXG4gIDxDYWxPdmVybGF5IHsuLi5wcm9wc30gY29udGFpbmVyUmVmPXtyZWZ9IC8+XG4pKVxuXG5Qb3BPdmVybGF5LnByb3BUeXBlcyA9IHtcbiAgcG9wdXBPZmZzZXQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5udW1iZXIsXG4gICAgUHJvcFR5cGVzLnNoYXBlKHsgeDogUHJvcFR5cGVzLm51bWJlciwgeTogUHJvcFR5cGVzLm51bWJlciB9KSxcbiAgXSksXG4gIG92ZXJsYXk6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgcG9zaXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gICAgZXZlbnRzOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgZGF0ZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG4gICAgZW5kOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcbiAgfSksXG4gIGFjY2Vzc29yczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY29tcG9uZW50czogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnZXR0ZXJzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHNlbGVjdGVkOiBQcm9wVHlwZXMub2JqZWN0LFxuICBoYW5kbGVTZWxlY3RFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gIGhhbmRsZURvdWJsZUNsaWNrRXZlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICBoYW5kbGVLZXlQcmVzc0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgaGFuZGxlRHJhZ1N0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25IaWRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb3ZlcmxheURpc3BsYXk6IFByb3BUeXBlcy5mdW5jLFxufVxuXG5leHBvcnQgZGVmYXVsdCBQb3BPdmVybGF5XG4iLCJpbXBvcnQgY29udGFpbnMgZnJvbSAnZG9tLWhlbHBlcnMvY29udGFpbnMnXG5pbXBvcnQgY2xvc2VzdCBmcm9tICdkb20taGVscGVycy9jbG9zZXN0J1xuaW1wb3J0IGxpc3RlbiBmcm9tICdkb20taGVscGVycy9saXN0ZW4nXG5cbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgaGFuZGxlciwgdGFyZ2V0ID0gZG9jdW1lbnQpIHtcbiAgcmV0dXJuIGxpc3Rlbih0YXJnZXQsIHR5cGUsIGhhbmRsZXIsIHsgcGFzc2l2ZTogZmFsc2UgfSlcbn1cblxuZnVuY3Rpb24gaXNPdmVyQ29udGFpbmVyKGNvbnRhaW5lciwgeCwgeSkge1xuICByZXR1cm4gIWNvbnRhaW5lciB8fCBjb250YWlucyhjb250YWluZXIsIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFdmVudE5vZGVGcm9tUG9pbnQobm9kZSwgeyBjbGllbnRYLCBjbGllbnRZIH0pIHtcbiAgbGV0IHRhcmdldCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoY2xpZW50WCwgY2xpZW50WSlcbiAgcmV0dXJuIGNsb3Nlc3QodGFyZ2V0LCAnLnJiYy1ldmVudCcsIG5vZGUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaG93TW9yZU5vZGVGcm9tUG9pbnQobm9kZSwgeyBjbGllbnRYLCBjbGllbnRZIH0pIHtcbiAgbGV0IHRhcmdldCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoY2xpZW50WCwgY2xpZW50WSlcbiAgcmV0dXJuIGNsb3Nlc3QodGFyZ2V0LCAnLnJiYy1zaG93LW1vcmUnLCBub2RlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFdmVudChub2RlLCBib3VuZHMpIHtcbiAgcmV0dXJuICEhZ2V0RXZlbnROb2RlRnJvbVBvaW50KG5vZGUsIGJvdW5kcylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2hvd01vcmUobm9kZSwgYm91bmRzKSB7XG4gIHJldHVybiAhIWdldFNob3dNb3JlTm9kZUZyb21Qb2ludChub2RlLCBib3VuZHMpXG59XG5cbmZ1bmN0aW9uIGdldEV2ZW50Q29vcmRpbmF0ZXMoZSkge1xuICBsZXQgdGFyZ2V0ID0gZVxuXG4gIGlmIChlLnRvdWNoZXMgJiYgZS50b3VjaGVzLmxlbmd0aCkge1xuICAgIHRhcmdldCA9IGUudG91Y2hlc1swXVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjbGllbnRYOiB0YXJnZXQuY2xpZW50WCxcbiAgICBjbGllbnRZOiB0YXJnZXQuY2xpZW50WSxcbiAgICBwYWdlWDogdGFyZ2V0LnBhZ2VYLFxuICAgIHBhZ2VZOiB0YXJnZXQucGFnZVksXG4gIH1cbn1cblxuY29uc3QgY2xpY2tUb2xlcmFuY2UgPSA1XG5jb25zdCBjbGlja0ludGVydmFsID0gMjUwXG5cbmNsYXNzIFNlbGVjdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIG5vZGUsXG4gICAgeyBnbG9iYWwgPSBmYWxzZSwgbG9uZ1ByZXNzVGhyZXNob2xkID0gMjUwLCB2YWxpZENvbnRhaW5lcnMgPSBbXSB9ID0ge31cbiAgKSB7XG4gICAgdGhpcy5faW5pdGlhbEV2ZW50ID0gbnVsbFxuICAgIHRoaXMuc2VsZWN0aW5nID0gZmFsc2VcbiAgICB0aGlzLmlzRGV0YWNoZWQgPSBmYWxzZVxuICAgIHRoaXMuY29udGFpbmVyID0gbm9kZVxuICAgIHRoaXMuZ2xvYmFsTW91c2UgPSAhbm9kZSB8fCBnbG9iYWxcbiAgICB0aGlzLmxvbmdQcmVzc1RocmVzaG9sZCA9IGxvbmdQcmVzc1RocmVzaG9sZFxuICAgIHRoaXMudmFsaWRDb250YWluZXJzID0gdmFsaWRDb250YWluZXJzXG5cbiAgICB0aGlzLl9saXN0ZW5lcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpXG5cbiAgICB0aGlzLl9oYW5kbGVJbml0aWFsRXZlbnQgPSB0aGlzLl9oYW5kbGVJbml0aWFsRXZlbnQuYmluZCh0aGlzKVxuICAgIHRoaXMuX2hhbmRsZU1vdmVFdmVudCA9IHRoaXMuX2hhbmRsZU1vdmVFdmVudC5iaW5kKHRoaXMpXG4gICAgdGhpcy5faGFuZGxlVGVybWluYXRpbmdFdmVudCA9IHRoaXMuX2hhbmRsZVRlcm1pbmF0aW5nRXZlbnQuYmluZCh0aGlzKVxuICAgIHRoaXMuX2tleUxpc3RlbmVyID0gdGhpcy5fa2V5TGlzdGVuZXIuYmluZCh0aGlzKVxuICAgIHRoaXMuX2Ryb3BGcm9tT3V0c2lkZUxpc3RlbmVyID0gdGhpcy5fZHJvcEZyb21PdXRzaWRlTGlzdGVuZXIuYmluZCh0aGlzKVxuICAgIHRoaXMuX2RyYWdPdmVyRnJvbU91dHNpZGVMaXN0ZW5lciA9XG4gICAgICB0aGlzLl9kcmFnT3ZlckZyb21PdXRzaWRlTGlzdGVuZXIuYmluZCh0aGlzKVxuXG4gICAgLy8gRml4ZXMgYW4gaU9TIDEwIGJ1ZyB3aGVyZSBzY3JvbGxpbmcgY291bGQgbm90IGJlIHByZXZlbnRlZCBvbiB0aGUgd2luZG93LlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tZXRhZml6enkvZmxpY2tpdHkvaXNzdWVzLzQ1NyNpc3N1ZWNvbW1lbnQtMjU0NTAxMzU2XG4gICAgdGhpcy5fcmVtb3ZlVG91Y2hNb3ZlV2luZG93TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ3RvdWNobW92ZScsXG4gICAgICAoKSA9PiB7fSxcbiAgICAgIHdpbmRvd1xuICAgIClcbiAgICB0aGlzLl9yZW1vdmVLZXlEb3duTGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fa2V5TGlzdGVuZXIpXG4gICAgdGhpcy5fcmVtb3ZlS2V5VXBMaXN0ZW5lciA9IGFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5fa2V5TGlzdGVuZXIpXG4gICAgdGhpcy5fcmVtb3ZlRHJvcEZyb21PdXRzaWRlTGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2Ryb3AnLFxuICAgICAgdGhpcy5fZHJvcEZyb21PdXRzaWRlTGlzdGVuZXJcbiAgICApXG4gICAgdGhpcy5fcmVtb3ZlRHJhZ092ZXJGcm9tT3V0c2lkZUxpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdkcmFnb3ZlcicsXG4gICAgICB0aGlzLl9kcmFnT3ZlckZyb21PdXRzaWRlTGlzdGVuZXJcbiAgICApXG4gICAgdGhpcy5fYWRkSW5pdGlhbEV2ZW50TGlzdGVuZXIoKVxuICB9XG5cbiAgb24odHlwZSwgaGFuZGxlcikge1xuICAgIGxldCBoYW5kbGVycyA9IHRoaXMuX2xpc3RlbmVyc1t0eXBlXSB8fCAodGhpcy5fbGlzdGVuZXJzW3R5cGVdID0gW10pXG5cbiAgICBoYW5kbGVycy5wdXNoKGhhbmRsZXIpXG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVtb3ZlKCkge1xuICAgICAgICBsZXQgaWR4ID0gaGFuZGxlcnMuaW5kZXhPZihoYW5kbGVyKVxuICAgICAgICBpZiAoaWR4ICE9PSAtMSkgaGFuZGxlcnMuc3BsaWNlKGlkeCwgMSlcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgZW1pdCh0eXBlLCAuLi5hcmdzKSB7XG4gICAgbGV0IHJlc3VsdFxuICAgIGxldCBoYW5kbGVycyA9IHRoaXMuX2xpc3RlbmVyc1t0eXBlXSB8fCBbXVxuICAgIGhhbmRsZXJzLmZvckVhY2goKGZuKSA9PiB7XG4gICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHJlc3VsdCA9IGZuKC4uLmFyZ3MpXG4gICAgfSlcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICB0ZWFyZG93bigpIHtcbiAgICB0aGlzLl9pbml0aWFsRXZlbnQgPSBudWxsXG4gICAgdGhpcy5faW5pdGlhbEV2ZW50RGF0YSA9IG51bGxcbiAgICB0aGlzLl9zZWxlY3RSZWN0ID0gbnVsbFxuICAgIHRoaXMuc2VsZWN0aW5nID0gZmFsc2VcbiAgICB0aGlzLl9sYXN0Q2xpY2tEYXRhID0gbnVsbFxuICAgIHRoaXMuaXNEZXRhY2hlZCA9IHRydWVcbiAgICB0aGlzLl9saXN0ZW5lcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpXG4gICAgdGhpcy5fcmVtb3ZlVG91Y2hNb3ZlV2luZG93TGlzdGVuZXIgJiYgdGhpcy5fcmVtb3ZlVG91Y2hNb3ZlV2luZG93TGlzdGVuZXIoKVxuICAgIHRoaXMuX3JlbW92ZUluaXRpYWxFdmVudExpc3RlbmVyICYmIHRoaXMuX3JlbW92ZUluaXRpYWxFdmVudExpc3RlbmVyKClcbiAgICB0aGlzLl9yZW1vdmVFbmRMaXN0ZW5lciAmJiB0aGlzLl9yZW1vdmVFbmRMaXN0ZW5lcigpXG4gICAgdGhpcy5fb25Fc2NMaXN0ZW5lciAmJiB0aGlzLl9vbkVzY0xpc3RlbmVyKClcbiAgICB0aGlzLl9yZW1vdmVNb3ZlTGlzdGVuZXIgJiYgdGhpcy5fcmVtb3ZlTW92ZUxpc3RlbmVyKClcbiAgICB0aGlzLl9yZW1vdmVLZXlVcExpc3RlbmVyICYmIHRoaXMuX3JlbW92ZUtleVVwTGlzdGVuZXIoKVxuICAgIHRoaXMuX3JlbW92ZUtleURvd25MaXN0ZW5lciAmJiB0aGlzLl9yZW1vdmVLZXlEb3duTGlzdGVuZXIoKVxuICAgIHRoaXMuX3JlbW92ZURyb3BGcm9tT3V0c2lkZUxpc3RlbmVyICYmIHRoaXMuX3JlbW92ZURyb3BGcm9tT3V0c2lkZUxpc3RlbmVyKClcbiAgICB0aGlzLl9yZW1vdmVEcmFnT3ZlckZyb21PdXRzaWRlTGlzdGVuZXIgJiZcbiAgICAgIHRoaXMuX3JlbW92ZURyYWdPdmVyRnJvbU91dHNpZGVMaXN0ZW5lcigpXG4gIH1cblxuICBpc1NlbGVjdGVkKG5vZGUpIHtcbiAgICBsZXQgYm94ID0gdGhpcy5fc2VsZWN0UmVjdFxuXG4gICAgaWYgKCFib3ggfHwgIXRoaXMuc2VsZWN0aW5nKSByZXR1cm4gZmFsc2VcblxuICAgIHJldHVybiBvYmplY3RzQ29sbGlkZShib3gsIGdldEJvdW5kc0Zvck5vZGUobm9kZSkpXG4gIH1cblxuICBmaWx0ZXIoaXRlbXMpIHtcbiAgICBsZXQgYm94ID0gdGhpcy5fc2VsZWN0UmVjdFxuXG4gICAgLy9ub3Qgc2VsZWN0aW5nXG4gICAgaWYgKCFib3ggfHwgIXRoaXMuc2VsZWN0aW5nKSByZXR1cm4gW11cblxuICAgIHJldHVybiBpdGVtcy5maWx0ZXIodGhpcy5pc1NlbGVjdGVkLCB0aGlzKVxuICB9XG5cbiAgLy8gQWRkcyBhIGxpc3RlbmVyIHRoYXQgd2lsbCBjYWxsIHRoZSBoYW5kbGVyIG9ubHkgYWZ0ZXIgdGhlIHVzZXIgaGFzIHByZXNzZWQgb24gdGhlIHNjcmVlblxuICAvLyB3aXRob3V0IG1vdmluZyB0aGVpciBmaW5nZXIgZm9yIDI1MG1zLlxuICBfYWRkTG9uZ1ByZXNzTGlzdGVuZXIoaGFuZGxlciwgaW5pdGlhbEV2ZW50KSB7XG4gICAgbGV0IHRpbWVyID0gbnVsbFxuICAgIGxldCByZW1vdmVUb3VjaE1vdmVMaXN0ZW5lciA9IG51bGxcbiAgICBsZXQgcmVtb3ZlVG91Y2hFbmRMaXN0ZW5lciA9IG51bGxcbiAgICBjb25zdCBoYW5kbGVUb3VjaFN0YXJ0ID0gKGluaXRpYWxFdmVudCkgPT4ge1xuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY2xlYW51cCgpXG4gICAgICAgIGhhbmRsZXIoaW5pdGlhbEV2ZW50KVxuICAgICAgfSwgdGhpcy5sb25nUHJlc3NUaHJlc2hvbGQpXG4gICAgICByZW1vdmVUb3VjaE1vdmVMaXN0ZW5lciA9IGFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsICgpID0+IGNsZWFudXAoKSlcbiAgICAgIHJlbW92ZVRvdWNoRW5kTGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsICgpID0+IGNsZWFudXAoKSlcbiAgICB9XG4gICAgY29uc3QgcmVtb3ZlVG91Y2hTdGFydExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICd0b3VjaHN0YXJ0JyxcbiAgICAgIGhhbmRsZVRvdWNoU3RhcnRcbiAgICApXG4gICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcbiAgICAgIGlmICh0aW1lcikge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpXG4gICAgICB9XG4gICAgICBpZiAocmVtb3ZlVG91Y2hNb3ZlTGlzdGVuZXIpIHtcbiAgICAgICAgcmVtb3ZlVG91Y2hNb3ZlTGlzdGVuZXIoKVxuICAgICAgfVxuICAgICAgaWYgKHJlbW92ZVRvdWNoRW5kTGlzdGVuZXIpIHtcbiAgICAgICAgcmVtb3ZlVG91Y2hFbmRMaXN0ZW5lcigpXG4gICAgICB9XG5cbiAgICAgIHRpbWVyID0gbnVsbFxuICAgICAgcmVtb3ZlVG91Y2hNb3ZlTGlzdGVuZXIgPSBudWxsXG4gICAgICByZW1vdmVUb3VjaEVuZExpc3RlbmVyID0gbnVsbFxuICAgIH1cblxuICAgIGlmIChpbml0aWFsRXZlbnQpIHtcbiAgICAgIGhhbmRsZVRvdWNoU3RhcnQoaW5pdGlhbEV2ZW50KVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhbnVwKClcbiAgICAgIHJlbW92ZVRvdWNoU3RhcnRMaXN0ZW5lcigpXG4gICAgfVxuICB9XG5cbiAgLy8gTGlzdGVuIGZvciBtb3VzZWRvd24gYW5kIHRvdWNoc3RhcnQgZXZlbnRzLiBXaGVuIG9uZSBpcyByZWNlaXZlZCwgZGlzYWJsZSB0aGUgb3RoZXIgYW5kIHNldHVwXG4gIC8vIGZ1dHVyZSBldmVudCBoYW5kbGluZyBiYXNlZCBvbiB0aGUgdHlwZSBvZiBldmVudC5cbiAgX2FkZEluaXRpYWxFdmVudExpc3RlbmVyKCkge1xuICAgIGNvbnN0IHJlbW92ZU1vdXNlRG93bkxpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgKGUpID0+IHtcbiAgICAgIHRoaXMuX3JlbW92ZUluaXRpYWxFdmVudExpc3RlbmVyKClcbiAgICAgIHRoaXMuX2hhbmRsZUluaXRpYWxFdmVudChlKVxuICAgICAgdGhpcy5fcmVtb3ZlSW5pdGlhbEV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnbW91c2Vkb3duJyxcbiAgICAgICAgdGhpcy5faGFuZGxlSW5pdGlhbEV2ZW50XG4gICAgICApXG4gICAgfSlcbiAgICBjb25zdCByZW1vdmVUb3VjaFN0YXJ0TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgKGUpID0+IHtcbiAgICAgIHRoaXMuX3JlbW92ZUluaXRpYWxFdmVudExpc3RlbmVyKClcbiAgICAgIHRoaXMuX3JlbW92ZUluaXRpYWxFdmVudExpc3RlbmVyID0gdGhpcy5fYWRkTG9uZ1ByZXNzTGlzdGVuZXIoXG4gICAgICAgIHRoaXMuX2hhbmRsZUluaXRpYWxFdmVudCxcbiAgICAgICAgZVxuICAgICAgKVxuICAgIH0pXG5cbiAgICB0aGlzLl9yZW1vdmVJbml0aWFsRXZlbnRMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgIHJlbW92ZU1vdXNlRG93bkxpc3RlbmVyKClcbiAgICAgIHJlbW92ZVRvdWNoU3RhcnRMaXN0ZW5lcigpXG4gICAgfVxuICB9XG5cbiAgX2Ryb3BGcm9tT3V0c2lkZUxpc3RlbmVyKGUpIHtcbiAgICBjb25zdCB7IHBhZ2VYLCBwYWdlWSwgY2xpZW50WCwgY2xpZW50WSB9ID0gZ2V0RXZlbnRDb29yZGluYXRlcyhlKVxuXG4gICAgdGhpcy5lbWl0KCdkcm9wRnJvbU91dHNpZGUnLCB7XG4gICAgICB4OiBwYWdlWCxcbiAgICAgIHk6IHBhZ2VZLFxuICAgICAgY2xpZW50WDogY2xpZW50WCxcbiAgICAgIGNsaWVudFk6IGNsaWVudFksXG4gICAgfSlcblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICB9XG5cbiAgX2RyYWdPdmVyRnJvbU91dHNpZGVMaXN0ZW5lcihlKSB7XG4gICAgY29uc3QgeyBwYWdlWCwgcGFnZVksIGNsaWVudFgsIGNsaWVudFkgfSA9IGdldEV2ZW50Q29vcmRpbmF0ZXMoZSlcblxuICAgIHRoaXMuZW1pdCgnZHJhZ092ZXJGcm9tT3V0c2lkZScsIHtcbiAgICAgIHg6IHBhZ2VYLFxuICAgICAgeTogcGFnZVksXG4gICAgICBjbGllbnRYOiBjbGllbnRYLFxuICAgICAgY2xpZW50WTogY2xpZW50WSxcbiAgICB9KVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gIH1cblxuICBfaGFuZGxlSW5pdGlhbEV2ZW50KGUpIHtcbiAgICB0aGlzLl9pbml0aWFsRXZlbnQgPSBlXG4gICAgaWYgKHRoaXMuaXNEZXRhY2hlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgeyBjbGllbnRYLCBjbGllbnRZLCBwYWdlWCwgcGFnZVkgfSA9IGdldEV2ZW50Q29vcmRpbmF0ZXMoZSlcbiAgICBsZXQgbm9kZSA9IHRoaXMuY29udGFpbmVyKCksXG4gICAgICBjb2xsaWRlcyxcbiAgICAgIG9mZnNldERhdGFcblxuICAgIC8vIFJpZ2h0IGNsaWNrc1xuICAgIGlmIChcbiAgICAgIGUud2hpY2ggPT09IDMgfHxcbiAgICAgIGUuYnV0dG9uID09PSAyIHx8XG4gICAgICAhaXNPdmVyQ29udGFpbmVyKG5vZGUsIGNsaWVudFgsIGNsaWVudFkpXG4gICAgKVxuICAgICAgcmV0dXJuXG5cbiAgICBpZiAoIXRoaXMuZ2xvYmFsTW91c2UgJiYgbm9kZSAmJiAhY29udGFpbnMobm9kZSwgZS50YXJnZXQpKSB7XG4gICAgICBsZXQgeyB0b3AsIGxlZnQsIGJvdHRvbSwgcmlnaHQgfSA9IG5vcm1hbGl6ZURpc3RhbmNlKDApXG5cbiAgICAgIG9mZnNldERhdGEgPSBnZXRCb3VuZHNGb3JOb2RlKG5vZGUpXG5cbiAgICAgIGNvbGxpZGVzID0gb2JqZWN0c0NvbGxpZGUoXG4gICAgICAgIHtcbiAgICAgICAgICB0b3A6IG9mZnNldERhdGEudG9wIC0gdG9wLFxuICAgICAgICAgIGxlZnQ6IG9mZnNldERhdGEubGVmdCAtIGxlZnQsXG4gICAgICAgICAgYm90dG9tOiBvZmZzZXREYXRhLmJvdHRvbSArIGJvdHRvbSxcbiAgICAgICAgICByaWdodDogb2Zmc2V0RGF0YS5yaWdodCArIHJpZ2h0LFxuICAgICAgICB9LFxuICAgICAgICB7IHRvcDogcGFnZVksIGxlZnQ6IHBhZ2VYIH1cbiAgICAgIClcblxuICAgICAgaWYgKCFjb2xsaWRlcykgcmV0dXJuXG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMuZW1pdChcbiAgICAgICdiZWZvcmVTZWxlY3QnLFxuICAgICAgKHRoaXMuX2luaXRpYWxFdmVudERhdGEgPSB7XG4gICAgICAgIGlzVG91Y2g6IC9edG91Y2gvLnRlc3QoZS50eXBlKSxcbiAgICAgICAgeDogcGFnZVgsXG4gICAgICAgIHk6IHBhZ2VZLFxuICAgICAgICBjbGllbnRYLFxuICAgICAgICBjbGllbnRZLFxuICAgICAgfSlcbiAgICApXG5cbiAgICBpZiAocmVzdWx0ID09PSBmYWxzZSkgcmV0dXJuXG5cbiAgICBzd2l0Y2ggKGUudHlwZSkge1xuICAgICAgY2FzZSAnbW91c2Vkb3duJzpcbiAgICAgICAgdGhpcy5fcmVtb3ZlRW5kTGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICdtb3VzZXVwJyxcbiAgICAgICAgICB0aGlzLl9oYW5kbGVUZXJtaW5hdGluZ0V2ZW50XG4gICAgICAgIClcbiAgICAgICAgdGhpcy5fb25Fc2NMaXN0ZW5lciA9IGFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgJ2tleWRvd24nLFxuICAgICAgICAgIHRoaXMuX2hhbmRsZVRlcm1pbmF0aW5nRXZlbnRcbiAgICAgICAgKVxuICAgICAgICB0aGlzLl9yZW1vdmVNb3ZlTGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICdtb3VzZW1vdmUnLFxuICAgICAgICAgIHRoaXMuX2hhbmRsZU1vdmVFdmVudFxuICAgICAgICApXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICd0b3VjaHN0YXJ0JzpcbiAgICAgICAgdGhpcy5faGFuZGxlTW92ZUV2ZW50KGUpXG4gICAgICAgIHRoaXMuX3JlbW92ZUVuZExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAndG91Y2hlbmQnLFxuICAgICAgICAgIHRoaXMuX2hhbmRsZVRlcm1pbmF0aW5nRXZlbnRcbiAgICAgICAgKVxuICAgICAgICB0aGlzLl9yZW1vdmVNb3ZlTGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICd0b3VjaG1vdmUnLFxuICAgICAgICAgIHRoaXMuX2hhbmRsZU1vdmVFdmVudFxuICAgICAgICApXG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIHdoZXRoZXIgcHJvdmlkZWQgZXZlbnQgdGFyZ2V0IGVsZW1lbnRcbiAgLy8gLSBpcyBjb250YWluZWQgd2l0aGluIGEgdmFsaWQgY29udGFpbmVyXG4gIF9pc1dpdGhpblZhbGlkQ29udGFpbmVyKGUpIHtcbiAgICBjb25zdCBldmVudFRhcmdldCA9IGUudGFyZ2V0XG4gICAgY29uc3QgY29udGFpbmVycyA9IHRoaXMudmFsaWRDb250YWluZXJzXG5cbiAgICBpZiAoIWNvbnRhaW5lcnMgfHwgIWNvbnRhaW5lcnMubGVuZ3RoIHx8ICFldmVudFRhcmdldCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGFpbmVycy5zb21lKCh0YXJnZXQpID0+ICEhZXZlbnRUYXJnZXQuY2xvc2VzdCh0YXJnZXQpKVxuICB9XG5cbiAgX2hhbmRsZVRlcm1pbmF0aW5nRXZlbnQoZSkge1xuICAgIGNvbnN0IHNlbGVjdGluZyA9IHRoaXMuc2VsZWN0aW5nXG4gICAgY29uc3QgYm91bmRzID0gdGhpcy5fc2VsZWN0UmVjdFxuICAgIC8vIElmIGl0J3Mgbm90IGluIHNlbGVjdGluZyBzdGF0ZSwgaXQncyBhIGNsaWNrIGV2ZW50XG4gICAgaWYgKCFzZWxlY3RpbmcgJiYgZS50eXBlLmluY2x1ZGVzKCdrZXknKSkge1xuICAgICAgZSA9IHRoaXMuX2luaXRpYWxFdmVudFxuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0aW5nID0gZmFsc2VcbiAgICB0aGlzLl9yZW1vdmVFbmRMaXN0ZW5lciAmJiB0aGlzLl9yZW1vdmVFbmRMaXN0ZW5lcigpXG4gICAgdGhpcy5fcmVtb3ZlTW92ZUxpc3RlbmVyICYmIHRoaXMuX3JlbW92ZU1vdmVMaXN0ZW5lcigpXG5cbiAgICB0aGlzLl9zZWxlY3RSZWN0ID0gbnVsbFxuICAgIHRoaXMuX2luaXRpYWxFdmVudCA9IG51bGxcbiAgICB0aGlzLl9pbml0aWFsRXZlbnREYXRhID0gbnVsbFxuICAgIGlmICghZSkgcmV0dXJuXG5cbiAgICBsZXQgaW5Sb290ID0gIXRoaXMuY29udGFpbmVyIHx8IGNvbnRhaW5zKHRoaXMuY29udGFpbmVyKCksIGUudGFyZ2V0KVxuICAgIGxldCBpc1dpdGhpblZhbGlkQ29udGFpbmVyID0gdGhpcy5faXNXaXRoaW5WYWxpZENvbnRhaW5lcihlKVxuXG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJyB8fCAhaXNXaXRoaW5WYWxpZENvbnRhaW5lcikge1xuICAgICAgcmV0dXJuIHRoaXMuZW1pdCgncmVzZXQnKVxuICAgIH1cblxuICAgIGlmICghc2VsZWN0aW5nICYmIGluUm9vdCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2hhbmRsZUNsaWNrRXZlbnQoZSlcbiAgICB9XG5cbiAgICAvLyBVc2VyIGRyYWctY2xpY2tlZCBpbiB0aGUgU2VsZWN0YWJsZSBhcmVhXG4gICAgaWYgKHNlbGVjdGluZykgcmV0dXJuIHRoaXMuZW1pdCgnc2VsZWN0JywgYm91bmRzKVxuXG4gICAgcmV0dXJuIHRoaXMuZW1pdCgncmVzZXQnKVxuICB9XG5cbiAgX2hhbmRsZUNsaWNrRXZlbnQoZSkge1xuICAgIGNvbnN0IHsgcGFnZVgsIHBhZ2VZLCBjbGllbnRYLCBjbGllbnRZIH0gPSBnZXRFdmVudENvb3JkaW5hdGVzKGUpXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKClcblxuICAgIGlmIChcbiAgICAgIHRoaXMuX2xhc3RDbGlja0RhdGEgJiZcbiAgICAgIG5vdyAtIHRoaXMuX2xhc3RDbGlja0RhdGEudGltZXN0YW1wIDwgY2xpY2tJbnRlcnZhbFxuICAgICkge1xuICAgICAgLy8gRG91YmxlIGNsaWNrIGV2ZW50XG4gICAgICB0aGlzLl9sYXN0Q2xpY2tEYXRhID0gbnVsbFxuICAgICAgcmV0dXJuIHRoaXMuZW1pdCgnZG91YmxlQ2xpY2snLCB7XG4gICAgICAgIHg6IHBhZ2VYLFxuICAgICAgICB5OiBwYWdlWSxcbiAgICAgICAgY2xpZW50WDogY2xpZW50WCxcbiAgICAgICAgY2xpZW50WTogY2xpZW50WSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gQ2xpY2sgZXZlbnRcbiAgICB0aGlzLl9sYXN0Q2xpY2tEYXRhID0ge1xuICAgICAgdGltZXN0YW1wOiBub3csXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmVtaXQoJ2NsaWNrJywge1xuICAgICAgeDogcGFnZVgsXG4gICAgICB5OiBwYWdlWSxcbiAgICAgIGNsaWVudFg6IGNsaWVudFgsXG4gICAgICBjbGllbnRZOiBjbGllbnRZLFxuICAgIH0pXG4gIH1cblxuICBfaGFuZGxlTW92ZUV2ZW50KGUpIHtcbiAgICBpZiAodGhpcy5faW5pdGlhbEV2ZW50RGF0YSA9PT0gbnVsbCB8fCB0aGlzLmlzRGV0YWNoZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGxldCB7IHgsIHkgfSA9IHRoaXMuX2luaXRpYWxFdmVudERhdGFcbiAgICBjb25zdCB7IHBhZ2VYLCBwYWdlWSB9ID0gZ2V0RXZlbnRDb29yZGluYXRlcyhlKVxuICAgIGxldCB3ID0gTWF0aC5hYnMoeCAtIHBhZ2VYKVxuICAgIGxldCBoID0gTWF0aC5hYnMoeSAtIHBhZ2VZKVxuXG4gICAgbGV0IGxlZnQgPSBNYXRoLm1pbihwYWdlWCwgeCksXG4gICAgICB0b3AgPSBNYXRoLm1pbihwYWdlWSwgeSksXG4gICAgICBvbGQgPSB0aGlzLnNlbGVjdGluZ1xuICAgIGNvbnN0IGNsaWNrID0gdGhpcy5pc0NsaWNrKHBhZ2VYLCBwYWdlWSlcbiAgICAvLyBQcmV2ZW50IGVtaXR0aW5nIHNlbGVjdFN0YXJ0IGV2ZW50IHVudGlsIG1vdXNlIGlzIG1vdmVkLlxuICAgIC8vIGluIENocm9tZSBvbiBXaW5kb3dzLCBtb3VzZU1vdmUgZXZlbnQgbWF5IGJlIGZpcmVkIGp1c3QgYWZ0ZXIgbW91c2VEb3duIGV2ZW50LlxuICAgIGlmIChjbGljayAmJiAhb2xkICYmICEodyB8fCBoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFvbGQgJiYgIWNsaWNrKSB7XG4gICAgICB0aGlzLmVtaXQoJ3NlbGVjdFN0YXJ0JywgdGhpcy5faW5pdGlhbEV2ZW50RGF0YSlcbiAgICB9XG5cbiAgICBpZiAoIWNsaWNrKSB7XG4gICAgICB0aGlzLnNlbGVjdGluZyA9IHRydWVcbiAgICAgIHRoaXMuX3NlbGVjdFJlY3QgPSB7XG4gICAgICAgIHRvcCxcbiAgICAgICAgbGVmdCxcbiAgICAgICAgeDogcGFnZVgsXG4gICAgICAgIHk6IHBhZ2VZLFxuICAgICAgICByaWdodDogbGVmdCArIHcsXG4gICAgICAgIGJvdHRvbTogdG9wICsgaCxcbiAgICAgIH1cbiAgICAgIHRoaXMuZW1pdCgnc2VsZWN0aW5nJywgdGhpcy5fc2VsZWN0UmVjdClcbiAgICB9XG5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgfVxuXG4gIF9rZXlMaXN0ZW5lcihlKSB7XG4gICAgdGhpcy5jdHJsID0gZS5tZXRhS2V5IHx8IGUuY3RybEtleVxuICB9XG5cbiAgaXNDbGljayhwYWdlWCwgcGFnZVkpIHtcbiAgICBsZXQgeyB4LCB5LCBpc1RvdWNoIH0gPSB0aGlzLl9pbml0aWFsRXZlbnREYXRhXG4gICAgcmV0dXJuIChcbiAgICAgICFpc1RvdWNoICYmXG4gICAgICBNYXRoLmFicyhwYWdlWCAtIHgpIDw9IGNsaWNrVG9sZXJhbmNlICYmXG4gICAgICBNYXRoLmFicyhwYWdlWSAtIHkpIDw9IGNsaWNrVG9sZXJhbmNlXG4gICAgKVxuICB9XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgZGlzYW5jZSBwcm9wIGZyb20gZWl0aGVyIGFuIEludCBvciBhbiBPYmplY3RcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplRGlzdGFuY2UoZGlzdGFuY2UgPSAwKSB7XG4gIGlmICh0eXBlb2YgZGlzdGFuY2UgIT09ICdvYmplY3QnKVxuICAgIGRpc3RhbmNlID0ge1xuICAgICAgdG9wOiBkaXN0YW5jZSxcbiAgICAgIGxlZnQ6IGRpc3RhbmNlLFxuICAgICAgcmlnaHQ6IGRpc3RhbmNlLFxuICAgICAgYm90dG9tOiBkaXN0YW5jZSxcbiAgICB9XG5cbiAgcmV0dXJuIGRpc3RhbmNlXG59XG5cbi8qKlxuICogR2l2ZW4gdHdvIG9iamVjdHMgY29udGFpbmluZyBcInRvcFwiLCBcImxlZnRcIiwgXCJvZmZzZXRXaWR0aFwiIGFuZCBcIm9mZnNldEhlaWdodFwiXG4gKiBwcm9wZXJ0aWVzLCBkZXRlcm1pbmUgaWYgdGhleSBjb2xsaWRlLlxuICogQHBhcmFtICB7T2JqZWN0fEhUTUxFbGVtZW50fSBhXG4gKiBAcGFyYW0gIHtPYmplY3R8SFRNTEVsZW1lbnR9IGJcbiAqIEByZXR1cm4ge2Jvb2x9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RzQ29sbGlkZShub2RlQSwgbm9kZUIsIHRvbGVyYW5jZSA9IDApIHtcbiAgbGV0IHtcbiAgICB0b3A6IGFUb3AsXG4gICAgbGVmdDogYUxlZnQsXG4gICAgcmlnaHQ6IGFSaWdodCA9IGFMZWZ0LFxuICAgIGJvdHRvbTogYUJvdHRvbSA9IGFUb3AsXG4gIH0gPSBnZXRCb3VuZHNGb3JOb2RlKG5vZGVBKVxuICBsZXQge1xuICAgIHRvcDogYlRvcCxcbiAgICBsZWZ0OiBiTGVmdCxcbiAgICByaWdodDogYlJpZ2h0ID0gYkxlZnQsXG4gICAgYm90dG9tOiBiQm90dG9tID0gYlRvcCxcbiAgfSA9IGdldEJvdW5kc0Zvck5vZGUobm9kZUIpXG5cbiAgcmV0dXJuICEoXG4gICAgLy8gJ2EnIGJvdHRvbSBkb2Vzbid0IHRvdWNoICdiJyB0b3BcbiAgICAoXG4gICAgICBhQm90dG9tIC0gdG9sZXJhbmNlIDwgYlRvcCB8fFxuICAgICAgLy8gJ2EnIHRvcCBkb2Vzbid0IHRvdWNoICdiJyBib3R0b21cbiAgICAgIGFUb3AgKyB0b2xlcmFuY2UgPiBiQm90dG9tIHx8XG4gICAgICAvLyAnYScgcmlnaHQgZG9lc24ndCB0b3VjaCAnYicgbGVmdFxuICAgICAgYVJpZ2h0IC0gdG9sZXJhbmNlIDwgYkxlZnQgfHxcbiAgICAgIC8vICdhJyBsZWZ0IGRvZXNuJ3QgdG91Y2ggJ2InIHJpZ2h0XG4gICAgICBhTGVmdCArIHRvbGVyYW5jZSA+IGJSaWdodFxuICAgIClcbiAgKVxufVxuXG4vKipcbiAqIEdpdmVuIGEgbm9kZSwgZ2V0IGV2ZXJ5dGhpbmcgbmVlZGVkIHRvIGNhbGN1bGF0ZSBpdHMgYm91bmRhcmllc1xuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IG5vZGVcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJvdW5kc0Zvck5vZGUobm9kZSkge1xuICBpZiAoIW5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSByZXR1cm4gbm9kZVxuXG4gIGxldCByZWN0ID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICBsZWZ0ID0gcmVjdC5sZWZ0ICsgcGFnZU9mZnNldCgnbGVmdCcpLFxuICAgIHRvcCA9IHJlY3QudG9wICsgcGFnZU9mZnNldCgndG9wJylcblxuICByZXR1cm4ge1xuICAgIHRvcCxcbiAgICBsZWZ0LFxuICAgIHJpZ2h0OiAobm9kZS5vZmZzZXRXaWR0aCB8fCAwKSArIGxlZnQsXG4gICAgYm90dG9tOiAobm9kZS5vZmZzZXRIZWlnaHQgfHwgMCkgKyB0b3AsXG4gIH1cbn1cblxuZnVuY3Rpb24gcGFnZU9mZnNldChkaXIpIHtcbiAgaWYgKGRpciA9PT0gJ2xlZnQnKSByZXR1cm4gd2luZG93LnBhZ2VYT2Zmc2V0IHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCB8fCAwXG4gIGlmIChkaXIgPT09ICd0b3AnKSByZXR1cm4gd2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIHx8IDBcbn1cbmV4cG9ydCBkZWZhdWx0IFNlbGVjdGlvblxuIiwiY29uc3QgZ2V0S2V5ID0gKHsgbWluLCBtYXgsIHN0ZXAsIHNsb3RzLCBsb2NhbGl6ZXIgfSkgPT5cbiAgYCR7K2xvY2FsaXplci5zdGFydE9mKG1pbiwgJ21pbnV0ZXMnKX1gICtcbiAgYCR7K2xvY2FsaXplci5zdGFydE9mKG1heCwgJ21pbnV0ZXMnKX1gICtcbiAgYCR7c3RlcH0tJHtzbG90c31gXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTbG90TWV0cmljcyh7XG4gIG1pbjogc3RhcnQsXG4gIG1heDogZW5kLFxuICBzdGVwLFxuICB0aW1lc2xvdHMsXG4gIGxvY2FsaXplcixcbn0pIHtcbiAgY29uc3Qga2V5ID0gZ2V0S2V5KHsgc3RhcnQsIGVuZCwgc3RlcCwgdGltZXNsb3RzLCBsb2NhbGl6ZXIgfSlcblxuICAvLyBEU1QgZGlmZmVyZW5jZXMgYXJlIGhhbmRsZWQgaW5zaWRlIHRoZSBsb2NhbGl6ZXJcbiAgY29uc3QgdG90YWxNaW4gPSAxICsgbG9jYWxpemVyLmdldFRvdGFsTWluKHN0YXJ0LCBlbmQpXG4gIGNvbnN0IG1pbnV0ZXNGcm9tTWlkbmlnaHQgPSBsb2NhbGl6ZXIuZ2V0TWludXRlc0Zyb21NaWRuaWdodChzdGFydClcbiAgY29uc3QgbnVtR3JvdXBzID0gTWF0aC5jZWlsKCh0b3RhbE1pbiAtIDEpIC8gKHN0ZXAgKiB0aW1lc2xvdHMpKVxuICBjb25zdCBudW1TbG90cyA9IG51bUdyb3VwcyAqIHRpbWVzbG90c1xuXG4gIGNvbnN0IGdyb3VwcyA9IG5ldyBBcnJheShudW1Hcm91cHMpXG4gIGNvbnN0IHNsb3RzID0gbmV3IEFycmF5KG51bVNsb3RzKVxuICAvLyBFYWNoIHNsb3QgZGF0ZSBpcyBjcmVhdGVkIGZyb20gXCJ6ZXJvXCIsIGluc3RlYWQgb2YgYWRkaW5nIGBzdGVwYCB0b1xuICAvLyB0aGUgcHJldmlvdXMgb25lLCBpbiBvcmRlciB0byBhdm9pZCBEU1Qgb2RkaXRpZXNcbiAgZm9yIChsZXQgZ3JwID0gMDsgZ3JwIDwgbnVtR3JvdXBzOyBncnArKykge1xuICAgIGdyb3Vwc1tncnBdID0gbmV3IEFycmF5KHRpbWVzbG90cylcblxuICAgIGZvciAobGV0IHNsb3QgPSAwOyBzbG90IDwgdGltZXNsb3RzOyBzbG90KyspIHtcbiAgICAgIGNvbnN0IHNsb3RJZHggPSBncnAgKiB0aW1lc2xvdHMgKyBzbG90XG4gICAgICBjb25zdCBtaW5Gcm9tU3RhcnQgPSBzbG90SWR4ICogc3RlcFxuICAgICAgLy8gQSBkYXRlIHdpdGggdG90YWwgbWludXRlcyBjYWxjdWxhdGVkIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBkYXlcbiAgICAgIHNsb3RzW3Nsb3RJZHhdID0gZ3JvdXBzW2dycF1bc2xvdF0gPSBsb2NhbGl6ZXIuZ2V0U2xvdERhdGUoXG4gICAgICAgIHN0YXJ0LFxuICAgICAgICBtaW51dGVzRnJvbU1pZG5pZ2h0LFxuICAgICAgICBtaW5Gcm9tU3RhcnRcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICAvLyBOZWNlc3NhcnkgdG8gYmUgYWJsZSB0byBzZWxlY3QgdXAgdW50aWwgdGhlIGxhc3QgdGltZXNsb3QgaW4gYSBkYXlcbiAgY29uc3QgbGFzdFNsb3RNaW5Gcm9tU3RhcnQgPSBzbG90cy5sZW5ndGggKiBzdGVwXG4gIHNsb3RzLnB1c2goXG4gICAgbG9jYWxpemVyLmdldFNsb3REYXRlKHN0YXJ0LCBtaW51dGVzRnJvbU1pZG5pZ2h0LCBsYXN0U2xvdE1pbkZyb21TdGFydClcbiAgKVxuXG4gIGZ1bmN0aW9uIHBvc2l0aW9uRnJvbURhdGUoZGF0ZSkge1xuICAgIGNvbnN0IGRpZmYgPVxuICAgICAgbG9jYWxpemVyLmRpZmYoc3RhcnQsIGRhdGUsICdtaW51dGVzJykgK1xuICAgICAgbG9jYWxpemVyLmdldERzdE9mZnNldChzdGFydCwgZGF0ZSlcbiAgICByZXR1cm4gTWF0aC5taW4oZGlmZiwgdG90YWxNaW4pXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGdyb3VwcyxcbiAgICB1cGRhdGUoYXJncykge1xuICAgICAgaWYgKGdldEtleShhcmdzKSAhPT0ga2V5KSByZXR1cm4gZ2V0U2xvdE1ldHJpY3MoYXJncylcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfSxcblxuICAgIGRhdGVJc0luR3JvdXAoZGF0ZSwgZ3JvdXBJbmRleCkge1xuICAgICAgY29uc3QgbmV4dEdyb3VwID0gZ3JvdXBzW2dyb3VwSW5kZXggKyAxXVxuICAgICAgcmV0dXJuIGxvY2FsaXplci5pblJhbmdlKFxuICAgICAgICBkYXRlLFxuICAgICAgICBncm91cHNbZ3JvdXBJbmRleF1bMF0sXG4gICAgICAgIG5leHRHcm91cCA/IG5leHRHcm91cFswXSA6IGVuZCxcbiAgICAgICAgJ21pbnV0ZXMnXG4gICAgICApXG4gICAgfSxcblxuICAgIG5leHRTbG90KHNsb3QpIHtcbiAgICAgIC8vIFdlIGNhbm5vdCBndWFyYW50ZWUgdGhhdCB0aGUgc2xvdCBvYmplY3QgbXVzdCBiZSBpbiBzbG90cyxcbiAgICAgIC8vIGJlY2F1c2UgYWZ0ZXIgZWFjaCB1cGRhdGUsIGEgbmV3IHNsb3RzIGFycmF5IHdpbGwgYmUgY3JlYXRlZC5cbiAgICAgIGxldCBuZXh0ID1cbiAgICAgICAgc2xvdHNbXG4gICAgICAgICAgTWF0aC5taW4oXG4gICAgICAgICAgICBzbG90cy5maW5kSW5kZXgoKHMpID0+IHMgPT09IHNsb3QgfHwgbG9jYWxpemVyLmVxKHMsIHNsb3QpKSArIDEsXG4gICAgICAgICAgICBzbG90cy5sZW5ndGggLSAxXG4gICAgICAgICAgKVxuICAgICAgICBdXG4gICAgICAvLyBpbiB0aGUgY2FzZSBvZiB0aGUgbGFzdCBzbG90IHdlIHdvbid0IGEgbG9uZyBlbm91Z2ggcmFuZ2Ugc28gbWFudWFsbHkgZ2V0IGl0XG4gICAgICBpZiAobG9jYWxpemVyLmVxKG5leHQsIHNsb3QpKSBuZXh0ID0gbG9jYWxpemVyLmFkZChzbG90LCBzdGVwLCAnbWludXRlcycpXG4gICAgICByZXR1cm4gbmV4dFxuICAgIH0sXG4gICAgY2xvc2VzdFNsb3RUb1Bvc2l0aW9uKHBlcmNlbnQpIHtcbiAgICAgIGNvbnN0IHNsb3QgPSBNYXRoLm1pbihcbiAgICAgICAgc2xvdHMubGVuZ3RoIC0gMSxcbiAgICAgICAgTWF0aC5tYXgoMCwgTWF0aC5mbG9vcihwZXJjZW50ICogbnVtU2xvdHMpKVxuICAgICAgKVxuICAgICAgcmV0dXJuIHNsb3RzW3Nsb3RdXG4gICAgfSxcblxuICAgIGNsb3Nlc3RTbG90RnJvbVBvaW50KHBvaW50LCBib3VuZGFyeVJlY3QpIHtcbiAgICAgIGxldCByYW5nZSA9IE1hdGguYWJzKGJvdW5kYXJ5UmVjdC50b3AgLSBib3VuZGFyeVJlY3QuYm90dG9tKVxuICAgICAgcmV0dXJuIHRoaXMuY2xvc2VzdFNsb3RUb1Bvc2l0aW9uKChwb2ludC55IC0gYm91bmRhcnlSZWN0LnRvcCkgLyByYW5nZSlcbiAgICB9LFxuXG4gICAgY2xvc2VzdFNsb3RGcm9tRGF0ZShkYXRlLCBvZmZzZXQgPSAwKSB7XG4gICAgICBpZiAobG9jYWxpemVyLmx0KGRhdGUsIHN0YXJ0LCAnbWludXRlcycpKSByZXR1cm4gc2xvdHNbMF1cbiAgICAgIGlmIChsb2NhbGl6ZXIuZ3QoZGF0ZSwgZW5kLCAnbWludXRlcycpKSByZXR1cm4gc2xvdHNbc2xvdHMubGVuZ3RoIC0gMV1cblxuICAgICAgY29uc3QgZGlmZk1pbnMgPSBsb2NhbGl6ZXIuZGlmZihzdGFydCwgZGF0ZSwgJ21pbnV0ZXMnKVxuICAgICAgcmV0dXJuIHNsb3RzWyhkaWZmTWlucyAtIChkaWZmTWlucyAlIHN0ZXApKSAvIHN0ZXAgKyBvZmZzZXRdXG4gICAgfSxcblxuICAgIHN0YXJ0c0JlZm9yZURheShkYXRlKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemVyLmx0KGRhdGUsIHN0YXJ0LCAnZGF5JylcbiAgICB9LFxuXG4gICAgc3RhcnRzQWZ0ZXJEYXkoZGF0ZSkge1xuICAgICAgcmV0dXJuIGxvY2FsaXplci5ndChkYXRlLCBlbmQsICdkYXknKVxuICAgIH0sXG5cbiAgICBzdGFydHNCZWZvcmUoZGF0ZSkge1xuICAgICAgcmV0dXJuIGxvY2FsaXplci5sdChsb2NhbGl6ZXIubWVyZ2Uoc3RhcnQsIGRhdGUpLCBzdGFydCwgJ21pbnV0ZXMnKVxuICAgIH0sXG5cbiAgICBzdGFydHNBZnRlcihkYXRlKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemVyLmd0KGxvY2FsaXplci5tZXJnZShlbmQsIGRhdGUpLCBlbmQsICdtaW51dGVzJylcbiAgICB9LFxuXG4gICAgZ2V0UmFuZ2UocmFuZ2VTdGFydCwgcmFuZ2VFbmQsIGlnbm9yZU1pbiwgaWdub3JlTWF4KSB7XG4gICAgICBpZiAoIWlnbm9yZU1pbilcbiAgICAgICAgcmFuZ2VTdGFydCA9IGxvY2FsaXplci5taW4oZW5kLCBsb2NhbGl6ZXIubWF4KHN0YXJ0LCByYW5nZVN0YXJ0KSlcbiAgICAgIGlmICghaWdub3JlTWF4KVxuICAgICAgICByYW5nZUVuZCA9IGxvY2FsaXplci5taW4oZW5kLCBsb2NhbGl6ZXIubWF4KHN0YXJ0LCByYW5nZUVuZCkpXG5cbiAgICAgIGNvbnN0IHJhbmdlU3RhcnRNaW4gPSBwb3NpdGlvbkZyb21EYXRlKHJhbmdlU3RhcnQpXG4gICAgICBjb25zdCByYW5nZUVuZE1pbiA9IHBvc2l0aW9uRnJvbURhdGUocmFuZ2VFbmQpXG4gICAgICBjb25zdCB0b3AgPVxuICAgICAgICByYW5nZUVuZE1pbiA+IHN0ZXAgKiBudW1TbG90cyAmJiAhbG9jYWxpemVyLmVxKGVuZCwgcmFuZ2VFbmQpXG4gICAgICAgICAgPyAoKHJhbmdlU3RhcnRNaW4gLSBzdGVwKSAvIChzdGVwICogbnVtU2xvdHMpKSAqIDEwMFxuICAgICAgICAgIDogKHJhbmdlU3RhcnRNaW4gLyAoc3RlcCAqIG51bVNsb3RzKSkgKiAxMDBcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdG9wLFxuICAgICAgICBoZWlnaHQ6IChyYW5nZUVuZE1pbiAvIChzdGVwICogbnVtU2xvdHMpKSAqIDEwMCAtIHRvcCxcbiAgICAgICAgc3RhcnQ6IHBvc2l0aW9uRnJvbURhdGUocmFuZ2VTdGFydCksXG4gICAgICAgIHN0YXJ0RGF0ZTogcmFuZ2VTdGFydCxcbiAgICAgICAgZW5kOiBwb3NpdGlvbkZyb21EYXRlKHJhbmdlRW5kKSxcbiAgICAgICAgZW5kRGF0ZTogcmFuZ2VFbmQsXG4gICAgICB9XG4gICAgfSxcblxuICAgIGdldEN1cnJlbnRUaW1lUG9zaXRpb24ocmFuZ2VTdGFydCkge1xuICAgICAgY29uc3QgcmFuZ2VTdGFydE1pbiA9IHBvc2l0aW9uRnJvbURhdGUocmFuZ2VTdGFydClcbiAgICAgIGNvbnN0IHRvcCA9IChyYW5nZVN0YXJ0TWluIC8gKHN0ZXAgKiBudW1TbG90cykpICogMTAwXG5cbiAgICAgIHJldHVybiB0b3BcbiAgICB9LFxuICB9XG59XG4iLCJpbXBvcnQgc29ydEJ5IGZyb20gJ2xvZGFzaC9zb3J0QnknXG5cbmNsYXNzIEV2ZW50IHtcbiAgY29uc3RydWN0b3IoZGF0YSwgeyBhY2Nlc3NvcnMsIHNsb3RNZXRyaWNzIH0pIHtcbiAgICBjb25zdCB7IHN0YXJ0LCBzdGFydERhdGUsIGVuZCwgZW5kRGF0ZSwgdG9wLCBoZWlnaHQgfSA9XG4gICAgICBzbG90TWV0cmljcy5nZXRSYW5nZShhY2Nlc3NvcnMuc3RhcnQoZGF0YSksIGFjY2Vzc29ycy5lbmQoZGF0YSkpXG5cbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnRcbiAgICB0aGlzLmVuZCA9IGVuZFxuICAgIHRoaXMuc3RhcnRNcyA9ICtzdGFydERhdGVcbiAgICB0aGlzLmVuZE1zID0gK2VuZERhdGVcbiAgICB0aGlzLnRvcCA9IHRvcFxuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0XG4gICAgdGhpcy5kYXRhID0gZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBldmVudCdzIHdpZHRoIHdpdGhvdXQgYW55IG92ZXJsYXAuXG4gICAqL1xuICBnZXQgX3dpZHRoKCkge1xuICAgIC8vIFRoZSBjb250YWluZXIgZXZlbnQncyB3aWR0aCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBtYXhpbXVtIG51bWJlciBvZlxuICAgIC8vIGV2ZW50cyBpbiBhbnkgb2YgaXRzIHJvd3MuXG4gICAgaWYgKHRoaXMucm93cykge1xuICAgICAgY29uc3QgY29sdW1ucyA9XG4gICAgICAgIHRoaXMucm93cy5yZWR1Y2UoXG4gICAgICAgICAgKG1heCwgcm93KSA9PiBNYXRoLm1heChtYXgsIHJvdy5sZWF2ZXMubGVuZ3RoICsgMSksIC8vIGFkZCBpdHNlbGZcbiAgICAgICAgICAwXG4gICAgICAgICkgKyAxIC8vIGFkZCB0aGUgY29udGFpbmVyXG5cbiAgICAgIHJldHVybiAxMDAgLyBjb2x1bW5zXG4gICAgfVxuXG4gICAgLy8gVGhlIHJvdyBldmVudCdzIHdpZHRoIGlzIHRoZSBzcGFjZSBsZWZ0IGJ5IHRoZSBjb250YWluZXIsIGRpdmlkZWRcbiAgICAvLyBhbW9uZyBpdHNlbGYgYW5kIGl0cyBsZWF2ZXMuXG4gICAgaWYgKHRoaXMubGVhdmVzKSB7XG4gICAgICBjb25zdCBhdmFpbGFibGVXaWR0aCA9IDEwMCAtIHRoaXMuY29udGFpbmVyLl93aWR0aFxuICAgICAgcmV0dXJuIGF2YWlsYWJsZVdpZHRoIC8gKHRoaXMubGVhdmVzLmxlbmd0aCArIDEpXG4gICAgfVxuXG4gICAgLy8gVGhlIGxlYWYgZXZlbnQncyB3aWR0aCBpcyBkZXRlcm1pbmVkIGJ5IGl0cyByb3cncyB3aWR0aFxuICAgIHJldHVybiB0aGlzLnJvdy5fd2lkdGhcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZXZlbnQncyBjYWxjdWxhdGVkIHdpZHRoLCBwb3NzaWJseSB3aXRoIGV4dHJhIHdpZHRoIGFkZGVkIGZvclxuICAgKiBvdmVybGFwcGluZyBlZmZlY3QuXG4gICAqL1xuICBnZXQgd2lkdGgoKSB7XG4gICAgY29uc3Qgbm9PdmVybGFwID0gdGhpcy5fd2lkdGhcbiAgICBjb25zdCBvdmVybGFwID0gTWF0aC5taW4oMTAwLCB0aGlzLl93aWR0aCAqIDEuNylcblxuICAgIC8vIENvbnRhaW5lcnMgY2FuIGFsd2F5cyBncm93LlxuICAgIGlmICh0aGlzLnJvd3MpIHtcbiAgICAgIHJldHVybiBvdmVybGFwXG4gICAgfVxuXG4gICAgLy8gUm93cyBjYW4gZ3JvdyBpZiB0aGV5IGhhdmUgbGVhdmVzLlxuICAgIGlmICh0aGlzLmxlYXZlcykge1xuICAgICAgcmV0dXJuIHRoaXMubGVhdmVzLmxlbmd0aCA+IDAgPyBvdmVybGFwIDogbm9PdmVybGFwXG4gICAgfVxuXG4gICAgLy8gTGVhdmVzIGNhbiBncm93IHVubGVzcyB0aGV5J3JlIHRoZSBsYXN0IGl0ZW0gaW4gYSByb3cuXG4gICAgY29uc3QgeyBsZWF2ZXMgfSA9IHRoaXMucm93XG4gICAgY29uc3QgaW5kZXggPSBsZWF2ZXMuaW5kZXhPZih0aGlzKVxuICAgIHJldHVybiBpbmRleCA9PT0gbGVhdmVzLmxlbmd0aCAtIDEgPyBub092ZXJsYXAgOiBvdmVybGFwXG4gIH1cblxuICBnZXQgeE9mZnNldCgpIHtcbiAgICAvLyBDb250YWluZXJzIGhhdmUgbm8gb2Zmc2V0LlxuICAgIGlmICh0aGlzLnJvd3MpIHJldHVybiAwXG5cbiAgICAvLyBSb3dzIGFsd2F5cyBzdGFydCB3aGVyZSB0aGVpciBjb250YWluZXIgZW5kcy5cbiAgICBpZiAodGhpcy5sZWF2ZXMpIHJldHVybiB0aGlzLmNvbnRhaW5lci5fd2lkdGhcblxuICAgIC8vIExlYXZlcyBhcmUgc3ByZWFkIG91dCBldmVubHkgb24gdGhlIHNwYWNlIGxlZnQgYnkgaXRzIHJvdy5cbiAgICBjb25zdCB7IGxlYXZlcywgeE9mZnNldCwgX3dpZHRoIH0gPSB0aGlzLnJvd1xuICAgIGNvbnN0IGluZGV4ID0gbGVhdmVzLmluZGV4T2YodGhpcykgKyAxXG4gICAgcmV0dXJuIHhPZmZzZXQgKyBpbmRleCAqIF93aWR0aFxuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgZXZlbnQgYSBhbmQgYiBpcyBjb25zaWRlcmVkIHRvIGJlIG9uIHRoZSBzYW1lIHJvdy5cbiAqL1xuZnVuY3Rpb24gb25TYW1lUm93KGEsIGIsIG1pbmltdW1TdGFydERpZmZlcmVuY2UpIHtcbiAgcmV0dXJuIChcbiAgICAvLyBPY2N1cGllcyB0aGUgc2FtZSBzdGFydCBzbG90LlxuICAgIE1hdGguYWJzKGIuc3RhcnQgLSBhLnN0YXJ0KSA8IG1pbmltdW1TdGFydERpZmZlcmVuY2UgfHxcbiAgICAvLyBBJ3Mgc3RhcnQgc2xvdCBvdmVybGFwcyB3aXRoIGIncyBlbmQgc2xvdC5cbiAgICAoYi5zdGFydCA+IGEuc3RhcnQgJiYgYi5zdGFydCA8IGEuZW5kKVxuICApXG59XG5cbmZ1bmN0aW9uIHNvcnRCeVJlbmRlcihldmVudHMpIHtcbiAgY29uc3Qgc29ydGVkQnlUaW1lID0gc29ydEJ5KGV2ZW50cywgWydzdGFydE1zJywgKGUpID0+IC1lLmVuZE1zXSlcblxuICBjb25zdCBzb3J0ZWQgPSBbXVxuICB3aGlsZSAoc29ydGVkQnlUaW1lLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBldmVudCA9IHNvcnRlZEJ5VGltZS5zaGlmdCgpXG4gICAgc29ydGVkLnB1c2goZXZlbnQpXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvcnRlZEJ5VGltZS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdGVzdCA9IHNvcnRlZEJ5VGltZVtpXVxuXG4gICAgICAvLyBTdGlsbCBpbnNpZGUgdGhpcyBldmVudCwgbG9vayBmb3IgbmV4dC5cbiAgICAgIGlmIChldmVudC5lbmRNcyA+IHRlc3Quc3RhcnRNcykgY29udGludWVcblxuICAgICAgLy8gV2UndmUgZm91bmQgdGhlIGZpcnN0IGV2ZW50IG9mIHRoZSBuZXh0IGV2ZW50IGdyb3VwLlxuICAgICAgLy8gSWYgdGhhdCBldmVudCBpcyBub3QgcmlnaHQgbmV4dCB0byBvdXIgY3VycmVudCBldmVudCwgd2UgaGF2ZSB0b1xuICAgICAgLy8gbW92ZSBpdCBoZXJlLlxuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gc29ydGVkQnlUaW1lLnNwbGljZShpLCAxKVswXVxuICAgICAgICBzb3J0ZWQucHVzaChldmVudClcbiAgICAgIH1cblxuICAgICAgLy8gV2UndmUgYWxyZWFkeSBmb3VuZCB0aGUgbmV4dCBldmVudCBncm91cCwgc28gc3RvcCBsb29raW5nLlxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc29ydGVkXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFN0eWxlZEV2ZW50cyh7XG4gIGV2ZW50cyxcbiAgbWluaW11bVN0YXJ0RGlmZmVyZW5jZSxcbiAgc2xvdE1ldHJpY3MsXG4gIGFjY2Vzc29ycyxcbn0pIHtcbiAgLy8gQ3JlYXRlIHByb3h5IGV2ZW50cyBhbmQgb3JkZXIgdGhlbSBzbyB0aGF0IHdlIGRvbid0IGhhdmVcbiAgLy8gdG8gZmlkZGxlIHdpdGggei1pbmRleGVzLlxuICBjb25zdCBwcm94aWVzID0gZXZlbnRzLm1hcChcbiAgICAoZXZlbnQpID0+IG5ldyBFdmVudChldmVudCwgeyBzbG90TWV0cmljcywgYWNjZXNzb3JzIH0pXG4gIClcbiAgY29uc3QgZXZlbnRzSW5SZW5kZXJPcmRlciA9IHNvcnRCeVJlbmRlcihwcm94aWVzKVxuXG4gIC8vIEdyb3VwIG92ZXJsYXBwaW5nIGV2ZW50cywgd2hpbGUga2VlcGluZyBvcmRlci5cbiAgLy8gRXZlcnkgZXZlbnQgaXMgYWx3YXlzIG9uZSBvZjogY29udGFpbmVyLCByb3cgb3IgbGVhZi5cbiAgLy8gQ29udGFpbmVycyBjYW4gY29udGFpbiByb3dzLCBhbmQgcm93cyBjYW4gY29udGFpbiBsZWF2ZXMuXG4gIGNvbnN0IGNvbnRhaW5lckV2ZW50cyA9IFtdXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZXZlbnRzSW5SZW5kZXJPcmRlci5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGV2ZW50ID0gZXZlbnRzSW5SZW5kZXJPcmRlcltpXVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhpcyBldmVudCBjYW4gZ28gaW50byBhIGNvbnRhaW5lciBldmVudC5cbiAgICBjb25zdCBjb250YWluZXIgPSBjb250YWluZXJFdmVudHMuZmluZChcbiAgICAgIChjKSA9PlxuICAgICAgICBjLmVuZCA+IGV2ZW50LnN0YXJ0IHx8XG4gICAgICAgIE1hdGguYWJzKGV2ZW50LnN0YXJ0IC0gYy5zdGFydCkgPCBtaW5pbXVtU3RhcnREaWZmZXJlbmNlXG4gICAgKVxuXG4gICAgLy8gQ291bGRuJ3QgZmluZCBhIGNvbnRhaW5lciDigJQgdGhhdCBtZWFucyB0aGlzIGV2ZW50IGlzIGEgY29udGFpbmVyLlxuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICBldmVudC5yb3dzID0gW11cbiAgICAgIGNvbnRhaW5lckV2ZW50cy5wdXNoKGV2ZW50KVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICAvLyBGb3VuZCBhIGNvbnRhaW5lciBmb3IgdGhlIGV2ZW50LlxuICAgIGV2ZW50LmNvbnRhaW5lciA9IGNvbnRhaW5lclxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IGNhbiBiZSBwbGFjZWQgaW4gYW4gZXhpc3Rpbmcgcm93LlxuICAgIC8vIFN0YXJ0IGxvb2tpbmcgZnJvbSBiZWhpbmQuXG4gICAgbGV0IHJvdyA9IG51bGxcbiAgICBmb3IgKGxldCBqID0gY29udGFpbmVyLnJvd3MubGVuZ3RoIC0gMTsgIXJvdyAmJiBqID49IDA7IGotLSkge1xuICAgICAgaWYgKG9uU2FtZVJvdyhjb250YWluZXIucm93c1tqXSwgZXZlbnQsIG1pbmltdW1TdGFydERpZmZlcmVuY2UpKSB7XG4gICAgICAgIHJvdyA9IGNvbnRhaW5lci5yb3dzW2pdXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJvdykge1xuICAgICAgLy8gRm91bmQgYSByb3csIHNvIGFkZCBpdC5cbiAgICAgIHJvdy5sZWF2ZXMucHVzaChldmVudClcbiAgICAgIGV2ZW50LnJvdyA9IHJvd1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDb3VsZG4ndCBmaW5kIGEgcm93IOKAkyB0aGF0IG1lYW5zIHRoaXMgZXZlbnQgaXMgYSByb3cuXG4gICAgICBldmVudC5sZWF2ZXMgPSBbXVxuICAgICAgY29udGFpbmVyLnJvd3MucHVzaChldmVudClcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm4gdGhlIG9yaWdpbmFsIGV2ZW50cywgYWxvbmcgd2l0aCB0aGVpciBzdHlsZXMuXG4gIHJldHVybiBldmVudHNJblJlbmRlck9yZGVyLm1hcCgoZXZlbnQpID0+ICh7XG4gICAgZXZlbnQ6IGV2ZW50LmRhdGEsXG4gICAgc3R5bGU6IHtcbiAgICAgIHRvcDogZXZlbnQudG9wLFxuICAgICAgaGVpZ2h0OiBldmVudC5oZWlnaHQsXG4gICAgICB3aWR0aDogZXZlbnQud2lkdGgsXG4gICAgICB4T2Zmc2V0OiBNYXRoLm1heCgwLCBldmVudC54T2Zmc2V0KSxcbiAgICB9LFxuICB9KSlcbn1cbiIsImltcG9ydCBvdmVybGFwIGZyb20gJy4vb3ZlcmxhcCdcblxuZnVuY3Rpb24gZ2V0TWF4SWR4REZTKG5vZGUsIG1heElkeCwgdmlzaXRlZCkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuZnJpZW5kcy5sZW5ndGg7ICsraSkge1xuICAgIGlmICh2aXNpdGVkLmluZGV4T2Yobm9kZS5mcmllbmRzW2ldKSA+IC0xKSBjb250aW51ZVxuICAgIG1heElkeCA9IG1heElkeCA+IG5vZGUuZnJpZW5kc1tpXS5pZHggPyBtYXhJZHggOiBub2RlLmZyaWVuZHNbaV0uaWR4XG4gICAgLy8gVE9ETyA6IHRyYWNlIGl0IGJ5IG5vdCBvYmplY3QgYnV0IGtpbmRhIGluZGV4IG9yIHNvbWV0aGluZyBmb3IgcGVyZm9ybWFuY2VcbiAgICB2aXNpdGVkLnB1c2gobm9kZS5mcmllbmRzW2ldKVxuICAgIGNvbnN0IG5ld0lkeCA9IGdldE1heElkeERGUyhub2RlLmZyaWVuZHNbaV0sIG1heElkeCwgdmlzaXRlZClcbiAgICBtYXhJZHggPSBtYXhJZHggPiBuZXdJZHggPyBtYXhJZHggOiBuZXdJZHhcbiAgfVxuICByZXR1cm4gbWF4SWR4XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICh7XG4gIGV2ZW50cyxcbiAgbWluaW11bVN0YXJ0RGlmZmVyZW5jZSxcbiAgc2xvdE1ldHJpY3MsXG4gIGFjY2Vzc29ycyxcbn0pIHtcbiAgY29uc3Qgc3R5bGVkRXZlbnRzID0gb3ZlcmxhcCh7XG4gICAgZXZlbnRzLFxuICAgIG1pbmltdW1TdGFydERpZmZlcmVuY2UsXG4gICAgc2xvdE1ldHJpY3MsXG4gICAgYWNjZXNzb3JzLFxuICB9KVxuXG4gIHN0eWxlZEV2ZW50cy5zb3J0KChhLCBiKSA9PiB7XG4gICAgYSA9IGEuc3R5bGVcbiAgICBiID0gYi5zdHlsZVxuICAgIGlmIChhLnRvcCAhPT0gYi50b3ApIHJldHVybiBhLnRvcCA+IGIudG9wID8gMSA6IC0xXG4gICAgZWxzZSBpZiAoYS5oZWlnaHQgIT09IGIuaGVpZ2h0KVxuICAgICAgcmV0dXJuIGEudG9wICsgYS5oZWlnaHQgPCBiLnRvcCArIGIuaGVpZ2h0ID8gMSA6IC0xXG4gICAgZWxzZSByZXR1cm4gMFxuICB9KVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3R5bGVkRXZlbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgc3R5bGVkRXZlbnRzW2ldLmZyaWVuZHMgPSBbXVxuICAgIGRlbGV0ZSBzdHlsZWRFdmVudHNbaV0uc3R5bGUubGVmdFxuICAgIGRlbGV0ZSBzdHlsZWRFdmVudHNbaV0uc3R5bGUubGVmdFxuICAgIGRlbGV0ZSBzdHlsZWRFdmVudHNbaV0uaWR4XG4gICAgZGVsZXRlIHN0eWxlZEV2ZW50c1tpXS5zaXplXG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0eWxlZEV2ZW50cy5sZW5ndGggLSAxOyArK2kpIHtcbiAgICBjb25zdCBzZTEgPSBzdHlsZWRFdmVudHNbaV1cbiAgICBjb25zdCB5MSA9IHNlMS5zdHlsZS50b3BcbiAgICBjb25zdCB5MiA9IHNlMS5zdHlsZS50b3AgKyBzZTEuc3R5bGUuaGVpZ2h0XG5cbiAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBzdHlsZWRFdmVudHMubGVuZ3RoOyArK2opIHtcbiAgICAgIGNvbnN0IHNlMiA9IHN0eWxlZEV2ZW50c1tqXVxuICAgICAgY29uc3QgeTMgPSBzZTIuc3R5bGUudG9wXG4gICAgICBjb25zdCB5NCA9IHNlMi5zdHlsZS50b3AgKyBzZTIuc3R5bGUuaGVpZ2h0XG5cbiAgICAgIGlmIChcbiAgICAgICAgKHkzID49IHkxICYmIHk0IDw9IHkyKSB8fFxuICAgICAgICAoeTQgPiB5MSAmJiB5NCA8PSB5MikgfHxcbiAgICAgICAgKHkzID49IHkxICYmIHkzIDwgeTIpXG4gICAgICApIHtcbiAgICAgICAgLy8gVE9ETyA6IGhhc2htYXAgd291bGQgYmUgZWZmZWN0aXZlIGZvciBwZXJmb3JtYW5jZVxuICAgICAgICBzZTEuZnJpZW5kcy5wdXNoKHNlMilcbiAgICAgICAgc2UyLmZyaWVuZHMucHVzaChzZTEpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHlsZWRFdmVudHMubGVuZ3RoOyArK2kpIHtcbiAgICBjb25zdCBzZSA9IHN0eWxlZEV2ZW50c1tpXVxuICAgIGNvbnN0IGJpdG1hcCA9IFtdXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCAxMDA7ICsraikgYml0bWFwLnB1c2goMSkgLy8gMSBtZWFucyBhdmFpbGFibGVcblxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2UuZnJpZW5kcy5sZW5ndGg7ICsrailcbiAgICAgIGlmIChzZS5mcmllbmRzW2pdLmlkeCAhPT0gdW5kZWZpbmVkKSBiaXRtYXBbc2UuZnJpZW5kc1tqXS5pZHhdID0gMCAvLyAwIG1lYW5zIHJlc2VydmVkXG5cbiAgICBzZS5pZHggPSBiaXRtYXAuaW5kZXhPZigxKVxuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHlsZWRFdmVudHMubGVuZ3RoOyArK2kpIHtcbiAgICBsZXQgc2l6ZSA9IDBcblxuICAgIGlmIChzdHlsZWRFdmVudHNbaV0uc2l6ZSkgY29udGludWVcblxuICAgIGNvbnN0IGFsbEZyaWVuZHMgPSBbXVxuICAgIGNvbnN0IG1heElkeCA9IGdldE1heElkeERGUyhzdHlsZWRFdmVudHNbaV0sIDAsIGFsbEZyaWVuZHMpXG4gICAgc2l6ZSA9IDEwMCAvIChtYXhJZHggKyAxKVxuICAgIHN0eWxlZEV2ZW50c1tpXS5zaXplID0gc2l6ZVxuXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBhbGxGcmllbmRzLmxlbmd0aDsgKytqKSBhbGxGcmllbmRzW2pdLnNpemUgPSBzaXplXG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0eWxlZEV2ZW50cy5sZW5ndGg7ICsraSkge1xuICAgIGNvbnN0IGUgPSBzdHlsZWRFdmVudHNbaV1cbiAgICBlLnN0eWxlLmxlZnQgPSBlLmlkeCAqIGUuc2l6ZVxuXG4gICAgLy8gc3RyZXRjaCB0byBtYXhpbXVtXG4gICAgbGV0IG1heElkeCA9IDBcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGUuZnJpZW5kcy5sZW5ndGg7ICsraikge1xuICAgICAgY29uc3QgaWR4ID0gZS5mcmllbmRzW2pdLmlkeFxuICAgICAgbWF4SWR4ID0gbWF4SWR4ID4gaWR4ID8gbWF4SWR4IDogaWR4XG4gICAgfVxuICAgIGlmIChtYXhJZHggPD0gZS5pZHgpIGUuc2l6ZSA9IDEwMCAtIGUuaWR4ICogZS5zaXplXG5cbiAgICAvLyBwYWRkaW5nIGJldHdlZW4gZXZlbnRzXG4gICAgLy8gZm9yIHRoaXMgZmVhdHVyZSwgYHdpZHRoYCBpcyBub3QgcGVyY2VudGFnZSBiYXNlZCB1bml0IGFueW1vcmVcbiAgICAvLyBpdCB3aWxsIGJlIHVzZWQgd2l0aCBjYWxjKClcbiAgICBjb25zdCBwYWRkaW5nID0gZS5pZHggPT09IDAgPyAwIDogM1xuICAgIGUuc3R5bGUud2lkdGggPSBgY2FsYygke2Uuc2l6ZX0lIC0gJHtwYWRkaW5nfXB4KWBcbiAgICBlLnN0eWxlLmhlaWdodCA9IGBjYWxjKCR7ZS5zdHlsZS5oZWlnaHR9JSAtIDJweClgXG4gICAgZS5zdHlsZS54T2Zmc2V0ID0gYGNhbGMoJHtlLnN0eWxlLmxlZnR9JSArICR7cGFkZGluZ31weClgXG4gIH1cblxuICByZXR1cm4gc3R5bGVkRXZlbnRzXG59XG4iLCIvKmVzbGludCBuby11bnVzZWQtdmFyczogXCJvZmZcIiovXG5cbmltcG9ydCBvdmVybGFwIGZyb20gJy4vbGF5b3V0LWFsZ29yaXRobXMvb3ZlcmxhcCdcbmltcG9ydCBub092ZXJsYXAgZnJvbSAnLi9sYXlvdXQtYWxnb3JpdGhtcy9uby1vdmVybGFwJ1xuXG5jb25zdCBEZWZhdWx0QWxnb3JpdGhtcyA9IHtcbiAgb3ZlcmxhcDogb3ZlcmxhcCxcbiAgJ25vLW92ZXJsYXAnOiBub092ZXJsYXAsXG59XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24oYSkge1xuICByZXR1cm4gISEoYSAmJiBhLmNvbnN0cnVjdG9yICYmIGEuY2FsbCAmJiBhLmFwcGx5KVxufVxuXG4vL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0eWxlZEV2ZW50cyh7XG4gIGV2ZW50cyxcbiAgbWluaW11bVN0YXJ0RGlmZmVyZW5jZSxcbiAgc2xvdE1ldHJpY3MsXG4gIGFjY2Vzc29ycyxcbiAgZGF5TGF5b3V0QWxnb3JpdGhtLCAvLyBvbmUgb2YgRGVmYXVsdEFsZ29yaXRobXMga2V5c1xuICAvLyBvciBjdXN0b20gZnVuY3Rpb25cbn0pIHtcbiAgbGV0IGFsZ29yaXRobSA9IGRheUxheW91dEFsZ29yaXRobVxuXG4gIGlmIChkYXlMYXlvdXRBbGdvcml0aG0gaW4gRGVmYXVsdEFsZ29yaXRobXMpXG4gICAgYWxnb3JpdGhtID0gRGVmYXVsdEFsZ29yaXRobXNbZGF5TGF5b3V0QWxnb3JpdGhtXVxuXG4gIGlmICghaXNGdW5jdGlvbihhbGdvcml0aG0pKSB7XG4gICAgLy8gaW52YWxpZCBhbGdvcml0aG1cbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIHJldHVybiBhbGdvcml0aG0uYXBwbHkodGhpcywgYXJndW1lbnRzKVxufVxuIiwiaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IEJhY2tncm91bmRXcmFwcGVyIGZyb20gJy4vQmFja2dyb3VuZFdyYXBwZXInXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRpbWVTbG90R3JvdXAgZXh0ZW5kcyBDb21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgcmVuZGVyU2xvdCxcbiAgICAgIHJlc291cmNlLFxuICAgICAgZ3JvdXAsXG4gICAgICBnZXR0ZXJzLFxuICAgICAgY29tcG9uZW50czogeyB0aW1lU2xvdFdyYXBwZXI6IFdyYXBwZXIgPSBCYWNrZ3JvdW5kV3JhcHBlciB9ID0ge30sXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IGdyb3VwUHJvcHMgPSBnZXR0ZXJzID8gZ2V0dGVycy5zbG90R3JvdXBQcm9wKGdyb3VwKSA6IHt9XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLXRpbWVzbG90LWdyb3VwXCIgey4uLmdyb3VwUHJvcHN9PlxuICAgICAgICB7Z3JvdXAubWFwKCh2YWx1ZSwgaWR4KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2xvdFByb3BzID0gZ2V0dGVycyA/IGdldHRlcnMuc2xvdFByb3AodmFsdWUsIHJlc291cmNlKSA6IHt9XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxXcmFwcGVyIGtleT17aWR4fSB2YWx1ZT17dmFsdWV9IHJlc291cmNlPXtyZXNvdXJjZX0+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICB7Li4uc2xvdFByb3BzfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeCgncmJjLXRpbWUtc2xvdCcsIHNsb3RQcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3JlbmRlclNsb3QgJiYgcmVuZGVyU2xvdCh2YWx1ZSwgaWR4KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L1dyYXBwZXI+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxufVxuXG5UaW1lU2xvdEdyb3VwLnByb3BUeXBlcyA9IHtcbiAgcmVuZGVyU2xvdDogUHJvcFR5cGVzLmZ1bmMsXG4gIGdyb3VwOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgcmVzb3VyY2U6IFByb3BUeXBlcy5hbnksXG4gIGNvbXBvbmVudHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIGdldHRlcnM6IFByb3BUeXBlcy5vYmplY3QsXG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IERheUNvbHVtbldyYXBwZXIgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBzdHlsZSwgaW5uZXJSZWYgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWV9IHN0eWxlPXtzdHlsZX0gcmVmPXtpbm5lclJlZn0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4gKFxuICA8RGF5Q29sdW1uV3JhcHBlciB7Li4ucHJvcHN9IGlubmVyUmVmPXtyZWZ9IC8+XG4pKVxuIiwiaW1wb3J0IFJlYWN0LCB7IGNyZWF0ZVJlZiB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCdcblxuaW1wb3J0IFNlbGVjdGlvbiwgeyBnZXRCb3VuZHNGb3JOb2RlLCBpc0V2ZW50IH0gZnJvbSAnLi9TZWxlY3Rpb24nXG5pbXBvcnQgKiBhcyBUaW1lU2xvdFV0aWxzIGZyb20gJy4vdXRpbHMvVGltZVNsb3RzJ1xuaW1wb3J0IHsgaXNTZWxlY3RlZCB9IGZyb20gJy4vdXRpbHMvc2VsZWN0aW9uJ1xuXG5pbXBvcnQgeyBub3RpZnkgfSBmcm9tICcuL3V0aWxzL2hlbHBlcnMnXG5pbXBvcnQgKiBhcyBEYXlFdmVudExheW91dCBmcm9tICcuL3V0aWxzL0RheUV2ZW50TGF5b3V0J1xuaW1wb3J0IFRpbWVTbG90R3JvdXAgZnJvbSAnLi9UaW1lU2xvdEdyb3VwJ1xuaW1wb3J0IFRpbWVHcmlkRXZlbnQgZnJvbSAnLi9UaW1lR3JpZEV2ZW50J1xuaW1wb3J0IHsgRGF5TGF5b3V0QWxnb3JpdGhtUHJvcFR5cGUgfSBmcm9tICcuL3V0aWxzL3Byb3BUeXBlcydcblxuaW1wb3J0IERheUNvbHVtbldyYXBwZXIgZnJvbSAnLi9EYXlDb2x1bW5XcmFwcGVyJ1xuXG5jbGFzcyBEYXlDb2x1bW4gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0ZSA9IHsgc2VsZWN0aW5nOiBmYWxzZSwgdGltZUluZGljYXRvclBvc2l0aW9uOiBudWxsIH1cbiAgaW50ZXJ2YWxUcmlnZ2VyZWQgPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHtcbiAgICBzdXBlciguLi5hcmdzKVxuXG4gICAgdGhpcy5zbG90TWV0cmljcyA9IFRpbWVTbG90VXRpbHMuZ2V0U2xvdE1ldHJpY3ModGhpcy5wcm9wcylcbiAgICB0aGlzLmNvbnRhaW5lclJlZiA9IGNyZWF0ZVJlZigpXG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLnByb3BzLnNlbGVjdGFibGUgJiYgdGhpcy5fc2VsZWN0YWJsZSgpXG5cbiAgICBpZiAodGhpcy5wcm9wcy5pc05vdykge1xuICAgICAgdGhpcy5zZXRUaW1lSW5kaWNhdG9yUG9zaXRpb25VcGRhdGVJbnRlcnZhbCgpXG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5fdGVhcmRvd25TZWxlY3RhYmxlKClcbiAgICB0aGlzLmNsZWFyVGltZUluZGljYXRvckludGVydmFsKClcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGFibGUgJiYgIXByZXZQcm9wcy5zZWxlY3RhYmxlKSB0aGlzLl9zZWxlY3RhYmxlKClcbiAgICBpZiAoIXRoaXMucHJvcHMuc2VsZWN0YWJsZSAmJiBwcmV2UHJvcHMuc2VsZWN0YWJsZSlcbiAgICAgIHRoaXMuX3RlYXJkb3duU2VsZWN0YWJsZSgpXG5cbiAgICBjb25zdCB7IGdldE5vdywgaXNOb3csIGxvY2FsaXplciwgZGF0ZSwgbWluLCBtYXggfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBnZXROb3dDaGFuZ2VkID0gbG9jYWxpemVyLm5lcShwcmV2UHJvcHMuZ2V0Tm93KCksIGdldE5vdygpLCAnbWludXRlcycpXG5cbiAgICBpZiAocHJldlByb3BzLmlzTm93ICE9PSBpc05vdyB8fCBnZXROb3dDaGFuZ2VkKSB7XG4gICAgICB0aGlzLmNsZWFyVGltZUluZGljYXRvckludGVydmFsKClcblxuICAgICAgaWYgKGlzTm93KSB7XG4gICAgICAgIGNvbnN0IHRhaWwgPVxuICAgICAgICAgICFnZXROb3dDaGFuZ2VkICYmXG4gICAgICAgICAgbG9jYWxpemVyLmVxKHByZXZQcm9wcy5kYXRlLCBkYXRlLCAnbWludXRlcycpICYmXG4gICAgICAgICAgcHJldlN0YXRlLnRpbWVJbmRpY2F0b3JQb3NpdGlvbiA9PT0gdGhpcy5zdGF0ZS50aW1lSW5kaWNhdG9yUG9zaXRpb25cblxuICAgICAgICB0aGlzLnNldFRpbWVJbmRpY2F0b3JQb3NpdGlvblVwZGF0ZUludGVydmFsKHRhaWwpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGlzTm93ICYmXG4gICAgICAobG9jYWxpemVyLm5lcShwcmV2UHJvcHMubWluLCBtaW4sICdtaW51dGVzJykgfHxcbiAgICAgICAgbG9jYWxpemVyLm5lcShwcmV2UHJvcHMubWF4LCBtYXgsICdtaW51dGVzJykpXG4gICAgKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uVGltZUluZGljYXRvcigpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB0YWlsIHtCb29sZWFufSAtIHdoZXRoZXIgYHBvc2l0aW9uVGltZUluZGljYXRvcmAgY2FsbCBzaG91bGQgYmVcbiAgICogICBkZWZlcnJlZCBvciBjYWxsZWQgdXBvbiBzZXR0aW5nIGludGVydmFsIChgdHJ1ZWAgLSBpZiBkZWZlcnJlZCk7XG4gICAqL1xuICBzZXRUaW1lSW5kaWNhdG9yUG9zaXRpb25VcGRhdGVJbnRlcnZhbCh0YWlsID0gZmFsc2UpIHtcbiAgICBpZiAoIXRoaXMuaW50ZXJ2YWxUcmlnZ2VyZWQgJiYgIXRhaWwpIHtcbiAgICAgIHRoaXMucG9zaXRpb25UaW1lSW5kaWNhdG9yKClcbiAgICB9XG5cbiAgICB0aGlzLl90aW1lSW5kaWNhdG9yVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaW50ZXJ2YWxUcmlnZ2VyZWQgPSB0cnVlXG4gICAgICB0aGlzLnBvc2l0aW9uVGltZUluZGljYXRvcigpXG4gICAgICB0aGlzLnNldFRpbWVJbmRpY2F0b3JQb3NpdGlvblVwZGF0ZUludGVydmFsKClcbiAgICB9LCA2MDAwMClcbiAgfVxuXG4gIGNsZWFyVGltZUluZGljYXRvckludGVydmFsKCkge1xuICAgIHRoaXMuaW50ZXJ2YWxUcmlnZ2VyZWQgPSBmYWxzZVxuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5fdGltZUluZGljYXRvclRpbWVvdXQpXG4gIH1cblxuICBwb3NpdGlvblRpbWVJbmRpY2F0b3IoKSB7XG4gICAgY29uc3QgeyBtaW4sIG1heCwgZ2V0Tm93IH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgY3VycmVudCA9IGdldE5vdygpXG5cbiAgICBpZiAoY3VycmVudCA+PSBtaW4gJiYgY3VycmVudCA8PSBtYXgpIHtcbiAgICAgIGNvbnN0IHRvcCA9IHRoaXMuc2xvdE1ldHJpY3MuZ2V0Q3VycmVudFRpbWVQb3NpdGlvbihjdXJyZW50KVxuICAgICAgdGhpcy5pbnRlcnZhbFRyaWdnZXJlZCA9IHRydWVcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyB0aW1lSW5kaWNhdG9yUG9zaXRpb246IHRvcCB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFyVGltZUluZGljYXRvckludGVydmFsKClcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgZGF0ZSxcbiAgICAgIG1heCxcbiAgICAgIHJ0bCxcbiAgICAgIGlzTm93LFxuICAgICAgcmVzb3VyY2UsXG4gICAgICBhY2Nlc3NvcnMsXG4gICAgICBsb2NhbGl6ZXIsXG4gICAgICBnZXR0ZXJzOiB7IGRheVByb3AsIC4uLmdldHRlcnMgfSxcbiAgICAgIGNvbXBvbmVudHM6IHsgZXZlbnRDb250YWluZXJXcmFwcGVyOiBFdmVudENvbnRhaW5lciwgLi4uY29tcG9uZW50cyB9LFxuICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICB0aGlzLnNsb3RNZXRyaWNzID0gdGhpcy5zbG90TWV0cmljcy51cGRhdGUodGhpcy5wcm9wcylcblxuICAgIGxldCB7IHNsb3RNZXRyaWNzIH0gPSB0aGlzXG4gICAgbGV0IHsgc2VsZWN0aW5nLCB0b3AsIGhlaWdodCwgc3RhcnREYXRlLCBlbmREYXRlIH0gPSB0aGlzLnN0YXRlXG5cbiAgICBsZXQgc2VsZWN0RGF0ZXMgPSB7IHN0YXJ0OiBzdGFydERhdGUsIGVuZDogZW5kRGF0ZSB9XG5cbiAgICBjb25zdCB7IGNsYXNzTmFtZSwgc3R5bGUgfSA9IGRheVByb3AobWF4KVxuXG4gICAgY29uc3QgRGF5Q29sdW1uV3JhcHBlckNvbXBvbmVudCA9XG4gICAgICBjb21wb25lbnRzLmRheUNvbHVtbldyYXBwZXIgfHwgRGF5Q29sdW1uV3JhcHBlclxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxEYXlDb2x1bW5XcmFwcGVyQ29tcG9uZW50XG4gICAgICAgIHJlZj17dGhpcy5jb250YWluZXJSZWZ9XG4gICAgICAgIGRhdGU9e2RhdGV9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAncmJjLWRheS1zbG90JyxcbiAgICAgICAgICAncmJjLXRpbWUtY29sdW1uJyxcbiAgICAgICAgICBpc05vdyAmJiAncmJjLW5vdycsXG4gICAgICAgICAgaXNOb3cgJiYgJ3JiYy10b2RheScsIC8vIFdIWVxuICAgICAgICAgIHNlbGVjdGluZyAmJiAncmJjLXNsb3Qtc2VsZWN0aW5nJ1xuICAgICAgICApfVxuICAgICAgICBzbG90TWV0cmljcz17c2xvdE1ldHJpY3N9XG4gICAgICAgIHJlc291cmNlPXtyZXNvdXJjZX1cbiAgICAgID5cbiAgICAgICAge3Nsb3RNZXRyaWNzLmdyb3Vwcy5tYXAoKGdycCwgaWR4KSA9PiAoXG4gICAgICAgICAgPFRpbWVTbG90R3JvdXBcbiAgICAgICAgICAgIGtleT17aWR4fVxuICAgICAgICAgICAgZ3JvdXA9e2dycH1cbiAgICAgICAgICAgIHJlc291cmNlPXtyZXNvdXJjZX1cbiAgICAgICAgICAgIGdldHRlcnM9e2dldHRlcnN9XG4gICAgICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgICA8RXZlbnRDb250YWluZXJcbiAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICByZXNvdXJjZT17cmVzb3VyY2V9XG4gICAgICAgICAgYWNjZXNzb3JzPXthY2Nlc3NvcnN9XG4gICAgICAgICAgZ2V0dGVycz17Z2V0dGVyc31cbiAgICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICAgIHNsb3RNZXRyaWNzPXtzbG90TWV0cmljc31cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHN4KCdyYmMtZXZlbnRzLWNvbnRhaW5lcicsIHJ0bCAmJiAncnRsJyl9PlxuICAgICAgICAgICAge3RoaXMucmVuZGVyRXZlbnRzKHtcbiAgICAgICAgICAgICAgZXZlbnRzOiB0aGlzLnByb3BzLmJhY2tncm91bmRFdmVudHMsXG4gICAgICAgICAgICAgIGlzQmFja2dyb3VuZEV2ZW50OiB0cnVlLFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICB7dGhpcy5yZW5kZXJFdmVudHMoeyBldmVudHM6IHRoaXMucHJvcHMuZXZlbnRzIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0V2ZW50Q29udGFpbmVyPlxuXG4gICAgICAgIHtzZWxlY3RpbmcgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLXNsb3Qtc2VsZWN0aW9uXCIgc3R5bGU9e3sgdG9wLCBoZWlnaHQgfX0+XG4gICAgICAgICAgICA8c3Bhbj57bG9jYWxpemVyLmZvcm1hdChzZWxlY3REYXRlcywgJ3NlbGVjdFJhbmdlRm9ybWF0Jyl9PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgICB7aXNOb3cgJiYgdGhpcy5pbnRlcnZhbFRyaWdnZXJlZCAmJiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwicmJjLWN1cnJlbnQtdGltZS1pbmRpY2F0b3JcIlxuICAgICAgICAgICAgc3R5bGU9e3sgdG9wOiBgJHt0aGlzLnN0YXRlLnRpbWVJbmRpY2F0b3JQb3NpdGlvbn0lYCB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L0RheUNvbHVtbldyYXBwZXJDb21wb25lbnQ+XG4gICAgKVxuICB9XG5cbiAgcmVuZGVyRXZlbnRzID0gKHsgZXZlbnRzLCBpc0JhY2tncm91bmRFdmVudCB9KSA9PiB7XG4gICAgbGV0IHtcbiAgICAgIHJ0bCxcbiAgICAgIHNlbGVjdGVkLFxuICAgICAgYWNjZXNzb3JzLFxuICAgICAgbG9jYWxpemVyLFxuICAgICAgZ2V0dGVycyxcbiAgICAgIGNvbXBvbmVudHMsXG4gICAgICBzdGVwLFxuICAgICAgdGltZXNsb3RzLFxuICAgICAgZGF5TGF5b3V0QWxnb3JpdGhtLFxuICAgICAgcmVzaXphYmxlLFxuICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICBjb25zdCB7IHNsb3RNZXRyaWNzIH0gPSB0aGlzXG4gICAgY29uc3QgeyBtZXNzYWdlcyB9ID0gbG9jYWxpemVyXG5cbiAgICBsZXQgc3R5bGVkRXZlbnRzID0gRGF5RXZlbnRMYXlvdXQuZ2V0U3R5bGVkRXZlbnRzKHtcbiAgICAgIGV2ZW50cyxcbiAgICAgIGFjY2Vzc29ycyxcbiAgICAgIHNsb3RNZXRyaWNzLFxuICAgICAgbWluaW11bVN0YXJ0RGlmZmVyZW5jZTogTWF0aC5jZWlsKChzdGVwICogdGltZXNsb3RzKSAvIDIpLFxuICAgICAgZGF5TGF5b3V0QWxnb3JpdGhtLFxuICAgIH0pXG5cbiAgICByZXR1cm4gc3R5bGVkRXZlbnRzLm1hcCgoeyBldmVudCwgc3R5bGUgfSwgaWR4KSA9PiB7XG4gICAgICBsZXQgZW5kID0gYWNjZXNzb3JzLmVuZChldmVudClcbiAgICAgIGxldCBzdGFydCA9IGFjY2Vzc29ycy5zdGFydChldmVudClcbiAgICAgIGxldCBmb3JtYXQgPSAnZXZlbnRUaW1lUmFuZ2VGb3JtYXQnXG4gICAgICBsZXQgbGFiZWxcblxuICAgICAgY29uc3Qgc3RhcnRzQmVmb3JlRGF5ID0gc2xvdE1ldHJpY3Muc3RhcnRzQmVmb3JlRGF5KHN0YXJ0KVxuICAgICAgY29uc3Qgc3RhcnRzQWZ0ZXJEYXkgPSBzbG90TWV0cmljcy5zdGFydHNBZnRlckRheShlbmQpXG5cbiAgICAgIGlmIChzdGFydHNCZWZvcmVEYXkpIGZvcm1hdCA9ICdldmVudFRpbWVSYW5nZUVuZEZvcm1hdCdcbiAgICAgIGVsc2UgaWYgKHN0YXJ0c0FmdGVyRGF5KSBmb3JtYXQgPSAnZXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdCdcblxuICAgICAgaWYgKHN0YXJ0c0JlZm9yZURheSAmJiBzdGFydHNBZnRlckRheSkgbGFiZWwgPSBtZXNzYWdlcy5hbGxEYXlcbiAgICAgIGVsc2UgbGFiZWwgPSBsb2NhbGl6ZXIuZm9ybWF0KHsgc3RhcnQsIGVuZCB9LCBmb3JtYXQpXG5cbiAgICAgIGxldCBjb250aW51ZXNQcmlvciA9IHN0YXJ0c0JlZm9yZURheSB8fCBzbG90TWV0cmljcy5zdGFydHNCZWZvcmUoc3RhcnQpXG4gICAgICBsZXQgY29udGludWVzQWZ0ZXIgPSBzdGFydHNBZnRlckRheSB8fCBzbG90TWV0cmljcy5zdGFydHNBZnRlcihlbmQpXG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUaW1lR3JpZEV2ZW50XG4gICAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICAgIGV2ZW50PXtldmVudH1cbiAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAga2V5PXsnZXZ0XycgKyBpZHh9XG4gICAgICAgICAgZ2V0dGVycz17Z2V0dGVyc31cbiAgICAgICAgICBydGw9e3J0bH1cbiAgICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICAgIGNvbnRpbnVlc1ByaW9yPXtjb250aW51ZXNQcmlvcn1cbiAgICAgICAgICBjb250aW51ZXNBZnRlcj17Y29udGludWVzQWZ0ZXJ9XG4gICAgICAgICAgYWNjZXNzb3JzPXthY2Nlc3NvcnN9XG4gICAgICAgICAgcmVzb3VyY2U9e3RoaXMucHJvcHMucmVzb3VyY2V9XG4gICAgICAgICAgc2VsZWN0ZWQ9e2lzU2VsZWN0ZWQoZXZlbnQsIHNlbGVjdGVkKX1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT5cbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdChcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLmV2ZW50LFxuICAgICAgICAgICAgICAgIC4uLih0aGlzLnByb3BzLnJlc291cmNlICYmIHtcbiAgICAgICAgICAgICAgICAgIHNvdXJjZVJlc291cmNlOiB0aGlzLnByb3BzLnJlc291cmNlLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIC4uLihpc0JhY2tncm91bmRFdmVudCAmJiB7IGlzQmFja2dyb3VuZEV2ZW50OiB0cnVlIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICAgIG9uRG91YmxlQ2xpY2s9eyhlKSA9PiB0aGlzLl9kb3VibGVDbGljayhldmVudCwgZSl9XG4gICAgICAgICAgaXNCYWNrZ3JvdW5kRXZlbnQ9e2lzQmFja2dyb3VuZEV2ZW50fVxuICAgICAgICAgIG9uS2V5UHJlc3M9eyhlKSA9PiB0aGlzLl9rZXlQcmVzcyhldmVudCwgZSl9XG4gICAgICAgICAgcmVzaXphYmxlPXtyZXNpemFibGV9XG4gICAgICAgIC8+XG4gICAgICApXG4gICAgfSlcbiAgfVxuXG4gIF9zZWxlY3RhYmxlID0gKCkgPT4ge1xuICAgIGxldCBub2RlID0gdGhpcy5jb250YWluZXJSZWYuY3VycmVudFxuICAgIGNvbnN0IHsgbG9uZ1ByZXNzVGhyZXNob2xkLCBsb2NhbGl6ZXIgfSA9IHRoaXMucHJvcHNcbiAgICBsZXQgc2VsZWN0b3IgPSAodGhpcy5fc2VsZWN0b3IgPSBuZXcgU2VsZWN0aW9uKCgpID0+IG5vZGUsIHtcbiAgICAgIGxvbmdQcmVzc1RocmVzaG9sZDogbG9uZ1ByZXNzVGhyZXNob2xkLFxuICAgIH0pKVxuXG4gICAgbGV0IG1heWJlU2VsZWN0ID0gKGJveCkgPT4ge1xuICAgICAgbGV0IG9uU2VsZWN0aW5nID0gdGhpcy5wcm9wcy5vblNlbGVjdGluZ1xuICAgICAgbGV0IGN1cnJlbnQgPSB0aGlzLnN0YXRlIHx8IHt9XG4gICAgICBsZXQgc3RhdGUgPSBzZWxlY3Rpb25TdGF0ZShib3gpXG4gICAgICBsZXQgeyBzdGFydERhdGU6IHN0YXJ0LCBlbmREYXRlOiBlbmQgfSA9IHN0YXRlXG5cbiAgICAgIGlmIChvblNlbGVjdGluZykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKGxvY2FsaXplci5lcShjdXJyZW50LnN0YXJ0RGF0ZSwgc3RhcnQsICdtaW51dGVzJykgJiZcbiAgICAgICAgICAgIGxvY2FsaXplci5lcShjdXJyZW50LmVuZERhdGUsIGVuZCwgJ21pbnV0ZXMnKSkgfHxcbiAgICAgICAgICBvblNlbGVjdGluZyh7IHN0YXJ0LCBlbmQsIHJlc291cmNlSWQ6IHRoaXMucHJvcHMucmVzb3VyY2UgfSkgPT09IGZhbHNlXG4gICAgICAgIClcbiAgICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnN0YXRlLnN0YXJ0ICE9PSBzdGF0ZS5zdGFydCB8fFxuICAgICAgICB0aGlzLnN0YXRlLmVuZCAhPT0gc3RhdGUuZW5kIHx8XG4gICAgICAgIHRoaXMuc3RhdGUuc2VsZWN0aW5nICE9PSBzdGF0ZS5zZWxlY3RpbmdcbiAgICAgICkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHN0YXRlKVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBzZWxlY3Rpb25TdGF0ZSA9IChwb2ludCkgPT4ge1xuICAgICAgbGV0IGN1cnJlbnRTbG90ID0gdGhpcy5zbG90TWV0cmljcy5jbG9zZXN0U2xvdEZyb21Qb2ludChcbiAgICAgICAgcG9pbnQsXG4gICAgICAgIGdldEJvdW5kc0Zvck5vZGUobm9kZSlcbiAgICAgIClcblxuICAgICAgaWYgKCF0aGlzLnN0YXRlLnNlbGVjdGluZykge1xuICAgICAgICB0aGlzLl9pbml0aWFsU2xvdCA9IGN1cnJlbnRTbG90XG4gICAgICB9XG5cbiAgICAgIGxldCBpbml0aWFsU2xvdCA9IHRoaXMuX2luaXRpYWxTbG90XG4gICAgICBpZiAobG9jYWxpemVyLmx0ZShpbml0aWFsU2xvdCwgY3VycmVudFNsb3QpKSB7XG4gICAgICAgIGN1cnJlbnRTbG90ID0gdGhpcy5zbG90TWV0cmljcy5uZXh0U2xvdChjdXJyZW50U2xvdClcbiAgICAgIH0gZWxzZSBpZiAobG9jYWxpemVyLmd0KGluaXRpYWxTbG90LCBjdXJyZW50U2xvdCkpIHtcbiAgICAgICAgaW5pdGlhbFNsb3QgPSB0aGlzLnNsb3RNZXRyaWNzLm5leHRTbG90KGluaXRpYWxTbG90KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBzZWxlY3RSYW5nZSA9IHRoaXMuc2xvdE1ldHJpY3MuZ2V0UmFuZ2UoXG4gICAgICAgIGxvY2FsaXplci5taW4oaW5pdGlhbFNsb3QsIGN1cnJlbnRTbG90KSxcbiAgICAgICAgbG9jYWxpemVyLm1heChpbml0aWFsU2xvdCwgY3VycmVudFNsb3QpXG4gICAgICApXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnNlbGVjdFJhbmdlLFxuICAgICAgICBzZWxlY3Rpbmc6IHRydWUsXG5cbiAgICAgICAgdG9wOiBgJHtzZWxlY3RSYW5nZS50b3B9JWAsXG4gICAgICAgIGhlaWdodDogYCR7c2VsZWN0UmFuZ2UuaGVpZ2h0fSVgLFxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBzZWxlY3RvckNsaWNrc0hhbmRsZXIgPSAoYm94LCBhY3Rpb25UeXBlKSA9PiB7XG4gICAgICBpZiAoIWlzRXZlbnQodGhpcy5jb250YWluZXJSZWYuY3VycmVudCwgYm94KSkge1xuICAgICAgICBjb25zdCB7IHN0YXJ0RGF0ZSwgZW5kRGF0ZSB9ID0gc2VsZWN0aW9uU3RhdGUoYm94KVxuICAgICAgICB0aGlzLl9zZWxlY3RTbG90KHtcbiAgICAgICAgICBzdGFydERhdGUsXG4gICAgICAgICAgZW5kRGF0ZSxcbiAgICAgICAgICBhY3Rpb246IGFjdGlvblR5cGUsXG4gICAgICAgICAgYm94LFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNlbGVjdGluZzogZmFsc2UgfSlcbiAgICB9XG5cbiAgICBzZWxlY3Rvci5vbignc2VsZWN0aW5nJywgbWF5YmVTZWxlY3QpXG4gICAgc2VsZWN0b3Iub24oJ3NlbGVjdFN0YXJ0JywgbWF5YmVTZWxlY3QpXG5cbiAgICBzZWxlY3Rvci5vbignYmVmb3JlU2VsZWN0JywgKGJveCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHMuc2VsZWN0YWJsZSAhPT0gJ2lnbm9yZUV2ZW50cycpIHJldHVyblxuXG4gICAgICByZXR1cm4gIWlzRXZlbnQodGhpcy5jb250YWluZXJSZWYuY3VycmVudCwgYm94KVxuICAgIH0pXG5cbiAgICBzZWxlY3Rvci5vbignY2xpY2snLCAoYm94KSA9PiBzZWxlY3RvckNsaWNrc0hhbmRsZXIoYm94LCAnY2xpY2snKSlcblxuICAgIHNlbGVjdG9yLm9uKCdkb3VibGVDbGljaycsIChib3gpID0+XG4gICAgICBzZWxlY3RvckNsaWNrc0hhbmRsZXIoYm94LCAnZG91YmxlQ2xpY2snKVxuICAgIClcblxuICAgIHNlbGVjdG9yLm9uKCdzZWxlY3QnLCAoYm91bmRzKSA9PiB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5zZWxlY3RpbmcpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0U2xvdCh7IC4uLnRoaXMuc3RhdGUsIGFjdGlvbjogJ3NlbGVjdCcsIGJvdW5kcyB9KVxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc2VsZWN0aW5nOiBmYWxzZSB9KVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBzZWxlY3Rvci5vbigncmVzZXQnLCAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5zZWxlY3RpbmcpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNlbGVjdGluZzogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgX3RlYXJkb3duU2VsZWN0YWJsZSA9ICgpID0+IHtcbiAgICBpZiAoIXRoaXMuX3NlbGVjdG9yKSByZXR1cm5cbiAgICB0aGlzLl9zZWxlY3Rvci50ZWFyZG93bigpXG4gICAgdGhpcy5fc2VsZWN0b3IgPSBudWxsXG4gIH1cblxuICBfc2VsZWN0U2xvdCA9ICh7IHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgYWN0aW9uLCBib3VuZHMsIGJveCB9KSA9PiB7XG4gICAgbGV0IGN1cnJlbnQgPSBzdGFydERhdGUsXG4gICAgICBzbG90cyA9IFtdXG5cbiAgICB3aGlsZSAodGhpcy5wcm9wcy5sb2NhbGl6ZXIubHRlKGN1cnJlbnQsIGVuZERhdGUpKSB7XG4gICAgICBzbG90cy5wdXNoKGN1cnJlbnQpXG4gICAgICBjdXJyZW50ID0gbmV3IERhdGUoK2N1cnJlbnQgKyB0aGlzLnByb3BzLnN0ZXAgKiA2MCAqIDEwMDApIC8vIHVzaW5nIERhdGUgZW5zdXJlcyBub3QgdG8gY3JlYXRlIGFuIGVuZGxlc3MgbG9vcCB0aGUgZGF5IERTVCBiZWdpbnNcbiAgICB9XG5cbiAgICBub3RpZnkodGhpcy5wcm9wcy5vblNlbGVjdFNsb3QsIHtcbiAgICAgIHNsb3RzLFxuICAgICAgc3RhcnQ6IHN0YXJ0RGF0ZSxcbiAgICAgIGVuZDogZW5kRGF0ZSxcbiAgICAgIHJlc291cmNlSWQ6IHRoaXMucHJvcHMucmVzb3VyY2UsXG4gICAgICBhY3Rpb24sXG4gICAgICBib3VuZHMsXG4gICAgICBib3gsXG4gICAgfSlcbiAgfVxuXG4gIF9zZWxlY3QgPSAoLi4uYXJncykgPT4ge1xuICAgIG5vdGlmeSh0aGlzLnByb3BzLm9uU2VsZWN0RXZlbnQsIGFyZ3MpXG4gIH1cblxuICBfZG91YmxlQ2xpY2sgPSAoLi4uYXJncykgPT4ge1xuICAgIG5vdGlmeSh0aGlzLnByb3BzLm9uRG91YmxlQ2xpY2tFdmVudCwgYXJncylcbiAgfVxuXG4gIF9rZXlQcmVzcyA9ICguLi5hcmdzKSA9PiB7XG4gICAgbm90aWZ5KHRoaXMucHJvcHMub25LZXlQcmVzc0V2ZW50LCBhcmdzKVxuICB9XG59XG5cbkRheUNvbHVtbi5wcm9wVHlwZXMgPSB7XG4gIGV2ZW50czogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGJhY2tncm91bmRFdmVudHM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdGVwOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGRhdGU6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsXG4gIG1pbjogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxcbiAgbWF4OiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLFxuICBnZXROb3c6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGlzTm93OiBQcm9wVHlwZXMuYm9vbCxcblxuICBydGw6IFByb3BUeXBlcy5ib29sLFxuICByZXNpemFibGU6IFByb3BUeXBlcy5ib29sLFxuXG4gIGFjY2Vzc29yczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjb21wb25lbnRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGdldHRlcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG5cbiAgc2hvd011bHRpRGF5VGltZXM6IFByb3BUeXBlcy5ib29sLFxuICBjdWx0dXJlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB0aW1lc2xvdHM6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHNlbGVjdGFibGU6IFByb3BUeXBlcy5vbmVPZihbdHJ1ZSwgZmFsc2UsICdpZ25vcmVFdmVudHMnXSksXG4gIGV2ZW50T2Zmc2V0OiBQcm9wVHlwZXMubnVtYmVyLFxuICBsb25nUHJlc3NUaHJlc2hvbGQ6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgb25TZWxlY3Rpbmc6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdFNsb3Q6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uU2VsZWN0RXZlbnQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRG91YmxlQ2xpY2tFdmVudDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25LZXlQcmVzc0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcblxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGRyYWdUaHJvdWdoRXZlbnRzOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVzb3VyY2U6IFByb3BUeXBlcy5hbnksXG5cbiAgZGF5TGF5b3V0QWxnb3JpdGhtOiBEYXlMYXlvdXRBbGdvcml0aG1Qcm9wVHlwZSxcbn1cblxuRGF5Q29sdW1uLmRlZmF1bHRQcm9wcyA9IHtcbiAgZHJhZ1Rocm91Z2hFdmVudHM6IHRydWUsXG4gIHRpbWVzbG90czogMixcbn1cblxuZXhwb3J0IGRlZmF1bHQgRGF5Q29sdW1uXG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5cbmltcG9ydCB7IGdldFNsb3RNZXRyaWNzIH0gZnJvbSAnLi91dGlscy9UaW1lU2xvdHMnXG5pbXBvcnQgVGltZVNsb3RHcm91cCBmcm9tICcuL1RpbWVTbG90R3JvdXAnXG5cbi8qKlxuICogU2luY2UgdGhlIFRpbWVHdXR0ZXIgb25seSBkaXNwbGF5cyB0aGUgJ3RpbWVzJyBvZiBzbG90cyBpbiBhIGRheSwgYW5kIGlzIHNlcGFyYXRlXG4gKiBmcm9tIHRoZSBEYXkgQ29sdW1ucyB0aGVtc2VsdmVzLCB3ZSBjaGVjayB0byBzZWUgaWYgdGhlIHJhbmdlIGNvbnRhaW5zIGFuIG9mZnNldCBkaWZmZXJlbmNlXG4gKiBhbmQsIGlmIHNvLCBjaGFuZ2UgdGhlIGJlZ2lubmluZyBhbmQgZW5kICdkYXRlJyBieSBhIGRheSB0byBwcm9wZXJseSBkaXNwbGF5IHRoZSBzbG90cyB0aW1lc1xuICogdXNlZC5cbiAqL1xuZnVuY3Rpb24gYWRqdXN0Rm9yRFNUKHsgbWluLCBtYXgsIGxvY2FsaXplciB9KSB7XG4gIGlmIChsb2NhbGl6ZXIuZ2V0VGltZXpvbmVPZmZzZXQobWluKSAhPT0gbG9jYWxpemVyLmdldFRpbWV6b25lT2Zmc2V0KG1heCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IGxvY2FsaXplci5hZGQobWluLCAtMSwgJ2RheScpLFxuICAgICAgZW5kOiBsb2NhbGl6ZXIuYWRkKG1heCwgLTEsICdkYXknKSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgc3RhcnQ6IG1pbiwgZW5kOiBtYXggfVxufVxuXG5jb25zdCBUaW1lR3V0dGVyID0gKHtcbiAgbWluLFxuICBtYXgsXG4gIHRpbWVzbG90cyxcbiAgc3RlcCxcbiAgbG9jYWxpemVyLFxuICBnZXROb3csXG4gIHJlc291cmNlLFxuICBjb21wb25lbnRzLFxuICBnZXR0ZXJzLFxuICBndXR0ZXJSZWYsXG59KSA9PiB7XG4gIGNvbnN0IHsgdGltZUd1dHRlcldyYXBwZXI6IFRpbWVHdXR0ZXJXcmFwcGVyIH0gPSBjb21wb25lbnRzXG4gIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiBhZGp1c3RGb3JEU1QoeyBtaW4sIG1heCwgbG9jYWxpemVyIH0pLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICBbbWluPy50b0lTT1N0cmluZygpLCBtYXg/LnRvSVNPU3RyaW5nKCksIGxvY2FsaXplcl1cbiAgKVxuICBjb25zdCBbc2xvdE1ldHJpY3MsIHNldFNsb3RNZXRyaWNzXSA9IHVzZVN0YXRlKFxuICAgIGdldFNsb3RNZXRyaWNzKHtcbiAgICAgIG1pbjogc3RhcnQsXG4gICAgICBtYXg6IGVuZCxcbiAgICAgIHRpbWVzbG90cyxcbiAgICAgIHN0ZXAsXG4gICAgICBsb2NhbGl6ZXIsXG4gICAgfSlcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNsb3RNZXRyaWNzKSB7XG4gICAgICBzZXRTbG90TWV0cmljcyhcbiAgICAgICAgc2xvdE1ldHJpY3MudXBkYXRlKHtcbiAgICAgICAgICBtaW46IHN0YXJ0LFxuICAgICAgICAgIG1heDogZW5kLFxuICAgICAgICAgIHRpbWVzbG90cyxcbiAgICAgICAgICBzdGVwLFxuICAgICAgICAgIGxvY2FsaXplcixcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2UgZG9uJ3Qgd2FudCB0aGlzIHRvIGZpcmUgd2hlbiBzbG90TWV0cmljcyBpcyB1cGRhdGVkIGFzIGl0IHdvdWxkIHJlY3Vyc2l2ZWx5IGJvbWJcbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtzdGFydD8udG9JU09TdHJpbmcoKSwgZW5kPy50b0lTT1N0cmluZygpLCB0aW1lc2xvdHMsIHN0ZXBdKVxuXG4gIGNvbnN0IHJlbmRlclNsb3QgPSB1c2VDYWxsYmFjayhcbiAgICAodmFsdWUsIGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCkgcmV0dXJuIG51bGwgLy8gZG9uJ3QgcmV0dXJuIHRoZSBmaXJzdCAoMCkgaWR4XG5cbiAgICAgIGNvbnN0IGlzTm93ID0gc2xvdE1ldHJpY3MuZGF0ZUlzSW5Hcm91cChnZXROb3coKSwgaWR4KVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbHN4KCdyYmMtbGFiZWwnLCBpc05vdyAmJiAncmJjLW5vdycpfT5cbiAgICAgICAgICB7bG9jYWxpemVyLmZvcm1hdCh2YWx1ZSwgJ3RpbWVHdXR0ZXJGb3JtYXQnKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgKVxuICAgIH0sXG4gICAgW3Nsb3RNZXRyaWNzLCBsb2NhbGl6ZXIsIGdldE5vd11cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFRpbWVHdXR0ZXJXcmFwcGVyIHNsb3RNZXRyaWNzPXtzbG90TWV0cmljc30+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJiYy10aW1lLWd1dHRlciByYmMtdGltZS1jb2x1bW5cIiByZWY9e2d1dHRlclJlZn0+XG4gICAgICAgIHtzbG90TWV0cmljcy5ncm91cHMubWFwKChncnAsIGlkeCkgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8VGltZVNsb3RHcm91cFxuICAgICAgICAgICAgICBrZXk9e2lkeH1cbiAgICAgICAgICAgICAgZ3JvdXA9e2dycH1cbiAgICAgICAgICAgICAgcmVzb3VyY2U9e3Jlc291cmNlfVxuICAgICAgICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICAgICAgICByZW5kZXJTbG90PXtyZW5kZXJTbG90fVxuICAgICAgICAgICAgICBnZXR0ZXJzPXtnZXR0ZXJzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApXG4gICAgICAgIH0pfVxuICAgICAgPC9kaXY+XG4gICAgPC9UaW1lR3V0dGVyV3JhcHBlcj5cbiAgKVxufVxuXG5UaW1lR3V0dGVyLnByb3BUeXBlcyA9IHtcbiAgbWluOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLFxuICBtYXg6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsXG4gIHRpbWVzbG90czogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBzdGVwOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGdldE5vdzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY29tcG9uZW50czogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnZXR0ZXJzOiBQcm9wVHlwZXMub2JqZWN0LFxuXG4gIGxvY2FsaXplcjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICByZXNvdXJjZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgZ3V0dGVyUmVmOiBQcm9wVHlwZXMuYW55LFxufVxuXG5leHBvcnQgZGVmYXVsdCBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiAoXG4gIDxUaW1lR3V0dGVyIGd1dHRlclJlZj17cmVmfSB7Li4ucHJvcHN9IC8+XG4pKVxuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBSZXNvdXJjZUhlYWRlciA9ICh7IGxhYmVsIH0pID0+IHtcbiAgcmV0dXJuIDxSZWFjdC5GcmFnbWVudD57bGFiZWx9PC9SZWFjdC5GcmFnbWVudD5cbn1cblxuUmVzb3VyY2VIZWFkZXIucHJvcFR5cGVzID0ge1xuICBsYWJlbDogUHJvcFR5cGVzLm5vZGUsXG4gIGluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuICByZXNvdXJjZTogUHJvcFR5cGVzLm9iamVjdCxcbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVzb3VyY2VIZWFkZXJcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnXG5pbXBvcnQgc2Nyb2xsYmFyU2l6ZSBmcm9tICdkb20taGVscGVycy9zY3JvbGxiYXJTaXplJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgRGF0ZUNvbnRlbnRSb3cgZnJvbSAnLi9EYXRlQ29udGVudFJvdydcbmltcG9ydCBIZWFkZXIgZnJvbSAnLi9IZWFkZXInXG5pbXBvcnQgUmVzb3VyY2VIZWFkZXIgZnJvbSAnLi9SZXNvdXJjZUhlYWRlcidcbmltcG9ydCB7IG5vdGlmeSB9IGZyb20gJy4vdXRpbHMvaGVscGVycydcblxuY2xhc3MgVGltZUdyaWRIZWFkZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBoYW5kbGVIZWFkZXJDbGljayA9IChkYXRlLCB2aWV3LCBlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbm90aWZ5KHRoaXMucHJvcHMub25EcmlsbERvd24sIFtkYXRlLCB2aWV3XSlcbiAgfVxuXG4gIHJlbmRlckhlYWRlckNlbGxzKHJhbmdlKSB7XG4gICAgbGV0IHtcbiAgICAgIGxvY2FsaXplcixcbiAgICAgIGdldERyaWxsZG93blZpZXcsXG4gICAgICBnZXROb3csXG4gICAgICBnZXR0ZXJzOiB7IGRheVByb3AgfSxcbiAgICAgIGNvbXBvbmVudHM6IHsgaGVhZGVyOiBIZWFkZXJDb21wb25lbnQgPSBIZWFkZXIgfSxcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgY29uc3QgdG9kYXkgPSBnZXROb3coKVxuXG4gICAgcmV0dXJuIHJhbmdlLm1hcCgoZGF0ZSwgaSkgPT4ge1xuICAgICAgbGV0IGRyaWxsZG93blZpZXcgPSBnZXREcmlsbGRvd25WaWV3KGRhdGUpXG4gICAgICBsZXQgbGFiZWwgPSBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkYXlGb3JtYXQnKVxuXG4gICAgICBjb25zdCB7IGNsYXNzTmFtZSwgc3R5bGUgfSA9IGRheVByb3AoZGF0ZSlcblxuICAgICAgbGV0IGhlYWRlciA9IChcbiAgICAgICAgPEhlYWRlckNvbXBvbmVudCBkYXRlPXtkYXRlfSBsYWJlbD17bGFiZWx9IGxvY2FsaXplcj17bG9jYWxpemVyfSAvPlxuICAgICAgKVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAga2V5PXtpfVxuICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goXG4gICAgICAgICAgICAncmJjLWhlYWRlcicsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgICBsb2NhbGl6ZXIuaXNTYW1lRGF0ZShkYXRlLCB0b2RheSkgJiYgJ3JiYy10b2RheSdcbiAgICAgICAgICApfVxuICAgICAgICA+XG4gICAgICAgICAge2RyaWxsZG93blZpZXcgPyAoXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyYmMtYnV0dG9uLWxpbmtcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gdGhpcy5oYW5kbGVIZWFkZXJDbGljayhkYXRlLCBkcmlsbGRvd25WaWV3LCBlKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2hlYWRlcn1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8c3Bhbj57aGVhZGVyfTwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIClcbiAgICB9KVxuICB9XG4gIHJlbmRlclJvdyA9IChyZXNvdXJjZSkgPT4ge1xuICAgIGxldCB7XG4gICAgICBldmVudHMsXG4gICAgICBydGwsXG4gICAgICBzZWxlY3RhYmxlLFxuICAgICAgZ2V0Tm93LFxuICAgICAgcmFuZ2UsXG4gICAgICBnZXR0ZXJzLFxuICAgICAgbG9jYWxpemVyLFxuICAgICAgYWNjZXNzb3JzLFxuICAgICAgY29tcG9uZW50cyxcbiAgICAgIHJlc2l6YWJsZSxcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgY29uc3QgcmVzb3VyY2VJZCA9IGFjY2Vzc29ycy5yZXNvdXJjZUlkKHJlc291cmNlKVxuICAgIGxldCBldmVudHNUb0Rpc3BsYXkgPSByZXNvdXJjZVxuICAgICAgPyBldmVudHMuZmlsdGVyKChldmVudCkgPT4gYWNjZXNzb3JzLnJlc291cmNlKGV2ZW50KSA9PT0gcmVzb3VyY2VJZClcbiAgICAgIDogZXZlbnRzXG5cbiAgICByZXR1cm4gKFxuICAgICAgPERhdGVDb250ZW50Um93XG4gICAgICAgIGlzQWxsRGF5XG4gICAgICAgIHJ0bD17cnRsfVxuICAgICAgICBnZXROb3c9e2dldE5vd31cbiAgICAgICAgbWluUm93cz17Mn1cbiAgICAgICAgLy8gQWRkICsxIHRvIGluY2x1ZGUgc2hvd01vcmUgYnV0dG9uIHJvdyBpbiB0aGUgcm93IGxpbWl0XG4gICAgICAgIG1heFJvd3M9e3RoaXMucHJvcHMuYWxsRGF5TWF4Um93cyArIDF9XG4gICAgICAgIHJhbmdlPXtyYW5nZX1cbiAgICAgICAgZXZlbnRzPXtldmVudHNUb0Rpc3BsYXl9XG4gICAgICAgIHJlc291cmNlSWQ9e3Jlc291cmNlSWR9XG4gICAgICAgIGNsYXNzTmFtZT1cInJiYy1hbGxkYXktY2VsbFwiXG4gICAgICAgIHNlbGVjdGFibGU9e3NlbGVjdGFibGV9XG4gICAgICAgIHNlbGVjdGVkPXt0aGlzLnByb3BzLnNlbGVjdGVkfVxuICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICBhY2Nlc3NvcnM9e2FjY2Vzc29yc31cbiAgICAgICAgZ2V0dGVycz17Z2V0dGVyc31cbiAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgIG9uU2VsZWN0PXt0aGlzLnByb3BzLm9uU2VsZWN0RXZlbnR9XG4gICAgICAgIG9uU2hvd01vcmU9e3RoaXMucHJvcHMub25TaG93TW9yZX1cbiAgICAgICAgb25Eb3VibGVDbGljaz17dGhpcy5wcm9wcy5vbkRvdWJsZUNsaWNrRXZlbnR9XG4gICAgICAgIG9uS2V5UHJlc3M9e3RoaXMucHJvcHMub25LZXlQcmVzc0V2ZW50fVxuICAgICAgICBvblNlbGVjdFNsb3Q9e3RoaXMucHJvcHMub25TZWxlY3RTbG90fVxuICAgICAgICBsb25nUHJlc3NUaHJlc2hvbGQ9e3RoaXMucHJvcHMubG9uZ1ByZXNzVGhyZXNob2xkfVxuICAgICAgICByZXNpemFibGU9e3Jlc2l6YWJsZX1cbiAgICAgIC8+XG4gICAgKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGxldCB7XG4gICAgICB3aWR0aCxcbiAgICAgIHJ0bCxcbiAgICAgIHJlc291cmNlcyxcbiAgICAgIHJhbmdlLFxuICAgICAgZXZlbnRzLFxuICAgICAgZ2V0Tm93LFxuICAgICAgYWNjZXNzb3JzLFxuICAgICAgc2VsZWN0YWJsZSxcbiAgICAgIGNvbXBvbmVudHMsXG4gICAgICBnZXR0ZXJzLFxuICAgICAgc2Nyb2xsUmVmLFxuICAgICAgbG9jYWxpemVyLFxuICAgICAgaXNPdmVyZmxvd2luZyxcbiAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgdGltZUd1dHRlckhlYWRlcjogVGltZUd1dHRlckhlYWRlcixcbiAgICAgICAgcmVzb3VyY2VIZWFkZXI6IFJlc291cmNlSGVhZGVyQ29tcG9uZW50ID0gUmVzb3VyY2VIZWFkZXIsXG4gICAgICB9LFxuICAgICAgcmVzaXphYmxlLFxuICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICBsZXQgc3R5bGUgPSB7fVxuICAgIGlmIChpc092ZXJmbG93aW5nKSB7XG4gICAgICBzdHlsZVtydGwgPyAnbWFyZ2luTGVmdCcgOiAnbWFyZ2luUmlnaHQnXSA9IGAke3Njcm9sbGJhclNpemUoKSAtIDF9cHhgXG4gICAgfVxuXG4gICAgY29uc3QgZ3JvdXBlZEV2ZW50cyA9IHJlc291cmNlcy5ncm91cEV2ZW50cyhldmVudHMpXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgIHJlZj17c2Nyb2xsUmVmfVxuICAgICAgICBjbGFzc05hbWU9e2Nsc3goJ3JiYy10aW1lLWhlYWRlcicsIGlzT3ZlcmZsb3dpbmcgJiYgJ3JiYy1vdmVyZmxvd2luZycpfVxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwicmJjLWxhYmVsIHJiYy10aW1lLWhlYWRlci1ndXR0ZXJcIlxuICAgICAgICAgIHN0eWxlPXt7IHdpZHRoLCBtaW5XaWR0aDogd2lkdGgsIG1heFdpZHRoOiB3aWR0aCB9fVxuICAgICAgICA+XG4gICAgICAgICAge1RpbWVHdXR0ZXJIZWFkZXIgJiYgPFRpbWVHdXR0ZXJIZWFkZXIgLz59XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHtyZXNvdXJjZXMubWFwKChbaWQsIHJlc291cmNlXSwgaWR4KSA9PiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYmMtdGltZS1oZWFkZXItY29udGVudFwiIGtleT17aWQgfHwgaWR4fT5cbiAgICAgICAgICAgIHtyZXNvdXJjZSAmJiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLXJvdyByYmMtcm93LXJlc291cmNlXCIga2V5PXtgcmVzb3VyY2VfJHtpZHh9YH0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYmMtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICA8UmVzb3VyY2VIZWFkZXJDb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2lkeH1cbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9e2FjY2Vzc29ycy5yZXNvdXJjZVRpdGxlKHJlc291cmNlKX1cbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U9e3Jlc291cmNlfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2ByYmMtcm93IHJiYy10aW1lLWhlYWRlci1jZWxsJHtcbiAgICAgICAgICAgICAgICByYW5nZS5sZW5ndGggPD0gMSA/ICcgcmJjLXRpbWUtaGVhZGVyLWNlbGwtc2luZ2xlLWRheScgOiAnJ1xuICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3RoaXMucmVuZGVySGVhZGVyQ2VsbHMocmFuZ2UpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8RGF0ZUNvbnRlbnRSb3dcbiAgICAgICAgICAgICAgaXNBbGxEYXlcbiAgICAgICAgICAgICAgcnRsPXtydGx9XG4gICAgICAgICAgICAgIGdldE5vdz17Z2V0Tm93fVxuICAgICAgICAgICAgICBtaW5Sb3dzPXsyfVxuICAgICAgICAgICAgICAvLyBBZGQgKzEgdG8gaW5jbHVkZSBzaG93TW9yZSBidXR0b24gcm93IGluIHRoZSByb3cgbGltaXRcbiAgICAgICAgICAgICAgbWF4Um93cz17dGhpcy5wcm9wcy5hbGxEYXlNYXhSb3dzICsgMX1cbiAgICAgICAgICAgICAgcmFuZ2U9e3JhbmdlfVxuICAgICAgICAgICAgICBldmVudHM9e2dyb3VwZWRFdmVudHMuZ2V0KGlkKSB8fCBbXX1cbiAgICAgICAgICAgICAgcmVzb3VyY2VJZD17cmVzb3VyY2UgJiYgaWR9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJiYy1hbGxkYXktY2VsbFwiXG4gICAgICAgICAgICAgIHNlbGVjdGFibGU9e3NlbGVjdGFibGV9XG4gICAgICAgICAgICAgIHNlbGVjdGVkPXt0aGlzLnByb3BzLnNlbGVjdGVkfVxuICAgICAgICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICAgICAgICBhY2Nlc3NvcnM9e2FjY2Vzc29yc31cbiAgICAgICAgICAgICAgZ2V0dGVycz17Z2V0dGVyc31cbiAgICAgICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnByb3BzLm9uU2VsZWN0RXZlbnR9XG4gICAgICAgICAgICAgIG9uU2hvd01vcmU9e3RoaXMucHJvcHMub25TaG93TW9yZX1cbiAgICAgICAgICAgICAgb25Eb3VibGVDbGljaz17dGhpcy5wcm9wcy5vbkRvdWJsZUNsaWNrRXZlbnR9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17dGhpcy5wcm9wcy5vbktleVByZXNzRXZlbnR9XG4gICAgICAgICAgICAgIG9uU2VsZWN0U2xvdD17dGhpcy5wcm9wcy5vblNlbGVjdFNsb3R9XG4gICAgICAgICAgICAgIGxvbmdQcmVzc1RocmVzaG9sZD17dGhpcy5wcm9wcy5sb25nUHJlc3NUaHJlc2hvbGR9XG4gICAgICAgICAgICAgIHJlc2l6YWJsZT17cmVzaXphYmxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cbn1cblxuVGltZUdyaWRIZWFkZXIucHJvcFR5cGVzID0ge1xuICByYW5nZTogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGV2ZW50czogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIHJlc291cmNlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgZ2V0Tm93OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBpc092ZXJmbG93aW5nOiBQcm9wVHlwZXMuYm9vbCxcblxuICBydGw6IFByb3BUeXBlcy5ib29sLFxuICByZXNpemFibGU6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlcixcblxuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgYWNjZXNzb3JzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNvbXBvbmVudHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZ2V0dGVyczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuXG4gIHNlbGVjdGVkOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzZWxlY3RhYmxlOiBQcm9wVHlwZXMub25lT2YoW3RydWUsIGZhbHNlLCAnaWdub3JlRXZlbnRzJ10pLFxuICBsb25nUHJlc3NUaHJlc2hvbGQ6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgYWxsRGF5TWF4Um93czogUHJvcFR5cGVzLm51bWJlcixcblxuICBvblNlbGVjdFNsb3Q6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdEV2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Eb3VibGVDbGlja0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25LZXlQcmVzc0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25EcmlsbERvd246IFByb3BUeXBlcy5mdW5jLFxuICBvblNob3dNb3JlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZ2V0RHJpbGxkb3duVmlldzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgc2Nyb2xsUmVmOiBQcm9wVHlwZXMuYW55LFxufVxuXG5leHBvcnQgZGVmYXVsdCBUaW1lR3JpZEhlYWRlclxuIiwiZXhwb3J0IGNvbnN0IE5PTkUgPSB7fVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSZXNvdXJjZXMocmVzb3VyY2VzLCBhY2Nlc3NvcnMpIHtcbiAgcmV0dXJuIHtcbiAgICBtYXAoZm4pIHtcbiAgICAgIGlmICghcmVzb3VyY2VzKSByZXR1cm4gW2ZuKFtOT05FLCBudWxsXSwgMCldXG4gICAgICByZXR1cm4gcmVzb3VyY2VzLm1hcCgocmVzb3VyY2UsIGlkeCkgPT5cbiAgICAgICAgZm4oW2FjY2Vzc29ycy5yZXNvdXJjZUlkKHJlc291cmNlKSwgcmVzb3VyY2VdLCBpZHgpXG4gICAgICApXG4gICAgfSxcblxuICAgIGdyb3VwRXZlbnRzKGV2ZW50cykge1xuICAgICAgY29uc3QgZXZlbnRzQnlSZXNvdXJjZSA9IG5ldyBNYXAoKVxuXG4gICAgICBpZiAoIXJlc291cmNlcykge1xuICAgICAgICAvLyBSZXR1cm4gYWxsIGV2ZW50cyBpZiByZXNvdXJjZXMgYXJlIG5vdCBwcm92aWRlZFxuICAgICAgICBldmVudHNCeVJlc291cmNlLnNldChOT05FLCBldmVudHMpXG4gICAgICAgIHJldHVybiBldmVudHNCeVJlc291cmNlXG4gICAgICB9XG5cbiAgICAgIGV2ZW50cy5mb3JFYWNoKChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBpZCA9IGFjY2Vzc29ycy5yZXNvdXJjZShldmVudCkgfHwgTk9ORVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpZCkpIHtcbiAgICAgICAgICBpZC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVzb3VyY2VFdmVudHMgPSBldmVudHNCeVJlc291cmNlLmdldChpdGVtKSB8fCBbXVxuICAgICAgICAgICAgcmVzb3VyY2VFdmVudHMucHVzaChldmVudClcbiAgICAgICAgICAgIGV2ZW50c0J5UmVzb3VyY2Uuc2V0KGl0ZW0sIHJlc291cmNlRXZlbnRzKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IHJlc291cmNlRXZlbnRzID0gZXZlbnRzQnlSZXNvdXJjZS5nZXQoaWQpIHx8IFtdXG4gICAgICAgICAgcmVzb3VyY2VFdmVudHMucHVzaChldmVudClcbiAgICAgICAgICBldmVudHNCeVJlc291cmNlLnNldChpZCwgcmVzb3VyY2VFdmVudHMpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICByZXR1cm4gZXZlbnRzQnlSZXNvdXJjZVxuICAgIH0sXG4gIH1cbn1cbiIsImltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQsIGNyZWF0ZVJlZiB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCdcbmltcG9ydCAqIGFzIGFuaW1hdGlvbkZyYW1lIGZyb20gJ2RvbS1oZWxwZXJzL2FuaW1hdGlvbkZyYW1lJ1xuaW1wb3J0IG1lbW9pemUgZnJvbSAnbWVtb2l6ZS1vbmUnXG5cbmltcG9ydCBEYXlDb2x1bW4gZnJvbSAnLi9EYXlDb2x1bW4nXG5pbXBvcnQgVGltZUd1dHRlciBmcm9tICcuL1RpbWVHdXR0ZXInXG5pbXBvcnQgVGltZUdyaWRIZWFkZXIgZnJvbSAnLi9UaW1lR3JpZEhlYWRlcidcbmltcG9ydCBQb3BPdmVybGF5IGZyb20gJy4vUG9wT3ZlcmxheSdcblxuaW1wb3J0IGdldFdpZHRoIGZyb20gJ2RvbS1oZWxwZXJzL3dpZHRoJ1xuaW1wb3J0IGdldFBvc2l0aW9uIGZyb20gJ2RvbS1oZWxwZXJzL3Bvc2l0aW9uJ1xuaW1wb3J0IHsgdmlld3MgfSBmcm9tICcuL3V0aWxzL2NvbnN0YW50cydcbmltcG9ydCB7IGluUmFuZ2UsIHNvcnRFdmVudHMgfSBmcm9tICcuL3V0aWxzL2V2ZW50TGV2ZWxzJ1xuaW1wb3J0IHsgbm90aWZ5IH0gZnJvbSAnLi91dGlscy9oZWxwZXJzJ1xuaW1wb3J0IFJlc291cmNlcyBmcm9tICcuL3V0aWxzL1Jlc291cmNlcydcbmltcG9ydCB7IERheUxheW91dEFsZ29yaXRobVByb3BUeXBlIH0gZnJvbSAnLi91dGlscy9wcm9wVHlwZXMnXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRpbWVHcmlkIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcylcblxuICAgIHRoaXMuc3RhdGUgPSB7IGd1dHRlcldpZHRoOiB1bmRlZmluZWQsIGlzT3ZlcmZsb3dpbmc6IG51bGwgfVxuXG4gICAgdGhpcy5zY3JvbGxSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKVxuICAgIHRoaXMuY29udGVudFJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpXG4gICAgdGhpcy5jb250YWluZXJSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKVxuICAgIHRoaXMuX3Njcm9sbFJhdGlvID0gbnVsbFxuICAgIHRoaXMuZ3V0dGVyUmVmID0gY3JlYXRlUmVmKClcbiAgfVxuXG4gIGdldFNuYXBzaG90QmVmb3JlVXBkYXRlKCkge1xuICAgIHRoaXMuY2hlY2tPdmVyZmxvdygpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGlmICh0aGlzLnByb3BzLndpZHRoID09IG51bGwpIHtcbiAgICAgIHRoaXMubWVhc3VyZUd1dHRlcigpXG4gICAgfVxuXG4gICAgdGhpcy5jYWxjdWxhdGVTY3JvbGwoKVxuICAgIHRoaXMuYXBwbHlTY3JvbGwoKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuaGFuZGxlUmVzaXplKVxuICB9XG5cbiAgaGFuZGxlU2Nyb2xsID0gKGUpID0+IHtcbiAgICBpZiAodGhpcy5zY3JvbGxSZWYuY3VycmVudCkge1xuICAgICAgdGhpcy5zY3JvbGxSZWYuY3VycmVudC5zY3JvbGxMZWZ0ID0gZS50YXJnZXQuc2Nyb2xsTGVmdFxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVJlc2l6ZSA9ICgpID0+IHtcbiAgICBhbmltYXRpb25GcmFtZS5jYW5jZWwodGhpcy5yYWZIYW5kbGUpXG4gICAgdGhpcy5yYWZIYW5kbGUgPSBhbmltYXRpb25GcmFtZS5yZXF1ZXN0KHRoaXMuY2hlY2tPdmVyZmxvdylcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmhhbmRsZVJlc2l6ZSlcblxuICAgIGFuaW1hdGlvbkZyYW1lLmNhbmNlbCh0aGlzLnJhZkhhbmRsZSlcblxuICAgIGlmICh0aGlzLm1lYXN1cmVHdXR0ZXJBbmltYXRpb25GcmFtZVJlcXVlc3QpIHtcbiAgICAgIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLm1lYXN1cmVHdXR0ZXJBbmltYXRpb25GcmFtZVJlcXVlc3QpXG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIHRoaXMuYXBwbHlTY3JvbGwoKVxuICB9XG5cbiAgaGFuZGxlS2V5UHJlc3NFdmVudCA9ICguLi5hcmdzKSA9PiB7XG4gICAgdGhpcy5jbGVhclNlbGVjdGlvbigpXG4gICAgbm90aWZ5KHRoaXMucHJvcHMub25LZXlQcmVzc0V2ZW50LCBhcmdzKVxuICB9XG5cbiAgaGFuZGxlU2VsZWN0RXZlbnQgPSAoLi4uYXJncykgPT4ge1xuICAgIC8vY2FuY2VsIGFueSBwZW5kaW5nIHNlbGVjdGlvbnMgc28gb25seSB0aGUgZXZlbnQgY2xpY2sgZ29lcyB0aHJvdWdoLlxuICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKVxuICAgIG5vdGlmeSh0aGlzLnByb3BzLm9uU2VsZWN0RXZlbnQsIGFyZ3MpXG4gIH1cblxuICBoYW5kbGVEb3VibGVDbGlja0V2ZW50ID0gKC4uLmFyZ3MpID0+IHtcbiAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKClcbiAgICBub3RpZnkodGhpcy5wcm9wcy5vbkRvdWJsZUNsaWNrRXZlbnQsIGFyZ3MpXG4gIH1cblxuICBoYW5kbGVTaG93TW9yZSA9IChldmVudHMsIGRhdGUsIGNlbGwsIHNsb3QsIHRhcmdldCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHBvcHVwLFxuICAgICAgb25EcmlsbERvd24sXG4gICAgICBvblNob3dNb3JlLFxuICAgICAgZ2V0RHJpbGxkb3duVmlldyxcbiAgICAgIGRvU2hvd01vcmVEcmlsbERvd24sXG4gICAgfSA9IHRoaXMucHJvcHNcbiAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKClcblxuICAgIGlmIChwb3B1cCkge1xuICAgICAgbGV0IHBvc2l0aW9uID0gZ2V0UG9zaXRpb24oY2VsbCwgdGhpcy5jb250YWluZXJSZWYuY3VycmVudClcblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIG92ZXJsYXk6IHtcbiAgICAgICAgICBkYXRlLFxuICAgICAgICAgIGV2ZW50cyxcbiAgICAgICAgICBwb3NpdGlvbjogeyAuLi5wb3NpdGlvbiwgd2lkdGg6ICcyMDBweCcgfSxcbiAgICAgICAgICB0YXJnZXQsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAoZG9TaG93TW9yZURyaWxsRG93bikge1xuICAgICAgbm90aWZ5KG9uRHJpbGxEb3duLCBbZGF0ZSwgZ2V0RHJpbGxkb3duVmlldyhkYXRlKSB8fCB2aWV3cy5EQVldKVxuICAgIH1cblxuICAgIG5vdGlmeShvblNob3dNb3JlLCBbZXZlbnRzLCBkYXRlLCBzbG90XSlcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdEFsbERheVNsb3QgPSAoc2xvdHMsIHNsb3RJbmZvKSA9PiB7XG4gICAgY29uc3QgeyBvblNlbGVjdFNsb3QgfSA9IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoc2xvdHNbMF0pXG4gICAgY29uc3QgZW5kID0gbmV3IERhdGUoc2xvdHNbc2xvdHMubGVuZ3RoIC0gMV0pXG4gICAgZW5kLnNldERhdGUoc2xvdHNbc2xvdHMubGVuZ3RoIC0gMV0uZ2V0RGF0ZSgpICsgMSlcblxuICAgIG5vdGlmeShvblNlbGVjdFNsb3QsIHtcbiAgICAgIHNsb3RzLFxuICAgICAgc3RhcnQsXG4gICAgICBlbmQsXG4gICAgICBhY3Rpb246IHNsb3RJbmZvLmFjdGlvbixcbiAgICAgIHJlc291cmNlSWQ6IHNsb3RJbmZvLnJlc291cmNlSWQsXG4gICAgfSlcbiAgfVxuXG4gIHJlbmRlckV2ZW50cyhyYW5nZSwgZXZlbnRzLCBiYWNrZ3JvdW5kRXZlbnRzLCBub3cpIHtcbiAgICBsZXQgeyBtaW4sIG1heCwgY29tcG9uZW50cywgYWNjZXNzb3JzLCBsb2NhbGl6ZXIsIGRheUxheW91dEFsZ29yaXRobSB9ID1cbiAgICAgIHRoaXMucHJvcHNcblxuICAgIGNvbnN0IHJlc291cmNlcyA9IHRoaXMubWVtb2l6ZWRSZXNvdXJjZXModGhpcy5wcm9wcy5yZXNvdXJjZXMsIGFjY2Vzc29ycylcbiAgICBjb25zdCBncm91cGVkRXZlbnRzID0gcmVzb3VyY2VzLmdyb3VwRXZlbnRzKGV2ZW50cylcbiAgICBjb25zdCBncm91cGVkQmFja2dyb3VuZEV2ZW50cyA9IHJlc291cmNlcy5ncm91cEV2ZW50cyhiYWNrZ3JvdW5kRXZlbnRzKVxuXG4gICAgcmV0dXJuIHJlc291cmNlcy5tYXAoKFtpZCwgcmVzb3VyY2VdLCBpKSA9PlxuICAgICAgcmFuZ2UubWFwKChkYXRlLCBqaikgPT4ge1xuICAgICAgICBsZXQgZGF5c0V2ZW50cyA9IChncm91cGVkRXZlbnRzLmdldChpZCkgfHwgW10pLmZpbHRlcigoZXZlbnQpID0+XG4gICAgICAgICAgbG9jYWxpemVyLmluUmFuZ2UoXG4gICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgYWNjZXNzb3JzLnN0YXJ0KGV2ZW50KSxcbiAgICAgICAgICAgIGFjY2Vzc29ycy5lbmQoZXZlbnQpLFxuICAgICAgICAgICAgJ2RheSdcbiAgICAgICAgICApXG4gICAgICAgIClcblxuICAgICAgICBsZXQgZGF5c0JhY2tncm91bmRFdmVudHMgPSAoXG4gICAgICAgICAgZ3JvdXBlZEJhY2tncm91bmRFdmVudHMuZ2V0KGlkKSB8fCBbXVxuICAgICAgICApLmZpbHRlcigoZXZlbnQpID0+XG4gICAgICAgICAgbG9jYWxpemVyLmluUmFuZ2UoXG4gICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgYWNjZXNzb3JzLnN0YXJ0KGV2ZW50KSxcbiAgICAgICAgICAgIGFjY2Vzc29ycy5lbmQoZXZlbnQpLFxuICAgICAgICAgICAgJ2RheSdcbiAgICAgICAgICApXG4gICAgICAgIClcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxEYXlDb2x1bW5cbiAgICAgICAgICAgIHsuLi50aGlzLnByb3BzfVxuICAgICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgICBtaW49e2xvY2FsaXplci5tZXJnZShkYXRlLCBtaW4pfVxuICAgICAgICAgICAgbWF4PXtsb2NhbGl6ZXIubWVyZ2UoZGF0ZSwgbWF4KX1cbiAgICAgICAgICAgIHJlc291cmNlPXtyZXNvdXJjZSAmJiBpZH1cbiAgICAgICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XG4gICAgICAgICAgICBpc05vdz17bG9jYWxpemVyLmlzU2FtZURhdGUoZGF0ZSwgbm93KX1cbiAgICAgICAgICAgIGtleT17aSArICctJyArIGpqfVxuICAgICAgICAgICAgZGF0ZT17ZGF0ZX1cbiAgICAgICAgICAgIGV2ZW50cz17ZGF5c0V2ZW50c31cbiAgICAgICAgICAgIGJhY2tncm91bmRFdmVudHM9e2RheXNCYWNrZ3JvdW5kRXZlbnRzfVxuICAgICAgICAgICAgZGF5TGF5b3V0QWxnb3JpdGhtPXtkYXlMYXlvdXRBbGdvcml0aG19XG4gICAgICAgICAgLz5cbiAgICAgICAgKVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgbGV0IHtcbiAgICAgIGV2ZW50cyxcbiAgICAgIGJhY2tncm91bmRFdmVudHMsXG4gICAgICByYW5nZSxcbiAgICAgIHdpZHRoLFxuICAgICAgcnRsLFxuICAgICAgc2VsZWN0ZWQsXG4gICAgICBnZXROb3csXG4gICAgICByZXNvdXJjZXMsXG4gICAgICBjb21wb25lbnRzLFxuICAgICAgYWNjZXNzb3JzLFxuICAgICAgZ2V0dGVycyxcbiAgICAgIGxvY2FsaXplcixcbiAgICAgIG1pbixcbiAgICAgIG1heCxcbiAgICAgIHNob3dNdWx0aURheVRpbWVzLFxuICAgICAgbG9uZ1ByZXNzVGhyZXNob2xkLFxuICAgICAgcmVzaXphYmxlLFxuICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICB3aWR0aCA9IHdpZHRoIHx8IHRoaXMuc3RhdGUuZ3V0dGVyV2lkdGhcblxuICAgIGxldCBzdGFydCA9IHJhbmdlWzBdLFxuICAgICAgZW5kID0gcmFuZ2VbcmFuZ2UubGVuZ3RoIC0gMV1cblxuICAgIHRoaXMuc2xvdHMgPSByYW5nZS5sZW5ndGhcblxuICAgIGxldCBhbGxEYXlFdmVudHMgPSBbXSxcbiAgICAgIHJhbmdlRXZlbnRzID0gW10sXG4gICAgICByYW5nZUJhY2tncm91bmRFdmVudHMgPSBbXVxuXG4gICAgZXZlbnRzLmZvckVhY2goKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoaW5SYW5nZShldmVudCwgc3RhcnQsIGVuZCwgYWNjZXNzb3JzLCBsb2NhbGl6ZXIpKSB7XG4gICAgICAgIGxldCBlU3RhcnQgPSBhY2Nlc3NvcnMuc3RhcnQoZXZlbnQpLFxuICAgICAgICAgIGVFbmQgPSBhY2Nlc3NvcnMuZW5kKGV2ZW50KVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBhY2Nlc3NvcnMuYWxsRGF5KGV2ZW50KSB8fFxuICAgICAgICAgIGxvY2FsaXplci5zdGFydEFuZEVuZEFyZURhdGVPbmx5KGVTdGFydCwgZUVuZCkgfHxcbiAgICAgICAgICAoIXNob3dNdWx0aURheVRpbWVzICYmICFsb2NhbGl6ZXIuaXNTYW1lRGF0ZShlU3RhcnQsIGVFbmQpKVxuICAgICAgICApIHtcbiAgICAgICAgICBhbGxEYXlFdmVudHMucHVzaChldmVudClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByYW5nZUV2ZW50cy5wdXNoKGV2ZW50KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcblxuICAgIGJhY2tncm91bmRFdmVudHMuZm9yRWFjaCgoZXZlbnQpID0+IHtcbiAgICAgIGlmIChpblJhbmdlKGV2ZW50LCBzdGFydCwgZW5kLCBhY2Nlc3NvcnMsIGxvY2FsaXplcikpIHtcbiAgICAgICAgcmFuZ2VCYWNrZ3JvdW5kRXZlbnRzLnB1c2goZXZlbnQpXG4gICAgICB9XG4gICAgfSlcblxuICAgIGFsbERheUV2ZW50cy5zb3J0KChhLCBiKSA9PiBzb3J0RXZlbnRzKGEsIGIsIGFjY2Vzc29ycywgbG9jYWxpemVyKSlcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y2xzeChcbiAgICAgICAgICAncmJjLXRpbWUtdmlldycsXG4gICAgICAgICAgcmVzb3VyY2VzICYmICdyYmMtdGltZS12aWV3LXJlc291cmNlcydcbiAgICAgICAgKX1cbiAgICAgICAgcmVmPXt0aGlzLmNvbnRhaW5lclJlZn1cbiAgICAgID5cbiAgICAgICAgPFRpbWVHcmlkSGVhZGVyXG4gICAgICAgICAgcmFuZ2U9e3JhbmdlfVxuICAgICAgICAgIGV2ZW50cz17YWxsRGF5RXZlbnRzfVxuICAgICAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgICAgICBydGw9e3J0bH1cbiAgICAgICAgICBnZXROb3c9e2dldE5vd31cbiAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWR9XG4gICAgICAgICAgYWxsRGF5TWF4Um93cz17XG4gICAgICAgICAgICB0aGlzLnByb3BzLnNob3dBbGxFdmVudHNcbiAgICAgICAgICAgICAgPyBJbmZpbml0eVxuICAgICAgICAgICAgICA6IHRoaXMucHJvcHMuYWxsRGF5TWF4Um93cyA/PyBJbmZpbml0eVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXNvdXJjZXM9e3RoaXMubWVtb2l6ZWRSZXNvdXJjZXMocmVzb3VyY2VzLCBhY2Nlc3NvcnMpfVxuICAgICAgICAgIHNlbGVjdGFibGU9e3RoaXMucHJvcHMuc2VsZWN0YWJsZX1cbiAgICAgICAgICBhY2Nlc3NvcnM9e2FjY2Vzc29yc31cbiAgICAgICAgICBnZXR0ZXJzPXtnZXR0ZXJzfVxuICAgICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XG4gICAgICAgICAgc2Nyb2xsUmVmPXt0aGlzLnNjcm9sbFJlZn1cbiAgICAgICAgICBpc092ZXJmbG93aW5nPXt0aGlzLnN0YXRlLmlzT3ZlcmZsb3dpbmd9XG4gICAgICAgICAgbG9uZ1ByZXNzVGhyZXNob2xkPXtsb25nUHJlc3NUaHJlc2hvbGR9XG4gICAgICAgICAgb25TZWxlY3RTbG90PXt0aGlzLmhhbmRsZVNlbGVjdEFsbERheVNsb3R9XG4gICAgICAgICAgb25TZWxlY3RFdmVudD17dGhpcy5oYW5kbGVTZWxlY3RFdmVudH1cbiAgICAgICAgICBvblNob3dNb3JlPXt0aGlzLmhhbmRsZVNob3dNb3JlfVxuICAgICAgICAgIG9uRG91YmxlQ2xpY2tFdmVudD17dGhpcy5wcm9wcy5vbkRvdWJsZUNsaWNrRXZlbnR9XG4gICAgICAgICAgb25LZXlQcmVzc0V2ZW50PXt0aGlzLnByb3BzLm9uS2V5UHJlc3NFdmVudH1cbiAgICAgICAgICBvbkRyaWxsRG93bj17dGhpcy5wcm9wcy5vbkRyaWxsRG93bn1cbiAgICAgICAgICBnZXREcmlsbGRvd25WaWV3PXt0aGlzLnByb3BzLmdldERyaWxsZG93blZpZXd9XG4gICAgICAgICAgcmVzaXphYmxlPXtyZXNpemFibGV9XG4gICAgICAgIC8+XG4gICAgICAgIHt0aGlzLnByb3BzLnBvcHVwICYmIHRoaXMucmVuZGVyT3ZlcmxheSgpfVxuICAgICAgICA8ZGl2XG4gICAgICAgICAgcmVmPXt0aGlzLmNvbnRlbnRSZWZ9XG4gICAgICAgICAgY2xhc3NOYW1lPVwicmJjLXRpbWUtY29udGVudFwiXG4gICAgICAgICAgb25TY3JvbGw9e3RoaXMuaGFuZGxlU2Nyb2xsfVxuICAgICAgICA+XG4gICAgICAgICAgPFRpbWVHdXR0ZXJcbiAgICAgICAgICAgIGRhdGU9e3N0YXJ0fVxuICAgICAgICAgICAgcmVmPXt0aGlzLmd1dHRlclJlZn1cbiAgICAgICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICAgICAgbWluPXtsb2NhbGl6ZXIubWVyZ2Uoc3RhcnQsIG1pbil9XG4gICAgICAgICAgICBtYXg9e2xvY2FsaXplci5tZXJnZShzdGFydCwgbWF4KX1cbiAgICAgICAgICAgIHN0ZXA9e3RoaXMucHJvcHMuc3RlcH1cbiAgICAgICAgICAgIGdldE5vdz17dGhpcy5wcm9wcy5nZXROb3d9XG4gICAgICAgICAgICB0aW1lc2xvdHM9e3RoaXMucHJvcHMudGltZXNsb3RzfVxuICAgICAgICAgICAgY29tcG9uZW50cz17Y29tcG9uZW50c31cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInJiYy10aW1lLWd1dHRlclwiXG4gICAgICAgICAgICBnZXR0ZXJzPXtnZXR0ZXJzfVxuICAgICAgICAgIC8+XG4gICAgICAgICAge3RoaXMucmVuZGVyRXZlbnRzKFxuICAgICAgICAgICAgcmFuZ2UsXG4gICAgICAgICAgICByYW5nZUV2ZW50cyxcbiAgICAgICAgICAgIHJhbmdlQmFja2dyb3VuZEV2ZW50cyxcbiAgICAgICAgICAgIGdldE5vdygpXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cblxuICByZW5kZXJPdmVybGF5KCkge1xuICAgIGxldCBvdmVybGF5ID0gdGhpcy5zdGF0ZT8ub3ZlcmxheSA/PyB7fVxuICAgIGxldCB7XG4gICAgICBhY2Nlc3NvcnMsXG4gICAgICBsb2NhbGl6ZXIsXG4gICAgICBjb21wb25lbnRzLFxuICAgICAgZ2V0dGVycyxcbiAgICAgIHNlbGVjdGVkLFxuICAgICAgcG9wdXBPZmZzZXQsXG4gICAgICBoYW5kbGVEcmFnU3RhcnQsXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IG9uSGlkZSA9ICgpID0+IHRoaXMuc2V0U3RhdGUoeyBvdmVybGF5OiBudWxsIH0pXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFBvcE92ZXJsYXlcbiAgICAgICAgb3ZlcmxheT17b3ZlcmxheX1cbiAgICAgICAgYWNjZXNzb3JzPXthY2Nlc3NvcnN9XG4gICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICBnZXR0ZXJzPXtnZXR0ZXJzfVxuICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWR9XG4gICAgICAgIHBvcHVwT2Zmc2V0PXtwb3B1cE9mZnNldH1cbiAgICAgICAgcmVmPXt0aGlzLmNvbnRhaW5lclJlZn1cbiAgICAgICAgaGFuZGxlS2V5UHJlc3NFdmVudD17dGhpcy5oYW5kbGVLZXlQcmVzc0V2ZW50fVxuICAgICAgICBoYW5kbGVTZWxlY3RFdmVudD17dGhpcy5oYW5kbGVTZWxlY3RFdmVudH1cbiAgICAgICAgaGFuZGxlRG91YmxlQ2xpY2tFdmVudD17dGhpcy5oYW5kbGVEb3VibGVDbGlja0V2ZW50fVxuICAgICAgICBoYW5kbGVEcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgc2hvdz17ISFvdmVybGF5LnBvc2l0aW9ufVxuICAgICAgICBvdmVybGF5RGlzcGxheT17dGhpcy5vdmVybGF5RGlzcGxheX1cbiAgICAgICAgb25IaWRlPXtvbkhpZGV9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIG92ZXJsYXlEaXNwbGF5ID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgb3ZlcmxheTogbnVsbCxcbiAgICB9KVxuICB9XG5cbiAgY2xlYXJTZWxlY3Rpb24oKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3NlbGVjdFRpbWVyKVxuICAgIHRoaXMuX3BlbmRpbmdTZWxlY3Rpb24gPSBbXVxuICB9XG5cbiAgbWVhc3VyZUd1dHRlcigpIHtcbiAgICBpZiAodGhpcy5tZWFzdXJlR3V0dGVyQW5pbWF0aW9uRnJhbWVSZXF1ZXN0KSB7XG4gICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5tZWFzdXJlR3V0dGVyQW5pbWF0aW9uRnJhbWVSZXF1ZXN0KVxuICAgIH1cbiAgICB0aGlzLm1lYXN1cmVHdXR0ZXJBbmltYXRpb25GcmFtZVJlcXVlc3QgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCB3aWR0aCA9IHRoaXMuZ3V0dGVyUmVmPy5jdXJyZW50XG4gICAgICAgICAgPyBnZXRXaWR0aCh0aGlzLmd1dHRlclJlZi5jdXJyZW50KVxuICAgICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICAgICAgaWYgKHdpZHRoICYmIHRoaXMuc3RhdGUuZ3V0dGVyV2lkdGggIT09IHdpZHRoKSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGd1dHRlcldpZHRoOiB3aWR0aCB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgYXBwbHlTY3JvbGwoKSB7XG4gICAgLy8gSWYgYXV0by1zY3JvbGwgaXMgZGlzYWJsZWQsIHdlIGRvbid0IGFjdHVhbGx5IGFwcGx5IHRoZSBzY3JvbGxcbiAgICBpZiAodGhpcy5fc2Nyb2xsUmF0aW8gIT0gbnVsbCAmJiB0aGlzLnByb3BzLmVuYWJsZUF1dG9TY3JvbGwgPT09IHRydWUpIHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmNvbnRlbnRSZWYuY3VycmVudFxuICAgICAgY29udGVudC5zY3JvbGxUb3AgPSBjb250ZW50LnNjcm9sbEhlaWdodCAqIHRoaXMuX3Njcm9sbFJhdGlvXG4gICAgICAvLyBPbmx5IGRvIHRoaXMgb25jZVxuICAgICAgdGhpcy5fc2Nyb2xsUmF0aW8gPSBudWxsXG4gICAgfVxuICB9XG5cbiAgY2FsY3VsYXRlU2Nyb2xsKHByb3BzID0gdGhpcy5wcm9wcykge1xuICAgIGNvbnN0IHsgbWluLCBtYXgsIHNjcm9sbFRvVGltZSwgbG9jYWxpemVyIH0gPSBwcm9wc1xuXG4gICAgY29uc3QgZGlmZk1pbGxpcyA9IGxvY2FsaXplci5kaWZmKFxuICAgICAgbG9jYWxpemVyLm1lcmdlKHNjcm9sbFRvVGltZSwgbWluKSxcbiAgICAgIHNjcm9sbFRvVGltZSxcbiAgICAgICdtaWxsaXNlY29uZHMnXG4gICAgKVxuICAgIGNvbnN0IHRvdGFsTWlsbGlzID0gbG9jYWxpemVyLmRpZmYobWluLCBtYXgsICdtaWxsaXNlY29uZHMnKVxuXG4gICAgdGhpcy5fc2Nyb2xsUmF0aW8gPSBkaWZmTWlsbGlzIC8gdG90YWxNaWxsaXNcbiAgfVxuXG4gIGNoZWNrT3ZlcmZsb3cgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuX3VwZGF0aW5nT3ZlcmZsb3cpIHJldHVyblxuXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuY29udGVudFJlZi5jdXJyZW50XG5cbiAgICBpZiAoIWNvbnRlbnQ/LnNjcm9sbEhlaWdodCkgcmV0dXJuXG4gICAgbGV0IGlzT3ZlcmZsb3dpbmcgPSBjb250ZW50LnNjcm9sbEhlaWdodCA+IGNvbnRlbnQuY2xpZW50SGVpZ2h0XG5cbiAgICBpZiAodGhpcy5zdGF0ZS5pc092ZXJmbG93aW5nICE9PSBpc092ZXJmbG93aW5nKSB7XG4gICAgICB0aGlzLl91cGRhdGluZ092ZXJmbG93ID0gdHJ1ZVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGlzT3ZlcmZsb3dpbmcgfSwgKCkgPT4ge1xuICAgICAgICB0aGlzLl91cGRhdGluZ092ZXJmbG93ID0gZmFsc2VcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgbWVtb2l6ZWRSZXNvdXJjZXMgPSBtZW1vaXplKChyZXNvdXJjZXMsIGFjY2Vzc29ycykgPT5cbiAgICBSZXNvdXJjZXMocmVzb3VyY2VzLCBhY2Nlc3NvcnMpXG4gIClcbn1cblxuVGltZUdyaWQucHJvcFR5cGVzID0ge1xuICBldmVudHM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBiYWNrZ3JvdW5kRXZlbnRzOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgcmVzb3VyY2VzOiBQcm9wVHlwZXMuYXJyYXksXG5cbiAgc3RlcDogUHJvcFR5cGVzLm51bWJlcixcbiAgdGltZXNsb3RzOiBQcm9wVHlwZXMubnVtYmVyLFxuICByYW5nZTogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSkpLFxuICBtaW46IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsXG4gIG1heDogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxcbiAgZ2V0Tm93OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuXG4gIHNjcm9sbFRvVGltZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSkuaXNSZXF1aXJlZCxcbiAgZW5hYmxlQXV0b1Njcm9sbDogUHJvcFR5cGVzLmJvb2wsXG4gIHNob3dNdWx0aURheVRpbWVzOiBQcm9wVHlwZXMuYm9vbCxcblxuICBydGw6IFByb3BUeXBlcy5ib29sLFxuICByZXNpemFibGU6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlcixcblxuICBhY2Nlc3NvcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY29tcG9uZW50czogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnZXR0ZXJzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGxvY2FsaXplcjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuXG4gIGFsbERheU1heFJvd3M6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHNlbGVjdGFibGU6IFByb3BUeXBlcy5vbmVPZihbdHJ1ZSwgZmFsc2UsICdpZ25vcmVFdmVudHMnXSksXG4gIGxvbmdQcmVzc1RocmVzaG9sZDogUHJvcFR5cGVzLm51bWJlcixcblxuICBvbk5hdmlnYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3RTbG90OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3RFbmQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdFN0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3RFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2hvd01vcmU6IFByb3BUeXBlcy5mdW5jLFxuICBvbkRvdWJsZUNsaWNrRXZlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvbktleVByZXNzRXZlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvbkRyaWxsRG93bjogUHJvcFR5cGVzLmZ1bmMsXG4gIGdldERyaWxsZG93blZpZXc6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cbiAgZGF5TGF5b3V0QWxnb3JpdGhtOiBEYXlMYXlvdXRBbGdvcml0aG1Qcm9wVHlwZSxcblxuICBzaG93QWxsRXZlbnRzOiBQcm9wVHlwZXMuYm9vbCxcbiAgZG9TaG93TW9yZURyaWxsRG93bjogUHJvcFR5cGVzLmJvb2wsXG5cbiAgcG9wdXA6IFByb3BUeXBlcy5ib29sLFxuICBoYW5kbGVEcmFnU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIHBvcHVwT2Zmc2V0OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICBQcm9wVHlwZXMubnVtYmVyLFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICB4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgeTogUHJvcFR5cGVzLm51bWJlcixcbiAgICB9KSxcbiAgXSksXG59XG5cblRpbWVHcmlkLmRlZmF1bHRQcm9wcyA9IHtcbiAgc3RlcDogMzAsXG4gIHRpbWVzbG90czogMixcbn1cbiIsImltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmZ1bmN0aW9uIHN0cmluZ2lmeVBlcmNlbnQodikge1xuICByZXR1cm4gdHlwZW9mIHYgPT09ICdzdHJpbmcnID8gdiA6IHYgKyAnJSdcbn1cblxuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcHJvcC10eXBlcyAqL1xuZnVuY3Rpb24gVGltZUdyaWRFdmVudChwcm9wcykge1xuICBjb25zdCB7XG4gICAgc3R5bGUsXG4gICAgY2xhc3NOYW1lLFxuICAgIGV2ZW50LFxuICAgIGFjY2Vzc29ycyxcbiAgICBydGwsXG4gICAgc2VsZWN0ZWQsXG4gICAgbGFiZWwsXG4gICAgY29udGludWVzUHJpb3IsXG4gICAgY29udGludWVzQWZ0ZXIsXG4gICAgZ2V0dGVycyxcbiAgICBvbkNsaWNrLFxuICAgIG9uRG91YmxlQ2xpY2ssXG4gICAgaXNCYWNrZ3JvdW5kRXZlbnQsXG4gICAgb25LZXlQcmVzcyxcbiAgICBjb21wb25lbnRzOiB7IGV2ZW50OiBFdmVudCwgZXZlbnRXcmFwcGVyOiBFdmVudFdyYXBwZXIgfSxcbiAgfSA9IHByb3BzXG4gIGxldCB0aXRsZSA9IGFjY2Vzc29ycy50aXRsZShldmVudClcbiAgbGV0IHRvb2x0aXAgPSBhY2Nlc3NvcnMudG9vbHRpcChldmVudClcbiAgbGV0IGVuZCA9IGFjY2Vzc29ycy5lbmQoZXZlbnQpXG4gIGxldCBzdGFydCA9IGFjY2Vzc29ycy5zdGFydChldmVudClcblxuICBsZXQgdXNlclByb3BzID0gZ2V0dGVycy5ldmVudFByb3AoZXZlbnQsIHN0YXJ0LCBlbmQsIHNlbGVjdGVkKVxuXG4gIGNvbnN0IGlubmVyID0gW1xuICAgIDxkaXYga2V5PVwiMVwiIGNsYXNzTmFtZT1cInJiYy1ldmVudC1sYWJlbFwiPlxuICAgICAge2xhYmVsfVxuICAgIDwvZGl2PixcbiAgICA8ZGl2IGtleT1cIjJcIiBjbGFzc05hbWU9XCJyYmMtZXZlbnQtY29udGVudFwiPlxuICAgICAge0V2ZW50ID8gPEV2ZW50IGV2ZW50PXtldmVudH0gdGl0bGU9e3RpdGxlfSAvPiA6IHRpdGxlfVxuICAgIDwvZGl2PixcbiAgXVxuXG4gIGNvbnN0IHsgaGVpZ2h0LCB0b3AsIHdpZHRoLCB4T2Zmc2V0IH0gPSBzdHlsZVxuXG4gIGNvbnN0IGV2ZW50U3R5bGUgPSB7XG4gICAgLi4udXNlclByb3BzLnN0eWxlLFxuICAgIHRvcDogc3RyaW5naWZ5UGVyY2VudCh0b3ApLFxuICAgIGhlaWdodDogc3RyaW5naWZ5UGVyY2VudChoZWlnaHQpLFxuICAgIHdpZHRoOiBzdHJpbmdpZnlQZXJjZW50KHdpZHRoKSxcbiAgICBbcnRsID8gJ3JpZ2h0JyA6ICdsZWZ0J106IHN0cmluZ2lmeVBlcmNlbnQoeE9mZnNldCksXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxFdmVudFdyYXBwZXIgdHlwZT1cInRpbWVcIiB7Li4ucHJvcHN9PlxuICAgICAgPGRpdlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIG9uRG91YmxlQ2xpY2s9e29uRG91YmxlQ2xpY2t9XG4gICAgICAgIHN0eWxlPXtldmVudFN0eWxlfVxuICAgICAgICBvbktleURvd249e29uS2V5UHJlc3N9XG4gICAgICAgIHRpdGxlPXtcbiAgICAgICAgICB0b29sdGlwXG4gICAgICAgICAgICA/ICh0eXBlb2YgbGFiZWwgPT09ICdzdHJpbmcnID8gbGFiZWwgKyAnOiAnIDogJycpICsgdG9vbHRpcFxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBjbGFzc05hbWU9e2Nsc3goXG4gICAgICAgICAgaXNCYWNrZ3JvdW5kRXZlbnQgPyAncmJjLWJhY2tncm91bmQtZXZlbnQnIDogJ3JiYy1ldmVudCcsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgIHVzZXJQcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgJ3JiYy1zZWxlY3RlZCc6IHNlbGVjdGVkLFxuICAgICAgICAgICAgJ3JiYy1ldmVudC1jb250aW51ZXMtZWFybGllcic6IGNvbnRpbnVlc1ByaW9yLFxuICAgICAgICAgICAgJ3JiYy1ldmVudC1jb250aW51ZXMtbGF0ZXInOiBjb250aW51ZXNBZnRlcixcbiAgICAgICAgICB9XG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIHtpbm5lcn1cbiAgICAgIDwvZGl2PlxuICAgIDwvRXZlbnRXcmFwcGVyPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFRpbWVHcmlkRXZlbnRcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGNvbnN0IERuRENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KClcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnXG5pbXBvcnQgeyBhY2Nlc3NvciBhcyBnZXQgfSBmcm9tICcuLi8uLi91dGlscy9hY2Nlc3NvcnMnXG5pbXBvcnQgeyBEbkRDb250ZXh0IH0gZnJvbSAnLi9EbkRDb250ZXh0J1xuXG5jbGFzcyBFdmVudFdyYXBwZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgY29udGV4dFR5cGUgPSBEbkRDb250ZXh0XG5cbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICB0eXBlOiBQcm9wVHlwZXMub25lT2YoWydkYXRlJywgJ3RpbWUnXSksXG4gICAgZXZlbnQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcblxuICAgIGRyYWdnYWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgYWxsRGF5OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpc1JvdzogUHJvcFR5cGVzLmJvb2wsXG4gICAgY29udGludWVzUHJpb3I6IFByb3BUeXBlcy5ib29sLFxuICAgIGNvbnRpbnVlc0FmdGVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpc0RyYWdnaW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpc1Jlc2l6aW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgICByZXNvdXJjZTogUHJvcFR5cGVzLm51bWJlcixcbiAgICByZXNpemFibGU6IFByb3BUeXBlcy5ib29sLFxuICB9XG5cbiAgaGFuZGxlUmVzaXplVXAgPSAoZSkgPT4ge1xuICAgIGlmIChlLmJ1dHRvbiAhPT0gMCkgcmV0dXJuXG4gICAgdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5vbkJlZ2luQWN0aW9uKHRoaXMucHJvcHMuZXZlbnQsICdyZXNpemUnLCAnVVAnKVxuICB9XG4gIGhhbmRsZVJlc2l6ZURvd24gPSAoZSkgPT4ge1xuICAgIGlmIChlLmJ1dHRvbiAhPT0gMCkgcmV0dXJuXG4gICAgdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5vbkJlZ2luQWN0aW9uKHRoaXMucHJvcHMuZXZlbnQsICdyZXNpemUnLCAnRE9XTicpXG4gIH1cbiAgaGFuZGxlUmVzaXplTGVmdCA9IChlKSA9PiB7XG4gICAgaWYgKGUuYnV0dG9uICE9PSAwKSByZXR1cm5cbiAgICB0aGlzLmNvbnRleHQuZHJhZ2dhYmxlLm9uQmVnaW5BY3Rpb24odGhpcy5wcm9wcy5ldmVudCwgJ3Jlc2l6ZScsICdMRUZUJylcbiAgfVxuICBoYW5kbGVSZXNpemVSaWdodCA9IChlKSA9PiB7XG4gICAgaWYgKGUuYnV0dG9uICE9PSAwKSByZXR1cm5cbiAgICB0aGlzLmNvbnRleHQuZHJhZ2dhYmxlLm9uQmVnaW5BY3Rpb24odGhpcy5wcm9wcy5ldmVudCwgJ3Jlc2l6ZScsICdSSUdIVCcpXG4gIH1cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyA9IChlKSA9PiB7XG4gICAgaWYgKGUuYnV0dG9uICE9PSAwKSByZXR1cm5cbiAgICAvLyBoYWNrOiBiZWNhdXNlIG9mIHRoZSB3YXkgdGhlIGFuY2hvcnMgYXJlIGFycmFuZ2VkIGluIHRoZSBET00sIHJlc2l6ZVxuICAgIC8vIGFuY2hvciBldmVudHMgd2lsbCBidWJibGUgdXAgdG8gdGhlIG1vdmUgYW5jaG9yIGxpc3RlbmVyLiBEb24ndCBzdGFydFxuICAgIC8vIG1vdmUgb3BlcmF0aW9ucyB3aGVuIHdlJ3JlIG9uIGEgcmVzaXplIGFuY2hvci5cbiAgICBjb25zdCBpc1Jlc2l6ZUhhbmRsZSA9IGUudGFyZ2V0XG4gICAgICAuZ2V0QXR0cmlidXRlKCdjbGFzcycpXG4gICAgICA/LmluY2x1ZGVzKCdyYmMtYWRkb25zLWRuZC1yZXNpemUnKVxuICAgIGlmICghaXNSZXNpemVIYW5kbGUpIHtcbiAgICAgIGxldCBleHRlbmRlZEV2ZW50ID0gey4uLnRoaXMucHJvcHMuZXZlbnR9XG4gICAgICBleHRlbmRlZEV2ZW50LnNvdXJjZVJlc291cmNlID0gdGhpcy5wcm9wcy5yZXNvdXJjZVxuICAgICAgdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5vbkJlZ2luQWN0aW9uKHRoaXMucHJvcHMuZXZlbnQsICdtb3ZlJylcbiAgICB9XG4gIH1cblxuICByZW5kZXJBbmNob3IoZGlyZWN0aW9uKSB7XG4gICAgY29uc3QgY2xzID0gZGlyZWN0aW9uID09PSAnVXAnIHx8IGRpcmVjdGlvbiA9PT0gJ0Rvd24nID8gJ25zJyA6ICdldydcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2ByYmMtYWRkb25zLWRuZC1yZXNpemUtJHtjbHN9LWFuY2hvcmB9XG4gICAgICAgIG9uTW91c2VEb3duPXt0aGlzW2BoYW5kbGVSZXNpemUke2RpcmVjdGlvbn1gXX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2ByYmMtYWRkb25zLWRuZC1yZXNpemUtJHtjbHN9LWljb25gfSAvPlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgZXZlbnQsIHR5cGUsIGNvbnRpbnVlc1ByaW9yLCBjb250aW51ZXNBZnRlciwgcmVzaXphYmxlIH0gPVxuICAgICAgdGhpcy5wcm9wc1xuXG4gICAgbGV0IHsgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHNcblxuICAgIGlmIChldmVudC5fX2lzUHJldmlldylcbiAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbHN4KFxuICAgICAgICAgIGNoaWxkcmVuLnByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICAncmJjLWFkZG9ucy1kbmQtZHJhZy1wcmV2aWV3J1xuICAgICAgICApLFxuICAgICAgfSlcblxuICAgIGNvbnN0IHsgZHJhZ2dhYmxlIH0gPSB0aGlzLmNvbnRleHRcbiAgICBjb25zdCB7IGRyYWdnYWJsZUFjY2Vzc29yLCByZXNpemFibGVBY2Nlc3NvciB9ID0gZHJhZ2dhYmxlXG5cbiAgICBjb25zdCBpc0RyYWdnYWJsZSA9IGRyYWdnYWJsZUFjY2Vzc29yXG4gICAgICA/ICEhZ2V0KGV2ZW50LCBkcmFnZ2FibGVBY2Nlc3NvcilcbiAgICAgIDogdHJ1ZVxuXG4gICAgLyogRXZlbnQgaXMgbm90IGRyYWdnYWJsZSwgbm8gbmVlZCB0byB3cmFwIGl0ICovXG4gICAgaWYgKCFpc0RyYWdnYWJsZSkge1xuICAgICAgcmV0dXJuIGNoaWxkcmVuXG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBUaGUgcmVzaXphYmlsaXR5IG9mIGV2ZW50cyBkZXBlbmRzIG9uIHdoZXRoZXIgdGhleSBhcmVcbiAgICAgKiBhbGxEYXkgZXZlbnRzIGFuZCBob3cgdGhleSBhcmUgZGlzcGxheWVkLlxuICAgICAqXG4gICAgICogMS4gSWYgdGhlIGV2ZW50IGlzIGJlaW5nIHNob3duIGluIGFuIGV2ZW50IHJvdyAoYmVjYXVzZVxuICAgICAqIGl0IGlzIGFuIGFsbERheSBldmVudCBzaG93biBpbiB0aGUgaGVhZGVyIHJvdyBvciBiZWNhdXNlIGFzXG4gICAgICogaW4gbW9udGggdmlldyB0aGUgdmlldyBpcyBzaG93aW5nIGFsbCBldmVudHMgYXMgcm93cykgdGhlbiB3ZVxuICAgICAqIGFsbG93IGVhc3Qtd2VzdCByZXNpemluZy5cbiAgICAgKlxuICAgICAqIDIuIE90aGVyd2lzZSB0aGUgZXZlbnQgaXMgYmVpbmcgZGlzcGxheWVkXG4gICAgICogbm9ybWFsbHksIHdlIGNhbiBkcmFnIGl0IG5vcnRoLXNvdXRoIHRvIHJlc2l6ZSB0aGUgdGltZXMuXG4gICAgICpcbiAgICAgKiBTZWUgYERyb3BXcmFwcGVyc2AgZm9yIGhhbmRsaW5nIG9mIHRoZSBkcm9wIG9mIHN1Y2ggZXZlbnRzLlxuICAgICAqXG4gICAgICogTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgd2UgbmV2ZXIgc2hvdyBkcmFnIGFuY2hvcnMgZm9yXG4gICAgICogZXZlbnRzIHdoaWNoIGNvbnRpbnVlIGJleW9uZCBjdXJyZW50IGNvbXBvbmVudC4gVGhpcyBoYXBwZW5zXG4gICAgICogaW4gdGhlIG1pZGRsZSBvZiBldmVudHMgd2hlbiBzaG93TXVsdGlEYXkgaXMgdHJ1ZSwgYW5kIHRvXG4gICAgICogZXZlbnRzIGF0IHRoZSBlZGdlcyBvZiB0aGUgY2FsZW5kYXIncyBtaW4vbWF4IGxvY2F0aW9uLlxuICAgICAqL1xuICAgIGNvbnN0IGlzUmVzaXphYmxlID1cbiAgICAgIHJlc2l6YWJsZSAmJiAocmVzaXphYmxlQWNjZXNzb3IgPyAhIWdldChldmVudCwgcmVzaXphYmxlQWNjZXNzb3IpIDogdHJ1ZSlcblxuICAgIGlmIChpc1Jlc2l6YWJsZSB8fCBpc0RyYWdnYWJsZSkge1xuICAgICAgLypcbiAgICAgICAqIHByb3BzLmNoaWxkcmVuIGlzIHRoZSBzaW5ndWxhciA8RXZlbnQ+IGNvbXBvbmVudC5cbiAgICAgICAqIEJpZ0NhbGVuZGFyIHBvc2l0aW9ucyB0aGUgRXZlbnQgYWJvbHV0ZWx5IGFuZCB3ZVxuICAgICAgICogbmVlZCB0aGUgYW5jaG9ycyB0byBiZSBwYXJ0IG9mIHRoYXQgcG9zaXRpb25pbmcuXG4gICAgICAgKiBTbyB3ZSBpbnNlcnQgdGhlIGFuY2hvcnMgaW5zaWRlIHRoZSBFdmVudCdzIGNoaWxkcmVuXG4gICAgICAgKiByYXRoZXIgdGhhbiB3cmFwIHRoZSBFdmVudCBoZXJlIGFzIHRoZSBsYXR0ZXIgYXBwcm9hY2hcbiAgICAgICAqIHdvdWxkIGxvc2UgdGhlIHBvc2l0aW9uaW5nLlxuICAgICAgICovXG4gICAgICBjb25zdCBuZXdQcm9wcyA9IHtcbiAgICAgICAgb25Nb3VzZURvd246IHRoaXMuaGFuZGxlU3RhcnREcmFnZ2luZyxcbiAgICAgICAgb25Ub3VjaFN0YXJ0OiB0aGlzLmhhbmRsZVN0YXJ0RHJhZ2dpbmcsXG4gICAgICB9XG5cbiAgICAgIGlmIChpc1Jlc2l6YWJsZSkge1xuICAgICAgICAvLyByZXBsYWNlIG9yaWdpbmFsIGV2ZW50IGNoaWxkIHdpdGggYW5jaG9yLWVtYmVsbGlzaGVkIGNoaWxkXG4gICAgICAgIGxldCBTdGFydEFuY2hvciA9IG51bGxcbiAgICAgICAgbGV0IEVuZEFuY2hvciA9IG51bGxcblxuICAgICAgICBpZiAodHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICAgICAgU3RhcnRBbmNob3IgPSAhY29udGludWVzUHJpb3IgJiYgdGhpcy5yZW5kZXJBbmNob3IoJ0xlZnQnKVxuICAgICAgICAgIEVuZEFuY2hvciA9ICFjb250aW51ZXNBZnRlciAmJiB0aGlzLnJlbmRlckFuY2hvcignUmlnaHQnKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFN0YXJ0QW5jaG9yID0gIWNvbnRpbnVlc1ByaW9yICYmIHRoaXMucmVuZGVyQW5jaG9yKCdVcCcpXG4gICAgICAgICAgRW5kQW5jaG9yID0gIWNvbnRpbnVlc0FmdGVyICYmIHRoaXMucmVuZGVyQW5jaG9yKCdEb3duJylcbiAgICAgICAgfVxuXG4gICAgICAgIG5ld1Byb3BzLmNoaWxkcmVuID0gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLWFkZG9ucy1kbmQtcmVzaXphYmxlXCI+XG4gICAgICAgICAgICB7U3RhcnRBbmNob3J9XG4gICAgICAgICAgICB7Y2hpbGRyZW4ucHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICB7RW5kQW5jaG9yfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgZHJhZ2dhYmxlLmRyYWdBbmREcm9wQWN0aW9uLmludGVyYWN0aW5nICYmIC8vIGlmIGFuIGV2ZW50IGlzIGJlaW5nIGRyYWdnZWQgcmlnaHQgbm93XG4gICAgICAgIGRyYWdnYWJsZS5kcmFnQW5kRHJvcEFjdGlvbi5ldmVudCA9PT0gZXZlbnQgLy8gYW5kIGl0J3MgdGhlIGN1cnJlbnQgZXZlbnRcbiAgICAgICkge1xuICAgICAgICAvLyBhZGQgYSBuZXcgY2xhc3MgdG8gaXRcbiAgICAgICAgbmV3UHJvcHMuY2xhc3NOYW1lID0gY2xzeChcbiAgICAgICAgICBjaGlsZHJlbi5wcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgJ3JiYy1hZGRvbnMtZG5kLWRyYWdnZWQtZXZlbnQnXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgY2hpbGRyZW4gPSBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIG5ld1Byb3BzKVxuICAgIH1cblxuICAgIHJldHVybiBjaGlsZHJlblxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEV2ZW50V3JhcHBlclxuIiwiaW1wb3J0IHsgd3JhcEFjY2Vzc29yIH0gZnJvbSAnLi4vLi4vdXRpbHMvYWNjZXNzb3JzJ1xuaW1wb3J0IHsgY3JlYXRlRmFjdG9yeSB9IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgY29uc3QgZHJhZ0FjY2Vzc29ycyA9IHtcbiAgc3RhcnQ6IHdyYXBBY2Nlc3NvcigoZSkgPT4gZS5zdGFydCksXG4gIGVuZDogd3JhcEFjY2Vzc29yKChlKSA9PiBlLmVuZCksXG59XG5cbmZ1bmN0aW9uIG5lc3QoLi4uQ29tcG9uZW50cykge1xuICBjb25zdCBmYWN0b3JpZXMgPSBDb21wb25lbnRzLmZpbHRlcihCb29sZWFuKS5tYXAoY3JlYXRlRmFjdG9yeSlcbiAgY29uc3QgTmVzdCA9ICh7IGNoaWxkcmVuLCAuLi5wcm9wcyB9KSA9PlxuICAgIGZhY3Rvcmllcy5yZWR1Y2VSaWdodCgoY2hpbGQsIGZhY3RvcnkpID0+IGZhY3RvcnkocHJvcHMsIGNoaWxkKSwgY2hpbGRyZW4pXG5cbiAgcmV0dXJuIE5lc3Rcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlQ29tcG9uZW50cyhjb21wb25lbnRzID0ge30sIGFkZG9ucykge1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoYWRkb25zKVxuICBjb25zdCByZXN1bHQgPSB7IC4uLmNvbXBvbmVudHMgfVxuXG4gIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgcmVzdWx0W2tleV0gPSBjb21wb25lbnRzW2tleV1cbiAgICAgID8gbmVzdChjb21wb25lbnRzW2tleV0sIGFkZG9uc1trZXldKVxuICAgICAgOiBhZGRvbnNba2V5XVxuICB9KVxuICByZXR1cm4gcmVzdWx0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb2ludEluQ29sdW1uKGJvdW5kcywgcG9pbnQpIHtcbiAgY29uc3QgeyBsZWZ0LCByaWdodCwgdG9wIH0gPSBib3VuZHNcbiAgY29uc3QgeyB4LCB5IH0gPSBwb2ludFxuICByZXR1cm4geCA8IHJpZ2h0ICsgMTAgJiYgeCA+IGxlZnQgJiYgeSA+IHRvcFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRUaW1lcyhldmVudCwgYWNjZXNzb3JzLCBsb2NhbGl6ZXIpIHtcbiAgbGV0IHN0YXJ0ID0gYWNjZXNzb3JzLnN0YXJ0KGV2ZW50KVxuICBsZXQgZW5kID0gYWNjZXNzb3JzLmVuZChldmVudClcblxuICBjb25zdCBpc1plcm9EdXJhdGlvbiA9XG4gICAgbG9jYWxpemVyLmVxKHN0YXJ0LCBlbmQsICdtaW51dGVzJykgJiZcbiAgICBsb2NhbGl6ZXIuZGlmZihzdGFydCwgZW5kLCAnbWludXRlcycpID09PSAwXG4gIC8vIG1ha2UgemVybyBkdXJhdGlvbiBtaWRuaWdodCBldmVudHMgYXQgbGVhc3Qgb25lIGRheSBsb25nXG4gIGlmIChpc1plcm9EdXJhdGlvbikgZW5kID0gbG9jYWxpemVyLmFkZChlbmQsIDEsICdkYXknKVxuICBjb25zdCBkdXJhdGlvbiA9IGxvY2FsaXplci5kaWZmKHN0YXJ0LCBlbmQsICdtaWxsaXNlY29uZHMnKVxuICByZXR1cm4geyBzdGFydCwgZW5kLCBkdXJhdGlvbiB9XG59XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBEbkRDb250ZXh0IH0gZnJvbSAnLi9EbkRDb250ZXh0J1xuaW1wb3J0IHsgc2Nyb2xsUGFyZW50LCBzY3JvbGxUb3AgfSBmcm9tICdkb20taGVscGVycydcbmltcG9ydCBxc2EgZnJvbSAnZG9tLWhlbHBlcnMvY2pzL3F1ZXJ5U2VsZWN0b3JBbGwnXG5cbmltcG9ydCBTZWxlY3Rpb24sIHtcbiAgZ2V0Qm91bmRzRm9yTm9kZSxcbiAgZ2V0RXZlbnROb2RlRnJvbVBvaW50LFxufSBmcm9tICcuLi8uLi9TZWxlY3Rpb24nXG5pbXBvcnQgVGltZUdyaWRFdmVudCBmcm9tICcuLi8uLi9UaW1lR3JpZEV2ZW50J1xuaW1wb3J0IHsgZHJhZ0FjY2Vzc29ycywgZXZlbnRUaW1lcywgcG9pbnRJbkNvbHVtbiB9IGZyb20gJy4vY29tbW9uJ1xuXG5jbGFzcyBFdmVudENvbnRhaW5lcldyYXBwZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGFjY2Vzc29yczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGNvbXBvbmVudHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBnZXR0ZXJzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgbG9jYWxpemVyOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgc2xvdE1ldHJpY3M6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICByZXNvdXJjZTogUHJvcFR5cGVzLmFueSxcbiAgfVxuXG4gIHN0YXRpYyBjb250ZXh0VHlwZSA9IERuRENvbnRleHRcblxuICBjb25zdHJ1Y3RvciguLi5hcmdzKSB7XG4gICAgc3VwZXIoLi4uYXJncylcbiAgICB0aGlzLnN0YXRlID0ge31cbiAgICB0aGlzLnJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpXG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLl9zZWxlY3RhYmxlKClcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuX3RlYXJkb3duU2VsZWN0YWJsZSgpXG4gIH1cblxuICByZXNldCgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5ldmVudClcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBldmVudDogbnVsbCwgdG9wOiBudWxsLCBoZWlnaHQ6IG51bGwgfSlcbiAgfVxuXG4gIHVwZGF0ZShldmVudCwgeyBzdGFydERhdGUsIGVuZERhdGUsIHRvcCwgaGVpZ2h0IH0pIHtcbiAgICBjb25zdCB7IGV2ZW50OiBsYXN0RXZlbnQgfSA9IHRoaXMuc3RhdGVcbiAgICBpZiAoXG4gICAgICBsYXN0RXZlbnQgJiZcbiAgICAgIHN0YXJ0RGF0ZSA9PT0gbGFzdEV2ZW50LnN0YXJ0ICYmXG4gICAgICBlbmREYXRlID09PSBsYXN0RXZlbnQuZW5kXG4gICAgKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIHRvcCxcbiAgICAgIGhlaWdodCxcbiAgICAgIGV2ZW50OiB7IC4uLmV2ZW50LCBzdGFydDogc3RhcnREYXRlLCBlbmQ6IGVuZERhdGUgfSxcbiAgICB9KVxuICB9XG5cbiAgaGFuZGxlTW92ZSA9IChwb2ludCwgYm91bmRzKSA9PiB7XG4gICAgaWYgKCFwb2ludEluQ29sdW1uKGJvdW5kcywgcG9pbnQpKSByZXR1cm4gdGhpcy5yZXNldCgpXG4gICAgY29uc3QgeyBldmVudCB9ID0gdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5kcmFnQW5kRHJvcEFjdGlvblxuICAgIGNvbnN0IHsgYWNjZXNzb3JzLCBzbG90TWV0cmljcyB9ID0gdGhpcy5wcm9wc1xuXG4gICAgY29uc3QgbmV3U2xvdCA9IHNsb3RNZXRyaWNzLmNsb3Nlc3RTbG90RnJvbVBvaW50KFxuICAgICAgeyB5OiBwb2ludC55IC0gdGhpcy5ldmVudE9mZnNldFRvcCwgeDogcG9pbnQueCB9LFxuICAgICAgYm91bmRzXG4gICAgKVxuXG4gICAgY29uc3QgeyBkdXJhdGlvbiB9ID0gZXZlbnRUaW1lcyhldmVudCwgYWNjZXNzb3JzLCB0aGlzLnByb3BzLmxvY2FsaXplcilcbiAgICBsZXQgbmV3RW5kID0gdGhpcy5wcm9wcy5sb2NhbGl6ZXIuYWRkKG5ld1Nsb3QsIGR1cmF0aW9uLCAnbWlsbGlzZWNvbmRzJylcbiAgICB0aGlzLnVwZGF0ZShldmVudCwgc2xvdE1ldHJpY3MuZ2V0UmFuZ2UobmV3U2xvdCwgbmV3RW5kLCBmYWxzZSwgdHJ1ZSkpXG4gIH1cblxuICBoYW5kbGVSZXNpemUocG9pbnQsIGJvdW5kcykge1xuICAgIGNvbnN0IHsgYWNjZXNzb3JzLCBzbG90TWV0cmljcywgbG9jYWxpemVyIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgeyBldmVudCwgZGlyZWN0aW9uIH0gPSB0aGlzLmNvbnRleHQuZHJhZ2dhYmxlLmRyYWdBbmREcm9wQWN0aW9uXG4gICAgY29uc3QgbmV3VGltZSA9IHNsb3RNZXRyaWNzLmNsb3Nlc3RTbG90RnJvbVBvaW50KHBvaW50LCBib3VuZHMpXG5cbiAgICBsZXQgeyBzdGFydCwgZW5kIH0gPSBldmVudFRpbWVzKGV2ZW50LCBhY2Nlc3NvcnMsIGxvY2FsaXplcilcbiAgICBsZXQgbmV3UmFuZ2VcbiAgICBpZiAoZGlyZWN0aW9uID09PSAnVVAnKSB7XG4gICAgICBjb25zdCBuZXdTdGFydCA9IGxvY2FsaXplci5taW4oXG4gICAgICAgIG5ld1RpbWUsXG4gICAgICAgIHNsb3RNZXRyaWNzLmNsb3Nlc3RTbG90RnJvbURhdGUoZW5kLCAtMSlcbiAgICAgIClcbiAgICAgIC8vIEdldCB0aGUgbmV3IHJhbmdlIGJhc2VkIG9uIHRoZSBuZXcgc3RhcnRcbiAgICAgIC8vIGJ1dCBkb24ndCBvdmVyd3JpdGUgdGhlIGVuZCBkYXRlIGFzIGl0IGNvdWxkIGJlIG91dHNpZGUgdGhpcyBkYXkgYm91bmRhcnkuXG4gICAgICBuZXdSYW5nZSA9IHNsb3RNZXRyaWNzLmdldFJhbmdlKG5ld1N0YXJ0LCBlbmQpXG4gICAgICBuZXdSYW5nZSA9IHtcbiAgICAgICAgLi4ubmV3UmFuZ2UsXG4gICAgICAgIGVuZERhdGU6IGVuZCxcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ0RPV04nKSB7XG4gICAgICAvLyBHZXQgdGhlIG5ldyByYW5nZSBiYXNlZCBvbiB0aGUgbmV3IGVuZFxuICAgICAgLy8gYnV0IGRvbid0IG92ZXJ3cml0ZSB0aGUgc3RhcnQgZGF0ZSBhcyBpdCBjb3VsZCBiZSBvdXRzaWRlIHRoaXMgZGF5IGJvdW5kYXJ5LlxuICAgICAgY29uc3QgbmV3RW5kID0gbG9jYWxpemVyLm1heChcbiAgICAgICAgbmV3VGltZSxcbiAgICAgICAgc2xvdE1ldHJpY3MuY2xvc2VzdFNsb3RGcm9tRGF0ZShzdGFydClcbiAgICAgIClcbiAgICAgIG5ld1JhbmdlID0gc2xvdE1ldHJpY3MuZ2V0UmFuZ2Uoc3RhcnQsIG5ld0VuZClcbiAgICAgIG5ld1JhbmdlID0ge1xuICAgICAgICAuLi5uZXdSYW5nZSxcbiAgICAgICAgc3RhcnREYXRlOiBzdGFydCxcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZShldmVudCwgbmV3UmFuZ2UpXG4gIH1cblxuICBoYW5kbGVEcm9wRnJvbU91dHNpZGUgPSAocG9pbnQsIGJvdW5kYXJ5Qm94KSA9PiB7XG4gICAgY29uc3QgeyBzbG90TWV0cmljcywgcmVzb3VyY2UgfSA9IHRoaXMucHJvcHNcblxuICAgIGxldCBzdGFydCA9IHNsb3RNZXRyaWNzLmNsb3Nlc3RTbG90RnJvbVBvaW50KFxuICAgICAgeyB5OiBwb2ludC55LCB4OiBwb2ludC54IH0sXG4gICAgICBib3VuZGFyeUJveFxuICAgIClcblxuICAgIHRoaXMuY29udGV4dC5kcmFnZ2FibGUub25Ecm9wRnJvbU91dHNpZGUoe1xuICAgICAgc3RhcnQsXG4gICAgICBlbmQ6IHNsb3RNZXRyaWNzLm5leHRTbG90KHN0YXJ0KSxcbiAgICAgIGFsbERheTogZmFsc2UsXG4gICAgICByZXNvdXJjZSxcbiAgICB9KVxuICB9XG5cbiAgdXBkYXRlUGFyZW50U2Nyb2xsID0gKHBhcmVudCwgbm9kZSkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZHJhZ2dlZEVsID0gcXNhKG5vZGUsICcucmJjLWFkZG9ucy1kbmQtZHJhZy1wcmV2aWV3JylbMF1cbiAgICAgIGlmIChkcmFnZ2VkRWwpIHtcbiAgICAgICAgaWYgKGRyYWdnZWRFbC5vZmZzZXRUb3AgPCBwYXJlbnQuc2Nyb2xsVG9wKSB7XG4gICAgICAgICAgc2Nyb2xsVG9wKHBhcmVudCwgTWF0aC5tYXgoZHJhZ2dlZEVsLm9mZnNldFRvcCwgMCkpXG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgZHJhZ2dlZEVsLm9mZnNldFRvcCArIGRyYWdnZWRFbC5vZmZzZXRIZWlnaHQgPlxuICAgICAgICAgIHBhcmVudC5zY3JvbGxUb3AgKyBwYXJlbnQuY2xpZW50SGVpZ2h0XG4gICAgICAgICkge1xuICAgICAgICAgIHNjcm9sbFRvcChcbiAgICAgICAgICAgIHBhcmVudCxcbiAgICAgICAgICAgIE1hdGgubWluKFxuICAgICAgICAgICAgICBkcmFnZ2VkRWwub2Zmc2V0VG9wIC1cbiAgICAgICAgICAgICAgICBwYXJlbnQub2Zmc2V0SGVpZ2h0ICtcbiAgICAgICAgICAgICAgICBkcmFnZ2VkRWwub2Zmc2V0SGVpZ2h0LFxuICAgICAgICAgICAgICBwYXJlbnQuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIF9zZWxlY3RhYmxlID0gKCkgPT4ge1xuICAgIGxldCB3cmFwcGVyID0gdGhpcy5yZWYuY3VycmVudFxuICAgIGxldCBub2RlID0gd3JhcHBlci5jaGlsZHJlblswXVxuICAgIGxldCBpc0JlaW5nRHJhZ2dlZCA9IGZhbHNlXG4gICAgbGV0IHNlbGVjdG9yID0gKHRoaXMuX3NlbGVjdG9yID0gbmV3IFNlbGVjdGlvbigoKSA9PlxuICAgICAgd3JhcHBlci5jbG9zZXN0KCcucmJjLXRpbWUtdmlldycpXG4gICAgKSlcbiAgICBsZXQgcGFyZW50ID0gc2Nyb2xsUGFyZW50KHdyYXBwZXIpXG5cbiAgICBzZWxlY3Rvci5vbignYmVmb3JlU2VsZWN0JywgKHBvaW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRyYWdBbmREcm9wQWN0aW9uIH0gPSB0aGlzLmNvbnRleHQuZHJhZ2dhYmxlXG5cbiAgICAgIGlmICghZHJhZ0FuZERyb3BBY3Rpb24uYWN0aW9uKSByZXR1cm4gZmFsc2VcbiAgICAgIGlmIChkcmFnQW5kRHJvcEFjdGlvbi5hY3Rpb24gPT09ICdyZXNpemUnKSB7XG4gICAgICAgIHJldHVybiBwb2ludEluQ29sdW1uKGdldEJvdW5kc0Zvck5vZGUobm9kZSksIHBvaW50KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBldmVudE5vZGUgPSBnZXRFdmVudE5vZGVGcm9tUG9pbnQobm9kZSwgcG9pbnQpXG4gICAgICBpZiAoIWV2ZW50Tm9kZSkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIC8vIGV2ZW50T2Zmc2V0VG9wIGlzIGRpc3RhbmNlIGZyb20gdGhlIHRvcCBvZiB0aGUgZXZlbnQgdG8gdGhlIGluaXRpYWxcbiAgICAgIC8vIG1vdXNlRG93biBwb3NpdGlvbi4gV2UgbmVlZCB0aGlzIGxhdGVyIHRvIGNvbXB1dGUgdGhlIG5ldyB0b3Agb2YgdGhlXG4gICAgICAvLyBldmVudCBkdXJpbmcgbW92ZSBvcGVyYXRpb25zLCBzaW5jZSB0aGUgZmluYWwgbG9jYXRpb24gaXMgcmVhbGx5IGFcbiAgICAgIC8vIGRlbHRhIGZyb20gdGhpcyBwb2ludC4gbm90ZTogaWYgd2Ugd2FudCB0byBEUlkgdGhpcyB3aXRoIFdlZWtXcmFwcGVyLFxuICAgICAgLy8gcHJvYmFibHkgYmV0dGVyIGp1c3QgdG8gY2FwdHVyZSB0aGUgbW91c2VEb3duIHBvaW50IGhlcmUgYW5kIGRvIHRoZVxuICAgICAgLy8gcGxhY2VtZW50IGNvbXB1dGF0aW9uIGluIGhhbmRsZU1vdmUoKS4uLlxuICAgICAgdGhpcy5ldmVudE9mZnNldFRvcCA9IHBvaW50LnkgLSBnZXRCb3VuZHNGb3JOb2RlKGV2ZW50Tm9kZSkudG9wXG4gICAgfSlcblxuICAgIHNlbGVjdG9yLm9uKCdzZWxlY3RpbmcnLCAoYm94KSA9PiB7XG4gICAgICBjb25zdCBib3VuZHMgPSBnZXRCb3VuZHNGb3JOb2RlKG5vZGUpXG4gICAgICBjb25zdCB7IGRyYWdBbmREcm9wQWN0aW9uIH0gPSB0aGlzLmNvbnRleHQuZHJhZ2dhYmxlXG5cbiAgICAgIGlmIChkcmFnQW5kRHJvcEFjdGlvbi5hY3Rpb24gPT09ICdtb3ZlJykge1xuICAgICAgICB0aGlzLnVwZGF0ZVBhcmVudFNjcm9sbChwYXJlbnQsIG5vZGUpXG4gICAgICAgIHRoaXMuaGFuZGxlTW92ZShib3gsIGJvdW5kcylcbiAgICAgIH1cbiAgICAgIGlmIChkcmFnQW5kRHJvcEFjdGlvbi5hY3Rpb24gPT09ICdyZXNpemUnKSB7XG4gICAgICAgIHRoaXMudXBkYXRlUGFyZW50U2Nyb2xsKHBhcmVudCwgbm9kZSlcbiAgICAgICAgdGhpcy5oYW5kbGVSZXNpemUoYm94LCBib3VuZHMpXG4gICAgICB9XG4gICAgfSlcblxuICAgIHNlbGVjdG9yLm9uKCdkcm9wRnJvbU91dHNpZGUnLCAocG9pbnQpID0+IHtcbiAgICAgIGlmICghdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5vbkRyb3BGcm9tT3V0c2lkZSkgcmV0dXJuXG4gICAgICBjb25zdCBib3VuZHMgPSBnZXRCb3VuZHNGb3JOb2RlKG5vZGUpXG4gICAgICBpZiAoIXBvaW50SW5Db2x1bW4oYm91bmRzLCBwb2ludCkpIHJldHVyblxuICAgICAgdGhpcy5oYW5kbGVEcm9wRnJvbU91dHNpZGUocG9pbnQsIGJvdW5kcylcbiAgICB9KVxuXG4gICAgc2VsZWN0b3Iub24oJ2RyYWdPdmVyJywgKHBvaW50KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuY29udGV4dC5kcmFnZ2FibGUuZHJhZ0Zyb21PdXRzaWRlSXRlbSkgcmV0dXJuXG4gICAgICBjb25zdCBib3VuZHMgPSBnZXRCb3VuZHNGb3JOb2RlKG5vZGUpXG4gICAgICB0aGlzLmhhbmRsZURyb3BGcm9tT3V0c2lkZShwb2ludCwgYm91bmRzKVxuICAgIH0pXG5cbiAgICBzZWxlY3Rvci5vbignc2VsZWN0U3RhcnQnLCAoKSA9PiB7XG4gICAgICBpc0JlaW5nRHJhZ2dlZCA9IHRydWVcbiAgICAgIHRoaXMuY29udGV4dC5kcmFnZ2FibGUub25TdGFydCgpXG4gICAgfSlcblxuICAgIHNlbGVjdG9yLm9uKCdzZWxlY3QnLCAocG9pbnQpID0+IHtcbiAgICAgIGNvbnN0IGJvdW5kcyA9IGdldEJvdW5kc0Zvck5vZGUobm9kZSlcbiAgICAgIGlzQmVpbmdEcmFnZ2VkID0gZmFsc2VcbiAgICAgIGNvbnN0IHsgZHJhZ0FuZERyb3BBY3Rpb24gfSA9IHRoaXMuY29udGV4dC5kcmFnZ2FibGVcbiAgICAgIGlmIChkcmFnQW5kRHJvcEFjdGlvbi5hY3Rpb24gPT09ICdyZXNpemUnKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlSW50ZXJhY3Rpb25FbmQoKVxuICAgICAgfSBlbHNlIGlmICghdGhpcy5zdGF0ZS5ldmVudCB8fCAhcG9pbnRJbkNvbHVtbihib3VuZHMsIHBvaW50KSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGFuZGxlSW50ZXJhY3Rpb25FbmQoKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBzZWxlY3Rvci5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICBpZiAoaXNCZWluZ0RyYWdnZWQpIHRoaXMucmVzZXQoKVxuICAgICAgdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5vbkVuZChudWxsKVxuICAgIH0pXG4gICAgc2VsZWN0b3Iub24oJ3Jlc2V0JywgKCkgPT4ge1xuICAgICAgdGhpcy5yZXNldCgpXG4gICAgICB0aGlzLmNvbnRleHQuZHJhZ2dhYmxlLm9uRW5kKG51bGwpXG4gICAgfSlcbiAgfVxuXG4gIGhhbmRsZUludGVyYWN0aW9uRW5kID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgcmVzb3VyY2UgfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7IGV2ZW50IH0gPSB0aGlzLnN0YXRlXG4gICAgdGhpcy5yZXNldCgpXG5cbiAgICB0aGlzLmNvbnRleHQuZHJhZ2dhYmxlLm9uRW5kKHtcbiAgICAgIHN0YXJ0OiBldmVudC5zdGFydCxcbiAgICAgIGVuZDogZXZlbnQuZW5kLFxuICAgICAgcmVzb3VyY2VJZDogcmVzb3VyY2UsXG4gICAgfSlcbiAgfVxuXG4gIF90ZWFyZG93blNlbGVjdGFibGUgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLl9zZWxlY3RvcikgcmV0dXJuXG4gICAgdGhpcy5fc2VsZWN0b3IudGVhcmRvd24oKVxuICAgIHRoaXMuX3NlbGVjdG9yID0gbnVsbFxuICB9XG5cbiAgcmVuZGVyQ29udGVudCgpIHtcbiAgICBjb25zdCB7IGNoaWxkcmVuLCBhY2Nlc3NvcnMsIGNvbXBvbmVudHMsIGdldHRlcnMsIHNsb3RNZXRyaWNzLCBsb2NhbGl6ZXIgfSA9XG4gICAgICB0aGlzLnByb3BzXG5cbiAgICBsZXQgeyBldmVudCwgdG9wLCBoZWlnaHQgfSA9IHRoaXMuc3RhdGVcbiAgICBpZiAoIWV2ZW50KSByZXR1cm4gY2hpbGRyZW5cblxuICAgIGNvbnN0IGV2ZW50cyA9IGNoaWxkcmVuLnByb3BzLmNoaWxkcmVuXG4gICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSBldmVudFxuXG4gICAgbGV0IGxhYmVsXG4gICAgbGV0IGZvcm1hdCA9ICdldmVudFRpbWVSYW5nZUZvcm1hdCdcblxuICAgIGNvbnN0IHN0YXJ0c0JlZm9yZURheSA9IHNsb3RNZXRyaWNzLnN0YXJ0c0JlZm9yZURheShzdGFydClcbiAgICBjb25zdCBzdGFydHNBZnRlckRheSA9IHNsb3RNZXRyaWNzLnN0YXJ0c0FmdGVyRGF5KGVuZClcblxuICAgIGlmIChzdGFydHNCZWZvcmVEYXkpIGZvcm1hdCA9ICdldmVudFRpbWVSYW5nZUVuZEZvcm1hdCdcbiAgICBlbHNlIGlmIChzdGFydHNBZnRlckRheSkgZm9ybWF0ID0gJ2V2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQnXG5cbiAgICBpZiAoc3RhcnRzQmVmb3JlRGF5ICYmIHN0YXJ0c0FmdGVyRGF5KSBsYWJlbCA9IGxvY2FsaXplci5tZXNzYWdlcy5hbGxEYXlcbiAgICBlbHNlIGxhYmVsID0gbG9jYWxpemVyLmZvcm1hdCh7IHN0YXJ0LCBlbmQgfSwgZm9ybWF0KVxuXG4gICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgICAgY2hpbGRyZW46IChcbiAgICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICAgIHtldmVudHN9XG5cbiAgICAgICAgICB7ZXZlbnQgJiYgKFxuICAgICAgICAgICAgPFRpbWVHcmlkRXZlbnRcbiAgICAgICAgICAgICAgZXZlbnQ9e2V2ZW50fVxuICAgICAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJiYy1hZGRvbnMtZG5kLWRyYWctcHJldmlld1wiXG4gICAgICAgICAgICAgIHN0eWxlPXt7IHRvcCwgaGVpZ2h0LCB3aWR0aDogMTAwIH19XG4gICAgICAgICAgICAgIGdldHRlcnM9e2dldHRlcnN9XG4gICAgICAgICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XG4gICAgICAgICAgICAgIGFjY2Vzc29ycz17eyAuLi5hY2Nlc3NvcnMsIC4uLmRyYWdBY2Nlc3NvcnMgfX1cbiAgICAgICAgICAgICAgY29udGludWVzUHJpb3I9e3N0YXJ0c0JlZm9yZURheX1cbiAgICAgICAgICAgICAgY29udGludWVzQWZ0ZXI9e3N0YXJ0c0FmdGVyRGF5fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgKSxcbiAgICB9KVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiA8ZGl2IHJlZj17dGhpcy5yZWZ9Pnt0aGlzLnJlbmRlckNvbnRlbnQoKX08L2Rpdj5cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBFdmVudENvbnRhaW5lcldyYXBwZXJcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBFdmVudFJvdyBmcm9tICcuLi8uLi9FdmVudFJvdydcbmltcG9ydCBTZWxlY3Rpb24sIHsgZ2V0Qm91bmRzRm9yTm9kZSB9IGZyb20gJy4uLy4uL1NlbGVjdGlvbidcbmltcG9ydCB7IGV2ZW50U2VnbWVudHMgfSBmcm9tICcuLi8uLi91dGlscy9ldmVudExldmVscydcbmltcG9ydCB7IGdldFNsb3RBdFgsIHBvaW50SW5Cb3ggfSBmcm9tICcuLi8uLi91dGlscy9zZWxlY3Rpb24nXG5pbXBvcnQgeyBkcmFnQWNjZXNzb3JzLCBldmVudFRpbWVzIH0gZnJvbSAnLi9jb21tb24nXG5pbXBvcnQgeyBEbkRDb250ZXh0IH0gZnJvbSAnLi9EbkRDb250ZXh0J1xuXG5jbGFzcyBXZWVrV3JhcHBlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgaXNBbGxEYXk6IFByb3BUeXBlcy5ib29sLFxuICAgIHNsb3RNZXRyaWNzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgYWNjZXNzb3JzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgZ2V0dGVyczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGNvbXBvbmVudHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICByZXNvdXJjZUlkOiBQcm9wVHlwZXMuYW55LFxuICAgIHJ0bDogUHJvcFR5cGVzLmJvb2wsXG4gICAgbG9jYWxpemVyOiBQcm9wVHlwZXMuYW55LFxuICB9XG5cbiAgc3RhdGljIGNvbnRleHRUeXBlID0gRG5EQ29udGV4dFxuXG4gIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHtcbiAgICBzdXBlciguLi5hcmdzKVxuICAgIHRoaXMuc3RhdGUgPSB7fVxuICAgIHRoaXMucmVmID0gUmVhY3QuY3JlYXRlUmVmKClcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMuX3NlbGVjdGFibGUoKVxuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5fdGVhcmRvd25TZWxlY3RhYmxlKClcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIGlmICh0aGlzLnN0YXRlLnNlZ21lbnQpIHRoaXMuc2V0U3RhdGUoeyBzZWdtZW50OiBudWxsIH0pXG4gIH1cblxuICB1cGRhdGUoZXZlbnQsIHN0YXJ0LCBlbmQpIHtcbiAgICBjb25zdCBzZWdtZW50ID0gZXZlbnRTZWdtZW50cyhcbiAgICAgIHsgLi4uZXZlbnQsIGVuZCwgc3RhcnQsIF9faXNQcmV2aWV3OiB0cnVlIH0sXG4gICAgICB0aGlzLnByb3BzLnNsb3RNZXRyaWNzLnJhbmdlLFxuICAgICAgZHJhZ0FjY2Vzc29ycyxcbiAgICAgIHRoaXMucHJvcHMubG9jYWxpemVyXG4gICAgKVxuXG4gICAgY29uc3QgeyBzZWdtZW50OiBsYXN0U2VnbWVudCB9ID0gdGhpcy5zdGF0ZVxuICAgIGlmIChcbiAgICAgIGxhc3RTZWdtZW50ICYmXG4gICAgICBzZWdtZW50LnNwYW4gPT09IGxhc3RTZWdtZW50LnNwYW4gJiZcbiAgICAgIHNlZ21lbnQubGVmdCA9PT0gbGFzdFNlZ21lbnQubGVmdCAmJlxuICAgICAgc2VnbWVudC5yaWdodCA9PT0gbGFzdFNlZ21lbnQucmlnaHRcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLnNldFN0YXRlKHsgc2VnbWVudCB9KVxuICB9XG5cbiAgaGFuZGxlTW92ZSA9IChwb2ludCwgYm91bmRzLCBkcmFnZ2VkRXZlbnQpID0+IHtcbiAgICBpZiAoIXBvaW50SW5Cb3goYm91bmRzLCBwb2ludCkpIHJldHVybiB0aGlzLnJlc2V0KClcbiAgICBjb25zdCBldmVudCA9IHRoaXMuY29udGV4dC5kcmFnZ2FibGUuZHJhZ0FuZERyb3BBY3Rpb24uZXZlbnQgfHwgZHJhZ2dlZEV2ZW50XG4gICAgY29uc3QgeyBhY2Nlc3NvcnMsIHNsb3RNZXRyaWNzLCBydGwsIGxvY2FsaXplciB9ID0gdGhpcy5wcm9wc1xuXG4gICAgY29uc3Qgc2xvdCA9IGdldFNsb3RBdFgoYm91bmRzLCBwb2ludC54LCBydGwsIHNsb3RNZXRyaWNzLnNsb3RzKVxuXG4gICAgY29uc3QgZGF0ZSA9IHNsb3RNZXRyaWNzLmdldERhdGVGb3JTbG90KHNsb3QpXG5cbiAgICAvLyBBZGp1c3QgdGhlIGRhdGVzLCBidXQgbWFpbnRhaW4gdGhlIHRpbWVzIHdoZW4gbW92aW5nXG4gICAgbGV0IHsgc3RhcnQsIGR1cmF0aW9uIH0gPSBldmVudFRpbWVzKGV2ZW50LCBhY2Nlc3NvcnMsIGxvY2FsaXplcilcbiAgICBzdGFydCA9IGxvY2FsaXplci5tZXJnZShkYXRlLCBzdGFydClcbiAgICBjb25zdCBlbmQgPSBsb2NhbGl6ZXIuYWRkKHN0YXJ0LCBkdXJhdGlvbiwgJ21pbGxpc2Vjb25kcycpXG4gICAgLy8gTEFURVI6IHdoZW4gZHJhZ2dpbmcgYSBtdWx0aS1yb3cgZXZlbnQsIG9ubHkgdGhlIGZpcnN0IHJvdyBpcyBhbmltYXRpbmdcbiAgICB0aGlzLnVwZGF0ZShldmVudCwgc3RhcnQsIGVuZClcbiAgfVxuXG4gIGhhbmRsZURyb3BGcm9tT3V0c2lkZSA9IChwb2ludCwgYm91bmRzKSA9PiB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQuZHJhZ2dhYmxlLm9uRHJvcEZyb21PdXRzaWRlKSByZXR1cm5cbiAgICBjb25zdCB7IHNsb3RNZXRyaWNzLCBydGwsIGxvY2FsaXplciB9ID0gdGhpcy5wcm9wc1xuXG4gICAgY29uc3Qgc2xvdCA9IGdldFNsb3RBdFgoYm91bmRzLCBwb2ludC54LCBydGwsIHNsb3RNZXRyaWNzLnNsb3RzKVxuICAgIGNvbnN0IHN0YXJ0ID0gc2xvdE1ldHJpY3MuZ2V0RGF0ZUZvclNsb3Qoc2xvdClcblxuICAgIHRoaXMuY29udGV4dC5kcmFnZ2FibGUub25Ecm9wRnJvbU91dHNpZGUoe1xuICAgICAgc3RhcnQsXG4gICAgICBlbmQ6IGxvY2FsaXplci5hZGQoc3RhcnQsIDEsICdkYXknKSxcbiAgICAgIGFsbERheTogZmFsc2UsXG4gICAgfSlcbiAgfVxuXG4gIGhhbmRsZURyYWdPdmVyRnJvbU91dHNpZGUgPSAocG9pbnQsIG5vZGUpID0+IHtcbiAgICBpZiAoIXRoaXMuY29udGV4dC5kcmFnZ2FibGUuZHJhZ0Zyb21PdXRzaWRlSXRlbSkgcmV0dXJuXG4gICAgdGhpcy5oYW5kbGVNb3ZlKHBvaW50LCBub2RlLCB0aGlzLmNvbnRleHQuZHJhZ2dhYmxlLmRyYWdGcm9tT3V0c2lkZUl0ZW0oKSlcbiAgfVxuXG4gIGhhbmRsZVJlc2l6ZShwb2ludCwgYm91bmRzKSB7XG4gICAgY29uc3QgeyBldmVudCwgZGlyZWN0aW9uIH0gPSB0aGlzLmNvbnRleHQuZHJhZ2dhYmxlLmRyYWdBbmREcm9wQWN0aW9uXG4gICAgY29uc3QgeyBhY2Nlc3NvcnMsIHNsb3RNZXRyaWNzLCBydGwsIGxvY2FsaXplciB9ID0gdGhpcy5wcm9wc1xuXG4gICAgbGV0IHsgc3RhcnQsIGVuZCB9ID0gZXZlbnRUaW1lcyhldmVudCwgYWNjZXNzb3JzLCBsb2NhbGl6ZXIpXG5cbiAgICBjb25zdCBzbG90ID0gZ2V0U2xvdEF0WChib3VuZHMsIHBvaW50LngsIHJ0bCwgc2xvdE1ldHJpY3Muc2xvdHMpXG4gICAgY29uc3QgZGF0ZSA9IHNsb3RNZXRyaWNzLmdldERhdGVGb3JTbG90KHNsb3QpXG4gICAgY29uc3QgY3Vyc29ySW5Sb3cgPSBwb2ludEluQm94KGJvdW5kcywgcG9pbnQpXG5cbiAgICBpZiAoZGlyZWN0aW9uID09PSAnUklHSFQnKSB7XG4gICAgICBpZiAoY3Vyc29ySW5Sb3cpIHtcbiAgICAgICAgaWYgKHNsb3RNZXRyaWNzLmxhc3QgPCBzdGFydCkgcmV0dXJuIHRoaXMucmVzZXQoKVxuICAgICAgICBpZiAobG9jYWxpemVyLmVxKGxvY2FsaXplci5zdGFydE9mKGVuZCwgJ2RheScpLCBlbmQpKVxuICAgICAgICAgIGVuZCA9IGxvY2FsaXplci5hZGQoZGF0ZSwgMSwgJ2RheScpXG4gICAgICAgIGVsc2UgZW5kID0gZGF0ZVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgbG9jYWxpemVyLmluUmFuZ2Uoc3RhcnQsIHNsb3RNZXRyaWNzLmZpcnN0LCBzbG90TWV0cmljcy5sYXN0KSB8fFxuICAgICAgICAoYm91bmRzLmJvdHRvbSA8IHBvaW50LnkgJiYgK3Nsb3RNZXRyaWNzLmZpcnN0ID4gK3N0YXJ0KVxuICAgICAgKSB7XG4gICAgICAgIGVuZCA9IGxvY2FsaXplci5hZGQoc2xvdE1ldHJpY3MubGFzdCwgMSwgJ21pbGxpc2Vjb25kcycpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc2VnbWVudDogbnVsbCB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IG9yaWdpbmFsRW5kID0gYWNjZXNzb3JzLmVuZChldmVudClcbiAgICAgIGVuZCA9IGxvY2FsaXplci5tZXJnZShlbmQsIG9yaWdpbmFsRW5kKVxuICAgICAgaWYgKGxvY2FsaXplci5sdChlbmQsIHN0YXJ0KSkge1xuICAgICAgICBlbmQgPSBvcmlnaW5hbEVuZFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnTEVGVCcpIHtcbiAgICAgIGlmIChjdXJzb3JJblJvdykge1xuICAgICAgICBpZiAoc2xvdE1ldHJpY3MuZmlyc3QgPiBlbmQpIHJldHVybiB0aGlzLnJlc2V0KClcbiAgICAgICAgc3RhcnQgPSBkYXRlXG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBsb2NhbGl6ZXIuaW5SYW5nZShlbmQsIHNsb3RNZXRyaWNzLmZpcnN0LCBzbG90TWV0cmljcy5sYXN0KSB8fFxuICAgICAgICAoYm91bmRzLnRvcCA+IHBvaW50LnkgJiYgbG9jYWxpemVyLmx0KHNsb3RNZXRyaWNzLmxhc3QsIGVuZCkpXG4gICAgICApIHtcbiAgICAgICAgc3RhcnQgPSBsb2NhbGl6ZXIuYWRkKHNsb3RNZXRyaWNzLmZpcnN0LCAtMSwgJ21pbGxpc2Vjb25kcycpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlc2V0KClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBvcmlnaW5hbFN0YXJ0ID0gYWNjZXNzb3JzLnN0YXJ0KGV2ZW50KVxuICAgICAgc3RhcnQgPSBsb2NhbGl6ZXIubWVyZ2Uoc3RhcnQsIG9yaWdpbmFsU3RhcnQpXG4gICAgICBpZiAobG9jYWxpemVyLmd0KHN0YXJ0LCBlbmQpKSB7XG4gICAgICAgIHN0YXJ0ID0gb3JpZ2luYWxTdGFydFxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudXBkYXRlKGV2ZW50LCBzdGFydCwgZW5kKVxuICB9XG5cbiAgX3NlbGVjdGFibGUgPSAoKSA9PiB7XG4gICAgbGV0IG5vZGUgPSB0aGlzLnJlZi5jdXJyZW50LmNsb3Nlc3QoJy5yYmMtbW9udGgtcm93LCAucmJjLWFsbGRheS1jZWxsJylcbiAgICBsZXQgY29udGFpbmVyID0gbm9kZS5jbG9zZXN0KCcucmJjLW1vbnRoLXZpZXcsIC5yYmMtdGltZS12aWV3JylcbiAgICBsZXQgaXNNb250aFJvdyA9IG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdyYmMtbW9udGgtcm93JylcblxuICAgIC8vIFZhbGlkIGNvbnRhaW5lciBjaGVjayBvbmx5IG5lY2Vzc2FyeSBpbiBUaW1lR3JpZCB2aWV3c1xuICAgIGxldCBzZWxlY3RvciA9ICh0aGlzLl9zZWxlY3RvciA9IG5ldyBTZWxlY3Rpb24oKCkgPT4gY29udGFpbmVyLCB7XG4gICAgICB2YWxpZENvbnRhaW5lcnM6IFtcbiAgICAgICAgLi4uKCFpc01vbnRoUm93ID8gWycucmJjLWRheS1zbG90JywgJy5yYmMtYWxsZGF5LWNlbGwnXSA6IFtdKSxcbiAgICAgIF0sXG4gICAgfSkpXG5cbiAgICBzZWxlY3Rvci5vbignYmVmb3JlU2VsZWN0JywgKHBvaW50KSA9PiB7XG4gICAgICBjb25zdCB7IGlzQWxsRGF5IH0gPSB0aGlzLnByb3BzXG4gICAgICBjb25zdCB7IGFjdGlvbiB9ID0gdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5kcmFnQW5kRHJvcEFjdGlvblxuICAgICAgY29uc3QgYm91bmRzID0gZ2V0Qm91bmRzRm9yTm9kZShub2RlKVxuICAgICAgY29uc3QgaXNJbkJveCA9IHBvaW50SW5Cb3goYm91bmRzLCBwb2ludClcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGFjdGlvbiA9PT0gJ21vdmUnIHx8IChhY3Rpb24gPT09ICdyZXNpemUnICYmICghaXNBbGxEYXkgfHwgaXNJbkJveCkpXG4gICAgICApXG4gICAgfSlcblxuICAgIHNlbGVjdG9yLm9uKCdzZWxlY3RpbmcnLCAoYm94KSA9PiB7XG4gICAgICBjb25zdCBib3VuZHMgPSBnZXRCb3VuZHNGb3JOb2RlKG5vZGUpXG4gICAgICBjb25zdCB7IGRyYWdBbmREcm9wQWN0aW9uIH0gPSB0aGlzLmNvbnRleHQuZHJhZ2dhYmxlXG4gICAgICBpZiAoZHJhZ0FuZERyb3BBY3Rpb24uYWN0aW9uID09PSAnbW92ZScpIHRoaXMuaGFuZGxlTW92ZShib3gsIGJvdW5kcylcbiAgICAgIGlmIChkcmFnQW5kRHJvcEFjdGlvbi5hY3Rpb24gPT09ICdyZXNpemUnKSB0aGlzLmhhbmRsZVJlc2l6ZShib3gsIGJvdW5kcylcbiAgICB9KVxuXG4gICAgc2VsZWN0b3Iub24oJ3NlbGVjdFN0YXJ0JywgKCkgPT4gdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5vblN0YXJ0KCkpXG5cbiAgICBzZWxlY3Rvci5vbignc2VsZWN0JywgKHBvaW50KSA9PiB7XG4gICAgICBjb25zdCBib3VuZHMgPSBnZXRCb3VuZHNGb3JOb2RlKG5vZGUpXG4gICAgICBpZiAoIXRoaXMuc3RhdGUuc2VnbWVudCkgcmV0dXJuXG4gICAgICBpZiAoIXBvaW50SW5Cb3goYm91bmRzLCBwb2ludCkpIHtcbiAgICAgICAgdGhpcy5yZXNldCgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhhbmRsZUludGVyYWN0aW9uRW5kKClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgc2VsZWN0b3Iub24oJ2Ryb3BGcm9tT3V0c2lkZScsIChwb2ludCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmNvbnRleHQuZHJhZ2dhYmxlLm9uRHJvcEZyb21PdXRzaWRlKSByZXR1cm5cbiAgICAgIGNvbnN0IGJvdW5kcyA9IGdldEJvdW5kc0Zvck5vZGUobm9kZSlcbiAgICAgIGlmICghcG9pbnRJbkJveChib3VuZHMsIHBvaW50KSkgcmV0dXJuXG4gICAgICB0aGlzLmhhbmRsZURyb3BGcm9tT3V0c2lkZShwb2ludCwgYm91bmRzKVxuICAgIH0pXG5cbiAgICBzZWxlY3Rvci5vbignZHJhZ092ZXJGcm9tT3V0c2lkZScsIChwb2ludCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmNvbnRleHQuZHJhZ2dhYmxlLmRyYWdGcm9tT3V0c2lkZUl0ZW0pIHJldHVyblxuICAgICAgY29uc3QgYm91bmRzID0gZ2V0Qm91bmRzRm9yTm9kZShub2RlKVxuXG4gICAgICB0aGlzLmhhbmRsZURyYWdPdmVyRnJvbU91dHNpZGUocG9pbnQsIGJvdW5kcylcbiAgICB9KVxuXG4gICAgc2VsZWN0b3Iub24oJ2NsaWNrJywgKCkgPT4gdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5vbkVuZChudWxsKSlcblxuICAgIHNlbGVjdG9yLm9uKCdyZXNldCcsICgpID0+IHtcbiAgICAgIHRoaXMucmVzZXQoKVxuICAgICAgdGhpcy5jb250ZXh0LmRyYWdnYWJsZS5vbkVuZChudWxsKVxuICAgIH0pXG4gIH1cblxuICBoYW5kbGVJbnRlcmFjdGlvbkVuZCA9ICgpID0+IHtcbiAgICBjb25zdCB7IHJlc291cmNlSWQsIGlzQWxsRGF5IH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgeyBldmVudCB9ID0gdGhpcy5zdGF0ZS5zZWdtZW50XG5cbiAgICB0aGlzLnJlc2V0KClcblxuICAgIHRoaXMuY29udGV4dC5kcmFnZ2FibGUub25FbmQoe1xuICAgICAgc3RhcnQ6IGV2ZW50LnN0YXJ0LFxuICAgICAgZW5kOiBldmVudC5lbmQsXG4gICAgICByZXNvdXJjZUlkLFxuICAgICAgaXNBbGxEYXksXG4gICAgfSlcbiAgfVxuXG4gIF90ZWFyZG93blNlbGVjdGFibGUgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLl9zZWxlY3RvcikgcmV0dXJuXG4gICAgdGhpcy5fc2VsZWN0b3IudGVhcmRvd24oKVxuICAgIHRoaXMuX3NlbGVjdG9yID0gbnVsbFxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIGFjY2Vzc29ycyB9ID0gdGhpcy5wcm9wc1xuXG4gICAgbGV0IHsgc2VnbWVudCB9ID0gdGhpcy5zdGF0ZVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgcmVmPXt0aGlzLnJlZn0gY2xhc3NOYW1lPVwicmJjLWFkZG9ucy1kbmQtcm93LWJvZHlcIj5cbiAgICAgICAge2NoaWxkcmVufVxuXG4gICAgICAgIHtzZWdtZW50ICYmIChcbiAgICAgICAgICA8RXZlbnRSb3dcbiAgICAgICAgICAgIHsuLi50aGlzLnByb3BzfVxuICAgICAgICAgICAgc2VsZWN0ZWQ9e251bGx9XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJyYmMtYWRkb25zLWRuZC1kcmFnLXJvd1wiXG4gICAgICAgICAgICBzZWdtZW50cz17W3NlZ21lbnRdfVxuICAgICAgICAgICAgYWNjZXNzb3JzPXt7XG4gICAgICAgICAgICAgIC4uLmFjY2Vzc29ycyxcbiAgICAgICAgICAgICAgLi4uZHJhZ0FjY2Vzc29ycyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBXZWVrV3JhcHBlclxuIiwiaW1wb3J0IHdpdGhEcmFnQW5kRHJvcCBmcm9tICcuL3dpdGhEcmFnQW5kRHJvcCdcbmV4cG9ydCBkZWZhdWx0IHdpdGhEcmFnQW5kRHJvcFxuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCdcblxuaW1wb3J0IHsgYWNjZXNzb3IgfSBmcm9tICcuLi8uLi91dGlscy9wcm9wVHlwZXMnXG5pbXBvcnQgRXZlbnRXcmFwcGVyIGZyb20gJy4vRXZlbnRXcmFwcGVyJ1xuaW1wb3J0IEV2ZW50Q29udGFpbmVyV3JhcHBlciBmcm9tICcuL0V2ZW50Q29udGFpbmVyV3JhcHBlcidcbmltcG9ydCBXZWVrV3JhcHBlciBmcm9tICcuL1dlZWtXcmFwcGVyJ1xuaW1wb3J0IHsgbWVyZ2VDb21wb25lbnRzIH0gZnJvbSAnLi9jb21tb24nXG5pbXBvcnQgeyBEbkRDb250ZXh0IH0gZnJvbSAnLi9EbkRDb250ZXh0J1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB3aXRoRHJhZ0FuZERyb3AoQ2FsZW5kYXIpIHtcbiAgY2xhc3MgRHJhZ0FuZERyb3BDYWxlbmRhciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgIC4uLkNhbGVuZGFyLnByb3BUeXBlcyxcblxuICAgICAgb25FdmVudERyb3A6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgb25FdmVudFJlc2l6ZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBvbkRyYWdTdGFydDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBvbkRyYWdPdmVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIG9uRHJvcEZyb21PdXRzaWRlOiBQcm9wVHlwZXMuZnVuYyxcblxuICAgICAgZHJhZ0Zyb21PdXRzaWRlSXRlbTogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAgIGRyYWdnYWJsZUFjY2Vzc29yOiBhY2Nlc3NvcixcbiAgICAgIHJlc2l6YWJsZUFjY2Vzc29yOiBhY2Nlc3NvcixcblxuICAgICAgc2VsZWN0YWJsZTogUHJvcFR5cGVzLm9uZU9mKFt0cnVlLCBmYWxzZSwgJ2lnbm9yZUV2ZW50cyddKSxcbiAgICAgIHJlc2l6YWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgfVxuXG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIC4uLkNhbGVuZGFyLmRlZmF1bHRQcm9wcyxcbiAgICAgIGRyYWdnYWJsZUFjY2Vzc29yOiBudWxsLFxuICAgICAgcmVzaXphYmxlQWNjZXNzb3I6IG51bGwsXG4gICAgICByZXNpemFibGU6IHRydWUsXG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoLi4uYXJncykge1xuICAgICAgc3VwZXIoLi4uYXJncylcblxuICAgICAgdGhpcy5zdGF0ZSA9IHsgaW50ZXJhY3Rpbmc6IGZhbHNlIH1cbiAgICB9XG5cbiAgICBnZXREbkRDb250ZXh0VmFsdWUoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkcmFnZ2FibGU6IHtcbiAgICAgICAgICBvblN0YXJ0OiB0aGlzLmhhbmRsZUludGVyYWN0aW9uU3RhcnQsXG4gICAgICAgICAgb25FbmQ6IHRoaXMuaGFuZGxlSW50ZXJhY3Rpb25FbmQsXG4gICAgICAgICAgb25CZWdpbkFjdGlvbjogdGhpcy5oYW5kbGVCZWdpbkFjdGlvbixcbiAgICAgICAgICBvbkRyb3BGcm9tT3V0c2lkZTogdGhpcy5wcm9wcy5vbkRyb3BGcm9tT3V0c2lkZSxcbiAgICAgICAgICBkcmFnRnJvbU91dHNpZGVJdGVtOiB0aGlzLnByb3BzLmRyYWdGcm9tT3V0c2lkZUl0ZW0sXG4gICAgICAgICAgZHJhZ2dhYmxlQWNjZXNzb3I6IHRoaXMucHJvcHMuZHJhZ2dhYmxlQWNjZXNzb3IsXG4gICAgICAgICAgcmVzaXphYmxlQWNjZXNzb3I6IHRoaXMucHJvcHMucmVzaXphYmxlQWNjZXNzb3IsXG4gICAgICAgICAgZHJhZ0FuZERyb3BBY3Rpb246IHRoaXMuc3RhdGUsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfVxuXG4gICAgZGVmYXVsdE9uRHJhZ092ZXIgPSAoZXZlbnQpID0+IHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICB9XG5cbiAgICBoYW5kbGVCZWdpbkFjdGlvbiA9IChldmVudCwgYWN0aW9uLCBkaXJlY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBldmVudCwgYWN0aW9uLCBkaXJlY3Rpb24gfSlcbiAgICAgIGNvbnN0IHsgb25EcmFnU3RhcnQgfSA9IHRoaXMucHJvcHNcbiAgICAgIGlmIChvbkRyYWdTdGFydCkgb25EcmFnU3RhcnQoeyBldmVudCwgYWN0aW9uLCBkaXJlY3Rpb24gfSlcbiAgICB9XG5cbiAgICBoYW5kbGVJbnRlcmFjdGlvblN0YXJ0ID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc3RhdGUuaW50ZXJhY3RpbmcgPT09IGZhbHNlKSB0aGlzLnNldFN0YXRlKHsgaW50ZXJhY3Rpbmc6IHRydWUgfSlcbiAgICB9XG5cbiAgICBoYW5kbGVJbnRlcmFjdGlvbkVuZCA9IChpbnRlcmFjdGlvbkluZm8pID0+IHtcbiAgICAgIGNvbnN0IHsgYWN0aW9uLCBldmVudCB9ID0gdGhpcy5zdGF0ZVxuICAgICAgaWYgKCFhY3Rpb24pIHJldHVyblxuXG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgYWN0aW9uOiBudWxsLFxuICAgICAgICBldmVudDogbnVsbCxcbiAgICAgICAgaW50ZXJhY3Rpbmc6IGZhbHNlLFxuICAgICAgICBkaXJlY3Rpb246IG51bGwsXG4gICAgICB9KVxuXG4gICAgICBpZiAoaW50ZXJhY3Rpb25JbmZvID09IG51bGwpIHJldHVyblxuXG4gICAgICBpbnRlcmFjdGlvbkluZm8uZXZlbnQgPSBldmVudFxuICAgICAgY29uc3QgeyBvbkV2ZW50RHJvcCwgb25FdmVudFJlc2l6ZSB9ID0gdGhpcy5wcm9wc1xuICAgICAgaWYgKGFjdGlvbiA9PT0gJ21vdmUnICYmIG9uRXZlbnREcm9wKSBvbkV2ZW50RHJvcChpbnRlcmFjdGlvbkluZm8pXG4gICAgICBpZiAoYWN0aW9uID09PSAncmVzaXplJyAmJiBvbkV2ZW50UmVzaXplKSBvbkV2ZW50UmVzaXplKGludGVyYWN0aW9uSW5mbylcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7IHNlbGVjdGFibGUsIGVsZW1lbnRQcm9wcywgY29tcG9uZW50cywgLi4ucHJvcHMgfSA9IHRoaXMucHJvcHNcbiAgICAgIGNvbnN0IHsgaW50ZXJhY3RpbmcgfSA9IHRoaXMuc3RhdGVcblxuICAgICAgZGVsZXRlIHByb3BzLm9uRXZlbnREcm9wXG4gICAgICBkZWxldGUgcHJvcHMub25FdmVudFJlc2l6ZVxuICAgICAgcHJvcHMuc2VsZWN0YWJsZSA9IHNlbGVjdGFibGUgPyAnaWdub3JlRXZlbnRzJyA6IGZhbHNlXG5cbiAgICAgIHRoaXMuY29tcG9uZW50cyA9IG1lcmdlQ29tcG9uZW50cyhjb21wb25lbnRzLCB7XG4gICAgICAgIGV2ZW50V3JhcHBlcjogRXZlbnRXcmFwcGVyLFxuICAgICAgICBldmVudENvbnRhaW5lcldyYXBwZXI6IEV2ZW50Q29udGFpbmVyV3JhcHBlcixcbiAgICAgICAgd2Vla1dyYXBwZXI6IFdlZWtXcmFwcGVyLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgZWxlbWVudFByb3BzV2l0aERyb3BGcm9tT3V0c2lkZSA9IHRoaXMucHJvcHMub25Ecm9wRnJvbU91dHNpZGVcbiAgICAgICAgPyB7XG4gICAgICAgICAgICAuLi5lbGVtZW50UHJvcHMsXG4gICAgICAgICAgICBvbkRyYWdPdmVyOiB0aGlzLnByb3BzLm9uRHJhZ092ZXIgfHwgdGhpcy5kZWZhdWx0T25EcmFnT3ZlcixcbiAgICAgICAgICB9XG4gICAgICAgIDogZWxlbWVudFByb3BzXG5cbiAgICAgIHByb3BzLmNsYXNzTmFtZSA9IGNsc3goXG4gICAgICAgIHByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgJ3JiYy1hZGRvbnMtZG5kJyxcbiAgICAgICAgISFpbnRlcmFjdGluZyAmJiAncmJjLWFkZG9ucy1kbmQtaXMtZHJhZ2dpbmcnXG4gICAgICApXG5cbiAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldERuRENvbnRleHRWYWx1ZSgpXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8RG5EQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y29udGV4dH0+XG4gICAgICAgICAgPENhbGVuZGFyXG4gICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICBlbGVtZW50UHJvcHM9e2VsZW1lbnRQcm9wc1dpdGhEcm9wRnJvbU91dHNpZGV9XG4gICAgICAgICAgICBjb21wb25lbnRzPXt0aGlzLmNvbXBvbmVudHN9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9EbkRDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBEcmFnQW5kRHJvcENhbGVuZGFyXG59XG4iLCJpbXBvcnQgTm9vcFdyYXBwZXIgZnJvbSAnLi9Ob29wV3JhcHBlcidcblxuZXhwb3J0IGRlZmF1bHQgTm9vcFdyYXBwZXJcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBpbnZhcmlhbnQgZnJvbSAnaW52YXJpYW50J1xuaW1wb3J0IHtcbiAgbWVyZ2UsXG4gIGluUmFuZ2UsXG4gIGx0LFxuICBsdGUsXG4gIGd0LFxuICBndGUsXG4gIGVxLFxuICBuZXEsXG4gIHN0YXJ0T2YsXG4gIGVuZE9mLFxuICBhZGQsXG4gIHJhbmdlLFxuICBkaWZmLFxuICBkdXJhdGlvbixcbiAgY2VpbCxcbiAgbWluLFxuICBtYXgsXG4gIGZpcnN0VmlzaWJsZURheSxcbiAgbGFzdFZpc2libGVEYXksXG4gIHZpc2libGVEYXlzLFxuICBtaW51dGVzLFxuICBpc0p1c3REYXRlLFxufSBmcm9tICcuL3V0aWxzL2RhdGVzJ1xuXG5jb25zdCBsb2NhbGVQcm9wVHlwZSA9IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5mdW5jXSlcblxuZnVuY3Rpb24gX2Zvcm1hdChsb2NhbGl6ZXIsIGZvcm1hdHRlciwgdmFsdWUsIGZvcm1hdCwgY3VsdHVyZSkge1xuICBsZXQgcmVzdWx0ID1cbiAgICB0eXBlb2YgZm9ybWF0ID09PSAnZnVuY3Rpb24nXG4gICAgICA/IGZvcm1hdCh2YWx1ZSwgY3VsdHVyZSwgbG9jYWxpemVyKVxuICAgICAgOiBmb3JtYXR0ZXIuY2FsbChsb2NhbGl6ZXIsIHZhbHVlLCBmb3JtYXQsIGN1bHR1cmUpXG5cbiAgaW52YXJpYW50KFxuICAgIHJlc3VsdCA9PSBudWxsIHx8IHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnLFxuICAgICdgbG9jYWxpemVyIGZvcm1hdCguLilgIG11c3QgcmV0dXJuIGEgc3RyaW5nLCBudWxsLCBvciB1bmRlZmluZWQnXG4gIClcblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8qKlxuICogVGhpcyBkYXRlIGNvbnZlcnNpb24gd2FzIG1vdmVkIG91dCBvZiBUaW1lU2xvdHMuanMsIHRvXG4gKiBhbGxvdyBmb3IgbG9jYWxpemVyIG92ZXJyaWRlXG4gKiBAcGFyYW0ge0RhdGV9IGR0IC0gVGhlIGRhdGUgdG8gc3RhcnQgZnJvbVxuICogQHBhcmFtIHtOdW1iZXJ9IG1pbnV0ZXNGcm9tTWlkbmlnaHRcbiAqIEBwYXJhbSB7TnVtYmVyfSBvZmZzZXRcbiAqIEByZXR1cm5zIHtEYXRlfVxuICovXG5mdW5jdGlvbiBnZXRTbG90RGF0ZShkdCwgbWludXRlc0Zyb21NaWRuaWdodCwgb2Zmc2V0KSB7XG4gIHJldHVybiBuZXcgRGF0ZShcbiAgICBkdC5nZXRGdWxsWWVhcigpLFxuICAgIGR0LmdldE1vbnRoKCksXG4gICAgZHQuZ2V0RGF0ZSgpLFxuICAgIDAsXG4gICAgbWludXRlc0Zyb21NaWRuaWdodCArIG9mZnNldCxcbiAgICAwLFxuICAgIDBcbiAgKVxufVxuXG5mdW5jdGlvbiBnZXREc3RPZmZzZXQoc3RhcnQsIGVuZCkge1xuICByZXR1cm4gc3RhcnQuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGVuZC5nZXRUaW1lem9uZU9mZnNldCgpXG59XG5cbi8vIGlmIHRoZSBzdGFydCBpcyBvbiBhIERTVC1jaGFuZ2luZyBkYXkgYnV0ICphZnRlciogdGhlIG1vbWVudCBvZiBEU1Rcbi8vIHRyYW5zaXRpb24gd2UgbmVlZCB0byBhZGQgdGhvc2UgZXh0cmEgbWludXRlcyB0byBvdXIgbWludXRlc0Zyb21NaWRuaWdodFxuZnVuY3Rpb24gZ2V0VG90YWxNaW4oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gZGlmZihzdGFydCwgZW5kLCAnbWludXRlcycpICsgZ2V0RHN0T2Zmc2V0KHN0YXJ0LCBlbmQpXG59XG5cbmZ1bmN0aW9uIGdldE1pbnV0ZXNGcm9tTWlkbmlnaHQoc3RhcnQpIHtcbiAgY29uc3QgZGF5c3RhcnQgPSBzdGFydE9mKHN0YXJ0LCAnZGF5JylcbiAgcmV0dXJuIGRpZmYoZGF5c3RhcnQsIHN0YXJ0LCAnbWludXRlcycpICsgZ2V0RHN0T2Zmc2V0KGRheXN0YXJ0LCBzdGFydClcbn1cblxuLy8gVGhlc2UgdHdvIGFyZSB1c2VkIGJ5IERhdGVTbG90TWV0cmljc1xuZnVuY3Rpb24gY29udGludWVzUHJpb3Ioc3RhcnQsIGZpcnN0KSB7XG4gIHJldHVybiBsdChzdGFydCwgZmlyc3QsICdkYXknKVxufVxuXG5mdW5jdGlvbiBjb250aW51ZXNBZnRlcihzdGFydCwgZW5kLCBsYXN0KSB7XG4gIGNvbnN0IHNpbmdsZURheUR1cmF0aW9uID0gZXEoc3RhcnQsIGVuZCwgJ21pbnV0ZXMnKVxuICByZXR1cm4gc2luZ2xlRGF5RHVyYXRpb25cbiAgICA/IGd0ZShlbmQsIGxhc3QsICdtaW51dGVzJylcbiAgICA6IGd0KGVuZCwgbGFzdCwgJ21pbnV0ZXMnKVxufVxuXG5mdW5jdGlvbiBkYXlTcGFuKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIGR1cmF0aW9uKHN0YXJ0LCBlbmQsICdkYXknKVxufVxuXG4vLyBUaGVzZSB0d28gYXJlIHVzZWQgYnkgZXZlbnRMZXZlbHNcbmZ1bmN0aW9uIHNvcnRFdmVudHMoe1xuICBldnRBOiB7IHN0YXJ0OiBhU3RhcnQsIGVuZDogYUVuZCwgYWxsRGF5OiBhQWxsRGF5IH0sXG4gIGV2dEI6IHsgc3RhcnQ6IGJTdGFydCwgZW5kOiBiRW5kLCBhbGxEYXk6IGJBbGxEYXkgfSxcbn0pIHtcbiAgbGV0IHN0YXJ0U29ydCA9ICtzdGFydE9mKGFTdGFydCwgJ2RheScpIC0gK3N0YXJ0T2YoYlN0YXJ0LCAnZGF5JylcblxuICBsZXQgZHVyQSA9IGRheVNwYW4oYVN0YXJ0LCBhRW5kKVxuXG4gIGxldCBkdXJCID0gZGF5U3BhbihiU3RhcnQsIGJFbmQpXG5cbiAgcmV0dXJuIChcbiAgICBzdGFydFNvcnQgfHwgLy8gc29ydCBieSBzdGFydCBEYXkgZmlyc3RcbiAgICBkdXJCIC0gZHVyQSB8fCAvLyBldmVudHMgc3Bhbm5pbmcgbXVsdGlwbGUgZGF5cyBnbyBmaXJzdFxuICAgICEhYkFsbERheSAtICEhYUFsbERheSB8fCAvLyB0aGVuIGFsbERheSBzaW5nbGUgZGF5IGV2ZW50c1xuICAgICthU3RhcnQgLSArYlN0YXJ0IHx8IC8vIHRoZW4gc29ydCBieSBzdGFydCB0aW1lXG4gICAgK2FFbmQgLSArYkVuZCAvLyB0aGVuIHNvcnQgYnkgZW5kIHRpbWVcbiAgKVxufVxuXG5mdW5jdGlvbiBpbkV2ZW50UmFuZ2Uoe1xuICBldmVudDogeyBzdGFydCwgZW5kIH0sXG4gIHJhbmdlOiB7IHN0YXJ0OiByYW5nZVN0YXJ0LCBlbmQ6IHJhbmdlRW5kIH0sXG59KSB7XG4gIGxldCBlU3RhcnQgPSBzdGFydE9mKHN0YXJ0LCAnZGF5JylcblxuICBsZXQgc3RhcnRzQmVmb3JlRW5kID0gbHRlKGVTdGFydCwgcmFuZ2VFbmQsICdkYXknKVxuICAvLyB3aGVuIHRoZSBldmVudCBpcyB6ZXJvIGR1cmF0aW9uIHdlIG5lZWQgdG8gaGFuZGxlIGEgYml0IGRpZmZlcmVudGx5XG4gIGNvbnN0IHNhbWVNaW4gPSBuZXEoZVN0YXJ0LCBlbmQsICdtaW51dGVzJylcbiAgbGV0IGVuZHNBZnRlclN0YXJ0ID0gc2FtZU1pblxuICAgID8gZ3QoZW5kLCByYW5nZVN0YXJ0LCAnbWludXRlcycpXG4gICAgOiBndGUoZW5kLCByYW5nZVN0YXJ0LCAnbWludXRlcycpXG4gIHJldHVybiBzdGFydHNCZWZvcmVFbmQgJiYgZW5kc0FmdGVyU3RhcnRcbn1cblxuLy8gb3RoZXIgbG9jYWxpemVycyB0cmVhdHMgJ2RheScgYW5kICdkYXRlJyBlcXVhbGl0eSB2ZXJ5IGRpZmZlcmVudGx5LCBzbyB3ZVxuLy8gYWJzdHJhY3QgdGhlIGNoYW5nZSB0aGUgJ2xvY2FsaXplci5lcShkYXRlMSwgZGF0ZTIsICdkYXknKSBpbnRvIHRoaXNcbi8vIG5ldyBtZXRob2QsIHdoZXJlIHRoZXkgY2FuIGJlIHRyZWF0ZWQgY29ycmVjdGx5IGJ5IHRoZSBsb2NhbGl6ZXIgb3ZlcnJpZGVzXG5mdW5jdGlvbiBpc1NhbWVEYXRlKGRhdGUxLCBkYXRlMikge1xuICByZXR1cm4gZXEoZGF0ZTEsIGRhdGUyLCAnZGF5Jylcbn1cblxuZnVuY3Rpb24gc3RhcnRBbmRFbmRBcmVEYXRlT25seShzdGFydCwgZW5kKSB7XG4gIHJldHVybiBpc0p1c3REYXRlKHN0YXJ0KSAmJiBpc0p1c3REYXRlKGVuZClcbn1cblxuZXhwb3J0IGNsYXNzIERhdGVMb2NhbGl6ZXIge1xuICBjb25zdHJ1Y3RvcihzcGVjKSB7XG4gICAgaW52YXJpYW50KFxuICAgICAgdHlwZW9mIHNwZWMuZm9ybWF0ID09PSAnZnVuY3Rpb24nLFxuICAgICAgJ2RhdGUgbG9jYWxpemVyIGBmb3JtYXQoLi4pYCBtdXN0IGJlIGEgZnVuY3Rpb24nXG4gICAgKVxuICAgIGludmFyaWFudChcbiAgICAgIHR5cGVvZiBzcGVjLmZpcnN0T2ZXZWVrID09PSAnZnVuY3Rpb24nLFxuICAgICAgJ2RhdGUgbG9jYWxpemVyIGBmaXJzdE9mV2VlayguLilgIG11c3QgYmUgYSBmdW5jdGlvbidcbiAgICApXG5cbiAgICB0aGlzLnByb3BUeXBlID0gc3BlYy5wcm9wVHlwZSB8fCBsb2NhbGVQcm9wVHlwZVxuXG4gICAgdGhpcy5mb3JtYXRzID0gc3BlYy5mb3JtYXRzXG4gICAgdGhpcy5mb3JtYXQgPSAoLi4uYXJncykgPT4gX2Zvcm1hdCh0aGlzLCBzcGVjLmZvcm1hdCwgLi4uYXJncylcbiAgICAvLyBUaGVzZSBkYXRlIGFyaXRobWV0aWMgbWV0aG9kcyBjYW4gYmUgb3ZlcnJpZGVuIGJ5IHRoZSBsb2NhbGl6ZXJcbiAgICB0aGlzLnN0YXJ0T2ZXZWVrID0gc3BlYy5maXJzdE9mV2Vla1xuICAgIHRoaXMubWVyZ2UgPSBzcGVjLm1lcmdlIHx8IG1lcmdlXG4gICAgdGhpcy5pblJhbmdlID0gc3BlYy5pblJhbmdlIHx8IGluUmFuZ2VcbiAgICB0aGlzLmx0ID0gc3BlYy5sdCB8fCBsdFxuICAgIHRoaXMubHRlID0gc3BlYy5sdGUgfHwgbHRlXG4gICAgdGhpcy5ndCA9IHNwZWMuZ3QgfHwgZ3RcbiAgICB0aGlzLmd0ZSA9IHNwZWMuZ3RlIHx8IGd0ZVxuICAgIHRoaXMuZXEgPSBzcGVjLmVxIHx8IGVxXG4gICAgdGhpcy5uZXEgPSBzcGVjLm5lcSB8fCBuZXFcbiAgICB0aGlzLnN0YXJ0T2YgPSBzcGVjLnN0YXJ0T2YgfHwgc3RhcnRPZlxuICAgIHRoaXMuZW5kT2YgPSBzcGVjLmVuZE9mIHx8IGVuZE9mXG4gICAgdGhpcy5hZGQgPSBzcGVjLmFkZCB8fCBhZGRcbiAgICB0aGlzLnJhbmdlID0gc3BlYy5yYW5nZSB8fCByYW5nZVxuICAgIHRoaXMuZGlmZiA9IHNwZWMuZGlmZiB8fCBkaWZmXG4gICAgdGhpcy5jZWlsID0gc3BlYy5jZWlsIHx8IGNlaWxcbiAgICB0aGlzLm1pbiA9IHNwZWMubWluIHx8IG1pblxuICAgIHRoaXMubWF4ID0gc3BlYy5tYXggfHwgbWF4XG4gICAgdGhpcy5taW51dGVzID0gc3BlYy5taW51dGVzIHx8IG1pbnV0ZXNcbiAgICB0aGlzLmRheVNwYW4gPSBzcGVjLmRheVNwYW4gfHwgZGF5U3BhblxuICAgIHRoaXMuZmlyc3RWaXNpYmxlRGF5ID0gc3BlYy5maXJzdFZpc2libGVEYXkgfHwgZmlyc3RWaXNpYmxlRGF5XG4gICAgdGhpcy5sYXN0VmlzaWJsZURheSA9IHNwZWMubGFzdFZpc2libGVEYXkgfHwgbGFzdFZpc2libGVEYXlcbiAgICB0aGlzLnZpc2libGVEYXlzID0gc3BlYy52aXNpYmxlRGF5cyB8fCB2aXNpYmxlRGF5c1xuXG4gICAgdGhpcy5nZXRTbG90RGF0ZSA9IHNwZWMuZ2V0U2xvdERhdGUgfHwgZ2V0U2xvdERhdGVcbiAgICB0aGlzLmdldFRpbWV6b25lT2Zmc2V0ID1cbiAgICAgIHNwZWMuZ2V0VGltZXpvbmVPZmZzZXQgfHwgKCh2YWx1ZSkgPT4gdmFsdWUuZ2V0VGltZXpvbmVPZmZzZXQoKSlcbiAgICB0aGlzLmdldERzdE9mZnNldCA9IHNwZWMuZ2V0RHN0T2Zmc2V0IHx8IGdldERzdE9mZnNldFxuICAgIHRoaXMuZ2V0VG90YWxNaW4gPSBzcGVjLmdldFRvdGFsTWluIHx8IGdldFRvdGFsTWluXG4gICAgdGhpcy5nZXRNaW51dGVzRnJvbU1pZG5pZ2h0ID1cbiAgICAgIHNwZWMuZ2V0TWludXRlc0Zyb21NaWRuaWdodCB8fCBnZXRNaW51dGVzRnJvbU1pZG5pZ2h0XG4gICAgdGhpcy5jb250aW51ZXNQcmlvciA9IHNwZWMuY29udGludWVzUHJpb3IgfHwgY29udGludWVzUHJpb3JcbiAgICB0aGlzLmNvbnRpbnVlc0FmdGVyID0gc3BlYy5jb250aW51ZXNBZnRlciB8fCBjb250aW51ZXNBZnRlclxuICAgIHRoaXMuc29ydEV2ZW50cyA9IHNwZWMuc29ydEV2ZW50cyB8fCBzb3J0RXZlbnRzXG4gICAgdGhpcy5pbkV2ZW50UmFuZ2UgPSBzcGVjLmluRXZlbnRSYW5nZSB8fCBpbkV2ZW50UmFuZ2VcbiAgICB0aGlzLmlzU2FtZURhdGUgPSBzcGVjLmlzU2FtZURhdGUgfHwgaXNTYW1lRGF0ZVxuICAgIHRoaXMuc3RhcnRBbmRFbmRBcmVEYXRlT25seSA9XG4gICAgICBzcGVjLnN0YXJ0QW5kRW5kQXJlRGF0ZU9ubHkgfHwgc3RhcnRBbmRFbmRBcmVEYXRlT25seVxuICAgIHRoaXMuc2VnbWVudE9mZnNldCA9IHNwZWMuYnJvd3NlclRaT2Zmc2V0ID8gc3BlYy5icm93c2VyVFpPZmZzZXQoKSA6IDBcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VXaXRoRGVmYXVsdHMoXG4gIGxvY2FsaXplcixcbiAgY3VsdHVyZSxcbiAgZm9ybWF0T3ZlcnJpZGVzLFxuICBtZXNzYWdlc1xuKSB7XG4gIGNvbnN0IGZvcm1hdHMgPSB7XG4gICAgLi4ubG9jYWxpemVyLmZvcm1hdHMsXG4gICAgLi4uZm9ybWF0T3ZlcnJpZGVzLFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5sb2NhbGl6ZXIsXG4gICAgbWVzc2FnZXMsXG4gICAgc3RhcnRPZldlZWs6ICgpID0+IGxvY2FsaXplci5zdGFydE9mV2VlayhjdWx0dXJlKSxcbiAgICBmb3JtYXQ6ICh2YWx1ZSwgZm9ybWF0KSA9PlxuICAgICAgbG9jYWxpemVyLmZvcm1hdCh2YWx1ZSwgZm9ybWF0c1tmb3JtYXRdIHx8IGZvcm1hdCwgY3VsdHVyZSksXG4gIH1cbn1cbiIsImxldCBkZWZhdWx0TWVzc2FnZXMgPSB7XG4gIGRhdGU6ICdEYXRlJyxcbiAgdGltZTogJ1RpbWUnLFxuICBldmVudDogJ0V2ZW50JyxcbiAgYWxsRGF5OiAnQWxsIERheScsXG4gIHdlZWs6ICdXZWVrJyxcbiAgd29ya193ZWVrOiAnV29yayBXZWVrJyxcbiAgZGF5OiAnRGF5JyxcbiAgbW9udGg6ICdNb250aCcsXG4gIHByZXZpb3VzOiAnQmFjaycsXG4gIG5leHQ6ICdOZXh0JyxcbiAgeWVzdGVyZGF5OiAnWWVzdGVyZGF5JyxcbiAgdG9tb3Jyb3c6ICdUb21vcnJvdycsXG4gIHRvZGF5OiAnVG9kYXknLFxuICBhZ2VuZGE6ICdBZ2VuZGEnLFxuXG4gIG5vRXZlbnRzSW5SYW5nZTogJ1RoZXJlIGFyZSBubyBldmVudHMgaW4gdGhpcyByYW5nZS4nLFxuXG4gIHNob3dNb3JlOiAodG90YWwpID0+IGArJHt0b3RhbH0gbW9yZWAsXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lc3NhZ2VzKG1zZ3MpIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5kZWZhdWx0TWVzc2FnZXMsXG4gICAgLi4ubXNncyxcbiAgfVxufVxuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBEYXRlSGVhZGVyID0gKHsgbGFiZWwsIGRyaWxsZG93blZpZXcsIG9uRHJpbGxEb3duIH0pID0+IHtcbiAgaWYgKCFkcmlsbGRvd25WaWV3KSB7XG4gICAgcmV0dXJuIDxzcGFuPntsYWJlbH08L3NwYW4+XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3NOYW1lPVwicmJjLWJ1dHRvbi1saW5rXCJcbiAgICAgIG9uQ2xpY2s9e29uRHJpbGxEb3dufVxuICAgICAgcm9sZT1cImNlbGxcIlxuICAgID5cbiAgICAgIHtsYWJlbH1cbiAgICA8L2J1dHRvbj5cbiAgKVxufVxuXG5EYXRlSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgbGFiZWw6IFByb3BUeXBlcy5ub2RlLFxuICBkYXRlOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcbiAgZHJpbGxkb3duVmlldzogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25EcmlsbERvd246IFByb3BUeXBlcy5mdW5jLFxuICBpc09mZlJhbmdlOiBQcm9wVHlwZXMuYm9vbCxcbn1cblxuZXhwb3J0IGRlZmF1bHQgRGF0ZUhlYWRlclxuIiwiaW1wb3J0IFJlYWN0LCB7IGNyZWF0ZVJlZiB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCdcblxuaW1wb3J0IGNodW5rIGZyb20gJ2xvZGFzaC9jaHVuaydcblxuaW1wb3J0IHsgbmF2aWdhdGUsIHZpZXdzIH0gZnJvbSAnLi91dGlscy9jb25zdGFudHMnXG5pbXBvcnQgeyBub3RpZnkgfSBmcm9tICcuL3V0aWxzL2hlbHBlcnMnXG5pbXBvcnQgZ2V0UG9zaXRpb24gZnJvbSAnZG9tLWhlbHBlcnMvcG9zaXRpb24nXG5pbXBvcnQgKiBhcyBhbmltYXRpb25GcmFtZSBmcm9tICdkb20taGVscGVycy9hbmltYXRpb25GcmFtZSdcblxuLyogaW1wb3J0IFBvcHVwIGZyb20gJy4vUG9wdXAnXG5pbXBvcnQgT3ZlcmxheSBmcm9tICdyZWFjdC1vdmVybGF5cy9PdmVybGF5JyAqL1xuaW1wb3J0IFBvcE92ZXJsYXkgZnJvbSAnLi9Qb3BPdmVybGF5J1xuaW1wb3J0IERhdGVDb250ZW50Um93IGZyb20gJy4vRGF0ZUNvbnRlbnRSb3cnXG5pbXBvcnQgSGVhZGVyIGZyb20gJy4vSGVhZGVyJ1xuaW1wb3J0IERhdGVIZWFkZXIgZnJvbSAnLi9EYXRlSGVhZGVyJ1xuXG5pbXBvcnQgeyBpblJhbmdlLCBzb3J0V2Vla0V2ZW50cyB9IGZyb20gJy4vdXRpbHMvZXZlbnRMZXZlbHMnXG5cbmxldCBldmVudHNGb3JXZWVrID0gKGV2dHMsIHN0YXJ0LCBlbmQsIGFjY2Vzc29ycywgbG9jYWxpemVyKSA9PlxuICBldnRzLmZpbHRlcigoZSkgPT4gaW5SYW5nZShlLCBzdGFydCwgZW5kLCBhY2Nlc3NvcnMsIGxvY2FsaXplcikpXG5cbmNsYXNzIE1vbnRoVmlldyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHtcbiAgICBzdXBlciguLi5hcmdzKVxuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHJvd0xpbWl0OiA1LFxuICAgICAgbmVlZExpbWl0TWVhc3VyZTogdHJ1ZSxcbiAgICAgIGRhdGU6IG51bGwsXG4gICAgfVxuICAgIHRoaXMuY29udGFpbmVyUmVmID0gY3JlYXRlUmVmKClcbiAgICB0aGlzLnNsb3RSb3dSZWYgPSBjcmVhdGVSZWYoKVxuXG4gICAgdGhpcy5fYmdSb3dzID0gW11cbiAgICB0aGlzLl9wZW5kaW5nU2VsZWN0aW9uID0gW11cbiAgfVxuXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoeyBkYXRlLCBsb2NhbGl6ZXIgfSwgc3RhdGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0ZSxcbiAgICAgIG5lZWRMaW1pdE1lYXN1cmU6IGxvY2FsaXplci5uZXEoZGF0ZSwgc3RhdGUuZGF0ZSwgJ21vbnRoJyksXG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgbGV0IHJ1bm5pbmdcblxuICAgIGlmICh0aGlzLnN0YXRlLm5lZWRMaW1pdE1lYXN1cmUpIHRoaXMubWVhc3VyZVJvd0xpbWl0KHRoaXMucHJvcHMpXG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdyZXNpemUnLFxuICAgICAgKHRoaXMuX3Jlc2l6ZUxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgICBpZiAoIXJ1bm5pbmcpIHtcbiAgICAgICAgICBhbmltYXRpb25GcmFtZS5yZXF1ZXN0KCgpID0+IHtcbiAgICAgICAgICAgIHJ1bm5pbmcgPSBmYWxzZVxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IG5lZWRMaW1pdE1lYXN1cmU6IHRydWUgfSkgLy9lc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBmYWxzZVxuICAgIClcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5uZWVkTGltaXRNZWFzdXJlKSB0aGlzLm1lYXN1cmVSb3dMaW1pdCh0aGlzLnByb3BzKVxuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX3Jlc2l6ZUxpc3RlbmVyLCBmYWxzZSlcbiAgfVxuXG4gIGdldENvbnRhaW5lciA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5jb250YWluZXJSZWYuY3VycmVudFxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGxldCB7IGRhdGUsIGxvY2FsaXplciwgY2xhc3NOYW1lIH0gPSB0aGlzLnByb3BzLFxuICAgICAgbW9udGggPSBsb2NhbGl6ZXIudmlzaWJsZURheXMoZGF0ZSwgbG9jYWxpemVyKSxcbiAgICAgIHdlZWtzID0gY2h1bmsobW9udGgsIDcpXG5cbiAgICB0aGlzLl93ZWVrQ291bnQgPSB3ZWVrcy5sZW5ndGhcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y2xzeCgncmJjLW1vbnRoLXZpZXcnLCBjbGFzc05hbWUpfVxuICAgICAgICByb2xlPVwidGFibGVcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiTW9udGggVmlld1wiXG4gICAgICAgIHJlZj17dGhpcy5jb250YWluZXJSZWZ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLXJvdyByYmMtbW9udGgtaGVhZGVyXCIgcm9sZT1cInJvd1wiPlxuICAgICAgICAgIHt0aGlzLnJlbmRlckhlYWRlcnMod2Vla3NbMF0pfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3dlZWtzLm1hcCh0aGlzLnJlbmRlcldlZWspfVxuICAgICAgICB7dGhpcy5wcm9wcy5wb3B1cCAmJiB0aGlzLnJlbmRlck92ZXJsYXkoKX1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIHJlbmRlcldlZWsgPSAod2Vlaywgd2Vla0lkeCkgPT4ge1xuICAgIGxldCB7XG4gICAgICBldmVudHMsXG4gICAgICBjb21wb25lbnRzLFxuICAgICAgc2VsZWN0YWJsZSxcbiAgICAgIGdldE5vdyxcbiAgICAgIHNlbGVjdGVkLFxuICAgICAgZGF0ZSxcbiAgICAgIGxvY2FsaXplcixcbiAgICAgIGxvbmdQcmVzc1RocmVzaG9sZCxcbiAgICAgIGFjY2Vzc29ycyxcbiAgICAgIGdldHRlcnMsXG4gICAgICBzaG93QWxsRXZlbnRzLFxuICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICBjb25zdCB7IG5lZWRMaW1pdE1lYXN1cmUsIHJvd0xpbWl0IH0gPSB0aGlzLnN0YXRlXG5cbiAgICAvLyBsZXQncyBub3QgbXV0YXRlIHByb3BzXG4gICAgY29uc3Qgd2Vla3NFdmVudHMgPSBldmVudHNGb3JXZWVrKFxuICAgICAgWy4uLmV2ZW50c10sXG4gICAgICB3ZWVrWzBdLFxuICAgICAgd2Vla1t3ZWVrLmxlbmd0aCAtIDFdLFxuICAgICAgYWNjZXNzb3JzLFxuICAgICAgbG9jYWxpemVyXG4gICAgKVxuXG4gICAgY29uc3Qgc29ydGVkID0gc29ydFdlZWtFdmVudHMod2Vla3NFdmVudHMsIGFjY2Vzc29ycywgbG9jYWxpemVyKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxEYXRlQ29udGVudFJvd1xuICAgICAgICBrZXk9e3dlZWtJZHh9XG4gICAgICAgIHJlZj17d2Vla0lkeCA9PT0gMCA/IHRoaXMuc2xvdFJvd1JlZiA6IHVuZGVmaW5lZH1cbiAgICAgICAgY29udGFpbmVyPXt0aGlzLmdldENvbnRhaW5lcn1cbiAgICAgICAgY2xhc3NOYW1lPVwicmJjLW1vbnRoLXJvd1wiXG4gICAgICAgIGdldE5vdz17Z2V0Tm93fVxuICAgICAgICBkYXRlPXtkYXRlfVxuICAgICAgICByYW5nZT17d2Vla31cbiAgICAgICAgZXZlbnRzPXtzb3J0ZWR9XG4gICAgICAgIG1heFJvd3M9e3Nob3dBbGxFdmVudHMgPyBJbmZpbml0eSA6IHJvd0xpbWl0fVxuICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWR9XG4gICAgICAgIHNlbGVjdGFibGU9e3NlbGVjdGFibGV9XG4gICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XG4gICAgICAgIGFjY2Vzc29ycz17YWNjZXNzb3JzfVxuICAgICAgICBnZXR0ZXJzPXtnZXR0ZXJzfVxuICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgcmVuZGVySGVhZGVyPXt0aGlzLnJlYWRlckRhdGVIZWFkaW5nfVxuICAgICAgICByZW5kZXJGb3JNZWFzdXJlPXtuZWVkTGltaXRNZWFzdXJlfVxuICAgICAgICBvblNob3dNb3JlPXt0aGlzLmhhbmRsZVNob3dNb3JlfVxuICAgICAgICBvblNlbGVjdD17dGhpcy5oYW5kbGVTZWxlY3RFdmVudH1cbiAgICAgICAgb25Eb3VibGVDbGljaz17dGhpcy5oYW5kbGVEb3VibGVDbGlja0V2ZW50fVxuICAgICAgICBvbktleVByZXNzPXt0aGlzLmhhbmRsZUtleVByZXNzRXZlbnR9XG4gICAgICAgIG9uU2VsZWN0U2xvdD17dGhpcy5oYW5kbGVTZWxlY3RTbG90fVxuICAgICAgICBsb25nUHJlc3NUaHJlc2hvbGQ9e2xvbmdQcmVzc1RocmVzaG9sZH1cbiAgICAgICAgcnRsPXt0aGlzLnByb3BzLnJ0bH1cbiAgICAgICAgcmVzaXphYmxlPXt0aGlzLnByb3BzLnJlc2l6YWJsZX1cbiAgICAgICAgc2hvd0FsbEV2ZW50cz17c2hvd0FsbEV2ZW50c31cbiAgICAgIC8+XG4gICAgKVxuICB9XG5cbiAgcmVhZGVyRGF0ZUhlYWRpbmcgPSAoeyBkYXRlLCBjbGFzc05hbWUsIC4uLnByb3BzIH0pID0+IHtcbiAgICBsZXQgeyBkYXRlOiBjdXJyZW50RGF0ZSwgZ2V0RHJpbGxkb3duVmlldywgbG9jYWxpemVyIH0gPSB0aGlzLnByb3BzXG4gICAgbGV0IGlzT2ZmUmFuZ2UgPSBsb2NhbGl6ZXIubmVxKGRhdGUsIGN1cnJlbnREYXRlLCAnbW9udGgnKVxuICAgIGxldCBpc0N1cnJlbnQgPSBsb2NhbGl6ZXIuaXNTYW1lRGF0ZShkYXRlLCBjdXJyZW50RGF0ZSlcbiAgICBsZXQgZHJpbGxkb3duVmlldyA9IGdldERyaWxsZG93blZpZXcoZGF0ZSlcbiAgICBsZXQgbGFiZWwgPSBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdkYXRlRm9ybWF0JylcbiAgICBsZXQgRGF0ZUhlYWRlckNvbXBvbmVudCA9IHRoaXMucHJvcHMuY29tcG9uZW50cy5kYXRlSGVhZGVyIHx8IERhdGVIZWFkZXJcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICBpc09mZlJhbmdlICYmICdyYmMtb2ZmLXJhbmdlJyxcbiAgICAgICAgICBpc0N1cnJlbnQgJiYgJ3JiYy1jdXJyZW50J1xuICAgICAgICApfVxuICAgICAgICByb2xlPVwiY2VsbFwiXG4gICAgICA+XG4gICAgICAgIDxEYXRlSGVhZGVyQ29tcG9uZW50XG4gICAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICAgIGRhdGU9e2RhdGV9XG4gICAgICAgICAgZHJpbGxkb3duVmlldz17ZHJpbGxkb3duVmlld31cbiAgICAgICAgICBpc09mZlJhbmdlPXtpc09mZlJhbmdlfVxuICAgICAgICAgIG9uRHJpbGxEb3duPXsoZSkgPT4gdGhpcy5oYW5kbGVIZWFkaW5nQ2xpY2soZGF0ZSwgZHJpbGxkb3duVmlldywgZSl9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cblxuICByZW5kZXJIZWFkZXJzKHJvdykge1xuICAgIGxldCB7IGxvY2FsaXplciwgY29tcG9uZW50cyB9ID0gdGhpcy5wcm9wc1xuICAgIGxldCBmaXJzdCA9IHJvd1swXVxuICAgIGxldCBsYXN0ID0gcm93W3Jvdy5sZW5ndGggLSAxXVxuICAgIGxldCBIZWFkZXJDb21wb25lbnQgPSBjb21wb25lbnRzLmhlYWRlciB8fCBIZWFkZXJcblxuICAgIHJldHVybiBsb2NhbGl6ZXIucmFuZ2UoZmlyc3QsIGxhc3QsICdkYXknKS5tYXAoKGRheSwgaWR4KSA9PiAoXG4gICAgICA8ZGl2IGtleT17J2hlYWRlcl8nICsgaWR4fSBjbGFzc05hbWU9XCJyYmMtaGVhZGVyXCI+XG4gICAgICAgIDxIZWFkZXJDb21wb25lbnRcbiAgICAgICAgICBkYXRlPXtkYXl9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgbGFiZWw9e2xvY2FsaXplci5mb3JtYXQoZGF5LCAnd2Vla2RheUZvcm1hdCcpfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgKSlcbiAgfVxuXG4gIHJlbmRlck92ZXJsYXkoKSB7XG4gICAgbGV0IG92ZXJsYXkgPSB0aGlzLnN0YXRlPy5vdmVybGF5ID8/IHt9XG4gICAgbGV0IHtcbiAgICAgIGFjY2Vzc29ycyxcbiAgICAgIGxvY2FsaXplcixcbiAgICAgIGNvbXBvbmVudHMsXG4gICAgICBnZXR0ZXJzLFxuICAgICAgc2VsZWN0ZWQsXG4gICAgICBwb3B1cE9mZnNldCxcbiAgICAgIGhhbmRsZURyYWdTdGFydCxcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgY29uc3Qgb25IaWRlID0gKCkgPT4gdGhpcy5zZXRTdGF0ZSh7IG92ZXJsYXk6IG51bGwgfSlcblxuICAgIHJldHVybiAoXG4gICAgICA8UG9wT3ZlcmxheVxuICAgICAgICBvdmVybGF5PXtvdmVybGF5fVxuICAgICAgICBhY2Nlc3NvcnM9e2FjY2Vzc29yc31cbiAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XG4gICAgICAgIGdldHRlcnM9e2dldHRlcnN9XG4gICAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZH1cbiAgICAgICAgcG9wdXBPZmZzZXQ9e3BvcHVwT2Zmc2V0fVxuICAgICAgICByZWY9e3RoaXMuY29udGFpbmVyUmVmfVxuICAgICAgICBoYW5kbGVLZXlQcmVzc0V2ZW50PXt0aGlzLmhhbmRsZUtleVByZXNzRXZlbnR9XG4gICAgICAgIGhhbmRsZVNlbGVjdEV2ZW50PXt0aGlzLmhhbmRsZVNlbGVjdEV2ZW50fVxuICAgICAgICBoYW5kbGVEb3VibGVDbGlja0V2ZW50PXt0aGlzLmhhbmRsZURvdWJsZUNsaWNrRXZlbnR9XG4gICAgICAgIGhhbmRsZURyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICBzaG93PXshIW92ZXJsYXkucG9zaXRpb259XG4gICAgICAgIG92ZXJsYXlEaXNwbGF5PXt0aGlzLm92ZXJsYXlEaXNwbGF5fVxuICAgICAgICBvbkhpZGU9e29uSGlkZX1cbiAgICAgIC8+XG4gICAgKVxuXG4gICAgLyogcmV0dXJuIChcbiAgICAgIDxPdmVybGF5XG4gICAgICAgIHJvb3RDbG9zZVxuICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICBzaG93PXshIW92ZXJsYXkucG9zaXRpb259XG4gICAgICAgIG9uSGlkZT17KCkgPT4gdGhpcy5zZXRTdGF0ZSh7IG92ZXJsYXk6IG51bGwgfSl9XG4gICAgICAgIHRhcmdldD17KCkgPT4gb3ZlcmxheS50YXJnZXR9XG4gICAgICA+XG4gICAgICAgIHsoeyBwcm9wcyB9KSA9PiAoXG4gICAgICAgICAgPFBvcHVwXG4gICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICBwb3B1cE9mZnNldD17cG9wdXBPZmZzZXR9XG4gICAgICAgICAgICBhY2Nlc3NvcnM9e2FjY2Vzc29yc31cbiAgICAgICAgICAgIGdldHRlcnM9e2dldHRlcnN9XG4gICAgICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWR9XG4gICAgICAgICAgICBjb21wb25lbnRzPXtjb21wb25lbnRzfVxuICAgICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgICBwb3NpdGlvbj17b3ZlcmxheS5wb3NpdGlvbn1cbiAgICAgICAgICAgIHNob3c9e3RoaXMub3ZlcmxheURpc3BsYXl9XG4gICAgICAgICAgICBldmVudHM9e292ZXJsYXkuZXZlbnRzfVxuICAgICAgICAgICAgc2xvdFN0YXJ0PXtvdmVybGF5LmRhdGV9XG4gICAgICAgICAgICBzbG90RW5kPXtvdmVybGF5LmVuZH1cbiAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLmhhbmRsZVNlbGVjdEV2ZW50fVxuICAgICAgICAgICAgb25Eb3VibGVDbGljaz17dGhpcy5oYW5kbGVEb3VibGVDbGlja0V2ZW50fVxuICAgICAgICAgICAgb25LZXlQcmVzcz17dGhpcy5oYW5kbGVLZXlQcmVzc0V2ZW50fVxuICAgICAgICAgICAgaGFuZGxlRHJhZ1N0YXJ0PXt0aGlzLnByb3BzLmhhbmRsZURyYWdTdGFydH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9PdmVybGF5PlxuICAgICkgKi9cbiAgfVxuXG4gIG1lYXN1cmVSb3dMaW1pdCgpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIG5lZWRMaW1pdE1lYXN1cmU6IGZhbHNlLFxuICAgICAgcm93TGltaXQ6IHRoaXMuc2xvdFJvd1JlZi5jdXJyZW50LmdldFJvd0xpbWl0KCksXG4gICAgfSlcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdFNsb3QgPSAocmFuZ2UsIHNsb3RJbmZvKSA9PiB7XG4gICAgdGhpcy5fcGVuZGluZ1NlbGVjdGlvbiA9IHRoaXMuX3BlbmRpbmdTZWxlY3Rpb24uY29uY2F0KHJhbmdlKVxuXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3NlbGVjdFRpbWVyKVxuICAgIHRoaXMuX3NlbGVjdFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlbGVjdERhdGVzKHNsb3RJbmZvKSlcbiAgfVxuXG4gIGhhbmRsZUhlYWRpbmdDbGljayA9IChkYXRlLCB2aWV3LCBlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgdGhpcy5jbGVhclNlbGVjdGlvbigpXG4gICAgbm90aWZ5KHRoaXMucHJvcHMub25EcmlsbERvd24sIFtkYXRlLCB2aWV3XSlcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdEV2ZW50ID0gKC4uLmFyZ3MpID0+IHtcbiAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKClcbiAgICBub3RpZnkodGhpcy5wcm9wcy5vblNlbGVjdEV2ZW50LCBhcmdzKVxuICB9XG5cbiAgaGFuZGxlRG91YmxlQ2xpY2tFdmVudCA9ICguLi5hcmdzKSA9PiB7XG4gICAgdGhpcy5jbGVhclNlbGVjdGlvbigpXG4gICAgbm90aWZ5KHRoaXMucHJvcHMub25Eb3VibGVDbGlja0V2ZW50LCBhcmdzKVxuICB9XG5cbiAgaGFuZGxlS2V5UHJlc3NFdmVudCA9ICguLi5hcmdzKSA9PiB7XG4gICAgdGhpcy5jbGVhclNlbGVjdGlvbigpXG4gICAgbm90aWZ5KHRoaXMucHJvcHMub25LZXlQcmVzc0V2ZW50LCBhcmdzKVxuICB9XG5cbiAgaGFuZGxlU2hvd01vcmUgPSAoZXZlbnRzLCBkYXRlLCBjZWxsLCBzbG90LCB0YXJnZXQpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBwb3B1cCxcbiAgICAgIG9uRHJpbGxEb3duLFxuICAgICAgb25TaG93TW9yZSxcbiAgICAgIGdldERyaWxsZG93blZpZXcsXG4gICAgICBkb1Nob3dNb3JlRHJpbGxEb3duLFxuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgLy9jYW5jZWwgYW55IHBlbmRpbmcgc2VsZWN0aW9ucyBzbyBvbmx5IHRoZSBldmVudCBjbGljayBnb2VzIHRocm91Z2guXG4gICAgdGhpcy5jbGVhclNlbGVjdGlvbigpXG5cbiAgICBpZiAocG9wdXApIHtcbiAgICAgIGxldCBwb3NpdGlvbiA9IGdldFBvc2l0aW9uKGNlbGwsIHRoaXMuY29udGFpbmVyUmVmLmN1cnJlbnQpXG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBvdmVybGF5OiB7IGRhdGUsIGV2ZW50cywgcG9zaXRpb24sIHRhcmdldCB9LFxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKGRvU2hvd01vcmVEcmlsbERvd24pIHtcbiAgICAgIG5vdGlmeShvbkRyaWxsRG93biwgW2RhdGUsIGdldERyaWxsZG93blZpZXcoZGF0ZSkgfHwgdmlld3MuREFZXSlcbiAgICB9XG5cbiAgICBub3RpZnkob25TaG93TW9yZSwgW2V2ZW50cywgZGF0ZSwgc2xvdF0pXG4gIH1cblxuICBvdmVybGF5RGlzcGxheSA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIG92ZXJsYXk6IG51bGwsXG4gICAgfSlcbiAgfVxuXG4gIHNlbGVjdERhdGVzKHNsb3RJbmZvKSB7XG4gICAgbGV0IHNsb3RzID0gdGhpcy5fcGVuZGluZ1NlbGVjdGlvbi5zbGljZSgpXG5cbiAgICB0aGlzLl9wZW5kaW5nU2VsZWN0aW9uID0gW11cblxuICAgIHNsb3RzLnNvcnQoKGEsIGIpID0+ICthIC0gK2IpXG5cbiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKHNsb3RzWzBdKVxuICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKHNsb3RzW3Nsb3RzLmxlbmd0aCAtIDFdKVxuICAgIGVuZC5zZXREYXRlKHNsb3RzW3Nsb3RzLmxlbmd0aCAtIDFdLmdldERhdGUoKSArIDEpXG5cbiAgICBub3RpZnkodGhpcy5wcm9wcy5vblNlbGVjdFNsb3QsIHtcbiAgICAgIHNsb3RzLFxuICAgICAgc3RhcnQsXG4gICAgICBlbmQsXG4gICAgICBhY3Rpb246IHNsb3RJbmZvLmFjdGlvbixcbiAgICAgIGJvdW5kczogc2xvdEluZm8uYm91bmRzLFxuICAgICAgYm94OiBzbG90SW5mby5ib3gsXG4gICAgfSlcbiAgfVxuXG4gIGNsZWFyU2VsZWN0aW9uKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9zZWxlY3RUaW1lcilcbiAgICB0aGlzLl9wZW5kaW5nU2VsZWN0aW9uID0gW11cbiAgfVxufVxuXG5Nb250aFZpZXcucHJvcFR5cGVzID0ge1xuICBldmVudHM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBkYXRlOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcblxuICBtaW46IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICBtYXg6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuXG4gIHN0ZXA6IFByb3BUeXBlcy5udW1iZXIsXG4gIGdldE5vdzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcblxuICBzY3JvbGxUb1RpbWU6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICBlbmFibGVBdXRvU2Nyb2xsOiBQcm9wVHlwZXMuYm9vbCxcbiAgcnRsOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVzaXphYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgYWNjZXNzb3JzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNvbXBvbmVudHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZ2V0dGVyczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcblxuICBzZWxlY3RlZDogUHJvcFR5cGVzLm9iamVjdCxcbiAgc2VsZWN0YWJsZTogUHJvcFR5cGVzLm9uZU9mKFt0cnVlLCBmYWxzZSwgJ2lnbm9yZUV2ZW50cyddKSxcbiAgbG9uZ1ByZXNzVGhyZXNob2xkOiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIG9uTmF2aWdhdGU6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdFNsb3Q6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdEV2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Eb3VibGVDbGlja0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25LZXlQcmVzc0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TaG93TW9yZTogUHJvcFR5cGVzLmZ1bmMsXG4gIHNob3dBbGxFdmVudHM6IFByb3BUeXBlcy5ib29sLFxuICBkb1Nob3dNb3JlRHJpbGxEb3duOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25EcmlsbERvd246IFByb3BUeXBlcy5mdW5jLFxuICBnZXREcmlsbGRvd25WaWV3OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuXG4gIHBvcHVwOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGFuZGxlRHJhZ1N0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcblxuICBwb3B1cE9mZnNldDogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgUHJvcFR5cGVzLm51bWJlcixcbiAgICBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgeDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIHk6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgfSksXG4gIF0pLFxufVxuXG5Nb250aFZpZXcucmFuZ2UgPSAoZGF0ZSwgeyBsb2NhbGl6ZXIgfSkgPT4ge1xuICBsZXQgc3RhcnQgPSBsb2NhbGl6ZXIuZmlyc3RWaXNpYmxlRGF5KGRhdGUsIGxvY2FsaXplcilcbiAgbGV0IGVuZCA9IGxvY2FsaXplci5sYXN0VmlzaWJsZURheShkYXRlLCBsb2NhbGl6ZXIpXG4gIHJldHVybiB7IHN0YXJ0LCBlbmQgfVxufVxuXG5Nb250aFZpZXcubmF2aWdhdGUgPSAoZGF0ZSwgYWN0aW9uLCB7IGxvY2FsaXplciB9KSA9PiB7XG4gIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgY2FzZSBuYXZpZ2F0ZS5QUkVWSU9VUzpcbiAgICAgIHJldHVybiBsb2NhbGl6ZXIuYWRkKGRhdGUsIC0xLCAnbW9udGgnKVxuXG4gICAgY2FzZSBuYXZpZ2F0ZS5ORVhUOlxuICAgICAgcmV0dXJuIGxvY2FsaXplci5hZGQoZGF0ZSwgMSwgJ21vbnRoJylcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZGF0ZVxuICB9XG59XG5cbk1vbnRoVmlldy50aXRsZSA9IChkYXRlLCB7IGxvY2FsaXplciB9KSA9PlxuICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdtb250aEhlYWRlckZvcm1hdCcpXG5cbmV4cG9ydCBkZWZhdWx0IE1vbnRoVmlld1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBuYXZpZ2F0ZSB9IGZyb20gJy4vdXRpbHMvY29uc3RhbnRzJ1xuaW1wb3J0IHsgRGF5TGF5b3V0QWxnb3JpdGhtUHJvcFR5cGUgfSBmcm9tICcuL3V0aWxzL3Byb3BUeXBlcydcblxuaW1wb3J0IFRpbWVHcmlkIGZyb20gJy4vVGltZUdyaWQnXG5cbmNsYXNzIERheSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHJlbmRlcigpIHtcbiAgICAvKipcbiAgICAgKiBUaGlzIGFsbG93cyB1cyB0byBkZWZhdWx0IG1pbiwgbWF4LCBhbmQgc2Nyb2xsVG9UaW1lXG4gICAgICogdXNpbmcgb3VyIGxvY2FsaXplci4gVGhpcyBpcyBuZWNlc3NhcnkgdW50aWwgc3VjaCB0aW1lXG4gICAgICogYXMgVE9ETzogVGltZUdyaWQgaXMgY29udmVydGVkIHRvIGEgZnVuY3Rpb25hbCBjb21wb25lbnQuXG4gICAgICovXG4gICAgbGV0IHtcbiAgICAgIGRhdGUsXG4gICAgICBsb2NhbGl6ZXIsXG4gICAgICBtaW4gPSBsb2NhbGl6ZXIuc3RhcnRPZihuZXcgRGF0ZSgpLCAnZGF5JyksXG4gICAgICBtYXggPSBsb2NhbGl6ZXIuZW5kT2YobmV3IERhdGUoKSwgJ2RheScpLFxuICAgICAgc2Nyb2xsVG9UaW1lID0gbG9jYWxpemVyLnN0YXJ0T2YobmV3IERhdGUoKSwgJ2RheScpLFxuICAgICAgZW5hYmxlQXV0b1Njcm9sbCA9IHRydWUsXG4gICAgICAuLi5wcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgbGV0IHJhbmdlID0gRGF5LnJhbmdlKGRhdGUsIHsgbG9jYWxpemVyOiBsb2NhbGl6ZXIgfSlcblxuICAgIHJldHVybiAoXG4gICAgICA8VGltZUdyaWRcbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgICByYW5nZT17cmFuZ2V9XG4gICAgICAgIGV2ZW50T2Zmc2V0PXsxMH1cbiAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgIG1pbj17bWlufVxuICAgICAgICBtYXg9e21heH1cbiAgICAgICAgc2Nyb2xsVG9UaW1lPXtzY3JvbGxUb1RpbWV9XG4gICAgICAgIGVuYWJsZUF1dG9TY3JvbGw9e2VuYWJsZUF1dG9TY3JvbGx9XG4gICAgICAvPlxuICAgIClcbiAgfVxufVxuXG5EYXkucHJvcFR5cGVzID0ge1xuICBkYXRlOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLFxuXG4gIGV2ZW50czogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGJhY2tncm91bmRFdmVudHM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICByZXNvdXJjZXM6IFByb3BUeXBlcy5hcnJheSxcblxuICBzdGVwOiBQcm9wVHlwZXMubnVtYmVyLFxuICB0aW1lc2xvdHM6IFByb3BUeXBlcy5udW1iZXIsXG4gIHJhbmdlOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSksXG4gIG1pbjogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG4gIG1heDogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG4gIGdldE5vdzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcblxuICBzY3JvbGxUb1RpbWU6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICBlbmFibGVBdXRvU2Nyb2xsOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2hvd011bHRpRGF5VGltZXM6IFByb3BUeXBlcy5ib29sLFxuXG4gIHJ0bDogUHJvcFR5cGVzLmJvb2wsXG4gIHJlc2l6YWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIGFjY2Vzc29yczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjb21wb25lbnRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGdldHRlcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG5cbiAgYWxsRGF5TWF4Um93czogUHJvcFR5cGVzLm51bWJlcixcblxuICBzZWxlY3RlZDogUHJvcFR5cGVzLm9iamVjdCxcbiAgc2VsZWN0YWJsZTogUHJvcFR5cGVzLm9uZU9mKFt0cnVlLCBmYWxzZSwgJ2lnbm9yZUV2ZW50cyddKSxcbiAgbG9uZ1ByZXNzVGhyZXNob2xkOiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIG9uTmF2aWdhdGU6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdFNsb3Q6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdEVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VsZWN0U3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdEV2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Eb3VibGVDbGlja0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25LZXlQcmVzc0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TaG93TW9yZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRHJpbGxEb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgZ2V0RHJpbGxkb3duVmlldzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcblxuICBkYXlMYXlvdXRBbGdvcml0aG06IERheUxheW91dEFsZ29yaXRobVByb3BUeXBlLFxuXG4gIHNob3dBbGxFdmVudHM6IFByb3BUeXBlcy5ib29sLFxuICBkb1Nob3dNb3JlRHJpbGxEb3duOiBQcm9wVHlwZXMuYm9vbCxcblxuICBwb3B1cDogUHJvcFR5cGVzLmJvb2wsXG4gIGhhbmRsZURyYWdTdGFydDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgcG9wdXBPZmZzZXQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5udW1iZXIsXG4gICAgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHg6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICB5OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIH0pLFxuICBdKSxcbn1cblxuRGF5LnJhbmdlID0gKGRhdGUsIHsgbG9jYWxpemVyIH0pID0+IHtcbiAgcmV0dXJuIFtsb2NhbGl6ZXIuc3RhcnRPZihkYXRlLCAnZGF5JyldXG59XG5cbkRheS5uYXZpZ2F0ZSA9IChkYXRlLCBhY3Rpb24sIHsgbG9jYWxpemVyIH0pID0+IHtcbiAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICBjYXNlIG5hdmlnYXRlLlBSRVZJT1VTOlxuICAgICAgcmV0dXJuIGxvY2FsaXplci5hZGQoZGF0ZSwgLTEsICdkYXknKVxuXG4gICAgY2FzZSBuYXZpZ2F0ZS5ORVhUOlxuICAgICAgcmV0dXJuIGxvY2FsaXplci5hZGQoZGF0ZSwgMSwgJ2RheScpXG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRhdGVcbiAgfVxufVxuXG5EYXkudGl0bGUgPSAoZGF0ZSwgeyBsb2NhbGl6ZXIgfSkgPT4gbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnZGF5SGVhZGVyRm9ybWF0JylcblxuZXhwb3J0IGRlZmF1bHQgRGF5XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IG5hdmlnYXRlIH0gZnJvbSAnLi91dGlscy9jb25zdGFudHMnXG5pbXBvcnQgeyBEYXlMYXlvdXRBbGdvcml0aG1Qcm9wVHlwZSB9IGZyb20gJy4vdXRpbHMvcHJvcFR5cGVzJ1xuXG5pbXBvcnQgVGltZUdyaWQgZnJvbSAnLi9UaW1lR3JpZCdcblxuY2xhc3MgV2VlayBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHJlbmRlcigpIHtcbiAgICAvKipcbiAgICAgKiBUaGlzIGFsbG93cyB1cyB0byBkZWZhdWx0IG1pbiwgbWF4LCBhbmQgc2Nyb2xsVG9UaW1lXG4gICAgICogdXNpbmcgb3VyIGxvY2FsaXplci4gVGhpcyBpcyBuZWNlc3NhcnkgdW50aWwgc3VjaCB0aW1lXG4gICAgICogYXMgVGltZUdyaWQgaXMgY29udmVydGVkIHRvIGEgZnVuY3Rpb25hbCBjb21wb25lbnQuXG4gICAgICovXG4gICAgbGV0IHtcbiAgICAgIGRhdGUsXG4gICAgICBsb2NhbGl6ZXIsXG4gICAgICBtaW4gPSBsb2NhbGl6ZXIuc3RhcnRPZihuZXcgRGF0ZSgpLCAnZGF5JyksXG4gICAgICBtYXggPSBsb2NhbGl6ZXIuZW5kT2YobmV3IERhdGUoKSwgJ2RheScpLFxuICAgICAgc2Nyb2xsVG9UaW1lID0gbG9jYWxpemVyLnN0YXJ0T2YobmV3IERhdGUoKSwgJ2RheScpLFxuICAgICAgZW5hYmxlQXV0b1Njcm9sbCA9IHRydWUsXG4gICAgICAuLi5wcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgbGV0IHJhbmdlID0gV2Vlay5yYW5nZShkYXRlLCB0aGlzLnByb3BzKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxUaW1lR3JpZFxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIHJhbmdlPXtyYW5nZX1cbiAgICAgICAgZXZlbnRPZmZzZXQ9ezE1fVxuICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgbWluPXttaW59XG4gICAgICAgIG1heD17bWF4fVxuICAgICAgICBzY3JvbGxUb1RpbWU9e3Njcm9sbFRvVGltZX1cbiAgICAgICAgZW5hYmxlQXV0b1Njcm9sbD17ZW5hYmxlQXV0b1Njcm9sbH1cbiAgICAgIC8+XG4gICAgKVxuICB9XG59XG5cbldlZWsucHJvcFR5cGVzID0ge1xuICBkYXRlOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLFxuXG4gIGV2ZW50czogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGJhY2tncm91bmRFdmVudHM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICByZXNvdXJjZXM6IFByb3BUeXBlcy5hcnJheSxcblxuICBzdGVwOiBQcm9wVHlwZXMubnVtYmVyLFxuICB0aW1lc2xvdHM6IFByb3BUeXBlcy5udW1iZXIsXG4gIHJhbmdlOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSksXG4gIG1pbjogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG4gIG1heDogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG4gIGdldE5vdzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcblxuICBzY3JvbGxUb1RpbWU6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICBlbmFibGVBdXRvU2Nyb2xsOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2hvd011bHRpRGF5VGltZXM6IFByb3BUeXBlcy5ib29sLFxuXG4gIHJ0bDogUHJvcFR5cGVzLmJvb2wsXG4gIHJlc2l6YWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIGFjY2Vzc29yczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjb21wb25lbnRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGdldHRlcnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG5cbiAgYWxsRGF5TWF4Um93czogUHJvcFR5cGVzLm51bWJlcixcblxuICBzZWxlY3RlZDogUHJvcFR5cGVzLm9iamVjdCxcbiAgc2VsZWN0YWJsZTogUHJvcFR5cGVzLm9uZU9mKFt0cnVlLCBmYWxzZSwgJ2lnbm9yZUV2ZW50cyddKSxcbiAgbG9uZ1ByZXNzVGhyZXNob2xkOiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIG9uTmF2aWdhdGU6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdFNsb3Q6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdEVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VsZWN0U3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdEV2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Eb3VibGVDbGlja0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25LZXlQcmVzc0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TaG93TW9yZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRHJpbGxEb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgZ2V0RHJpbGxkb3duVmlldzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcblxuICBkYXlMYXlvdXRBbGdvcml0aG06IERheUxheW91dEFsZ29yaXRobVByb3BUeXBlLFxuXG4gIHNob3dBbGxFdmVudHM6IFByb3BUeXBlcy5ib29sLFxuICBkb1Nob3dNb3JlRHJpbGxEb3duOiBQcm9wVHlwZXMuYm9vbCxcblxuICBwb3B1cDogUHJvcFR5cGVzLmJvb2wsXG4gIGhhbmRsZURyYWdTdGFydDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgcG9wdXBPZmZzZXQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5udW1iZXIsXG4gICAgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHg6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICB5OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIH0pLFxuICBdKSxcbn1cblxuV2Vlay5kZWZhdWx0UHJvcHMgPSBUaW1lR3JpZC5kZWZhdWx0UHJvcHNcblxuV2Vlay5uYXZpZ2F0ZSA9IChkYXRlLCBhY3Rpb24sIHsgbG9jYWxpemVyIH0pID0+IHtcbiAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICBjYXNlIG5hdmlnYXRlLlBSRVZJT1VTOlxuICAgICAgcmV0dXJuIGxvY2FsaXplci5hZGQoZGF0ZSwgLTEsICd3ZWVrJylcblxuICAgIGNhc2UgbmF2aWdhdGUuTkVYVDpcbiAgICAgIHJldHVybiBsb2NhbGl6ZXIuYWRkKGRhdGUsIDEsICd3ZWVrJylcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZGF0ZVxuICB9XG59XG5cbldlZWsucmFuZ2UgPSAoZGF0ZSwgeyBsb2NhbGl6ZXIgfSkgPT4ge1xuICBsZXQgZmlyc3RPZldlZWsgPSBsb2NhbGl6ZXIuc3RhcnRPZldlZWsoKVxuICBsZXQgc3RhcnQgPSBsb2NhbGl6ZXIuc3RhcnRPZihkYXRlLCAnd2VlaycsIGZpcnN0T2ZXZWVrKVxuICBsZXQgZW5kID0gbG9jYWxpemVyLmVuZE9mKGRhdGUsICd3ZWVrJywgZmlyc3RPZldlZWspXG5cbiAgcmV0dXJuIGxvY2FsaXplci5yYW5nZShzdGFydCwgZW5kKVxufVxuXG5XZWVrLnRpdGxlID0gKGRhdGUsIHsgbG9jYWxpemVyIH0pID0+IHtcbiAgbGV0IFtzdGFydCwgLi4ucmVzdF0gPSBXZWVrLnJhbmdlKGRhdGUsIHsgbG9jYWxpemVyIH0pXG4gIHJldHVybiBsb2NhbGl6ZXIuZm9ybWF0KHsgc3RhcnQsIGVuZDogcmVzdC5wb3AoKSB9LCAnZGF5UmFuZ2VIZWFkZXJGb3JtYXQnKVxufVxuXG5leHBvcnQgZGVmYXVsdCBXZWVrXG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCBXZWVrIGZyb20gJy4vV2VlaydcbmltcG9ydCBUaW1lR3JpZCBmcm9tICcuL1RpbWVHcmlkJ1xuXG5mdW5jdGlvbiB3b3JrV2Vla1JhbmdlKGRhdGUsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIFdlZWsucmFuZ2UoZGF0ZSwgb3B0aW9ucykuZmlsdGVyKFxuICAgIChkKSA9PiBbNiwgMF0uaW5kZXhPZihkLmdldERheSgpKSA9PT0gLTFcbiAgKVxufVxuXG5jbGFzcyBXb3JrV2VlayBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHJlbmRlcigpIHtcbiAgICAvKipcbiAgICAgKiBUaGlzIGFsbG93cyB1cyB0byBkZWZhdWx0IG1pbiwgbWF4LCBhbmQgc2Nyb2xsVG9UaW1lXG4gICAgICogdXNpbmcgb3VyIGxvY2FsaXplci4gVGhpcyBpcyBuZWNlc3NhcnkgdW50aWwgc3VjaCB0aW1lXG4gICAgICogYXMgVGltZUdyaWQgaXMgY29udmVydGVkIHRvIGEgZnVuY3Rpb25hbCBjb21wb25lbnQuXG4gICAgICovXG4gICAgbGV0IHtcbiAgICAgIGRhdGUsXG4gICAgICBsb2NhbGl6ZXIsXG4gICAgICBtaW4gPSBsb2NhbGl6ZXIuc3RhcnRPZihuZXcgRGF0ZSgpLCAnZGF5JyksXG4gICAgICBtYXggPSBsb2NhbGl6ZXIuZW5kT2YobmV3IERhdGUoKSwgJ2RheScpLFxuICAgICAgc2Nyb2xsVG9UaW1lID0gbG9jYWxpemVyLnN0YXJ0T2YobmV3IERhdGUoKSwgJ2RheScpLFxuICAgICAgZW5hYmxlQXV0b1Njcm9sbCA9IHRydWUsXG4gICAgICAuLi5wcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgbGV0IHJhbmdlID0gd29ya1dlZWtSYW5nZShkYXRlLCB0aGlzLnByb3BzKVxuICAgIHJldHVybiAoXG4gICAgICA8VGltZUdyaWRcbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgICByYW5nZT17cmFuZ2V9XG4gICAgICAgIGV2ZW50T2Zmc2V0PXsxNX1cbiAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgIG1pbj17bWlufVxuICAgICAgICBtYXg9e21heH1cbiAgICAgICAgc2Nyb2xsVG9UaW1lPXtzY3JvbGxUb1RpbWV9XG4gICAgICAgIGVuYWJsZUF1dG9TY3JvbGw9e2VuYWJsZUF1dG9TY3JvbGx9XG4gICAgICAvPlxuICAgIClcbiAgfVxufVxuXG5Xb3JrV2Vlay5wcm9wVHlwZXMgPSB7XG4gIGRhdGU6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLmlzUmVxdWlyZWQsXG4gIGxvY2FsaXplcjogUHJvcFR5cGVzLmFueSxcbiAgbWluOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcbiAgbWF4OiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcbiAgc2Nyb2xsVG9UaW1lOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKSxcbiAgZW5hYmxlQXV0b1Njcm9sbDogUHJvcFR5cGVzLmJvb2wsXG59XG5cbldvcmtXZWVrLmRlZmF1bHRQcm9wcyA9IFRpbWVHcmlkLmRlZmF1bHRQcm9wc1xuXG5Xb3JrV2Vlay5yYW5nZSA9IHdvcmtXZWVrUmFuZ2VcblxuV29ya1dlZWsubmF2aWdhdGUgPSBXZWVrLm5hdmlnYXRlXG5cbldvcmtXZWVrLnRpdGxlID0gKGRhdGUsIHsgbG9jYWxpemVyIH0pID0+IHtcbiAgbGV0IFtzdGFydCwgLi4ucmVzdF0gPSB3b3JrV2Vla1JhbmdlKGRhdGUsIHsgbG9jYWxpemVyIH0pXG5cbiAgcmV0dXJuIGxvY2FsaXplci5mb3JtYXQoeyBzdGFydCwgZW5kOiByZXN0LnBvcCgpIH0sICdkYXlSYW5nZUhlYWRlckZvcm1hdCcpXG59XG5cbmV4cG9ydCBkZWZhdWx0IFdvcmtXZWVrXG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBhZGRDbGFzcyBmcm9tICdkb20taGVscGVycy9hZGRDbGFzcydcbmltcG9ydCByZW1vdmVDbGFzcyBmcm9tICdkb20taGVscGVycy9yZW1vdmVDbGFzcydcbmltcG9ydCBnZXRXaWR0aCBmcm9tICdkb20taGVscGVycy93aWR0aCdcbmltcG9ydCBzY3JvbGxiYXJTaXplIGZyb20gJ2RvbS1oZWxwZXJzL3Njcm9sbGJhclNpemUnXG5cbmltcG9ydCB7IG5hdmlnYXRlIH0gZnJvbSAnLi91dGlscy9jb25zdGFudHMnXG5pbXBvcnQgeyBpblJhbmdlIH0gZnJvbSAnLi91dGlscy9ldmVudExldmVscydcbmltcG9ydCB7IGlzU2VsZWN0ZWQgfSBmcm9tICcuL3V0aWxzL3NlbGVjdGlvbidcblxuY29uc3QgREVGQVVMVF9MRU5HVEggPSAzMDtcbmZ1bmN0aW9uIEFnZW5kYSh7XG4gIGFjY2Vzc29ycyxcbiAgY29tcG9uZW50cyxcbiAgZGF0ZSxcbiAgZXZlbnRzLFxuICBnZXR0ZXJzLFxuICBsZW5ndGggPSBERUZBVUxUX0xFTkdUSCxcbiAgbG9jYWxpemVyLFxuICBvbkRvdWJsZUNsaWNrRXZlbnQsXG4gIG9uU2VsZWN0RXZlbnQsXG4gIHNlbGVjdGVkLFxufSkge1xuICBjb25zdCBoZWFkZXJSZWYgPSB1c2VSZWYobnVsbClcbiAgY29uc3QgZGF0ZUNvbFJlZiA9IHVzZVJlZihudWxsKVxuICBjb25zdCB0aW1lQ29sUmVmID0gdXNlUmVmKG51bGwpXG4gIGNvbnN0IGNvbnRlbnRSZWYgPSB1c2VSZWYobnVsbClcbiAgY29uc3QgdGJvZHlSZWYgPSB1c2VSZWYobnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIF9hZGp1c3RIZWFkZXIoKVxuICB9KVxuXG4gIGNvbnN0IHJlbmRlckRheSA9IChkYXksIGV2ZW50cywgZGF5S2V5KSA9PiB7XG4gICAgY29uc3QgeyBldmVudDogRXZlbnQsIGRhdGU6IEFnZW5kYURhdGUgfSA9IGNvbXBvbmVudHNcblxuICAgIGV2ZW50cyA9IGV2ZW50cy5maWx0ZXIoKGUpID0+XG4gICAgICBpblJhbmdlKFxuICAgICAgICBlLFxuICAgICAgICBsb2NhbGl6ZXIuc3RhcnRPZihkYXksICdkYXknKSxcbiAgICAgICAgbG9jYWxpemVyLmVuZE9mKGRheSwgJ2RheScpLFxuICAgICAgICBhY2Nlc3NvcnMsXG4gICAgICAgIGxvY2FsaXplclxuICAgICAgKVxuICAgIClcblxuICAgIHJldHVybiBldmVudHMubWFwKChldmVudCwgaWR4KSA9PiB7XG4gICAgICBsZXQgdGl0bGUgPSBhY2Nlc3NvcnMudGl0bGUoZXZlbnQpXG4gICAgICBsZXQgZW5kID0gYWNjZXNzb3JzLmVuZChldmVudClcbiAgICAgIGxldCBzdGFydCA9IGFjY2Vzc29ycy5zdGFydChldmVudClcblxuICAgICAgY29uc3QgdXNlclByb3BzID0gZ2V0dGVycy5ldmVudFByb3AoXG4gICAgICAgIGV2ZW50LFxuICAgICAgICBzdGFydCxcbiAgICAgICAgZW5kLFxuICAgICAgICBpc1NlbGVjdGVkKGV2ZW50LCBzZWxlY3RlZClcbiAgICAgIClcblxuICAgICAgbGV0IGRhdGVMYWJlbCA9IGlkeCA9PT0gMCAmJiBsb2NhbGl6ZXIuZm9ybWF0KGRheSwgJ2FnZW5kYURhdGVGb3JtYXQnKVxuICAgICAgbGV0IGZpcnN0ID1cbiAgICAgICAgaWR4ID09PSAwID8gKFxuICAgICAgICAgIDx0ZCByb3dTcGFuPXtldmVudHMubGVuZ3RofSBjbGFzc05hbWU9XCJyYmMtYWdlbmRhLWRhdGUtY2VsbFwiPlxuICAgICAgICAgICAge0FnZW5kYURhdGUgPyAoXG4gICAgICAgICAgICAgIDxBZ2VuZGFEYXRlIGRheT17ZGF5fSBsYWJlbD17ZGF0ZUxhYmVsfSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgZGF0ZUxhYmVsXG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8dHJcbiAgICAgICAgICBrZXk9e2RheUtleSArICdfJyArIGlkeH1cbiAgICAgICAgICBjbGFzc05hbWU9e3VzZXJQcm9wcy5jbGFzc05hbWV9XG4gICAgICAgICAgc3R5bGU9e3VzZXJQcm9wcy5zdHlsZX1cbiAgICAgICAgPlxuICAgICAgICAgIHtmaXJzdH1cbiAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwicmJjLWFnZW5kYS10aW1lLWNlbGxcIj57dGltZVJhbmdlTGFiZWwoZGF5LCBldmVudCl9PC90ZD5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInJiYy1hZ2VuZGEtZXZlbnQtY2VsbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25TZWxlY3RFdmVudCAmJiBvblNlbGVjdEV2ZW50KGV2ZW50LCBlKX1cbiAgICAgICAgICAgIG9uRG91YmxlQ2xpY2s9eyhlKSA9PlxuICAgICAgICAgICAgICBvbkRvdWJsZUNsaWNrRXZlbnQgJiYgb25Eb3VibGVDbGlja0V2ZW50KGV2ZW50LCBlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtFdmVudCA/IDxFdmVudCBldmVudD17ZXZlbnR9IHRpdGxlPXt0aXRsZX0gLz4gOiB0aXRsZX1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgKVxuICAgIH0sIFtdKVxuICB9XG5cbiAgY29uc3QgdGltZVJhbmdlTGFiZWwgPSAoZGF5LCBldmVudCkgPT4ge1xuICAgIGxldCBsYWJlbENsYXNzID0gJycsXG4gICAgICBUaW1lQ29tcG9uZW50ID0gY29tcG9uZW50cy50aW1lLFxuICAgICAgbGFiZWwgPSBsb2NhbGl6ZXIubWVzc2FnZXMuYWxsRGF5XG5cbiAgICBsZXQgZW5kID0gYWNjZXNzb3JzLmVuZChldmVudClcbiAgICBsZXQgc3RhcnQgPSBhY2Nlc3NvcnMuc3RhcnQoZXZlbnQpXG5cbiAgICBpZiAoIWFjY2Vzc29ycy5hbGxEYXkoZXZlbnQpKSB7XG4gICAgICBpZiAobG9jYWxpemVyLmVxKHN0YXJ0LCBlbmQpKSB7XG4gICAgICAgIGxhYmVsID0gbG9jYWxpemVyLmZvcm1hdChzdGFydCwgJ2FnZW5kYVRpbWVGb3JtYXQnKVxuICAgICAgfSBlbHNlIGlmIChsb2NhbGl6ZXIuaXNTYW1lRGF0ZShzdGFydCwgZW5kKSkge1xuICAgICAgICBsYWJlbCA9IGxvY2FsaXplci5mb3JtYXQoeyBzdGFydCwgZW5kIH0sICdhZ2VuZGFUaW1lUmFuZ2VGb3JtYXQnKVxuICAgICAgfSBlbHNlIGlmIChsb2NhbGl6ZXIuaXNTYW1lRGF0ZShkYXksIHN0YXJ0KSkge1xuICAgICAgICBsYWJlbCA9IGxvY2FsaXplci5mb3JtYXQoc3RhcnQsICdhZ2VuZGFUaW1lRm9ybWF0JylcbiAgICAgIH0gZWxzZSBpZiAobG9jYWxpemVyLmlzU2FtZURhdGUoZGF5LCBlbmQpKSB7XG4gICAgICAgIGxhYmVsID0gbG9jYWxpemVyLmZvcm1hdChlbmQsICdhZ2VuZGFUaW1lRm9ybWF0JylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9jYWxpemVyLmd0KGRheSwgc3RhcnQsICdkYXknKSkgbGFiZWxDbGFzcyA9ICdyYmMtY29udGludWVzLXByaW9yJ1xuICAgIGlmIChsb2NhbGl6ZXIubHQoZGF5LCBlbmQsICdkYXknKSkgbGFiZWxDbGFzcyArPSAnIHJiYy1jb250aW51ZXMtYWZ0ZXInXG5cbiAgICByZXR1cm4gKFxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtsYWJlbENsYXNzLnRyaW0oKX0+XG4gICAgICAgIHtUaW1lQ29tcG9uZW50ID8gKFxuICAgICAgICAgIDxUaW1lQ29tcG9uZW50IGV2ZW50PXtldmVudH0gZGF5PXtkYXl9IGxhYmVsPXtsYWJlbH0gLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBsYWJlbFxuICAgICAgICApfVxuICAgICAgPC9zcGFuPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IF9hZGp1c3RIZWFkZXIgPSAoKSA9PiB7XG4gICAgaWYgKCF0Ym9keVJlZi5jdXJyZW50KSByZXR1cm5cblxuICAgIGxldCBoZWFkZXIgPSBoZWFkZXJSZWYuY3VycmVudFxuICAgIGxldCBmaXJzdFJvdyA9IHRib2R5UmVmLmN1cnJlbnQuZmlyc3RDaGlsZFxuXG4gICAgaWYgKCFmaXJzdFJvdykgcmV0dXJuXG5cbiAgICBsZXQgaXNPdmVyZmxvd2luZyA9XG4gICAgICBjb250ZW50UmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0ID4gY29udGVudFJlZi5jdXJyZW50LmNsaWVudEhlaWdodFxuXG4gICAgbGV0IF93aWR0aHMgPSBbXVxuICAgIGxldCB3aWR0aHMgPSBfd2lkdGhzXG5cbiAgICBfd2lkdGhzID0gW2dldFdpZHRoKGZpcnN0Um93LmNoaWxkcmVuWzBdKSwgZ2V0V2lkdGgoZmlyc3RSb3cuY2hpbGRyZW5bMV0pXVxuXG4gICAgaWYgKHdpZHRoc1swXSAhPT0gX3dpZHRoc1swXSB8fCB3aWR0aHNbMV0gIT09IF93aWR0aHNbMV0pIHtcbiAgICAgIGRhdGVDb2xSZWYuY3VycmVudC5zdHlsZS53aWR0aCA9IF93aWR0aHNbMF0gKyAncHgnXG4gICAgICB0aW1lQ29sUmVmLmN1cnJlbnQuc3R5bGUud2lkdGggPSBfd2lkdGhzWzFdICsgJ3B4J1xuICAgIH1cblxuICAgIGlmIChpc092ZXJmbG93aW5nKSB7XG4gICAgICBhZGRDbGFzcyhoZWFkZXIsICdyYmMtaGVhZGVyLW92ZXJmbG93aW5nJylcbiAgICAgIGhlYWRlci5zdHlsZS5tYXJnaW5SaWdodCA9IHNjcm9sbGJhclNpemUoKSArICdweCdcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlQ2xhc3MoaGVhZGVyLCAncmJjLWhlYWRlci1vdmVyZmxvd2luZycpXG4gICAgfVxuICB9XG5cbiAgbGV0IHsgbWVzc2FnZXMgfSA9IGxvY2FsaXplclxuICBsZXQgZW5kID0gbG9jYWxpemVyLmFkZChkYXRlLCBsZW5ndGgsICdkYXknKVxuXG4gIGxldCByYW5nZSA9IGxvY2FsaXplci5yYW5nZShkYXRlLCBlbmQsICdkYXknKVxuXG4gIGV2ZW50cyA9IGV2ZW50cy5maWx0ZXIoKGV2ZW50KSA9PlxuICAgIGluUmFuZ2UoXG4gICAgICBldmVudCxcbiAgICAgIGxvY2FsaXplci5zdGFydE9mKGRhdGUsICdkYXknKSxcbiAgICAgIGxvY2FsaXplci5lbmRPZihlbmQsICdkYXknKSxcbiAgICAgIGFjY2Vzc29ycyxcbiAgICAgIGxvY2FsaXplclxuICAgIClcbiAgKVxuXG4gIGV2ZW50cy5zb3J0KChhLCBiKSA9PiArYWNjZXNzb3JzLnN0YXJ0KGEpIC0gK2FjY2Vzc29ycy5zdGFydChiKSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLWFnZW5kYS12aWV3XCI+XG4gICAgICB7ZXZlbnRzLmxlbmd0aCAhPT0gMCA/IChcbiAgICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICAgIDx0YWJsZSByZWY9e2hlYWRlclJlZn0gY2xhc3NOYW1lPVwicmJjLWFnZW5kYS10YWJsZVwiPlxuICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzTmFtZT1cInJiYy1oZWFkZXJcIiByZWY9e2RhdGVDb2xSZWZ9PlxuICAgICAgICAgICAgICAgICAge21lc3NhZ2VzLmRhdGV9XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICA8dGggY2xhc3NOYW1lPVwicmJjLWhlYWRlclwiIHJlZj17dGltZUNvbFJlZn0+XG4gICAgICAgICAgICAgICAgICB7bWVzc2FnZXMudGltZX1cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0aCBjbGFzc05hbWU9XCJyYmMtaGVhZGVyXCI+e21lc3NhZ2VzLmV2ZW50fTwvdGg+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYmMtYWdlbmRhLWNvbnRlbnRcIiByZWY9e2NvbnRlbnRSZWZ9PlxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzTmFtZT1cInJiYy1hZ2VuZGEtdGFibGVcIj5cbiAgICAgICAgICAgICAgPHRib2R5IHJlZj17dGJvZHlSZWZ9PlxuICAgICAgICAgICAgICAgIHtyYW5nZS5tYXAoKGRheSwgaWR4KSA9PiByZW5kZXJEYXkoZGF5LCBldmVudHMsIGlkeCkpfVxuICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInJiYy1hZ2VuZGEtZW1wdHlcIj57bWVzc2FnZXMubm9FdmVudHNJblJhbmdlfTwvc3Bhbj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gIClcbn1cblxuQWdlbmRhLnByb3BUeXBlcyA9IHtcbiAgYWNjZXNzb3JzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNvbXBvbmVudHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZGF0ZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG4gIGV2ZW50czogUHJvcFR5cGVzLmFycmF5LFxuICBnZXR0ZXJzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGxlbmd0aDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgb25TZWxlY3RFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRG91YmxlQ2xpY2tFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gIHNlbGVjdGVkOiBQcm9wVHlwZXMub2JqZWN0LFxufVxuXG5BZ2VuZGEucmFuZ2UgPSAoc3RhcnQsIHsgbGVuZ3RoID0gREVGQVVMVF9MRU5HVEgsIGxvY2FsaXplciB9KSA9PiB7XG4gIGxldCBlbmQgPSBsb2NhbGl6ZXIuYWRkKHN0YXJ0LCBsZW5ndGgsICdkYXknKVxuICByZXR1cm4geyBzdGFydCwgZW5kIH1cbn1cblxuQWdlbmRhLm5hdmlnYXRlID0gKFxuICBkYXRlLFxuICBhY3Rpb24sXG4gIHsgbGVuZ3RoID0gREVGQVVMVF9MRU5HVEgsIGxvY2FsaXplciB9XG4pID0+IHtcbiAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICBjYXNlIG5hdmlnYXRlLlBSRVZJT1VTOlxuICAgICAgcmV0dXJuIGxvY2FsaXplci5hZGQoZGF0ZSwgLWxlbmd0aCwgJ2RheScpXG5cbiAgICBjYXNlIG5hdmlnYXRlLk5FWFQ6XG4gICAgICByZXR1cm4gbG9jYWxpemVyLmFkZChkYXRlLCBsZW5ndGgsICdkYXknKVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkYXRlXG4gIH1cbn1cblxuQWdlbmRhLnRpdGxlID0gKHN0YXJ0LCB7IGxlbmd0aCA9IERFRkFVTFRfTEVOR1RILCBsb2NhbGl6ZXIgfSkgPT4ge1xuICBsZXQgZW5kID0gbG9jYWxpemVyLmFkZChzdGFydCwgbGVuZ3RoLCAnZGF5JylcbiAgcmV0dXJuIGxvY2FsaXplci5mb3JtYXQoeyBzdGFydCwgZW5kIH0sICdhZ2VuZGFIZWFkZXJGb3JtYXQnKVxufVxuXG5leHBvcnQgZGVmYXVsdCBBZ2VuZGFcbiIsImltcG9ydCB7IHZpZXdzIH0gZnJvbSAnLi91dGlscy9jb25zdGFudHMnXG5pbXBvcnQgTW9udGggZnJvbSAnLi9Nb250aCdcbmltcG9ydCBEYXkgZnJvbSAnLi9EYXknXG5pbXBvcnQgV2VlayBmcm9tICcuL1dlZWsnXG5pbXBvcnQgV29ya1dlZWsgZnJvbSAnLi9Xb3JrV2VlaydcbmltcG9ydCBBZ2VuZGEgZnJvbSAnLi9BZ2VuZGEnXG5cbmNvbnN0IFZJRVdTID0ge1xuICBbdmlld3MuTU9OVEhdOiBNb250aCxcbiAgW3ZpZXdzLldFRUtdOiBXZWVrLFxuICBbdmlld3MuV09SS19XRUVLXTogV29ya1dlZWssXG4gIFt2aWV3cy5EQVldOiBEYXksXG4gIFt2aWV3cy5BR0VOREFdOiBBZ2VuZGEsXG59XG5cbmV4cG9ydCBkZWZhdWx0IFZJRVdTXG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4J1xuaW1wb3J0IHsgbmF2aWdhdGUgfSBmcm9tICcuL3V0aWxzL2NvbnN0YW50cydcblxuY2xhc3MgVG9vbGJhciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHJlbmRlcigpIHtcbiAgICBsZXQge1xuICAgICAgbG9jYWxpemVyOiB7IG1lc3NhZ2VzIH0sXG4gICAgICBsYWJlbCxcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmJjLXRvb2xiYXJcIj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicmJjLWJ0bi1ncm91cFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgb25DbGljaz17dGhpcy5uYXZpZ2F0ZS5iaW5kKG51bGwsIG5hdmlnYXRlLlRPREFZKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bWVzc2FnZXMudG9kYXl9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm5hdmlnYXRlLmJpbmQobnVsbCwgbmF2aWdhdGUuUFJFVklPVVMpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHttZXNzYWdlcy5wcmV2aW91c31cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMubmF2aWdhdGUuYmluZChudWxsLCBuYXZpZ2F0ZS5ORVhUKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bWVzc2FnZXMubmV4dH1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInJiYy10b29sYmFyLWxhYmVsXCI+e2xhYmVsfTwvc3Bhbj5cblxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJyYmMtYnRuLWdyb3VwXCI+e3RoaXMudmlld05hbWVzR3JvdXAobWVzc2FnZXMpfTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIG5hdmlnYXRlID0gKGFjdGlvbikgPT4ge1xuICAgIHRoaXMucHJvcHMub25OYXZpZ2F0ZShhY3Rpb24pXG4gIH1cblxuICB2aWV3ID0gKHZpZXcpID0+IHtcbiAgICB0aGlzLnByb3BzLm9uVmlldyh2aWV3KVxuICB9XG5cbiAgdmlld05hbWVzR3JvdXAobWVzc2FnZXMpIHtcbiAgICBsZXQgdmlld05hbWVzID0gdGhpcy5wcm9wcy52aWV3c1xuICAgIGNvbnN0IHZpZXcgPSB0aGlzLnByb3BzLnZpZXdcblxuICAgIGlmICh2aWV3TmFtZXMubGVuZ3RoID4gMSkge1xuICAgICAgcmV0dXJuIHZpZXdOYW1lcy5tYXAoKG5hbWUpID0+IChcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGtleT17bmFtZX1cbiAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goeyAncmJjLWFjdGl2ZSc6IHZpZXcgPT09IG5hbWUgfSl9XG4gICAgICAgICAgb25DbGljaz17dGhpcy52aWV3LmJpbmQobnVsbCwgbmFtZSl9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVzc2FnZXNbbmFtZV19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgKSlcbiAgICB9XG4gIH1cbn1cblxuVG9vbGJhci5wcm9wVHlwZXMgPSB7XG4gIHZpZXc6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdmlld3M6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9uTmF2aWdhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uVmlldzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn1cblxuZXhwb3J0IGRlZmF1bHQgVG9vbGJhclxuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdW5jb250cm9sbGFibGUgfSBmcm9tICd1bmNvbnRyb2xsYWJsZSdcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnXG5pbXBvcnQge1xuICBhY2Nlc3NvcixcbiAgZGF0ZUZvcm1hdCxcbiAgZGF0ZVJhbmdlRm9ybWF0LFxuICBEYXlMYXlvdXRBbGdvcml0aG1Qcm9wVHlwZSxcbiAgdmlld3MgYXMgY29tcG9uZW50Vmlld3MsXG59IGZyb20gJy4vdXRpbHMvcHJvcFR5cGVzJ1xuXG5pbXBvcnQgeyBub3RpZnkgfSBmcm9tICcuL3V0aWxzL2hlbHBlcnMnXG5pbXBvcnQgeyBuYXZpZ2F0ZSwgdmlld3MgfSBmcm9tICcuL3V0aWxzL2NvbnN0YW50cydcbmltcG9ydCB7IG1lcmdlV2l0aERlZmF1bHRzIH0gZnJvbSAnLi9sb2NhbGl6ZXInXG5pbXBvcnQgbWVzc2FnZSBmcm9tICcuL3V0aWxzL21lc3NhZ2VzJ1xuaW1wb3J0IG1vdmVEYXRlIGZyb20gJy4vdXRpbHMvbW92ZSdcbmltcG9ydCBWSUVXUyBmcm9tICcuL1ZpZXdzJ1xuaW1wb3J0IFRvb2xiYXIgZnJvbSAnLi9Ub29sYmFyJ1xuaW1wb3J0IE5vb3BXcmFwcGVyIGZyb20gJy4vTm9vcFdyYXBwZXInXG5cbmltcG9ydCBvbWl0IGZyb20gJ2xvZGFzaC9vbWl0J1xuaW1wb3J0IGRlZmF1bHRzIGZyb20gJ2xvZGFzaC9kZWZhdWx0cydcbmltcG9ydCB0cmFuc2Zvcm0gZnJvbSAnbG9kYXNoL3RyYW5zZm9ybSdcbmltcG9ydCBtYXBWYWx1ZXMgZnJvbSAnbG9kYXNoL21hcFZhbHVlcydcbmltcG9ydCB7IHdyYXBBY2Nlc3NvciB9IGZyb20gJy4vdXRpbHMvYWNjZXNzb3JzJ1xuXG5mdW5jdGlvbiB2aWV3TmFtZXMoX3ZpZXdzKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KF92aWV3cykpIHtcbiAgICByZXR1cm4gX3ZpZXdzXG4gIH1cbiAgY29uc3Qgdmlld3MgPSBbXVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhfdmlld3MpKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB2aWV3cy5wdXNoKGtleSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZpZXdzXG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRWaWV3KHZpZXcsIHsgdmlld3M6IF92aWV3cyB9KSB7XG4gIGxldCBuYW1lcyA9IHZpZXdOYW1lcyhfdmlld3MpXG4gIHJldHVybiBuYW1lcy5pbmRleE9mKHZpZXcpICE9PSAtMVxufVxuXG5jbGFzcyBDYWxlbmRhciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgLyoqXG4gICAgICogVGhlIGxvY2FsaXplciB1c2VkIGZvciBmb3JtYXR0aW5nIGRhdGVzIGFuZCB0aW1lcyBhY2NvcmRpbmcgdG8gdGhlIGBmb3JtYXRgIGFuZCBgY3VsdHVyZWBcbiAgICAgKlxuICAgICAqIGdsb2JhbGl6ZVxuICAgICAqIGBgYGpzXG4gICAgICogaW1wb3J0IHtnbG9iYWxpemVMb2NhbGl6ZXJ9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbiAgICAgKiBpbXBvcnQgZ2xvYmFsaXplIGZyb20gJ2dsb2JhbGl6ZSdcbiAgICAgKlxuICAgICAqIGNvbnN0IGxvY2FsaXplciA9IGdsb2JhbGl6ZUxvY2FsaXplcihnbG9iYWxpemUpXG4gICAgICogYGBgXG4gICAgICogbW9tZW50XG4gICAgICogYGBqc1xuICAgICAqIGltcG9ydCB7bW9tZW50TG9jYWxpemVyfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG4gICAgICogaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG4gICAgICogLy8gYW5kLCBmb3Igb3B0aW9uYWwgdGltZSB6b25lIHN1cHBvcnRcbiAgICAgKiBpbXBvcnQgJ21vbWVudC10aW1lem9uZSdcbiAgICAgKlxuICAgICAqIG1vbWVudC50ei5zZXREZWZhdWx0KCdBbWVyaWNhL0xvc19BbmdlbGVzJylcbiAgICAgKiAvLyBlbmQgb3B0aW9uYWwgdGltZSB6b25lIHN1cHBvcnRcbiAgICAgKlxuICAgICAqIGNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBMdXhvblxuICAgICAqIGBgYGpzXG4gICAgICogaW1wb3J0IHtsdXhvbkxvY2FsaXplcn0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuICAgICAqIGltcG9ydCB7RGF0ZVRpbWUsIFNldHRpbmdzfSBmcm9tICdsdXhvbidcbiAgICAgKiAvLyBvbmx5IHVzZSBgU2V0dGluZ3NgIGlmIHlvdSByZXF1aXJlIG9wdGlvbmFsIHRpbWUgem9uZSBzdXBwb3J0XG4gICAgICogU2V0dGluZ3MuZGVmYXVsdFpvbmUgPSAnQW1lcmljYS9Mb3NfQW5nZWxlcydcbiAgICAgKiAvLyBlbmQgb3B0aW9uYWwgdGltZSB6b25lIHN1cHBvcnRcbiAgICAgKlxuICAgICAqIC8vIEx1eG9uIHVzZXMgdGhlIEludGwgQVBJLCB3aGljaCBjdXJyZW50bHkgZG9lcyBub3QgY29udGFpbiBgd2Vla0luZm9gXG4gICAgICogLy8gdG8gZGV0ZXJtaW5lIHdoaWNoIHdlZWtkYXkgaXMgdGhlIHN0YXJ0IG9mIHRoZSB3ZWVrIGJ5IGBjdWx0dXJlYC5cbiAgICAgKiAvLyBUaGUgYGx1eG9uTG9jYWxpemVyYCBkZWZhdWx0cyB0aGlzIHRvIFN1bmRheSwgd2hpY2ggZGlmZmVycyBmcm9tXG4gICAgICogLy8gdGhlIEx1eG9uIGRlZmF1bHQgb2YgTW9uZGF5LiBUaGUgbG9jYWxpemVyIHJlcXVpcmVzIHRoaXMgb3B0aW9uXG4gICAgICogLy8gdG8gY2hhbmdlIHRoZSBkaXNwbGF5LCBhbmQgdGhlIGRhdGUgbWF0aCBmb3IgZGV0ZXJtaW5pbmcgdGhlXG4gICAgICogLy8gc3RhcnQgb2YgYSB3ZWVrLiBMdXhvbiB1c2VzIG5vbi16ZXJvIGJhc2VkIHZhbHVlcyBmb3IgYHdlZWtkYXlgLlxuICAgICAqIGNvbnN0IGxvY2FsaXplciA9IGx1eG9uTG9jYWxpemVyKERhdGVUaW1lLCB7Zmlyc3REYXlPZldlZWs6IDd9KVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGxvY2FsaXplcjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuXG4gICAgLyoqXG4gICAgICogUHJvcHMgcGFzc2VkIHRvIG1haW4gY2FsZW5kYXIgYDxkaXY+YC5cbiAgICAgKlxuICAgICAqL1xuICAgIGVsZW1lbnRQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcblxuICAgIC8qKlxuICAgICAqIFRoZSBjdXJyZW50IGRhdGUgdmFsdWUgb2YgdGhlIGNhbGVuZGFyLiBEZXRlcm1pbmVzIHRoZSB2aXNpYmxlIHZpZXcgcmFuZ2UuXG4gICAgICogSWYgYGRhdGVgIGlzIG9taXR0ZWQgdGhlbiB0aGUgcmVzdWx0IG9mIGBnZXROb3dgIGlzIHVzZWQ7IG90aGVyd2lzZSB0aGVcbiAgICAgKiBjdXJyZW50IGRhdGUgaXMgdXNlZC5cbiAgICAgKlxuICAgICAqIEBjb250cm9sbGFibGUgb25OYXZpZ2F0ZVxuICAgICAqL1xuICAgIGRhdGU6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuXG4gICAgLyoqXG4gICAgICogVGhlIGN1cnJlbnQgdmlldyBvZiB0aGUgY2FsZW5kYXIuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnbW9udGgnXG4gICAgICogQGNvbnRyb2xsYWJsZSBvblZpZXdcbiAgICAgKi9cbiAgICB2aWV3OiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICogVGhlIGluaXRpYWwgdmlldyBzZXQgZm9yIHRoZSBDYWxlbmRhci5cbiAgICAgKiBAdHlwZSBDYWxlbmRhci5WaWV3cyAoJ21vbnRoJ3wnd2Vlayd8J3dvcmtfd2Vlayd8J2RheSd8J2FnZW5kYScpXG4gICAgICogQGRlZmF1bHQgJ21vbnRoJ1xuICAgICAqL1xuICAgIGRlZmF1bHRWaWV3OiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICogQW4gYXJyYXkgb2YgZXZlbnQgb2JqZWN0cyB0byBkaXNwbGF5IG9uIHRoZSBjYWxlbmRhci4gRXZlbnRzIG9iamVjdHNcbiAgICAgKiBjYW4gYmUgYW55IHNoYXBlLCBhcyBsb25nIGFzIHRoZSBDYWxlbmRhciBrbm93cyBob3cgdG8gcmV0cmlldmUgdGhlXG4gICAgICogZm9sbG93aW5nIGRldGFpbHMgb2YgdGhlIGV2ZW50OlxuICAgICAqXG4gICAgICogIC0gc3RhcnQgdGltZVxuICAgICAqICAtIGVuZCB0aW1lXG4gICAgICogIC0gdGl0bGVcbiAgICAgKiAgLSB3aGV0aGVyIGl0cyBhbiBcImFsbCBkYXlcIiBldmVudCBvciBub3RcbiAgICAgKiAgLSBhbnkgcmVzb3VyY2UgdGhlIGV2ZW50IG1heSBiZSByZWxhdGVkIHRvXG4gICAgICpcbiAgICAgKiBFYWNoIG9mIHRoZXNlIHByb3BlcnRpZXMgY2FuIGJlIGN1c3RvbWl6ZWQgb3IgZ2VuZXJhdGVkIGR5bmFtaWNhbGx5IGJ5XG4gICAgICogc2V0dGluZyB0aGUgdmFyaW91cyBcImFjY2Vzc29yXCIgcHJvcHMuIFdpdGhvdXQgYW55IGNvbmZpZ3VyYXRpb24gdGhlIGRlZmF1bHRcbiAgICAgKiBldmVudCBzaG91bGQgbG9vayBsaWtlOlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBFdmVudCB7XG4gICAgICogICB0aXRsZTogc3RyaW5nLFxuICAgICAqICAgc3RhcnQ6IERhdGUsXG4gICAgICogICBlbmQ6IERhdGUsXG4gICAgICogICBhbGxEYXk/OiBib29sZWFuXG4gICAgICogICByZXNvdXJjZT86IGFueSxcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgZXZlbnRzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub2JqZWN0KSxcblxuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIGJhY2tncm91bmQgZXZlbnQgb2JqZWN0cyB0byBkaXNwbGF5IG9uIHRoZSBjYWxlbmRhci4gQmFja2dyb3VuZFxuICAgICAqIEV2ZW50cyBiZWhhdmUgc2ltaWxhcmx5IHRvIEV2ZW50cyBidXQgYXJlIG5vdCBmYWN0b3JlZCBpbnRvIEV2ZW50IG92ZXJsYXAgbG9naWMsXG4gICAgICogYWxsb3dpbmcgdGhlbSB0byBzaXQgYmVoaW5kIGFueSBFdmVudHMgdGhhdCBtYXkgb2NjdXIgZHVyaW5nIHRoZSBzYW1lIHBlcmlvZC5cbiAgICAgKiBCYWNrZ3JvdW5kIEV2ZW50cyBvYmplY3RzIGNhbiBiZSBhbnkgc2hhcGUsIGFzIGxvbmcgYXMgdGhlIENhbGVuZGFyIGtub3dzIGhvdyB0b1xuICAgICAqIHJldHJpZXZlIHRoZSBmb2xsb3dpbmcgZGV0YWlscyBvZiB0aGUgZXZlbnQ6XG4gICAgICpcbiAgICAgKiAgLSBzdGFydCB0aW1lXG4gICAgICogIC0gZW5kIHRpbWVcbiAgICAgKlxuICAgICAqIEVhY2ggb2YgdGhlc2UgcHJvcGVydGllcyBjYW4gYmUgY3VzdG9taXplZCBvciBnZW5lcmF0ZWQgZHluYW1pY2FsbHkgYnlcbiAgICAgKiBzZXR0aW5nIHRoZSB2YXJpb3VzIFwiYWNjZXNzb3JcIiBwcm9wcy4gV2l0aG91dCBhbnkgY29uZmlndXJhdGlvbiB0aGUgZGVmYXVsdFxuICAgICAqIGV2ZW50IHNob3VsZCBsb29rIGxpa2U6XG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIEJhY2tncm91bmRFdmVudCB7XG4gICAgICogICBzdGFydDogRGF0ZSxcbiAgICAgKiAgIGVuZDogRGF0ZSxcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgYmFja2dyb3VuZEV2ZW50czogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9iamVjdCksXG5cbiAgICAvKipcbiAgICAgKiBBY2Nlc3NvciBmb3IgdGhlIGV2ZW50IHRpdGxlLCB1c2VkIHRvIGRpc3BsYXkgZXZlbnQgaW5mb3JtYXRpb24uIFNob3VsZFxuICAgICAqIHJlc29sdmUgdG8gYSBgcmVuZGVyYWJsZWAgdmFsdWUuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIHN0cmluZyB8IChldmVudDogT2JqZWN0KSA9PiBzdHJpbmdcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEB0eXBlIHsoZnVuY3xzdHJpbmcpfVxuICAgICAqL1xuICAgIHRpdGxlQWNjZXNzb3I6IGFjY2Vzc29yLFxuXG4gICAgLyoqXG4gICAgICogQWNjZXNzb3IgZm9yIHRoZSBldmVudCB0b29sdGlwLiBTaG91bGRcbiAgICAgKiByZXNvbHZlIHRvIGEgYHJlbmRlcmFibGVgIHZhbHVlLiBSZW1vdmVzIHRoZSB0b29sdGlwIGlmIG51bGwuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIHN0cmluZyB8IChldmVudDogT2JqZWN0KSA9PiBzdHJpbmdcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEB0eXBlIHsoZnVuY3xzdHJpbmcpfVxuICAgICAqL1xuICAgIHRvb2x0aXBBY2Nlc3NvcjogYWNjZXNzb3IsXG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGV2ZW50IHNob3VsZCBiZSBjb25zaWRlcmVkIGFuIFwiYWxsIGRheVwiIGV2ZW50IGFuZCBpZ25vcmUgdGltZS5cbiAgICAgKiBNdXN0IHJlc29sdmUgdG8gYSBgYm9vbGVhbmAgdmFsdWUuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIHN0cmluZyB8IChldmVudDogT2JqZWN0KSA9PiBib29sZWFuXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAdHlwZSB7KGZ1bmN8c3RyaW5nKX1cbiAgICAgKi9cbiAgICBhbGxEYXlBY2Nlc3NvcjogYWNjZXNzb3IsXG5cbiAgICAvKipcbiAgICAgKiBUaGUgc3RhcnQgZGF0ZS90aW1lIG9mIHRoZSBldmVudC4gTXVzdCByZXNvbHZlIHRvIGEgSmF2YVNjcmlwdCBgRGF0ZWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBzdHJpbmcgfCAoZXZlbnQ6IE9iamVjdCkgPT4gRGF0ZVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHR5cGUgeyhmdW5jfHN0cmluZyl9XG4gICAgICovXG4gICAgc3RhcnRBY2Nlc3NvcjogYWNjZXNzb3IsXG5cbiAgICAvKipcbiAgICAgKiBUaGUgZW5kIGRhdGUvdGltZSBvZiB0aGUgZXZlbnQuIE11c3QgcmVzb2x2ZSB0byBhIEphdmFTY3JpcHQgYERhdGVgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogc3RyaW5nIHwgKGV2ZW50OiBPYmplY3QpID0+IERhdGVcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEB0eXBlIHsoZnVuY3xzdHJpbmcpfVxuICAgICAqL1xuICAgIGVuZEFjY2Vzc29yOiBhY2Nlc3NvcixcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGlkIG9mIHRoZSBgcmVzb3VyY2VgIHRoYXQgdGhlIGV2ZW50IGlzIGEgbWVtYmVyIG9mLiBUaGlzXG4gICAgICogaWQgc2hvdWxkIG1hdGNoIGF0IGxlYXN0IG9uZSByZXNvdXJjZSBpbiB0aGUgYHJlc291cmNlc2AgYXJyYXkuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIHN0cmluZyB8IChldmVudDogT2JqZWN0KSA9PiBEYXRlXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAdHlwZSB7KGZ1bmN8c3RyaW5nKX1cbiAgICAgKi9cbiAgICByZXNvdXJjZUFjY2Vzc29yOiBhY2Nlc3NvcixcblxuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIHJlc291cmNlIG9iamVjdHMgdGhhdCBtYXAgZXZlbnRzIHRvIGEgc3BlY2lmaWMgcmVzb3VyY2UuXG4gICAgICogUmVzb3VyY2Ugb2JqZWN0cywgbGlrZSBldmVudHMsIGNhbiBiZSBhbnkgc2hhcGUgb3IgaGF2ZSBhbnkgcHJvcGVydGllcyxcbiAgICAgKiBidXQgc2hvdWxkIGJlIHVuaXF1bHkgaWRlbnRpZmlhYmxlIHZpYSB0aGUgYHJlc291cmNlSWRBY2Nlc3NvcmAsIGFzXG4gICAgICogd2VsbCBhcyBhIFwidGl0bGVcIiBvciBuYW1lIGFzIHByb3ZpZGVkIGJ5IHRoZSBgcmVzb3VyY2VUaXRsZUFjY2Vzc29yYCBwcm9wLlxuICAgICAqL1xuICAgIHJlc291cmNlczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9iamVjdCksXG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBhIHVuaXF1ZSBpZGVudGlmaWVyLCBvciBhbiBhcnJheSBvZiB1bmlxdWUgaWRlbnRpZmllcnMsIGZvciBlYWNoIHJlc291cmNlIGluIHRoZSBgcmVzb3VyY2VzYCBhcnJheVxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBzdHJpbmcgfCAocmVzb3VyY2U6IE9iamVjdCkgPT4gYW55XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAdHlwZSB7KGZ1bmN8c3RyaW5nKX1cbiAgICAgKi9cbiAgICByZXNvdXJjZUlkQWNjZXNzb3I6IGFjY2Vzc29yLFxuXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgYSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGUgcmVzb3VyY2Ugb2JqZWN0LCB1c2VkIGluIGhlYWRlcnMuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIHN0cmluZyB8IChyZXNvdXJjZTogT2JqZWN0KSA9PiBhbnlcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEB0eXBlIHsoZnVuY3xzdHJpbmcpfVxuICAgICAqL1xuICAgIHJlc291cmNlVGl0bGVBY2Nlc3NvcjogYWNjZXNzb3IsXG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHRoZSBjdXJyZW50IGRhdGUvdGltZSB3aGljaCBpcyBoaWdobGlnaHRlZCBpbiB0aGUgdmlld3MuXG4gICAgICpcbiAgICAgKiBUaGUgdmFsdWUgYWZmZWN0cyB3aGljaCBkYXkgaXMgc2hhZGVkIGFuZCB3aGljaCB0aW1lIGlzIHNob3duIGFzXG4gICAgICogdGhlIGN1cnJlbnQgdGltZS4gSXQgYWxzbyBhZmZlY3RzIHRoZSBkYXRlIHVzZWQgYnkgdGhlIFRvZGF5IGJ1dHRvbiBpblxuICAgICAqIHRoZSB0b29sYmFyLlxuICAgICAqXG4gICAgICogUHJvdmlkaW5nIGEgdmFsdWUgaGVyZSBjYW4gYmUgdXNlZnVsIHdoZW4geW91IGFyZSBpbXBsZW1lbnRpbmcgdGltZSB6b25lc1xuICAgICAqIHVzaW5nIHRoZSBgc3RhcnRBY2Nlc3NvcmAgYW5kIGBlbmRBY2Nlc3NvcmAgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtmdW5jfVxuICAgICAqIEBkZWZhdWx0ICgpID0+IG5ldyBEYXRlKClcbiAgICAgKi9cbiAgICBnZXROb3c6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgYGRhdGVgIHZhbHVlIGNoYW5nZXMuXG4gICAgICpcbiAgICAgKiBAY29udHJvbGxhYmxlIGRhdGVcbiAgICAgKi9cbiAgICBvbk5hdmlnYXRlOiBQcm9wVHlwZXMuZnVuYyxcblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIGB2aWV3YCB2YWx1ZSBjaGFuZ2VzLlxuICAgICAqXG4gICAgICogQGNvbnRyb2xsYWJsZSB2aWV3XG4gICAgICovXG4gICAgb25WaWV3OiBQcm9wVHlwZXMuZnVuYyxcblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gZGF0ZSBoZWFkZXIsIG9yIHRoZSB0cnVuY2F0ZWQgZXZlbnRzIGxpbmtzIGFyZSBjbGlja2VkXG4gICAgICpcbiAgICAgKi9cbiAgICBvbkRyaWxsRG93bjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogKGRhdGVzOiBEYXRlW10gfCB7IHN0YXJ0OiBEYXRlOyBlbmQ6IERhdGUgfSwgdmlldzogJ21vbnRoJ3wnd2Vlayd8J3dvcmtfd2Vlayd8J2RheSd8J2FnZW5kYSd8dW5kZWZpbmVkKSA9PiB2b2lkXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBDYWxsYmFjayBmaXJlZCB3aGVuIHRoZSB2aXNpYmxlIGRhdGUgcmFuZ2UgY2hhbmdlcy4gUmV0dXJucyBhbiBBcnJheSBvZiBkYXRlc1xuICAgICAqIG9yIGFuIG9iamVjdCB3aXRoIHN0YXJ0IGFuZCBlbmQgZGF0ZXMgZm9yIEJVSUxUSU4gdmlld3MuIE9wdGlvbmFsbHkgbmV3IGB2aWV3YFxuICAgICAqIHdpbGwgYmUgcmV0dXJuZWQgd2hlbiBjYWxsYmFjayBjYWxsZWQgYWZ0ZXIgdmlldyBjaGFuZ2UuXG4gICAgICpcbiAgICAgKiBDdXN0b20gdmlld3MgbWF5IHJldHVybiBzb21ldGhpbmcgZGlmZmVyZW50LlxuICAgICAqL1xuICAgIG9uUmFuZ2VDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgLyoqXG4gICAgICogQSBjYWxsYmFjayBmaXJlZCB3aGVuIGEgZGF0ZSBzZWxlY3Rpb24gaXMgbWFkZS4gT25seSBmaXJlcyB3aGVuIGBzZWxlY3RhYmxlYCBpcyBgdHJ1ZWAuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIChcbiAgICAgKiAgIHNsb3RJbmZvOiB7XG4gICAgICogICAgIHN0YXJ0OiBEYXRlLFxuICAgICAqICAgICBlbmQ6IERhdGUsXG4gICAgICogICAgIHJlc291cmNlSWQ6ICAobnVtYmVyfHN0cmluZyksXG4gICAgICogICAgIHNsb3RzOiBBcnJheTxEYXRlPixcbiAgICAgKiAgICAgYWN0aW9uOiBcInNlbGVjdFwiIHwgXCJjbGlja1wiIHwgXCJkb3VibGVDbGlja1wiLFxuICAgICAqICAgICBib3VuZHM6ID97IC8vIEZvciBcInNlbGVjdFwiIGFjdGlvblxuICAgICAqICAgICAgIHg6IG51bWJlcixcbiAgICAgKiAgICAgICB5OiBudW1iZXIsXG4gICAgICogICAgICAgdG9wOiBudW1iZXIsXG4gICAgICogICAgICAgcmlnaHQ6IG51bWJlcixcbiAgICAgKiAgICAgICBsZWZ0OiBudW1iZXIsXG4gICAgICogICAgICAgYm90dG9tOiBudW1iZXIsXG4gICAgICogICAgIH0sXG4gICAgICogICAgIGJveDogP3sgLy8gRm9yIFwiY2xpY2tcIiBvciBcImRvdWJsZUNsaWNrXCIgYWN0aW9uc1xuICAgICAqICAgICAgIGNsaWVudFg6IG51bWJlcixcbiAgICAgKiAgICAgICBjbGllbnRZOiBudW1iZXIsXG4gICAgICogICAgICAgeDogbnVtYmVyLFxuICAgICAqICAgICAgIHk6IG51bWJlcixcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgIH1cbiAgICAgKiApID0+IGFueVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIG9uU2VsZWN0U2xvdDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayBmaXJlZCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgc2VsZWN0ZWQuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIChldmVudDogT2JqZWN0LCBlOiBTeW50aGV0aWNFdmVudCkgPT4gYW55XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAY29udHJvbGxhYmxlIHNlbGVjdGVkXG4gICAgICovXG4gICAgb25TZWxlY3RFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayBmaXJlZCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgY2xpY2tlZCB0d2ljZS5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogKGV2ZW50OiBPYmplY3QsIGU6IFN5bnRoZXRpY0V2ZW50KSA9PiB2b2lkXG4gICAgICogYGBgXG4gICAgICovXG4gICAgb25Eb3VibGVDbGlja0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gYSBmb2N1c2VkIGNhbGVuZGFyIGV2ZW50IHJlY2VpdmVzIGEga2V5IHByZXNzLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiAoZXZlbnQ6IE9iamVjdCwgZTogU3ludGhldGljRXZlbnQpID0+IHZvaWRcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBvbktleVByZXNzRXZlbnQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiBkcmFnZ2luZyBhIHNlbGVjdGlvbiBpbiB0aGUgVGltZSB2aWV3cy5cbiAgICAgKlxuICAgICAqIFJldHVybmluZyBgZmFsc2VgIGZyb20gdGhlIGhhbmRsZXIgd2lsbCBwcmV2ZW50IGEgc2VsZWN0aW9uLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiAocmFuZ2U6IHsgc3RhcnQ6IERhdGUsIGVuZDogRGF0ZSwgcmVzb3VyY2VJZDogKG51bWJlcnxzdHJpbmcpIH0pID0+ID9ib29sZWFuXG4gICAgICogYGBgXG4gICAgICovXG4gICAgb25TZWxlY3Rpbmc6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiBhICt7Y291bnR9IG1vcmUgaXMgY2xpY2tlZFxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiAoZXZlbnRzOiBPYmplY3QsIGRhdGU6IERhdGUpID0+IGFueVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIG9uU2hvd01vcmU6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgLyoqXG4gICAgICogRGlzcGxheXMgYWxsIGV2ZW50cyBvbiB0aGUgbW9udGggdmlldyBpbnN0ZWFkIG9mXG4gICAgICogaGF2aW5nIHNvbWUgaGlkZGVuIGJlaGluZCAre2NvdW50fSBtb3JlLiBUaGlzIHdpbGxcbiAgICAgKiBjYXVzZSB0aGUgcm93cyBpbiB0aGUgbW9udGggdmlldyB0byBiZSBzY3JvbGxhYmxlIGlmXG4gICAgICogdGhlIG51bWJlciBvZiBldmVudHMgZXhjZWVkIHRoZSBoZWlnaHQgb2YgdGhlIHJvdy5cbiAgICAgKi9cbiAgICBzaG93QWxsRXZlbnRzOiBQcm9wVHlwZXMuYm9vbCxcblxuICAgIC8qKlxuICAgICAqIFRoZSBzZWxlY3RlZCBldmVudCwgaWYgYW55LlxuICAgICAqL1xuICAgIHNlbGVjdGVkOiBQcm9wVHlwZXMub2JqZWN0LFxuXG4gICAgLyoqXG4gICAgICogQW4gYXJyYXkgb2YgYnVpbHQtaW4gdmlldyBuYW1lcyB0byBhbGxvdyB0aGUgY2FsZW5kYXIgdG8gZGlzcGxheS5cbiAgICAgKiBhY2NlcHRzIGVpdGhlciBhbiBhcnJheSBvZiBidWlsdGluIHZpZXcgbmFtZXMsXG4gICAgICpcbiAgICAgKiBgYGBqc3hcbiAgICAgKiB2aWV3cz17Wydtb250aCcsICdkYXknLCAnYWdlbmRhJ119XG4gICAgICogYGBgXG4gICAgICogb3IgYW4gb2JqZWN0IGhhc2ggb2YgdGhlIHZpZXcgbmFtZSBhbmQgdGhlIGNvbXBvbmVudCAob3IgYm9vbGVhbiBmb3IgYnVpbHRpbikuXG4gICAgICpcbiAgICAgKiBgYGBqc3hcbiAgICAgKiB2aWV3cz17e1xuICAgICAqICAgbW9udGg6IHRydWUsXG4gICAgICogICB3ZWVrOiBmYWxzZSxcbiAgICAgKiAgIG15d2VlazogV29ya1dlZWtWaWV3Q29tcG9uZW50LFxuICAgICAqIH19XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBDdXN0b20gdmlld3MgY2FuIGJlIGFueSBSZWFjdCBjb21wb25lbnQsIHRoYXQgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nXG4gICAgICogaW50ZXJmYWNlOlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiBpbnRlcmZhY2UgVmlldyB7XG4gICAgICogICBzdGF0aWMgdGl0bGUoZGF0ZTogRGF0ZSwgeyBmb3JtYXRzOiBEYXRlRm9ybWF0W10sIGN1bHR1cmU6IHN0cmluZz8sIC4uLnByb3BzIH0pOiBzdHJpbmdcbiAgICAgKiAgIHN0YXRpYyBuYXZpZ2F0ZShkYXRlOiBEYXRlLCBhY3Rpb246ICdQUkVWJyB8ICdORVhUJyB8ICdEQVRFJyk6IERhdGVcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAdHlwZSBWaWV3cyAoJ21vbnRoJ3wnd2Vlayd8J3dvcmtfd2Vlayd8J2RheSd8J2FnZW5kYScpXG4gICAgICogQFZpZXdcbiAgICAgWydtb250aCcsICd3ZWVrJywgJ2RheScsICdhZ2VuZGEnXVxuICAgICAqL1xuICAgIHZpZXdzOiBjb21wb25lbnRWaWV3cyxcblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgZHJpbGwgZG93biBzaG91bGQgb2NjdXIgd2hlbiBjbGlja2luZyBvbiB0aGUgXCIrX3hfIG1vcmVcIiBsaW5rLlxuICAgICAqIElmIGBwb3B1cGAgaXMgZmFsc2UsIGFuZCBgZG9TaG93TW9yZURyaWxsRG93bmAgaXMgdHJ1ZSwgdGhlIGRyaWxsIGRvd24gd2lsbCBvY2N1ciBhcyB1c3VhbC5cbiAgICAgKiBJZiBgcG9wdXBgIGlzIGZhbHNlLCBhbmQgYGRvU2hvd01vcmVEcmlsbERvd25gIGlzIGZhbHNlLCB0aGUgZHJpbGwgZG93biB3aWxsIG5vdCBvY2N1ciBhbmQgdGhlIGBvblNob3dNb3JlYCBmdW5jdGlvbiB3aWxsIHRyaWdnZXIuXG4gICAgICovXG4gICAgZG9TaG93TW9yZURyaWxsRG93bjogUHJvcFR5cGVzLmJvb2wsXG5cbiAgICAvKipcbiAgICAgKiBUaGUgc3RyaW5nIG5hbWUgb2YgdGhlIGRlc3RpbmF0aW9uIHZpZXcgZm9yIGRyaWxsLWRvd24gYWN0aW9ucywgc3VjaFxuICAgICAqIGFzIGNsaWNraW5nIGEgZGF0ZSBoZWFkZXIsIG9yIHRoZSB0cnVuY2F0ZWQgZXZlbnRzIGxpbmtzLiBJZlxuICAgICAqIGBnZXREcmlsbGRvd25WaWV3YCBpcyBhbHNvIHNwZWNpZmllZCBpdCB3aWxsIGJlIHVzZWQgaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIFNldCB0byBgbnVsbGAgdG8gZGlzYWJsZSBkcmlsbC1kb3duIGFjdGlvbnMuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIDxDYWxlbmRhclxuICAgICAqICAgZHJpbGxkb3duVmlldz1cImFnZW5kYVwiXG4gICAgICogLz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBkcmlsbGRvd25WaWV3OiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gYGRyaWxsZG93blZpZXdgLCBidXQgYWNjZXB0cyBhIGZ1bmN0aW9uXG4gICAgICogdGhhdCBjYW4gcmV0dXJuIGEgdmlldyBuYW1lLiBJdCdzIHVzZWZ1bCBmb3IgY3VzdG9taXppbmcgdGhlIGRyaWxsLWRvd25cbiAgICAgKiBhY3Rpb25zIGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0IGRhdGUgYW5kIHRyaWdnZXJpbmcgdmlldy5cbiAgICAgKlxuICAgICAqIFJldHVybiBgbnVsbGAgdG8gZGlzYWJsZSBkcmlsbC1kb3duIGFjdGlvbnMuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIDxDYWxlbmRhclxuICAgICAqICAgZ2V0RHJpbGxkb3duVmlldz17KHRhcmdldERhdGUsIGN1cnJlbnRWaWV3TmFtZSwgY29uZmlndXJlZFZpZXdOYW1lcykgPT5cbiAgICAgKiAgICAgaWYgKGN1cnJlbnRWaWV3TmFtZSA9PT0gJ21vbnRoJyAmJiBjb25maWd1cmVkVmlld05hbWVzLmluY2x1ZGVzKCd3ZWVrJykpXG4gICAgICogICAgICAgcmV0dXJuICd3ZWVrJ1xuICAgICAqXG4gICAgICogICAgIHJldHVybiBudWxsO1xuICAgICAqICAgfX1cbiAgICAgKiAvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGdldERyaWxsZG93blZpZXc6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyB0aGUgZW5kIGRhdGUgZnJvbSBkYXRlIHByb3AgaW4gdGhlIGFnZW5kYSB2aWV3XG4gICAgICogZGF0ZSBwcm9wICsgbGVuZ3RoIChpbiBudW1iZXIgb2YgZGF5cykgPSBlbmQgZGF0ZVxuICAgICAqL1xuICAgIGxlbmd0aDogUHJvcFR5cGVzLm51bWJlcixcblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgdG9vbGJhciBpcyBkaXNwbGF5ZWRcbiAgICAgKi9cbiAgICB0b29sYmFyOiBQcm9wVHlwZXMuYm9vbCxcblxuICAgIC8qKlxuICAgICAqIFNob3cgdHJ1bmNhdGVkIGV2ZW50cyBpbiBhbiBvdmVybGF5IHdoZW4geW91IGNsaWNrIHRoZSBcIitfeF8gbW9yZVwiIGxpbmsuXG4gICAgICovXG4gICAgcG9wdXA6IFByb3BUeXBlcy5ib29sLFxuXG4gICAgLyoqXG4gICAgICogRGlzdGFuY2UgaW4gcGl4ZWxzLCBmcm9tIHRoZSBlZGdlcyBvZiB0aGUgdmlld3BvcnQsIHRoZSBcInNob3cgbW9yZVwiIG92ZXJsYXkgc2hvdWxkIGJlIHBvc2l0aW9uZWQuXG4gICAgICpcbiAgICAgKiBgYGBqc3hcbiAgICAgKiA8Q2FsZW5kYXIgcG9wdXBPZmZzZXQ9ezMwfS8+XG4gICAgICogPENhbGVuZGFyIHBvcHVwT2Zmc2V0PXt7eDogMzAsIHk6IDIwfX0vPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHBvcHVwT2Zmc2V0OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICAgIFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBQcm9wVHlwZXMuc2hhcGUoeyB4OiBQcm9wVHlwZXMubnVtYmVyLCB5OiBQcm9wVHlwZXMubnVtYmVyIH0pLFxuICAgIF0pLFxuXG4gICAgLyoqXG4gICAgICogQWxsb3dzIG1vdXNlIHNlbGVjdGlvbiBvZiByYW5nZXMgb2YgZGF0ZXMvdGltZXMuXG4gICAgICpcbiAgICAgKiBUaGUgJ2lnbm9yZUV2ZW50cycgb3B0aW9uIHByZXZlbnRzIHNlbGVjdGlvbiBjb2RlIGZyb20gcnVubmluZyB3aGVuIGFcbiAgICAgKiBkcmFnIGJlZ2lucyBvdmVyIGFuIGV2ZW50LiBVc2VmdWwgd2hlbiB5b3Ugd2FudCBjdXN0b20gZXZlbnQgY2xpY2sgb3IgZHJhZ1xuICAgICAqIGxvZ2ljXG4gICAgICovXG4gICAgc2VsZWN0YWJsZTogUHJvcFR5cGVzLm9uZU9mKFt0cnVlLCBmYWxzZSwgJ2lnbm9yZUV2ZW50cyddKSxcblxuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGUgdXNlciBtdXN0IHByZXNzIGFuZCBob2xkIG9uIHRoZSBzY3JlZW4gZm9yIGEgdG91Y2hcbiAgICAgKiB0byBiZSBjb25zaWRlcmVkIGEgXCJsb25nIHByZXNzLlwiIExvbmcgcHJlc3NlcyBhcmUgdXNlZCBmb3IgdGltZSBzbG90IHNlbGVjdGlvbiBvbiB0b3VjaFxuICAgICAqIGRldmljZXMuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqIEBkZWZhdWx0IDI1MFxuICAgICAqL1xuICAgIGxvbmdQcmVzc1RocmVzaG9sZDogUHJvcFR5cGVzLm51bWJlcixcblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgdGhlIHNlbGVjdGFibGUgdGltZSBpbmNyZW1lbnRzIGluIHdlZWsgYW5kIGRheSB2aWV3cywgaW4gbWludXRlcy5cbiAgICAgKi9cbiAgICBzdGVwOiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiBzbG90cyBwZXIgXCJzZWN0aW9uXCIgaW4gdGhlIHRpbWUgZ3JpZCB2aWV3cy4gQWRqdXN0IHdpdGggYHN0ZXBgXG4gICAgICogdG8gY2hhbmdlIHRoZSBkZWZhdWx0IG9mIDEgaG91ciBsb25nIGdyb3Vwcywgd2l0aCAzMCBtaW51dGUgc2xvdHMuXG4gICAgICovXG4gICAgdGltZXNsb3RzOiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gICAgLyoqXG4gICAgICpTd2l0Y2ggdGhlIGNhbGVuZGFyIHRvIGEgYHJpZ2h0LXRvLWxlZnRgIHJlYWQgZGlyZWN0aW9uLlxuICAgICAqL1xuICAgIHJ0bDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25hbGx5IHByb3ZpZGUgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gb2JqZWN0IG9mIGNsYXNzTmFtZSBvciBzdHlsZSBwcm9wc1xuICAgICAqIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHRoZSBldmVudCBub2RlLlxuICAgICAqXG4gICAgICogYGBganNcbiAgICAgKiAoXG4gICAgICogXHRldmVudDogT2JqZWN0LFxuICAgICAqIFx0c3RhcnQ6IERhdGUsXG4gICAgICogXHRlbmQ6IERhdGUsXG4gICAgICogXHRpc1NlbGVjdGVkOiBib29sZWFuXG4gICAgICogKSA9PiB7IGNsYXNzTmFtZT86IHN0cmluZywgc3R5bGU/OiBPYmplY3QgfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGV2ZW50UHJvcEdldHRlcjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25hbGx5IHByb3ZpZGUgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gb2JqZWN0IG9mIGNsYXNzTmFtZSBvciBzdHlsZSBwcm9wc1xuICAgICAqIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHRpbWUtc2xvdCBub2RlLiBDYXV0aW9uISBTdHlsZXMgdGhhdCBjaGFuZ2UgbGF5b3V0IG9yXG4gICAgICogcG9zaXRpb24gbWF5IGJyZWFrIHRoZSBjYWxlbmRhciBpbiB1bmV4cGVjdGVkIHdheXMuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIChkYXRlOiBEYXRlLCByZXNvdXJjZUlkOiAobnVtYmVyfHN0cmluZykpID0+IHsgY2xhc3NOYW1lPzogc3RyaW5nLCBzdHlsZT86IE9iamVjdCB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgc2xvdFByb3BHZXR0ZXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxseSBwcm92aWRlIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIG9iamVjdCBvZiBwcm9wcyB0byBiZSBhcHBsaWVkXG4gICAgICogdG8gdGhlIHRpbWUtc2xvdCBncm91cCBub2RlLiBVc2VmdWwgdG8gZHluYW1pY2FsbHkgY2hhbmdlIHRoZSBzaXppbmcgb2YgdGltZSBub2Rlcy5cbiAgICAgKiBgYGBqc1xuICAgICAqIChncm91cDogRGF0ZVtdKSA9PiB7IHN0eWxlPzogT2JqZWN0IH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBzbG90R3JvdXBQcm9wR2V0dGVyOiBQcm9wVHlwZXMuZnVuYyxcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsbHkgcHJvdmlkZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBvYmplY3Qgb2YgY2xhc3NOYW1lIG9yIHN0eWxlIHByb3BzXG4gICAgICogdG8gYmUgYXBwbGllZCB0byB0aGUgdGhlIGRheSBiYWNrZ3JvdW5kLiBDYXV0aW9uISBTdHlsZXMgdGhhdCBjaGFuZ2UgbGF5b3V0IG9yXG4gICAgICogcG9zaXRpb24gbWF5IGJyZWFrIHRoZSBjYWxlbmRhciBpbiB1bmV4cGVjdGVkIHdheXMuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIChkYXRlOiBEYXRlKSA9PiB7IGNsYXNzTmFtZT86IHN0cmluZywgc3R5bGU/OiBPYmplY3QgfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGRheVByb3BHZXR0ZXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgLyoqXG4gICAgICogU3VwcG9ydCB0byBzaG93IG11bHRpLWRheSBldmVudHMgd2l0aCBzcGVjaWZpYyBzdGFydCBhbmQgZW5kIHRpbWVzIGluIHRoZVxuICAgICAqIG1haW4gdGltZSBncmlkIChyYXRoZXIgdGhhbiBpbiB0aGUgYWxsIGRheSBoZWFkZXIpLlxuICAgICAqXG4gICAgICogKipOb3RlOiBUaGlzIG1heSBjYXVzZSBjYWxlbmRhcnMgd2l0aCBzZXZlcmFsIGV2ZW50cyB0byBsb29rIHZlcnkgYnVzeSBpblxuICAgICAqIHRoZSB3ZWVrIGFuZCBkYXkgdmlld3MuKipcbiAgICAgKi9cbiAgICBzaG93TXVsdGlEYXlUaW1lczogUHJvcFR5cGVzLmJvb2wsXG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGEgbWF4aW11bSBhbW91bnQgb2Ygcm93cyBvZiBldmVudHMgdG8gZGlzcGxheSBpbiB0aGUgYWxsIGRheVxuICAgICAqIHNlY3Rpb24gZm9yIFdlZWsgYW5kIERheSB2aWV3cywgd2lsbCBkaXNwbGF5IGBzaG93TW9yZWAgYnV0dG9uIGlmXG4gICAgICogZXZlbnRzIGV4Y2VkZSB0aGlzIG51bWJlci5cbiAgICAgKlxuICAgICAqIERlZmF1bHRzIHRvIGBJbmZpbml0eWBcbiAgICAgKi9cbiAgICBhbGxEYXlNYXhSb3dzOiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gICAgLyoqXG4gICAgICogQ29uc3RyYWlucyB0aGUgbWluaW11bSBfdGltZV8gb2YgdGhlIERheSBhbmQgV2VlayB2aWV3cy5cbiAgICAgKi9cbiAgICBtaW46IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuXG4gICAgLyoqXG4gICAgICogQ29uc3RyYWlucyB0aGUgbWF4aW11bSBfdGltZV8gb2YgdGhlIERheSBhbmQgV2VlayB2aWV3cy5cbiAgICAgKi9cbiAgICBtYXg6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBob3cgZmFyIGRvd24gdGhlIHNjcm9sbCBwYW5lIGlzIGluaXRpYWxseSBzY3JvbGxlZCBkb3duLlxuICAgICAqL1xuICAgIHNjcm9sbFRvVGltZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNjcm9sbCBwYW5lIGlzIGF1dG9tYXRpY2FsbHkgc2Nyb2xsZWQgZG93biBvciBub3QuXG4gICAgICovXG4gICAgZW5hYmxlQXV0b1Njcm9sbDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZ5IGEgc3BlY2lmaWMgY3VsdHVyZSBjb2RlIGZvciB0aGUgQ2FsZW5kYXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6IGl0J3MgZ2VuZXJhbGx5IGJldHRlciB0byBoYW5kbGUgdGhpcyBnbG9iYWxseSB2aWEgeW91ciBpMThuIGxpYnJhcnkuKipcbiAgICAgKi9cbiAgICBjdWx0dXJlOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICogTG9jYWxpemVyIHNwZWNpZmljIGZvcm1hdHMsIHRlbGwgdGhlIENhbGVuZGFyIGhvdyB0byBmb3JtYXQgYW5kIGRpc3BsYXkgZGF0ZXMuXG4gICAgICpcbiAgICAgKiBgZm9ybWF0YCB0eXBlcyBhcmUgZGVwZW5kZW50IG9uIHRoZSBjb25maWd1cmVkIGxvY2FsaXplcjsgTW9tZW50LCBMdXhvbiBhbmQgR2xvYmFsaXplXG4gICAgICogYWNjZXB0IHN0cmluZ3Mgb2YgdG9rZW5zIGFjY29yZGluZyB0byB0aGVpciBvd24gc3BlY2lmaWNhdGlvbiwgc3VjaCBhczogYCdERCBtbSB5eXl5J2AuXG4gICAgICpcbiAgICAgKiBgYGBqc3hcbiAgICAgKiBsZXQgZm9ybWF0cyA9IHtcbiAgICAgKiAgIGRhdGVGb3JtYXQ6ICdkZCcsXG4gICAgICpcbiAgICAgKiAgIGRheUZvcm1hdDogKGRhdGUsICwgbG9jYWxpemVyKSA9PlxuICAgICAqICAgICBsb2NhbGl6ZXIuZm9ybWF0KGRhdGUsICdEREQnLCBjdWx0dXJlKSxcbiAgICAgKlxuICAgICAqICAgZGF5UmFuZ2VIZWFkZXJGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgICAqICAgICBsb2NhbGl6ZXIuZm9ybWF0KHN0YXJ0LCB7IGRhdGU6ICdzaG9ydCcgfSwgY3VsdHVyZSkgKyAnIOKAkyAnICtcbiAgICAgKiAgICAgbG9jYWxpemVyLmZvcm1hdChlbmQsIHsgZGF0ZTogJ3Nob3J0JyB9LCBjdWx0dXJlKVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIDxDYWxlbmRhciBmb3JtYXRzPXtmb3JtYXRzfSAvPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQWxsIGxvY2FsaXplcnMgYWNjZXB0IGEgZnVuY3Rpb24gb2ZcbiAgICAgKiB0aGUgZm9ybSBgKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogTG9jYWxpemVyKSAtPiBzdHJpbmdgXG4gICAgICovXG4gICAgZm9ybWF0czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0IGZvciB0aGUgZGF5IG9mIHRoZSBtb250aCBoZWFkaW5nIGluIHRoZSBNb250aCB2aWV3LlxuICAgICAgICogZS5nLiBcIjAxXCIsIFwiMDJcIiwgXCIwM1wiLCBldGNcbiAgICAgICAqL1xuICAgICAgZGF0ZUZvcm1hdCxcblxuICAgICAgLyoqXG4gICAgICAgKiBBIGRheSBvZiB0aGUgd2VlayBmb3JtYXQgZm9yIFdlZWsgYW5kIERheSBoZWFkaW5ncyxcbiAgICAgICAqIGUuZy4gXCJXZWQgMDEvMDRcIlxuICAgICAgICpcbiAgICAgICAqL1xuICAgICAgZGF5Rm9ybWF0OiBkYXRlRm9ybWF0LFxuXG4gICAgICAvKipcbiAgICAgICAqIFdlZWsgZGF5IG5hbWUgZm9ybWF0IGZvciB0aGUgTW9udGggd2VlayBkYXkgaGVhZGluZ3MsXG4gICAgICAgKiBlLmc6IFwiU3VuXCIsIFwiTW9uXCIsIFwiVHVlXCIsIGV0Y1xuICAgICAgICpcbiAgICAgICAqL1xuICAgICAgd2Vla2RheUZvcm1hdDogZGF0ZUZvcm1hdCxcblxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgdGltZXN0YW1wIGNlbGwgZm9ybWF0cyBpbiBXZWVrIGFuZCBUaW1lIHZpZXdzLCBlLmcuIFwiNDowMCBBTVwiXG4gICAgICAgKi9cbiAgICAgIHRpbWVHdXR0ZXJGb3JtYXQ6IGRhdGVGb3JtYXQsXG5cbiAgICAgIC8qKlxuICAgICAgICogVG9vbGJhciBoZWFkZXIgZm9ybWF0IGZvciB0aGUgTW9udGggdmlldywgZS5nIFwiMjAxNSBBcHJpbFwiXG4gICAgICAgKlxuICAgICAgICovXG4gICAgICBtb250aEhlYWRlckZvcm1hdDogZGF0ZUZvcm1hdCxcblxuICAgICAgLyoqXG4gICAgICAgKiBUb29sYmFyIGhlYWRlciBmb3JtYXQgZm9yIHRoZSBXZWVrIHZpZXdzLCBlLmcuIFwiTWFyIDI5IC0gQXByIDA0XCJcbiAgICAgICAqL1xuICAgICAgZGF5UmFuZ2VIZWFkZXJGb3JtYXQ6IGRhdGVSYW5nZUZvcm1hdCxcblxuICAgICAgLyoqXG4gICAgICAgKiBUb29sYmFyIGhlYWRlciBmb3JtYXQgZm9yIHRoZSBEYXkgdmlldywgZS5nLiBcIldlZG5lc2RheSBBcHIgMDFcIlxuICAgICAgICovXG4gICAgICBkYXlIZWFkZXJGb3JtYXQ6IGRhdGVGb3JtYXQsXG5cbiAgICAgIC8qKlxuICAgICAgICogVG9vbGJhciBoZWFkZXIgZm9ybWF0IGZvciB0aGUgQWdlbmRhIHZpZXcsIGUuZy4gXCI0LzEvMjAxNSDigJMgNS8xLzIwMTVcIlxuICAgICAgICovXG4gICAgICBhZ2VuZGFIZWFkZXJGb3JtYXQ6IGRhdGVSYW5nZUZvcm1hdCxcblxuICAgICAgLyoqXG4gICAgICAgKiBBIHRpbWUgcmFuZ2UgZm9ybWF0IGZvciBzZWxlY3RpbmcgdGltZSBzbG90cywgZS5nIFwiODowMGFtIOKAkyAyOjAwcG1cIlxuICAgICAgICovXG4gICAgICBzZWxlY3RSYW5nZUZvcm1hdDogZGF0ZVJhbmdlRm9ybWF0LFxuXG4gICAgICBhZ2VuZGFEYXRlRm9ybWF0OiBkYXRlRm9ybWF0LFxuICAgICAgYWdlbmRhVGltZUZvcm1hdDogZGF0ZUZvcm1hdCxcbiAgICAgIGFnZW5kYVRpbWVSYW5nZUZvcm1hdDogZGF0ZVJhbmdlRm9ybWF0LFxuXG4gICAgICAvKipcbiAgICAgICAqIFRpbWUgcmFuZ2UgZGlzcGxheWVkIG9uIGV2ZW50cy5cbiAgICAgICAqL1xuICAgICAgZXZlbnRUaW1lUmFuZ2VGb3JtYXQ6IGRhdGVSYW5nZUZvcm1hdCxcblxuICAgICAgLyoqXG4gICAgICAgKiBBbiBvcHRpb25hbCBldmVudCB0aW1lIHJhbmdlIGZvciBldmVudHMgdGhhdCBjb250aW51ZSBvbnRvIGFub3RoZXIgZGF5XG4gICAgICAgKi9cbiAgICAgIGV2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQ6IGRhdGVGb3JtYXQsXG5cbiAgICAgIC8qKlxuICAgICAgICogQW4gb3B0aW9uYWwgZXZlbnQgdGltZSByYW5nZSBmb3IgZXZlbnRzIHRoYXQgY29udGludWUgZnJvbSBhbm90aGVyIGRheVxuICAgICAgICovXG4gICAgICBldmVudFRpbWVSYW5nZUVuZEZvcm1hdDogZGF0ZUZvcm1hdCxcbiAgICB9KSxcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbWl6ZSBob3cgZGlmZmVyZW50IHNlY3Rpb25zIG9mIHRoZSBjYWxlbmRhciByZW5kZXIgYnkgcHJvdmlkaW5nIGN1c3RvbSBDb21wb25lbnRzLlxuICAgICAqIEluIHBhcnRpY3VsYXIgdGhlIGBFdmVudGAgY29tcG9uZW50IGNhbiBiZSBzcGVjaWZpZWQgZm9yIHRoZSBlbnRpcmUgY2FsZW5kYXIsIG9yIHlvdSBjYW5cbiAgICAgKiBwcm92aWRlIGFuIGluZGl2aWR1YWwgY29tcG9uZW50IGZvciBlYWNoIHZpZXcgdHlwZS5cbiAgICAgKlxuICAgICAqIGBgYGpzeFxuICAgICAqIGxldCBjb21wb25lbnRzID0ge1xuICAgICAqICAgZXZlbnQ6IE15RXZlbnQsIC8vIHVzZWQgYnkgZWFjaCB2aWV3IChNb250aCwgRGF5LCBXZWVrKVxuICAgICAqICAgZXZlbnRXcmFwcGVyOiBNeUV2ZW50V3JhcHBlcixcbiAgICAgKiAgIGV2ZW50Q29udGFpbmVyV3JhcHBlcjogTXlFdmVudENvbnRhaW5lcldyYXBwZXIsXG4gICAgICogICBkYXRlQ2VsbFdyYXBwZXI6IE15RGF0ZUNlbGxXcmFwcGVyLFxuICAgICAqICAgdGltZVNsb3RXcmFwcGVyOiBNeVRpbWVTbG90V3JhcHBlcixcbiAgICAgKiAgIHRpbWVHdXR0ZXJIZWFkZXI6IE15VGltZUd1dHRlcldyYXBwZXIsXG4gICAgICogICB0aW1lR3V0dGVyV3JhcHBlcjogTXlUaW1lR3V0dGVyV3JhcHBlcixcbiAgICAgKiAgIHJlc291cmNlSGVhZGVyOiBNeVJlc291cmNlSGVhZGVyLFxuICAgICAqICAgdG9vbGJhcjogTXlUb29sYmFyLFxuICAgICAqICAgYWdlbmRhOiB7XG4gICAgICogICBcdCBldmVudDogTXlBZ2VuZGFFdmVudCwgLy8gd2l0aCB0aGUgYWdlbmRhIHZpZXcgdXNlIGEgZGlmZmVyZW50IGNvbXBvbmVudCB0byByZW5kZXIgZXZlbnRzXG4gICAgICogICAgIHRpbWU6IE15QWdlbmRhVGltZSxcbiAgICAgKiAgICAgZGF0ZTogTXlBZ2VuZGFEYXRlLFxuICAgICAqICAgfSxcbiAgICAgKiAgIGRheToge1xuICAgICAqICAgICBoZWFkZXI6IE15RGF5SGVhZGVyLFxuICAgICAqICAgICBldmVudDogTXlEYXlFdmVudCxcbiAgICAgKiAgIH0sXG4gICAgICogICB3ZWVrOiB7XG4gICAgICogICAgIGhlYWRlcjogTXlXZWVrSGVhZGVyLFxuICAgICAqICAgICBldmVudDogTXlXZWVrRXZlbnQsXG4gICAgICogICB9LFxuICAgICAqICAgbW9udGg6IHtcbiAgICAgKiAgICAgaGVhZGVyOiBNeU1vbnRoSGVhZGVyLFxuICAgICAqICAgICBkYXRlSGVhZGVyOiBNeU1vbnRoRGF0ZUhlYWRlcixcbiAgICAgKiAgICAgZXZlbnQ6IE15TW9udGhFdmVudCxcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICogPENhbGVuZGFyIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IC8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgY29tcG9uZW50czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGV2ZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgICBldmVudFdyYXBwZXI6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICAgIGV2ZW50Q29udGFpbmVyV3JhcHBlcjogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgICAgZGF0ZUNlbGxXcmFwcGVyOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgICBkYXlDb2x1bW5XcmFwcGVyOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgICB0aW1lU2xvdFdyYXBwZXI6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICAgIHRpbWVHdXR0ZXJIZWFkZXI6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICAgIHRpbWVHdXR0ZXJXcmFwcGVyOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgICByZXNvdXJjZUhlYWRlcjogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuXG4gICAgICB0b29sYmFyOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG5cbiAgICAgIGFnZW5kYTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgZGF0ZTogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgICAgICB0aW1lOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgICAgIGV2ZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgICB9KSxcblxuICAgICAgZGF5OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgICBoZWFkZXI6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICAgICAgZXZlbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICAgIH0pLFxuICAgICAgd2VlazogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgaGVhZGVyOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgICAgIGV2ZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgICB9KSxcbiAgICAgIG1vbnRoOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgICBoZWFkZXI6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICAgICAgZGF0ZUhlYWRlcjogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgICAgICBldmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgICAgfSksXG4gICAgfSksXG5cbiAgICAvKipcbiAgICAgKiBTdHJpbmcgbWVzc2FnZXMgdXNlZCB0aHJvdWdob3V0IHRoZSBjb21wb25lbnQsIG92ZXJyaWRlIHRvIHByb3ZpZGUgbG9jYWxpemF0aW9uc1xuICAgICAqXG4gICAgICogYGBganN4XG4gICAgICogY29uc3QgbWVzc2FnZXMgPSB7XG4gICAgICogICBkYXRlOiAnRGF0ZScsXG4gICAgICogICB0aW1lOiAnVGltZScsXG4gICAgICogICBldmVudDogJ0V2ZW50JyxcbiAgICAgKiAgIGFsbERheTogJ0FsbCBEYXknLFxuICAgICAqICAgd2VlazogJ1dlZWsnLFxuICAgICAqICAgd29ya193ZWVrOiAnV29yayBXZWVrJyxcbiAgICAgKiAgIGRheTogJ0RheScsXG4gICAgICogICBtb250aDogJ01vbnRoJyxcbiAgICAgKiAgIHByZXZpb3VzOiAnQmFjaycsXG4gICAgICogICBuZXh0OiAnTmV4dCcsXG4gICAgICogICB5ZXN0ZXJkYXk6ICdZZXN0ZXJkYXknLFxuICAgICAqICAgdG9tb3Jyb3c6ICdUb21vcnJvdycsXG4gICAgICogICB0b2RheTogJ1RvZGF5JyxcbiAgICAgKiAgIGFnZW5kYTogJ0FnZW5kYScsXG4gICAgICpcbiAgICAgKiAgIG5vRXZlbnRzSW5SYW5nZTogJ1RoZXJlIGFyZSBubyBldmVudHMgaW4gdGhpcyByYW5nZS4nLFxuICAgICAqXG4gICAgICogICBzaG93TW9yZTogdG90YWwgPT4gYCsgJHt0b3RhbH0gbW9yZWAsXG4gICAgICogfVxuICAgICAqXG4gICAgICogPENhbGVuZGFyIG1lc3NhZ2VzPXttZXNzYWdlc30gLz5cbiAgICAgKiBgYGBcbiAgICAgKi9cblxuICAgIG1lc3NhZ2VzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgYWxsRGF5OiBQcm9wVHlwZXMubm9kZSxcbiAgICAgIHByZXZpb3VzOiBQcm9wVHlwZXMubm9kZSxcbiAgICAgIG5leHQ6IFByb3BUeXBlcy5ub2RlLFxuICAgICAgdG9kYXk6IFByb3BUeXBlcy5ub2RlLFxuICAgICAgbW9udGg6IFByb3BUeXBlcy5ub2RlLFxuICAgICAgd2VlazogUHJvcFR5cGVzLm5vZGUsXG4gICAgICBkYXk6IFByb3BUeXBlcy5ub2RlLFxuICAgICAgYWdlbmRhOiBQcm9wVHlwZXMubm9kZSxcbiAgICAgIGRhdGU6IFByb3BUeXBlcy5ub2RlLFxuICAgICAgdGltZTogUHJvcFR5cGVzLm5vZGUsXG4gICAgICBldmVudDogUHJvcFR5cGVzLm5vZGUsXG4gICAgICBub0V2ZW50c0luUmFuZ2U6IFByb3BUeXBlcy5ub2RlLFxuICAgICAgc2hvd01vcmU6IFByb3BUeXBlcy5mdW5jLFxuICAgIH0pLFxuXG4gICAgLyoqXG4gICAgICogQSBkYXkgZXZlbnQgbGF5b3V0KGFycmFuZ2VtZW50KSBhbGdvcml0aG0uXG4gICAgICpcbiAgICAgKiBgb3ZlcmxhcGAgYWxsb3dzIGV2ZW50cyB0byBiZSBvdmVybGFwcGVkLlxuICAgICAqXG4gICAgICogYG5vLW92ZXJsYXBgIHJlc2l6ZXMgZXZlbnRzIHRvIGF2b2lkIG92ZXJsYXAuXG4gICAgICpcbiAgICAgKiBvciBjdXN0b20gYEZ1bmN0aW9uKGV2ZW50cywgbWluaW11bVN0YXJ0RGlmZmVyZW5jZSwgc2xvdE1ldHJpY3MsIGFjY2Vzc29ycylgXG4gICAgICovXG4gICAgZGF5TGF5b3V0QWxnb3JpdGhtOiBEYXlMYXlvdXRBbGdvcml0aG1Qcm9wVHlwZSxcbiAgfVxuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgZXZlbnRzOiBbXSxcbiAgICBiYWNrZ3JvdW5kRXZlbnRzOiBbXSxcbiAgICBlbGVtZW50UHJvcHM6IHt9LFxuICAgIHBvcHVwOiBmYWxzZSxcbiAgICB0b29sYmFyOiB0cnVlLFxuICAgIHZpZXc6IHZpZXdzLk1PTlRILFxuICAgIHZpZXdzOiBbdmlld3MuTU9OVEgsIHZpZXdzLldFRUssIHZpZXdzLkRBWSwgdmlld3MuQUdFTkRBXSxcbiAgICBzdGVwOiAzMCxcbiAgICBsZW5ndGg6IDMwLFxuICAgIGFsbERheU1heFJvd3M6IEluZmluaXR5LFxuXG4gICAgZG9TaG93TW9yZURyaWxsRG93bjogdHJ1ZSxcbiAgICBkcmlsbGRvd25WaWV3OiB2aWV3cy5EQVksXG5cbiAgICB0aXRsZUFjY2Vzc29yOiAndGl0bGUnLFxuICAgIHRvb2x0aXBBY2Nlc3NvcjogJ3RpdGxlJyxcbiAgICBhbGxEYXlBY2Nlc3NvcjogJ2FsbERheScsXG4gICAgc3RhcnRBY2Nlc3NvcjogJ3N0YXJ0JyxcbiAgICBlbmRBY2Nlc3NvcjogJ2VuZCcsXG4gICAgcmVzb3VyY2VBY2Nlc3NvcjogJ3Jlc291cmNlSWQnLFxuXG4gICAgcmVzb3VyY2VJZEFjY2Vzc29yOiAnaWQnLFxuICAgIHJlc291cmNlVGl0bGVBY2Nlc3NvcjogJ3RpdGxlJyxcblxuICAgIGxvbmdQcmVzc1RocmVzaG9sZDogMjUwLFxuICAgIGdldE5vdzogKCkgPT4gbmV3IERhdGUoKSxcbiAgICBkYXlMYXlvdXRBbGdvcml0aG06ICdvdmVybGFwJyxcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHtcbiAgICBzdXBlciguLi5hcmdzKVxuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGNvbnRleHQ6IENhbGVuZGFyLmdldENvbnRleHQodGhpcy5wcm9wcyksXG4gICAgfVxuICB9XG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMobmV4dFByb3BzKSB7XG4gICAgcmV0dXJuIHsgY29udGV4dDogQ2FsZW5kYXIuZ2V0Q29udGV4dChuZXh0UHJvcHMpIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXRDb250ZXh0KHtcbiAgICBzdGFydEFjY2Vzc29yLFxuICAgIGVuZEFjY2Vzc29yLFxuICAgIGFsbERheUFjY2Vzc29yLFxuICAgIHRvb2x0aXBBY2Nlc3NvcixcbiAgICB0aXRsZUFjY2Vzc29yLFxuICAgIHJlc291cmNlQWNjZXNzb3IsXG4gICAgcmVzb3VyY2VJZEFjY2Vzc29yLFxuICAgIHJlc291cmNlVGl0bGVBY2Nlc3NvcixcbiAgICBldmVudFByb3BHZXR0ZXIsXG4gICAgYmFja2dyb3VuZEV2ZW50UHJvcEdldHRlcixcbiAgICBzbG90UHJvcEdldHRlcixcbiAgICBzbG90R3JvdXBQcm9wR2V0dGVyLFxuICAgIGRheVByb3BHZXR0ZXIsXG4gICAgdmlldyxcbiAgICB2aWV3cyxcbiAgICBsb2NhbGl6ZXIsXG4gICAgY3VsdHVyZSxcbiAgICBtZXNzYWdlcyA9IHt9LFxuICAgIGNvbXBvbmVudHMgPSB7fSxcbiAgICBmb3JtYXRzID0ge30sXG4gIH0pIHtcbiAgICBsZXQgbmFtZXMgPSB2aWV3TmFtZXModmlld3MpXG4gICAgY29uc3QgbXNncyA9IG1lc3NhZ2UobWVzc2FnZXMpXG4gICAgcmV0dXJuIHtcbiAgICAgIHZpZXdOYW1lczogbmFtZXMsXG4gICAgICBsb2NhbGl6ZXI6IG1lcmdlV2l0aERlZmF1bHRzKGxvY2FsaXplciwgY3VsdHVyZSwgZm9ybWF0cywgbXNncyksXG4gICAgICBnZXR0ZXJzOiB7XG4gICAgICAgIGV2ZW50UHJvcDogKC4uLmFyZ3MpID0+XG4gICAgICAgICAgKGV2ZW50UHJvcEdldHRlciAmJiBldmVudFByb3BHZXR0ZXIoLi4uYXJncykpIHx8IHt9LFxuICAgICAgICBiYWNrZ3JvdW5kRXZlbnRQcm9wOiAoLi4uYXJncykgPT5cbiAgICAgICAgICAoYmFja2dyb3VuZEV2ZW50UHJvcEdldHRlciAmJiBiYWNrZ3JvdW5kRXZlbnRQcm9wR2V0dGVyKC4uLmFyZ3MpKSB8fFxuICAgICAgICAgIHt9LFxuICAgICAgICBzbG90UHJvcDogKC4uLmFyZ3MpID0+XG4gICAgICAgICAgKHNsb3RQcm9wR2V0dGVyICYmIHNsb3RQcm9wR2V0dGVyKC4uLmFyZ3MpKSB8fCB7fSxcbiAgICAgICAgc2xvdEdyb3VwUHJvcDogKC4uLmFyZ3MpID0+XG4gICAgICAgICAgKHNsb3RHcm91cFByb3BHZXR0ZXIgJiYgc2xvdEdyb3VwUHJvcEdldHRlciguLi5hcmdzKSkgfHwge30sXG4gICAgICAgIGRheVByb3A6ICguLi5hcmdzKSA9PiAoZGF5UHJvcEdldHRlciAmJiBkYXlQcm9wR2V0dGVyKC4uLmFyZ3MpKSB8fCB7fSxcbiAgICAgIH0sXG4gICAgICBjb21wb25lbnRzOiBkZWZhdWx0cyhjb21wb25lbnRzW3ZpZXddIHx8IHt9LCBvbWl0KGNvbXBvbmVudHMsIG5hbWVzKSwge1xuICAgICAgICBldmVudFdyYXBwZXI6IE5vb3BXcmFwcGVyLFxuICAgICAgICBiYWNrZ3JvdW5kRXZlbnRXcmFwcGVyOiBOb29wV3JhcHBlcixcbiAgICAgICAgZXZlbnRDb250YWluZXJXcmFwcGVyOiBOb29wV3JhcHBlcixcbiAgICAgICAgZGF0ZUNlbGxXcmFwcGVyOiBOb29wV3JhcHBlcixcbiAgICAgICAgd2Vla1dyYXBwZXI6IE5vb3BXcmFwcGVyLFxuICAgICAgICB0aW1lU2xvdFdyYXBwZXI6IE5vb3BXcmFwcGVyLFxuICAgICAgICB0aW1lR3V0dGVyV3JhcHBlcjogTm9vcFdyYXBwZXIsXG4gICAgICB9KSxcbiAgICAgIGFjY2Vzc29yczoge1xuICAgICAgICBzdGFydDogd3JhcEFjY2Vzc29yKHN0YXJ0QWNjZXNzb3IpLFxuICAgICAgICBlbmQ6IHdyYXBBY2Nlc3NvcihlbmRBY2Nlc3NvciksXG4gICAgICAgIGFsbERheTogd3JhcEFjY2Vzc29yKGFsbERheUFjY2Vzc29yKSxcbiAgICAgICAgdG9vbHRpcDogd3JhcEFjY2Vzc29yKHRvb2x0aXBBY2Nlc3NvciksXG4gICAgICAgIHRpdGxlOiB3cmFwQWNjZXNzb3IodGl0bGVBY2Nlc3NvciksXG4gICAgICAgIHJlc291cmNlOiB3cmFwQWNjZXNzb3IocmVzb3VyY2VBY2Nlc3NvciksXG4gICAgICAgIHJlc291cmNlSWQ6IHdyYXBBY2Nlc3NvcihyZXNvdXJjZUlkQWNjZXNzb3IpLFxuICAgICAgICByZXNvdXJjZVRpdGxlOiB3cmFwQWNjZXNzb3IocmVzb3VyY2VUaXRsZUFjY2Vzc29yKSxcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgZ2V0Vmlld3MgPSAoKSA9PiB7XG4gICAgY29uc3Qgdmlld3MgPSB0aGlzLnByb3BzLnZpZXdzXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2aWV3cykpIHtcbiAgICAgIHJldHVybiB0cmFuc2Zvcm0odmlld3MsIChvYmosIG5hbWUpID0+IChvYmpbbmFtZV0gPSBWSUVXU1tuYW1lXSksIHt9KVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygdmlld3MgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gbWFwVmFsdWVzKHZpZXdzLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgICByZXR1cm4gVklFV1Nba2V5XVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBWSUVXU1xuICB9XG5cbiAgZ2V0VmlldyA9ICgpID0+IHtcbiAgICBjb25zdCB2aWV3cyA9IHRoaXMuZ2V0Vmlld3MoKVxuXG4gICAgcmV0dXJuIHZpZXdzW3RoaXMucHJvcHMudmlld11cbiAgfVxuXG4gIGdldERyaWxsZG93blZpZXcgPSAoZGF0ZSkgPT4ge1xuICAgIGNvbnN0IHsgdmlldywgZHJpbGxkb3duVmlldywgZ2V0RHJpbGxkb3duVmlldyB9ID0gdGhpcy5wcm9wc1xuXG4gICAgaWYgKCFnZXREcmlsbGRvd25WaWV3KSByZXR1cm4gZHJpbGxkb3duVmlld1xuXG4gICAgcmV0dXJuIGdldERyaWxsZG93blZpZXcoZGF0ZSwgdmlldywgT2JqZWN0LmtleXModGhpcy5nZXRWaWV3cygpKSlcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBsZXQge1xuICAgICAgdmlldyxcbiAgICAgIHRvb2xiYXIsXG4gICAgICBldmVudHMsXG4gICAgICBiYWNrZ3JvdW5kRXZlbnRzLFxuICAgICAgc3R5bGUsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBlbGVtZW50UHJvcHMsXG4gICAgICBkYXRlOiBjdXJyZW50LFxuICAgICAgZ2V0Tm93LFxuICAgICAgbGVuZ3RoLFxuICAgICAgc2hvd011bHRpRGF5VGltZXMsXG4gICAgICBvblNob3dNb3JlLFxuICAgICAgZG9TaG93TW9yZURyaWxsRG93bixcbiAgICAgIGNvbXBvbmVudHM6IF8wLFxuICAgICAgZm9ybWF0czogXzEsXG4gICAgICBtZXNzYWdlczogXzIsXG4gICAgICBjdWx0dXJlOiBfMyxcbiAgICAgIC4uLnByb3BzXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGN1cnJlbnQgPSBjdXJyZW50IHx8IGdldE5vdygpXG5cbiAgICBsZXQgVmlldyA9IHRoaXMuZ2V0VmlldygpXG4gICAgY29uc3QgeyBhY2Nlc3NvcnMsIGNvbXBvbmVudHMsIGdldHRlcnMsIGxvY2FsaXplciwgdmlld05hbWVzIH0gPVxuICAgICAgdGhpcy5zdGF0ZS5jb250ZXh0XG5cbiAgICBsZXQgQ2FsVG9vbGJhciA9IGNvbXBvbmVudHMudG9vbGJhciB8fCBUb29sYmFyXG4gICAgY29uc3QgbGFiZWwgPSBWaWV3LnRpdGxlKGN1cnJlbnQsIHsgbG9jYWxpemVyLCBsZW5ndGggfSlcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHsuLi5lbGVtZW50UHJvcHN9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xzeChjbGFzc05hbWUsICdyYmMtY2FsZW5kYXInLCBwcm9wcy5ydGwgJiYgJ3JiYy1ydGwnKX1cbiAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgPlxuICAgICAgICB7dG9vbGJhciAmJiAoXG4gICAgICAgICAgPENhbFRvb2xiYXJcbiAgICAgICAgICAgIGRhdGU9e2N1cnJlbnR9XG4gICAgICAgICAgICB2aWV3PXt2aWV3fVxuICAgICAgICAgICAgdmlld3M9e3ZpZXdOYW1lc31cbiAgICAgICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgICAgIG9uVmlldz17dGhpcy5oYW5kbGVWaWV3Q2hhbmdlfVxuICAgICAgICAgICAgb25OYXZpZ2F0ZT17dGhpcy5oYW5kbGVOYXZpZ2F0ZX1cbiAgICAgICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIDxWaWV3XG4gICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgIGV2ZW50cz17ZXZlbnRzfVxuICAgICAgICAgIGJhY2tncm91bmRFdmVudHM9e2JhY2tncm91bmRFdmVudHN9XG4gICAgICAgICAgZGF0ZT17Y3VycmVudH1cbiAgICAgICAgICBnZXROb3c9e2dldE5vd31cbiAgICAgICAgICBsZW5ndGg9e2xlbmd0aH1cbiAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICBnZXR0ZXJzPXtnZXR0ZXJzfVxuICAgICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XG4gICAgICAgICAgYWNjZXNzb3JzPXthY2Nlc3NvcnN9XG4gICAgICAgICAgc2hvd011bHRpRGF5VGltZXM9e3Nob3dNdWx0aURheVRpbWVzfVxuICAgICAgICAgIGdldERyaWxsZG93blZpZXc9e3RoaXMuZ2V0RHJpbGxkb3duVmlld31cbiAgICAgICAgICBvbk5hdmlnYXRlPXt0aGlzLmhhbmRsZU5hdmlnYXRlfVxuICAgICAgICAgIG9uRHJpbGxEb3duPXt0aGlzLmhhbmRsZURyaWxsRG93bn1cbiAgICAgICAgICBvblNlbGVjdEV2ZW50PXt0aGlzLmhhbmRsZVNlbGVjdEV2ZW50fVxuICAgICAgICAgIG9uRG91YmxlQ2xpY2tFdmVudD17dGhpcy5oYW5kbGVEb3VibGVDbGlja0V2ZW50fVxuICAgICAgICAgIG9uS2V5UHJlc3NFdmVudD17dGhpcy5oYW5kbGVLZXlQcmVzc0V2ZW50fVxuICAgICAgICAgIG9uU2VsZWN0U2xvdD17dGhpcy5oYW5kbGVTZWxlY3RTbG90fVxuICAgICAgICAgIG9uU2hvd01vcmU9e29uU2hvd01vcmV9XG4gICAgICAgICAgZG9TaG93TW9yZURyaWxsRG93bj17ZG9TaG93TW9yZURyaWxsRG93bn1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKiBAcGFyYW0gdmlld0NvbXBvbmVudFxuICAgKiBAcGFyYW0geydtb250aCd8J3dlZWsnfCd3b3JrX3dlZWsnfCdkYXknfCdhZ2VuZGEnfSBbdmlld10gLSBvcHRpb25hbFxuICAgKiBwYXJhbWV0ZXIuIEl0IGFwcGVhcnMgd2hlbiByYW5nZSBjaGFuZ2Ugb24gdmlldyBjaGFuZ2luZy4gSXQgY291bGQgYmUgaGFuZHlcbiAgICogd2hlbiB5b3UgbmVlZCB0byBoYXZlIGJvdGg6IHJhbmdlIGFuZCB2aWV3IHR5cGUgYXQgb25jZSwgaS5lLiBmb3IgbWFuYWdlIHJiY1xuICAgKiBzdGF0ZSB2aWEgdXJsXG4gICAqL1xuICBoYW5kbGVSYW5nZUNoYW5nZSA9IChkYXRlLCB2aWV3Q29tcG9uZW50LCB2aWV3KSA9PiB7XG4gICAgbGV0IHsgb25SYW5nZUNoYW5nZSwgbG9jYWxpemVyIH0gPSB0aGlzLnByb3BzXG5cbiAgICBpZiAob25SYW5nZUNoYW5nZSkge1xuICAgICAgaWYgKHZpZXdDb21wb25lbnQucmFuZ2UpIHtcbiAgICAgICAgb25SYW5nZUNoYW5nZSh2aWV3Q29tcG9uZW50LnJhbmdlKGRhdGUsIHsgbG9jYWxpemVyIH0pLCB2aWV3KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdvblJhbmdlQ2hhbmdlIHByb3Agbm90IHN1cHBvcnRlZCBmb3IgdGhpcyB2aWV3JylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU5hdmlnYXRlID0gKGFjdGlvbiwgbmV3RGF0ZSkgPT4ge1xuICAgIGxldCB7IHZpZXcsIGRhdGUsIGdldE5vdywgb25OYXZpZ2F0ZSwgLi4ucHJvcHMgfSA9IHRoaXMucHJvcHNcbiAgICBsZXQgVmlld0NvbXBvbmVudCA9IHRoaXMuZ2V0VmlldygpXG4gICAgbGV0IHRvZGF5ID0gZ2V0Tm93KClcblxuICAgIGRhdGUgPSBtb3ZlRGF0ZShWaWV3Q29tcG9uZW50LCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGFjdGlvbixcbiAgICAgIGRhdGU6IG5ld0RhdGUgfHwgZGF0ZSB8fCB0b2RheSxcbiAgICAgIHRvZGF5LFxuICAgIH0pXG5cbiAgICBvbk5hdmlnYXRlKGRhdGUsIHZpZXcsIGFjdGlvbilcbiAgICB0aGlzLmhhbmRsZVJhbmdlQ2hhbmdlKGRhdGUsIFZpZXdDb21wb25lbnQpXG4gIH1cblxuICBoYW5kbGVWaWV3Q2hhbmdlID0gKHZpZXcpID0+IHtcbiAgICBpZiAodmlldyAhPT0gdGhpcy5wcm9wcy52aWV3ICYmIGlzVmFsaWRWaWV3KHZpZXcsIHRoaXMucHJvcHMpKSB7XG4gICAgICB0aGlzLnByb3BzLm9uVmlldyh2aWV3KVxuICAgIH1cblxuICAgIGxldCB2aWV3cyA9IHRoaXMuZ2V0Vmlld3MoKVxuICAgIHRoaXMuaGFuZGxlUmFuZ2VDaGFuZ2UoXG4gICAgICB0aGlzLnByb3BzLmRhdGUgfHwgdGhpcy5wcm9wcy5nZXROb3coKSxcbiAgICAgIHZpZXdzW3ZpZXddLFxuICAgICAgdmlld1xuICAgIClcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdEV2ZW50ID0gKC4uLmFyZ3MpID0+IHtcbiAgICBub3RpZnkodGhpcy5wcm9wcy5vblNlbGVjdEV2ZW50LCBhcmdzKVxuICB9XG5cbiAgaGFuZGxlRG91YmxlQ2xpY2tFdmVudCA9ICguLi5hcmdzKSA9PiB7XG4gICAgbm90aWZ5KHRoaXMucHJvcHMub25Eb3VibGVDbGlja0V2ZW50LCBhcmdzKVxuICB9XG5cbiAgaGFuZGxlS2V5UHJlc3NFdmVudCA9ICguLi5hcmdzKSA9PiB7XG4gICAgbm90aWZ5KHRoaXMucHJvcHMub25LZXlQcmVzc0V2ZW50LCBhcmdzKVxuICB9XG5cbiAgaGFuZGxlU2VsZWN0U2xvdCA9IChzbG90SW5mbykgPT4ge1xuICAgIG5vdGlmeSh0aGlzLnByb3BzLm9uU2VsZWN0U2xvdCwgc2xvdEluZm8pXG4gIH1cblxuICBoYW5kbGVEcmlsbERvd24gPSAoZGF0ZSwgdmlldykgPT4ge1xuICAgIGNvbnN0IHsgb25EcmlsbERvd24gfSA9IHRoaXMucHJvcHNcbiAgICBpZiAob25EcmlsbERvd24pIHtcbiAgICAgIG9uRHJpbGxEb3duKGRhdGUsIHZpZXcsIHRoaXMuZHJpbGxkb3duVmlldylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAodmlldykgdGhpcy5oYW5kbGVWaWV3Q2hhbmdlKHZpZXcpXG5cbiAgICB0aGlzLmhhbmRsZU5hdmlnYXRlKG5hdmlnYXRlLkRBVEUsIGRhdGUpXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgdW5jb250cm9sbGFibGUoQ2FsZW5kYXIsIHtcbiAgdmlldzogJ29uVmlldycsXG4gIGRhdGU6ICdvbk5hdmlnYXRlJyxcbiAgc2VsZWN0ZWQ6ICdvblNlbGVjdEV2ZW50Jyxcbn0pXG4iLCJpbXBvcnQgaW52YXJpYW50IGZyb20gJ2ludmFyaWFudCdcbmltcG9ydCB7IG5hdmlnYXRlIH0gZnJvbSAnLi9jb25zdGFudHMnXG5pbXBvcnQgVklFV1MgZnJvbSAnLi4vVmlld3MnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1vdmVEYXRlKFZpZXcsIHsgYWN0aW9uLCBkYXRlLCB0b2RheSwgLi4ucHJvcHMgfSkge1xuICBWaWV3ID0gdHlwZW9mIFZpZXcgPT09ICdzdHJpbmcnID8gVklFV1NbVmlld10gOiBWaWV3XG5cbiAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICBjYXNlIG5hdmlnYXRlLlRPREFZOlxuICAgICAgZGF0ZSA9IHRvZGF5IHx8IG5ldyBEYXRlKClcbiAgICAgIGJyZWFrXG4gICAgY2FzZSBuYXZpZ2F0ZS5EQVRFOlxuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgaW52YXJpYW50KFxuICAgICAgICBWaWV3ICYmIHR5cGVvZiBWaWV3Lm5hdmlnYXRlID09PSAnZnVuY3Rpb24nLFxuICAgICAgICAnQ2FsZW5kYXIgVmlldyBjb21wb25lbnRzIG11c3QgaW1wbGVtZW50IGEgc3RhdGljIGAubmF2aWdhdGUoZGF0ZSwgYWN0aW9uKWAgbWV0aG9kLnMnXG4gICAgICApXG4gICAgICBkYXRlID0gVmlldy5uYXZpZ2F0ZShkYXRlLCBhY3Rpb24sIHByb3BzKVxuICB9XG4gIHJldHVybiBkYXRlXG59XG4iLCJpbXBvcnQgeyBEYXRlTG9jYWxpemVyIH0gZnJvbSAnLi4vbG9jYWxpemVyJ1xuXG5jb25zdCB3ZWVrUmFuZ2VGb3JtYXQgPSAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBsb2NhbC5mb3JtYXQoc3RhcnQsICdNTU1NIEREJywgY3VsdHVyZSkgK1xuICAnIOKAkyAnICtcbiAgLy8gdXBkYXRlZCB0byB1c2UgdGhpcyBsb2NhbGl6ZXIgJ2VxKCknIG1ldGhvZFxuICBsb2NhbC5mb3JtYXQoZW5kLCBsb2NhbC5lcShzdGFydCwgZW5kLCAnbW9udGgnKSA/ICdERCcgOiAnTU1NTSBERCcsIGN1bHR1cmUpXG5cbmNvbnN0IGRhdGVSYW5nZUZvcm1hdCA9ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGxvY2FsLmZvcm1hdChzdGFydCwgJ0wnLCBjdWx0dXJlKSArICcg4oCTICcgKyBsb2NhbC5mb3JtYXQoZW5kLCAnTCcsIGN1bHR1cmUpXG5cbmNvbnN0IHRpbWVSYW5nZUZvcm1hdCA9ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGxvY2FsLmZvcm1hdChzdGFydCwgJ0xUJywgY3VsdHVyZSkgKyAnIOKAkyAnICsgbG9jYWwuZm9ybWF0KGVuZCwgJ0xUJywgY3VsdHVyZSlcblxuY29uc3QgdGltZVJhbmdlU3RhcnRGb3JtYXQgPSAoeyBzdGFydCB9LCBjdWx0dXJlLCBsb2NhbCkgPT5cbiAgbG9jYWwuZm9ybWF0KHN0YXJ0LCAnTFQnLCBjdWx0dXJlKSArICcg4oCTICdcblxuY29uc3QgdGltZVJhbmdlRW5kRm9ybWF0ID0gKHsgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICAnIOKAkyAnICsgbG9jYWwuZm9ybWF0KGVuZCwgJ0xUJywgY3VsdHVyZSlcblxuZXhwb3J0IGNvbnN0IGZvcm1hdHMgPSB7XG4gIGRhdGVGb3JtYXQ6ICdERCcsXG4gIGRheUZvcm1hdDogJ0REIGRkZCcsXG4gIHdlZWtkYXlGb3JtYXQ6ICdkZGQnLFxuXG4gIHNlbGVjdFJhbmdlRm9ybWF0OiB0aW1lUmFuZ2VGb3JtYXQsXG4gIGV2ZW50VGltZVJhbmdlRm9ybWF0OiB0aW1lUmFuZ2VGb3JtYXQsXG4gIGV2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQ6IHRpbWVSYW5nZVN0YXJ0Rm9ybWF0LFxuICBldmVudFRpbWVSYW5nZUVuZEZvcm1hdDogdGltZVJhbmdlRW5kRm9ybWF0LFxuXG4gIHRpbWVHdXR0ZXJGb3JtYXQ6ICdMVCcsXG5cbiAgbW9udGhIZWFkZXJGb3JtYXQ6ICdNTU1NIFlZWVknLFxuICBkYXlIZWFkZXJGb3JtYXQ6ICdkZGRkIE1NTSBERCcsXG4gIGRheVJhbmdlSGVhZGVyRm9ybWF0OiB3ZWVrUmFuZ2VGb3JtYXQsXG4gIGFnZW5kYUhlYWRlckZvcm1hdDogZGF0ZVJhbmdlRm9ybWF0LFxuXG4gIGFnZW5kYURhdGVGb3JtYXQ6ICdkZGQgTU1NIEREJyxcbiAgYWdlbmRhVGltZUZvcm1hdDogJ0xUJyxcbiAgYWdlbmRhVGltZVJhbmdlRm9ybWF0OiB0aW1lUmFuZ2VGb3JtYXQsXG59XG5cbmZ1bmN0aW9uIGZpeFVuaXQodW5pdCkge1xuICBsZXQgZGF0ZVBhcnQgPSB1bml0ID8gdW5pdC50b0xvd2VyQ2FzZSgpIDogdW5pdFxuICBpZiAoZGF0ZVBhcnQgPT09ICdGdWxsWWVhcicpIHtcbiAgICBkYXRlUGFydCA9ICd5ZWFyJ1xuICB9IGVsc2UgaWYgKCFkYXRlUGFydCkge1xuICAgIGRhdGVQYXJ0ID0gdW5kZWZpbmVkXG4gIH1cbiAgcmV0dXJuIGRhdGVQYXJ0XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChtb21lbnQpIHtcbiAgY29uc3QgbG9jYWxlID0gKG0sIGMpID0+IChjID8gbS5sb2NhbGUoYykgOiBtKVxuXG4gIGZ1bmN0aW9uIGdldFRpbWV6b25lT2Zmc2V0KGRhdGUpIHtcbiAgICAvLyBlbnN1cmVzIHRoaXMgZ2V0cyBjYXN0IHRvIHRpbWV6b25lXG4gICAgcmV0dXJuIG1vbWVudChkYXRlKS50b0RhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpXG4gIH1cblxuICBmdW5jdGlvbiBnZXREc3RPZmZzZXQoc3RhcnQsIGVuZCkge1xuICAgIC8vIGNvbnZlcnQgdG8gbW9tZW50LCBpbiBjYXNlXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBvZmZzZXQgaW4gdGhlIHRpbWV6b25lIG9mIHRoZSBFdmVudHMgKGxvY2FsKVxuICAgIC8vIG5vdCBpbiB0aGUgdGltZXpvbmUgb2YgdGhlIGNhbGVuZGFyIChtb21lbnQudHopXG4gICAgY29uc3Qgc3QgPSBtb21lbnQoc3RhcnQpLmxvY2FsKClcbiAgICBjb25zdCBlZCA9IG1vbWVudChlbmQpLmxvY2FsKClcbiAgICAvLyBpZiBub3QgdXNpbmcgbW9tZW50IHRpbWV6b25lXG4gICAgaWYgKCFtb21lbnQudHopIHtcbiAgICAgIHJldHVybiBzdC50b0RhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpIC0gZWQudG9EYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBJZiB1c2luZyBtb21lbnQtdGltZXpvbmUsIGFuZCBhIHRpbWV6b25lIGhhcyBiZWVuIGFwcGxpZWQsIHRoZW5cbiAgICAgKiB1c2UgdGhpcyB0byBnZXQgdGhlIHByb3BlciB0aW1lem9uZSBvZmZzZXQsIG90aGVyd2lzZSBkZWZhdWx0XG4gICAgICogdGhlIHRpbWV6b25lIHRvIHRoZSBicm93c2VyIGxvY2FsXG4gICAgICovXG4gICAgY29uc3QgdHpOYW1lID0gc3Q/Ll96Py5uYW1lID8/IG1vbWVudC50ei5ndWVzcygpXG4gICAgY29uc3Qgc3RhcnRPZmZzZXQgPSBtb21lbnQudHouem9uZSh0ek5hbWUpLnV0Y09mZnNldCgrc3QpXG4gICAgY29uc3QgZW5kT2Zmc2V0ID0gbW9tZW50LnR6LnpvbmUodHpOYW1lKS51dGNPZmZzZXQoK2VkKVxuICAgIHJldHVybiBzdGFydE9mZnNldCAtIGVuZE9mZnNldFxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0RGF5U3RhcnREc3RPZmZzZXQoc3RhcnQpIHtcbiAgICBjb25zdCBkYXlTdGFydCA9IG1vbWVudChzdGFydCkuc3RhcnRPZignZGF5JylcbiAgICByZXR1cm4gZ2V0RHN0T2Zmc2V0KGRheVN0YXJ0LCBzdGFydClcbiAgfVxuXG4gIC8qKiogQkVHSU4gbG9jYWxpemVkIGRhdGUgYXJpdGhtZXRpYyBtZXRob2RzIHdpdGggbW9tZW50ICoqKi9cbiAgZnVuY3Rpb24gZGVmaW5lQ29tcGFyYXRvcnMoYSwgYiwgdW5pdCkge1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gZml4VW5pdCh1bml0KVxuICAgIGNvbnN0IGR0QSA9IGRhdGVQYXJ0ID8gbW9tZW50KGEpLnN0YXJ0T2YoZGF0ZVBhcnQpIDogbW9tZW50KGEpXG4gICAgY29uc3QgZHRCID0gZGF0ZVBhcnQgPyBtb21lbnQoYikuc3RhcnRPZihkYXRlUGFydCkgOiBtb21lbnQoYilcbiAgICByZXR1cm4gW2R0QSwgZHRCLCBkYXRlUGFydF1cbiAgfVxuXG4gIGZ1bmN0aW9uIHN0YXJ0T2YoZGF0ZSA9IG51bGwsIHVuaXQpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICBpZiAoZGF0ZVBhcnQpIHtcbiAgICAgIHJldHVybiBtb21lbnQoZGF0ZSkuc3RhcnRPZihkYXRlUGFydCkudG9EYXRlKClcbiAgICB9XG4gICAgcmV0dXJuIG1vbWVudChkYXRlKS50b0RhdGUoKVxuICB9XG5cbiAgZnVuY3Rpb24gZW5kT2YoZGF0ZSA9IG51bGwsIHVuaXQpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICBpZiAoZGF0ZVBhcnQpIHtcbiAgICAgIHJldHVybiBtb21lbnQoZGF0ZSkuZW5kT2YoZGF0ZVBhcnQpLnRvRGF0ZSgpXG4gICAgfVxuICAgIHJldHVybiBtb21lbnQoZGF0ZSkudG9EYXRlKClcbiAgfVxuXG4gIC8vIG1vbWVudCBjb21wYXJpc29uIG9wZXJhdGlvbnMgKmFsd2F5cyogY29udmVydCBib3RoIHNpZGVzIHRvIG1vbWVudCBvYmplY3RzXG4gIC8vIHByaW9yIHRvIHJ1bm5pbmcgdGhlIGNvbXBhcmlzb25zXG4gIGZ1bmN0aW9uIGVxKGEsIGIsIHVuaXQpIHtcbiAgICBjb25zdCBbZHRBLCBkdEIsIGRhdGVQYXJ0XSA9IGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpXG4gICAgcmV0dXJuIGR0QS5pc1NhbWUoZHRCLCBkYXRlUGFydClcbiAgfVxuXG4gIGZ1bmN0aW9uIG5lcShhLCBiLCB1bml0KSB7XG4gICAgcmV0dXJuICFlcShhLCBiLCB1bml0KVxuICB9XG5cbiAgZnVuY3Rpb24gZ3QoYSwgYiwgdW5pdCkge1xuICAgIGNvbnN0IFtkdEEsIGR0QiwgZGF0ZVBhcnRdID0gZGVmaW5lQ29tcGFyYXRvcnMoYSwgYiwgdW5pdClcbiAgICByZXR1cm4gZHRBLmlzQWZ0ZXIoZHRCLCBkYXRlUGFydClcbiAgfVxuXG4gIGZ1bmN0aW9uIGx0KGEsIGIsIHVuaXQpIHtcbiAgICBjb25zdCBbZHRBLCBkdEIsIGRhdGVQYXJ0XSA9IGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpXG4gICAgcmV0dXJuIGR0QS5pc0JlZm9yZShkdEIsIGRhdGVQYXJ0KVxuICB9XG5cbiAgZnVuY3Rpb24gZ3RlKGEsIGIsIHVuaXQpIHtcbiAgICBjb25zdCBbZHRBLCBkdEIsIGRhdGVQYXJ0XSA9IGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpXG4gICAgcmV0dXJuIGR0QS5pc1NhbWVPckJlZm9yZShkdEIsIGRhdGVQYXJ0KVxuICB9XG5cbiAgZnVuY3Rpb24gbHRlKGEsIGIsIHVuaXQpIHtcbiAgICBjb25zdCBbZHRBLCBkdEIsIGRhdGVQYXJ0XSA9IGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpXG4gICAgcmV0dXJuIGR0QS5pc1NhbWVPckJlZm9yZShkdEIsIGRhdGVQYXJ0KVxuICB9XG5cbiAgZnVuY3Rpb24gaW5SYW5nZShkYXksIG1pbiwgbWF4LCB1bml0ID0gJ2RheScpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICBjb25zdCBtRGF5ID0gbW9tZW50KGRheSlcbiAgICBjb25zdCBtTWluID0gbW9tZW50KG1pbilcbiAgICBjb25zdCBtTWF4ID0gbW9tZW50KG1heClcbiAgICByZXR1cm4gbURheS5pc0JldHdlZW4obU1pbiwgbU1heCwgZGF0ZVBhcnQsICdbXScpXG4gIH1cblxuICBmdW5jdGlvbiBtaW4oZGF0ZUEsIGRhdGVCKSB7XG4gICAgY29uc3QgZHRBID0gbW9tZW50KGRhdGVBKVxuICAgIGNvbnN0IGR0QiA9IG1vbWVudChkYXRlQilcbiAgICBjb25zdCBtaW5EdCA9IG1vbWVudC5taW4oZHRBLCBkdEIpXG4gICAgcmV0dXJuIG1pbkR0LnRvRGF0ZSgpXG4gIH1cblxuICBmdW5jdGlvbiBtYXgoZGF0ZUEsIGRhdGVCKSB7XG4gICAgY29uc3QgZHRBID0gbW9tZW50KGRhdGVBKVxuICAgIGNvbnN0IGR0QiA9IG1vbWVudChkYXRlQilcbiAgICBjb25zdCBtYXhEdCA9IG1vbWVudC5tYXgoZHRBLCBkdEIpXG4gICAgcmV0dXJuIG1heER0LnRvRGF0ZSgpXG4gIH1cblxuICBmdW5jdGlvbiBtZXJnZShkYXRlLCB0aW1lKSB7XG4gICAgaWYgKCFkYXRlICYmICF0aW1lKSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3QgdG0gPSBtb21lbnQodGltZSkuZm9ybWF0KCdISDptbTpzcycpXG4gICAgY29uc3QgZHQgPSBtb21lbnQoZGF0ZSkuc3RhcnRPZignZGF5JykuZm9ybWF0KCdNTS9ERC9ZWVlZJylcbiAgICAvLyBXZSBkbyBpdCB0aGlzIHdheSB0byBhdm9pZCBpc3N1ZXMgd2hlbiB0aW1lem9uZSBzd2l0Y2hpbmdcbiAgICByZXR1cm4gbW9tZW50KGAke2R0fSAke3RtfWAsICdNTS9ERC9ZWVlZIEhIOm1tOnNzJykudG9EYXRlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZChkYXRlLCBhZGRlciwgdW5pdCkge1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gZml4VW5pdCh1bml0KVxuICAgIHJldHVybiBtb21lbnQoZGF0ZSkuYWRkKGFkZGVyLCBkYXRlUGFydCkudG9EYXRlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIHJhbmdlKHN0YXJ0LCBlbmQsIHVuaXQgPSAnZGF5Jykge1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gZml4VW5pdCh1bml0KVxuICAgIC8vIGJlY2F1c2UgdGhlIGFkZCBtZXRob2Qgd2lsbCBwdXQgdGhlc2UgaW4gdHosIHdlIGhhdmUgdG8gc3RhcnQgdGhhdCB3YXlcbiAgICBsZXQgY3VycmVudCA9IG1vbWVudChzdGFydCkudG9EYXRlKClcbiAgICBjb25zdCBkYXlzID0gW11cblxuICAgIHdoaWxlIChsdGUoY3VycmVudCwgZW5kKSkge1xuICAgICAgZGF5cy5wdXNoKGN1cnJlbnQpXG4gICAgICBjdXJyZW50ID0gYWRkKGN1cnJlbnQsIDEsIGRhdGVQYXJ0KVxuICAgIH1cblxuICAgIHJldHVybiBkYXlzXG4gIH1cblxuICBmdW5jdGlvbiBjZWlsKGRhdGUsIHVuaXQpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICBjb25zdCBmbG9vciA9IHN0YXJ0T2YoZGF0ZSwgZGF0ZVBhcnQpXG5cbiAgICByZXR1cm4gZXEoZmxvb3IsIGRhdGUpID8gZmxvb3IgOiBhZGQoZmxvb3IsIDEsIGRhdGVQYXJ0KVxuICB9XG5cbiAgZnVuY3Rpb24gZGlmZihhLCBiLCB1bml0ID0gJ2RheScpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICAvLyBkb24ndCB1c2UgJ2RlZmluZUNvbXBhcmF0b3JzJyBoZXJlLCBhcyB3ZSBkb24ndCB3YW50IHRvIG11dGF0ZSB0aGUgdmFsdWVzXG4gICAgY29uc3QgZHRBID0gbW9tZW50KGEpXG4gICAgY29uc3QgZHRCID0gbW9tZW50KGIpXG4gICAgcmV0dXJuIGR0Qi5kaWZmKGR0QSwgZGF0ZVBhcnQpXG4gIH1cblxuICBmdW5jdGlvbiBtaW51dGVzKGRhdGUpIHtcbiAgICBjb25zdCBkdCA9IG1vbWVudChkYXRlKVxuICAgIHJldHVybiBkdC5taW51dGVzKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGZpcnN0T2ZXZWVrKGN1bHR1cmUpIHtcbiAgICBjb25zdCBkYXRhID0gY3VsdHVyZSA/IG1vbWVudC5sb2NhbGVEYXRhKGN1bHR1cmUpIDogbW9tZW50LmxvY2FsZURhdGEoKVxuICAgIHJldHVybiBkYXRhID8gZGF0YS5maXJzdERheU9mV2VlaygpIDogMFxuICB9XG5cbiAgZnVuY3Rpb24gZmlyc3RWaXNpYmxlRGF5KGRhdGUpIHtcbiAgICByZXR1cm4gbW9tZW50KGRhdGUpLnN0YXJ0T2YoJ21vbnRoJykuc3RhcnRPZignd2VlaycpLnRvRGF0ZSgpXG4gIH1cblxuICBmdW5jdGlvbiBsYXN0VmlzaWJsZURheShkYXRlKSB7XG4gICAgcmV0dXJuIG1vbWVudChkYXRlKS5lbmRPZignbW9udGgnKS5lbmRPZignd2VlaycpLnRvRGF0ZSgpXG4gIH1cblxuICBmdW5jdGlvbiB2aXNpYmxlRGF5cyhkYXRlKSB7XG4gICAgbGV0IGN1cnJlbnQgPSBmaXJzdFZpc2libGVEYXkoZGF0ZSlcbiAgICBjb25zdCBsYXN0ID0gbGFzdFZpc2libGVEYXkoZGF0ZSlcbiAgICBjb25zdCBkYXlzID0gW11cblxuICAgIHdoaWxlIChsdGUoY3VycmVudCwgbGFzdCkpIHtcbiAgICAgIGRheXMucHVzaChjdXJyZW50KVxuICAgICAgY3VycmVudCA9IGFkZChjdXJyZW50LCAxLCAnZCcpXG4gICAgfVxuXG4gICAgcmV0dXJuIGRheXNcbiAgfVxuICAvKioqIEVORCBsb2NhbGl6ZWQgZGF0ZSBhcml0aG1ldGljIG1ldGhvZHMgd2l0aCBtb21lbnQgKioqL1xuXG4gIC8qKlxuICAgKiBNb3ZlZCBmcm9tIFRpbWVTbG90cy5qcywgdGhpcyBtZXRob2Qgb3ZlcnJpZGVzIHRoZSBtZXRob2Qgb2YgdGhlIHNhbWUgbmFtZVxuICAgKiBpbiB0aGUgbG9jYWxpemVyLmpzLCB1c2luZyBtb21lbnQgdG8gY29uc3RydWN0IHRoZSBqcyBEYXRlXG4gICAqIEBwYXJhbSB7RGF0ZX0gZHQgLSBkYXRlIHRvIHN0YXJ0IHdpdGhcbiAgICogQHBhcmFtIHtOdW1iZXJ9IG1pbnV0ZXNGcm9tTWlkbmlnaHRcbiAgICogQHBhcmFtIHtOdW1iZXJ9IG9mZnNldFxuICAgKiBAcmV0dXJucyB7RGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGdldFNsb3REYXRlKGR0LCBtaW51dGVzRnJvbU1pZG5pZ2h0LCBvZmZzZXQpIHtcbiAgICByZXR1cm4gbW9tZW50KGR0KVxuICAgICAgLnN0YXJ0T2YoJ2RheScpXG4gICAgICAubWludXRlKG1pbnV0ZXNGcm9tTWlkbmlnaHQgKyBvZmZzZXQpXG4gICAgICAudG9EYXRlKClcbiAgfVxuXG4gIC8vIG1vbWVudCB3aWxsIGF1dG9tYXRpY2FsbHkgaGFuZGxlIERTVCBkaWZmZXJlbmNlcyBpbiBpdCdzIGNhbGN1bGF0aW9uc1xuICBmdW5jdGlvbiBnZXRUb3RhbE1pbihzdGFydCwgZW5kKSB7XG4gICAgcmV0dXJuIGRpZmYoc3RhcnQsIGVuZCwgJ21pbnV0ZXMnKVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TWludXRlc0Zyb21NaWRuaWdodChzdGFydCkge1xuICAgIGNvbnN0IGRheVN0YXJ0ID0gbW9tZW50KHN0YXJ0KS5zdGFydE9mKCdkYXknKVxuICAgIGNvbnN0IGRheSA9IG1vbWVudChzdGFydClcbiAgICByZXR1cm4gZGF5LmRpZmYoZGF5U3RhcnQsICdtaW51dGVzJykgKyBnZXREYXlTdGFydERzdE9mZnNldChzdGFydClcbiAgfVxuXG4gIC8vIFRoZXNlIHR3byBhcmUgdXNlZCBieSBEYXRlU2xvdE1ldHJpY3NcbiAgZnVuY3Rpb24gY29udGludWVzUHJpb3Ioc3RhcnQsIGZpcnN0KSB7XG4gICAgY29uc3QgbVN0YXJ0ID0gbW9tZW50KHN0YXJ0KVxuICAgIGNvbnN0IG1GaXJzdCA9IG1vbWVudChmaXJzdClcbiAgICByZXR1cm4gbVN0YXJ0LmlzQmVmb3JlKG1GaXJzdCwgJ2RheScpXG4gIH1cblxuICBmdW5jdGlvbiBjb250aW51ZXNBZnRlcihzdGFydCwgZW5kLCBsYXN0KSB7XG4gICAgY29uc3QgbUVuZCA9IG1vbWVudChlbmQpXG4gICAgY29uc3QgbUxhc3QgPSBtb21lbnQobGFzdClcbiAgICByZXR1cm4gbUVuZC5pc1NhbWVPckFmdGVyKG1MYXN0LCAnbWludXRlcycpXG4gIH1cblxuICBmdW5jdGlvbiBkYXlTcGFuKHN0YXJ0LCBlbmQpIHtcbiAgICBjb25zdCBtU3RhcnQgPSBtb21lbnQoc3RhcnQpXG4gICAgY29uc3QgbUVuZCA9IG1vbWVudChlbmQpXG4gICAgY29uc3QgZHVyID0gbW9tZW50LmR1cmF0aW9uKG1FbmQuZGlmZihtU3RhcnQpKVxuICAgIHJldHVybiBkdXIuZGF5cygpXG4gIH1cblxuICAvLyBUaGVzZSB0d28gYXJlIHVzZWQgYnkgZXZlbnRMZXZlbHNcbiAgZnVuY3Rpb24gc29ydEV2ZW50cyh7XG4gICAgZXZ0QTogeyBzdGFydDogYVN0YXJ0LCBlbmQ6IGFFbmQsIGFsbERheTogYUFsbERheSB9LFxuICAgIGV2dEI6IHsgc3RhcnQ6IGJTdGFydCwgZW5kOiBiRW5kLCBhbGxEYXk6IGJBbGxEYXkgfSxcbiAgfSkge1xuICAgIGNvbnN0IHN0YXJ0U29ydCA9ICtzdGFydE9mKGFTdGFydCwgJ2RheScpIC0gK3N0YXJ0T2YoYlN0YXJ0LCAnZGF5JylcblxuICAgIGNvbnN0IGR1ckEgPSBkYXlTcGFuKGFTdGFydCwgYUVuZClcblxuICAgIGNvbnN0IGR1ckIgPSBkYXlTcGFuKGJTdGFydCwgYkVuZClcblxuICAgIHJldHVybiAoXG4gICAgICBzdGFydFNvcnQgfHwgLy8gc29ydCBieSBzdGFydCBEYXkgZmlyc3RcbiAgICAgIGR1ckIgLSBkdXJBIHx8IC8vIGV2ZW50cyBzcGFubmluZyBtdWx0aXBsZSBkYXlzIGdvIGZpcnN0XG4gICAgICAhIWJBbGxEYXkgLSAhIWFBbGxEYXkgfHwgLy8gdGhlbiBhbGxEYXkgc2luZ2xlIGRheSBldmVudHNcbiAgICAgICthU3RhcnQgLSArYlN0YXJ0IHx8IC8vIHRoZW4gc29ydCBieSBzdGFydCB0aW1lICpkb24ndCBuZWVkIG1vbWVudCBjb252ZXJzaW9uIGhlcmVcbiAgICAgICthRW5kIC0gK2JFbmQgLy8gdGhlbiBzb3J0IGJ5IGVuZCB0aW1lICpkb24ndCBuZWVkIG1vbWVudCBjb252ZXJzaW9uIGhlcmUgZWl0aGVyXG4gICAgKVxuICB9XG5cbiAgZnVuY3Rpb24gaW5FdmVudFJhbmdlKHtcbiAgICBldmVudDogeyBzdGFydCwgZW5kIH0sXG4gICAgcmFuZ2U6IHsgc3RhcnQ6IHJhbmdlU3RhcnQsIGVuZDogcmFuZ2VFbmQgfSxcbiAgfSkge1xuICAgIGNvbnN0IHN0YXJ0T2ZEYXkgPSBtb21lbnQoc3RhcnQpLnN0YXJ0T2YoJ2RheScpXG4gICAgY29uc3QgZUVuZCA9IG1vbWVudChlbmQpXG4gICAgY29uc3QgclN0YXJ0ID0gbW9tZW50KHJhbmdlU3RhcnQpXG4gICAgY29uc3QgckVuZCA9IG1vbWVudChyYW5nZUVuZClcblxuICAgIGNvbnN0IHN0YXJ0c0JlZm9yZUVuZCA9IHN0YXJ0T2ZEYXkuaXNTYW1lT3JCZWZvcmUockVuZCwgJ2RheScpXG4gICAgLy8gd2hlbiB0aGUgZXZlbnQgaXMgemVybyBkdXJhdGlvbiB3ZSBuZWVkIHRvIGhhbmRsZSBhIGJpdCBkaWZmZXJlbnRseVxuICAgIGNvbnN0IHNhbWVNaW4gPSAhc3RhcnRPZkRheS5pc1NhbWUoZUVuZCwgJ21pbnV0ZXMnKVxuICAgIGNvbnN0IGVuZHNBZnRlclN0YXJ0ID0gc2FtZU1pblxuICAgICAgPyBlRW5kLmlzQWZ0ZXIoclN0YXJ0LCAnbWludXRlcycpXG4gICAgICA6IGVFbmQuaXNTYW1lT3JBZnRlcihyU3RhcnQsICdtaW51dGVzJylcblxuICAgIHJldHVybiBzdGFydHNCZWZvcmVFbmQgJiYgZW5kc0FmdGVyU3RhcnRcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzU2FtZURhdGUoZGF0ZTEsIGRhdGUyKSB7XG4gICAgY29uc3QgZHQgPSBtb21lbnQoZGF0ZTEpXG4gICAgY29uc3QgZHQyID0gbW9tZW50KGRhdGUyKVxuICAgIHJldHVybiBkdC5pc1NhbWUoZHQyLCAnZGF5JylcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCwgY2FsbGVkIG9uY2UgaW4gdGhlIGxvY2FsaXplciBjb25zdHJ1Y3RvciwgaXMgdXNlZCBieSBldmVudExldmVsc1xuICAgKiAnZXZlbnRTZWdtZW50cygpJyB0byBhc3Npc3QgaW4gZGV0ZXJtaW5pbmcgdGhlICdzcGFuJyBvZiB0aGUgZXZlbnQgaW4gdGhlIGRpc3BsYXksXG4gICAqIHNwZWNpZmljYWxseSB3aGVuIHVzaW5nIGEgdGltZXpvbmUgdGhhdCBpcyBncmVhdGVyIHRoYW4gdGhlIGJyb3dzZXIgbmF0aXZlIHRpbWV6b25lLlxuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGZ1bmN0aW9uIGJyb3dzZXJUWk9mZnNldCgpIHtcbiAgICAvKipcbiAgICAgKiBEYXRlLnByb3RvdHlwZS5nZXRUaW1lem9uZU9mZnNldCBob3JyaWZpY2FsbHkgZmxpcHMgdGhlIHBvc2l0aXZlL25lZ2F0aXZlIGZyb21cbiAgICAgKiB3aGF0IHlvdSBzZWUgaW4gaXQncyBzdHJpbmcsIHNvIHdlIGhhdmUgdG8ganVtcCB0aHJvdWdoIHNvbWUgaG9vcHMgdG8gZ2V0IGEgdmFsdWVcbiAgICAgKiB3ZSBjYW4gYWN0dWFsbHkgY29tcGFyZS5cbiAgICAgKi9cbiAgICBjb25zdCBkdCA9IG5ldyBEYXRlKClcbiAgICBjb25zdCBuZWcgPSAvLS8udGVzdChkdC50b1N0cmluZygpKSA/ICctJyA6ICcnXG4gICAgY29uc3QgZHRPZmZzZXQgPSBkdC5nZXRUaW1lem9uZU9mZnNldCgpXG4gICAgY29uc3QgY29tcGFyYXRvciA9IE51bWJlcihgJHtuZWd9JHtNYXRoLmFicyhkdE9mZnNldCl9YClcbiAgICAvLyBtb21lbnQgY29ycmVjdGx5IHByb3ZpZGVzIHBvc2l0aXZlL25lZ2F0aXZlIG9mZnNldCwgYXMgZXhwZWN0ZWRcbiAgICBjb25zdCBtdE9mZnNldCA9IG1vbWVudCgpLnV0Y09mZnNldCgpXG4gICAgcmV0dXJuIG10T2Zmc2V0ID4gY29tcGFyYXRvciA/IDEgOiAwXG4gIH1cblxuICByZXR1cm4gbmV3IERhdGVMb2NhbGl6ZXIoe1xuICAgIGZvcm1hdHMsXG5cbiAgICBmaXJzdE9mV2VlayxcbiAgICBmaXJzdFZpc2libGVEYXksXG4gICAgbGFzdFZpc2libGVEYXksXG4gICAgdmlzaWJsZURheXMsXG5cbiAgICBmb3JtYXQodmFsdWUsIGZvcm1hdCwgY3VsdHVyZSkge1xuICAgICAgcmV0dXJuIGxvY2FsZShtb21lbnQodmFsdWUpLCBjdWx0dXJlKS5mb3JtYXQoZm9ybWF0KVxuICAgIH0sXG5cbiAgICBsdCxcbiAgICBsdGUsXG4gICAgZ3QsXG4gICAgZ3RlLFxuICAgIGVxLFxuICAgIG5lcSxcbiAgICBtZXJnZSxcbiAgICBpblJhbmdlLFxuICAgIHN0YXJ0T2YsXG4gICAgZW5kT2YsXG4gICAgcmFuZ2UsXG4gICAgYWRkLFxuICAgIGRpZmYsXG4gICAgY2VpbCxcbiAgICBtaW4sXG4gICAgbWF4LFxuICAgIG1pbnV0ZXMsXG5cbiAgICBnZXRTbG90RGF0ZSxcbiAgICBnZXRUaW1lem9uZU9mZnNldCxcbiAgICBnZXREc3RPZmZzZXQsXG4gICAgZ2V0VG90YWxNaW4sXG4gICAgZ2V0TWludXRlc0Zyb21NaWRuaWdodCxcbiAgICBjb250aW51ZXNQcmlvcixcbiAgICBjb250aW51ZXNBZnRlcixcbiAgICBzb3J0RXZlbnRzLFxuICAgIGluRXZlbnRSYW5nZSxcbiAgICBpc1NhbWVEYXRlLFxuICAgIGRheVNwYW4sXG4gICAgYnJvd3NlclRaT2Zmc2V0LFxuICB9KVxufVxuIiwiaW1wb3J0IHsgRGF0ZUxvY2FsaXplciB9IGZyb20gJy4uL2xvY2FsaXplcidcblxuZnVuY3Rpb24gcGx1cmFsaXplVW5pdCh1bml0KSB7XG4gIHJldHVybiAvcyQvLnRlc3QodW5pdCkgPyB1bml0IDogdW5pdCArICdzJ1xufVxuXG5jb25zdCB3ZWVrUmFuZ2VGb3JtYXQgPSAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBsb2NhbC5mb3JtYXQoc3RhcnQsICdNTU1NIGRkJywgY3VsdHVyZSkgK1xuICAnIOKAkyAnICtcbiAgLy8gdXBkYXRlZCB0byB1c2UgdGhpcyBsb2NhbGl6ZXIgJ2VxKCknIG1ldGhvZFxuICBsb2NhbC5mb3JtYXQoZW5kLCBsb2NhbC5lcShzdGFydCwgZW5kLCAnbW9udGgnKSA/ICdkZCcgOiAnTU1NTSBkZCcsIGN1bHR1cmUpXG5cbmNvbnN0IGRhdGVSYW5nZUZvcm1hdCA9ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGxvY2FsLmZvcm1hdChzdGFydCwgJ0QnLCBjdWx0dXJlKSArICcg4oCTICcgKyBsb2NhbC5mb3JtYXQoZW5kLCAnRCcsIGN1bHR1cmUpXG5cbmNvbnN0IHRpbWVSYW5nZUZvcm1hdCA9ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGxvY2FsLmZvcm1hdChzdGFydCwgJ3QnLCBjdWx0dXJlKSArICcg4oCTICcgKyBsb2NhbC5mb3JtYXQoZW5kLCAndCcsIGN1bHR1cmUpXG5cbmNvbnN0IHRpbWVSYW5nZVN0YXJ0Rm9ybWF0ID0gKHsgc3RhcnQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGxvY2FsLmZvcm1hdChzdGFydCwgJ3QnLCBjdWx0dXJlKSArICcg4oCTICdcblxuY29uc3QgdGltZVJhbmdlRW5kRm9ybWF0ID0gKHsgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICAnIOKAkyAnICsgbG9jYWwuZm9ybWF0KGVuZCwgJ3QnLCBjdWx0dXJlKVxuXG5leHBvcnQgY29uc3QgZm9ybWF0cyA9IHtcbiAgZGF0ZUZvcm1hdDogJ2RkJyxcbiAgZGF5Rm9ybWF0OiAnZGQgRUVFJyxcbiAgd2Vla2RheUZvcm1hdDogJ0VFRScsXG5cbiAgc2VsZWN0UmFuZ2VGb3JtYXQ6IHRpbWVSYW5nZUZvcm1hdCxcbiAgZXZlbnRUaW1lUmFuZ2VGb3JtYXQ6IHRpbWVSYW5nZUZvcm1hdCxcbiAgZXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdDogdGltZVJhbmdlU3RhcnRGb3JtYXQsXG4gIGV2ZW50VGltZVJhbmdlRW5kRm9ybWF0OiB0aW1lUmFuZ2VFbmRGb3JtYXQsXG5cbiAgdGltZUd1dHRlckZvcm1hdDogJ3QnLFxuXG4gIG1vbnRoSGVhZGVyRm9ybWF0OiAnTU1NTSB5eXl5JyxcbiAgZGF5SGVhZGVyRm9ybWF0OiAnRUVFRSBNTU0gZGQnLFxuICBkYXlSYW5nZUhlYWRlckZvcm1hdDogd2Vla1JhbmdlRm9ybWF0LFxuICBhZ2VuZGFIZWFkZXJGb3JtYXQ6IGRhdGVSYW5nZUZvcm1hdCxcblxuICBhZ2VuZGFEYXRlRm9ybWF0OiAnRUVFIE1NTSBkZCcsXG4gIGFnZW5kYVRpbWVGb3JtYXQ6ICd0JyxcbiAgYWdlbmRhVGltZVJhbmdlRm9ybWF0OiB0aW1lUmFuZ2VGb3JtYXQsXG59XG5cbmZ1bmN0aW9uIGZpeFVuaXQodW5pdCkge1xuICBsZXQgZGF0ZVBhcnQgPSB1bml0ID8gcGx1cmFsaXplVW5pdCh1bml0LnRvTG93ZXJDYXNlKCkpIDogdW5pdFxuICBpZiAoZGF0ZVBhcnQgPT09ICdGdWxsWWVhcicpIHtcbiAgICBkYXRlUGFydCA9ICd5ZWFyJ1xuICB9IGVsc2UgaWYgKCFkYXRlUGFydCkge1xuICAgIGRhdGVQYXJ0ID0gdW5kZWZpbmVkXG4gIH1cbiAgcmV0dXJuIGRhdGVQYXJ0XG59XG5cbi8vIEx1eG9uIGRvZXMgbm90IGN1cnJlbnRseSBoYXZlIHdlZWtJbmZvIGJ5IGN1bHR1cmVcbi8vIEx1eG9uIHVzZXMgMSBiYXNlZCB2YWx1ZXMgZm9yIG1vbnRoIGFuZCB3ZWVrZGF5XG4vLyBTbyB3ZSBkZWZhdWx0IHRvIFN1bmRheSAoNylcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChEYXRlVGltZSwgeyBmaXJzdERheU9mV2VlayA9IDcgfSA9IHt9KSB7XG4gIGZ1bmN0aW9uIGZvcm1hdERhdGUodmFsdWUsIGZvcm1hdCkge1xuICAgIHJldHVybiBEYXRlVGltZS5mcm9tSlNEYXRlKHZhbHVlKS50b0Zvcm1hdChmb3JtYXQpXG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXREYXRlV2l0aEN1bHR1cmUodmFsdWUsIGN1bHR1cmUsIGZvcm1hdCkge1xuICAgIHJldHVybiBEYXRlVGltZS5mcm9tSlNEYXRlKHZhbHVlKS5zZXRMb2NhbGUoY3VsdHVyZSkudG9Gb3JtYXQoZm9ybWF0KVxuICB9XG5cbiAgLyoqKiBCRUdJTiBsb2NhbGl6ZWQgZGF0ZSBhcml0aG1ldGljIG1ldGhvZHMgd2l0aCBMdXhvbiAqKiovXG4gIGZ1bmN0aW9uIGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICBjb25zdCBkdEEgPSBkYXRlUGFydFxuICAgICAgPyBEYXRlVGltZS5mcm9tSlNEYXRlKGEpLnN0YXJ0T2YoZGF0ZVBhcnQpXG4gICAgICA6IERhdGVUaW1lLmZyb21KU0RhdGUoYSlcbiAgICBjb25zdCBkdEIgPSBkYXRlUGFydFxuICAgICAgPyBEYXRlVGltZS5mcm9tSlNEYXRlKGIpLnN0YXJ0T2YoZGF0ZVBhcnQpXG4gICAgICA6IERhdGVUaW1lLmZyb21KU0RhdGUoYilcbiAgICByZXR1cm4gW2R0QSwgZHRCLCBkYXRlUGFydF1cbiAgfVxuXG4gIC8vIFNpbmNlIEx1eG9uIChhbmQgY3VycmVudCBJbnRsIEFQSSkgaGFzIG5vIHN1cHBvcnRcbiAgLy8gZm9yIGN1bHR1cmUgYmFzZWQgd2Vla0luZm8sIHdlIG5lZWQgdG8gaGFuZGxlXG4gIC8vIHRoZSBzdGFydCBvZiB0aGUgd2VlayBkaWZmZXJlbnRseVxuICAvLyBkZXBlbmRpbmcgb24gbG9jYWxlLCB0aGUgZmlyc3REYXlPZldlZWsgY291bGQgYWxzbyBiZSBTYXR1cmRheSwgU3VuZGF5IG9yIE1vbmRheVxuICBmdW5jdGlvbiBzdGFydE9mRFRXZWVrKGR0T2JqKSB7XG4gICAgY29uc3Qgd2Vla2RheSA9IGR0T2JqLndlZWtkYXlcbiAgICBpZiAod2Vla2RheSA9PT0gZmlyc3REYXlPZldlZWspIHtcbiAgICAgIHJldHVybiBkdE9iai5zdGFydE9mKCdkYXknKSAvLyBhbHJlYWR5IGJlZ2lubmluZyBvZiB3ZWVrXG4gICAgfSBlbHNlIGlmIChmaXJzdERheU9mV2VlayA9PT0gMSkge1xuICAgICAgcmV0dXJuIGR0T2JqLnN0YXJ0T2YoJ3dlZWsnKSAvLyBmb3cgaXMgTW9uZGF5LCB3aGljaCBpcyBMdXhvbiBkZWZhdWx0XG4gICAgfVxuICAgIGNvbnN0IGRpZmYgPSBmaXJzdERheU9mV2VlayA9PT0gNyA/IHdlZWtkYXkgOiB3ZWVrZGF5ICsgKDcgLSBmaXJzdERheU9mV2VlaylcbiAgICByZXR1cm4gZHRPYmoubWludXMoeyBkYXk6IGRpZmYgfSkuc3RhcnRPZignZGF5JylcbiAgfVxuXG4gIGZ1bmN0aW9uIGVuZE9mRFRXZWVrKGR0T2JqKSB7XG4gICAgY29uc3Qgd2Vla2RheSA9IGR0T2JqLndlZWtkYXlcbiAgICBjb25zdCBlb3cgPSBmaXJzdERheU9mV2VlayA9PT0gMSA/IDcgOiBmaXJzdERheU9mV2VlayAtIDFcbiAgICBpZiAod2Vla2RheSA9PT0gZW93KSB7XG4gICAgICByZXR1cm4gZHRPYmouZW5kT2YoJ2RheScpIC8vIGFscmVhZHkgbGFzdCBkYXkgb2YgdGhlIHdlZWtcbiAgICB9IGVsc2UgaWYgKGZpcnN0RGF5T2ZXZWVrID09PSAxKSB7XG4gICAgICByZXR1cm4gZHRPYmouZW5kT2YoJ3dlZWsnKSAvLyB1c2UgTHV4b24gZGVmYXVsdCAoU3VuZGF5KVxuICAgIH1cbiAgICBjb25zdCBmcm9tRGF0ZSA9XG4gICAgICBmaXJzdERheU9mV2VlayA+IGVvdyA/IGR0T2JqLnBsdXMoeyBkYXk6IGZpcnN0RGF5T2ZXZWVrIC0gZW93IH0pIDogZHRPYmpcbiAgICByZXR1cm4gZnJvbURhdGUuc2V0KHsgd2Vla2RheTogZW93IH0pLmVuZE9mKCdkYXknKVxuICB9XG5cbiAgLy8gVGhpcyByZXR1cm5zIGEgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgZnVuY3Rpb24gc3RhcnRPZkRUKGRhdGUgPSBuZXcgRGF0ZSgpLCB1bml0KSB7XG4gICAgY29uc3QgZGF0ZVBhcnQgPSBmaXhVbml0KHVuaXQpXG4gICAgaWYgKGRhdGVQYXJ0KSB7XG4gICAgICBjb25zdCBkdCA9IERhdGVUaW1lLmZyb21KU0RhdGUoZGF0ZSlcbiAgICAgIHJldHVybiBkYXRlUGFydC5pbmNsdWRlcygnd2VlaycpXG4gICAgICAgID8gc3RhcnRPZkRUV2VlayhkdClcbiAgICAgICAgOiBkdC5zdGFydE9mKGRhdGVQYXJ0KVxuICAgIH1cbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUpTRGF0ZShkYXRlKVxuICB9XG5cbiAgZnVuY3Rpb24gZmlyc3RPZldlZWsoKSB7XG4gICAgcmV0dXJuIGZpcnN0RGF5T2ZXZWVrXG4gIH1cblxuICAvLyBUaGlzIHJldHVybnMgYSBKUyBEYXRlIGZyb20gYSBEYXRlVGltZSBpbnN0YW5jZVxuICBmdW5jdGlvbiBzdGFydE9mKGRhdGUgPSBuZXcgRGF0ZSgpLCB1bml0KSB7XG4gICAgcmV0dXJuIHN0YXJ0T2ZEVChkYXRlLCB1bml0KS50b0pTRGF0ZSgpXG4gIH1cblxuICAvLyBUaGlzIHJldHVybnMgYSBEYXRlVGltZSBpbnN0YW5jZVxuICBmdW5jdGlvbiBlbmRPZkRUKGRhdGUgPSBuZXcgRGF0ZSgpLCB1bml0KSB7XG4gICAgY29uc3QgZGF0ZVBhcnQgPSBmaXhVbml0KHVuaXQpXG4gICAgaWYgKGRhdGVQYXJ0KSB7XG4gICAgICBjb25zdCBkdCA9IERhdGVUaW1lLmZyb21KU0RhdGUoZGF0ZSlcbiAgICAgIHJldHVybiBkYXRlUGFydC5pbmNsdWRlcygnd2VlaycpID8gZW5kT2ZEVFdlZWsoZHQpIDogZHQuZW5kT2YoZGF0ZVBhcnQpXG4gICAgfVxuICAgIHJldHVybiBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGUpXG4gIH1cblxuICBmdW5jdGlvbiBlbmRPZihkYXRlID0gbmV3IERhdGUoKSwgdW5pdCkge1xuICAgIHJldHVybiBlbmRPZkRUKGRhdGUsIHVuaXQpLnRvSlNEYXRlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGVxKGEsIGIsIHVuaXQpIHtcbiAgICBjb25zdCBbZHRBLCBkdEJdID0gZGVmaW5lQ29tcGFyYXRvcnMoYSwgYiwgdW5pdClcbiAgICByZXR1cm4gK2R0QSA9PSArZHRCXG4gIH1cblxuICBmdW5jdGlvbiBuZXEoYSwgYiwgdW5pdCkge1xuICAgIHJldHVybiAhZXEoYSwgYiwgdW5pdClcbiAgfVxuXG4gIGZ1bmN0aW9uIGd0KGEsIGIsIHVuaXQpIHtcbiAgICBjb25zdCBbZHRBLCBkdEJdID0gZGVmaW5lQ29tcGFyYXRvcnMoYSwgYiwgdW5pdClcbiAgICByZXR1cm4gK2R0QSA+ICtkdEJcbiAgfVxuXG4gIGZ1bmN0aW9uIGx0KGEsIGIsIHVuaXQpIHtcbiAgICBjb25zdCBbZHRBLCBkdEJdID0gZGVmaW5lQ29tcGFyYXRvcnMoYSwgYiwgdW5pdClcbiAgICByZXR1cm4gK2R0QSA8ICtkdEJcbiAgfVxuXG4gIGZ1bmN0aW9uIGd0ZShhLCBiLCB1bml0KSB7XG4gICAgY29uc3QgW2R0QSwgZHRCXSA9IGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpXG4gICAgcmV0dXJuICtkdEEgPj0gK2R0QlxuICB9XG5cbiAgZnVuY3Rpb24gbHRlKGEsIGIsIHVuaXQpIHtcbiAgICBjb25zdCBbZHRBLCBkdEJdID0gZGVmaW5lQ29tcGFyYXRvcnMoYSwgYiwgdW5pdClcbiAgICByZXR1cm4gK2R0QSA8PSArZHRCXG4gIH1cblxuICBmdW5jdGlvbiBpblJhbmdlKGRheSwgbWluLCBtYXgsIHVuaXQgPSAnZGF5Jykge1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gZml4VW5pdCh1bml0KVxuICAgIGNvbnN0IG1EYXkgPSBzdGFydE9mRFQoZGF5LCBkYXRlUGFydClcbiAgICBjb25zdCBtTWluID0gc3RhcnRPZkRUKG1pbiwgZGF0ZVBhcnQpXG4gICAgY29uc3QgbU1heCA9IHN0YXJ0T2ZEVChtYXgsIGRhdGVQYXJ0KVxuICAgIHJldHVybiArbURheSA+PSArbU1pbiAmJiArbURheSA8PSArbU1heFxuICB9XG5cbiAgZnVuY3Rpb24gbWluKGRhdGVBLCBkYXRlQikge1xuICAgIGNvbnN0IGR0QSA9IERhdGVUaW1lLmZyb21KU0RhdGUoZGF0ZUEpXG4gICAgY29uc3QgZHRCID0gRGF0ZVRpbWUuZnJvbUpTRGF0ZShkYXRlQilcbiAgICBjb25zdCBtaW5EdCA9IERhdGVUaW1lLm1pbihkdEEsIGR0QilcbiAgICByZXR1cm4gbWluRHQudG9KU0RhdGUoKVxuICB9XG5cbiAgZnVuY3Rpb24gbWF4KGRhdGVBLCBkYXRlQikge1xuICAgIGNvbnN0IGR0QSA9IERhdGVUaW1lLmZyb21KU0RhdGUoZGF0ZUEpXG4gICAgY29uc3QgZHRCID0gRGF0ZVRpbWUuZnJvbUpTRGF0ZShkYXRlQilcbiAgICBjb25zdCBtYXhEdCA9IERhdGVUaW1lLm1heChkdEEsIGR0QilcbiAgICByZXR1cm4gbWF4RHQudG9KU0RhdGUoKVxuICB9XG5cbiAgZnVuY3Rpb24gbWVyZ2UoZGF0ZSwgdGltZSkge1xuICAgIGlmICghZGF0ZSAmJiAhdGltZSkgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHRtID0gRGF0ZVRpbWUuZnJvbUpTRGF0ZSh0aW1lKVxuICAgIGNvbnN0IGR0ID0gc3RhcnRPZkRUKGRhdGUsICdkYXknKVxuICAgIHJldHVybiBkdFxuICAgICAgLnNldCh7XG4gICAgICAgIGhvdXI6IHRtLmhvdXIsXG4gICAgICAgIG1pbnV0ZTogdG0ubWludXRlLFxuICAgICAgICBzZWNvbmQ6IHRtLnNlY29uZCxcbiAgICAgICAgbWlsbGlzZWNvbmQ6IHRtLm1pbGxpc2Vjb25kLFxuICAgICAgfSlcbiAgICAgIC50b0pTRGF0ZSgpXG4gIH1cblxuICBmdW5jdGlvbiBhZGQoZGF0ZSwgYWRkZXIsIHVuaXQpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUpTRGF0ZShkYXRlKVxuICAgICAgLnBsdXMoeyBbZGF0ZVBhcnRdOiBhZGRlciB9KVxuICAgICAgLnRvSlNEYXRlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIHJhbmdlKHN0YXJ0LCBlbmQsIHVuaXQgPSAnZGF5Jykge1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gZml4VW5pdCh1bml0KVxuICAgIGxldCBjdXJyZW50ID0gRGF0ZVRpbWUuZnJvbUpTRGF0ZShzdGFydCkudG9KU0RhdGUoKSAvLyB0aGlzIGlzIHRvIGdldCBpdCB0byB0elxuICAgIGNvbnN0IGRheXMgPSBbXVxuXG4gICAgd2hpbGUgKGx0ZShjdXJyZW50LCBlbmQpKSB7XG4gICAgICBkYXlzLnB1c2goY3VycmVudClcbiAgICAgIGN1cnJlbnQgPSBhZGQoY3VycmVudCwgMSwgZGF0ZVBhcnQpXG4gICAgfVxuXG4gICAgcmV0dXJuIGRheXNcbiAgfVxuXG4gIGZ1bmN0aW9uIGNlaWwoZGF0ZSwgdW5pdCkge1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gZml4VW5pdCh1bml0KVxuICAgIGNvbnN0IGZsb29yID0gc3RhcnRPZihkYXRlLCBkYXRlUGFydClcblxuICAgIHJldHVybiBlcShmbG9vciwgZGF0ZSkgPyBmbG9vciA6IGFkZChmbG9vciwgMSwgZGF0ZVBhcnQpXG4gIH1cblxuICBmdW5jdGlvbiBkaWZmKGEsIGIsIHVuaXQgPSAnZGF5Jykge1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gZml4VW5pdCh1bml0KVxuICAgIC8vIGRvbid0IHVzZSAnZGVmaW5lQ29tcGFyYXRvcnMnIGhlcmUsIGFzIHdlIGRvbid0IHdhbnQgdG8gbXV0YXRlIHRoZSB2YWx1ZXNcbiAgICBjb25zdCBkdEEgPSBEYXRlVGltZS5mcm9tSlNEYXRlKGEpXG4gICAgY29uc3QgZHRCID0gRGF0ZVRpbWUuZnJvbUpTRGF0ZShiKVxuICAgIHJldHVybiBNYXRoLmZsb29yKFxuICAgICAgZHRCLmRpZmYoZHRBLCBkYXRlUGFydCwgeyBjb252ZXJzaW9uQWNjdXJhY3k6ICdsb25ndGVybScgfSkudG9PYmplY3QoKVtcbiAgICAgICAgZGF0ZVBhcnRcbiAgICAgIF1cbiAgICApXG4gIH1cblxuICBmdW5jdGlvbiBmaXJzdFZpc2libGVEYXkoZGF0ZSkge1xuICAgIGNvbnN0IHN0YXJ0T2ZNb250aCA9IHN0YXJ0T2ZEVChkYXRlLCAnbW9udGgnKVxuICAgIHJldHVybiBzdGFydE9mRFRXZWVrKHN0YXJ0T2ZNb250aCkudG9KU0RhdGUoKVxuICB9XG5cbiAgZnVuY3Rpb24gbGFzdFZpc2libGVEYXkoZGF0ZSkge1xuICAgIGNvbnN0IGVuZE9mTW9udGggPSBlbmRPZkRUKGRhdGUsICdtb250aCcpXG4gICAgcmV0dXJuIGVuZE9mRFRXZWVrKGVuZE9mTW9udGgpLnRvSlNEYXRlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIHZpc2libGVEYXlzKGRhdGUpIHtcbiAgICBsZXQgY3VycmVudCA9IGZpcnN0VmlzaWJsZURheShkYXRlKVxuICAgIGNvbnN0IGxhc3QgPSBsYXN0VmlzaWJsZURheShkYXRlKVxuICAgIGNvbnN0IGRheXMgPSBbXVxuXG4gICAgd2hpbGUgKGx0ZShjdXJyZW50LCBsYXN0KSkge1xuICAgICAgZGF5cy5wdXNoKGN1cnJlbnQpXG4gICAgICBjdXJyZW50ID0gYWRkKGN1cnJlbnQsIDEsICdkYXknKVxuICAgIH1cblxuICAgIHJldHVybiBkYXlzXG4gIH1cbiAgLyoqKiBFTkQgbG9jYWxpemVkIGRhdGUgYXJpdGhtZXRpYyBtZXRob2RzIHdpdGggbW9tZW50ICoqKi9cblxuICAvKipcbiAgICogTW92ZWQgZnJvbSBUaW1lU2xvdHMuanMsIHRoaXMgbWV0aG9kIG92ZXJyaWRlcyB0aGUgbWV0aG9kIG9mIHRoZSBzYW1lIG5hbWVcbiAgICogaW4gdGhlIGxvY2FsaXplci5qcywgdXNpbmcgbW9tZW50IHRvIGNvbnN0cnVjdCB0aGUganMgRGF0ZVxuICAgKiBAcGFyYW0ge0RhdGV9IGR0IC0gZGF0ZSB0byBzdGFydCB3aXRoXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBtaW51dGVzRnJvbU1pZG5pZ2h0XG4gICAqIEBwYXJhbSB7TnVtYmVyfSBvZmZzZXRcbiAgICogQHJldHVybnMge0RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBnZXRTbG90RGF0ZShkdCwgbWludXRlc0Zyb21NaWRuaWdodCwgb2Zmc2V0KSB7XG4gICAgcmV0dXJuIHN0YXJ0T2ZEVChkdCwgJ2RheScpXG4gICAgICAuc2V0KHsgbWludXRlczogbWludXRlc0Zyb21NaWRuaWdodCArIG9mZnNldCB9KVxuICAgICAgLnRvSlNEYXRlKClcbiAgfVxuXG4gIC8vIEx1eG9uIHdpbGwgYXV0b21hdGljYWxseSBoYW5kbGUgRFNUIGRpZmZlcmVuY2VzIGluIGl0J3MgY2FsY3VsYXRpb25zXG4gIGZ1bmN0aW9uIGdldFRvdGFsTWluKHN0YXJ0LCBlbmQpIHtcbiAgICByZXR1cm4gZGlmZihzdGFydCwgZW5kLCAnbWludXRlcycpXG4gIH1cblxuICBmdW5jdGlvbiBnZXRNaW51dGVzRnJvbU1pZG5pZ2h0KHN0YXJ0KSB7XG4gICAgY29uc3QgZGF5U3RhcnQgPSBzdGFydE9mRFQoc3RhcnQsICdkYXknKVxuICAgIGNvbnN0IGRheSA9IERhdGVUaW1lLmZyb21KU0RhdGUoc3RhcnQpXG4gICAgcmV0dXJuIE1hdGgucm91bmQoXG4gICAgICBkYXlcbiAgICAgICAgLmRpZmYoZGF5U3RhcnQsICdtaW51dGVzJywgeyBjb252ZXJzaW9uQWNjdXJhY3k6ICdsb25ndGVybScgfSlcbiAgICAgICAgLnRvT2JqZWN0KCkubWludXRlc1xuICAgIClcbiAgfVxuXG4gIC8vIFRoZXNlIHR3byBhcmUgdXNlZCBieSBEYXRlU2xvdE1ldHJpY3NcbiAgZnVuY3Rpb24gY29udGludWVzUHJpb3Ioc3RhcnQsIGZpcnN0KSB7XG4gICAgcmV0dXJuIGx0KHN0YXJ0LCBmaXJzdClcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbnRpbnVlc0FmdGVyKHN0YXJ0LCBlbmQsIGxhc3QpIHtcbiAgICByZXR1cm4gZ3RlKGVuZCwgbGFzdClcbiAgfVxuXG4gIGZ1bmN0aW9uIGRheVNwYW4oc3RhcnQsIGVuZCkge1xuICAgIGNvbnN0IGR0U3RhcnQgPSBEYXRlVGltZS5mcm9tSlNEYXRlKHN0YXJ0KVxuICAgIGNvbnN0IGR0RW5kID0gRGF0ZVRpbWUuZnJvbUpTRGF0ZShlbmQpXG4gICAgcmV0dXJuIGR0RW5kLmRpZmYoZHRTdGFydCkuYXMoJ2RheXMnKVxuICB9XG5cbiAgLy8gVGhlc2UgdHdvIGFyZSB1c2VkIGJ5IGV2ZW50TGV2ZWxzXG4gIGZ1bmN0aW9uIHNvcnRFdmVudHMoe1xuICAgIGV2dEE6IHsgc3RhcnQ6IGFTdGFydCwgZW5kOiBhRW5kLCBhbGxEYXk6IGFBbGxEYXkgfSxcbiAgICBldnRCOiB7IHN0YXJ0OiBiU3RhcnQsIGVuZDogYkVuZCwgYWxsRGF5OiBiQWxsRGF5IH0sXG4gIH0pIHtcbiAgICBjb25zdCBzdGFydFNvcnQgPSArc3RhcnRPZihhU3RhcnQsICdkYXknKSAtICtzdGFydE9mKGJTdGFydCwgJ2RheScpXG5cbiAgICBjb25zdCBkdXJBID0gZGF5U3BhbihhU3RhcnQsIGFFbmQpXG5cbiAgICBjb25zdCBkdXJCID0gZGF5U3BhbihiU3RhcnQsIGJFbmQpXG5cbiAgICByZXR1cm4gKFxuICAgICAgc3RhcnRTb3J0IHx8IC8vIHNvcnQgYnkgc3RhcnQgRGF5IGZpcnN0XG4gICAgICBkdXJCIC0gZHVyQSB8fCAvLyBldmVudHMgc3Bhbm5pbmcgbXVsdGlwbGUgZGF5cyBnbyBmaXJzdFxuICAgICAgISFiQWxsRGF5IC0gISFhQWxsRGF5IHx8IC8vIHRoZW4gYWxsRGF5IHNpbmdsZSBkYXkgZXZlbnRzXG4gICAgICArYVN0YXJ0IC0gK2JTdGFydCB8fCAvLyB0aGVuIHNvcnQgYnkgc3RhcnQgdGltZSAqZG9uJ3QgbmVlZCBtb21lbnQgY29udmVyc2lvbiBoZXJlXG4gICAgICArYUVuZCAtICtiRW5kIC8vIHRoZW4gc29ydCBieSBlbmQgdGltZSAqZG9uJ3QgbmVlZCBtb21lbnQgY29udmVyc2lvbiBoZXJlIGVpdGhlclxuICAgIClcbiAgfVxuXG4gIGZ1bmN0aW9uIGluRXZlbnRSYW5nZSh7XG4gICAgZXZlbnQ6IHsgc3RhcnQsIGVuZCB9LFxuICAgIHJhbmdlOiB7IHN0YXJ0OiByYW5nZVN0YXJ0LCBlbmQ6IHJhbmdlRW5kIH0sXG4gIH0pIHtcbiAgICBjb25zdCBlU3RhcnQgPSBzdGFydE9mKHN0YXJ0LCAnZGF5JylcblxuICAgIGNvbnN0IHN0YXJ0c0JlZm9yZUVuZCA9IGx0ZShlU3RhcnQsIHJhbmdlRW5kLCAnZGF5JylcbiAgICAvLyB3aGVuIHRoZSBldmVudCBpcyB6ZXJvIGR1cmF0aW9uIHdlIG5lZWQgdG8gaGFuZGxlIGEgYml0IGRpZmZlcmVudGx5XG4gICAgY29uc3Qgc2FtZU1pbiA9IG5lcShlU3RhcnQsIGVuZCwgJ21pbnV0ZXMnKVxuICAgIGNvbnN0IGVuZHNBZnRlclN0YXJ0ID0gc2FtZU1pblxuICAgICAgPyBndChlbmQsIHJhbmdlU3RhcnQsICdtaW51dGVzJylcbiAgICAgIDogZ3RlKGVuZCwgcmFuZ2VTdGFydCwgJ21pbnV0ZXMnKVxuICAgIHJldHVybiBzdGFydHNCZWZvcmVFbmQgJiYgZW5kc0FmdGVyU3RhcnRcbiAgfVxuXG4gIC8vIG1vbWVudCB0cmVhdHMgJ2RheScgYW5kICdkYXRlJyBlcXVhbGl0eSB2ZXJ5IGRpZmZlcmVudFxuICAvLyBtb21lbnQoZGF0ZTEpLmlzU2FtZShkYXRlMiwgJ2RheScpIHdvdWxkIHRlc3QgdGhhdCB0aGV5IHdlcmUgYm90aCB0aGUgc2FtZSBkYXkgb2YgdGhlIHdlZWtcbiAgLy8gbW9tZW50KGRhdGUxKS5pc1NhbWUoZGF0ZTIsICdkYXRlJykgd291bGQgdGVzdCB0aGF0IHRoZXkgd2VyZSBib3RoIHRoZSBzYW1lIGRhdGUgb2YgdGhlIG1vbnRoIG9mIHRoZSB5ZWFyXG4gIGZ1bmN0aW9uIGlzU2FtZURhdGUoZGF0ZTEsIGRhdGUyKSB7XG4gICAgY29uc3QgZHQgPSBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGUxKVxuICAgIGNvbnN0IGR0MiA9IERhdGVUaW1lLmZyb21KU0RhdGUoZGF0ZTIpXG4gICAgcmV0dXJuIGR0Lmhhc1NhbWUoZHQyLCAnZGF5JylcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCwgY2FsbGVkIG9uY2UgaW4gdGhlIGxvY2FsaXplciBjb25zdHJ1Y3RvciwgaXMgdXNlZCBieSBldmVudExldmVsc1xuICAgKiAnZXZlbnRTZWdtZW50cygpJyB0byBhc3Npc3QgaW4gZGV0ZXJtaW5pbmcgdGhlICdzcGFuJyBvZiB0aGUgZXZlbnQgaW4gdGhlIGRpc3BsYXksXG4gICAqIHNwZWNpZmljYWxseSB3aGVuIHVzaW5nIGEgdGltZXpvbmUgdGhhdCBpcyBncmVhdGVyIHRoYW4gdGhlIGJyb3dzZXIgbmF0aXZlIHRpbWV6b25lLlxuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGZ1bmN0aW9uIGJyb3dzZXJUWk9mZnNldCgpIHtcbiAgICAvKipcbiAgICAgKiBEYXRlLnByb3RvdHlwZS5nZXRUaW1lem9uZU9mZnNldCBob3JyaWZpY2FsbHkgZmxpcHMgdGhlIHBvc2l0aXZlL25lZ2F0aXZlIGZyb21cbiAgICAgKiB3aGF0IHlvdSBzZWUgaW4gaXQncyBzdHJpbmcsIHNvIHdlIGhhdmUgdG8ganVtcCB0aHJvdWdoIHNvbWUgaG9vcHMgdG8gZ2V0IGEgdmFsdWVcbiAgICAgKiB3ZSBjYW4gYWN0dWFsbHkgY29tcGFyZS5cbiAgICAgKi9cbiAgICBjb25zdCBkdCA9IG5ldyBEYXRlKClcbiAgICBjb25zdCBuZWcgPSAvLS8udGVzdChkdC50b1N0cmluZygpKSA/ICctJyA6ICcnXG4gICAgY29uc3QgZHRPZmZzZXQgPSBkdC5nZXRUaW1lem9uZU9mZnNldCgpXG4gICAgY29uc3QgY29tcGFyYXRvciA9IE51bWJlcihgJHtuZWd9JHtNYXRoLmFicyhkdE9mZnNldCl9YClcbiAgICAvLyBtb21lbnQgY29ycmVjdGx5IHByb3ZpZGVzIHBvc2l0aXZlL25lZ2F0aXZlIG9mZnNldCwgYXMgZXhwZWN0ZWRcbiAgICBjb25zdCBtdE9mZnNldCA9IERhdGVUaW1lLmxvY2FsKCkub2Zmc2V0XG4gICAgcmV0dXJuIG10T2Zmc2V0ID4gY29tcGFyYXRvciA/IDEgOiAwXG4gIH1cblxuICByZXR1cm4gbmV3IERhdGVMb2NhbGl6ZXIoe1xuICAgIGZvcm1hdCh2YWx1ZSwgZm9ybWF0LCBjdWx0dXJlKSB7XG4gICAgICBpZiAoY3VsdHVyZSkge1xuICAgICAgICByZXR1cm4gZm9ybWF0RGF0ZVdpdGhDdWx0dXJlKHZhbHVlLCBjdWx0dXJlLCBmb3JtYXQpXG4gICAgICB9XG4gICAgICByZXR1cm4gZm9ybWF0RGF0ZSh2YWx1ZSwgZm9ybWF0KVxuICAgIH0sXG5cbiAgICBmb3JtYXRzLFxuXG4gICAgZmlyc3RPZldlZWssXG4gICAgZmlyc3RWaXNpYmxlRGF5LFxuICAgIGxhc3RWaXNpYmxlRGF5LFxuICAgIHZpc2libGVEYXlzLFxuXG4gICAgbHQsXG4gICAgbHRlLFxuICAgIGd0LFxuICAgIGd0ZSxcbiAgICBlcSxcbiAgICBuZXEsXG4gICAgbWVyZ2UsXG4gICAgaW5SYW5nZSxcbiAgICBzdGFydE9mLFxuICAgIGVuZE9mLFxuICAgIHJhbmdlLFxuICAgIGFkZCxcbiAgICBkaWZmLFxuICAgIGNlaWwsXG4gICAgbWluLFxuICAgIG1heCxcblxuICAgIGdldFNsb3REYXRlLFxuICAgIGdldFRvdGFsTWluLFxuICAgIGdldE1pbnV0ZXNGcm9tTWlkbmlnaHQsXG4gICAgY29udGludWVzUHJpb3IsXG4gICAgY29udGludWVzQWZ0ZXIsXG4gICAgc29ydEV2ZW50cyxcbiAgICBpbkV2ZW50UmFuZ2UsXG4gICAgaXNTYW1lRGF0ZSxcbiAgICBkYXlTcGFuLFxuICAgIGJyb3dzZXJUWk9mZnNldCxcbiAgfSlcbn1cbiIsImltcG9ydCAqIGFzIGRhdGVzIGZyb20gJy4uL3V0aWxzL2RhdGVzJ1xuaW1wb3J0IHsgRGF0ZUxvY2FsaXplciB9IGZyb20gJy4uL2xvY2FsaXplcidcblxubGV0IGRhdGVSYW5nZUZvcm1hdCA9ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGxvY2FsLmZvcm1hdChzdGFydCwgJ2QnLCBjdWx0dXJlKSArICcg4oCTICcgKyBsb2NhbC5mb3JtYXQoZW5kLCAnZCcsIGN1bHR1cmUpXG5cbmxldCB0aW1lUmFuZ2VGb3JtYXQgPSAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBsb2NhbC5mb3JtYXQoc3RhcnQsICd0JywgY3VsdHVyZSkgKyAnIOKAkyAnICsgbG9jYWwuZm9ybWF0KGVuZCwgJ3QnLCBjdWx0dXJlKVxuXG5sZXQgdGltZVJhbmdlU3RhcnRGb3JtYXQgPSAoeyBzdGFydCB9LCBjdWx0dXJlLCBsb2NhbCkgPT5cbiAgbG9jYWwuZm9ybWF0KHN0YXJ0LCAndCcsIGN1bHR1cmUpICsgJyDigJMgJ1xuXG5sZXQgdGltZVJhbmdlRW5kRm9ybWF0ID0gKHsgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICAnIOKAkyAnICsgbG9jYWwuZm9ybWF0KGVuZCwgJ3QnLCBjdWx0dXJlKVxuXG5sZXQgd2Vla1JhbmdlRm9ybWF0ID0gKHsgc3RhcnQsIGVuZCB9LCBjdWx0dXJlLCBsb2NhbCkgPT5cbiAgbG9jYWwuZm9ybWF0KHN0YXJ0LCAnTU1NIGRkJywgY3VsdHVyZSkgK1xuICAnIOKAkyAnICtcbiAgbG9jYWwuZm9ybWF0KGVuZCwgZGF0ZXMuZXEoc3RhcnQsIGVuZCwgJ21vbnRoJykgPyAnZGQnIDogJ01NTSBkZCcsIGN1bHR1cmUpXG5cbmV4cG9ydCBsZXQgZm9ybWF0cyA9IHtcbiAgZGF0ZUZvcm1hdDogJ2RkJyxcbiAgZGF5Rm9ybWF0OiAnZGRkIGRkL01NJyxcbiAgd2Vla2RheUZvcm1hdDogJ2RkZCcsXG5cbiAgc2VsZWN0UmFuZ2VGb3JtYXQ6IHRpbWVSYW5nZUZvcm1hdCxcbiAgZXZlbnRUaW1lUmFuZ2VGb3JtYXQ6IHRpbWVSYW5nZUZvcm1hdCxcbiAgZXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdDogdGltZVJhbmdlU3RhcnRGb3JtYXQsXG4gIGV2ZW50VGltZVJhbmdlRW5kRm9ybWF0OiB0aW1lUmFuZ2VFbmRGb3JtYXQsXG5cbiAgdGltZUd1dHRlckZvcm1hdDogJ3QnLFxuXG4gIG1vbnRoSGVhZGVyRm9ybWF0OiAnWScsXG4gIGRheUhlYWRlckZvcm1hdDogJ2RkZGQgTU1NIGRkJyxcbiAgZGF5UmFuZ2VIZWFkZXJGb3JtYXQ6IHdlZWtSYW5nZUZvcm1hdCxcbiAgYWdlbmRhSGVhZGVyRm9ybWF0OiBkYXRlUmFuZ2VGb3JtYXQsXG5cbiAgYWdlbmRhRGF0ZUZvcm1hdDogJ2RkZCBNTU0gZGQnLFxuICBhZ2VuZGFUaW1lRm9ybWF0OiAndCcsXG4gIGFnZW5kYVRpbWVSYW5nZUZvcm1hdDogdGltZVJhbmdlRm9ybWF0LFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoZ2xvYmFsaXplKSB7XG4gIGZ1bmN0aW9uIGdldEN1bHR1cmUoY3VsdHVyZSkge1xuICAgIHJldHVybiBjdWx0dXJlID8gZ2xvYmFsaXplLmZpbmRDbG9zZXN0Q3VsdHVyZShjdWx0dXJlKSA6IGdsb2JhbGl6ZS5jdWx0dXJlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGZpcnN0T2ZXZWVrKGN1bHR1cmUpIHtcbiAgICBjdWx0dXJlID0gZ2V0Q3VsdHVyZShjdWx0dXJlKVxuICAgIHJldHVybiAoY3VsdHVyZSAmJiBjdWx0dXJlLmNhbGVuZGFyLmZpcnN0RGF5KSB8fCAwXG4gIH1cblxuICByZXR1cm4gbmV3IERhdGVMb2NhbGl6ZXIoe1xuICAgIGZpcnN0T2ZXZWVrLFxuICAgIGZvcm1hdHMsXG4gICAgZm9ybWF0KHZhbHVlLCBmb3JtYXQsIGN1bHR1cmUpIHtcbiAgICAgIHJldHVybiBnbG9iYWxpemUuZm9ybWF0KHZhbHVlLCBmb3JtYXQsIGN1bHR1cmUpXG4gICAgfSxcbiAgfSlcbn1cbiIsIi8vIFRPRE86IGZpeCB0aGUgZ2xvYmFsaXplTG9jYWxpemVyIHRvIHdvcmsgd2l0aCBnbG9iYWxpemUgMS54XG5cbmltcG9ydCAqIGFzIGRhdGVzIGZyb20gJy4uL3V0aWxzL2RhdGVzJ1xuaW1wb3J0IG9sZEdsb2JhbGl6ZSBmcm9tICcuL29sZEdsb2JhbGl6ZSdcbmltcG9ydCB7IERhdGVMb2NhbGl6ZXIgfSBmcm9tICcuLi9sb2NhbGl6ZXInXG5cbmxldCBkYXRlUmFuZ2VGb3JtYXQgPSAoeyBzdGFydCwgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBsb2NhbC5mb3JtYXQoc3RhcnQsIHsgZGF0ZTogJ3Nob3J0JyB9LCBjdWx0dXJlKSArXG4gICcg4oCTICcgK1xuICBsb2NhbC5mb3JtYXQoZW5kLCB7IGRhdGU6ICdzaG9ydCcgfSwgY3VsdHVyZSlcblxubGV0IHRpbWVSYW5nZUZvcm1hdCA9ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGxvY2FsLmZvcm1hdChzdGFydCwgeyB0aW1lOiAnc2hvcnQnIH0sIGN1bHR1cmUpICtcbiAgJyDigJMgJyArXG4gIGxvY2FsLmZvcm1hdChlbmQsIHsgdGltZTogJ3Nob3J0JyB9LCBjdWx0dXJlKVxuXG5sZXQgdGltZVJhbmdlU3RhcnRGb3JtYXQgPSAoeyBzdGFydCB9LCBjdWx0dXJlLCBsb2NhbCkgPT5cbiAgbG9jYWwuZm9ybWF0KHN0YXJ0LCB7IHRpbWU6ICdzaG9ydCcgfSwgY3VsdHVyZSkgKyAnIOKAkyAnXG5cbmxldCB0aW1lUmFuZ2VFbmRGb3JtYXQgPSAoeyBlbmQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gICcg4oCTICcgKyBsb2NhbC5mb3JtYXQoZW5kLCB7IHRpbWU6ICdzaG9ydCcgfSwgY3VsdHVyZSlcblxubGV0IHdlZWtSYW5nZUZvcm1hdCA9ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGxvY2FsLmZvcm1hdChzdGFydCwgJ01NTSBkZCcsIGN1bHR1cmUpICtcbiAgJyDigJMgJyArXG4gIGxvY2FsLmZvcm1hdChlbmQsIGRhdGVzLmVxKHN0YXJ0LCBlbmQsICdtb250aCcpID8gJ2RkJyA6ICdNTU0gZGQnLCBjdWx0dXJlKVxuXG5leHBvcnQgbGV0IGZvcm1hdHMgPSB7XG4gIGRhdGVGb3JtYXQ6ICdkZCcsXG4gIGRheUZvcm1hdDogJ2VlZSBkZC9NTScsXG4gIHdlZWtkYXlGb3JtYXQ6ICdlZWUnLFxuXG4gIHNlbGVjdFJhbmdlRm9ybWF0OiB0aW1lUmFuZ2VGb3JtYXQsXG4gIGV2ZW50VGltZVJhbmdlRm9ybWF0OiB0aW1lUmFuZ2VGb3JtYXQsXG4gIGV2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQ6IHRpbWVSYW5nZVN0YXJ0Rm9ybWF0LFxuICBldmVudFRpbWVSYW5nZUVuZEZvcm1hdDogdGltZVJhbmdlRW5kRm9ybWF0LFxuXG4gIHRpbWVHdXR0ZXJGb3JtYXQ6IHsgdGltZTogJ3Nob3J0JyB9LFxuXG4gIG1vbnRoSGVhZGVyRm9ybWF0OiAnTU1NTSB5eXl5JyxcbiAgZGF5SGVhZGVyRm9ybWF0OiAnZWVlZSBNTU0gZGQnLFxuICBkYXlSYW5nZUhlYWRlckZvcm1hdDogd2Vla1JhbmdlRm9ybWF0LFxuICBhZ2VuZGFIZWFkZXJGb3JtYXQ6IGRhdGVSYW5nZUZvcm1hdCxcblxuICBhZ2VuZGFEYXRlRm9ybWF0OiAnZWVlIE1NTSBkZCcsXG4gIGFnZW5kYVRpbWVGb3JtYXQ6IHsgdGltZTogJ3Nob3J0JyB9LFxuICBhZ2VuZGFUaW1lUmFuZ2VGb3JtYXQ6IHRpbWVSYW5nZUZvcm1hdCxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGdsb2JhbGl6ZSkge1xuICBsZXQgbG9jYWxlID0gKGN1bHR1cmUpID0+IChjdWx0dXJlID8gZ2xvYmFsaXplKGN1bHR1cmUpIDogZ2xvYmFsaXplKVxuXG4gIC8vIHJldHVybiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrIGZyb20gdGhlIGxvY2FsZSBkYXRhLiBEZWZhdWx0cyB0byAnd29ybGQnXG4gIC8vIHRlcnJpdG9yeSBpZiBubyB0ZXJyaXRvcnkgaXMgZGVyaXZhYmxlIGZyb20gQ0xEUi5cbiAgLy8gRmFpbGluZyB0byB1c2UgQ0xEUiBzdXBwbGVtZW50YWwgKG5vdCBsb2FkZWQ/KSwgcmV2ZXJ0IHRvIHRoZSBvcmlnaW5hbFxuICAvLyBtZXRob2Qgb2YgZ2V0dGluZyBmaXJzdCBkYXkgb2Ygd2Vlay5cbiAgZnVuY3Rpb24gZmlyc3RPZldlZWsoY3VsdHVyZSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXlzID0gWydzdW4nLCAnbW9uJywgJ3R1ZScsICd3ZWQnLCAndGh1JywgJ2ZyaScsICdzYXQnXVxuICAgICAgY29uc3QgY2xkciA9IGxvY2FsZShjdWx0dXJlKS5jbGRyXG4gICAgICBjb25zdCB0ZXJyaXRvcnkgPSBjbGRyLmF0dHJpYnV0ZXMudGVycml0b3J5XG4gICAgICBjb25zdCB3ZWVrRGF0YSA9IGNsZHIuZ2V0KCdzdXBwbGVtZW50YWwnKS53ZWVrRGF0YVxuICAgICAgY29uc3QgZmlyc3REYXkgPSB3ZWVrRGF0YS5maXJzdERheVt0ZXJyaXRvcnkgfHwgJzAwMSddXG4gICAgICByZXR1cm4gZGF5cy5pbmRleE9mKGZpcnN0RGF5KVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgJ0ZhaWxlZCB0byBhY2N1cmF0ZWx5IGRldGVybWluZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuJyArXG4gICAgICAgICAgICAnIElzIHN1cHBsZW1lbnRhbCBkYXRhIGxvYWRlZCBpbnRvIENMRFI/J1xuICAgICAgICApXG4gICAgICB9XG4gICAgICAvLyBtYXliZSBjbGRyIHN1cHBsZW1lbnRhbCBpcyBub3QgbG9hZGVkPyByZXZlcnQgdG8gb3JpZ2luYWwgbWV0aG9kXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKVxuICAgICAgLy9jbGRyLWRhdGEgZG9lc24ndCBzZWVtIHRvIGJlIHplcm8gYmFzZWRcbiAgICAgIGxldCBsb2NhbGVEYXkgPSBNYXRoLm1heChcbiAgICAgICAgcGFyc2VJbnQobG9jYWxlKGN1bHR1cmUpLmZvcm1hdERhdGUoZGF0ZSwgeyByYXc6ICdlJyB9KSwgMTApIC0gMSxcbiAgICAgICAgMFxuICAgICAgKVxuXG4gICAgICByZXR1cm4gTWF0aC5hYnMoZGF0ZS5nZXREYXkoKSAtIGxvY2FsZURheSlcbiAgICB9XG4gIH1cblxuICBpZiAoIWdsb2JhbGl6ZS5sb2FkKSByZXR1cm4gb2xkR2xvYmFsaXplKGdsb2JhbGl6ZSlcblxuICByZXR1cm4gbmV3IERhdGVMb2NhbGl6ZXIoe1xuICAgIGZpcnN0T2ZXZWVrLFxuICAgIGZvcm1hdHMsXG4gICAgZm9ybWF0KHZhbHVlLCBmb3JtYXQsIGN1bHR1cmUpIHtcbiAgICAgIGZvcm1hdCA9IHR5cGVvZiBmb3JtYXQgPT09ICdzdHJpbmcnID8geyByYXc6IGZvcm1hdCB9IDogZm9ybWF0XG4gICAgICByZXR1cm4gbG9jYWxlKGN1bHR1cmUpLmZvcm1hdERhdGUodmFsdWUsIGZvcm1hdClcbiAgICB9LFxuICB9KVxufVxuIiwiaW1wb3J0ICogYXMgZGF0ZXMgZnJvbSAnLi4vdXRpbHMvZGF0ZXMnXG5pbXBvcnQgeyBEYXRlTG9jYWxpemVyIH0gZnJvbSAnLi4vbG9jYWxpemVyJ1xuXG5sZXQgZGF0ZVJhbmdlRm9ybWF0ID0gKHsgc3RhcnQsIGVuZCB9LCBjdWx0dXJlLCBsb2NhbCkgPT5cbiAgYCR7bG9jYWwuZm9ybWF0KHN0YXJ0LCAnUCcsIGN1bHR1cmUpfSDigJMgJHtsb2NhbC5mb3JtYXQoZW5kLCAnUCcsIGN1bHR1cmUpfWBcblxubGV0IHRpbWVSYW5nZUZvcm1hdCA9ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGAke2xvY2FsLmZvcm1hdChzdGFydCwgJ3AnLCBjdWx0dXJlKX0g4oCTICR7bG9jYWwuZm9ybWF0KGVuZCwgJ3AnLCBjdWx0dXJlKX1gXG5cbmxldCB0aW1lUmFuZ2VTdGFydEZvcm1hdCA9ICh7IHN0YXJ0IH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBgJHtsb2NhbC5mb3JtYXQoc3RhcnQsICdoOm1tYScsIGN1bHR1cmUpfSDigJMgYFxuXG5sZXQgdGltZVJhbmdlRW5kRm9ybWF0ID0gKHsgZW5kIH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBgIOKAkyAke2xvY2FsLmZvcm1hdChlbmQsICdoOm1tYScsIGN1bHR1cmUpfWBcblxubGV0IHdlZWtSYW5nZUZvcm1hdCA9ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGAke2xvY2FsLmZvcm1hdChzdGFydCwgJ01NTU0gZGQnLCBjdWx0dXJlKX0g4oCTICR7bG9jYWwuZm9ybWF0KFxuICAgIGVuZCxcbiAgICBkYXRlcy5lcShzdGFydCwgZW5kLCAnbW9udGgnKSA/ICdkZCcgOiAnTU1NTSBkZCcsXG4gICAgY3VsdHVyZVxuICApfWBcblxuZXhwb3J0IGxldCBmb3JtYXRzID0ge1xuICBkYXRlRm9ybWF0OiAnZGQnLFxuICBkYXlGb3JtYXQ6ICdkZCBlZWUnLFxuICB3ZWVrZGF5Rm9ybWF0OiAnY2NjYycsXG5cbiAgc2VsZWN0UmFuZ2VGb3JtYXQ6IHRpbWVSYW5nZUZvcm1hdCxcbiAgZXZlbnRUaW1lUmFuZ2VGb3JtYXQ6IHRpbWVSYW5nZUZvcm1hdCxcbiAgZXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdDogdGltZVJhbmdlU3RhcnRGb3JtYXQsXG4gIGV2ZW50VGltZVJhbmdlRW5kRm9ybWF0OiB0aW1lUmFuZ2VFbmRGb3JtYXQsXG5cbiAgdGltZUd1dHRlckZvcm1hdDogJ3AnLFxuXG4gIG1vbnRoSGVhZGVyRm9ybWF0OiAnTU1NTSB5eXl5JyxcbiAgZGF5SGVhZGVyRm9ybWF0OiAnY2NjYyBNTU0gZGQnLFxuICBkYXlSYW5nZUhlYWRlckZvcm1hdDogd2Vla1JhbmdlRm9ybWF0LFxuICBhZ2VuZGFIZWFkZXJGb3JtYXQ6IGRhdGVSYW5nZUZvcm1hdCxcblxuICBhZ2VuZGFEYXRlRm9ybWF0OiAnY2NjIE1NTSBkZCcsXG4gIGFnZW5kYVRpbWVGb3JtYXQ6ICdwJyxcbiAgYWdlbmRhVGltZVJhbmdlRm9ybWF0OiB0aW1lUmFuZ2VGb3JtYXQsXG59XG5cbmNvbnN0IGRhdGVGbnNMb2NhbGl6ZXIgPSBmdW5jdGlvbiAoe1xuICBzdGFydE9mV2VlayxcbiAgZ2V0RGF5LFxuICBmb3JtYXQ6IF9mb3JtYXQsXG4gIGxvY2FsZXMsXG59KSB7XG4gIHJldHVybiBuZXcgRGF0ZUxvY2FsaXplcih7XG4gICAgZm9ybWF0cyxcbiAgICBmaXJzdE9mV2VlayhjdWx0dXJlKSB7XG4gICAgICByZXR1cm4gZ2V0RGF5KHN0YXJ0T2ZXZWVrKG5ldyBEYXRlKCksIHsgbG9jYWxlOiBsb2NhbGVzW2N1bHR1cmVdIH0pKVxuICAgIH0sXG5cbiAgICBmb3JtYXQodmFsdWUsIGZvcm1hdFN0cmluZywgY3VsdHVyZSkge1xuICAgICAgcmV0dXJuIF9mb3JtYXQobmV3IERhdGUodmFsdWUpLCBmb3JtYXRTdHJpbmcsIHtcbiAgICAgICAgbG9jYWxlOiBsb2NhbGVzW2N1bHR1cmVdLFxuICAgICAgfSlcbiAgICB9LFxuICB9KVxufVxuXG5leHBvcnQgZGVmYXVsdCBkYXRlRm5zTG9jYWxpemVyXG4iLCJpbXBvcnQgeyBEYXRlTG9jYWxpemVyIH0gZnJvbSAnLi4vbG9jYWxpemVyJ1xuXG4vLyBpbXBvcnQgZGF5anMgcGx1Z2luc1xuLy8gTm90ZSB0aGF0IHRoZSB0aW1lem9uZSBwbHVnaW4gaXMgbm90IGltcG9ydGVkIGhlcmVcbi8vIHRoaXMgcGx1Z2luIGNhbiBiZSBvcHRpb25hbGx5IGxvYWRlZCBieSB0aGUgdXNlclxuaW1wb3J0IGlzQmV0d2VlbiBmcm9tICdkYXlqcy9wbHVnaW4vaXNCZXR3ZWVuJ1xuaW1wb3J0IGlzU2FtZU9yQWZ0ZXIgZnJvbSAnZGF5anMvcGx1Z2luL2lzU2FtZU9yQWZ0ZXInXG5pbXBvcnQgaXNTYW1lT3JCZWZvcmUgZnJvbSAnZGF5anMvcGx1Z2luL2lzU2FtZU9yQmVmb3JlJ1xuaW1wb3J0IGxvY2FsZURhdGEgZnJvbSAnZGF5anMvcGx1Z2luL2xvY2FsZURhdGEnXG5pbXBvcnQgbG9jYWxpemVkRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXQnXG5pbXBvcnQgbWluTWF4IGZyb20gJ2RheWpzL3BsdWdpbi9taW5NYXgnXG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnXG5cbmNvbnN0IHdlZWtSYW5nZUZvcm1hdCA9ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gIGxvY2FsLmZvcm1hdChzdGFydCwgJ01NTU0gREQnLCBjdWx0dXJlKSArXG4gICcg4oCTICcgK1xuICAvLyB1cGRhdGVkIHRvIHVzZSB0aGlzIGxvY2FsaXplciAnZXEoKScgbWV0aG9kXG4gIGxvY2FsLmZvcm1hdChlbmQsIGxvY2FsLmVxKHN0YXJ0LCBlbmQsICdtb250aCcpID8gJ0REJyA6ICdNTU1NIEREJywgY3VsdHVyZSlcblxuY29uc3QgZGF0ZVJhbmdlRm9ybWF0ID0gKHsgc3RhcnQsIGVuZCB9LCBjdWx0dXJlLCBsb2NhbCkgPT5cbiAgbG9jYWwuZm9ybWF0KHN0YXJ0LCAnTCcsIGN1bHR1cmUpICsgJyDigJMgJyArIGxvY2FsLmZvcm1hdChlbmQsICdMJywgY3VsdHVyZSlcblxuY29uc3QgdGltZVJhbmdlRm9ybWF0ID0gKHsgc3RhcnQsIGVuZCB9LCBjdWx0dXJlLCBsb2NhbCkgPT5cbiAgbG9jYWwuZm9ybWF0KHN0YXJ0LCAnTFQnLCBjdWx0dXJlKSArICcg4oCTICcgKyBsb2NhbC5mb3JtYXQoZW5kLCAnTFQnLCBjdWx0dXJlKVxuXG5jb25zdCB0aW1lUmFuZ2VTdGFydEZvcm1hdCA9ICh7IHN0YXJ0IH0sIGN1bHR1cmUsIGxvY2FsKSA9PlxuICBsb2NhbC5mb3JtYXQoc3RhcnQsICdMVCcsIGN1bHR1cmUpICsgJyDigJMgJ1xuXG5jb25zdCB0aW1lUmFuZ2VFbmRGb3JtYXQgPSAoeyBlbmQgfSwgY3VsdHVyZSwgbG9jYWwpID0+XG4gICcg4oCTICcgKyBsb2NhbC5mb3JtYXQoZW5kLCAnTFQnLCBjdWx0dXJlKVxuXG5leHBvcnQgY29uc3QgZm9ybWF0cyA9IHtcbiAgZGF0ZUZvcm1hdDogJ0REJyxcbiAgZGF5Rm9ybWF0OiAnREQgZGRkJyxcbiAgd2Vla2RheUZvcm1hdDogJ2RkZCcsXG5cbiAgc2VsZWN0UmFuZ2VGb3JtYXQ6IHRpbWVSYW5nZUZvcm1hdCxcbiAgZXZlbnRUaW1lUmFuZ2VGb3JtYXQ6IHRpbWVSYW5nZUZvcm1hdCxcbiAgZXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdDogdGltZVJhbmdlU3RhcnRGb3JtYXQsXG4gIGV2ZW50VGltZVJhbmdlRW5kRm9ybWF0OiB0aW1lUmFuZ2VFbmRGb3JtYXQsXG5cbiAgdGltZUd1dHRlckZvcm1hdDogJ0xUJyxcblxuICBtb250aEhlYWRlckZvcm1hdDogJ01NTU0gWVlZWScsXG4gIGRheUhlYWRlckZvcm1hdDogJ2RkZGQgTU1NIEREJyxcbiAgZGF5UmFuZ2VIZWFkZXJGb3JtYXQ6IHdlZWtSYW5nZUZvcm1hdCxcbiAgYWdlbmRhSGVhZGVyRm9ybWF0OiBkYXRlUmFuZ2VGb3JtYXQsXG5cbiAgYWdlbmRhRGF0ZUZvcm1hdDogJ2RkZCBNTU0gREQnLFxuICBhZ2VuZGFUaW1lRm9ybWF0OiAnTFQnLFxuICBhZ2VuZGFUaW1lUmFuZ2VGb3JtYXQ6IHRpbWVSYW5nZUZvcm1hdCxcbn1cblxuZnVuY3Rpb24gZml4VW5pdCh1bml0KSB7XG4gIGxldCBkYXRlUGFydCA9IHVuaXQgPyB1bml0LnRvTG93ZXJDYXNlKCkgOiB1bml0XG4gIGlmIChkYXRlUGFydCA9PT0gJ0Z1bGxZZWFyJykge1xuICAgIGRhdGVQYXJ0ID0gJ3llYXInXG4gIH0gZWxzZSBpZiAoIWRhdGVQYXJ0KSB7XG4gICAgZGF0ZVBhcnQgPSB1bmRlZmluZWRcbiAgfVxuICByZXR1cm4gZGF0ZVBhcnRcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGRheWpzTGliKSB7XG4gIC8vIGxvYWQgZGF5anMgcGx1Z2luc1xuICBkYXlqc0xpYi5leHRlbmQoaXNCZXR3ZWVuKVxuICBkYXlqc0xpYi5leHRlbmQoaXNTYW1lT3JBZnRlcilcbiAgZGF5anNMaWIuZXh0ZW5kKGlzU2FtZU9yQmVmb3JlKVxuICBkYXlqc0xpYi5leHRlbmQobG9jYWxlRGF0YSlcbiAgZGF5anNMaWIuZXh0ZW5kKGxvY2FsaXplZEZvcm1hdClcbiAgZGF5anNMaWIuZXh0ZW5kKG1pbk1heClcbiAgZGF5anNMaWIuZXh0ZW5kKHV0YylcblxuICBjb25zdCBsb2NhbGUgPSAoZGosIGMpID0+IChjID8gZGoubG9jYWxlKGMpIDogZGopXG5cbiAgLy8gaWYgdGhlIHRpbWV6b25lIHBsdWdpbiBpcyBsb2FkZWQsXG4gIC8vIHRoZW4gdXNlIHRoZSB0aW1lem9uZSBhd2FyZSB2ZXJzaW9uXG4gIGNvbnN0IGRheWpzID0gZGF5anNMaWIudHogPyBkYXlqc0xpYi50eiA6IGRheWpzTGliXG5cbiAgZnVuY3Rpb24gZ2V0VGltZXpvbmVPZmZzZXQoZGF0ZSkge1xuICAgIC8vIGVuc3VyZXMgdGhpcyBnZXRzIGNhc3QgdG8gdGltZXpvbmVcbiAgICByZXR1cm4gZGF5anMoZGF0ZSkudG9EYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0RHN0T2Zmc2V0KHN0YXJ0LCBlbmQpIHtcbiAgICAvLyBjb252ZXJ0IHRvIGRheWpzLCBpbiBjYXNlXG4gICAgY29uc3Qgc3QgPSBkYXlqcyhzdGFydClcbiAgICBjb25zdCBlZCA9IGRheWpzKGVuZClcbiAgICAvLyBpZiBub3QgdXNpbmcgdGhlIGRheWpzIHRpbWV6b25lIHBsdWdpblxuICAgIGlmICghZGF5anMudHopIHtcbiAgICAgIHJldHVybiBzdC50b0RhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpIC0gZWQudG9EYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBJZiBhIGRlZmF1bHQgdGltZXpvbmUgaGFzIGJlZW4gYXBwbGllZCwgdGhlblxuICAgICAqIHVzZSB0aGlzIHRvIGdldCB0aGUgcHJvcGVyIHRpbWV6b25lIG9mZnNldCwgb3RoZXJ3aXNlIGRlZmF1bHRcbiAgICAgKiB0aGUgdGltZXpvbmUgdG8gdGhlIGJyb3dzZXIgbG9jYWxcbiAgICAgKi9cbiAgICBjb25zdCB0ek5hbWUgPSBzdC50eigpLiR4LiR0aW1lem9uZSA/PyBkYXlqc0xpYi50ei5ndWVzcygpXG4gICAgLy8gaW52ZXJ0IG9mZnNldHMgdG8gYmUgaW5saW5lIHdpdGggbW9tZW50LmpzXG4gICAgY29uc3Qgc3RhcnRPZmZzZXQgPSAtZGF5anMudHooK3N0LCB0ek5hbWUpLnV0Y09mZnNldCgpXG4gICAgY29uc3QgZW5kT2Zmc2V0ID0gLWRheWpzLnR6KCtlZCwgdHpOYW1lKS51dGNPZmZzZXQoKVxuICAgIHJldHVybiBzdGFydE9mZnNldCAtIGVuZE9mZnNldFxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0RGF5U3RhcnREc3RPZmZzZXQoc3RhcnQpIHtcbiAgICBjb25zdCBkYXlTdGFydCA9IGRheWpzKHN0YXJ0KS5zdGFydE9mKCdkYXknKVxuICAgIHJldHVybiBnZXREc3RPZmZzZXQoZGF5U3RhcnQsIHN0YXJ0KVxuICB9XG5cbiAgLyoqKiBCRUdJTiBsb2NhbGl6ZWQgZGF0ZSBhcml0aG1ldGljIG1ldGhvZHMgd2l0aCBkYXlqcyAqKiovXG4gIGZ1bmN0aW9uIGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICBjb25zdCBkdEEgPSBkYXRlUGFydCA/IGRheWpzKGEpLnN0YXJ0T2YoZGF0ZVBhcnQpIDogZGF5anMoYSlcbiAgICBjb25zdCBkdEIgPSBkYXRlUGFydCA/IGRheWpzKGIpLnN0YXJ0T2YoZGF0ZVBhcnQpIDogZGF5anMoYilcbiAgICByZXR1cm4gW2R0QSwgZHRCLCBkYXRlUGFydF1cbiAgfVxuXG4gIGZ1bmN0aW9uIHN0YXJ0T2YoZGF0ZSA9IG51bGwsIHVuaXQpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICBpZiAoZGF0ZVBhcnQpIHtcbiAgICAgIHJldHVybiBkYXlqcyhkYXRlKS5zdGFydE9mKGRhdGVQYXJ0KS50b0RhdGUoKVxuICAgIH1cbiAgICByZXR1cm4gZGF5anMoZGF0ZSkudG9EYXRlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGVuZE9mKGRhdGUgPSBudWxsLCB1bml0KSB7XG4gICAgY29uc3QgZGF0ZVBhcnQgPSBmaXhVbml0KHVuaXQpXG4gICAgaWYgKGRhdGVQYXJ0KSB7XG4gICAgICByZXR1cm4gZGF5anMoZGF0ZSkuZW5kT2YoZGF0ZVBhcnQpLnRvRGF0ZSgpXG4gICAgfVxuICAgIHJldHVybiBkYXlqcyhkYXRlKS50b0RhdGUoKVxuICB9XG5cbiAgLy8gZGF5anMgY29tcGFyaXNvbiBvcGVyYXRpb25zICphbHdheXMqIGNvbnZlcnQgYm90aCBzaWRlcyB0byBkYXlqcyBvYmplY3RzXG4gIC8vIHByaW9yIHRvIHJ1bm5pbmcgdGhlIGNvbXBhcmlzb25zXG4gIGZ1bmN0aW9uIGVxKGEsIGIsIHVuaXQpIHtcbiAgICBjb25zdCBbZHRBLCBkdEIsIGRhdGVQYXJ0XSA9IGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpXG4gICAgcmV0dXJuIGR0QS5pc1NhbWUoZHRCLCBkYXRlUGFydClcbiAgfVxuXG4gIGZ1bmN0aW9uIG5lcShhLCBiLCB1bml0KSB7XG4gICAgcmV0dXJuICFlcShhLCBiLCB1bml0KVxuICB9XG5cbiAgZnVuY3Rpb24gZ3QoYSwgYiwgdW5pdCkge1xuICAgIGNvbnN0IFtkdEEsIGR0QiwgZGF0ZVBhcnRdID0gZGVmaW5lQ29tcGFyYXRvcnMoYSwgYiwgdW5pdClcbiAgICByZXR1cm4gZHRBLmlzQWZ0ZXIoZHRCLCBkYXRlUGFydClcbiAgfVxuXG4gIGZ1bmN0aW9uIGx0KGEsIGIsIHVuaXQpIHtcbiAgICBjb25zdCBbZHRBLCBkdEIsIGRhdGVQYXJ0XSA9IGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpXG4gICAgcmV0dXJuIGR0QS5pc0JlZm9yZShkdEIsIGRhdGVQYXJ0KVxuICB9XG5cbiAgZnVuY3Rpb24gZ3RlKGEsIGIsIHVuaXQpIHtcbiAgICBjb25zdCBbZHRBLCBkdEIsIGRhdGVQYXJ0XSA9IGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpXG4gICAgcmV0dXJuIGR0QS5pc1NhbWVPckJlZm9yZShkdEIsIGRhdGVQYXJ0KVxuICB9XG5cbiAgZnVuY3Rpb24gbHRlKGEsIGIsIHVuaXQpIHtcbiAgICBjb25zdCBbZHRBLCBkdEIsIGRhdGVQYXJ0XSA9IGRlZmluZUNvbXBhcmF0b3JzKGEsIGIsIHVuaXQpXG4gICAgcmV0dXJuIGR0QS5pc1NhbWVPckJlZm9yZShkdEIsIGRhdGVQYXJ0KVxuICB9XG5cbiAgZnVuY3Rpb24gaW5SYW5nZShkYXksIG1pbiwgbWF4LCB1bml0ID0gJ2RheScpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IGZpeFVuaXQodW5pdClcbiAgICBjb25zdCBkakRheSA9IGRheWpzKGRheSlcbiAgICBjb25zdCBkak1pbiA9IGRheWpzKG1pbilcbiAgICBjb25zdCBkak1heCA9IGRheWpzKG1heClcbiAgICByZXR1cm4gZGpEYXkuaXNCZXR3ZWVuKGRqTWluLCBkak1heCwgZGF0ZVBhcnQsICdbXScpXG4gIH1cblxuICBmdW5jdGlvbiBtaW4oZGF0ZUEsIGRhdGVCKSB7XG4gICAgY29uc3QgZHRBID0gZGF5anMoZGF0ZUEpXG4gICAgY29uc3QgZHRCID0gZGF5anMoZGF0ZUIpXG4gICAgY29uc3QgbWluRHQgPSBkYXlqc0xpYi5taW4oZHRBLCBkdEIpXG4gICAgcmV0dXJuIG1pbkR0LnRvRGF0ZSgpXG4gIH1cblxuICBmdW5jdGlvbiBtYXgoZGF0ZUEsIGRhdGVCKSB7XG4gICAgY29uc3QgZHRBID0gZGF5anMoZGF0ZUEpXG4gICAgY29uc3QgZHRCID0gZGF5anMoZGF0ZUIpXG4gICAgY29uc3QgbWF4RHQgPSBkYXlqc0xpYi5tYXgoZHRBLCBkdEIpXG4gICAgcmV0dXJuIG1heER0LnRvRGF0ZSgpXG4gIH1cblxuICBmdW5jdGlvbiBtZXJnZShkYXRlLCB0aW1lKSB7XG4gICAgaWYgKCFkYXRlICYmICF0aW1lKSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3QgdG0gPSBkYXlqcyh0aW1lKS5mb3JtYXQoJ0hIOm1tOnNzJylcbiAgICBjb25zdCBkdCA9IGRheWpzKGRhdGUpLnN0YXJ0T2YoJ2RheScpLmZvcm1hdCgnTU0vREQvWVlZWScpXG4gICAgLy8gV2UgZG8gaXQgdGhpcyB3YXkgdG8gYXZvaWQgaXNzdWVzIHdoZW4gdGltZXpvbmUgc3dpdGNoaW5nXG4gICAgcmV0dXJuIGRheWpzTGliKGAke2R0fSAke3RtfWAsICdNTS9ERC9ZWVlZIEhIOm1tOnNzJykudG9EYXRlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZChkYXRlLCBhZGRlciwgdW5pdCkge1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gZml4VW5pdCh1bml0KVxuICAgIHJldHVybiBkYXlqcyhkYXRlKS5hZGQoYWRkZXIsIGRhdGVQYXJ0KS50b0RhdGUoKVxuICB9XG5cbiAgZnVuY3Rpb24gcmFuZ2Uoc3RhcnQsIGVuZCwgdW5pdCA9ICdkYXknKSB7XG4gICAgY29uc3QgZGF0ZVBhcnQgPSBmaXhVbml0KHVuaXQpXG4gICAgLy8gYmVjYXVzZSB0aGUgYWRkIG1ldGhvZCB3aWxsIHB1dCB0aGVzZSBpbiB0eiwgd2UgaGF2ZSB0byBzdGFydCB0aGF0IHdheVxuICAgIGxldCBjdXJyZW50ID0gZGF5anMoc3RhcnQpLnRvRGF0ZSgpXG4gICAgY29uc3QgZGF5cyA9IFtdXG5cbiAgICB3aGlsZSAobHRlKGN1cnJlbnQsIGVuZCkpIHtcbiAgICAgIGRheXMucHVzaChjdXJyZW50KVxuICAgICAgY3VycmVudCA9IGFkZChjdXJyZW50LCAxLCBkYXRlUGFydClcbiAgICB9XG5cbiAgICByZXR1cm4gZGF5c1xuICB9XG5cbiAgZnVuY3Rpb24gY2VpbChkYXRlLCB1bml0KSB7XG4gICAgY29uc3QgZGF0ZVBhcnQgPSBmaXhVbml0KHVuaXQpXG4gICAgY29uc3QgZmxvb3IgPSBzdGFydE9mKGRhdGUsIGRhdGVQYXJ0KVxuXG4gICAgcmV0dXJuIGVxKGZsb29yLCBkYXRlKSA/IGZsb29yIDogYWRkKGZsb29yLCAxLCBkYXRlUGFydClcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpZmYoYSwgYiwgdW5pdCA9ICdkYXknKSB7XG4gICAgY29uc3QgZGF0ZVBhcnQgPSBmaXhVbml0KHVuaXQpXG4gICAgLy8gZG9uJ3QgdXNlICdkZWZpbmVDb21wYXJhdG9ycycgaGVyZSwgYXMgd2UgZG9uJ3Qgd2FudCB0byBtdXRhdGUgdGhlIHZhbHVlc1xuICAgIGNvbnN0IGR0QSA9IGRheWpzKGEpXG4gICAgY29uc3QgZHRCID0gZGF5anMoYilcbiAgICByZXR1cm4gZHRCLmRpZmYoZHRBLCBkYXRlUGFydClcbiAgfVxuXG4gIGZ1bmN0aW9uIG1pbnV0ZXMoZGF0ZSkge1xuICAgIGNvbnN0IGR0ID0gZGF5anMoZGF0ZSlcbiAgICByZXR1cm4gZHQubWludXRlcygpXG4gIH1cblxuICBmdW5jdGlvbiBmaXJzdE9mV2VlayhjdWx0dXJlKSB7XG4gICAgY29uc3QgZGF0YSA9IGN1bHR1cmUgPyBkYXlqc0xpYi5sb2NhbGVEYXRhKGN1bHR1cmUpIDogZGF5anNMaWIubG9jYWxlRGF0YSgpXG4gICAgcmV0dXJuIGRhdGEgPyBkYXRhLmZpcnN0RGF5T2ZXZWVrKCkgOiAwXG4gIH1cblxuICBmdW5jdGlvbiBmaXJzdFZpc2libGVEYXkoZGF0ZSkge1xuICAgIHJldHVybiBkYXlqcyhkYXRlKS5zdGFydE9mKCdtb250aCcpLnN0YXJ0T2YoJ3dlZWsnKS50b0RhdGUoKVxuICB9XG5cbiAgZnVuY3Rpb24gbGFzdFZpc2libGVEYXkoZGF0ZSkge1xuICAgIHJldHVybiBkYXlqcyhkYXRlKS5lbmRPZignbW9udGgnKS5lbmRPZignd2VlaycpLnRvRGF0ZSgpXG4gIH1cblxuICBmdW5jdGlvbiB2aXNpYmxlRGF5cyhkYXRlKSB7XG4gICAgbGV0IGN1cnJlbnQgPSBmaXJzdFZpc2libGVEYXkoZGF0ZSlcbiAgICBjb25zdCBsYXN0ID0gbGFzdFZpc2libGVEYXkoZGF0ZSlcbiAgICBjb25zdCBkYXlzID0gW11cblxuICAgIHdoaWxlIChsdGUoY3VycmVudCwgbGFzdCkpIHtcbiAgICAgIGRheXMucHVzaChjdXJyZW50KVxuICAgICAgY3VycmVudCA9IGFkZChjdXJyZW50LCAxLCAnZCcpXG4gICAgfVxuXG4gICAgcmV0dXJuIGRheXNcbiAgfVxuICAvKioqIEVORCBsb2NhbGl6ZWQgZGF0ZSBhcml0aG1ldGljIG1ldGhvZHMgd2l0aCBkYXlqcyAqKiovXG5cbiAgLyoqXG4gICAqIE1vdmVkIGZyb20gVGltZVNsb3RzLmpzLCB0aGlzIG1ldGhvZCBvdmVycmlkZXMgdGhlIG1ldGhvZCBvZiB0aGUgc2FtZSBuYW1lXG4gICAqIGluIHRoZSBsb2NhbGl6ZXIuanMsIHVzaW5nIGRheWpzIHRvIGNvbnN0cnVjdCB0aGUganMgRGF0ZVxuICAgKiBAcGFyYW0ge0RhdGV9IGR0IC0gZGF0ZSB0byBzdGFydCB3aXRoXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBtaW51dGVzRnJvbU1pZG5pZ2h0XG4gICAqIEBwYXJhbSB7TnVtYmVyfSBvZmZzZXRcbiAgICogQHJldHVybnMge0RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBnZXRTbG90RGF0ZShkdCwgbWludXRlc0Zyb21NaWRuaWdodCwgb2Zmc2V0KSB7XG4gICAgcmV0dXJuIGRheWpzKGR0KVxuICAgICAgLnN0YXJ0T2YoJ2RheScpXG4gICAgICAubWludXRlKG1pbnV0ZXNGcm9tTWlkbmlnaHQgKyBvZmZzZXQpXG4gICAgICAudG9EYXRlKClcbiAgfVxuXG4gIC8vIGRheWpzIHdpbGwgYXV0b21hdGljYWxseSBoYW5kbGUgRFNUIGRpZmZlcmVuY2VzIGluIGl0J3MgY2FsY3VsYXRpb25zXG4gIGZ1bmN0aW9uIGdldFRvdGFsTWluKHN0YXJ0LCBlbmQpIHtcbiAgICByZXR1cm4gZGlmZihzdGFydCwgZW5kLCAnbWludXRlcycpXG4gIH1cblxuICBmdW5jdGlvbiBnZXRNaW51dGVzRnJvbU1pZG5pZ2h0KHN0YXJ0KSB7XG4gICAgY29uc3QgZGF5U3RhcnQgPSBkYXlqcyhzdGFydCkuc3RhcnRPZignZGF5JylcbiAgICBjb25zdCBkYXkgPSBkYXlqcyhzdGFydClcbiAgICByZXR1cm4gZGF5LmRpZmYoZGF5U3RhcnQsICdtaW51dGVzJykgKyBnZXREYXlTdGFydERzdE9mZnNldChzdGFydClcbiAgfVxuXG4gIC8vIFRoZXNlIHR3byBhcmUgdXNlZCBieSBEYXRlU2xvdE1ldHJpY3NcbiAgZnVuY3Rpb24gY29udGludWVzUHJpb3Ioc3RhcnQsIGZpcnN0KSB7XG4gICAgY29uc3QgZGpTdGFydCA9IGRheWpzKHN0YXJ0KVxuICAgIGNvbnN0IGRqRmlyc3QgPSBkYXlqcyhmaXJzdClcbiAgICByZXR1cm4gZGpTdGFydC5pc0JlZm9yZShkakZpcnN0LCAnZGF5JylcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbnRpbnVlc0FmdGVyKHN0YXJ0LCBlbmQsIGxhc3QpIHtcbiAgICBjb25zdCBkakVuZCA9IGRheWpzKGVuZClcbiAgICBjb25zdCBkakxhc3QgPSBkYXlqcyhsYXN0KVxuICAgIHJldHVybiBkakVuZC5pc1NhbWVPckFmdGVyKGRqTGFzdCwgJ21pbnV0ZXMnKVxuICB9XG5cbiAgZnVuY3Rpb24gZGF5U3BhbihzdGFydCwgZW5kKSB7XG4gICAgY29uc3Qgc3RhcnREYXkgPSBkYXlqcyhzdGFydClcbiAgICBjb25zdCBlbmREYXkgPSBkYXlqcyhlbmQpXG4gICAgcmV0dXJuIGVuZERheS5kaWZmKHN0YXJ0RGF5LCAnZGF5JylcbiAgfVxuXG4gIC8vIFRoZXNlIHR3byBhcmUgdXNlZCBieSBldmVudExldmVsc1xuICBmdW5jdGlvbiBzb3J0RXZlbnRzKHtcbiAgICBldnRBOiB7IHN0YXJ0OiBhU3RhcnQsIGVuZDogYUVuZCwgYWxsRGF5OiBhQWxsRGF5IH0sXG4gICAgZXZ0QjogeyBzdGFydDogYlN0YXJ0LCBlbmQ6IGJFbmQsIGFsbERheTogYkFsbERheSB9LFxuICB9KSB7XG4gICAgY29uc3Qgc3RhcnRTb3J0ID0gK3N0YXJ0T2YoYVN0YXJ0LCAnZGF5JykgLSArc3RhcnRPZihiU3RhcnQsICdkYXknKVxuXG4gICAgY29uc3QgZHVyQSA9IGRheVNwYW4oYVN0YXJ0LCBhRW5kKVxuXG4gICAgY29uc3QgZHVyQiA9IGRheVNwYW4oYlN0YXJ0LCBiRW5kKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIHN0YXJ0U29ydCB8fCAvLyBzb3J0IGJ5IHN0YXJ0IERheSBmaXJzdFxuICAgICAgZHVyQiAtIGR1ckEgfHwgLy8gZXZlbnRzIHNwYW5uaW5nIG11bHRpcGxlIGRheXMgZ28gZmlyc3RcbiAgICAgICEhYkFsbERheSAtICEhYUFsbERheSB8fCAvLyB0aGVuIGFsbERheSBzaW5nbGUgZGF5IGV2ZW50c1xuICAgICAgK2FTdGFydCAtICtiU3RhcnQgfHwgLy8gdGhlbiBzb3J0IGJ5IHN0YXJ0IHRpbWUgKmRvbid0IG5lZWQgZGF5anMgY29udmVyc2lvbiBoZXJlXG4gICAgICArYUVuZCAtICtiRW5kIC8vIHRoZW4gc29ydCBieSBlbmQgdGltZSAqZG9uJ3QgbmVlZCBkYXlqcyBjb252ZXJzaW9uIGhlcmUgZWl0aGVyXG4gICAgKVxuICB9XG5cbiAgZnVuY3Rpb24gaW5FdmVudFJhbmdlKHtcbiAgICBldmVudDogeyBzdGFydCwgZW5kIH0sXG4gICAgcmFuZ2U6IHsgc3RhcnQ6IHJhbmdlU3RhcnQsIGVuZDogcmFuZ2VFbmQgfSxcbiAgfSkge1xuICAgIGNvbnN0IHN0YXJ0T2ZEYXkgPSBkYXlqcyhzdGFydCkuc3RhcnRPZignZGF5JylcbiAgICBjb25zdCBlRW5kID0gZGF5anMoZW5kKVxuICAgIGNvbnN0IHJTdGFydCA9IGRheWpzKHJhbmdlU3RhcnQpXG4gICAgY29uc3QgckVuZCA9IGRheWpzKHJhbmdlRW5kKVxuXG4gICAgY29uc3Qgc3RhcnRzQmVmb3JlRW5kID0gc3RhcnRPZkRheS5pc1NhbWVPckJlZm9yZShyRW5kLCAnZGF5JylcbiAgICAvLyB3aGVuIHRoZSBldmVudCBpcyB6ZXJvIGR1cmF0aW9uIHdlIG5lZWQgdG8gaGFuZGxlIGEgYml0IGRpZmZlcmVudGx5XG4gICAgY29uc3Qgc2FtZU1pbiA9ICFzdGFydE9mRGF5LmlzU2FtZShlRW5kLCAnbWludXRlcycpXG4gICAgY29uc3QgZW5kc0FmdGVyU3RhcnQgPSBzYW1lTWluXG4gICAgICA/IGVFbmQuaXNBZnRlcihyU3RhcnQsICdtaW51dGVzJylcbiAgICAgIDogZUVuZC5pc1NhbWVPckFmdGVyKHJTdGFydCwgJ21pbnV0ZXMnKVxuXG4gICAgcmV0dXJuIHN0YXJ0c0JlZm9yZUVuZCAmJiBlbmRzQWZ0ZXJTdGFydFxuICB9XG5cbiAgZnVuY3Rpb24gaXNTYW1lRGF0ZShkYXRlMSwgZGF0ZTIpIHtcbiAgICBjb25zdCBkdCA9IGRheWpzKGRhdGUxKVxuICAgIGNvbnN0IGR0MiA9IGRheWpzKGRhdGUyKVxuICAgIHJldHVybiBkdC5pc1NhbWUoZHQyLCAnZGF5JylcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCwgY2FsbGVkIG9uY2UgaW4gdGhlIGxvY2FsaXplciBjb25zdHJ1Y3RvciwgaXMgdXNlZCBieSBldmVudExldmVsc1xuICAgKiAnZXZlbnRTZWdtZW50cygpJyB0byBhc3Npc3QgaW4gZGV0ZXJtaW5pbmcgdGhlICdzcGFuJyBvZiB0aGUgZXZlbnQgaW4gdGhlIGRpc3BsYXksXG4gICAqIHNwZWNpZmljYWxseSB3aGVuIHVzaW5nIGEgdGltZXpvbmUgdGhhdCBpcyBncmVhdGVyIHRoYW4gdGhlIGJyb3dzZXIgbmF0aXZlIHRpbWV6b25lLlxuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGZ1bmN0aW9uIGJyb3dzZXJUWk9mZnNldCgpIHtcbiAgICAvKipcbiAgICAgKiBEYXRlLnByb3RvdHlwZS5nZXRUaW1lem9uZU9mZnNldCBob3JyaWZpY2FsbHkgZmxpcHMgdGhlIHBvc2l0aXZlL25lZ2F0aXZlIGZyb21cbiAgICAgKiB3aGF0IHlvdSBzZWUgaW4gaXQncyBzdHJpbmcsIHNvIHdlIGhhdmUgdG8ganVtcCB0aHJvdWdoIHNvbWUgaG9vcHMgdG8gZ2V0IGEgdmFsdWVcbiAgICAgKiB3ZSBjYW4gYWN0dWFsbHkgY29tcGFyZS5cbiAgICAgKi9cbiAgICBjb25zdCBkdCA9IG5ldyBEYXRlKClcbiAgICBjb25zdCBuZWcgPSAvLS8udGVzdChkdC50b1N0cmluZygpKSA/ICctJyA6ICcnXG4gICAgY29uc3QgZHRPZmZzZXQgPSBkdC5nZXRUaW1lem9uZU9mZnNldCgpXG4gICAgY29uc3QgY29tcGFyYXRvciA9IE51bWJlcihgJHtuZWd9JHtNYXRoLmFicyhkdE9mZnNldCl9YClcbiAgICAvLyBkYXlqcyBjb3JyZWN0bHkgcHJvdmlkZXMgcG9zaXRpdmUvbmVnYXRpdmUgb2Zmc2V0LCBhcyBleHBlY3RlZFxuICAgIGNvbnN0IG10T2Zmc2V0ID0gZGF5anMoKS51dGNPZmZzZXQoKVxuICAgIHJldHVybiBtdE9mZnNldCA+IGNvbXBhcmF0b3IgPyAxIDogMFxuICB9XG5cbiAgcmV0dXJuIG5ldyBEYXRlTG9jYWxpemVyKHtcbiAgICBmb3JtYXRzLFxuXG4gICAgZmlyc3RPZldlZWssXG4gICAgZmlyc3RWaXNpYmxlRGF5LFxuICAgIGxhc3RWaXNpYmxlRGF5LFxuICAgIHZpc2libGVEYXlzLFxuXG4gICAgZm9ybWF0KHZhbHVlLCBmb3JtYXQsIGN1bHR1cmUpIHtcbiAgICAgIHJldHVybiBsb2NhbGUoZGF5anModmFsdWUpLCBjdWx0dXJlKS5mb3JtYXQoZm9ybWF0KVxuICAgIH0sXG5cbiAgICBsdCxcbiAgICBsdGUsXG4gICAgZ3QsXG4gICAgZ3RlLFxuICAgIGVxLFxuICAgIG5lcSxcbiAgICBtZXJnZSxcbiAgICBpblJhbmdlLFxuICAgIHN0YXJ0T2YsXG4gICAgZW5kT2YsXG4gICAgcmFuZ2UsXG4gICAgYWRkLFxuICAgIGRpZmYsXG4gICAgY2VpbCxcbiAgICBtaW4sXG4gICAgbWF4LFxuICAgIG1pbnV0ZXMsXG5cbiAgICBnZXRTbG90RGF0ZSxcbiAgICBnZXRUaW1lem9uZU9mZnNldCxcbiAgICBnZXREc3RPZmZzZXQsXG4gICAgZ2V0VG90YWxNaW4sXG4gICAgZ2V0TWludXRlc0Zyb21NaWRuaWdodCxcbiAgICBjb250aW51ZXNQcmlvcixcbiAgICBjb250aW51ZXNBZnRlcixcbiAgICBzb3J0RXZlbnRzLFxuICAgIGluRXZlbnRSYW5nZSxcbiAgICBpc1NhbWVEYXRlLFxuICAgIGJyb3dzZXJUWk9mZnNldCxcbiAgfSlcbn1cbiIsImltcG9ydCBFdmVudFdyYXBwZXIgZnJvbSAnLi9FdmVudFdyYXBwZXInXG5pbXBvcnQgQmFja2dyb3VuZFdyYXBwZXIgZnJvbSAnLi9CYWNrZ3JvdW5kV3JhcHBlcidcblxuZXhwb3J0IGNvbnN0IGNvbXBvbmVudHMgPSB7XG4gIGV2ZW50V3JhcHBlcjogRXZlbnRXcmFwcGVyLFxuICB0aW1lU2xvdFdyYXBwZXI6IEJhY2tncm91bmRXcmFwcGVyLFxuICBkYXRlQ2VsbFdyYXBwZXI6IEJhY2tncm91bmRXcmFwcGVyLFxufVxuXG5leHBvcnQgeyBkZWZhdWx0IGFzIENhbGVuZGFyIH0gZnJvbSAnLi9DYWxlbmRhcidcbmV4cG9ydCB7IERhdGVMb2NhbGl6ZXIgfSBmcm9tICcuL2xvY2FsaXplcidcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAnLi9sb2NhbGl6ZXJzL21vbWVudCdcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbHV4b25Mb2NhbGl6ZXIgfSBmcm9tICcuL2xvY2FsaXplcnMvbHV4b24nXG5leHBvcnQgeyBkZWZhdWx0IGFzIGdsb2JhbGl6ZUxvY2FsaXplciB9IGZyb20gJy4vbG9jYWxpemVycy9nbG9iYWxpemUnXG5leHBvcnQgeyBkZWZhdWx0IGFzIGRhdGVGbnNMb2NhbGl6ZXIgfSBmcm9tICcuL2xvY2FsaXplcnMvZGF0ZS1mbnMnXG5leHBvcnQgeyBkZWZhdWx0IGFzIGRheWpzTG9jYWxpemVyIH0gZnJvbSAnLi9sb2NhbGl6ZXJzL2RheWpzJ1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtb3ZlIH0gZnJvbSAnLi91dGlscy9tb3ZlJ1xuZXhwb3J0IHsgdmlld3MgYXMgVmlld3MsIG5hdmlnYXRlIGFzIE5hdmlnYXRlIH0gZnJvbSAnLi91dGlscy9jb25zdGFudHMnXG4iLCIvKipcbiAqIFJldHJpZXZlIHZpYSBhbiBhY2Nlc3Nvci1saWtlIHByb3BlcnR5XG4gKlxuICogICAgYWNjZXNzb3Iob2JqLCAnbmFtZScpICAgLy8gPT4gcmV0cmlldmVzIG9ialsnbmFtZSddXG4gKiAgICBhY2Nlc3NvcihkYXRhLCBmdW5jKSAgICAvLyA9PiByZXRyaWV2ZXMgZnVuYyhkYXRhKVxuICogICAgLi4uIG90aGVyd2lzZSBudWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhY2Nlc3NvcihkYXRhLCBmaWVsZCkge1xuICB2YXIgdmFsdWUgPSBudWxsXG5cbiAgaWYgKHR5cGVvZiBmaWVsZCA9PT0gJ2Z1bmN0aW9uJykgdmFsdWUgPSBmaWVsZChkYXRhKVxuICBlbHNlIGlmIChcbiAgICB0eXBlb2YgZmllbGQgPT09ICdzdHJpbmcnICYmXG4gICAgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmXG4gICAgZGF0YSAhPSBudWxsICYmXG4gICAgZmllbGQgaW4gZGF0YVxuICApXG4gICAgdmFsdWUgPSBkYXRhW2ZpZWxkXVxuXG4gIHJldHVybiB2YWx1ZVxufVxuXG5leHBvcnQgY29uc3Qgd3JhcEFjY2Vzc29yID0gKGFjYykgPT4gKGRhdGEpID0+IGFjY2Vzc29yKGRhdGEsIGFjYylcbiIsImV4cG9ydCBsZXQgbmF2aWdhdGUgPSB7XG4gIFBSRVZJT1VTOiAnUFJFVicsXG4gIE5FWFQ6ICdORVhUJyxcbiAgVE9EQVk6ICdUT0RBWScsXG4gIERBVEU6ICdEQVRFJyxcbn1cblxuZXhwb3J0IGxldCB2aWV3cyA9IHtcbiAgTU9OVEg6ICdtb250aCcsXG4gIFdFRUs6ICd3ZWVrJyxcbiAgV09SS19XRUVLOiAnd29ya193ZWVrJyxcbiAgREFZOiAnZGF5JyxcbiAgQUdFTkRBOiAnYWdlbmRhJyxcbn1cbiIsIi8qIGVzbGludCBuby1mYWxsdGhyb3VnaDogb2ZmICovXG5pbXBvcnQgKiBhcyBkYXRlcyBmcm9tICdkYXRlLWFyaXRobWV0aWMnXG5cbmV4cG9ydCB7XG4gIG1pbGxpc2Vjb25kcyxcbiAgc2Vjb25kcyxcbiAgbWludXRlcyxcbiAgaG91cnMsXG4gIG1vbnRoLFxuICBzdGFydE9mLFxuICBlbmRPZixcbiAgYWRkLFxuICBlcSxcbiAgbmVxLFxuICBndGUsXG4gIGd0LFxuICBsdGUsXG4gIGx0LFxuICBpblJhbmdlLFxuICBtaW4sXG4gIG1heCxcbn0gZnJvbSAnZGF0ZS1hcml0aG1ldGljJ1xuXG5jb25zdCBNSUxMSSA9IHtcbiAgc2Vjb25kczogMTAwMCxcbiAgbWludXRlczogMTAwMCAqIDYwLFxuICBob3VyczogMTAwMCAqIDYwICogNjAsXG4gIGRheTogMTAwMCAqIDYwICogNjAgKiAyNCxcbn1cblxuY29uc3QgTU9OVEhTID0gWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMV1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vbnRoc0luWWVhcih5ZWFyKSB7XG4gIGxldCBkYXRlID0gbmV3IERhdGUoeWVhciwgMCwgMSlcblxuICByZXR1cm4gTU9OVEhTLm1hcCgoaSkgPT4gZGF0ZXMubW9udGgoZGF0ZSwgaSkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdFZpc2libGVEYXkoZGF0ZSwgbG9jYWxpemVyKSB7XG4gIGxldCBmaXJzdE9mTW9udGggPSBkYXRlcy5zdGFydE9mKGRhdGUsICdtb250aCcpXG5cbiAgcmV0dXJuIGRhdGVzLnN0YXJ0T2YoZmlyc3RPZk1vbnRoLCAnd2VlaycsIGxvY2FsaXplci5zdGFydE9mV2VlaygpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFzdFZpc2libGVEYXkoZGF0ZSwgbG9jYWxpemVyKSB7XG4gIGxldCBlbmRPZk1vbnRoID0gZGF0ZXMuZW5kT2YoZGF0ZSwgJ21vbnRoJylcblxuICByZXR1cm4gZGF0ZXMuZW5kT2YoZW5kT2ZNb250aCwgJ3dlZWsnLCBsb2NhbGl6ZXIuc3RhcnRPZldlZWsoKSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZpc2libGVEYXlzKGRhdGUsIGxvY2FsaXplcikge1xuICBsZXQgY3VycmVudCA9IGZpcnN0VmlzaWJsZURheShkYXRlLCBsb2NhbGl6ZXIpLFxuICAgIGxhc3QgPSBsYXN0VmlzaWJsZURheShkYXRlLCBsb2NhbGl6ZXIpLFxuICAgIGRheXMgPSBbXVxuXG4gIHdoaWxlIChkYXRlcy5sdGUoY3VycmVudCwgbGFzdCwgJ2RheScpKSB7XG4gICAgZGF5cy5wdXNoKGN1cnJlbnQpXG4gICAgY3VycmVudCA9IGRhdGVzLmFkZChjdXJyZW50LCAxLCAnZGF5JylcbiAgfVxuXG4gIHJldHVybiBkYXlzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjZWlsKGRhdGUsIHVuaXQpIHtcbiAgbGV0IGZsb29yID0gZGF0ZXMuc3RhcnRPZihkYXRlLCB1bml0KVxuXG4gIHJldHVybiBkYXRlcy5lcShmbG9vciwgZGF0ZSkgPyBmbG9vciA6IGRhdGVzLmFkZChmbG9vciwgMSwgdW5pdClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJhbmdlKHN0YXJ0LCBlbmQsIHVuaXQgPSAnZGF5Jykge1xuICBsZXQgY3VycmVudCA9IHN0YXJ0LFxuICAgIGRheXMgPSBbXVxuXG4gIHdoaWxlIChkYXRlcy5sdGUoY3VycmVudCwgZW5kLCB1bml0KSkge1xuICAgIGRheXMucHVzaChjdXJyZW50KVxuICAgIGN1cnJlbnQgPSBkYXRlcy5hZGQoY3VycmVudCwgMSwgdW5pdClcbiAgfVxuXG4gIHJldHVybiBkYXlzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShkYXRlLCB0aW1lKSB7XG4gIGlmICh0aW1lID09IG51bGwgJiYgZGF0ZSA9PSBudWxsKSByZXR1cm4gbnVsbFxuXG4gIGlmICh0aW1lID09IG51bGwpIHRpbWUgPSBuZXcgRGF0ZSgpXG4gIGlmIChkYXRlID09IG51bGwpIGRhdGUgPSBuZXcgRGF0ZSgpXG5cbiAgZGF0ZSA9IGRhdGVzLnN0YXJ0T2YoZGF0ZSwgJ2RheScpXG4gIGRhdGUgPSBkYXRlcy5ob3VycyhkYXRlLCBkYXRlcy5ob3Vycyh0aW1lKSlcbiAgZGF0ZSA9IGRhdGVzLm1pbnV0ZXMoZGF0ZSwgZGF0ZXMubWludXRlcyh0aW1lKSlcbiAgZGF0ZSA9IGRhdGVzLnNlY29uZHMoZGF0ZSwgZGF0ZXMuc2Vjb25kcyh0aW1lKSlcbiAgcmV0dXJuIGRhdGVzLm1pbGxpc2Vjb25kcyhkYXRlLCBkYXRlcy5taWxsaXNlY29uZHModGltZSkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcVRpbWUoZGF0ZUEsIGRhdGVCKSB7XG4gIHJldHVybiAoXG4gICAgZGF0ZXMuaG91cnMoZGF0ZUEpID09PSBkYXRlcy5ob3VycyhkYXRlQikgJiZcbiAgICBkYXRlcy5taW51dGVzKGRhdGVBKSA9PT0gZGF0ZXMubWludXRlcyhkYXRlQikgJiZcbiAgICBkYXRlcy5zZWNvbmRzKGRhdGVBKSA9PT0gZGF0ZXMuc2Vjb25kcyhkYXRlQilcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNKdXN0RGF0ZShkYXRlKSB7XG4gIHJldHVybiAoXG4gICAgZGF0ZXMuaG91cnMoZGF0ZSkgPT09IDAgJiZcbiAgICBkYXRlcy5taW51dGVzKGRhdGUpID09PSAwICYmXG4gICAgZGF0ZXMuc2Vjb25kcyhkYXRlKSA9PT0gMCAmJlxuICAgIGRhdGVzLm1pbGxpc2Vjb25kcyhkYXRlKSA9PT0gMFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkdXJhdGlvbihzdGFydCwgZW5kLCB1bml0LCBmaXJzdE9mV2Vlaykge1xuICBpZiAodW5pdCA9PT0gJ2RheScpIHVuaXQgPSAnZGF0ZSdcbiAgcmV0dXJuIE1hdGguYWJzKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbmFtZXNwYWNlXG4gICAgZGF0ZXNbdW5pdF0oc3RhcnQsIHVuZGVmaW5lZCwgZmlyc3RPZldlZWspIC1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbmFtZXNwYWNlXG4gICAgICBkYXRlc1t1bml0XShlbmQsIHVuZGVmaW5lZCwgZmlyc3RPZldlZWspXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmYoZGF0ZUEsIGRhdGVCLCB1bml0KSB7XG4gIGlmICghdW5pdCB8fCB1bml0ID09PSAnbWlsbGlzZWNvbmRzJykgcmV0dXJuIE1hdGguYWJzKCtkYXRlQSAtICtkYXRlQilcblxuICAvLyB0aGUgLnJvdW5kKCkgaGFuZGxlcyBhbiBlZGdlIGNhc2VcbiAgLy8gd2l0aCBEU1Qgd2hlcmUgdGhlIHRvdGFsIHdvbid0IGJlIGV4YWN0XG4gIC8vIHNpbmNlIG9uZSBkYXkgaW4gdGhlIHJhbmdlIG1heSBiZSBzaG9ydGVyL2xvbmdlciBieSBhbiBob3VyXG4gIHJldHVybiBNYXRoLnJvdW5kKFxuICAgIE1hdGguYWJzKFxuICAgICAgK2RhdGVzLnN0YXJ0T2YoZGF0ZUEsIHVuaXQpIC8gTUlMTElbdW5pdF0gLVxuICAgICAgICArZGF0ZXMuc3RhcnRPZihkYXRlQiwgdW5pdCkgLyBNSUxMSVt1bml0XVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG90YWwoZGF0ZSwgdW5pdCkge1xuICBsZXQgbXMgPSBkYXRlLmdldFRpbWUoKSxcbiAgICBkaXYgPSAxXG5cbiAgc3dpdGNoICh1bml0KSB7XG4gICAgY2FzZSAnd2Vlayc6XG4gICAgICBkaXYgKj0gN1xuICAgIGNhc2UgJ2RheSc6XG4gICAgICBkaXYgKj0gMjRcbiAgICBjYXNlICdob3Vycyc6XG4gICAgICBkaXYgKj0gNjBcbiAgICBjYXNlICdtaW51dGVzJzpcbiAgICAgIGRpdiAqPSA2MFxuICAgIGNhc2UgJ3NlY29uZHMnOlxuICAgICAgZGl2ICo9IDEwMDBcbiAgfVxuXG4gIHJldHVybiBtcyAvIGRpdlxufVxuXG5leHBvcnQgZnVuY3Rpb24gd2VlayhkYXRlKSB7XG4gIHZhciBkID0gbmV3IERhdGUoZGF0ZSlcbiAgZC5zZXRIb3VycygwLCAwLCAwKVxuICBkLnNldERhdGUoZC5nZXREYXRlKCkgKyA0IC0gKGQuZ2V0RGF5KCkgfHwgNykpXG4gIHJldHVybiBNYXRoLmNlaWwoKChkIC0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKSkgLyA4LjY0ZTcgKyAxKSAvIDcpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b2RheSgpIHtcbiAgcmV0dXJuIGRhdGVzLnN0YXJ0T2YobmV3IERhdGUoKSwgJ2RheScpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB5ZXN0ZXJkYXkoKSB7XG4gIHJldHVybiBkYXRlcy5hZGQoZGF0ZXMuc3RhcnRPZihuZXcgRGF0ZSgpLCAnZGF5JyksIC0xLCAnZGF5Jylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvbW9ycm93KCkge1xuICByZXR1cm4gZGF0ZXMuYWRkKGRhdGVzLnN0YXJ0T2YobmV3IERhdGUoKSwgJ2RheScpLCAxLCAnZGF5Jylcbn1cbiIsImltcG9ydCBmaW5kSW5kZXggZnJvbSAnbG9kYXNoL2ZpbmRJbmRleCdcblxuZXhwb3J0IGZ1bmN0aW9uIGVuZE9mUmFuZ2UoeyBkYXRlUmFuZ2UsIHVuaXQgPSAnZGF5JywgbG9jYWxpemVyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBmaXJzdDogZGF0ZVJhbmdlWzBdLFxuICAgIGxhc3Q6IGxvY2FsaXplci5hZGQoZGF0ZVJhbmdlW2RhdGVSYW5nZS5sZW5ndGggLSAxXSwgMSwgdW5pdCksXG4gIH1cbn1cblxuLy8gcHJvcGVybHkgY2FsY3VsYXRpbmcgc2VnbWVudHMgcmVxdWlyZXMgd29ya2luZyB3aXRoIGRhdGVzIGluXG4vLyB0aGUgdGltZXpvbmUgd2UncmUgd29ya2luZyB3aXRoLCBzbyB3ZSB1c2UgdGhlIGxvY2FsaXplclxuZXhwb3J0IGZ1bmN0aW9uIGV2ZW50U2VnbWVudHMoZXZlbnQsIHJhbmdlLCBhY2Nlc3NvcnMsIGxvY2FsaXplcikge1xuICBsZXQgeyBmaXJzdCwgbGFzdCB9ID0gZW5kT2ZSYW5nZSh7IGRhdGVSYW5nZTogcmFuZ2UsIGxvY2FsaXplciB9KVxuXG4gIGxldCBzbG90cyA9IGxvY2FsaXplci5kaWZmKGZpcnN0LCBsYXN0LCAnZGF5JylcbiAgbGV0IHN0YXJ0ID0gbG9jYWxpemVyLm1heChcbiAgICBsb2NhbGl6ZXIuc3RhcnRPZihhY2Nlc3NvcnMuc3RhcnQoZXZlbnQpLCAnZGF5JyksXG4gICAgZmlyc3RcbiAgKVxuICBsZXQgZW5kID0gbG9jYWxpemVyLm1pbihsb2NhbGl6ZXIuY2VpbChhY2Nlc3NvcnMuZW5kKGV2ZW50KSwgJ2RheScpLCBsYXN0KVxuXG4gIGxldCBwYWRkaW5nID0gZmluZEluZGV4KHJhbmdlLCAoeCkgPT4gbG9jYWxpemVyLmlzU2FtZURhdGUoeCwgc3RhcnQpKVxuICBsZXQgc3BhbiA9IGxvY2FsaXplci5kaWZmKHN0YXJ0LCBlbmQsICdkYXknKVxuXG4gIHNwYW4gPSBNYXRoLm1pbihzcGFuLCBzbG90cylcbiAgLy8gVGhlIHNlZ21lbnRPZmZzZXQgaXMgbmVjZXNzYXJ5IHdoZW4gYWRqdXN0aW5nIGZvciB0aW1lem9uZXNcbiAgLy8gYWhlYWQgb2YgdGhlIGJyb3dzZXIgdGltZXpvbmVcbiAgc3BhbiA9IE1hdGgubWF4KHNwYW4gLSBsb2NhbGl6ZXIuc2VnbWVudE9mZnNldCwgMSlcblxuICByZXR1cm4ge1xuICAgIGV2ZW50LFxuICAgIHNwYW4sXG4gICAgbGVmdDogcGFkZGluZyArIDEsXG4gICAgcmlnaHQ6IE1hdGgubWF4KHBhZGRpbmcgKyBzcGFuLCAxKSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRMZXZlbHMocm93U2VnbWVudHMsIGxpbWl0ID0gSW5maW5pdHkpIHtcbiAgbGV0IGksXG4gICAgaixcbiAgICBzZWcsXG4gICAgbGV2ZWxzID0gW10sXG4gICAgZXh0cmEgPSBbXVxuXG4gIGZvciAoaSA9IDA7IGkgPCByb3dTZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHNlZyA9IHJvd1NlZ21lbnRzW2ldXG5cbiAgICBmb3IgKGogPSAwOyBqIDwgbGV2ZWxzLmxlbmd0aDsgaisrKSBpZiAoIXNlZ3NPdmVybGFwKHNlZywgbGV2ZWxzW2pdKSkgYnJlYWtcblxuICAgIGlmIChqID49IGxpbWl0KSB7XG4gICAgICBleHRyYS5wdXNoKHNlZylcbiAgICB9IGVsc2Uge1xuICAgICAgOyhsZXZlbHNbal0gfHwgKGxldmVsc1tqXSA9IFtdKSkucHVzaChzZWcpXG4gICAgfVxuICB9XG5cbiAgZm9yIChpID0gMDsgaSA8IGxldmVscy5sZW5ndGg7IGkrKykge1xuICAgIGxldmVsc1tpXS5zb3J0KChhLCBiKSA9PiBhLmxlZnQgLSBiLmxlZnQpIC8vZXNsaW50LWRpc2FibGUtbGluZVxuICB9XG5cbiAgcmV0dXJuIHsgbGV2ZWxzLCBleHRyYSB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpblJhbmdlKGUsIHN0YXJ0LCBlbmQsIGFjY2Vzc29ycywgbG9jYWxpemVyKSB7XG4gIGNvbnN0IGV2ZW50ID0ge1xuICAgIHN0YXJ0OiBhY2Nlc3NvcnMuc3RhcnQoZSksXG4gICAgZW5kOiBhY2Nlc3NvcnMuZW5kKGUpLFxuICB9XG4gIGNvbnN0IHJhbmdlID0geyBzdGFydCwgZW5kIH1cbiAgcmV0dXJuIGxvY2FsaXplci5pbkV2ZW50UmFuZ2UoeyBldmVudCwgcmFuZ2UgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlZ3NPdmVybGFwKHNlZywgb3RoZXJTZWdzKSB7XG4gIHJldHVybiBvdGhlclNlZ3Muc29tZShcbiAgICAob3RoZXJTZWcpID0+IG90aGVyU2VnLmxlZnQgPD0gc2VnLnJpZ2h0ICYmIG90aGVyU2VnLnJpZ2h0ID49IHNlZy5sZWZ0XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRXZWVrRXZlbnRzKGV2ZW50cywgYWNjZXNzb3JzLCBsb2NhbGl6ZXIpIHtcbiAgY29uc3QgYmFzZSA9IFsuLi5ldmVudHNdXG4gIGNvbnN0IG11bHRpRGF5RXZlbnRzID0gW11cbiAgY29uc3Qgc3RhbmRhcmRFdmVudHMgPSBbXVxuICBiYXNlLmZvckVhY2goKGV2ZW50KSA9PiB7XG4gICAgY29uc3Qgc3RhcnRDaGVjayA9IGFjY2Vzc29ycy5zdGFydChldmVudClcbiAgICBjb25zdCBlbmRDaGVjayA9IGFjY2Vzc29ycy5lbmQoZXZlbnQpXG4gICAgaWYgKGxvY2FsaXplci5kYXlTcGFuKHN0YXJ0Q2hlY2ssIGVuZENoZWNrKSA+IDEpIHtcbiAgICAgIG11bHRpRGF5RXZlbnRzLnB1c2goZXZlbnQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YW5kYXJkRXZlbnRzLnB1c2goZXZlbnQpXG4gICAgfVxuICB9KVxuICBjb25zdCBtdWx0aVNvcnRlZCA9IG11bHRpRGF5RXZlbnRzLnNvcnQoKGEsIGIpID0+XG4gICAgc29ydEV2ZW50cyhhLCBiLCBhY2Nlc3NvcnMsIGxvY2FsaXplcilcbiAgKVxuICBjb25zdCBzdGFuZGFyZFNvcnRlZCA9IHN0YW5kYXJkRXZlbnRzLnNvcnQoKGEsIGIpID0+XG4gICAgc29ydEV2ZW50cyhhLCBiLCBhY2Nlc3NvcnMsIGxvY2FsaXplcilcbiAgKVxuICByZXR1cm4gWy4uLm11bHRpU29ydGVkLCAuLi5zdGFuZGFyZFNvcnRlZF1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRFdmVudHMoZXZlbnRBLCBldmVudEIsIGFjY2Vzc29ycywgbG9jYWxpemVyKSB7XG4gIGNvbnN0IGV2dEEgPSB7XG4gICAgc3RhcnQ6IGFjY2Vzc29ycy5zdGFydChldmVudEEpLFxuICAgIGVuZDogYWNjZXNzb3JzLmVuZChldmVudEEpLFxuICAgIGFsbERheTogYWNjZXNzb3JzLmFsbERheShldmVudEEpLFxuICB9XG4gIGNvbnN0IGV2dEIgPSB7XG4gICAgc3RhcnQ6IGFjY2Vzc29ycy5zdGFydChldmVudEIpLFxuICAgIGVuZDogYWNjZXNzb3JzLmVuZChldmVudEIpLFxuICAgIGFsbERheTogYWNjZXNzb3JzLmFsbERheShldmVudEIpLFxuICB9XG4gIHJldHVybiBsb2NhbGl6ZXIuc29ydEV2ZW50cyh7IGV2dEEsIGV2dEIgfSlcbn1cbiIsInZhciBpZENvdW50ID0gMFxuXG5mdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgcmV0dXJuICcnICsgKChwcmVmaXggPT0gbnVsbCA/ICcnIDogcHJlZml4KSArICsraWRDb3VudClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vdGlmeShoYW5kbGVyLCBhcmdzKSB7XG4gIGhhbmRsZXIgJiYgaGFuZGxlci5hcHBseShudWxsLCBbXS5jb25jYXQoYXJncykpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW5jZUlkKGNvbXBvbmVudCwgc3VmZml4ID0gJycpIHtcbiAgY29tcG9uZW50Ll9faWQgfHwgKGNvbXBvbmVudC5fX2lkID0gdW5pcXVlSWQoJ3J3XycpKVxuICByZXR1cm4gKGNvbXBvbmVudC5wcm9wcy5pZCB8fCBjb21wb25lbnQuX19pZCkgKyBzdWZmaXhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmlyc3RGb2N1c2VkUmVuZGVyKGNvbXBvbmVudCkge1xuICByZXR1cm4gKFxuICAgIGNvbXBvbmVudC5fZmlyc3RGb2N1cyB8fFxuICAgIChjb21wb25lbnQuc3RhdGUuZm9jdXNlZCAmJiAoY29tcG9uZW50Ll9maXJzdEZvY3VzID0gdHJ1ZSkpXG4gIClcbn1cbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IHZpZXdzIGFzIFZpZXdzIH0gZnJvbSAnLi9jb25zdGFudHMnXG5cbmxldCB2aWV3TmFtZXMgPSBPYmplY3Qua2V5cyhWaWV3cykubWFwKChrKSA9PiBWaWV3c1trXSlcblxuZXhwb3J0IGxldCBhY2Nlc3NvciA9IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5mdW5jXSlcblxuZXhwb3J0IGxldCBkYXRlRm9ybWF0ID0gUHJvcFR5cGVzLmFueVxuXG5leHBvcnQgbGV0IGRhdGVSYW5nZUZvcm1hdCA9IFByb3BUeXBlcy5mdW5jXG5cbi8qKlxuICogYWNjZXB0cyBlaXRoZXIgYW4gYXJyYXkgb2YgYnVpbHRpbiB2aWV3IG5hbWVzOlxuICpcbiAqIGBgYFxuICogdmlld3M9e1snbW9udGgnLCAnZGF5JywgJ2FnZW5kYSddfVxuICogYGBgXG4gKlxuICogb3IgYW4gb2JqZWN0IGhhc2ggb2YgdGhlIHZpZXcgbmFtZSBhbmQgdGhlIGNvbXBvbmVudCAob3IgYm9vbGVhbiBmb3IgYnVpbHRpbilcbiAqXG4gKiBgYGBcbiAqIHZpZXdzPXt7XG4gKiAgIG1vbnRoOiB0cnVlLFxuICogICB3ZWVrOiBmYWxzZSxcbiAqICAgd29ya3dlZWs6IFdvcmtXZWVrVmlld0NvbXBvbmVudCxcbiAqIH19XG4gKiBgYGBcbiAqL1xuXG5leHBvcnQgbGV0IHZpZXdzID0gUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gIFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZih2aWV3TmFtZXMpKSxcbiAgUHJvcFR5cGVzLm9iamVjdE9mKChwcm9wLCBrZXksIC4uLmFyZ3MpID0+IHtcbiAgICBsZXQgaXNCdWlsdGluVmlldyA9XG4gICAgICB2aWV3TmFtZXMuaW5kZXhPZihrZXkpICE9PSAtMSAmJiB0eXBlb2YgcHJvcFtrZXldID09PSAnYm9vbGVhbidcbiAgICBpZiAoaXNCdWlsdGluVmlldykge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb3BUeXBlcy5lbGVtZW50VHlwZShwcm9wLCBrZXksIC4uLmFyZ3MpXG4gICAgfVxuICB9KSxcbl0pXG5cbmV4cG9ydCBjb25zdCBEYXlMYXlvdXRBbGdvcml0aG1Qcm9wVHlwZSA9IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICBQcm9wVHlwZXMub25lT2YoWydvdmVybGFwJywgJ25vLW92ZXJsYXAnXSksXG4gIFByb3BUeXBlcy5mdW5jLFxuXSlcbiIsImltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJ1xuXG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3RlZChldmVudCwgc2VsZWN0ZWQpIHtcbiAgaWYgKCFldmVudCB8fCBzZWxlY3RlZCA9PSBudWxsKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIGlzRXF1YWwoZXZlbnQsIHNlbGVjdGVkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2xvdFdpZHRoKHJvd0JveCwgc2xvdHMpIHtcbiAgbGV0IHJvd1dpZHRoID0gcm93Qm94LnJpZ2h0IC0gcm93Qm94LmxlZnRcbiAgbGV0IGNlbGxXaWR0aCA9IHJvd1dpZHRoIC8gc2xvdHNcblxuICByZXR1cm4gY2VsbFdpZHRoXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTbG90QXRYKHJvd0JveCwgeCwgcnRsLCBzbG90cykge1xuICBjb25zdCBjZWxsV2lkdGggPSBzbG90V2lkdGgocm93Qm94LCBzbG90cylcbiAgcmV0dXJuIHJ0bFxuICAgID8gc2xvdHMgLSAxIC0gTWF0aC5mbG9vcigoeCAtIHJvd0JveC5sZWZ0KSAvIGNlbGxXaWR0aClcbiAgICA6IE1hdGguZmxvb3IoKHggLSByb3dCb3gubGVmdCkgLyBjZWxsV2lkdGgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb2ludEluQm94KGJveCwgeyB4LCB5IH0pIHtcbiAgcmV0dXJuIHkgPj0gYm94LnRvcCAmJiB5IDw9IGJveC5ib3R0b20gJiYgeCA+PSBib3gubGVmdCAmJiB4IDw9IGJveC5yaWdodFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNlbGxTZWxlY3Rpb24oc3RhcnQsIHJvd0JveCwgYm94LCBzbG90cywgcnRsKSB7XG4gIGxldCBzdGFydElkeCA9IC0xXG4gIGxldCBlbmRJZHggPSAtMVxuICBsZXQgbGFzdFNsb3RJZHggPSBzbG90cyAtIDFcblxuICBsZXQgY2VsbFdpZHRoID0gc2xvdFdpZHRoKHJvd0JveCwgc2xvdHMpXG5cbiAgLy8gY2VsbCB1bmRlciB0aGUgbW91c2VcbiAgbGV0IGN1cnJlbnRTbG90ID0gZ2V0U2xvdEF0WChyb3dCb3gsIGJveC54LCBydGwsIHNsb3RzKVxuXG4gIC8vIElkZW50aWZ5IHJvdyBhcyBlaXRoZXIgdGhlIGluaXRpYWwgcm93XG4gIC8vIG9yIHRoZSByb3cgdW5kZXIgdGhlIGN1cnJlbnQgbW91c2UgcG9pbnRcbiAgbGV0IGlzQ3VycmVudFJvdyA9IHJvd0JveC50b3AgPCBib3gueSAmJiByb3dCb3guYm90dG9tID4gYm94LnlcbiAgbGV0IGlzU3RhcnRSb3cgPSByb3dCb3gudG9wIDwgc3RhcnQueSAmJiByb3dCb3guYm90dG9tID4gc3RhcnQueVxuXG4gIC8vIHRoaXMgcm93J3MgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IHBvaW50XG4gIGxldCBpc0Fib3ZlU3RhcnQgPSBzdGFydC55ID4gcm93Qm94LmJvdHRvbVxuICBsZXQgaXNCZWxvd1N0YXJ0ID0gcm93Qm94LnRvcCA+IHN0YXJ0LnlcbiAgbGV0IGlzQmV0d2VlbiA9IGJveC50b3AgPCByb3dCb3gudG9wICYmIGJveC5ib3R0b20gPiByb3dCb3guYm90dG9tXG5cbiAgLy8gdGhpcyByb3cgaXMgYmV0d2VlbiB0aGUgY3VycmVudCBhbmQgc3RhcnQgcm93cywgc28gZW50aXJlbHkgc2VsZWN0ZWRcbiAgaWYgKGlzQmV0d2Vlbikge1xuICAgIHN0YXJ0SWR4ID0gMFxuICAgIGVuZElkeCA9IGxhc3RTbG90SWR4XG4gIH1cblxuICBpZiAoaXNDdXJyZW50Um93KSB7XG4gICAgaWYgKGlzQmVsb3dTdGFydCkge1xuICAgICAgc3RhcnRJZHggPSAwXG4gICAgICBlbmRJZHggPSBjdXJyZW50U2xvdFxuICAgIH0gZWxzZSBpZiAoaXNBYm92ZVN0YXJ0KSB7XG4gICAgICBzdGFydElkeCA9IGN1cnJlbnRTbG90XG4gICAgICBlbmRJZHggPSBsYXN0U2xvdElkeFxuICAgIH1cbiAgfVxuXG4gIGlmIChpc1N0YXJ0Um93KSB7XG4gICAgLy8gc2VsZWN0IHRoZSBjZWxsIHVuZGVyIHRoZSBpbml0aWFsIHBvaW50XG4gICAgc3RhcnRJZHggPSBlbmRJZHggPSBydGxcbiAgICAgID8gbGFzdFNsb3RJZHggLSBNYXRoLmZsb29yKChzdGFydC54IC0gcm93Qm94LmxlZnQpIC8gY2VsbFdpZHRoKVxuICAgICAgOiBNYXRoLmZsb29yKChzdGFydC54IC0gcm93Qm94LmxlZnQpIC8gY2VsbFdpZHRoKVxuXG4gICAgaWYgKGlzQ3VycmVudFJvdykge1xuICAgICAgaWYgKGN1cnJlbnRTbG90IDwgc3RhcnRJZHgpIHN0YXJ0SWR4ID0gY3VycmVudFNsb3RcbiAgICAgIGVsc2UgZW5kSWR4ID0gY3VycmVudFNsb3QgLy9zZWxlY3QgY3VycmVudCByYW5nZVxuICAgIH0gZWxzZSBpZiAoc3RhcnQueSA8IGJveC55KSB7XG4gICAgICAvLyB0aGUgY3VycmVudCByb3cgaXMgYmVsb3cgc3RhcnQgcm93XG4gICAgICAvLyBzZWxlY3QgY2VsbHMgdG8gdGhlIHJpZ2h0IG9mIHRoZSBzdGFydCBjZWxsXG4gICAgICBlbmRJZHggPSBsYXN0U2xvdElkeFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBzZWxlY3QgY2VsbHMgdG8gdGhlIGxlZnQgb2YgdGhlIHN0YXJ0IGNlbGxcbiAgICAgIHN0YXJ0SWR4ID0gMFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IHN0YXJ0SWR4LCBlbmRJZHggfVxufVxuIiwiaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50IH0gZnJvbSAncmVhY3QnXG5cbmNvbnN0IGxpbmtCYXNlID1cbiAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9qcXVlbnNlL3JlYWN0LWJpZy1jYWxlbmRhci9ibG9iL21hc3Rlci9zdG9yaWVzL2RlbW9zL2V4YW1wbGVDb2RlLydcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGVtb0xpbmsoeyBmaWxlTmFtZSwgY2hpbGRyZW4gfSkge1xuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luQm90dG9tOiAxMCB9fT5cbiAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj17YCR7bGlua0Jhc2V9JHtmaWxlTmFtZX0uanNgfT5cbiAgICAgICAgICAmbHQ7XFwmZ3Q7IFZpZXcgRXhhbXBsZSBTb3VyY2UgQ29kZVxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICAgIHtjaGlsZHJlbiA/IDxkaXYgc3R5bGU9e3sgbWFyZ2luQm90dG9tOiAxMCB9fT57Y2hpbGRyZW59PC9kaXY+IDogbnVsbH1cbiAgICA8L0ZyYWdtZW50PlxuICApXG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgTGF5b3V0IGZyb20gJ3JlYWN0LXRhY2tsZS1ib3gvTGF5b3V0J1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgJ21vbWVudC10aW1lem9uZSdcblxuY29uc3QgYWxsWm9uZXMgPSBtb21lbnQudHoubmFtZXMoKVxuYWxsWm9uZXMudW5zaGlmdCgnY2xlYXInKVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUaW1lem9uZVNlbGVjdCh7XG4gIHRpdGxlLFxuICBkZWZhdWx0VFogPSBtb21lbnQudHouZ3Vlc3MoKSxcbiAgdGltZXpvbmUsXG4gIHNldFRpbWV6b25lLFxufSkge1xuICBjb25zdCBvbkNoYW5nZSA9ICh7IHRhcmdldDogeyB2YWx1ZSB9IH0pID0+XG4gICAgc2V0VGltZXpvbmUodmFsdWUgPyB2YWx1ZSA6IGRlZmF1bHRUWilcblxuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICA8TGF5b3V0IGRpcmVjdGlvbj1cImNvbHVtblwiIGFsaWduPVwiY2VudGVyXCI+XG4gICAgICAgIHt0aXRsZSA/IDxzdHJvbmcgc3R5bGU9e3sgbWFyZ2luQm90dG9tOiAxMCB9fT57dGl0bGV9PC9zdHJvbmc+IDogbnVsbH1cbiAgICAgICAgPGxhYmVsPlNlbGVjdCBhIFRpbWV6b25lPC9sYWJlbD57JyAnfVxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBzdHlsZT17eyB3aWR0aDogMjAwLCBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyB9fVxuICAgICAgICAgIHZhbHVlPXt0aW1lem9uZX1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgID5cbiAgICAgICAgICB7YWxsWm9uZXMubWFwKChjLCBpZHgpID0+IChcbiAgICAgICAgICAgIDxvcHRpb24ga2V5PXtpZHh9IHZhbHVlPXtjICE9PSAnY2xlYXInID8gYyA6ICcnfT5cbiAgICAgICAgICAgICAge2N9XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L0xheW91dD5cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5UaW1lem9uZVNlbGVjdC5wcm9wVHlwZXMgPSB7XG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBkZWZhdWx0VFo6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHRpbWV6b25lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRUaW1lem9uZTogUHJvcFR5cGVzLmZ1bmMsXG59XG4iLCJpbXBvcnQgUmVhY3QsIHsgRnJhZ21lbnQsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHtcbiAgQ2FsZW5kYXIsXG4gIFZpZXdzLFxuICBEYXRlTG9jYWxpemVyLFxuICBtb21lbnRMb2NhbGl6ZXIsXG59IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbmltcG9ydCBEZW1vTGluayBmcm9tICcuLi8uLi9EZW1vTGluay5jb21wb25lbnQnXG5pbXBvcnQgZXZlbnRzIGZyb20gJy4uLy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgKiBhcyBkYXRlcyBmcm9tICcuLi8uLi8uLi9zcmMvdXRpbHMvZGF0ZXMnXG5cbmNvbnN0IG1Mb2NhbGl6ZXIgPSBtb21lbnRMb2NhbGl6ZXIobW9tZW50KVxuXG5jb25zdCBDb2xvcmVkRGF0ZUNlbGxXcmFwcGVyID0gKHsgY2hpbGRyZW4gfSkgPT5cbiAgUmVhY3QuY2xvbmVFbGVtZW50KFJlYWN0LkNoaWxkcmVuLm9ubHkoY2hpbGRyZW4pLCB7XG4gICAgc3R5bGU6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ2xpZ2h0Ymx1ZScsXG4gICAgfSxcbiAgfSlcblxuLyoqXG4gKiBXZSBhcmUgZGVmYXVsdGluZyB0aGUgbG9jYWxpemVyIGhlcmUgYmVjYXVzZSB3ZSBhcmUgdXNpbmcgdGhpcyBzYW1lXG4gKiBleGFtcGxlIG9uIHRoZSBtYWluICdBYm91dCcgcGFnZSBpbiBTdG9yeWJvb2tcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmFzaWMoe1xuICBsb2NhbGl6ZXIgPSBtTG9jYWxpemVyLFxuICBzaG93RGVtb0xpbmsgPSB0cnVlLFxuICAuLi5wcm9wc1xufSkge1xuICBjb25zdCB7IGNvbXBvbmVudHMsIGRlZmF1bHREYXRlLCBtYXgsIHZpZXdzIH0gPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIHRpbWVTbG90V3JhcHBlcjogQ29sb3JlZERhdGVDZWxsV3JhcHBlcixcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMSksXG4gICAgICBtYXg6IGRhdGVzLmFkZChkYXRlcy5lbmRPZihuZXcgRGF0ZSgyMDE1LCAxNywgMSksICdkYXknKSwgLTEsICdob3VycycpLFxuICAgICAgdmlld3M6IE9iamVjdC5rZXlzKFZpZXdzKS5tYXAoKGspID0+IFZpZXdzW2tdKSxcbiAgICB9KSxcbiAgICBbXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8RnJhZ21lbnQ+XG4gICAgICB7c2hvd0RlbW9MaW5rID8gPERlbW9MaW5rIGZpbGVOYW1lPVwiYmFzaWNcIiAvPiA6IG51bGx9XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlaWdodDYwMFwiIHsuLi5wcm9wc30+XG4gICAgICAgIDxDYWxlbmRhclxuICAgICAgICAgIGNvbXBvbmVudHM9e2NvbXBvbmVudHN9XG4gICAgICAgICAgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfVxuICAgICAgICAgIGV2ZW50cz17ZXZlbnRzfVxuICAgICAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgICAgIG1heD17bWF4fVxuICAgICAgICAgIHNob3dNdWx0aURheVRpbWVzXG4gICAgICAgICAgc3RlcD17NjB9XG4gICAgICAgICAgdmlld3M9e3ZpZXdzfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9GcmFnbWVudD5cbiAgKVxufVxuQmFzaWMucHJvcFR5cGVzID0ge1xuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGVMb2NhbGl6ZXIpLFxuICBzaG93RGVtb0xpbms6IFByb3BUeXBlcy5ib29sLFxufVxuIiwiaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50LCB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCBldmVudHMgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2V2ZW50cydcbmltcG9ydCB7IENhbGVuZGFyLCBWaWV3cywgRGF0ZUxvY2FsaXplciB9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbmltcG9ydCBDYXJkIGZyb20gJy4uLy4uL3Jlc291cmNlcy9DYXJkJ1xuaW1wb3J0IERlbW9MaW5rIGZyb20gJy4uLy4uL0RlbW9MaW5rLmNvbXBvbmVudCdcbi8vIFN0b3J5Ym9vayBjYW5ub3QgYWxpYXMgdGhpcywgc28geW91IHdvdWxkIHVzZSAncmVhY3QtYmlnLWNhbGVuZGFyL2xpYi9hZGRvbnMvZHJhZ0FuZERyb3AnXG5pbXBvcnQgd2l0aERyYWdBbmREcm9wIGZyb20gJy4uLy4uLy4uL3NyYy9hZGRvbnMvZHJhZ0FuZERyb3AnXG4vLyBTdG9yeWJvb2sgY2Fubm90IGFsaWFzIHRoaXMsIHNvIHlvdSB3b3VsZCB1c2UgJ3JlYWN0LWJpZy1jYWxlbmRhci9saWIvYWRkb25zL2RyYWdBbmREcm9wL3N0eWxlcy5zY3NzJ1xuaW1wb3J0ICcuLi8uLi8uLi9zcmMvYWRkb25zL2RyYWdBbmREcm9wL3N0eWxlcy5zY3NzJ1xuXG5jb25zdCBEcmFnQW5kRHJvcENhbGVuZGFyID0gd2l0aERyYWdBbmREcm9wKENhbGVuZGFyKVxuXG5jb25zdCBhZGpFdmVudHMgPSBldmVudHMubWFwKChpdCwgaW5kKSA9PiAoe1xuICAuLi5pdCxcbiAgaXNEcmFnZ2FibGU6IGluZCAlIDIgPT09IDAsXG59KSlcblxuY29uc3QgZm9ybWF0TmFtZSA9IChuYW1lLCBjb3VudCkgPT4gYCR7bmFtZX0gSUQgJHtjb3VudH1gXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERuRE91dHNpZGVSZXNvdXJjZSh7IGxvY2FsaXplciB9KSB7XG4gIGNvbnN0IFtteUV2ZW50cywgc2V0TXlFdmVudHNdID0gdXNlU3RhdGUoYWRqRXZlbnRzKVxuICBjb25zdCBbZHJhZ2dlZEV2ZW50LCBzZXREcmFnZ2VkRXZlbnRdID0gdXNlU3RhdGUoKVxuICBjb25zdCBbZGlzcGxheURyYWdJdGVtSW5DZWxsLCBzZXREaXNwbGF5RHJhZ0l0ZW1JbkNlbGxdID0gdXNlU3RhdGUodHJ1ZSlcbiAgY29uc3QgW2NvdW50ZXJzLCBzZXRDb3VudGVyc10gPSB1c2VTdGF0ZSh7IGl0ZW0xOiAwLCBpdGVtMjogMCB9KVxuXG4gIGNvbnN0IGV2ZW50UHJvcEdldHRlciA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4gKHtcbiAgICAgIC4uLihldmVudC5pc0RyYWdnYWJsZVxuICAgICAgICA/IHsgY2xhc3NOYW1lOiAnaXNEcmFnZ2FibGUnIH1cbiAgICAgICAgOiB7IGNsYXNzTmFtZTogJ25vbkRyYWdnYWJsZScgfSksXG4gICAgfSksXG4gICAgW11cbiAgKVxuICAvLyxcbiAgY29uc3QgaGFuZGxlRHJhZ1N0YXJ0ID0gdXNlQ2FsbGJhY2soKGV2ZW50KSA9PiBzZXREcmFnZ2VkRXZlbnQoZXZlbnQpLCBbXSlcblxuICBjb25zdCBkcmFnRnJvbU91dHNpZGVJdGVtID0gdXNlQ2FsbGJhY2soKCkgPT4gZHJhZ2dlZEV2ZW50LCBbZHJhZ2dlZEV2ZW50XSlcblxuICBjb25zdCBjdXN0b21PbkRyYWdPdmVyID0gdXNlQ2FsbGJhY2soXG4gICAgKGRyYWdFdmVudCkgPT4ge1xuICAgICAgLy8gY2hlY2sgZm9yIHVuZHJvcHBhYmxlIGlzIHNwZWNpZmljIHRvIHRoaXMgZXhhbXBsZVxuICAgICAgLy8gYW5kIG5vdCBwYXJ0IG9mIEFQSS4gVGhpcyBqdXN0IGRlbW9uc3RyYXRlcyB0aGF0XG4gICAgICAvLyBvbkRyYWdPdmVyIGNhbiBvcHRpb25hbGx5IGJlIHBhc3NlZCB0byBjb25kaXRpb25hbGx5XG4gICAgICAvLyBhbGxvdyBkcmFnZ2FibGUgaXRlbXMgdG8gYmUgZHJvcHBlZCBvbiBjYWwsIGJhc2VkIG9uXG4gICAgICAvLyB3aGV0aGVyIGV2ZW50LnByZXZlbnREZWZhdWx0IGlzIGNhbGxlZFxuICAgICAgaWYgKGRyYWdnZWRFdmVudCAhPT0gJ3VuZHJvcHBhYmxlJykge1xuICAgICAgICBjb25zb2xlLmxvZygncHJldmVudERlZmF1bHQnKVxuICAgICAgICBkcmFnRXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2RyYWdnZWRFdmVudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZURpc3BsYXlEcmFnSXRlbUluQ2VsbCA9IHVzZUNhbGxiYWNrKFxuICAgICgpID0+IHNldERpc3BsYXlEcmFnSXRlbUluQ2VsbCgocHJldikgPT4gIXByZXYpLFxuICAgIFtdXG4gIClcblxuICBjb25zdCBtb3ZlRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAoeyBldmVudCwgc3RhcnQsIGVuZCwgaXNBbGxEYXk6IGRyb3BwZWRPbkFsbERheVNsb3QgPSBmYWxzZSB9KSA9PiB7XG4gICAgICBjb25zdCB7IGFsbERheSB9ID0gZXZlbnRcbiAgICAgIGlmICghYWxsRGF5ICYmIGRyb3BwZWRPbkFsbERheVNsb3QpIHtcbiAgICAgICAgZXZlbnQuYWxsRGF5ID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBzZXRNeUV2ZW50cygocHJldikgPT4ge1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IHByZXYuZmluZCgoZXYpID0+IGV2LmlkID09PSBldmVudC5pZCkgPz8ge31cbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBwcmV2LmZpbHRlcigoZXYpID0+IGV2LmlkICE9PSBldmVudC5pZClcbiAgICAgICAgcmV0dXJuIFsuLi5maWx0ZXJlZCwgeyAuLi5leGlzdGluZywgc3RhcnQsIGVuZCwgYWxsRGF5IH1dXG4gICAgICB9KVxuICAgIH0sXG4gICAgW3NldE15RXZlbnRzXVxuICApXG5cbiAgY29uc3QgbmV3RXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIHNldE15RXZlbnRzKChwcmV2KSA9PiB7XG4gICAgICAgIGNvbnN0IGlkTGlzdCA9IHByZXYubWFwKChpdGVtKSA9PiBpdGVtLmlkKVxuICAgICAgICBjb25zdCBuZXdJZCA9IE1hdGgubWF4KC4uLmlkTGlzdCkgKyAxXG4gICAgICAgIHJldHVybiBbLi4ucHJldiwgeyAuLi5ldmVudCwgaWQ6IG5ld0lkIH1dXG4gICAgICB9KVxuICAgIH0sXG4gICAgW3NldE15RXZlbnRzXVxuICApXG5cbiAgY29uc3Qgb25Ecm9wRnJvbU91dHNpZGUgPSB1c2VDYWxsYmFjayhcbiAgICAoeyBzdGFydCwgZW5kLCBhbGxEYXk6IGlzQWxsRGF5IH0pID0+IHtcbiAgICAgIGlmIChkcmFnZ2VkRXZlbnQgPT09ICd1bmRyb3BwYWJsZScpIHtcbiAgICAgICAgc2V0RHJhZ2dlZEV2ZW50KG51bGwpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IG5hbWUgfSA9IGRyYWdnZWRFdmVudFxuICAgICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICAgIHRpdGxlOiBmb3JtYXROYW1lKG5hbWUsIGNvdW50ZXJzW25hbWVdKSxcbiAgICAgICAgc3RhcnQsXG4gICAgICAgIGVuZCxcbiAgICAgICAgaXNBbGxEYXksXG4gICAgICB9XG4gICAgICBzZXREcmFnZ2VkRXZlbnQobnVsbClcbiAgICAgIHNldENvdW50ZXJzKChwcmV2KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgW25hbWVdOiBjb3VudCB9ID0gcHJldlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgW25hbWVdOiBjb3VudCArIDEsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICBuZXdFdmVudChldmVudClcbiAgICB9LFxuICAgIFtkcmFnZ2VkRXZlbnQsIGNvdW50ZXJzLCBzZXREcmFnZ2VkRXZlbnQsIHNldENvdW50ZXJzLCBuZXdFdmVudF1cbiAgKVxuXG4gIGNvbnN0IHJlc2l6ZUV2ZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgZXZlbnQsIHN0YXJ0LCBlbmQgfSkgPT4ge1xuICAgICAgc2V0TXlFdmVudHMoKHByZXYpID0+IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBwcmV2LmZpbmQoKGV2KSA9PiBldi5pZCA9PT0gZXZlbnQuaWQpID8/IHt9XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gcHJldi5maWx0ZXIoKGV2KSA9PiBldi5pZCAhPT0gZXZlbnQuaWQpXG4gICAgICAgIHJldHVybiBbLi4uZmlsdGVyZWQsIHsgLi4uZXhpc3RpbmcsIHN0YXJ0LCBlbmQgfV1cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbc2V0TXlFdmVudHNdXG4gIClcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMTIpLCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIDxEZW1vTGluayBmaWxlTmFtZT1cImRuZE91dHNpZGVTb3VyY2VcIj5cbiAgICAgICAgPENhcmQgY2xhc3NOYW1lPVwiZG5kT3V0c2lkZVNvdXJjZUV4YW1wbGVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImlubmVyXCI+XG4gICAgICAgICAgICA8aDQ+T3V0c2lkZSBEcmFnIFNvdXJjZXM8L2g0PlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIExpZ2h0ZXIgY29sb3JlZCBldmVudHMsIGluIHRoZSBDYWxlbmRhciwgaGF2ZSBhbiBgaXNEcmFnZ2FibGVgIGtleVxuICAgICAgICAgICAgICBvZiBgZmFsc2VgLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAge09iamVjdC5lbnRyaWVzKGNvdW50ZXJzKS5tYXAoKFtuYW1lLCBjb3VudF0pID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGRyYWdnYWJsZT1cInRydWVcIlxuICAgICAgICAgICAgICAgIGtleT17bmFtZX1cbiAgICAgICAgICAgICAgICBvbkRyYWdTdGFydD17KCkgPT5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZURyYWdTdGFydCh7IHRpdGxlOiBmb3JtYXROYW1lKG5hbWUsIGNvdW50KSwgbmFtZSB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXROYW1lKG5hbWUsIGNvdW50KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIG9uRHJhZ1N0YXJ0PXsoKSA9PiBoYW5kbGVEcmFnU3RhcnQoJ3VuZHJvcHBhYmxlJyl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIERyYWdnYWJsZSBidXQgbm90IGZvciBjYWxlbmRhci5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBjaGVja2VkPXtkaXNwbGF5RHJhZ0l0ZW1JbkNlbGx9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZURpc3BsYXlEcmFnSXRlbUluQ2VsbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgRGlzcGxheSBkcmFnZ2VkIGl0ZW0gaW4gY2VsbCB3aGlsZSBkcmFnZ2luZyBvdmVyXG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0NhcmQ+XG4gICAgICA8L0RlbW9MaW5rPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPERyYWdBbmREcm9wQ2FsZW5kYXJcbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLk1PTlRIfVxuICAgICAgICAgIGRyYWdGcm9tT3V0c2lkZUl0ZW09e1xuICAgICAgICAgICAgZGlzcGxheURyYWdJdGVtSW5DZWxsID8gZHJhZ0Zyb21PdXRzaWRlSXRlbSA6IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgICAgZHJhZ2dhYmxlQWNjZXNzb3I9XCJpc0RyYWdnYWJsZVwiXG4gICAgICAgICAgZXZlbnRQcm9wR2V0dGVyPXtldmVudFByb3BHZXR0ZXJ9XG4gICAgICAgICAgZXZlbnRzPXtteUV2ZW50c31cbiAgICAgICAgICBsb2NhbGl6ZXI9e2xvY2FsaXplcn1cbiAgICAgICAgICBvbkRyb3BGcm9tT3V0c2lkZT17b25Ecm9wRnJvbU91dHNpZGV9XG4gICAgICAgICAgb25EcmFnT3Zlcj17Y3VzdG9tT25EcmFnT3Zlcn1cbiAgICAgICAgICBvbkV2ZW50RHJvcD17bW92ZUV2ZW50fVxuICAgICAgICAgIG9uRXZlbnRSZXNpemU9e3Jlc2l6ZUV2ZW50fVxuICAgICAgICAgIG9uU2VsZWN0U2xvdD17bmV3RXZlbnR9XG4gICAgICAgICAgcmVzaXphYmxlXG4gICAgICAgICAgc2VsZWN0YWJsZVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9GcmFnbWVudD5cbiAgKVxufVxuRG5ET3V0c2lkZVJlc291cmNlLnByb3BUeXBlcyA9IHtcbiAgbG9jYWxpemVyOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlTG9jYWxpemVyKSxcbn1cbiIsImltcG9ydCBSZWFjdCwgeyBGcmFnbWVudCwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgZXZlbnRzIGZyb20gJy4uLy4uL3Jlc291cmNlcy9ldmVudHMnXG5pbXBvcnQgeyBDYWxlbmRhciwgVmlld3MsIERhdGVMb2NhbGl6ZXIgfSBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXInXG5pbXBvcnQgQ2FyZCBmcm9tICcuLi8uLi9yZXNvdXJjZXMvQ2FyZCdcbmltcG9ydCBEZW1vTGluayBmcm9tICcuLi8uLi9EZW1vTGluay5jb21wb25lbnQnXG4vLyBTdG9yeWJvb2sgY2Fubm90IGFsaWFzIHRoaXMsIHNvIHlvdSB3b3VsZCB1c2UgJ3JlYWN0LWJpZy1jYWxlbmRhci9saWIvYWRkb25zL2RyYWdBbmREcm9wJ1xuaW1wb3J0IHdpdGhEcmFnQW5kRHJvcCBmcm9tICcuLi8uLi8uLi9zcmMvYWRkb25zL2RyYWdBbmREcm9wJ1xuLy8gU3Rvcnlib29rIGNhbm5vdCBhbGlhcyB0aGlzLCBzbyB5b3Ugd291bGQgdXNlICdyZWFjdC1iaWctY2FsZW5kYXIvbGliL2FkZG9ucy9kcmFnQW5kRHJvcC9zdHlsZXMuc2NzcydcbmltcG9ydCAnLi4vLi4vLi4vc3JjL2FkZG9ucy9kcmFnQW5kRHJvcC9zdHlsZXMuc2NzcydcblxuY29uc3QgRHJhZ0FuZERyb3BDYWxlbmRhciA9IHdpdGhEcmFnQW5kRHJvcChDYWxlbmRhcilcblxuY29uc3QgYWRqRXZlbnRzID0gZXZlbnRzLm1hcCgoaXQsIGluZCkgPT4gKHtcbiAgLi4uaXQsXG4gIGlzUmVzaXphYmxlOiBpbmQgJSAyID09PSAwLFxuICBpc0RyYWdnYWJsZTogaW5kICUgMiA9PT0gMCxcbn0pKVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSZXNpemFibGUoeyBsb2NhbGl6ZXIgfSkge1xuICBjb25zdCBbbXlFdmVudHMsIHNldE15RXZlbnRzXSA9IHVzZVN0YXRlKGFkakV2ZW50cylcbiAgY29uc3QgW3Jlc2l6YWJsZSwgc2V0UmVzaXphYmxlXSA9IHVzZVN0YXRlKHRydWUpXG5cbiAgY29uc3QgZXZlbnRQcm9wR2V0dGVyID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50KSA9PiAoe1xuICAgICAgLy8gYWRkIGNsYXNzIGlmIG5vdCBhbGxvd2luZyByZXNpemluZyBhdCBhbGwsIG9yIGlmXG4gICAgICAvLyBhbGxvd2luZyByZXNpemluZywgYnV0IG5vdCBvbiBhIHNwZWNpZmljIGV2ZW50XG4gICAgICAuLi4oKCFyZXNpemFibGUgfHwgIWV2ZW50LmlzUmVzaXphYmxlKSAmJiB7IGNsYXNzTmFtZTogJ25vblJlc2l6YWJsZScgfSksXG4gICAgfSksXG4gICAgW3Jlc2l6YWJsZV1cbiAgKVxuXG4gIGNvbnN0IHRvZ2dsZVJlc2l6aW5nID0gdXNlQ2FsbGJhY2soKCkgPT4gc2V0UmVzaXphYmxlKChwcmV2KSA9PiAhcHJldiksIFtdKVxuXG4gIGNvbnN0IHJlc2l6ZUV2ZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgZXZlbnQsIHN0YXJ0LCBlbmQgfSkgPT4ge1xuICAgICAgc2V0TXlFdmVudHMoKHByZXYpID0+IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBwcmV2LmZpbmQoKGV2KSA9PiBldi5pZCA9PT0gZXZlbnQuaWQpID8/IHt9XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gcHJldi5maWx0ZXIoKGV2KSA9PiBldi5pZCAhPT0gZXZlbnQuaWQpXG4gICAgICAgIHJldHVybiBbLi4uZmlsdGVyZWQsIHsgLi4uZXhpc3RpbmcsIHN0YXJ0LCBlbmQgfV1cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbc2V0TXlFdmVudHNdXG4gIClcblxuICBjb25zdCBkZWZhdWx0RGF0ZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoMjAxNSwgMywgMTIpLCBbXSlcblxuICByZXR1cm4gKFxuICAgIDxGcmFnbWVudD5cbiAgICAgIDxEZW1vTGluayBmaWxlTmFtZT1cImRuZE91dHNpZGVTb3VyY2VcIj5cbiAgICAgICAgPENhcmQgY2xhc3NOYW1lPVwiZG5kT3V0c2lkZVNvdXJjZUV4YW1wbGVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImlubmVyXCI+XG4gICAgICAgICAgICA8aDQ+UmVzaXppbmc8L2g0PlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIEV2ZW50cyBhbGxvd2luZyByZXNpemluZyB3aWxsIHNob3cgZHJhZyBoYW5kbGVzIHdoZW4geW91IG1vdXNlXG4gICAgICAgICAgICAgIG92ZXIgdGhlbS5cbiAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgbGlnaHRlciBjb2xvcmVkIGV2ZW50cyBhcmUgbm90IHJlc2l6YWJsZS5cbiAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgIFRvZ2dsaW5nIHRoZSBjaGVja2JveCB0byB0aGUgcmlnaHQgd2lsbCB0dXJuIG9mZi9vbiByZXNpemluZyBhbGxcbiAgICAgICAgICAgICAgdG9nZXRoZXIuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3Jlc2l6YWJsZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17dG9nZ2xlUmVzaXppbmd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIEFsbG93IEV2ZW50IFJlc2l6aW5nXG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0NhcmQ+XG4gICAgICA8L0RlbW9MaW5rPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWlnaHQ2MDBcIj5cbiAgICAgICAgPERyYWdBbmREcm9wQ2FsZW5kYXJcbiAgICAgICAgICBkZWZhdWx0RGF0ZT17ZGVmYXVsdERhdGV9XG4gICAgICAgICAgZGVmYXVsdFZpZXc9e1ZpZXdzLk1PTlRIfVxuICAgICAgICAgIGRyYWdnYWJsZUFjY2Vzc29yPVwiaXNEcmFnZ2FibGVcIlxuICAgICAgICAgIGV2ZW50UHJvcEdldHRlcj17ZXZlbnRQcm9wR2V0dGVyfVxuICAgICAgICAgIGV2ZW50cz17bXlFdmVudHN9XG4gICAgICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICAgICAgb25FdmVudFJlc2l6ZT17cmVzaXplRXZlbnR9XG4gICAgICAgICAgcmVzaXphYmxlPXtyZXNpemFibGV9XG4gICAgICAgICAgcmVzaXphYmxlQWNjZXNzb3I9e3Jlc2l6YWJsZSA/ICdpc1Jlc2l6YWJsZScgOiAnZmFrZUtleSd9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0ZyYWdtZW50PlxuICApXG59XG5SZXNpemFibGUucHJvcFR5cGVzID0ge1xuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGVMb2NhbGl6ZXIpLFxufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlRXZlbnRzKGlkeCA9IDAsIGRhdGUgPSBuZXcgRGF0ZSgpKSB7XG4gIGNvbnN0IHkgPSBkYXRlLmdldEZ1bGxZZWFyKClcbiAgY29uc3QgbSA9IGRhdGUuZ2V0TW9udGgoKVxuICBjb25zdCBkID0gZGF0ZS5nZXREYXRlKClcblxuICBjb25zdCBzZXRzID0gW1xuICAgIFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCAxJyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDEwLCAzMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTMsIDMwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgMicsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAxMCwgMzAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDEzLCAzMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDMnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMTAsIDMwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAxMiwgMzAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCA0JyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDgsIDMwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAxOCwgMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDUnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMTUsIDMwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAxNiwgMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDYnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMTEsIDAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDEyLCAwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgNycsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAxLCAwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAyLCAwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgMScsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCA5LCAzMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTUsIDMwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgMicsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAxMSwgMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTMsIDAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCAzJyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDksIDMwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAxMSwgMzAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCA0JyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDksIDMwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAxMCwgMzAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCA1JyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDEwLCAwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAxMSwgMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDYnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMTAsIDAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDExLCAwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgNycsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCA5LCAzMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTAsIDMwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgOCcsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCA5LCAzMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTAsIDMwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgOScsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCA5LCAzMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTAsIDMwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgMTAnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMTAsIDMwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAxMiwgMzAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCAxMScsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAxMiwgMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTMsIDAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCAxMicsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAxMiwgMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTMsIDAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCAxMycsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAxMiwgMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTMsIDAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCAxNCcsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAxMiwgMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTMsIDAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCAxNScsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCA2LCAzMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgOCwgMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDE2JyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDE2LCAwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAxNywgMzAsIDAsIDApLFxuICAgICAgfSxcbiAgICBdLFxuICAgIFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCAxJyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDIsIDMwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCA0LCAzMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDInLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMiwgMzAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDMsIDMwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgMycsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAzLCAwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCA0LCAwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgMScsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCA2LCAzMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgNywgMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDInLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgOCwgMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTcsIDAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCAzJyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDgsIDAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDExLCAwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgNCcsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCA4LCAwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAxMiwgMCwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDUnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMTAsIDAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDEzLCAwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgNicsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAxMCwgMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTMsIDAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCA3JyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDEwLCAwLCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAxMywgMCwgMCwgMCksXG4gICAgICB9LFxuICAgIF0sXG4gICAgW1xuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDEnLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMTksIDAsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDIwLCA1NSwgMCwgMCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJ0V2ZW50IDInLFxuICAgICAgICBzdGFydDogbmV3IERhdGUoeSwgbSwgZCwgMTksIDE1LCAwLCAwKSxcbiAgICAgICAgZW5kOiBuZXcgRGF0ZSh5LCBtLCBkLCAyMCwgMTUsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCAzJyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDE5LCA0NSwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMjIsIDMwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgNCcsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAyMCwgNDUsIDAsIDApLFxuICAgICAgICBlbmQ6IG5ldyBEYXRlKHksIG0sIGQsIDIyLCA1LCAwLCAwKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnRXZlbnQgNScsXG4gICAgICAgIHN0YXJ0OiBuZXcgRGF0ZSh5LCBtLCBkLCAxMCwgMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTEsIDAsIDAsIDApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICdFdmVudCA2JyxcbiAgICAgICAgc3RhcnQ6IG5ldyBEYXRlKHksIG0sIGQsIDEwLCAzMCwgMCwgMCksXG4gICAgICAgIGVuZDogbmV3IERhdGUoeSwgbSwgZCwgMTEsIDMwLCAwLCAwKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgXVxuXG4gIHJldHVybiBzZXRzW2lkeF1cbn1cbiIsImltcG9ydCB7IGFjdGlvbiB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tYWN0aW9ucydcblxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgJ21vbWVudC10aW1lem9uZSdcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgQ2FsZW5kYXIgYXMgQmFzZUNhbGVuZGFyLCBtb21lbnRMb2NhbGl6ZXIgfSBmcm9tICcuLi8uLi9zcmMnXG5cbi8vIEZvciBUZXN0aW5nIFNBU1Mgc3R5bGluZ1xuaW1wb3J0ICcuLi8uLi9zcmMvc2Fzcy9zdHlsZXMuc2NzcydcbmltcG9ydCAnLi4vLi4vc3JjL2FkZG9ucy9kcmFnQW5kRHJvcC9zdHlsZXMuc2NzcydcblxuaW1wb3J0IHdpdGhEcmFnQW5kRHJvcCBmcm9tICcuLi8uLi9zcmMvYWRkb25zL2RyYWdBbmREcm9wJ1xuXG5leHBvcnQgeyBWaWV3cyB9IGZyb20gJy4uLy4uL3NyYydcblxuLy8gdW5jb21tZW50IGZvciB0aW1lem9uZSB0ZXN0aW5nIGluIFN0b3J5Ym9va1xuLy9tb21lbnQudHouc2V0RGVmYXVsdCgnQW1lcmljYS9Mb3NfQW5nZWxlcycpXG5cbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbmV4cG9ydCBjb25zdCBkYXRlID0gKC4uLmFyZ3MpID0+IG1vbWVudCguLi5hcmdzKS50b0RhdGUoKVxuXG5leHBvcnQgY29uc3QgQ2FsZW5kYXIgPSAocHJvcHMpID0+IChcbiAgPGRpdiBzdHlsZT17eyBoZWlnaHQ6IDY1MCB9fT5cbiAgICA8QmFzZUNhbGVuZGFyIGxvY2FsaXplcj17bG9jYWxpemVyfSB7Li4ucHJvcHN9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgRHJhZ0FuZERyb3BDYWxlbmRhciA9IHdpdGhEcmFnQW5kRHJvcChDYWxlbmRhcilcblxuZXhwb3J0IGNvbnN0IERyYWdhYmxlQ2FsZW5kYXIgPSAocHJvcHMpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8RHJhZ0FuZERyb3BDYWxlbmRhclxuICAgICAgcG9wdXBcbiAgICAgIHNlbGVjdGFibGVcbiAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgb25FdmVudERyb3A9e2FjdGlvbignZXZlbnQgZHJvcHBlZCcpfVxuICAgICAgb25TZWxlY3RFdmVudD17YWN0aW9uKCdldmVudCBzZWxlY3RlZCcpfVxuICAgICAgb25TZWxlY3RTbG90PXthY3Rpb24oJ3Nsb3Qgc2VsZWN0ZWQnKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBldmVudHMgPSBbXG4gIHtcbiAgICB0aXRsZTogJ3Rlc3QnLFxuICAgIHN0YXJ0OiBtb21lbnQoKS5hZGQoMSwgJ2RheXMnKS5zdWJ0cmFjdCg1LCAnaG91cnMnKS50b0RhdGUoKSxcbiAgICBlbmQ6IG1vbWVudCgpLmFkZCgxLCAnZGF5cycpLnN1YnRyYWN0KDQsICdob3VycycpLnRvRGF0ZSgpLFxuICAgIGFsbERheTogZmFsc2UsXG4gIH0sXG4gIHtcbiAgICB0aXRsZTogJ3Rlc3QgbGFyZ2VyJyxcbiAgICBzdGFydDogbW9tZW50KCkuc3RhcnRPZignZGF5JykuYWRkKDUsICdob3VycycpLnRvRGF0ZSgpLFxuICAgIGVuZDogbW9tZW50KCkuc3RhcnRPZignZGF5JykuYWRkKDEwLCAnaG91cnMnKS50b0RhdGUoKSxcbiAgICBhbGxEYXk6IGZhbHNlLFxuICB9LFxuXG4gIHtcbiAgICB0aXRsZTogJ3Rlc3QgbGFyZ2VyJyxcbiAgICBzdGFydDogbW9tZW50KCkuc3RhcnRPZignZGF5JykuYWRkKDE1LCAnaG91cnMnKS50b0RhdGUoKSxcbiAgICBlbmQ6IG1vbWVudCgpLnN0YXJ0T2YoJ2RheScpLmFkZCgyMywgJ2hvdXJzJykudG9EYXRlKCksXG4gICAgYWxsRGF5OiBmYWxzZSxcbiAgfSxcbiAge1xuICAgIHRpdGxlOiAndGVzdCBhbGwgZGF5JyxcbiAgICBzdGFydDogbW9tZW50KCkuc3RhcnRPZignZGF5JykudG9EYXRlKCksXG4gICAgZW5kOiBtb21lbnQoKS5zdGFydE9mKCdkYXknKS5hZGQoMSwgJ2RheScpLnRvRGF0ZSgpLFxuICAgIGFsbERheTogdHJ1ZSxcbiAgfSxcbiAge1xuICAgIHRpdGxlOiAndGVzdCAyIGRheXMnLFxuICAgIHN0YXJ0OiBtb21lbnQoKS5zdGFydE9mKCdkYXknKS50b0RhdGUoKSxcbiAgICBlbmQ6IG1vbWVudCgpLnN0YXJ0T2YoJ2RheScpLmFkZCgyLCAnZGF5cycpLnRvRGF0ZSgpLFxuICAgIGFsbERheTogdHJ1ZSxcbiAgfSxcbiAge1xuICAgIHRpdGxlOiAndGVzdCBtdWx0aS1kYXknLFxuICAgIHN0YXJ0OiBtb21lbnQoKS50b0RhdGUoKSxcbiAgICBlbmQ6IG1vbWVudCgpLmFkZCgzLCAnZGF5cycpLnRvRGF0ZSgpLFxuICAgIGFsbERheTogZmFsc2UsXG4gIH0sXG5dXG5cbmV4cG9ydCBjb25zdCBiYWNrZ3JvdW5kRXZlbnRzID0gW1xuICB7XG4gICAgdGl0bGU6ICd0ZXN0IGJhY2tncm91bmQgZXZlbnQnLFxuICAgIHN0YXJ0OiBtb21lbnQoKS5zdGFydE9mKCdkYXknKS5hZGQoMiwgJ2hvdXJzJykudG9EYXRlKCksXG4gICAgZW5kOiBtb21lbnQoKS5zdGFydE9mKCdkYXknKS5hZGQoMTIsICdob3VycycpLnRvRGF0ZSgpLFxuICAgIGFsbERheTogZmFsc2UsXG4gIH0sXG5dXG5cbmV4cG9ydCBjb25zdCByZXNvdXJjZUV2ZW50cyA9IFtcbiAge1xuICAgIHRpdGxlOiAnZXZlbnQgMScsXG4gICAgc3RhcnQ6IG1vbWVudCgpLnN0YXJ0T2YoJ2RheScpLmFkZCgxLCAnaG91cnMnKS50b0RhdGUoKSxcbiAgICBlbmQ6IG1vbWVudCgpLnN0YXJ0T2YoJ2RheScpLmFkZCgyLCAnaG91cnMnKS50b0RhdGUoKSxcbiAgICBhbGxEYXk6IGZhbHNlLFxuICAgIHJlc291cmNlSWQ6IDEsXG4gIH0sXG4gIHtcbiAgICB0aXRsZTogJ2V2ZW50IDInLFxuICAgIHN0YXJ0OiBtb21lbnQoKS5zdGFydE9mKCdkYXknKS5hZGQoMywgJ2hvdXJzJykudG9EYXRlKCksXG4gICAgZW5kOiBtb21lbnQoKS5zdGFydE9mKCdkYXknKS5hZGQoNCwgJ2hvdXJzJykudG9EYXRlKCksXG4gICAgYWxsRGF5OiBmYWxzZSxcbiAgICByZXNvdXJjZUlkOiBbMSwgMl0sXG4gIH0sXG4gIHtcbiAgICB0aXRsZTogJ2V2ZW50IDMnLFxuICAgIHN0YXJ0OiBtb21lbnQoKS5zdGFydE9mKCdkYXknKS5hZGQoMSwgJ2hvdXJzJykudG9EYXRlKCksXG4gICAgZW5kOiBtb21lbnQoKS5zdGFydE9mKCdkYXknKS5hZGQoMywgJ2hvdXJzJykudG9EYXRlKCksXG4gICAgYWxsRGF5OiBmYWxzZSxcbiAgICByZXNvdXJjZUlkOiAzLFxuICB9LFxuXVxuXG5leHBvcnQgY29uc3QgcmVzb3VyY2VzID0gW1xuICB7XG4gICAgaWQ6IDEsXG4gICAgbmFtZTogJ1Jlc291cmNlIE9uZScsXG4gIH0sXG4gIHtcbiAgICBpZDogMixcbiAgICBuYW1lOiAnUmVzb3VyY2UgVHdvJyxcbiAgfSxcbiAge1xuICAgIGlkOiAzLFxuICAgIG5hbWU6ICdSZXNvdXJjZSBUaHJlZScsXG4gIH0sXG5dXG4iLCJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IG1vbWVudExvY2FsaXplciwgVmlld3MgfSBmcm9tICcuLi8uLi9zcmMnXG5pbXBvcnQgZGVtb0V2ZW50cyBmcm9tICcuLi9yZXNvdXJjZXMvZXZlbnRzJ1xuaW1wb3J0IHJlc291cmNlRGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvcmVzb3VyY2VFdmVudHMnXG5cbmNvbnN0IHsgZXZlbnRzOiByZXNvdXJjZUV2ZW50cywgbGlzdDogcmVzb3VyY2VzIH0gPSByZXNvdXJjZURhdGFcblxuY29uc3QgbUxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpXG5cbi8qKiBTcGVjaWZpYyB0byBldmVudCBrZXkgYWNjZXNzb3JzICovXG5jb25zdCBhZGp1c3RlZCA9IGRlbW9FdmVudHMubWFwKChldmVudCkgPT4ge1xuICBjb25zdCB7XG4gICAgc3RhcnQ6IHN0YXJ0RGF0ZSxcbiAgICBlbmQ6IGVuZERhdGUsXG4gICAgdGl0bGU6IGxhYmVsLFxuICAgIGFsbERheTogYWxsRGF5RXZlbnQsXG4gICAgLi4ub3RoZXJcbiAgfSA9IGV2ZW50XG4gIHJldHVybiB7IC4uLm90aGVyLCBzdGFydERhdGUsIGVuZERhdGUsIGxhYmVsLCBhbGxEYXlFdmVudCB9XG59KVxuXG5leHBvcnQgY29uc3QgYWNjZXNzb3JTdG9yeUFyZ3MgPSB7XG4gIGFsbERheUFjY2Vzc29yOiAnYWxsRGF5RXZlbnQnLFxuICBkZWZhdWx0RGF0ZTogbmV3IERhdGUoMjAxNSwgMywgMTMpLFxuICBlbmRBY2Nlc3NvcjogJ2VuZERhdGUnLFxuICBldmVudHM6IGFkanVzdGVkLFxuICBsb2NhbGl6ZXI6IG1Mb2NhbGl6ZXIsXG4gIHRpdGxlQWNjZXNzb3I6ICdsYWJlbCcsXG4gIHRvb2x0aXBBY2Nlc3NvcjogJ2xhYmVsJyxcbiAgc3RhcnRBY2Nlc3NvcjogJ3N0YXJ0RGF0ZScsXG59XG4vKiogRU5EIFNwZWNpZmljIHRvIGV2ZW50IGtleSBhY2Nlc3NvcnMgKi9cblxuLyoqIFNwZWNpZmljIHRvIHJlc291cmNlIGtleSBhY2Nlc3NvcnMgKi9cbmNvbnN0IGFkanVzdGVkUmVzb3VyY2VzID0gcmVzb3VyY2VzLm1hcCgoeyBpZDogSWQsIHRpdGxlOiBUaXRsZSB9KSA9PiAoe1xuICBJZCxcbiAgVGl0bGUsXG59KSlcblxuZXhwb3J0IGNvbnN0IHJlc291cmNlQWNjZXNzb3JTdG9yeUFyZ3MgPSB7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCA0KSxcbiAgZGVmYXVsdFZpZXc6IFZpZXdzLkRBWSxcbiAgZXZlbnRzOiByZXNvdXJjZUV2ZW50cyxcbiAgbG9jYWxpemVyOiBtTG9jYWxpemVyLFxuICByZXNvdXJjZUlkQWNjZXNzb3I6ICdJZCcsXG4gIHJlc291cmNlczogYWRqdXN0ZWRSZXNvdXJjZXMsXG4gIHJlc291cmNlVGl0bGVBY2Nlc3NvcjogJ1RpdGxlJyxcbn1cbi8qKiBFTkRTcGVjaWZpYyB0byByZXNvdXJjZSBrZXkgYWNjZXNzb3JzICovXG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IHByb3BUeXBlcyA9IHt9XG5cbmZ1bmN0aW9uIENhcmQoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBzdHlsZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2Ake2NsYXNzTmFtZSB8fCAnJ30gY2FyZGB9IHN0eWxlPXtzdHlsZX0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gIClcbn1cblxuQ2FyZC5wcm9wVHlwZXMgPSBwcm9wVHlwZXNcblxuZXhwb3J0IGRlZmF1bHQgQ2FyZFxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBEYXlDb2x1bW5XcmFwcGVyID0gKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgc3R5bGUsIGlubmVyUmVmIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfSBzdHlsZT17c3R5bGV9IHJlZj17aW5uZXJSZWZ9PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlYWN0LmZvcndhcmRSZWYoKGRheUNvbHVtbldyYXBwZXJQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHJlZEJvcmRlciA9IGRheUNvbHVtbldyYXBwZXJQcm9wcy5yZXNvdXJjZSAlIDIgPT09IDBcbiAgY29uc3Qgc3R5bGUgPSB7XG4gICAgYm9yZGVyQ29sb3I6IHJlZEJvcmRlciA/ICdyZWQnIDogJyNmZmYnLFxuICAgIGJvcmRlclN0eWxlOiAnc29saWQnLFxuICAgIGJvcmRlcldpZHRoOiAnMXB4JyxcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPERheUNvbHVtbldyYXBwZXIgey4uLmRheUNvbHVtbldyYXBwZXJQcm9wc30gc3R5bGU9e3N0eWxlfSBpbm5lclJlZj17cmVmfSAvPlxuICApXG59KVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgYWN0aW9uIH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1hY3Rpb25zJ1xuaW1wb3J0IEN1c3RvbURheUNvbHVtbldyYXBwZXIgZnJvbSAnLi9DdXN0b21EYXlDb2x1bW5XcmFwcGVyJ1xuXG5jb25zdCBjdXN0b21Db21wb25lbnRzID0ge1xuICBkYXRlQ2VsbFdyYXBwZXI6IChkYXRlQ2VsbFdyYXBwZXJQcm9wcykgPT4ge1xuICAgIC8vIFNob3cgJ2NsaWNrIG1lJyB0ZXh0IGluIGFyYml0cmFyeSBwbGFjZXMgYnkgdXNpbmcgdGhlIHJhbmdlIHByb3BcbiAgICBjb25zdCBoYXNBbGVydCA9IGRhdGVDZWxsV3JhcHBlclByb3BzLnJhbmdlXG4gICAgICA/IGRhdGVDZWxsV3JhcHBlclByb3BzLnJhbmdlLnNvbWUoKGRhdGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gZGF0ZS5nZXREYXRlKCkgJSAxMiA9PT0gMFxuICAgICAgICB9KVxuICAgICAgOiBmYWxzZVxuXG4gICAgY29uc3Qgc3R5bGUgPSB7XG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBmbGV4OiAxLFxuICAgICAgYm9yZGVyTGVmdDogJzFweCBzb2xpZCAjREREJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogaGFzQWxlcnQgPyAnI2Y1ZjVkYycgOiAnI2ZmZicsXG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IHN0eWxlPXtzdHlsZX0+XG4gICAgICAgIHtoYXNBbGVydCAmJiAoXG4gICAgICAgICAgPGEgb25DbGljaz17YWN0aW9uKCdjdXN0b20gZGF0ZUNlbGxXcmFwcGVyIGNvbXBvbmVudCBjbGlja2VkJyl9PlxuICAgICAgICAgICAgQ2xpY2sgbWVcbiAgICAgICAgICA8L2E+XG4gICAgICAgICl9XG4gICAgICAgIHtkYXRlQ2VsbFdyYXBwZXJQcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfSxcbiAgZGF5Q29sdW1uV3JhcHBlcjogQ3VzdG9tRGF5Q29sdW1uV3JhcHBlcixcbiAgdGltZVNsb3RXcmFwcGVyOiAodGltZVNsb3RXcmFwcGVyUHJvcHMpID0+IHtcbiAgICAvLyBTaG93IGRpZmZlcmVudCBzdHlsZXMgYXQgYXJiaXRyYXJ5IHRpbWVcbiAgICBjb25zdCBoYXNDdXN0b21JbmZvID0gdGltZVNsb3RXcmFwcGVyUHJvcHMudmFsdWVcbiAgICAgID8gdGltZVNsb3RXcmFwcGVyUHJvcHMudmFsdWUuZ2V0SG91cnMoKSA9PT0gNFxuICAgICAgOiBmYWxzZVxuICAgIGNvbnN0IHN0eWxlID0ge1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgZmxleDogMSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogaGFzQ3VzdG9tSW5mbyA/ICcjZjVmNWRjJyA6ICcjZmZmJyxcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgc3R5bGU9e3N0eWxlfT5cbiAgICAgICAge2hhc0N1c3RvbUluZm8gJiYgJ0N1c3RvbSBEYXkgV3JhcHBlcid9XG4gICAgICAgIHt0aW1lU2xvdFdyYXBwZXJQcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfSxcbiAgZXZlbnRXcmFwcGVyOiAoZXZlbnRXcmFwcGVyUHJvcHMpID0+IHtcbiAgICBjb25zdCBzdHlsZSA9IHtcbiAgICAgIGJvcmRlcjogJzRweCBzb2xpZCcsXG4gICAgICBib3JkZXJDb2xvcjpcbiAgICAgICAgZXZlbnRXcmFwcGVyUHJvcHMuZXZlbnQuc3RhcnQuZ2V0SG91cnMoKSAlIDIgPT09IDAgPyAnZ3JlZW4nIDogJ3JlZCcsXG4gICAgICBwYWRkaW5nOiAnNXB4JyxcbiAgICB9XG4gICAgcmV0dXJuIDxkaXYgc3R5bGU9e3N0eWxlfT57ZXZlbnRXcmFwcGVyUHJvcHMuY2hpbGRyZW59PC9kaXY+XG4gIH0sXG4gIHRpbWVTbG90V3JhcHBlcjogKHRpbWVTbG90V3JhcHBlclByb3BzKSA9PiB7XG4gICAgY29uc3Qgc3R5bGUgPVxuICAgICAgdGltZVNsb3RXcmFwcGVyUHJvcHMucmVzb3VyY2UgPT09IG51bGwgfHxcbiAgICAgIHRpbWVTbG90V3JhcHBlclByb3BzLnZhbHVlLmdldE1pbnV0ZXMoKSAhPT0gMFxuICAgICAgICA/IHt9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgYm9yZGVyOiAnNHB4IHNvbGlkJyxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjpcbiAgICAgICAgICAgICAgdGltZVNsb3RXcmFwcGVyUHJvcHMudmFsdWUuZ2V0SG91cnMoKSA+PSA4ICYmXG4gICAgICAgICAgICAgIHRpbWVTbG90V3JhcHBlclByb3BzLnZhbHVlLmdldEhvdXJzKCkgPD0gMTdcbiAgICAgICAgICAgICAgICA/ICdncmVlbidcbiAgICAgICAgICAgICAgICA6ICdyZWQnLFxuICAgICAgICAgICAgcGFkZGluZzogJzVweCcsXG4gICAgICAgICAgfVxuICAgIHJldHVybiA8ZGl2IHN0eWxlPXtzdHlsZX0+e3RpbWVTbG90V3JhcHBlclByb3BzLmNoaWxkcmVufTwvZGl2PlxuICB9LFxuICB0aW1lR3V0dGVyV3JhcHBlcjogKHRpbWVHdXR0ZXJXcmFwcGVyUHJvcHMpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBpZD1cIm15LWN1c3RvbS10aW1lLWd1dHRlci13cmFwcGVyXCJcbiAgICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiAnZ3JheScgfX1cbiAgICAgID5cbiAgICAgICAge3RpbWVHdXR0ZXJXcmFwcGVyUHJvcHMuY2hpbGRyZW59XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IGN1c3RvbUNvbXBvbmVudHNcbiIsImNvbnN0IG5vdyA9IG5ldyBEYXRlKClcblxuZXhwb3J0IGRlZmF1bHQgW1xuICAvKiB7XG4gICAgaWQ6IDAsXG4gICAgdGl0bGU6ICdBbGwgRGF5IEV2ZW50IHZlcnkgbG9uZyB0aXRsZScsXG4gICAgYWxsRGF5OiB0cnVlLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEpLFxuICB9LCAqL1xuICB7XG4gICAgaWQ6IDEsXG4gICAgdGl0bGU6ICdMb25nIEV2ZW50JyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgNyksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMCksXG4gIH0sXG5cbiAge1xuICAgIGlkOiAyLFxuICAgIHRpdGxlOiAnRFRTIFNUQVJUUycsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDIsIDEzLCAwLCAwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDIsIDIwLCAwLCAwLCAwKSxcbiAgfSxcblxuICB7XG4gICAgaWQ6IDMsXG4gICAgdGl0bGU6ICdEVFMgRU5EUycsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTYsIDEwLCA2LCAwLCAwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTYsIDEwLCAxMywgMCwgMCwgMCksXG4gIH0sXG5cbiAge1xuICAgIGlkOiA0LFxuICAgIHRpdGxlOiAnU29tZSBFdmVudCcsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDksIDAsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgOSwgMCwgMCwgMCksXG4gICAgYWxsRGF5OiB0cnVlLFxuICB9LFxuXG4gIHtcbiAgICBpZDogOTIsXG4gICAgdGl0bGU6ICdTb21lIE90aGVyIEV2ZW50JyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgOSwgOCwgMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMCwgMTEsIDMwLCAwKSxcbiAgfSxcbiAge1xuICAgIGlkOiA1LFxuICAgIHRpdGxlOiAnQ29uZmVyZW5jZScsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDExKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEzKSxcbiAgICBkZXNjOiAnQmlnIGNvbmZlcmVuY2UgZm9yIGltcG9ydGFudCBwZW9wbGUnLFxuICB9LFxuICB7XG4gICAgaWQ6IDYsXG4gICAgdGl0bGU6ICdNZWV0aW5nJyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMTIsIDEwLCAzMCwgMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMiwgMTIsIDMwLCAwLCAwKSxcbiAgICBkZXNjOiAnUHJlLW1lZXRpbmcgbWVldGluZywgdG8gcHJlcGFyZSBmb3IgdGhlIG1lZXRpbmcnLFxuICB9LFxuICB7XG4gICAgaWQ6IDcsXG4gICAgdGl0bGU6ICdMdW5jaCcsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEyLCAxMiwgMCwgMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMiwgMTMsIDAsIDAsIDApLFxuICAgIGRlc2M6ICdQb3dlciBsdW5jaCcsXG4gIH0sXG4gIHtcbiAgICBpZDogOCxcbiAgICB0aXRsZTogJ01lZXRpbmcnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxMiwgMTQsIDAsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTIsIDE1LCAwLCAwLCAwKSxcbiAgfSxcbiAge1xuICAgIGlkOiA5LFxuICAgIHRpdGxlOiAnSGFwcHkgSG91cicsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEyLCAxNywgMCwgMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMiwgMTcsIDMwLCAwLCAwKSxcbiAgICBkZXNjOiAnTW9zdCBpbXBvcnRhbnQgbWVhbCBvZiB0aGUgZGF5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAxMCxcbiAgICB0aXRsZTogJ0Rpbm5lcicsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEyLCAyMCwgMCwgMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMiwgMjEsIDAsIDAsIDApLFxuICB9LFxuICB7XG4gICAgaWQ6IDExLFxuICAgIHRpdGxlOiAnUGxhbm5pbmcgTWVldGluZyB3aXRoIFBhaWdlJyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMTMsIDgsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTMsIDEwLCAzMCwgMCksXG4gIH0sXG4gIHtcbiAgICBpZDogMTEuMSxcbiAgICB0aXRsZTogJ0luY29udmVuaWVudCBDb25mZXJlbmNlIENhbGwnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxMywgOSwgMzAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTMsIDEyLCAwLCAwKSxcbiAgfSxcbiAge1xuICAgIGlkOiAxMS4yLFxuICAgIHRpdGxlOiBcIlByb2plY3QgS2lja29mZiAtIExvdSdzIFNob2VzXCIsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEzLCAxMSwgMzAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTMsIDE0LCAwLCAwKSxcbiAgfSxcbiAge1xuICAgIGlkOiAxMS4zLFxuICAgIHRpdGxlOiAnUXVvdGUgRm9sbG93LXVwIC0gVGVhIGJ5IFRpbmEnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxMywgMTUsIDMwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEzLCAxNiwgMCwgMCksXG4gIH0sXG4gIHtcbiAgICBpZDogMTIsXG4gICAgdGl0bGU6ICdMYXRlIE5pZ2h0IEV2ZW50JyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMTcsIDE5LCAzMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxOCwgMiwgMCwgMCksXG4gIH0sXG4gIHtcbiAgICBpZDogMTIuNSxcbiAgICB0aXRsZTogJ0xhdGUgU2FtZSBOaWdodCBFdmVudCcsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDE3LCAxOSwgMzAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTcsIDIzLCAzMCwgMCksXG4gIH0sXG4gIHtcbiAgICBpZDogMTMsXG4gICAgdGl0bGU6ICdNdWx0aS1kYXkgRXZlbnQnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAyMCwgMTksIDMwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDIyLCAyLCAwLCAwKSxcbiAgfSxcbiAge1xuICAgIGlkOiAxNCxcbiAgICB0aXRsZTogJ1RvZGF5JyxcbiAgICBzdGFydDogbmV3IERhdGUobmV3IERhdGUoKS5zZXRIb3VycyhuZXcgRGF0ZSgpLmdldEhvdXJzKCkgLSAzKSksXG4gICAgZW5kOiBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldEhvdXJzKG5ldyBEYXRlKCkuZ2V0SG91cnMoKSArIDMpKSxcbiAgfSxcbiAge1xuICAgIGlkOiAxNSxcbiAgICB0aXRsZTogJ1BvaW50IGluIFRpbWUgRXZlbnQnLFxuICAgIHN0YXJ0OiBub3csXG4gICAgZW5kOiBub3csXG4gIH0sXG4gIHtcbiAgICBpZDogMTYsXG4gICAgdGl0bGU6ICdWaWRlbyBSZWNvcmQnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxNCwgMTUsIDMwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDE0LCAxOSwgMCwgMCksXG4gIH0sXG4gIHtcbiAgICBpZDogMTcsXG4gICAgdGl0bGU6ICdEdXRjaCBTb25nIFByb2R1Y2luZycsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDE0LCAxNiwgMzAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTQsIDIwLCAwLCAwKSxcbiAgfSxcbiAge1xuICAgIGlkOiAxOCxcbiAgICB0aXRsZTogJ0l0YWV3b24gTWVldGluZycsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDE0LCAxNiwgMzAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMTQsIDE3LCAzMCwgMCksXG4gIH0sXG4gIHtcbiAgICBpZDogMTksXG4gICAgdGl0bGU6ICdPbmxpbmUgQ29kaW5nIFRlc3QnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxNCwgMTcsIDMwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDE0LCAyMCwgMzAsIDApLFxuICB9LFxuICB7XG4gICAgaWQ6IDIwLFxuICAgIHRpdGxlOiAnQW4gb3ZlcmxhcHBlZCBFdmVudCcsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDE0LCAxNywgMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxNCwgMTgsIDMwLCAwKSxcbiAgfSxcbiAge1xuICAgIGlkOiAyMSxcbiAgICB0aXRsZTogJ1Bob25lIEludGVydmlldycsXG4gICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDE0LCAxNywgMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxNCwgMTgsIDMwLCAwKSxcbiAgfSxcbiAge1xuICAgIGlkOiAyMixcbiAgICB0aXRsZTogJ0Nvb2tpbmcgQ2xhc3MnLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCAxNCwgMTcsIDMwLCAwKSxcbiAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDE0LCAxOSwgMCwgMCksXG4gIH0sXG4gIHtcbiAgICBpZDogMjMsXG4gICAgdGl0bGU6ICdHbyB0byB0aGUgZ3ltJyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMTQsIDE4LCAzMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAxNCwgMjAsIDAsIDApLFxuICB9LFxuICB7XG4gICAgaWQ6IDI0LFxuICAgIHRpdGxlOiAnRFNUIGVuZHMgb24gdGhpcyBkYXkgKEV1cm9wZSknLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIyLCA5LCAzMCwgMCwgMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDIyLCA5LCAzMCwgNCwgMzAsIDApLFxuICB9LFxuICB7XG4gICAgaWQ6IDI1LFxuICAgIHRpdGxlOiAnRFNUIGVuZHMgb24gdGhpcyBkYXkgKEFtZXJpY2EpJyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAyMiwgMTAsIDYsIDAsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAyMiwgMTAsIDYsIDQsIDMwLCAwKSxcbiAgfSxcbiAge1xuICAgIGlkOiAyNixcbiAgICB0aXRsZTogJ0RTVCBzdGFydHMgb24gdGhpcyBkYXkgKEFtZXJpY2EpJyxcbiAgICBzdGFydDogbmV3IERhdGUoMjAyMywgMiwgMTIsIDAsIDAsIDApLFxuICAgIGVuZDogbmV3IERhdGUoMjAyMywgMiwgMTIsIDQsIDMwLCAwKSxcbiAgfSxcbiAge1xuICAgIGlkOiAyNyxcbiAgICB0aXRsZTogJ0RTVCBzdGFydHMgb24gdGhpcyBkYXkgKEV1cm9wZSknLFxuICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDIzLCAyLCAyNiwgMCwgMCwgMCksXG4gICAgZW5kOiBuZXcgRGF0ZSgyMDIzLCAyLCAyNiwgNCwgMzAsIDApLFxuICB9LFxuXVxuIiwiZXhwb3J0IGRlZmF1bHQge1xuICBldmVudHM6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ1JlbmNvbnRyZScsXG4gICAgICByZXNvdXJjZUlkOiAnYScsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgMiwgNSwgMzAsIDAsIDApLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCAyLCAxMCwgMzAsIDAsIDApLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdBbm90aGVyIE1lZXRpbmcnLFxuICAgICAgcmVzb3VyY2VJZDogJ2InLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDEsIDIsIDMwLCAwLCAwKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgMSwgNCwgMzAsIDAsIDApLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdBJyxcbiAgICAgIHJlc291cmNlSWQ6ICdhJyxcbiAgICAgIHN0YXJ0OiBuZXcgRGF0ZSgyMDE1LCAzLCA0LCA1LCAzMCwgMCwgMCksXG4gICAgICBlbmQ6IG5ldyBEYXRlKDIwMTUsIDMsIDQsIDEwLCAzMCwgMCwgMCksXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ0InLFxuICAgICAgcmVzb3VyY2VJZDogJ2InLFxuICAgICAgc3RhcnQ6IG5ldyBEYXRlKDIwMTUsIDMsIDQsIDUsIDMwLCAwLCAwKSxcbiAgICAgIGVuZDogbmV3IERhdGUoMjAxNSwgMywgNCwgMTAsIDMwLCAwLCAwKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnQycsXG4gICAgICByZXNvdXJjZUlkOiAnYycsXG4gICAgICBzdGFydDogbmV3IERhdGUoMjAxNSwgMywgNCwgNSwgMzAsIDAsIDApLFxuICAgICAgZW5kOiBuZXcgRGF0ZSgyMDE1LCAzLCA0LCAxMCwgMzAsIDAsIDApLFxuICAgIH0sXG4gIF0sXG5cbiAgbGlzdDogW1xuICAgIHtcbiAgICAgIGlkOiAnYScsXG4gICAgICB0aXRsZTogJ1Jvb20gQScsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJ2InLFxuICAgICAgdGl0bGU6ICdSb29tIEInLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICdjJyxcbiAgICAgIHRpdGxlOiAnUm9vbSBDJyxcbiAgICB9LFxuICBdLFxufVxuIiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgYXNzZXJ0SXNGbiwgQWRkQ29udGV4dCB9IGZyb20gXCJAc3Rvcnlib29rL2FkZG9uLWRvY3NcIjtcblxuaW1wb3J0IHsgTWV0YSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcbmltcG9ydCBCYXNpYyBmcm9tICcuL2RlbW9zL2V4YW1wbGVDb2RlL2Jhc2ljLmpzJ1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8TWV0YSB0aXRsZT1cIkFib3V0IEJpZyBDYWxlbmRhclwiIG1keFR5cGU9XCJNZXRhXCIgLz5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJiaWctY2FsZW5kYXJcIlxuICAgIH19PntgQmlnIENhbGVuZGFyYH08L2gxPlxuICAgIHsvKiBXZSB3b24ndCBsb2FkIHRoaXMgaW4gYSAnU3RvcnknIGJsb2NrLCBhcyB3ZSB3YW50IGl0IGlubGluZSB3aXRob3V0IGNyZWF0aW5nIHN1Ym5hdmlnYXRpb24gKi99XG4gICAgPEJhc2ljIHNob3dEZW1vTGluaz17ZmFsc2V9IHN0eWxlPXt7XG4gICAgICBtYXJnaW5Cb3R0b206IDE1XG4gICAgfX0gbWR4VHlwZT1cIkJhc2ljXCIgLz5cbiAgICA8aDIgey4uLntcbiAgICAgIFwiaWRcIjogXCJpbnRyb2R1Y3Rpb25cIlxuICAgIH19PntgSW50cm9kdWN0aW9uYH08L2gyPlxuICAgIDxwPntgQmlnIENhbGVuZGFyIGlzIGEgZnVsbCBmZWF0dXJlZCBDYWxlbmRhciBjb21wb25lbnQgZm9yIG1hbmFnaW5nIGV2ZW50cyBhbmQgZGF0ZXMuIEl0IHVzZXMgbW9kZXJuIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGZsZXhib3hgfTwvaW5saW5lQ29kZT57YCBmb3IgbGF5b3V0LCBtYWtpbmcgaXQgc3VwZXIgcmVzcG9uc2l2ZSBhbmQgcGVyZm9ybWFudC4gTGVhdmluZyBtb3N0IG9mIHRoZSBsYXlvdXQgaGVhdnkgbGlmdGluZyB0byB0aGUgYnJvd3Nlci5gfTwvcD5cbiAgICA8cD57YEhlcmUgeW91IHdpbGwgZmluZCBhbGwgb2YgdGhlIGRvY3VtZW50YXRpb24geW91IG5lZWQgZm9yIGltcGxlbWVudGluZyBCaWcgQ2FsZW5kYXIuIFdlIGV4cGxhaW4gdGhlIGJhc2ljcyBvZiBpbXBsZW1lbnRhdGlvbiwgZ2l2ZSB5b3UgY2xlYXIgZGV0YWlscyBhbmQgZXhhbXBsZXMgb2YgdGhlIHZhcmlvdXMgcHJvcHMgbmVlZGVkLCBhbmQgdHJ5IHRvIGFuc3dlciB5b3VyIHF1ZXN0aW9ucyBvbiBob3cgeW91IGNhbiB1c2UgQmlnIENhbGVuZGFyIHRvIGltcGxlbWVudCBjdXN0b20gc2NoZWR1bGluZyBzb2x1dGlvbnMuYH08L3A+XG4gICAgPGgyIHsuLi57XG4gICAgICBcImlkXCI6IFwiZ2V0dGluZy1zdGFydGVkXCJcbiAgICB9fT57YEdldHRpbmcgU3RhcnRlZGB9PC9oMj5cbiAgICA8cD57YFlvdSBjYW4gaW5zdGFsbCBCaWcgQ2FsZW5kYXIgdmlhIGB9PGEgcGFyZW50TmFtZT1cInBcIiB7Li4ue1xuICAgICAgICBcImhyZWZcIjogXCJodHRwczovL3lhcm5wa2cuY29tL2VuL1wiLFxuICAgICAgICBcInRhcmdldFwiOiBcIl9ibGFua1wiLFxuICAgICAgICBcInJlbFwiOiBcIm5vZm9sbG93IG5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgfX0+e2B5YXJuYH08L2E+e2Agb3IgYH08YSBwYXJlbnROYW1lPVwicFwiIHsuLi57XG4gICAgICAgIFwiaHJlZlwiOiBcImh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9cIixcbiAgICAgICAgXCJ0YXJnZXRcIjogXCJfYmxhbmtcIixcbiAgICAgICAgXCJyZWxcIjogXCJub2ZvbGxvdyBub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIH19PntgbnBtYH08L2E+e2A6YH08L3A+XG4gICAgPHA+PGVtIHBhcmVudE5hbWU9XCJwXCI+e2B5YXJuOmB9PC9lbT57YCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B5YXJuIGFkZCByZWFjdC1iaWctY2FsZW5kYXJgfTwvaW5saW5lQ29kZT48L3A+XG4gICAgPHA+PGVtIHBhcmVudE5hbWU9XCJwXCI+e2BucG06YH08L2VtPntgIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG5wbSBpbnN0YWxsIC0tc2F2ZSByZWFjdC1iaWctY2FsZW5kYXJgfTwvaW5saW5lQ29kZT48L3A+XG4gICAgPHA+PGVtIHBhcmVudE5hbWU9XCJwXCI+e2BOb3RlYH08L2VtPntgOiBSZXF1aXJlcyBOb2RlID49IDE4YH08L3A+XG4gICAgPHA+e2BXaGVuIHlvdSBpbmNsdWRlIEJpZyBDYWxlbmRhciBpbiB5b3VyIGludGVyZmFjZSwgeW91IHdpbGwgbmVlZCB0aGUgY29yZSBzdHlsZXMuIFdlIHByb3ZpZGUgYSBwcmVjb21waWxlZCBzdHlsZSBzaGVldCAoYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgcmVhY3QtYmlnLWNhbGVuZGFyL2xpYi9jc3MvcmVhY3QtYmlnLWNhbGVuZGFyLmNzc2B9PC9pbmxpbmVDb2RlPntgKSBmb3IgeW91LCBvciB5b3UgY2FuIGRpcmVjdGx5IGltcG9ydCB0aGUgU0FTUyBpbnRvIHlvdXIgaW1wbGVtZW50YXRpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMsIHNlZSB0aGUgYH08TGlua1RvIGtpbmQ9XCJndWlkZXMtY3VzdG9tLXN0eWxpbmdcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BDdXN0b20gU3R5bGluZ2B9PC9MaW5rVG8+e2AgZ3VpZGUgZm9yIG1vcmUgZGV0YWlscy5gfTwvcD5cbiAgICA8cD57YEFsc28gbWFrZSBzdXJlIHRoYXQgeW91ciBjYWxlbmRhcidzIGNvbnRhaW5lciBlbGVtZW50IGhhcyBhIGhlaWdodCwgb3IgdGhlIGNhbGVuZGFyIHdvbid0IGJlIHZpc2libGUgKHNlZSB3aHkgYmVsb3cpLmB9PC9wPlxuICAgIDxwPntgRGF0ZSBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgbG9jYWxpemF0aW9uIGlzIGB9PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgaGFyZGB9PC9zdHJvbmc+e2AgYW5kIEJpZyBDYWxlbmRhciBkb2Vzbid0IGV2ZW4gYXR0ZW1wdCB0b1xuc29sdmUgdGhhdCBwcm9ibGVtLiBJbnN0ZWFkIHlvdSBjYW4gdXNlIG9uZSBvZiB0aGUgbWFueSBleGNlbGxlbnQgc29sdXRpb25zIGFscmVhZHlcbm91dCB0aGVyZSwgdmlhIGFkYXB0ZXJzIGNhbGxlZCBgfTxlbSBwYXJlbnROYW1lPVwicFwiPntgbG9jYWxpemVyc2B9PC9lbT57YC4gQmlnIENhbGVuZGFyIGNvbWVzIHdpdGggdGhyZWUgbG9jYWxpemVycyBmb3IgdXNlXG53aXRoIGB9PGEgcGFyZW50TmFtZT1cInBcIiB7Li4ue1xuICAgICAgICBcImhyZWZcIjogXCJodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2dsb2JhbGl6ZVwiLFxuICAgICAgICBcInRhcmdldFwiOiBcIl9ibGFua1wiLFxuICAgICAgICBcInJlbFwiOiBcIm5vZm9sbG93IG5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgfX0+e2BHbG9iYWxpemUuanNgfTwvYT57YCwgYH08YSBwYXJlbnROYW1lPVwicFwiIHsuLi57XG4gICAgICAgIFwiaHJlZlwiOiBcImh0dHA6Ly9tb21lbnRqcy5jb20vXCIsXG4gICAgICAgIFwidGFyZ2V0XCI6IFwiX2JsYW5rXCIsXG4gICAgICAgIFwicmVsXCI6IFwibm9mb2xsb3cgbm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICB9fT57YE1vbWVudC5qc2B9PC9hPntgIG9yIGB9PGEgcGFyZW50TmFtZT1cInBcIiB7Li4ue1xuICAgICAgICBcImhyZWZcIjogXCJodHRwczovL21vbWVudC5naXRodWIuaW8vbHV4b25cIixcbiAgICAgICAgXCJ0YXJnZXRcIjogXCJfYmxhbmtcIixcbiAgICAgICAgXCJyZWxcIjogXCJub2ZvbGxvdyBub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIH19PntgTHV4b25gfTwvYT57YC5gfTwvcD5cbiAgICA8cD57YENob29zZSB0aGUgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwibG9jYWxpemVyXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgbG9jYWxpemVyYH08L0xpbmtUbz57YCB0aGF0IGJlc3Qgc3VpdHMgeW91ciBuZWVkcywgb3Igd3JpdGUgeW91ciBvd24uIFdoYXRldmVyIHlvdSBkbywgeW91J2xsIG5lZWQgdG8gc2V0IGl0IHVwIGJlZm9yZSB5b3UgY2FuIHVzZSB0aGUgY2FsZW5kYXIgKHlvdSBvbmx5IG5lZWQgdG8gc2V0IGl0IHVwIG9uY2UpLmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanN4XCJcbiAgICAgIH19PntgaW1wb3J0IHsgQ2FsZW5kYXIsIG1vbWVudExvY2FsaXplciB9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuXG4vLyBTZXR1cCB0aGUgbG9jYWxpemVyIGJ5IHByb3ZpZGluZyB0aGUgbW9tZW50IChvciBnbG9iYWxpemUsIG9yIEx1eG9uKSBPYmplY3Rcbi8vIHRvIHRoZSBjb3JyZWN0IGxvY2FsaXplci5cbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpIC8vIG9yIGdsb2JhbGl6ZUxvY2FsaXplclxuXG5jb25zdCBNeUNhbGVuZGFyID0gKHByb3BzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwibXlDdXN0b21IZWlnaHRcIj5cbiAgICA8Q2FsZW5kYXJcbiAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgZXZlbnRzPXtteUV2ZW50c0xpc3R9XG4gICAgICBzdGFydEFjY2Vzc29yPVwic3RhcnRcIlxuICAgICAgZW5kQWNjZXNzb3I9XCJlbmRcIlxuICAgIC8+XG4gIDwvZGl2PlxuKVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPHA+e2BPbmNlIHlvdSd2ZSBjb25maWd1cmVkIGEgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwibG9jYWxpemVyXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgbG9jYWxpemVyYH08L0xpbmtUbz57YCwgdGhlIENhbGVuZGFyIGlzIHJlYWR5IHRvIGFjY2VwdCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BkYXRlRm9ybWF0YH08L2lubGluZUNvZGU+e2AgcHJvcHMuIFRoZXNlIHByb3BzIGRldGVybWluZSBob3cgZGF0ZXMgd2lsbCBiZSBkaXNwbGF5ZWQgdGhyb3VnaG91dCB0aGUgY29tcG9uZW50IGFuZCBhcmUgc3BlY2lmaWMgdG8gdGhlIGxvY2FsaXplciBvZiB5b3VyIGNob2ljZS4gRm9yIGluc3RhbmNlIGlmIHlvdSBhcmUgdXNpbmcgdGhlIE1vbWVudCBsb2NhbGl6ZXIsIHRoZW4gYW55IGB9PGEgcGFyZW50TmFtZT1cInBcIiB7Li4ue1xuICAgICAgICBcImhyZWZcIjogXCJodHRwOi8vbW9tZW50anMuY29tL2RvY3MvIy9kaXNwbGF5aW5nL2Zvcm1hdC9cIixcbiAgICAgICAgXCJ0YXJnZXRcIjogXCJfYmxhbmtcIixcbiAgICAgICAgXCJyZWxcIjogXCJub2ZvbGxvdyBub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIH19PntgTW9tZW50IGZvcm1hdCBwYXR0ZXJuYH08L2E+e2AgaXMgdmFsaWQhYH08L3A+XG4gICAgPHA+e2BPbmUgdGhpbmcgdG8gbm90ZSBpcyB0aGF0LCBCaWcgQ2FsZW5kYXIgdHJlYXRzIGV2ZW50IHN0YXJ0L2VuZCBkYXRlcyBhcyBhbiBgfTxlbSBwYXJlbnROYW1lPVwicFwiPntgZXhjbHVzaXZlYH08L2VtPntgIHJhbmdlIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGV2ZW50IHNwYW5zIHVwIHRvLCBidXQgbm90IGluY2x1ZGluZywgdGhlIGVuZCBkYXRlLiBJbiB0aGUgY2FzZSBvZiBkaXNwbGF5aW5nIGV2ZW50cyBvbiB3aG9sZSBkYXlzLCBlbmQgZGF0ZXMgYXJlIHJvdW5kZWQgYH08ZW0gcGFyZW50TmFtZT1cInBcIj57YHVwYH08L2VtPntgIHRvIHRoZSBuZXh0IGRheS4gU28gYW4gZXZlbnQgZW5kaW5nIG9uIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YEFwciA4dGggMTI6MDA6MDAgYW1gfTwvaW5saW5lQ29kZT57YCB3aWxsIG5vdCBhcHBlYXIgb24gdGhlIDh0aCwgd2hlcmVhcyBvbmUgZW5kaW5nXG5vbiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BBcHIgOHRoIDEyOjAxOjAwIGFtYH08L2lubGluZUNvZGU+e2Agd2lsbC4gSWYgeW91IHdhbnQgYH08ZW0gcGFyZW50TmFtZT1cInBcIj57YGluY2x1c2l2ZWB9PC9lbT57YCByYW5nZXMgY29uc2lkZXIgcHJvdmlkaW5nIGEgZnVuY3Rpb24gYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZW5kLWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZW5kQWNjZXNzb3JgfTwvTGlua1RvPntgIHRoYXQgcmV0dXJucyB0aGUgZW5kIGRhdGUgKyAxIGRheSBmb3IgdGhvc2UgZXZlbnRzIHRoYXQgZW5kIGF0IG1pZG5pZ2h0LmB9PC9wPlxuICAgIDxoMiB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm5leHQtc3RlcHNcIlxuICAgIH19PntgTmV4dCBTdGVwc2B9PC9oMj5cbiAgICA8cD57YFdlIGhhdmUgcHJvdmlkZWQgYSBudW1iZXIgb2YgYH08TGlua1RvIGtpbmQ9XCJhYm91dC1vdXItZXhhbXBsZXNcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BFeGFtcGxlc2B9PC9MaW5rVG8+e2Agd2l0aGluIHRoaXMgZG9jdW1lbnRhdGlvbiwgaW5jbHVkaW5nIGluZGl2aWR1YWwgZXhhbXBsZXMgb2YgZWFjaCBhbmQgZXZlcnkgYH08TGlua1RvIGtpbmQ9XCJwcm9wcy1mdWxsLXByb3AtbGlzdFwiIG1keFR5cGU9XCJMaW5rVG9cIj57YHByb3BgfTwvTGlua1RvPntgLCBhcyB3ZWxsIGFzIHRoZSBEcmFnIGFuZCBEcm9wIGB9PExpbmtUbyBraW5kPVwiYWRkb25zLWludHJvZHVjdGlvblwiIG1keFR5cGU9XCJMaW5rVG9cIj57YEFkZG9uYH08L0xpbmtUbz57YC5gfTwvcD5cbiAgICA8cD57YFRoZSBkb2N1bWVudGF0aW9uICdDYW52YXMnIHRhYiwgYXQgdGhlIHRvcCBvZiB0aGUgcGFnZSwgd2lsbCBzaG93IHlvdSB0aGUgY29tcG9uZW50IGV4YW1wbGUgZm9yIHRoYXQgc3BlY2lmaWMgcGllY2Ugb2YgZG9jdW1lbnRhdGlvbi4gV2hpbGUgaW4gdGhlICdDYW52YXMnIHlvdSBtYXkgYWxzbyBoYXZlIGludGVyYWN0aXZlIGNvbnRyb2xzIGluIHRoZSAnQ29udHJvbHMnIHBhbmVsLCBhbGxvd2luZyB5b3UgdG8gcGxheSB3aXRoIGEgcHJvcCdzIGRpZmZlcmVudCB2YWx1ZXMuYH08L3A+XG4gICAgPHA+e2BUaGUgJ0RvY3MnIHRhYiB3aWxsIGNvbnRhaW4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgc3BlY2lhbCBjYXNlIHNjZW5hcmlvcywgYW5kIHRoZSByZW5kZXJlZCBleGFtcGxlLiBNb3N0IG9mIHRoZXNlIGV4YW1wbGVzIGNvbnRhaW4gYSAnU2hvdyBjb2RlJyBidXR0b24gKGJvdHRvbSByaWdodCksIG9yIGV2ZW4gYSBzcGVjaWFsIGxpbmsgYXQgdGhlIHRvcCB0byAnVmlldyBFeGFtcGxlIFNvdXJjZSBDb2RlJy5gfTwvcD5cbiAgICA8aDIgey4uLntcbiAgICAgIFwiaWRcIjogXCJqb2luLXRoZS1jb21tdW5pdHlcIlxuICAgIH19PntgSm9pbiB0aGUgQ29tbXVuaXR5YH08L2gyPlxuICAgIDxwPntgSGVscCB1cyBpbXByb3ZlIEJpZyBDYWxlbmRhciEgSm9pbiB1cyBvbiBgfTxhIHBhcmVudE5hbWU9XCJwXCIgey4uLntcbiAgICAgICAgXCJocmVmXCI6IFwiaHR0cHM6Ly9qb2luLnNsYWNrLmNvbS90L2JpZ2NhbGVuZGFyL3NoYXJlZF9pbnZpdGUvenQtMW1sMWo5OWFmLXFJdnFPZm9zTW9nMVc3V3hNMH5qMlFcIixcbiAgICAgICAgXCJ0YXJnZXRcIjogXCJfYmxhbmtcIixcbiAgICAgICAgXCJyZWxcIjogXCJub2ZvbGxvdyBub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIH19PntgU2xhY2tgfTwvYT57YC5gfTwvcD5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IF9fcGFnZSA9ICgpID0+IHsgdGhyb3cgbmV3IEVycm9yKFwiRG9jcy1vbmx5IHN0b3J5XCIpOyB9O1xuXG5fX3BhZ2UucGFyYW1ldGVycyA9IHsgZG9jc09ubHk6IHRydWUgfTtcblxuY29uc3QgY29tcG9uZW50TWV0YSA9IHsgdGl0bGU6ICdBYm91dCBCaWcgQ2FsZW5kYXInLCBpbmNsdWRlU3RvcmllczogW1wiX19wYWdlXCJdLCAgfTtcblxuY29uc3QgbWR4U3RvcnlOYW1lVG9LZXkgPSB7fTtcblxuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzID0gY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzIHx8IHt9O1xuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgPSB7XG4gIC4uLihjb21wb25lbnRNZXRhLnBhcmFtZXRlcnMuZG9jcyB8fCB7fSksXG4gIHBhZ2U6ICgpID0+IDxBZGRDb250ZXh0IG1keFN0b3J5TmFtZVRvS2V5PXttZHhTdG9yeU5hbWVUb0tleX0gbWR4Q29tcG9uZW50QW5ub3RhdGlvbnM9e2NvbXBvbmVudE1ldGF9PjxNRFhDb250ZW50IC8+PC9BZGRDb250ZXh0Pixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudE1ldGE7IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgYXNzZXJ0SXNGbiwgQWRkQ29udGV4dCB9IGZyb20gXCJAc3Rvcnlib29rL2FkZG9uLWRvY3NcIjtcblxuaW1wb3J0IHsgTWV0YSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPE1ldGEgdGl0bGU9XCJBYm91dCBPdXIgRXhhbXBsZXNcIiBtZHhUeXBlPVwiTWV0YVwiIC8+XG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwiYWJvdXQtb3VyLWV4YW1wbGVzXCJcbiAgICB9fT57YEFib3V0IE91ciBFeGFtcGxlc2B9PC9oMT5cbiAgICA8cD57YFdlIGhhdmUgYXR0ZW1wdGVkIHRvIHByb3ZpZGUgYmVzdCBwcmFjdGljZSBjb2RlIGV4YW1wbGVzIGZvciB1c2luZyBCaWcgQ2FsZW5kYXIuYH08L3A+XG4gICAgPHA+e2BCaWcgQ2FsZW5kYXIgaXMuLi4gd2VsbCwgXCJiaWdcIi4gSXQgaGFzIGRvemVucyBvZiBwcm9wcywgYW5kIGNhbiBiZSBjb25maWd1cmVkIGluIGEgbG90IG9mIGRpZmZlcmVudCB3YXlzIHRvIG1lZXQgYSB3aWRlIG51bWJlciBvZiB1c2UgY2FzZXMuIEl0IGFsc28gaGFzIHF1aXRlIGEgbnVtYmVyIG9mIHN1YmNvbXBvbmVudHMsIGFuZCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBvdmVycmlkZSBtb3N0IGFsbCBvZiB0aGVtLmB9PC9wPlxuICAgIDxwPntgQmVjYXVzZSBvZiB0aGlzLCBpdCdzIGltcG9ydGFudCB0byB0aGluayBhYm91dCBob3cgeW91IGluaXRpYWxpemUgeW91ciBwcm9wZXJ0aWVzIGFzIHlvdSBwYXNzIHRoZW0gdG8gQmlnIENhbGVuZGFyLiBMZXQncyBsb29rIGF0IGEgc21hbGwgZXhhbXBsZTpgfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgLy8gZG9uJ3QgZG8gdGhpc1xuPENhbGVuZGFyIGRlZmF1bHREYXRlPXtuZXcgRGF0ZSgyMDE1LCAzLCAxMyl9IHsuLi5vdGhlclByb3BzfSAvPlxuYH08L2NvZGU+PC9wcmU+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YC8vIGRvIHRoaXNcbmNvbnN0IHtkZWZhdWx0RGF0ZX0gPSB1c2VNZW1vKCgpID0+ICh7XG4gIGRlZmF1bHREYXRlOiBuZXcgRGF0ZSgyMDE1LCAzLCAxMylcbn0pLCBbXSlcbi8vLi4uXG48Q2FsZW5kYXIgZGVmYXVsdERhdGU9e2RlZmF1bHREYXRlfSB7Li4ub3RoZXJQcm9wc30gLz5cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwPntgSW5zdGFudGlhdGluZyBhIG5ldyBKUyBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BEYXRlYH08L2lubGluZUNvZGU+e2AgY3JlYXRlcyBhIG5ldyBvYmplY3QuIFJlYWN0IHdpbGwgc2VlIHRoaXMgJ25ldycgcHJvcCBhbmQgcmUtcmVuZGVyIGV2ZXJ5IHN1YmNvbXBvbmVudCB0aGF0IHJlbGllcyB1cG9uIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGRlZmF1bHREYXRlYH08L2lubGluZUNvZGU+e2AsIGV2ZW4gaWYgKHRlY2huaWNhbGx5KSBpdCBkaWQgbm90IGNoYW5nZS5gfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgLy8gZG9uJ3QgZG8gdGhpc1xuPENhbGVuZGFyIG9uVmlldz17KG5ld1ZpZXcpID0+IHNldFZpZXcobmV3Vmlldyl9IHsuLi5vdGhlclByb3BzfSAvPlxuYH08L2NvZGU+PC9wcmU+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YC8vIGFuZCBkb24ndCBkbyB0aGlzXG5jb25zdCBvblZpZXcgPSAobmV3VmlldykgPT4gc2V0VmlldyhuZXdWaWV3KVxuPENhbGVuZGFyIG9uVmlldz17b25WaWV3fSB7Li4ub3RoZXJQcm9wc30gLz5cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2AvLyBkbyB0aGlzXG5jb25zdCBvblZpZXcgPSB1c2VDYWxsYmFjaygobmV3VmlldykgPT4gc2V0VmlldyhuZXdWaWV3KSwgW3NldFZpZXddKVxuPENhbGVuZGFyIG9uVmlldz17b25WaWV3fSB7Li4ub3RoZXJQcm9wc30gLz5cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwPntgSWYgYSBwcm9wIHRha2VzIGFuIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YE9iamVjdGB9PC9pbmxpbmVDb2RlPntgLCBhbiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BBcnJheWB9PC9pbmxpbmVDb2RlPntgLCBhIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YERhdGVgfTwvaW5saW5lQ29kZT57YCwgYSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BGdW5jdGlvbmB9PC9pbmxpbmVDb2RlPntgLCBvciBhbnkgb3RoZXIgbm9uLXNpbXBsZSB2YXJpYWJsZSB0eXBlLCBpdCBpcyBhbHdheXMgYSBnb29kIGlkZWEgdG8gbWVtb2l6ZSB0aG9zZSB2YWx1ZXMgcHJpb3IgdG8gcGFzc2luZyB0aGVtIGFzIHByb3BzLiBDaGFuY2VzIGFyZSB0aGF0IHNvbWUgcHJvcCBvciBzdGF0ZSBjaGFuZ2Ugd2lsbCB0cmlnZ2VyIGEgcmUtcmVuZGVyIG9mIHlvdXIgQ2FsZW5kYXIuIEhvdyB3ZWxsIHlvdSBtYW5hZ2UgeW91ciBwcm9wcyB3aWxsIGFmZmVjdCBvdmVyYWxsIHJlbmRlciBwZXJmb3JtYW5jZS5gfTwvcD5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IF9fcGFnZSA9ICgpID0+IHsgdGhyb3cgbmV3IEVycm9yKFwiRG9jcy1vbmx5IHN0b3J5XCIpOyB9O1xuXG5fX3BhZ2UucGFyYW1ldGVycyA9IHsgZG9jc09ubHk6IHRydWUgfTtcblxuY29uc3QgY29tcG9uZW50TWV0YSA9IHsgdGl0bGU6ICdBYm91dCBPdXIgRXhhbXBsZXMnLCBpbmNsdWRlU3RvcmllczogW1wiX19wYWdlXCJdLCAgfTtcblxuY29uc3QgbWR4U3RvcnlOYW1lVG9LZXkgPSB7fTtcblxuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzID0gY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzIHx8IHt9O1xuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgPSB7XG4gIC4uLihjb21wb25lbnRNZXRhLnBhcmFtZXRlcnMuZG9jcyB8fCB7fSksXG4gIHBhZ2U6ICgpID0+IDxBZGRDb250ZXh0IG1keFN0b3J5TmFtZVRvS2V5PXttZHhTdG9yeU5hbWVUb0tleX0gbWR4Q29tcG9uZW50QW5ub3RhdGlvbnM9e2NvbXBvbmVudE1ldGF9PjxNRFhDb250ZW50IC8+PC9BZGRDb250ZXh0Pixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudE1ldGE7IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgYXNzZXJ0SXNGbiwgQWRkQ29udGV4dCB9IGZyb20gXCJAc3Rvcnlib29rL2FkZG9uLWRvY3NcIjtcblxuaW1wb3J0IHsgTWV0YSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPE1ldGEgdGl0bGU9XCJBZGRvbnMvSW50cm9kdWN0aW9uXCIgbWR4VHlwZT1cIk1ldGFcIiAvPlxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImFkZG9uc1wiXG4gICAgfX0+e2BBZGRvbnNgfTwvaDE+XG4gICAgPHA+e2BBbiBcIkFkZG9uXCIgaXMgc29tZSBiaXQgb2YgY29kZSB0byBlbmhhbmNlIGFuZCBleHBhbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgQmlnIENhbGVuZGFyLiBUaGVzZSBhcmUgdHlwaWNhbGx5IHByb3ZpZGVkIGJ5IHNvbWVvbmUgd2l0aGluIHRoZSBCaWcgQ2FsZW5kYXIgZGV2ZWxvcGVyIGNvbW11bml0eS5gfTwvcD5cbiAgICA8cD57YEluIHRoaXMgc2VjdGlvbiB3ZSBkb2N1bWVudCB0aG9zZSBBZGRvbnMgdGhhdCB3ZSBoYXZlIGluY2x1ZGVkIGRpcmVjdGx5IGluIHRoZSBCaWcgQ2FsZW5kYXIgY29kZWJhc2UuIElmIHlvdSBoYXZlIGFkZGl0aW9uYWwgQWRkLW9ucyB0aGF0IHlvdSBoYXZlIGNyZWF0ZWQgZm9yIEJpZyBDYWxlbmRhciBwbGVhc2UgbGV0IHVzIGtub3cgYW5kIHdlIG1heSBsaW5rIGl0IGhlcmUgaW4gdGhlIGRvY3VtZW50YXRpb24uYH08L3A+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1pbnRyb2R1Y3Rpb25cIiBtZHhUeXBlPVwiTGlua1RvXCI+RHJhZyBhbmQgRHJvcDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlO1xuXG5leHBvcnQgY29uc3QgX19wYWdlID0gKCkgPT4geyB0aHJvdyBuZXcgRXJyb3IoXCJEb2NzLW9ubHkgc3RvcnlcIik7IH07XG5cbl9fcGFnZS5wYXJhbWV0ZXJzID0geyBkb2NzT25seTogdHJ1ZSB9O1xuXG5jb25zdCBjb21wb25lbnRNZXRhID0geyB0aXRsZTogJ0FkZG9ucy9JbnRyb2R1Y3Rpb24nLCBpbmNsdWRlU3RvcmllczogW1wiX19wYWdlXCJdLCAgfTtcblxuY29uc3QgbWR4U3RvcnlOYW1lVG9LZXkgPSB7fTtcblxuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzID0gY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzIHx8IHt9O1xuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgPSB7XG4gIC4uLihjb21wb25lbnRNZXRhLnBhcmFtZXRlcnMuZG9jcyB8fCB7fSksXG4gIHBhZ2U6ICgpID0+IDxBZGRDb250ZXh0IG1keFN0b3J5TmFtZVRvS2V5PXttZHhTdG9yeU5hbWVUb0tleX0gbWR4Q29tcG9uZW50QW5ub3RhdGlvbnM9e2NvbXBvbmVudE1ldGF9PjxNRFhDb250ZW50IC8+PC9BZGRDb250ZXh0Pixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudE1ldGE7IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgYXNzZXJ0SXNGbiwgQWRkQ29udGV4dCB9IGZyb20gXCJAc3Rvcnlib29rL2FkZG9uLWRvY3NcIjtcblxuaW1wb3J0IHsgTWV0YSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPE1ldGEgdGl0bGU9XCJBZGRvbnMvRHJhZyBhbmQgRHJvcC9JbnRyb2R1Y3Rpb25cIiBtZHhUeXBlPVwiTWV0YVwiIC8+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZHJhZy1hbmQtZHJvcFwiXG4gICAgfX0+e2BEcmFnIGFuZCBEcm9wYH08L2gzPlxuICAgIDxwPntgQ3JlYXRlcyBhIGhpZ2hlci1vcmRlciBjb21wb25lbnQgKEhPQykgc3VwcG9ydGluZyBkcmFnICYgZHJvcCBmb3IgbW92aW5nIGFuZC9vciByZXNpemluZyBvZiBldmVudHM6YH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YGltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuaW1wb3J0IHdpdGhEcmFnQW5kRHJvcCBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXIvbGliL2FkZG9ucy9kcmFnQW5kRHJvcCdcbmltcG9ydCAncmVhY3QtYmlnLWNhbGVuZGFyL2xpYi9hZGRvbnMvZHJhZ0FuZERyb3Avc3R5bGVzLmNzcydcblxuY29uc3QgRG5EQ2FsZW5kYXIgPSB3aXRoRHJhZ0FuZERyb3AoQ2FsZW5kYXIpXG5cbi8qIC4uLiAqL1xuXG5yZXR1cm4gKFxuICA8RG5EQ2FsZW5kYXJcbiAgICBsb2NhbGl6ZXI9e215TG9jYWxpemVyfVxuICAgIGV2ZW50cz17ZXZlbnRzfVxuICAgIGRyYWdnYWJsZUFjY2Vzc29yPXsoZXZlbnQpID0+IHRydWV9XG4gIC8+XG4pXG5gfTwvY29kZT48L3ByZT5cbiAgICA8cD57YFNldCBgfTxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJyZXNpemFibGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2ByZXNpemFibGVgfTwvTGlua1RvPntgIHRvIGZhbHNlIGluIHlvdXIgY2FsZW5kYXIgaWYgeW91IGRvbid0IHdhbnQgZXZlbnRzIHRvIGJlIHJlc2l6YWJsZS5cbmB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHJlc2l6YWJsZWB9PC9pbmxpbmVDb2RlPntgIGlzIHNldCB0byB0cnVlIGJ5IGRlZmF1bHQuYH08L3A+XG4gICAgPHA+e2BUaGUgSE9DIGFkZHMgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwib24tZXZlbnQtZHJvcFwiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uRXZlbnREcm9wYH08L0xpbmtUbz57YCwgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwib24tZXZlbnQtcmVzaXplXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgb25FdmVudFJlc2l6ZWB9PC9MaW5rVG8+e2AsIGFuZCBgfTxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJvbi1kcmFnLXN0YXJ0XCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgb25EcmFnU3RhcnRgfTwvTGlua1RvPntgIGNhbGxiYWNrIHByb3BlcnRpZXMgaWYgdGhlIGV2ZW50cyBhcmVcbm1vdmVkIG9yIHJlc2l6ZWQuIFRoZXNlIGNhbGxiYWNrcyBhcmUgY2FsbGVkIHdpdGggdGhlc2Ugc2lnbmF0dXJlczpgfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgZnVuY3Rpb24gb25FdmVudERyb3Aoe2V2ZW50LCBzdGFydCwgZW5kLCBhbGxEYXl9KSB7Li4ufVxuZnVuY3Rpb24gb25FdmVudFJlc2l6ZSh7ZXZlbnQsIHN0YXJ0LCBlbmQsIGFsbERheX0pIHsuLi59XG5mdW5jdGlvbiBvbkRyYWdTdGFydCh7ZXZlbnR9KSB7Li4ufVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPHA+e2BNb3ZpbmcgYW5kIHJlc2l6aW5nIG9mIGV2ZW50cyBoYXMgc29tZSBzdWJ0bGV0eSB3aGljaCBvbmUgc2hvdWxkIGJlIGF3YXJlIG9mOmB9PC9wPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPHAgcGFyZW50TmFtZT1cImxpXCI+e2BJbiBzb21lIHNpdHVhdGlvbnMsIG5vbi1hbGxEYXkgZXZlbnRzIGFyZSBkaXNwbGF5ZWQgaW4gXCJyb3dcIiBmb3JtYXQgd2hlcmUgdGhleVxuYXJlIHJlbmRlcmVkIGhvcml6b250YWxseS4gVGhpcyBpcyB0aGUgY2FzZSBmb3IgQUxMIGV2ZW50cyBpbiBhIG1vbnRoIHZpZXcuIEl0XG5pcyBhbHNvIG9jY3VycyB3aXRoIG11bHRpLWRheSBldmVudHMgaW4gYSBkYXkgb3Igd2VlayB2aWV3ICh1bmxlc3MgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic2hvdy1tdWx0aS1kYXktdGltZXNcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BzaG93TXVsdGlEYXlUaW1lc2B9PC9MaW5rVG8+e2BcbmlzIHNldCkuYH08L3A+XG4gICAgICA8L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8cCBwYXJlbnROYW1lPVwibGlcIj57YFdoZW4gZHJvcHBpbmcgb3IgcmVzaXppbmcgbm9uLWFsbERheSBldmVudHMgaW50byBhIHRoZSBoZWFkZXIgYXJlYSBvciB3aGVuXG5yZXNpemluZyB0aGVtIGhvcml6b250YWxseSBiZWNhdXNlIHRoZXkgYXJlIGRpc3BsYXllZCBpbiByb3cgZm9ybWF0LCB0aGVpclxudGltZXMgYXJlIHByZXNlcnZlZCwgb25seSB0aGVpciBkYXRlIGlzIGNoYW5nZWQuYH08L3A+XG4gICAgICA8L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8cCBwYXJlbnROYW1lPVwibGlcIj57YElmIHlvdSBjYXJlIGFib3V0IHRoZXNlIGNvcm5lciBjYXNlcywgeW91IGNhbiBleGFtaW5lIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BhbGxEYXlgfTwvaW5saW5lQ29kZT57YCBwYXJhbSBzdXBwbGllZFxuaW4gdGhlIGNhbGxiYWNrIHRvIGRldGVybWluZSBob3cgdGhlIHVzZXIgZHJvcHBlZCBvciByZXNpemVkIHRoZSBldmVudC5gfTwvcD5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEFkZGl0aW9uYWxseSwgdGhpcyBIT0MgYWRkcyB0aGUgY2FsbGJhY2sgcHJvcHMgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwib24tZHJvcC1mcm9tLW91dHNpZGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvbkRyb3BGcm9tT3V0c2lkZWB9PC9MaW5rVG8+e2AgYW5kIGB9PExpbmtUbyBraW5kPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtcHJvcHNcIiBzdG9yeT1cIm9uLWRyYWctb3ZlclwiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uRHJhZ092ZXJgfTwvTGlua1RvPntgOmB9PC9wPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPHAgcGFyZW50TmFtZT1cImxpXCI+e2BCeSBkZWZhdWx0LCB0aGUgY2FsZW5kYXIgd2lsbCBub3QgcmVzcG9uZCB0byBvdXRzaWRlIGRyYWdnYWJsZSBpdGVtcyBiZWluZyBkcm9wcGVkXG5vbnRvIGl0LiBIb3dldmVyLCBpZiBgfTxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJvbi1kcm9wLWZyb20tb3V0c2lkZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uRHJvcEZyb21PdXRzaWRlYH08L0xpbmtUbz57YCBjYWxsYmFjayBpcyBwYXNzZWQsIHRoZW4gd2hlbiBkcmFnZ2FibGVcbkRPTSBlbGVtZW50cyBhcmUgZHJvcHBlZCBvbiB0aGUgY2FsZW5kYXIsIHRoZSBjYWxsYmFjayB3aWxsIGZpcmUsIHJlY2VpdmluZyBhblxub2JqZWN0IHdpdGggc3RhcnQgYW5kIGVuZCB0aW1lcywgYW5kIGFuIGFsbERheSBib29sZWFuLmB9PC9wPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPHAgcGFyZW50TmFtZT1cImxpXCI+e2BJZiBgfTxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJvbi1kcm9wLWZyb20tb3V0c2lkZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uRHJvcEZyb21PdXRzaWRlYH08L0xpbmtUbz57YCBpcyBwYXNzZWQsIGJ1dCBgfTxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJvbi1kcmFnLW92ZXJcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvbkRyYWdPdmVyYH08L0xpbmtUbz57YCBpcyBub3QsIGFueSBkcmFnZ2FibGUgZXZlbnQgd2lsbCBiZVxuZHJvcHBhYmxlIG9udG8gdGhlIGNhbGVuZGFyIGJ5IGRlZmF1bHQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiBhbiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvbkRyYWdPdmVyYH08L2lubGluZUNvZGU+e2AgY2FsbGJhY2tcbmB9PGVtIHBhcmVudE5hbWU9XCJwXCI+e2Bpc2B9PC9lbT57YCBwYXNzZWQsIHRoZW4gaXQgY2FuIGRpc2NyaW1pbmF0ZSBhcyB0byB3aGV0aGVyIGEgZHJhZ2dhYmxlIGl0ZW0gaXMgZHJvcHBhYmxlIG9uIHRoZVxuY2FsZW5kYXIuIFRvIGRlc2lnbmF0ZSBhIGRyYWdnYWJsZSBpdGVtIGFzIGRyb3BwYWJsZSwgY2FsbCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BldmVudC5wcmV2ZW50RGVmYXVsdGB9PC9pbmxpbmVDb2RlPntgXG5pbnNpZGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25EcmFnT3ZlcmB9PC9pbmxpbmVDb2RlPntgLiBJZiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BldmVudC5wcmV2ZW50RGVmYXVsdGB9PC9pbmxpbmVDb2RlPntgIGlzIG5vdCBjYWxsZWQgaW4gdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uRHJhZ092ZXJgfTwvaW5saW5lQ29kZT57YFxuY2FsbGJhY2ssIHRoZW4gdGhlIGRyYWdnYWJsZSBpdGVtIHdpbGwgbm90IGJlIGRyb3BwYWJsZSBvbiB0aGUgY2FsZW5kYXIuYH08L3A+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YGZ1bmN0aW9uIG9uRHJvcEZyb21PdXRzaWRlKHsgc3RhcnQsIGVuZCwgYWxsRGF5IH0pIHsuLi59XG5mdW5jdGlvbiBvbkRyYWdPdmVyKERyYWdFdmVudDogU3ludGhldGljRXZlbnQpIHsuLi59XG5gfTwvY29kZT48L3ByZT5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IF9fcGFnZSA9ICgpID0+IHsgdGhyb3cgbmV3IEVycm9yKFwiRG9jcy1vbmx5IHN0b3J5XCIpOyB9O1xuXG5fX3BhZ2UucGFyYW1ldGVycyA9IHsgZG9jc09ubHk6IHRydWUgfTtcblxuY29uc3QgY29tcG9uZW50TWV0YSA9IHsgdGl0bGU6ICdBZGRvbnMvRHJhZyBhbmQgRHJvcC9JbnRyb2R1Y3Rpb24nLCBpbmNsdWRlU3RvcmllczogW1wiX19wYWdlXCJdLCAgfTtcblxuY29uc3QgbWR4U3RvcnlOYW1lVG9LZXkgPSB7fTtcblxuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzID0gY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzIHx8IHt9O1xuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgPSB7XG4gIC4uLihjb21wb25lbnRNZXRhLnBhcmFtZXRlcnMuZG9jcyB8fCB7fSksXG4gIHBhZ2U6ICgpID0+IDxBZGRDb250ZXh0IG1keFN0b3J5TmFtZVRvS2V5PXttZHhTdG9yeU5hbWVUb0tleX0gbWR4Q29tcG9uZW50QW5ub3RhdGlvbnM9e2NvbXBvbmVudE1ldGF9PjxNRFhDb250ZW50IC8+PC9BZGRDb250ZXh0Pixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudE1ldGE7IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgYXNzZXJ0SXNGbiwgQWRkQ29udGV4dCB9IGZyb20gXCJAc3Rvcnlib29rL2FkZG9uLWRvY3NcIjtcblxuaW1wb3J0IHsgTWV0YSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPE1ldGEgdGl0bGU9XCJBZGRvbnMvRHJhZyBhbmQgRHJvcC9wcm9wcy9GdWxsIFByb3AgTGlzdFwiIG1keFR5cGU9XCJNZXRhXCIgLz5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJhbGwtZHJhZy1hbmQtZHJvcHMtcHJvcHNcIlxuICAgIH19PntgQWxsIERyYWcgYW5kIERyb3BzIFByb3BzYH08L2gxPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9uZXZlbnRkcm9wXCJcbiAgICB9fT57YG9uRXZlbnREcm9wYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoeyBldmVudCwgc3RhcnQsIGVuZCwgYWxsRGF5IH0pID0+IGFueWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJvbi1ldmVudC1kcm9wXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQSBjYWxsYmFjayBmaXJlZCB3aGVuIHVzZXIgZHJvcHMgYW4gaXRlbSBmcm9tIG9uZSBzbG90IHRvIGFub3RoZXIgZnJvbSB3aXRoaW4gdGhlIENhbGVuZGFyLiBEZXZlbG9wZXJzIHdpbGwgdHlwaWNhbGx5IHVzZSB0aGlzIG1ldGhvZCB0byB1cGRhdGUgYW4gaXRlbSdzIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHN0YXJ0YH08L2lubGluZUNvZGU+e2AgYW5kIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGVuZGB9PC9pbmxpbmVDb2RlPntgIGluIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImV2ZW50c1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YGV2ZW50c2B9PC9MaW5rVG8+e2AuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwib25kcmFnc3RhcnRcIlxuICAgIH19Pntgb25EcmFnU3RhcnRgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uICh7IGV2ZW50LCBhY3Rpb24sIGRpcmVjdGlvbiB9KSA9PiBhbnlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwib24tZHJhZy1zdGFydFwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEEgY2FsbGJhY2sgZmlyZWQgd2hlbiB1c2VyIGJlZ2lucyB0byBkcmFnIGFuIGV2ZW50LmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9uZHJvcGZyb21vdXRzaWRlXCJcbiAgICB9fT57YG9uRHJvcEZyb21PdXRzaWRlYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoeyBzdGFydCwgZW5kLCBhbGxEYXkgfSkgPT4gYW55YH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwiYWRkb25zLWRyYWctYW5kLWRyb3AtcHJvcHNcIiBzdG9yeT1cIm9uLWRyb3AtZnJvbS1vdXRzaWRlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQSBjYWxsYmFjayBmaXJlZCB3aGVuIHVzZXIgZHJvcHMgYW4gaXRlbSBvbnRvIHRoZSBDYWxlbmRhciBmcm9tIG91dHNpZGUgb2YgdGhlIENhbGVuZGFyLiBEZXZlbG9wZXJzIHdpbGwgdHlwaWNhbGx5IHVzZSB0aGlzIG1ldGhvZCB0byBhZGQgbmV3IGl0ZW1zIHRvIHRoZSBDYWxlbmRhcidzIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImV2ZW50c1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YGV2ZW50c2B9PC9MaW5rVG8+e2AuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgSW1wb3J0YW50OmB9PC9zdHJvbmc+e2AgVGhlIGNhbGxiYWNrIGRvZXMgYH08c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2Bub3RgfTwvc3Ryb25nPntgIHJlY2VpdmUgdGhlIGVsZW1lbnQgYmVpbmcgZHJvcHBlZC4gSXQgb25seSByZWNlaXZlcyB0aGUgZGV0YWlscyBvZiB0aGUgc2xvdCBhbiBlbGVtZW50IHdhcyBkcm9wcGVkIG9uLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRyYWdmcm9tb3V0c2lkZWl0ZW1cIlxuICAgIH19PntgZHJhZ0Zyb21PdXRzaWRlSXRlbWB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKCkgPT4gYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJkcmFnLWZyb20tb3V0c2lkZS1pdGVtXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQSBjYWxsYmFjayB0byBnZXQgYSB0ZW1wb3JhcnkgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZXZlbnRgfTwvaW5saW5lQ29kZT57YCB0byBkaXNwbGF5IGluIGEgc2xvdCBpbiB0aGUgcHJvY2VzcyBvZiBkcmFnZ2luZyBmcm9tIG91dHNpZGUuIFRoaXMgaXMgbm90IHJlcXVpcmVkIGZvciBEcmFnIGFuZCBEcm9wIHRvIGZ1bmN0aW9uLCBidXQgcHJvdmlkZXMgYSBuaWNlIHZpc3VhbCBjdWUgdG8gdGhlIHVzZXIgd2hlbiBkcmFnZ2luZyBpbiBhbiBpdGVtIGZyb20gb3V0c2lkZSBvZiB0aGUgQ2FsZW5kYXIuYH08L3A+XG4gICAgPHA+e2BUaXA6IFRvZ2dsZSB0aGUgY2hlY2tib3gsIGluIHRoZSBleGFtcGxlLCBhbmQgZHJhZyBhbiBvdXRzaWRlIGl0ZW0gaW4uIERvIHRoaXMgZnJvbSBib3RoIGNoZWNrYm94IHN0YXRlcyB0byBzZWUgdGhlIGRpZmZlcmVuY2UgaW4gZWZmZWN0LmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9uZHJhZ292ZXJcIlxuICAgIH19Pntgb25EcmFnT3ZlcmB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRyYWdFdmVudDogU3ludGhldGljRXZlbnQpID0+IGFueWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJvbi1kcmFnLW92ZXJcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BJZiBhbiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvbkRyYWdPdmVyYH08L2lubGluZUNvZGU+e2AgY2FsbGJhY2sgYH08ZW0gcGFyZW50TmFtZT1cInBcIj57YGlzYH08L2VtPntgIHBhc3NlZCwgdGhlbiBpdCBjYW4gZGlzY3JpbWluYXRlIGFzIHRvIHdoZXRoZXIgYSBkcmFnZ2FibGUgaXRlbSBpcyBkcm9wcGFibGUgb24gdGhlIGNhbGVuZGFyLiBUbyBkZXNpZ25hdGUgYSBkcmFnZ2FibGUgaXRlbSBhcyBkcm9wcGFibGUsIGNhbGwgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZXZlbnQucHJldmVudERlZmF1bHRgfTwvaW5saW5lQ29kZT57YCBpbnNpZGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25EcmFnT3ZlcmB9PC9pbmxpbmVDb2RlPntgLiBJZiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BldmVudC5wcmV2ZW50RGVmYXVsdGB9PC9pbmxpbmVDb2RlPntgIGlzIG5vdCBjYWxsZWQgaW4gdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uRHJhZ092ZXJgfTwvaW5saW5lQ29kZT57YCBjYWxsYmFjaywgdGhlbiB0aGUgZHJhZ2dhYmxlIGl0ZW0gd2lsbCBub3QgYmUgZHJvcHBhYmxlIG9uIHRoZSBjYWxlbmRhci5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJkcmFnZ2FibGVhY2Nlc3NvclwiXG4gICAgfX0+e2BkcmFnZ2FibGVBY2Nlc3NvcmB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nfGZ1bmN0aW9uIChldmVudCkgPT4gYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgKCkgPT4gdHJ1ZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJkcmFnZ2FibGUtYWNjZXNzb3JcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BXaGVuIHVzZWQsIGNhbiBkZXRlcm1pbmUgd2hldGhlciBhbiAnZXZlbnQnIGlzIGRyYWdnYWJsZWB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcInJlc2l6YWJsZVwiXG4gICAgfX0+e2ByZXNpemFibGVgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHRydWVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwicmVzaXphYmxlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRGV0ZXJtaW5lcyBpZiBldmVudHMgbWF5IGJlIHJlc2l6ZWQgb24gdGhlIENhbGVuZGFyLiBVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwib24tZXZlbnQtcmVzaXplXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgb25FdmVudFJlc2l6ZWB9PC9MaW5rVG8+e2AuIFdoZW4gdXNlZCB3aXRoIHRoZSBgfTxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJyZXNpemFibGUtYWNjZXNzb3JcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2ByZXNpemFibGVBY2Nlc3NvcmB9PC9MaW5rVG8+e2AgdGhlIGRldmVsb3BlciBoYXMgZXZlbiBncmVhdGVyIGNvbnRyb2wuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgTm90ZTpgfTwvc3Ryb25nPntgIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHJlc2l6YWJsZWB9PC9pbmxpbmVDb2RlPntgIGV2ZW50cyBtdXN0IGFsc28gYmUgZHJhZ2dhYmxlLiBZb3UgY2Fubm90IHJlc2l6ZSBhbiBldmVudCB3aXRoIGEgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwiZHJhZ2dhYmxlLWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZHJhZ2dhYmxlQWNjZXNzb3JgfTwvTGlua1RvPntgIHByb3Agb2YgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZmFsc2VgfTwvaW5saW5lQ29kZT57YC5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbmV2ZW50cmVzaXplXCJcbiAgICB9fT57YG9uRXZlbnRSZXNpemVgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uICh7IGV2ZW50LCBzdGFydCwgZW5kIH0pID0+IGFueWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJvbi1ldmVudC1yZXNpemVcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBIGNhbGxiYWNrIGZpcmVkIHdoZW4gdXNlciByZXNpemVzIGFuIGV2ZW50LiBEZXZlbG9wZXJzIHdpbGwgdHlwaWNhbGx5IHVzZSB0aGlzIG1ldGhvZCB0byB1cGRhdGUgYW4gaXRlbSdzIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHN0YXJ0YH08L2lubGluZUNvZGU+e2AgYW5kIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGVuZGB9PC9pbmxpbmVDb2RlPntgIGluIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImV2ZW50c1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YGV2ZW50c2B9PC9MaW5rVG8+e2AuYH08L3A+XG4gICAgPHA+e2BUaGUgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwicmVzaXphYmxlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgcmVzaXphYmxlYH08L0xpbmtUbz57YCBwcm9wIG11c3QgYmUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgdHJ1ZWB9PC9pbmxpbmVDb2RlPntgICh0aGUgZGVmYXVsdCkgdG8gdXNlIHRoZSBtZXRob2QuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgTm90ZTpgfTwvc3Ryb25nPntgIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHJlc2l6YWJsZWB9PC9pbmxpbmVDb2RlPntgIGV2ZW50cyBtdXN0IGFsc28gYmUgZHJhZ2dhYmxlLiBZb3UgY2Fubm90IHJlc2l6ZSBhbiBldmVudCB3aXRoIGEgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1wcm9wc1wiIHN0b3J5PVwiZHJhZ2dhYmxlLWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgZHJhZ2dhYmxlQWNjZXNzb3JgfTwvTGlua1RvPntgIHByb3Agb2YgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZmFsc2VgfTwvaW5saW5lQ29kZT57YC5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJyZXNpemFibGVhY2Nlc3NvclwiXG4gICAgfX0+e2ByZXNpemFibGVBY2Nlc3NvcmB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nfGZ1bmN0aW9uIChldmVudCkgPT4gYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgKCkgPT4gdHJ1ZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJyZXNpemFibGUtYWNjZXNzb3JcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BEZXRlcm1pbmVzIGlmIGFuIGV2ZW50IGlzIHJlc2l6YWJsZS5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BOb3RlOmB9PC9zdHJvbmc+e2AgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgcmVzaXphYmxlYH08L2lubGluZUNvZGU+e2AgZXZlbnRzIG11c3QgYWxzbyBiZSBkcmFnZ2FibGUuIFlvdSBjYW5ub3QgcmVzaXplIGFuIGV2ZW50IHdpdGggYSBgfTxMaW5rVG8ga2luZD1cImFkZG9ucy1kcmFnLWFuZC1kcm9wLXByb3BzXCIgc3Rvcnk9XCJkcmFnZ2FibGUtYWNjZXNzb3JcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BkcmFnZ2FibGVBY2Nlc3NvcmB9PC9MaW5rVG8+e2AgcHJvcCBvZiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BmYWxzZWB9PC9pbmxpbmVDb2RlPntgLmB9PC9wPlxuICAgIDwvTURYTGF5b3V0Pjtcbn1cbjtcbk1EWENvbnRlbnQuaXNNRFhDb21wb25lbnQgPSB0cnVlO1xuXG5leHBvcnQgY29uc3QgX19wYWdlID0gKCkgPT4geyB0aHJvdyBuZXcgRXJyb3IoXCJEb2NzLW9ubHkgc3RvcnlcIik7IH07XG5cbl9fcGFnZS5wYXJhbWV0ZXJzID0geyBkb2NzT25seTogdHJ1ZSB9O1xuXG5jb25zdCBjb21wb25lbnRNZXRhID0geyB0aXRsZTogJ0FkZG9ucy9EcmFnIGFuZCBEcm9wL3Byb3BzL0Z1bGwgUHJvcCBMaXN0JywgaW5jbHVkZVN0b3JpZXM6IFtcIl9fcGFnZVwiXSwgIH07XG5cbmNvbnN0IG1keFN0b3J5TmFtZVRvS2V5ID0ge307XG5cbmNvbXBvbmVudE1ldGEucGFyYW1ldGVycyA9IGNvbXBvbmVudE1ldGEucGFyYW1ldGVycyB8fCB7fTtcbmNvbXBvbmVudE1ldGEucGFyYW1ldGVycy5kb2NzID0ge1xuICAuLi4oY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgfHwge30pLFxuICBwYWdlOiAoKSA9PiA8QWRkQ29udGV4dCBtZHhTdG9yeU5hbWVUb0tleT17bWR4U3RvcnlOYW1lVG9LZXl9IG1keENvbXBvbmVudEFubm90YXRpb25zPXtjb21wb25lbnRNZXRhfT48TURYQ29udGVudCAvPjwvQWRkQ29udGV4dD4sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnRNZXRhOyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IGFzc2VydElzRm4sIEFkZENvbnRleHQgfSBmcm9tIFwiQHN0b3J5Ym9vay9hZGRvbi1kb2NzXCI7XG5cbmltcG9ydCB7IE1ldGEgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5mdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxNZXRhIHRpdGxlPVwiRXhhbXBsZXMvRHJhZyBhbmQgRHJvcFwiIG1keFR5cGU9XCJNZXRhXCIgLz5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJkcmFnLWFuZC1kcm9wXCJcbiAgICB9fT57YERyYWcgYW5kIERyb3BgfTwvaDE+XG4gICAgPHA+e2BUaGUgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtZHJhZy1hbmQtZHJvcC1pbnRyb2R1Y3Rpb25cIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BEcmFnIGFuZCBEcm9wIEV4YW1wbGVzYH08L0xpbmtUbz57YCBoYXZlIGJlZW4gbW92ZWQgaW50byB0aGUgYH08TGlua1RvIGtpbmQ9XCJhZGRvbnMtaW50cm9kdWN0aW9uXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgQWRkT25zYH08L0xpbmtUbz57YCBzZWN0aW9uIG9mIHRoZSBkb2N1bWVudGF0aW9uYH08L3A+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7XG5cbmV4cG9ydCBjb25zdCBfX3BhZ2UgPSAoKSA9PiB7IHRocm93IG5ldyBFcnJvcihcIkRvY3Mtb25seSBzdG9yeVwiKTsgfTtcblxuX19wYWdlLnBhcmFtZXRlcnMgPSB7IGRvY3NPbmx5OiB0cnVlIH07XG5cbmNvbnN0IGNvbXBvbmVudE1ldGEgPSB7IHRpdGxlOiAnRXhhbXBsZXMvRHJhZyBhbmQgRHJvcCcsIGluY2x1ZGVTdG9yaWVzOiBbXCJfX3BhZ2VcIl0sICB9O1xuXG5jb25zdCBtZHhTdG9yeU5hbWVUb0tleSA9IHt9O1xuXG5jb21wb25lbnRNZXRhLnBhcmFtZXRlcnMgPSBjb21wb25lbnRNZXRhLnBhcmFtZXRlcnMgfHwge307XG5jb21wb25lbnRNZXRhLnBhcmFtZXRlcnMuZG9jcyA9IHtcbiAgLi4uKGNvbXBvbmVudE1ldGEucGFyYW1ldGVycy5kb2NzIHx8IHt9KSxcbiAgcGFnZTogKCkgPT4gPEFkZENvbnRleHQgbWR4U3RvcnlOYW1lVG9LZXk9e21keFN0b3J5TmFtZVRvS2V5fSBtZHhDb21wb25lbnRBbm5vdGF0aW9ucz17Y29tcG9uZW50TWV0YX0+PE1EWENvbnRlbnQgLz48L0FkZENvbnRleHQ+LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50TWV0YTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBhc3NlcnRJc0ZuLCBBZGRDb250ZXh0IH0gZnJvbSBcIkBzdG9yeWJvb2svYWRkb24tZG9jc1wiO1xuXG5pbXBvcnQgeyBNZXRhIH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8TWV0YSB0aXRsZT1cIkd1aWRlcy9DdXN0b20gU3R5bGluZ1wiIG1keFR5cGU9XCJNZXRhXCIgLz5cbiAgICA8aDEgey4uLntcbiAgICAgIFwiaWRcIjogXCJjdXN0b20tc3R5bGluZ1wiXG4gICAgfX0+e2BDdXN0b20gU3R5bGluZ2B9PC9oMT5cbiAgICA8cD57YE91dCBvZiB0aGUgYm94LCB5b3UgY2FuIGluY2x1ZGUgdGhlIGNvbXBpbGVkIENTUyBmaWxlcyBhbmQgYmUgdXAgYW5kIHJ1bm5pbmcuIEJ1dCwgc29tZXRpbWVzLCB5b3UgbWF5IHdhbnQgdG8gc3R5bGUgQmlnIENhbGVuZGFyIHRvIG1hdGNoIHlvdXIgYXBwbGljYXRpb24gc3R5bGluZy4gRm9yIHRoaXMgcmVhc29uLCBTQVNTIGZpbGVzIGFyZSBpbmNsdWRlZCB3aXRoIEJpZyBDYWxlbmRhci5gfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLXNhc3NcIlxuICAgICAgfX0+e2BAaW1wb3J0ICdyZWFjdC1iaWctY2FsZW5kYXIvbGliL3Nhc3Mvc3R5bGVzJztcbkBpbXBvcnQgJ3JlYWN0LWJpZy1jYWxlbmRhci9saWIvYWRkb25zL2RyYWdBbmREcm9wL3N0eWxlcyc7IC8vIGlmIHVzaW5nIERuRFxuYH08L2NvZGU+PC9wcmU+XG4gICAgPHA+e2BTQVNTIGltcGxlbWVudGF0aW9uIHByb3ZpZGVzIGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgdmFyaWFibGVzYH08L2lubGluZUNvZGU+e2AgZmlsZSBjb250YWluaW5nIGNvbG9yIGFuZCBzaXppbmcgdmFyaWFibGVzIHRoYXQgeW91IGNhbiB1cGRhdGUgdG8gZml0IHlvdXIgYXBwbGljYXRpb24uIE5vdGU6IENoYW5naW5nIGFuZC9vciBvdmVycmlkaW5nIHN0eWxlcyBjYW4gY2F1c2UgcmVuZGVyaW5nIGlzc3VlcyB3aXRoIHlvdXIgQmlnIENhbGVuZGFyLiBDYXJlZnVsbHkgdGVzdCBlYWNoIGNoYW5nZSBhY2NvcmRpbmdseS5gfTwvcD5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IF9fcGFnZSA9ICgpID0+IHsgdGhyb3cgbmV3IEVycm9yKFwiRG9jcy1vbmx5IHN0b3J5XCIpOyB9O1xuXG5fX3BhZ2UucGFyYW1ldGVycyA9IHsgZG9jc09ubHk6IHRydWUgfTtcblxuY29uc3QgY29tcG9uZW50TWV0YSA9IHsgdGl0bGU6ICdHdWlkZXMvQ3VzdG9tIFN0eWxpbmcnLCBpbmNsdWRlU3RvcmllczogW1wiX19wYWdlXCJdLCAgfTtcblxuY29uc3QgbWR4U3RvcnlOYW1lVG9LZXkgPSB7fTtcblxuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzID0gY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzIHx8IHt9O1xuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgPSB7XG4gIC4uLihjb21wb25lbnRNZXRhLnBhcmFtZXRlcnMuZG9jcyB8fCB7fSksXG4gIHBhZ2U6ICgpID0+IDxBZGRDb250ZXh0IG1keFN0b3J5TmFtZVRvS2V5PXttZHhTdG9yeU5hbWVUb0tleX0gbWR4Q29tcG9uZW50QW5ub3RhdGlvbnM9e2NvbXBvbmVudE1ldGF9PjxNRFhDb250ZW50IC8+PC9BZGRDb250ZXh0Pixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudE1ldGE7IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgYXNzZXJ0SXNGbiwgQWRkQ29udGV4dCB9IGZyb20gXCJAc3Rvcnlib29rL2FkZG9uLWRvY3NcIjtcblxuaW1wb3J0IHsgTWV0YSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcbmltcG9ydCBMaW5rVG8gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1saW5rcy9yZWFjdCdcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPE1ldGEgdGl0bGU9XCJHdWlkZXMvQ3JlYXRpbmcgQ3VzdG9tIFZpZXdzXCIgbWR4VHlwZT1cIk1ldGFcIiAvPlxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImNyZWF0aW5nLWEtY3VzdG9tLXZpZXdcIlxuICAgIH19PntgQ3JlYXRpbmcgQSBDdXN0b20gVmlld2B9PC9oMT5cbiAgICA8cD57YEl0IGlzIHBvc3NpYmxlIHRvIG92ZXJyaWRlIGFuIGV4aXN0aW5nIENhbGVuZGFyIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHZpZXdgfTwvaW5saW5lQ29kZT57YCwgb3IgZXZlbiBjcmVhdGUgYSBuZXcgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgdmlld2B9PC9pbmxpbmVDb2RlPntgIGFsbCB0b2dldGhlciwgYnkgYWRoZXJpbmcgdG8gYSBzcGVjaWZpYyBpbnRlcmZhY2UuYH08L3A+XG4gICAgPExpbmtUbyBraW5kPVwiZXhhbXBsZXNcIiBzdG9yeT1cImV4YW1wbGUtOVwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgVmlldyBBbiBFeGFtcGxlXG4gICAgPC9MaW5rVG8+XG4gICAgPHA+e2BGaXJzdCBidWlsZCB5b3VyIGN1c3RvbSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B2aWV3YH08L2lubGluZUNvZGU+e2AgY29tcG9uZW50LiBUaGlzIGNvdWxkIGJlIGJhc2VkIG9mZiBhbiBleGlzdGluZyBjb21wb25lbnQsIG9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGN1c3RvbS5gfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgaW1wb3J0IFJlYWN0LCB7dXNlTWVtb30gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBOYXZpZ2F0ZSB9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbmltcG9ydCBUaW1lR3JpZCBmcm9tICdyZWFjdC1iaWctY2FsZW5kYXIvbGliL1RpbWVHcmlkJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDdXN0b21XZWVrVmlldyh7XG4gIGRhdGUsXG4gIGxvY2FsaXplcixcbiAgbWF4ID0gbG9jYWxpemVyLmVuZE9mKG5ldyBEYXRlKCksICdkYXknKSxcbiAgbWluID0gbG9jYWxpemVyLnN0YXJ0T2YobmV3IERhdGUoKSwgJ2RheScpLFxuICBzY3JvbGxUb1RpbWUgPSBsb2NhbGl6ZXIuc3RhcnRPZihuZXcgRGF0ZSgpLCAnZGF5JyksXG4gIC4uLnByb3BzXG59KSB7XG4gIGNvbnN0IGN1cnJSYW5nZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gQ3VzdG9tV2Vla1ZpZXcucmFuZ2UoZGF0ZSwgeyBsb2NhbGl6ZXIgfSksXG4gICAgW2RhdGUsIGxvY2FsaXplcl1cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFRpbWVHcmlkXG4gICAgICBkYXRlPXtkYXRlfVxuICAgICAgZXZlbnRPZmZzZXQ9ezE1fVxuICAgICAgbG9jYWxpemVyPXtsb2NhbGl6ZXJ9XG4gICAgICBtYXg9e21heH1cbiAgICAgIG1pbj17bWlufVxuICAgICAgcmFuZ2U9e2N1cnJSYW5nZX1cbiAgICAgIHNjcm9sbFRvVGltZT17c2Nyb2xsVG9UaW1lfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuQ3VzdG9tV2Vla1ZpZXcucHJvcFR5cGVzID0ge1xuICBkYXRlOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihEYXRlKS5pc1JlcXVpcmVkLFxuICBsb2NhbGl6ZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIG1heDogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG4gIG1pbjogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG4gIHNjcm9sbFRvVGltZTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRGF0ZSksXG59XG5cbkN1c3RvbVdlZWtWaWV3LnJhbmdlID0gKGRhdGUsIHsgbG9jYWxpemVyIH0pID0+IHtcbiAgY29uc3Qgc3RhcnQgPSBkYXRlXG4gIGNvbnN0IGVuZCA9IGxvY2FsaXplci5hZGQoc3RhcnQsIDIsICdkYXknKVxuXG4gIGxldCBjdXJyZW50ID0gc3RhcnRcbiAgY29uc3QgcmFuZ2UgPSBbXVxuXG4gIHdoaWxlIChsb2NhbGl6ZXIubHRlKGN1cnJlbnQsIGVuZCwgJ2RheScpKSB7XG4gICAgcmFuZ2UucHVzaChjdXJyZW50KVxuICAgIGN1cnJlbnQgPSBsb2NhbGl6ZXIuYWRkKGN1cnJlbnQsIDEsICdkYXknKVxuICB9XG5cbiAgcmV0dXJuIHJhbmdlXG59XG5cbkN1c3RvbVdlZWtWaWV3Lm5hdmlnYXRlID0gKGRhdGUsIGFjdGlvbiwgeyBsb2NhbGl6ZXIgfSkgPT4ge1xuICBzd2l0Y2ggKGFjdGlvbikge1xuICAgIGNhc2UgTmF2aWdhdGUuUFJFVklPVVM6XG4gICAgICByZXR1cm4gbG9jYWxpemVyLmFkZChkYXRlLCAtMywgJ2RheScpXG5cbiAgICBjYXNlIE5hdmlnYXRlLk5FWFQ6XG4gICAgICByZXR1cm4gbG9jYWxpemVyLmFkZChkYXRlLCAzLCAnZGF5JylcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZGF0ZVxuICB9XG59XG5cbkN1c3RvbVdlZWtWaWV3LnRpdGxlID0gKGRhdGUsIHsgbG9jYWxpemVyIH0pID0+IHtcbiAgY29uc3QgW3N0YXJ0LCAuLi5yZXN0XSA9IEN1c3RvbVdlZWtWaWV3LnJhbmdlKGRhdGUsIHsgbG9jYWxpemVyIH0pXG4gIHJldHVybiBsb2NhbGl6ZXIuZm9ybWF0KHsgc3RhcnQsIGVuZDogcmVzdC5wb3AoKSB9LCAnZGF5UmFuZ2VIZWFkZXJGb3JtYXQnKVxufVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPHA+e2BQYXkgc3BlY2lhbCBhdHRlbnRpb24gdG8gdGhlIGFkZGl0aW9uYWwgc3RhdGljIG1ldGhvZHMgYXR0YWNoZWQgdG8geW91ciBjb21wb25lbnQuIEFzIHN0YXRpYyBtZXRob2RzLCB0aGV5IGhhdmUgbm8gY29uY2VwdCBvZiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B0aGlzYH08L2lubGluZUNvZGU+e2AsIGFuZCBoYXZlIHNwZWNpZmljIGFyZ3VtZW50cyB0aGF0IHdpbGwgYmUgcGFzc2VkIGludG8gdGhlbS5gfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgaW50ZXJmYWNlIFZpZXcge1xuICBzdGF0aWMgdGl0bGUoZGF0ZTogRGF0ZSwgeyBmb3JtYXRzOiBEYXRlRm9ybWF0W10sIGN1bHR1cmU6IHN0cmluZz8sIC4uLnByb3BzIH0pOiBzdHJpbmdcbiAgc3RhdGljIG5hdmlnYXRlKGRhdGU6IERhdGUsIGFjdGlvbjogJ1BSRVYnIHwgJ05FWFQnIHwgJ0RBVEUnKTogRGF0ZVxuICBzdGF0aWMgcmFuZ2U/KGRhdGU6IERhdGUsIHsgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyLCAuLi5wcm9wcyB9KTogYXJyYXlcbn1cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwPntgVG8gaW1wbGVtZW50IHlvdXIgY3VzdG9tIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHZpZXdgfTwvaW5saW5lQ29kZT57YCwgaW5jbHVkZSBpdCBpbiB5b3VyIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInZpZXdzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgdmlld3NgfTwvTGlua1RvPntgIHByb3AuYH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YGltcG9ydCBDdXN0b21XZWVrVmlldyBmcm9tICcuL0N1c3RvbVdlZWtWaWV3J1xuLy8uLi5cbmNvbnN0IHt2aWV3cywgLi4ub3RoZXJQcm9wc30gPSB1c2VNZW1vKCgpID0+ICh7XG4gIHZpZXdzOiB7XG4gICAgbW9udGg6IHRydWUsXG4gICAgd2VlazogQ3VzdG9tV2Vla1ZpZXcsXG4gICAgZGF5OiB0cnVlXG4gIH0sXG4gIC8vIC4uLiBvdGhlciBwcm9wc1xufSksIFtdKVxuLy8uLi5cbjxDYWxlbmRhciB2aWV3cz17dmlld3N9IHsuLi5vdGhlclByb3BzfSAvPlxuYH08L2NvZGU+PC9wcmU+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7XG5cbmV4cG9ydCBjb25zdCBfX3BhZ2UgPSAoKSA9PiB7IHRocm93IG5ldyBFcnJvcihcIkRvY3Mtb25seSBzdG9yeVwiKTsgfTtcblxuX19wYWdlLnBhcmFtZXRlcnMgPSB7IGRvY3NPbmx5OiB0cnVlIH07XG5cbmNvbnN0IGNvbXBvbmVudE1ldGEgPSB7IHRpdGxlOiAnR3VpZGVzL0NyZWF0aW5nIEN1c3RvbSBWaWV3cycsIGluY2x1ZGVTdG9yaWVzOiBbXCJfX3BhZ2VcIl0sICB9O1xuXG5jb25zdCBtZHhTdG9yeU5hbWVUb0tleSA9IHt9O1xuXG5jb21wb25lbnRNZXRhLnBhcmFtZXRlcnMgPSBjb21wb25lbnRNZXRhLnBhcmFtZXRlcnMgfHwge307XG5jb21wb25lbnRNZXRhLnBhcmFtZXRlcnMuZG9jcyA9IHtcbiAgLi4uKGNvbXBvbmVudE1ldGEucGFyYW1ldGVycy5kb2NzIHx8IHt9KSxcbiAgcGFnZTogKCkgPT4gPEFkZENvbnRleHQgbWR4U3RvcnlOYW1lVG9LZXk9e21keFN0b3J5TmFtZVRvS2V5fSBtZHhDb21wb25lbnRBbm5vdGF0aW9ucz17Y29tcG9uZW50TWV0YX0+PE1EWENvbnRlbnQgLz48L0FkZENvbnRleHQ+LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50TWV0YTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBhc3NlcnRJc0ZuLCBBZGRDb250ZXh0IH0gZnJvbSBcIkBzdG9yeWJvb2svYWRkb24tZG9jc1wiO1xuXG5pbXBvcnQgeyBNZXRhIH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8TWV0YSB0aXRsZT1cIkd1aWRlcy9VbmRlcnN0YW5kaW5nIERhdGVzXCIgbWR4VHlwZT1cIk1ldGFcIiAvPlxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcInVuZGVyc3RhbmRpbmctZGF0ZXNcIlxuICAgIH19PntgVW5kZXJzdGFuZGluZyBEYXRlc2B9PC9oMT5cbiAgICA8cD57YEJpZyBDYWxlbmRhciBpcyBhbGwgYWJvdXQgZGF0ZXMgYW5kIHRpbWVzLiBQcm9iYWJseSBvbmUgb2YgdGhlIGVhc2llc3QgdGhpbmdzIHRoYXQgYmVnaW5uZXJzIG1pc3MsIHdoZW4gZmlyc3QgaW1wbGVtZW50aW5nIEJpZyBDYWxlbmRhciwgaXMgdGhhdCB3ZSBgfTxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YHJlcXVpcmVgfTwvc3Ryb25nPntgIHRydWUgSlMgYH08YSBwYXJlbnROYW1lPVwicFwiIHsuLi57XG4gICAgICAgIFwiaHJlZlwiOiBcImh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVcIixcbiAgICAgICAgXCJ0YXJnZXRcIjogXCJfYmxhbmtcIixcbiAgICAgICAgXCJyZWxcIjogXCJub2ZvbGxvdyBub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIH19PntgRGF0ZWB9PC9hPntgIG9iamVjdHMgaW4gb3VyIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIkZ1bGwgUHJvcCBMaXN0XCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgcHJvcHNgfTwvTGlua1RvPntgIGFuZCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BldmVudGB9PC9pbmxpbmVDb2RlPntgIGRlZmluaXRpb25zLmB9PC9wPlxuICAgIDxwPntgSXQgaXMgYH08c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2B1cCB0byB0aGUgZGV2ZWxvcGVyYH08L3N0cm9uZz57YCB0byBoYW5kbGUgdHJhbnNsYXRpbmcgZGF0ZS90aW1lIHZhbHVlcyBgfTxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YHRvIGFuZCBmcm9tIEpTIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInN0cm9uZ1wiPntgRGF0ZWB9PC9pbmxpbmVDb2RlPntgIGZvcm1hdGB9PC9zdHJvbmc+e2AuYH08L3A+XG4gICAgPHA+e2BXaGF0IGRvZXMgdGhpcyBtZWFuP2B9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2AvLyB3aWxsIGNhdXNlIGVycm9yc1xuY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+ICcyMDE1LTA0LTEyVDEzOjQ1OjAwLTA1OjAwJywgW10pXG5cbi8vIHdpbGwgd29yayBhcyBleHBlY3RlZFxuY29uc3QgZGVmYXVsdERhdGUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCcyMDE1LTA0LTEyVDEzOjQ1OjAwLTA1OjAwJyksIFtdKVxuXG4vLyB3aWxsIG5ldmVyIGRpc3BsYXkgaW4gdGhlIENhbGVuZGFyXG5jb25zdCBldmVudHMgPSBbXG4gIHtcbiAgICB0aXRsZTogJ015IEV2ZW50J1xuICAgIHN0YXJ0OiAnMjAxNS0wNC0xMlQxMzo0NTowMC0wNTowMCcsXG4gICAgZW5kOiAnMjAxNS0wNC0xMlQxNDowMDowMC0wNTowMCdcbiAgfVxuXVxuXG4vLyB3aGF0IHlvdSBtdXN0IGhhdmUgaXMgdGhpc1xuY29uc3QgZXZlbnRzID0gW1xuICB7XG4gICAgdGl0bGU6ICdNeSBFdmVudCdcbiAgICBzdGFydDogbmV3IERhdGUoJzIwMTUtMDQtMTJUMTM6NDU6MDAtMDU6MDAnKSxcbiAgICBlbmQ6IG5ldyBEYXRlKCcyMDE1LTA0LTEyVDE0OjAwOjAwLTA1OjAwJylcbiAgfVxuXVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPHA+e2BUaGUgb3RoZXIgdGhpbmcgdG8gcmVtZW1iZXIgaXMgdGhhdCB0aGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgRGF0ZWB9PC9pbmxpbmVDb2RlPntgcyB5b3UgcHJvdmlkZSB0byB0aGUgQ2FsZW5kYXIgd2lsbCwgYnkgZGVmYXVsdCwgYmUgZGlzcGxheWVkIGluIHRoZSBicm93c2VyJ3MgbmF0aXZlIGxvY2FsIHRpbWV6b25lIGFuZCBjdWx0dXJlLCByZWdhcmRsZXNzIG9mIGFueSBvZmZzZXRzLiBUaGlzIGlzIGhvdyBKUyBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BEYXRlYH08L2lubGluZUNvZGU+e2BzIHdvcmsgaW4gYnJvd3NlcnMgdG9kYXkuIElmIHlvdSBuZWVkIHRvIGRpc3BsYXkgZGF0ZXMgYW5kIHRpbWVzIGluIGEgc3BlY2lmaWMgdGltZXpvbmUsIG90aGVyIHRoYW4gdGhlIGJyb3dzZXIgbmF0aXZlLCB0aGVuIHlvdSBzaG91bGQgcmV2aWV3IG91ciBgfTxMaW5rVG8ga2luZD1cImd1aWRlcy10aW1lem9uZXNcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BUaW1lem9uZXMgR3VpZGVgfTwvTGlua1RvPntgIG9uIHVzaW5nIGEgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwibG9jYWxpaXplclwiIG1keFR5cGU9XCJMaW5rVG9cIj57YGxvY2FsaXplcmB9PC9MaW5rVG8+e2AgdGhhdCBzdXBwb3J0cyB0aW1lem9uZSBjb252ZXJzaW9ucy5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BTaWRlIE5vdGU6YH08L3N0cm9uZz57YCBTdG9yaW5nIHlvdXIgZGF0ZS90aW1lIHZhbHVlcyBpbiBVVEMgKFp1bHUpIGRhdGUgZm9ybWF0IChZWVlZLU1NLUREVEhIOm1tOnNzWikgd2lsbCBtYWtlIHRoZXNlIHR5cGVzIG9mIHRyYW5zZm9ybWF0aW9ucyBtdWNoIGVhc2llciB0byB3b3JrIHdpdGguYH08L3A+XG4gICAgPC9NRFhMYXlvdXQ+O1xufVxuO1xuTURYQ29udGVudC5pc01EWENvbXBvbmVudCA9IHRydWU7XG5cbmV4cG9ydCBjb25zdCBfX3BhZ2UgPSAoKSA9PiB7IHRocm93IG5ldyBFcnJvcihcIkRvY3Mtb25seSBzdG9yeVwiKTsgfTtcblxuX19wYWdlLnBhcmFtZXRlcnMgPSB7IGRvY3NPbmx5OiB0cnVlIH07XG5cbmNvbnN0IGNvbXBvbmVudE1ldGEgPSB7IHRpdGxlOiAnR3VpZGVzL1VuZGVyc3RhbmRpbmcgRGF0ZXMnLCBpbmNsdWRlU3RvcmllczogW1wiX19wYWdlXCJdLCAgfTtcblxuY29uc3QgbWR4U3RvcnlOYW1lVG9LZXkgPSB7fTtcblxuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzID0gY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzIHx8IHt9O1xuY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgPSB7XG4gIC4uLihjb21wb25lbnRNZXRhLnBhcmFtZXRlcnMuZG9jcyB8fCB7fSksXG4gIHBhZ2U6ICgpID0+IDxBZGRDb250ZXh0IG1keFN0b3J5TmFtZVRvS2V5PXttZHhTdG9yeU5hbWVUb0tleX0gbWR4Q29tcG9uZW50QW5ub3RhdGlvbnM9e2NvbXBvbmVudE1ldGF9PjxNRFhDb250ZW50IC8+PC9BZGRDb250ZXh0Pixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudE1ldGE7IiwiXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBtZHggfSBmcm9tICdAbWR4LWpzL3JlYWN0J1xuXG4vKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiBAanN4IG1keCAqL1xuaW1wb3J0IHsgYXNzZXJ0SXNGbiwgQWRkQ29udGV4dCB9IGZyb20gXCJAc3Rvcnlib29rL2FkZG9uLWRvY3NcIjtcblxuaW1wb3J0IHsgTWV0YSB9IGZyb20gJ0BzdG9yeWJvb2svYWRkb24tZG9jcydcblxuXG5jb25zdCBsYXlvdXRQcm9wcyA9IHtcbiAgXG59O1xuY29uc3QgTURYTGF5b3V0ID0gXCJ3cmFwcGVyXCJcbmZ1bmN0aW9uIE1EWENvbnRlbnQoe1xuICBjb21wb25lbnRzLFxuICAuLi5wcm9wc1xufSkge1xuICByZXR1cm4gPE1EWExheW91dCB7Li4ubGF5b3V0UHJvcHN9IHsuLi5wcm9wc30gY29tcG9uZW50cz17Y29tcG9uZW50c30gbWR4VHlwZT1cIk1EWExheW91dFwiPlxuXG4gICAgPE1ldGEgdGl0bGU9XCJHdWlkZXMvVGltZXpvbmVzXCIgbWR4VHlwZT1cIk1ldGFcIiAvPlxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRlYWxpbmctd2l0aC10aW1lLXpvbmVzXCJcbiAgICB9fT57YERlYWxpbmcgV2l0aCBUaW1lIFpvbmVzYH08L2gxPlxuICAgIDxwPntgVGltZSBab25lcyBhcmUuLi4gYH08c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BoYXJkYH08L3N0cm9uZz57YCwgYW5kIHdoaWxlIGNoYW5naW5nIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BjdWx0dXJlYH08L2lubGluZUNvZGU+e2Agd2lsbCBoZWxwIHdpdGggaW50ZXJuYXRpb25hbGl6YXRpb24gYW5kIGxvY2FsaXphdGlvbiwgaXQgZG9lcyBub3QgYWRqdXN0IHRoZSBkYXRlcyBmb3IgYSBzcGVjaWZpYyB0aW1lIHpvbmUuIEphdmFzY3JpcHQgRGF0ZSBvYmplY3RzIGRvbid0IHJlYWxseSBzdXBwb3J0IHRpbWUgem9uZSBzd2l0Y2hpbmcgbmF0aXZlbHksIGFuZCBkYXRlIG1hdGggZ2V0cyBgfTxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YHZlcnlgfTwvc3Ryb25nPntgIGNvbXBsaWNhdGVkLiBUaGFua2Z1bGx5IEJpZyBDYWxlbmRhciBkb2VzIHN1cHBvcnQgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbW9tZW50YH08L2lubGluZUNvZGU+e2AgYXMgYSBsb2NhbGl6ZXIsIHNvIGlmIHlvdSB1c2UgYH08YSBwYXJlbnROYW1lPVwicFwiIHsuLi57XG4gICAgICAgIFwiaHJlZlwiOiBcImh0dHBzOi8vbW9tZW50anMuY29tL3RpbWV6b25lL1wiLFxuICAgICAgICBcInRhcmdldFwiOiBcIl9ibGFua1wiLFxuICAgICAgICBcInJlbFwiOiBcIm5vZm9sbG93IG5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgfX0+e2Btb21lbnQtdGltZXpvbmVgfTwvYT57YCB5b3UgY2FuIGdldCB5b3VyIGV2ZW50cyB0byBkaXNwbGF5IHJlbGV2YW50IHRvIGEgdGltZSB6b25lIG90aGVyIHRoYW4gdGhlIGJyb3dzZXIgbmF0aXZlLmB9PC9wPlxuICAgIDxwPntgVG8gY2hhbmdlIHlvdXIgZXZlbnRzIHRvIGRpc3BsYXkgYXMgYSBzcGVjaWZpYyB0aW1lIHpvbmUsIHlvdSBtdXN0IGB9PGEgcGFyZW50TmFtZT1cInBcIiB7Li4ue1xuICAgICAgICBcImhyZWZcIjogXCJodHRwczovL21vbWVudGpzLmNvbS90aW1lem9uZS9kb2NzLyMvdXNpbmctdGltZXpvbmVzL2RlZmF1bHQtdGltZXpvbmUvXCIsXG4gICAgICAgIFwidGFyZ2V0XCI6IFwiX2JsYW5rXCIsXG4gICAgICAgIFwicmVsXCI6IFwibm9mb2xsb3cgbm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICB9fT57YGNoYW5nZSBtb21lbnQncyBkZWZhdWx0IHRpbWV6b25lYH08L2E+e2AgZm9yIGFsbCBkYXRlcywgYH08c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2B1c2luZyBhbiBJQU5BIHRpbWUgem9uZWB9PC9zdHJvbmc+e2AuYH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc3hcIlxuICAgICAgfX0+e2BpbXBvcnQgeyBDYWxlbmRhciwgbW9tZW50TG9jYWxpemVyIH0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgJ21vbWVudC10aW1lem9uZScgLy8gb3IgJ21vbWVudC10aW1lem9uZS9idWlsZHMvbW9tZW50LXRpbWV6b25lLXdpdGgtZGF0YVstZGF0YXJhbmdlXS5qcycuIFNlZSB0aGVpciBkb2NzXG5cbi8vIFNldCB0aGUgSUFOQSB0aW1lIHpvbmUgeW91IHdhbnQgdG8gdXNlXG5tb21lbnQudHouc2V0RGVmYXVsdCgnRXVyb3BlL1BhcmlzJylcblxuLy8gU2V0dXAgdGhlIGxvY2FsaXplciBieSBwcm92aWRpbmcgdGhlIG1vbWVudCBPYmplY3Rcbi8vIHRvIHRoZSBjb3JyZWN0IGxvY2FsaXplci5cbmNvbnN0IGxvY2FsaXplciA9IG1vbWVudExvY2FsaXplcihtb21lbnQpIC8vIG9yIGdsb2JhbGl6ZUxvY2FsaXplclxuXG5jb25zdCBNeUNhbGVuZGFyID0gKHByb3BzKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwibXlDdXN0b21IZWlnaHRcIj5cbiAgICA8Q2FsZW5kYXJcbiAgICAgIGxvY2FsaXplcj17bG9jYWxpemVyfVxuICAgICAgZXZlbnRzPXtteUV2ZW50c0xpc3R9XG4gICAgICBzdGFydEFjY2Vzc29yPVwic3RhcnRcIlxuICAgICAgZW5kQWNjZXNzb3I9XCJlbmRcIlxuICAgIC8+XG4gIDwvZGl2PlxuKVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPHA+e2BUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbW9tZW50TG9jYWxpemVyYH08L2lubGluZUNvZGU+e2Agd2lsbCBub3cgaGFuZGxlIGFsbCBkYXRlcyBhbmQgZGF0ZSBtYXRoIGFzIGlmIHRoZSBkYXRlIGlzIGluIHRoZSB0aW1lem9uZSB5b3Ugc3BlY2lmaWVkLiBJdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IGB9PGEgcGFyZW50TmFtZT1cInBcIiB7Li4ue1xuICAgICAgICBcImhyZWZcIjogXCJodHRwczovL21vbWVudGpzLmNvbS90aW1lem9uZS9kb2NzLyMvdXNpbmctdGltZXpvbmVzL2RlZmF1bHQtdGltZXpvbmUvXCIsXG4gICAgICAgIFwidGFyZ2V0XCI6IFwiX2JsYW5rXCIsXG4gICAgICAgIFwicmVsXCI6IFwibm9mb2xsb3cgbm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICB9fT57YGNoYW5naW5nIG1vbWVudCdzIGRlZmF1bHQgdGltZXpvbmVgfTwvYT57YCBhZmZlY3RzIGFsbCBkYXRlcywgY3JlYXRlZCBieSBtb21lbnQsIGZyb20gdGhhdCBwb2ludCBmb3J3YXJkLCBzbyB5b3UgbWF5IHdhbnQgdG8gcmVzZXQgdGhlIGRlZmF1bHQgd2hlbiB5b3VyIGNvbXBvbmVudCB1bm1vdW50cy4gQW5kLCBpZiBzd2l0Y2hpbmcgdGltZXpvbmVzICdvbi10aGUtZmx5JywgeW91IHdhbnQgdG8gdXBkYXRlIHlvdXIgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbG9jYWxpemVyYH08L2lubGluZUNvZGU+e2AgYW5kIGFueSBEYXRlIGJhc2VkIHByb3BzIChtaW4sIG1heCwgZ2V0Tm93LCBldGMpIGF0IHRoZSBzYW1lIHRpbWUuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgTm90ZTpgfTwvc3Ryb25nPntgIFRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BsdXhvbkxvY2FsaXplcmB9PC9pbmxpbmVDb2RlPntgIGFuZCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BkYXlqc0xvY2FsaXplcmB9PC9pbmxpbmVDb2RlPntgIG9wZXJhdGUgaW4gYSBzaW1pbGFyIGZhc2hpb24uIFZpZXcgdGhlaXIgcmVzcGVjdGl2ZSBkZW1vcyBhbmQgc291cmNlIGZvciBleGFtcGxlcyBvZiB0aGVpciB1c2FnZS5gfTwvcD5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IF9fcGFnZSA9ICgpID0+IHsgdGhyb3cgbmV3IEVycm9yKFwiRG9jcy1vbmx5IHN0b3J5XCIpOyB9O1xuXG5fX3BhZ2UucGFyYW1ldGVycyA9IHsgZG9jc09ubHk6IHRydWUgfTtcblxuY29uc3QgY29tcG9uZW50TWV0YSA9IHsgdGl0bGU6ICdHdWlkZXMvVGltZXpvbmVzJywgaW5jbHVkZVN0b3JpZXM6IFtcIl9fcGFnZVwiXSwgIH07XG5cbmNvbnN0IG1keFN0b3J5TmFtZVRvS2V5ID0ge307XG5cbmNvbXBvbmVudE1ldGEucGFyYW1ldGVycyA9IGNvbXBvbmVudE1ldGEucGFyYW1ldGVycyB8fCB7fTtcbmNvbXBvbmVudE1ldGEucGFyYW1ldGVycy5kb2NzID0ge1xuICAuLi4oY29tcG9uZW50TWV0YS5wYXJhbWV0ZXJzLmRvY3MgfHwge30pLFxuICBwYWdlOiAoKSA9PiA8QWRkQ29udGV4dCBtZHhTdG9yeU5hbWVUb0tleT17bWR4U3RvcnlOYW1lVG9LZXl9IG1keENvbXBvbmVudEFubm90YXRpb25zPXtjb21wb25lbnRNZXRhfT48TURYQ29udGVudCAvPjwvQWRkQ29udGV4dD4sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnRNZXRhOyIsIlxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWR4IH0gZnJvbSAnQG1keC1qcy9yZWFjdCdcblxuLyogQGpzeFJ1bnRpbWUgY2xhc3NpYyAqL1xuLyogQGpzeCBtZHggKi9cbmltcG9ydCB7IGFzc2VydElzRm4sIEFkZENvbnRleHQgfSBmcm9tIFwiQHN0b3J5Ym9vay9hZGRvbi1kb2NzXCI7XG5cbmltcG9ydCB7IE1ldGEgfSBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWRvY3MnXG5pbXBvcnQgTGlua1RvIGZyb20gJ0BzdG9yeWJvb2svYWRkb24tbGlua3MvcmVhY3QnXG5cblxuY29uc3QgbGF5b3V0UHJvcHMgPSB7XG4gIFxufTtcbmNvbnN0IE1EWExheW91dCA9IFwid3JhcHBlclwiXG5mdW5jdGlvbiBNRFhDb250ZW50KHtcbiAgY29tcG9uZW50cyxcbiAgLi4ucHJvcHNcbn0pIHtcbiAgcmV0dXJuIDxNRFhMYXlvdXQgey4uLmxheW91dFByb3BzfSB7Li4ucHJvcHN9IGNvbXBvbmVudHM9e2NvbXBvbmVudHN9IG1keFR5cGU9XCJNRFhMYXlvdXRcIj5cblxuICAgIDxNZXRhIHRpdGxlPVwiR3VpZGVzL0xvY2FsaXplcnNcIiBtZHhUeXBlPVwiTWV0YVwiIC8+XG4gICAgPGgxIHsuLi57XG4gICAgICBcImlkXCI6IFwid2hhdC1pcy1hLWxvY2FsaXplclwiXG4gICAgfX0+e2BXaGF0IGlzIGEgTG9jYWxpemVyP2B9PC9oMT5cbiAgICA8cD57YFlvdSBoYXZlIHByb2JhYmx5IG5vdGljZWQgdGhhdCB5b3VyIEJpZyBDYWxlbmRhciBpbXBsZW1lbnRhdGlvbnMgcmVxdWlyZSBhIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImxvY2FsaXplclwiIG1keFR5cGU9XCJMaW5rVG9cIj57YGxvY2FsaXplcmB9PC9MaW5rVG8+e2AgcHJvcC4gVGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGxvY2FsaXplcmB9PC9pbmxpbmVDb2RlPntgIGlzIG5lZWRlZCBmb3IgYXBwbHlpbmcgZm9ybWF0dGluZyBhbmQgY3VsdHVyZSAoaTE4bikgdG8geW91ciBkYXRlIGRpc3BsYXlzIHRocm91Z2hvdXQgdGhlIENhbGVuZGFyLmB9PC9wPlxuICAgIDxwPntgTm93IHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2Bsb2NhbGl6ZXJgfTwvaW5saW5lQ29kZT57YCBhbHNvIGhhbmRsZXMgYWxsIGludGVybmFsIGRhdGUgbWF0aCwgdXRpbGl6aW5nIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2Bsb2NhbGl6ZXJgfTwvaW5saW5lQ29kZT57YCB5b3UgcHJvdmlkZS4gVGhpcyBpcyBob3cgdGhlIGB9PGEgcGFyZW50TmFtZT1cInBcIiB7Li4ue1xuICAgICAgICBcImhyZWZcIjogXCJodHRwczovL21vbWVudGpzLmNvbS9cIixcbiAgICAgICAgXCJ0YXJnZXRcIjogXCJfYmxhbmtcIixcbiAgICAgICAgXCJyZWxcIjogXCJub2ZvbGxvdyBub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIH19PntgbW9tZW50YH08L2E+e2AgYW5kIGB9PGEgcGFyZW50TmFtZT1cInBcIiB7Li4ue1xuICAgICAgICBcImhyZWZcIjogXCJodHRwczovL21vbWVudC5naXRodWIuaW8vbHV4b24vIy9cIixcbiAgICAgICAgXCJ0YXJnZXRcIjogXCJfYmxhbmtcIixcbiAgICAgICAgXCJyZWxcIjogXCJub2ZvbGxvdyBub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIH19PntgTHV4b25gfTwvYT57YCBsb2NhbGl6ZXJzIGhhbmRsZSB0aW1lem9uZXMsIGFuZCBob3cgYWxsIG9mIHRoZW0gaGFuZGxlIHRoaW5ncyBsaWtlIERheWxpZ2h0IFNhdmluZ3MgVGltZS4gTW9zdCBjb21wb25lbnRzIHJlY2VpdmUgdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGxvY2FsaXplcmB9PC9pbmxpbmVDb2RlPntgIGFzIGEgcHJvcCwgbWVhbmluZyB0aGF0IHlvdXIgb3ZlcnJpZGUgY29tcG9uZW50cyBjYW4gYWxzbyB0YWtlIGFkdmFudGFnZSBvZiB0aGVzZSBmZWF0dXJlcy5cbkVhY2ggYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbG9jYWxpemVyYH08L2lubGluZUNvZGU+e2AsIHdoZW4gY3JlYXRlZCwgY3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BEYXRlTG9jYWxpemVyYH08L2lubGluZUNvZGU+e2AgY2xhc3MsIGFuZCBlYWNoIG9uZSBoYXMgYSBub3JtYWxpemVkIGdyb3VwIG9mIGZ1bmN0aW9ucyBhbmQgcHJvcHMgYXZhaWxhYmxlIGZvciBtYW5pcHVsYXRpbmcgZGF0ZXMuYH08L3A+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgYWRkKGRhdGU6RGF0ZSwgYWRkZXI6bnVtYmVyLCB1bml0OnN0cmluZykgPT4gRGF0ZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BjZWlsKGRhdGU6RGF0ZSwgdW5pdDpzdHJpbmcpID0+IERhdGVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgY29udGludWVzQWZ0ZXIoc3RhcnQ6RGF0ZSwgZW5kOkRhdGUsIGxhc3Q6RGF0ZSkgPT4gYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2Bjb250aW51ZXNQcmlvcihzdGFydDpEYXRlLCBmaXJzdDpEYXRlKSA9PiBib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGRpZmYoYTpEYXRlLCBiOkRhdGUsIHVuaXQ6c3RyaW5nKSA9PiBudW1iZXJgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZW5kT2YoZGF0ZTpEYXRlLCB1bml0OnN0cmluZykgPT4gRGF0ZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BlcShhOkRhdGUsIGI6RGF0ZSwgdW5pdDpzdHJpbmcpID0+IGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZmlyc3RWaXNpYmxlRGF5KGRhdGU6RGF0ZSkgPT4gRGF0ZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2Bmb3JtYXQodmFsdWU6RGF0ZSwgZm9ybWF0OnN0cmluZykgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+e2AsYH08L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZm9ybWF0czpvYmplY3RgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZ2V0RHN0T2Zmc2V0KHN0YXJ0OkRhdGUsIGVuZDpEYXRlKSA9PiBudW1iZXJgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZ2V0TWludXRlc0Zyb21NaWRuaWdodChzdGFydDpEYXRlKSA9PiBudW1iZXJgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZ2V0U2xvdERhdGUoZHQ6RGF0ZSwgbWludXRlc0Zyb21NaWRuaWdodDpudW1iZXIsIG9mZnNldDpudW1iZXIpID0+IERhdGVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZ2V0VGltZXpvbmVPZmZzZXQoZGF0ZTpEYXRlKSA9PiBudW1iZXJgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZ2V0VG90YWxNaW4oc3RhcnQ6RGF0ZSwgZW5kOkRhdGUpID0+IG51bWJlcmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BndChhOkRhdGUsIGI6RGF0ZSwgdW5pdDpzdHJpbmcpID0+IGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZ3RlKGE6RGF0ZSwgYjpEYXRlLCB1bml0OnN0cmluZykgPT4gYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BpbkV2ZW50UmFuZ2Uoe2V2ZW50OiB7c3RhcnQ6RGF0ZSwgZW5kOkRhdGV9LCByYW5nZToge3N0YXJ0OkRhdGUsIGVuZDpEYXRlfX0pID0+IGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgaW5SYW5nZShkYXk6RGF0ZSwgc3RhcnQ6RGF0ZSwgZW5kOkRhdGUsIHVuaXQ6c3RyaW5nKSA9PiBib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGlzU2FtZURhdGUoZGF0ZTE6RGF0ZSwgZGF0ZTI6RGF0ZSkgPT4gYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BsYXN0VmlzaWJsZURheShkYXRlOkRhdGUpID0+IERhdGVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbHQoYTpEYXRlLCBiOkRhdGUsIHVuaXQ6c3RyaW5nKSA9PiBib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGx0ZShhOkRhdGUsIGI6RGF0ZSwgdW5pdDpzdHJpbmcpID0+IGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbWF4KGRhdGVBOkRhdGUsIGRhdGVCOkRhdGUpID0+IERhdGVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbWVyZ2UoZGF0ZTpEYXRlLCB0aW1lOkRhdGUpID0+IERhdGVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbWluKGRhdGVBOkRhdGUsIGRhdGVCOkRhdGUpID0+IERhdGVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbWludXRlcyhkYXRlOkRhdGUpID0+IG51bWJlcmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BuZXEoYTpEYXRlLCBiOkRhdGUsIHVuaXQ6c3RyaW5nKSA9PiBib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHJhbmdlKHN0YXJ0OkRhdGUsIGVuZDpEYXRlLCB1bml0OnN0cmluZykgPT4gQXJyYXlbRGF0ZV1gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc29ydEV2ZW50cyh7ZXZ0QToge3N0YXJ0OkRhdGUsIGVuZDpEYXRlLCBhbGxEYXk6Ym9vbGVhbn0sIGV2dEI6IHtzdGFydDpEYXRlLCBlbmQ6RGF0ZSwgYWxsRGF5OmJvb2xlYW59fSkgPT4gbnVtYmVyYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0YXJ0QW5kRW5kQXJlRGF0ZU9ubHkoc3RhcnQ6RGF0ZSwgZW5kOkRhdGUpID0+IGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPjxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RhcnRPZihkYXRlOkRhdGUsIHVuaXQ6c3RyaW5nKSA9PiBEYXRlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0YXJ0T2ZXZWVrKGN1bHR1cmUpID0+IG51bWJlcmB9PC9pbmxpbmVDb2RlPntgIChhbGlhcyBvZiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZmlyc3RPZldlZWsoKWB9PC9pbmxpbmVDb2RlPntgKWB9PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHZpc2libGVEYXlzKGRhdGU6RGF0ZSkgPT4gQXJyYXlbRGF0ZV1gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BNYW55IG9mIHRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgYnkgQmlnIENhbGVuZGFyIGluIHRoZSBiYWNrZ3JvdW5kIGZvciBkZXRlcm1pbmluZyBsYXlvdXQuIFlvdSBjYW4gY3JlYXRlIHlvdXIgb3duIGN1c3RvbSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2Bsb2NhbGl6ZXJgfTwvaW5saW5lQ29kZT57YCwgdG8gdXRpbGl6ZSBzb21lIG90aGVyIGxpYnJhcnksIGFzIGxvbmcgYXMgdGhleSBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcy4gVGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YERhdGVMb2NhbGl6ZXJgfTwvaW5saW5lQ29kZT57YCBjbGFzcyBkZWZhdWx0cyB0aGVzZSBtZXRob2RzIHRvIG1ldGhvZHMgZnJvbSB0aGUgYH08YSBwYXJlbnROYW1lPVwicFwiIHsuLi57XG4gICAgICAgIFwiaHJlZlwiOiBcImh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2RhdGUtYXJpdGhtZXRpY1wiLFxuICAgICAgICBcInRhcmdldFwiOiBcIl9ibGFua1wiLFxuICAgICAgICBcInJlbFwiOiBcIm5vZm9sbG93IG5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgfX0+e2BkYXRlLWFyaXRobWV0aWNgfTwvYT57YCBwYWNrYWdlLmB9PC9wPlxuICAgIDxwPntgRm9yIGV4YW1wbGVzIG9mIGJ1aWxkaW5nIHlvdXIgb3duIGN1c3RvbSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2Bsb2NhbGl6ZXJgfTwvaW5saW5lQ29kZT57YCB0YWtlIGEgbG9vayBhdCB0aGUgYH08YSBwYXJlbnROYW1lPVwicFwiIHsuLi57XG4gICAgICAgIFwiaHJlZlwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlbnNlL3JlYWN0LWJpZy1jYWxlbmRhci9ibG9iL21hc3Rlci9zcmMvbG9jYWxpemVyc1wiLFxuICAgICAgICBcInRhcmdldFwiOiBcIl9ibGFua1wiLFxuICAgICAgICBcInJlbFwiOiBcIm5vZm9sbG93IG5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgfX0+e2BjdXJyZW50bHkgaW1wbGVtZW50ZWQgbG9jYWxpemVyc2B9PC9hPntgLiBJZiB5b3UgZG8gYnVpbGQgeW91ciBvd24gYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbG9jYWxpemVyYH08L2lubGluZUNvZGU+e2AsIHBsZWFzZSBjb25zaWRlciBwdWJsaXNoaW5nIGl0IHRvIGB9PGEgcGFyZW50TmFtZT1cInBcIiB7Li4ue1xuICAgICAgICBcImhyZWZcIjogXCJodHRwczovL25wbWpzLm9yZ1wiLFxuICAgICAgICBcInRhcmdldFwiOiBcIl9ibGFua1wiLFxuICAgICAgICBcInJlbFwiOiBcIm5vZm9sbG93IG5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgfX0+e2BucG1gfTwvYT57YC4gV2Ugc3VnZ2VzdCBhIGNvbW1vbiBuYW1pbmcgY29udmVudGlvbiBsaWtlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHJiYy1hZGRvbi1teWxvY2FsaXplcm5hbWVgfTwvaW5saW5lQ29kZT57YC5gfTwvcD5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IF9fcGFnZSA9ICgpID0+IHsgdGhyb3cgbmV3IEVycm9yKFwiRG9jcy1vbmx5IHN0b3J5XCIpOyB9O1xuXG5fX3BhZ2UucGFyYW1ldGVycyA9IHsgZG9jc09ubHk6IHRydWUgfTtcblxuY29uc3QgY29tcG9uZW50TWV0YSA9IHsgdGl0bGU6ICdHdWlkZXMvTG9jYWxpemVycycsIGluY2x1ZGVTdG9yaWVzOiBbXCJfX3BhZ2VcIl0sICB9O1xuXG5jb25zdCBtZHhTdG9yeU5hbWVUb0tleSA9IHt9O1xuXG5jb21wb25lbnRNZXRhLnBhcmFtZXRlcnMgPSBjb21wb25lbnRNZXRhLnBhcmFtZXRlcnMgfHwge307XG5jb21wb25lbnRNZXRhLnBhcmFtZXRlcnMuZG9jcyA9IHtcbiAgLi4uKGNvbXBvbmVudE1ldGEucGFyYW1ldGVycy5kb2NzIHx8IHt9KSxcbiAgcGFnZTogKCkgPT4gPEFkZENvbnRleHQgbWR4U3RvcnlOYW1lVG9LZXk9e21keFN0b3J5TmFtZVRvS2V5fSBtZHhDb21wb25lbnRBbm5vdGF0aW9ucz17Y29tcG9uZW50TWV0YX0+PE1EWENvbnRlbnQgLz48L0FkZENvbnRleHQ+LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50TWV0YTsiLCJcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG1keCB9IGZyb20gJ0BtZHgtanMvcmVhY3QnXG5cbi8qIEBqc3hSdW50aW1lIGNsYXNzaWMgKi9cbi8qIEBqc3ggbWR4ICovXG5pbXBvcnQgeyBhc3NlcnRJc0ZuLCBBZGRDb250ZXh0IH0gZnJvbSBcIkBzdG9yeWJvb2svYWRkb24tZG9jc1wiO1xuXG5pbXBvcnQgeyBNZXRhIH0gZnJvbSAnQHN0b3J5Ym9vay9hZGRvbi1kb2NzJ1xuaW1wb3J0IExpbmtUbyBmcm9tICdAc3Rvcnlib29rL2FkZG9uLWxpbmtzL3JlYWN0J1xuXG5cbmNvbnN0IGxheW91dFByb3BzID0ge1xuICBcbn07XG5jb25zdCBNRFhMYXlvdXQgPSBcIndyYXBwZXJcIlxuZnVuY3Rpb24gTURYQ29udGVudCh7XG4gIGNvbXBvbmVudHMsXG4gIC4uLnByb3BzXG59KSB7XG4gIHJldHVybiA8TURYTGF5b3V0IHsuLi5sYXlvdXRQcm9wc30gey4uLnByb3BzfSBjb21wb25lbnRzPXtjb21wb25lbnRzfSBtZHhUeXBlPVwiTURYTGF5b3V0XCI+XG5cbiAgICA8TWV0YSB0aXRsZT1cInByb3BzL0Z1bGwgUHJvcCBMaXN0XCIgbWR4VHlwZT1cIk1ldGFcIiAvPlxuICAgIDxoMSB7Li4ue1xuICAgICAgXCJpZFwiOiBcImFsbC1wcm9wc1wiXG4gICAgfX0+e2BBbGwgUHJvcHNgfTwvaDE+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwibG9jYWxpemVyXCJcbiAgICB9fT57YGxvY2FsaXplcmB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgaW5zdGFuY2VPZihEYXRlTG9jYWxpemVyKWB9PC9pbmxpbmVDb2RlPntgIGB9PHN0cm9uZyBwYXJlbnROYW1lPVwibGlcIj57YHJlcXVpcmVkYH08L3N0cm9uZz48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwibG9jYWxpemVyXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIGxvY2FsaXplciB1c2VkIGZvciBmb3JtYXR0aW5nIGRhdGVzIGFuZCB0aW1lcyBhY2NvcmRpbmcgdG8gdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGZvcm1hdGB9PC9pbmxpbmVDb2RlPntgIGFuZCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BjdWx0dXJlYH08L2lubGluZUNvZGU+PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2AvLyBXaGVuIHVzaW5nIFxcYEdsb2JhbGl6ZVxcYFxuaW1wb3J0IHsgZ2xvYmFsaXplTG9jYWxpemVyIH0gZnJvbSAncmVhY3QtYmlnLWNhbGVuZGFyJ1xuaW1wb3J0IGdsb2JhbGl6ZSBmcm9tICdnbG9iYWxpemUnXG5cbmNvbnN0IGxvY2FsaXplciA9IGdsb2JhbGl6ZUxvY2FsaXplcihnbG9iYWxpemUpXG5gfTwvY29kZT48L3ByZT5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgLy8gV2hlbiB1c2luZyBcXGBtb21lbnRcXGBcbmltcG9ydCB7IG1vbWVudExvY2FsaXplciB9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuLy8gYW5kLCBmb3Igb3B0aW9uYWwgdGltZSB6b25lIHN1cHBvcnRcbmltcG9ydCAnbW9tZW50LXRpbWV6b25lJ1xuXG5tb21lbnQudHouc2V0RGVmYXVsdCgnQW1lcmljYS9Mb3NfQW5nZWxlcycpXG4vLyBlbmQgb3B0aW9uYWwgdGltZSB6b25lIHN1cHBvcnRcblxuY29uc3QgbG9jYWxpemVyID0gbW9tZW50TG9jYWxpemVyKG1vbWVudClcbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2AvLyBXaGVuIHVzaW5nIFxcYEx1eG9uXFxgXG5pbXBvcnQgeyBsdXhvbkxvY2FsaXplciB9IGZyb20gJ3JlYWN0LWJpZy1jYWxlbmRhcidcbmltcG9ydCB7IERhdGVUaW1lLCBTZXR0aW5ncyB9IGZyb20gJ2x1eG9uJ1xuLy8gb25seSB1c2UgXFxgU2V0dGluZ3NcXGAgaWYgeW91IHJlcXVpcmUgb3B0aW9uYWwgdGltZSB6b25lIHN1cHBvcnRcblNldHRpbmdzLmRlZmF1bHRab25lID0gJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnXG4vLyBlbmQgb3B0aW9uYWwgdGltZSB6b25lIHN1cHBvcnRcblxuLy8gTHV4b24gdXNlcyB0aGUgSW50bCBBUEksIHdoaWNoIGN1cnJlbnRseSBkb2VzIG5vdCBjb250YWluIFxcYHdlZWtJbmZvXFxgXG4vLyB0byBkZXRlcm1pbmUgd2hpY2ggd2Vla2RheSBpcyB0aGUgc3RhcnQgb2YgdGhlIHdlZWsgYnkgXFxgY3VsdHVyZVxcYC5cbi8vIFRoZSBcXGBsdXhvbkxvY2FsaXplclxcYCBkZWZhdWx0cyB0aGlzIHRvIFN1bmRheSwgd2hpY2ggZGlmZmVycyBmcm9tXG4vLyB0aGUgTHV4b24gZGVmYXVsdCBvZiBNb25kYXkuIFRoZSBsb2NhbGl6ZXIgcmVxdWlyZXMgdGhpcyBvcHRpb25cbi8vIHRvIGNoYW5nZSB0aGUgZGlzcGxheSwgYW5kIHRoZSBkYXRlIG1hdGggZm9yIGRldGVybWluaW5nIHRoZVxuLy8gc3RhcnQgb2YgYSB3ZWVrLiBMdXhvbiB1c2VzIG5vbi16ZXJvIGJhc2VkIHZhbHVlcyBmb3IgXFxgd2Vla2RheVxcYC5cbmNvbnN0IGxvY2FsaXplciA9IGx1eG9uTG9jYWxpemVyKERhdGVUaW1lLCB7IGZpcnN0RGF5T2ZXZWVrOiA3IH0pXG5gfTwvY29kZT48L3ByZT5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJlbGVtZW50cHJvcHNcIlxuICAgIH19PntgZWxlbWVudFByb3BzYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BvYmplY3RgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZWxlbWVudC1wcm9wc1wiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFByb3BzIHBhc3NlZCB0byBtYWluIGNhbGVuZGFyIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YDxkaXY+YH08L2lubGluZUNvZGU+e2AuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgTm90ZTpgfTwvc3Ryb25nPntgIFdpbGwgbm90IHBhc3MgZG93biBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BjbGFzc05hbWVgfTwvaW5saW5lQ29kZT57YC5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJnZXRub3dcIlxuICAgIH19PntgZ2V0Tm93YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoKSA9PiBEYXRlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2AoKSA9PiBuZXcgRGF0ZSgpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImdldC1ub3dcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BEZXRlcm1pbmVzIHRoZSBjdXJyZW50IGRhdGUvdGltZSB3aGljaCBpcyBoaWdobGlnaHRlZCBpbiB0aGUgdmlld3MuYH08L3A+XG4gICAgPHA+e2BUaGUgdmFsdWUgYWZmZWN0cyB3aGljaCBkYXkgaXMgc2hhZGVkIGFuZCB3aGljaCB0aW1lIGlzIHNob3duIGFzIHRoZSBjdXJyZW50IHRpbWUuIEl0IGFsc28gYWZmZWN0cyB0aGUgZGF0ZSB1c2VkIGJ5IHRoZSBUb2RheSBidXR0b24gaW4gdGhlIHRvb2xiYXIuYH08L3A+XG4gICAgPHA+e2BQcm92aWRpbmcgYSB2YWx1ZSBoZXJlIGNhbiBiZSB1c2VmdWwgd2hlbiB5b3UgYXJlIGltcGxlbWVudGluZyB0aW1lIHpvbmVzIHVzaW5nIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJzdGFydC1hY2Nlc3NvclwiIG1keFR5cGU9XCJMaW5rVG9cIj57YHN0YXJ0QWNjZXNzb3JgfTwvTGlua1RvPntgIGFuZCBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJlbmQtYWNjZXNzb3JcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BlbmRBY2Nlc3NvcmB9PC9MaW5rVG8+e2AgcHJvcGVydGllcy5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJkZWZhdWx0ZGF0ZVwiXG4gICAgfX0+e2BkZWZhdWx0RGF0ZWB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgaW5zdGFuY2VPZihEYXRlKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbmV3IERhdGUoKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJkZWZhdWx0LWRhdGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BTZXRzIHRoZSBpbml0aWFsIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGRhdGVgfTwvaW5saW5lQ29kZT57YCB2YWx1ZSBpbiB5b3VyIGNhbGVuZGFyIHdoZW4geW91IGRvbid0IHdhbnQgaXQgdG8gYmUgJ3RvZGF5Jywgd2hlbiBub3QgdXNpbmcgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZ2V0LW5vd1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YGdldE5vd2B9PC9MaW5rVG8+e2AuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZGF0ZVwiXG4gICAgfX0+e2BkYXRlYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BpbnN0YW5jZU9mKERhdGUpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BuZXcgRGF0ZSgpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGNvbnRyb2xsZWQgYnk6IGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLW5hdmlnYXRlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgb25OYXZpZ2F0ZWB9PC9MaW5rVG8+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImRhdGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUaGUgY3VycmVudCBkYXRlIHZhbHVlIG9mIHRoZSBjYWxlbmRhci4gRGV0ZXJtaW5lcyB0aGUgdmlzaWJsZSB2aWV3IHJhbmdlLlxuSWYgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZGF0ZWB9PC9pbmxpbmVDb2RlPntgIGlzIG9taXR0ZWQgdGhlbiB0aGUgcmVzdWx0IG9mIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImdldC1ub3dcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BnZXROb3dgfTwvTGlua1RvPntgIGlzIHVzZWQ7IG90aGVyd2lzZSB0aGVcbmN1cnJlbnQgZGF0ZSBpcyB1c2VkLmB9PC9wPlxuICAgIDxwPntgVGhpcyBpcyBhIGNvbnRyb2xsYWJsZSBwcm9wLCB3aGVuIHVzaW5nIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLW5hdmlnYXRlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgb25OYXZpZ2F0ZWB9PC9MaW5rVG8+PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9ubmF2aWdhdGVcIlxuICAgIH19Pntgb25OYXZpZ2F0ZWB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb25gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgY29udHJvbHM6IGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImRhdGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BkYXRlYH08L0xpbmtUbz48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZXhhbXBsZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YChuZXdEYXRlKSA9PiBzZXREYXRlKG5ld0RhdGUpYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLW5hdmlnYXRlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZGF0ZWB9PC9pbmxpbmVDb2RlPntgIHZhbHVlIGNoYW5nZXMuIFdoZW4gaW5jbHVkZWQgaXQgaXMgdXNlZCB0byAnY29udHJvbCcgdGhlIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImRhdGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BkYXRlYH08L0xpbmtUbz57YCBwcm9wIHZhbHVlLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRlZmF1bHR2aWV3XCJcbiAgICB9fT57YGRlZmF1bHRWaWV3YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YFZpZXdzLk1PTlRIIChtb250aHx3ZWVrfHdvcmtfd2Vla3xkYXl8YWdlbmRhKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJkZWZhdWx0LXZpZXdcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUaGUgaW5pdGlhbCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B2aWV3YH08L2lubGluZUNvZGU+e2Agc2V0IGZvciB5b3VyIGNhbGVuZGFyIHdoZW4geW91IGRvbid0IHdhbnQgaXQgdG8gYmUgdGhlIGRlZmF1bHQgKCdtb250aCcpLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcInZpZXdcIlxuICAgIH19Pntgdmlld2B9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BWaWV3cy5NT05USCAobW9udGh8d2Vla3x3b3JrX3dlZWt8ZGF5fGFnZW5kYSlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgY29udHJvbGxlZCBieTogYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwib24tdmlld1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uVmlld2B9PC9MaW5rVG8+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInZpZXdcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUaGUgY3VycmVudCB2aWV3IHZhbHVlIG9mIHRoZSBjYWxlbmRhci4gRGV0ZXJtaW5lcyB0aGUgdmlzaWJsZSAndmlldycuXG5JZiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B2aWV3YH08L2lubGluZUNvZGU+e2AgaXMgb21pdHRlZCB0aGVuIGl0IGlzIGRlZmF1bHRlZCB0byAnbW9udGgnLmB9PC9wPlxuICAgIDxwPntgVGhpcyBpcyBhIGNvbnRyb2xsYWJsZSBwcm9wLCB3aGVuIHVzaW5nIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLXZpZXdcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BvblZpZXdgfTwvTGlua1RvPjwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbnZpZXdcIlxuICAgIH19Pntgb25WaWV3YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6ICdmdW5jdGlvbidgfTwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2Bjb250cm9sczogYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwidmlld1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YHZpZXdgfTwvTGlua1RvPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BleGFtcGxlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgKG5ld1ZpZXcpID0+IHNldFZpZXcobmV3VmlldylgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwib24tdmlld1wiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHZpZXdgfTwvaW5saW5lQ29kZT57YCB2YWx1ZSBjaGFuZ2VzLiBXaGVuIGluY2x1ZGVkIGl0IGlzIHVzZWQgdG8gJ2NvbnRyb2wnIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJ2aWV3XCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgdmlld2B9PC9MaW5rVG8+e2AgcHJvcCB2YWx1ZS5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJldmVudHNcIlxuICAgIH19PntgZXZlbnRzYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BhcnJheU9mKEV2ZW50KWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgW11gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZXZlbnRzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQW4gYXJyYXkgb2YgZXZlbnQgb2JqZWN0cyB0byBkaXNwbGF5IG9uIHRoZSBjYWxlbmRhci4gRXZlbnQgb2JqZWN0cyBjYW4gYmUgYW55IHNoYXBlLCBhcyBsb25nIGFzIHRoZSBDYWxlbmRhciBrbm93cyBob3cgdG8gcmV0cmlldmUgdGhlIGZvbGxvd2luZyBkZXRhaWxzIG9mIHRoZSBldmVudDpgfTwvcD5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BzdGFydCB0aW1lYH08L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZW5kIHRpbWVgfTwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0aXRsZWB9PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHdoZXRoZXIgaXRzIGFuIFwiYWxsIGRheVwiIGV2ZW50IG9yIG5vdGB9PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGFueSByZXNvdXJjZSB0aGUgZXZlbnQgbWF5IGJlIHJlbGF0ZWQgdG9gfTwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEVhY2ggb2YgdGhlc2UgcHJvcGVydGllcyBjYW4gYmUgY3VzdG9taXplZCBvciBnZW5lcmF0ZWQgZHluYW1pY2FsbHkgYnkgc2V0dGluZyB0aGUgdmFyaW91cyBcImFjY2Vzc29yXCIgcHJvcHMuIFdpdGhvdXQgYW55IGNvbmZpZ3VyYXRpb24gdGhlIGRlZmF1bHQgZXZlbnQgc2hvdWxkIGxvb2sgbGlrZTpgfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgRXZlbnQge1xuICB0aXRsZTogc3RyaW5nLFxuICBzdGFydDogRGF0ZSxcbiAgZW5kOiBEYXRlLFxuICBhbGxEYXk/OiBib29sZWFuXG4gIHJlc291cmNlPzogYW55LFxufVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiYmFja2dyb3VuZGV2ZW50c1wiXG4gICAgfX0+e2BiYWNrZ3JvdW5kRXZlbnRzYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BhcnJheU9mKEJhY2tncm91bmRFdmVudClgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YFtdYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImJhY2tncm91bmQtZXZlbnRzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQW4gYXJyYXkgb2YgYmFja2dyb3VuZCBldmVudCBvYmplY3RzIHRvIGRpc3BsYXkgb24gdGhlIGNhbGVuZGFyLiBCYWNrZ3JvdW5kIEV2ZW50cyBiZWhhdmUgc2ltaWxhcmx5IHRvIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImV2ZW50c1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YGV2ZW50c2B9PC9MaW5rVG8+e2AgYnV0IGFyZSBub3QgZmFjdG9yZWQgaW50byBFdmVudCBvdmVybGFwIGxvZ2ljLCBhbGxvd2luZyB0aGVtIHRvIHNpdCBiZWhpbmQgYW55IEV2ZW50cyB0aGF0IG1heSBvY2N1ciBkdXJpbmcgdGhlIHNhbWUgcGVyaW9kLiBCYWNrZ3JvdW5kIEV2ZW50cyBvYmplY3RzIGNhbiBiZSBhbnkgc2hhcGUsIGFzIGxvbmcgYXMgdGhlIENhbGVuZGFyIGtub3dzIGhvdyB0byByZXRyaWV2ZSB0aGUgZm9sbG93aW5nIGRldGFpbHMgb2YgdGhlIGV2ZW50OmB9PC9wPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHN0YXJ0IHRpbWVgfTwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BlbmQgdGltZWB9PC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRWFjaCBvZiB0aGVzZSBwcm9wZXJ0aWVzIGNhbiBiZSBjdXN0b21pemVkIG9yIGdlbmVyYXRlZCBkeW5hbWljYWxseSBieSBzZXR0aW5nIHRoZSB2YXJpb3VzIFwiYWNjZXNzb3JcIiBwcm9wcy4gV2l0aG91dCBhbnkgY29uZmlndXJhdGlvbiB0aGUgZGVmYXVsdCBldmVudCBzaG91bGQgbG9vayBsaWtlOmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2BCYWNrZ3JvdW5kRXZlbnQge1xuICBzdGFydDogRGF0ZSxcbiAgZW5kOiBEYXRlLFxufVxuYH08L2NvZGU+PC9wcmU+XG4gICAgey8qICMjIyBiYWNrZ3JvdW5kRXZlbnRQcm9wR2V0dGVyXG4gICAgIC0gdHlwZTogYGZ1bmN0aW9uIChldmVudDogT2JqZWN0LCBzdGFydDogRGF0ZSwgZW5kOiBEYXRlLCBpc1NlbGVjdGVkOiBib29sZWFuKSA9PiB7Y2xhc3NOYW1lPzogc3RyaW5nLCBzdHlsZT86IE9iamVjdH1gXG4gICAgIC0gPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImJhY2tncm91bmQtZXZlbnQtcHJvcC1nZXR0ZXJcIj5cbiAgICAgICAgRXhhbXBsZVxuICAgICAgPC9MaW5rVG8+XG4gICAgIE9wdGlvbmFsbHkgcHJvdmlkZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBvYmplY3Qgb2YgY2xhc3NOYW1lIG9yIHN0eWxlIHByb3BzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHRoZSBldmVudCBub2RlLiAqL31cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJ0aXRsZWFjY2Vzc29yXCJcbiAgICB9fT57YHRpdGxlQWNjZXNzb3JgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0cmluZyB8IGZ1bmN0aW9uIChldmVudDogT2JqZWN0KSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogJ3RpdGxlJ2B9PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInRpdGxlLWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQWNjZXNzb3IgZm9yIHRoZSBldmVudCB0aXRsZSwgdXNlZCB0byBkaXNwbGF5IGV2ZW50IGluZm9ybWF0aW9uLiBTaG91bGQgcmVzb2x2ZSB0byBhIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHJlbmRlcmFibGVgfTwvaW5saW5lQ29kZT57YCB2YWx1ZS5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJ0b29sdGlwYWNjZXNzb3JcIlxuICAgIH19PntgdG9vbHRpcEFjY2Vzc29yYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmcgfCBmdW5jdGlvbiAoZXZlbnQ6IE9iamVjdCkgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6ICd0aXRsZSdgfTwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJ0b29sdGlwLWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQWNjZXNzb3IgZm9yIHRoZSBldmVudCB0b29sdGlwLCB1c2VkIHRvIGRpc3BsYXkgZXZlbnQgaW5mb3JtYXRpb24uIFNob3VsZCByZXNvbHZlIHRvIGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgcmVuZGVyYWJsZWB9PC9pbmxpbmVDb2RlPntgIHZhbHVlLiBSZW1vdmVzIHRoZSB0b29sdGlwIGlmIG51bGwuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwic3RhcnRhY2Nlc3NvclwiXG4gICAgfX0+e2BzdGFydEFjY2Vzc29yYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmcgfCBmdW5jdGlvbiAoZXZlbnQ6IE9iamVjdCkgPT4gRGF0ZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiAnc3RhcnQnYH08L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic3RhcnQtYWNjZXNzb3JcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUaGUgc3RhcnQgZGF0ZS90aW1lIG9mIHRoZSBldmVudC4gTXVzdCByZXNvbHZlIHRvIGEgSmF2YVNjcmlwdCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BEYXRlYH08L2lubGluZUNvZGU+e2Agb2JqZWN0LmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImVuZGFjY2Vzc29yXCJcbiAgICB9fT57YGVuZEFjY2Vzc29yYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmcgfCBmdW5jdGlvbiAoZXZlbnQ6IE9iamVjdCkgPT4gRGF0ZWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiAnZW5kJ2B9PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImVuZC1hY2Nlc3NvclwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFRoZSBlbmQgZGF0ZS90aW1lIG9mIHRoZSBldmVudC4gTXVzdCByZXNvbHZlIHRvIGEgSmF2YVNjcmlwdCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BEYXRlYH08L2lubGluZUNvZGU+e2Agb2JqZWN0LmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImFsbGRheWFjY2Vzc29yXCJcbiAgICB9fT57YGFsbERheUFjY2Vzc29yYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BzdHJpbmcgfCBmdW5jdGlvbiAoZXZlbnQ6IE9iamVjdCkgPT4gYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiAnYWxsRGF5J2B9PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImFsbC1kYXktYWNjZXNzb3JcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGV2ZW50IHNob3VsZCBiZSBjb25zaWRlcmVkIGFuIFwiYWxsIGRheVwiIGV2ZW50IGFuZCBpZ25vcmUgdGltZS4gTXVzdCByZXNvbHZlIHRvIGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgYm9vbGVhbmB9PC9pbmxpbmVDb2RlPntgIHZhbHVlLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImFsbGRheW1heHJvd3NcIlxuICAgIH19PntgYWxsRGF5TWF4Um93c2B9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbnVtYmVyYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BJbmZpbml0eWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJhbGwtZGF5LW1heC1yb3dzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRGV0ZXJtaW5lcyBhIG1heGltdW0gYW1vdW50IG9mIHJvd3Mgb2YgZXZlbnRzIHRvIGRpc3BsYXkgaW4gdGhlIGFsbCBkYXkgc2VjdGlvbiBmb3IgV2VlayBhbmQgRGF5IHZpZXdzLCB3aWxsIGRpc3BsYXkgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgc2hvd01vcmVgfTwvaW5saW5lQ29kZT57YCBidXR0b24gaWYgZXZlbnRzIGV4Y2VkZSB0aGlzIG51bWJlci5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJyZXNvdXJjZXNcIlxuICAgIH19PntgcmVzb3VyY2VzYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BhcnJheU9mKFJlc291cmNlKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJyZXNvdXJjZXNcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBbiBhcnJheSBvZiByZXNvdXJjZSBvYmplY3RzIHRoYXQgbWFwIGV2ZW50cyB0byBhIHNwZWNpZmljIHJlc291cmNlLiBSZXNvdXJjZSBvYmplY3RzLCBsaWtlIGV2ZW50cywgY2FuIGJlIGFueSBzaGFwZSBvciBoYXZlIGFueSBwcm9wZXJ0aWVzLCBidXQgc2hvdWxkIGJlIHVuaXF1bHkgaWRlbnRpZmlhYmxlIHZpYSB0aGUgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwicmVzb3VyY2UtaWQtYWNjZXNzb3JcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2ByZXNvdXJjZUlkQWNjZXNzb3JgfTwvTGlua1RvPntgLCBhcyB3ZWxsIGFzIGEgXCJ0aXRsZVwiIG9yIG5hbWUgYXMgcHJvdmlkZWQgYnkgdGhlIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInJlc291cmNlLXRpdGxlLWFjY2Vzc29yXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgcmVzb3VyY2VUaXRsZUFjY2Vzc29yYH08L0xpbmtUbz57YCBwcm9wLmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2BSZXNvdXJjZSB7XG4gIGlkOiBzdHJpbmcgfCBudW1iZXIsIC8vIG11c3QgYmUgdW5pcXVlXG4gIHRpdGxlOiBzdHJpbmdcbn1cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcInJlc291cmNlaWRhY2Nlc3NvclwiXG4gICAgfX0+e2ByZXNvdXJjZUlkQWNjZXNzb3JgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0cmluZyB8IGZ1bmN0aW9uIChyZXNvdXJjZTogT2JqZWN0KSA9PiBzdHJpbmcgfCBudW1iZXIgLy8gbXVzdCBiZSB1bmlxdWVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwicmVzb3VyY2UtaWQtYWNjZXNzb3JcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BQcm92aWRlcyBhIHVuaXF1ZSBpZGVudGlmaWVyLCBvciBhbiBhcnJheSBvZiB1bmlxdWUgaWRlbnRpZmllcnMsIGZvciBlYWNoIHJlc291cmNlIGluIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJyZXNvdXJjZXNcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2ByZXNvdXJjZXNgfTwvTGlua1RvPntgIGFycmF5YH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwicmVzb3VyY2V0aXRsZWFjY2Vzc29yXCJcbiAgICB9fT57YHJlc291cmNlVGl0bGVBY2Nlc3NvcmB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgc3RyaW5nIHwgZnVuY3Rpb24gKHJlc291cmNlOiBPYmplY3QpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJyZXNvdXJjZS10aXRsZS1hY2Nlc3NvclwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFByb3ZpZGVzIGEgaHVtYW4gcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJlc291cmNlIG9iamVjdCwgdXNlZCBpbiBoZWFkZXJzLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9uZHJpbGxkb3duXCJcbiAgICB9fT57YG9uRHJpbGxEb3duYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSkgPT4gLy8gZG8gc29tZXRoaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLWRyaWxsLWRvd25cIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BDYWxsYmFjayBmaXJlZCB3aGVuIGRhdGUgaGVhZGVyLCBvciB0aGUgdHJ1bmNhdGVkIGV2ZW50cyBsaW5rcyBhcmUgY2xpY2tlZC4gV2hlbiBpbmNsdWRlZCwgaXQgd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBkcmlsbGRvd24gYmVoYXZpb3IuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwib25yYW5nZWNoYW5nZVwiXG4gICAgfX0+e2BvblJhbmdlQ2hhbmdlYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAocmFuZ2U6IEFycmF5IFsxfDddIHwgT2JqZWN0IHtzdGFydDogRGF0ZSwgZW5kOiBEYXRlfSkgPT4gLy8gZG8gc29tZXRoaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLXJhbmdlLWNoYW5nZVwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIHZpc2libGUgZGF0ZSByYW5nZSBjaGFuZ2VzLiBSZXR1cm5zIGFuIEFycmF5IG9mIGRhdGVzIG9yIGFuIG9iamVjdCB3aXRoIHN0YXJ0IGFuZCBlbmQgZGF0ZXMgZm9yIEJVSUxUSU4gdmlld3MuYH08L3A+XG4gICAgPHA+e2BDdXN0b20gdmlld3MgbWF5IHJldHVybiBzb21ldGhpbmcgZGlmZmVyZW50LmB9PC9wPlxuICAgIDxwPjxlbSBwYXJlbnROYW1lPVwicFwiPntgTm90ZTpgfTwvZW0+e2AgVGhpcyBtZXRob2QgaXMgbm90IGZpcmVkIG9uIGluaXRpYWwgcmVuZGVyLiBPbmx5IGFzIHRoZSB1c2VyIG5hdmlnYXRlcyB0aHJvdWdoIEJpZyBDYWxlbmRhci5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJzZWxlY3RhYmxlXCJcbiAgICB9fT57YHNlbGVjdGFibGVgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGJvb2xlYW4gfCAnaWdub3JlRXZlbnRzJ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJzZWxlY3RhYmxlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQWxsb3dzIG1vdXNlIHNlbGVjdGlvbiBvZiByYW5nZXMgb2YgZGF0ZXMvdGltZXMuYH08L3A+XG4gICAgPHA+e2BUaGUgJ2lnbm9yZUV2ZW50cycgb3B0aW9uIHByZXZlbnRzIHNlbGVjdGlvbiBjb2RlIGZyb20gcnVubmluZyB3aGVuIGEgZHJhZyBiZWdpbnMgb3ZlciBhbiBldmVudC4gVXNlZnVsIHdoZW4geW91IHdhbnQgY3VzdG9tIGV2ZW50IGNsaWNrIG9yIGRyYWcgbG9naWMuYH08L3A+XG4gICAgPHA+PGVtIHBhcmVudE5hbWU9XCJwXCI+e2BUaGluZ3MgVG8gS25vdzpgfTwvZW0+e2AgV2hlbiB5b3UgJ2RvdWJsZUNsaWNrJywgYm90aCAnY2xpY2snIGFuZCAnZG91YmxlQ2xpY2snIHdpbGwgZmlyZS4gQ2xpY2sgb24gdGhlICdzaG93Q29kZScgYnV0dG9uLCBhdCB0aGUgYm90dG9tIG9mIHRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1zZWxlY3Qtc2xvdFwiIG1keFR5cGU9XCJMaW5rVG9cIj57YGV4YW1wbGVgfTwvTGlua1RvPntgLCB0byBzZWUgaG93IHlvdSBjYW4gZ2V0IGFyb3VuZCB0aGlzIGlzc3VlLmB9PC9wPlxuICAgIDxoMiB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9uc2VsZWN0c2xvdFwiXG4gICAgfX0+e2BvblNlbGVjdFNsb3RgfTwvaDI+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChPYmplY3Q6IHNsb3RJbmZvKSA9PiBhbnlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgcmVxdWlyZXM6IGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNlbGVjdGFibGVcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BzZWxlY3RhYmxlYH08L0xpbmtUbz48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwib24tc2VsZWN0LXNsb3RcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBIGNhbGxiYWNrIGZpcmVkIHdoZW4gYSBkYXRlIHNlbGVjdGlvbiBpcyBtYWRlLiBPbmx5IGZpcmVzIHdoZW4gYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic2VsZWN0YWJsZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YHNlbGVjdGFibGVgfTwvTGlua1RvPntgIGlzIHRydWUuYH08L3A+XG4gICAgPHA+PGVtIHBhcmVudE5hbWU9XCJwXCI+e2BUaGluZ3MgVG8gS25vdzpgfTwvZW0+e2AgV2hlbiB5b3UgJ2RvdWJsZUNsaWNrJywgYm90aCAnY2xpY2snIGFuZCAnZG91YmxlQ2xpY2snIHdpbGwgZmlyZS4gQ2xpY2sgb24gdGhlICdzaG93Q29kZScgYnV0dG9uLCBhdCB0aGUgYm90dG9tIG9mIHRoZSBleGFtcGxlIGJlbG93LCB0byBzZWUgaG93IHlvdSBjYW4gZ2V0IGFyb3VuZCB0aGlzIGlzc3VlLmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2A7KHNsb3RJbmZvOiB7XG4gIHN0YXJ0OiBEYXRlLFxuICBlbmQ6IERhdGUsXG4gIHNsb3RzOiBBcnJheTxEYXRlPixcbiAgYWN0aW9uOiAnc2VsZWN0JyB8ICdjbGljaycgfCAnZG91YmxlQ2xpY2snLFxuICBib3VuZHM6ID97XG4gICAgLy8gRm9yIFwic2VsZWN0XCIgYWN0aW9uXG4gICAgeDogbnVtYmVyLFxuICAgIHk6IG51bWJlcixcbiAgICB0b3A6IG51bWJlcixcbiAgICByaWdodDogbnVtYmVyLFxuICAgIGxlZnQ6IG51bWJlcixcbiAgICBib3R0b206IG51bWJlcixcbiAgfSxcbiAgYm94OiA/e1xuICAgIC8vIEZvciBcImNsaWNrXCIgb3IgXCJkb3VibGVDbGlja1wiIGFjdGlvbnNcbiAgICBjbGllbnRYOiBudW1iZXIsXG4gICAgY2xpZW50WTogbnVtYmVyLFxuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXIsXG4gIH0sXG59KSA9PiBhbnlcbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxoNCB7Li4ue1xuICAgICAgXCJpZFwiOiBcIndoYXRzLXRoZS1kaWZmZXJlbmNlLWZyb20tb25zZWxlY3RpbmdcIlxuICAgIH19PntgV2hhdCdzIFRoZSBEaWZmZXJlbmNlIGZyb20gb25TZWxlY3Rpbmc/YH08L2g0PlxuICAgIDxwPntgSG93IGlzIHRoaXMgZGlmZmVyZW50IGZyb20gYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwib24tc2VsZWN0aW5nXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgb25TZWxlY3RpbmdgfTwvTGlua1RvPntgPyBUaGF0IGlzIGEgdmVyeSBnb29kIHF1ZXN0aW9uLiBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25TZWxlY3RpbmdgfTwvaW5saW5lQ29kZT57YCBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgaW4gdGhlIFRpbWUgdmlld3MgKGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHdlZWtgfTwvaW5saW5lQ29kZT57YCwgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgd29yayB3ZWVrYH08L2lubGluZUNvZGU+e2AsIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGRheWB9PC9pbmxpbmVDb2RlPntgKSwgd2hlcmVhcyBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvblNlbGVjdFNsb3RgfTwvaW5saW5lQ29kZT57YCBpcyBhbHNvIGF2YWlsYWJsZSBpbiB0aGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbW9udGhgfTwvaW5saW5lQ29kZT57YCB2aWV3LiBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25TZWxlY3RpbmdgfTwvaW5saW5lQ29kZT57YCBtZXRob2QgYWxsb3dzIHlvdSB0byAnY2FuY2VsJyB5b3VyIHNlbGVjdGlvbiBieSByZXR1cm5pbmcgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZmFsc2VgfTwvaW5saW5lQ29kZT57YC4gVGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uU2VsZWN0U2xvdGB9PC9pbmxpbmVDb2RlPntgIG1ldGhvZCByZXR1cm5zIGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgc2xvdEluZm9gfTwvaW5saW5lQ29kZT57YCBvYmplY3QsIGNvbnRhaW5pbmcgYSBsb3Qgb2YgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIHNlbGVjdGlvbi5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbnNlbGVjdGV2ZW50XCJcbiAgICB9fT57YG9uU2VsZWN0RXZlbnRgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChldmVudDogT2JqZWN0KSA9PiBhbnlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwib24tc2VsZWN0LWV2ZW50XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ2FsbGJhY2sgZmlyZWQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIHNlbGVjdGVkIChpLmUuOiBhbiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvbkNsaWNrYH08L2lubGluZUNvZGU+e2AgaGFuZGxlcikuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgTm90ZTpgfTwvc3Ryb25nPntgIFRoZSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJzZWxlY3RhYmxlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgc2VsZWN0YWJsZWB9PC9MaW5rVG8+e2AgcHJvcCBpcyBgfTxlbSBwYXJlbnROYW1lPVwicFwiPntgbm90YH08L2VtPntgIHJlcXVpcmVkIGZvciB0aGlzIHByb3AgdG8gZnVuY3Rpb24uYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgSW1wb3J0YW50OmB9PC9zdHJvbmc+e2AgVGhlIGV2ZW50IHBhc3NlZCBpbnRvIHRoZSBmdW5jdGlvbiBpcyB0aGUgQ2FsZW5kYXIgRXZlbnQsIG5vdCB0aGUgU3ludGhldGljRXZlbnQgZXhwZWN0ZWQgYnkgbW9zdCBjbGljayBoYW5kbGVycy5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJvbmRvdWJsZWNsaWNrZXZlbnRcIlxuICAgIH19Pntgb25Eb3VibGVDbGlja0V2ZW50YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZXZlbnQ6IE9iamVjdCkgPT4gYW55YH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLWRvdWJsZS1jbGljay1ldmVudFwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YENhbGxiYWNrIGZpcmVkIHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBjbGlja2VkIHR3aWNlLiAoaS5lLjogYW4gYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25Eb3VibGVDbGlja2B9PC9pbmxpbmVDb2RlPntgIGhhbmRsZXIpLmB9PC9wPlxuICAgIDxwPjxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YE5vdGU6YH08L3N0cm9uZz57YCBUaGUgYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic2VsZWN0YWJsZVwiIG1keFR5cGU9XCJMaW5rVG9cIj57YHNlbGVjdGFibGVgfTwvTGlua1RvPntgIHByb3AgaXMgYH08ZW0gcGFyZW50TmFtZT1cInBcIj57YG5vdGB9PC9lbT57YCByZXF1aXJlZCBmb3IgdGhpcyBwcm9wIHRvIGZ1bmN0aW9uLmB9PC9wPlxuICAgIDxwPjxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YEltcG9ydGFudDpgfTwvc3Ryb25nPntgIFRoZSBldmVudCBwYXNzZWQgaW50byB0aGUgZnVuY3Rpb24gaXMgdGhlIENhbGVuZGFyIEV2ZW50LCBub3QgdGhlIFN5bnRoZXRpY0V2ZW50IGV4cGVjdGVkIGJ5IG1vc3QgY2xpY2sgaGFuZGxlcnMuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwib25zZWxlY3RpbmdcIlxuICAgIH19Pntgb25TZWxlY3RpbmdgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YChyYW5nZTogT2JqZWN0IHsgc3RhcnQ6IERhdGUsIGVuZDogRGF0ZSwgcmVzb3VyY2VJZDogbnVsbHxzdHJpbmd8bnVtYmVyIH0pID0+ID9ib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHJlcXVpcmVzOiBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJzZWxlY3RhYmxlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgc2VsZWN0YWJsZWB9PC9MaW5rVG8+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLXNlbGVjdGluZ1wiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YENhbGxiYWNrIGZpcmVkIHdoZW4gZHJhZ2dpbmcgYSBzZWxlY3Rpb24gaW4gdGhlIFRpbWUgdmlld3MuIE9ubHkgZmlyZXMgd2hlbiBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJzZWxlY3RhYmxlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgc2VsZWN0YWJsZWB9PC9MaW5rVG8+e2AgaXMgdHJ1ZS5gfTwvcD5cbiAgICA8cD57YFJldHVybmluZyBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BmYWxzZWB9PC9pbmxpbmVDb2RlPntgIGZyb20gdGhlIGhhbmRsZXIgd2lsbCBwcmV2ZW50IGEgc2VsZWN0aW9uLmB9PC9wPlxuICAgIDxoNCB7Li4ue1xuICAgICAgXCJpZFwiOiBcIndoYXRzLXRoZS1kaWZmZXJlbmNlLWZyb20tb25zZWxlY3RzbG90XCJcbiAgICB9fT57YFdoYXQncyBUaGUgRGlmZmVyZW5jZSBmcm9tIG9uU2VsZWN0U2xvdD9gfTwvaDQ+XG4gICAgPHA+e2BIb3cgaXMgdGhpcyBkaWZmZXJlbnQgZnJvbSBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1zZWxlY3Qtc2xvdFwiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uU2VsZWN0U2xvdGB9PC9MaW5rVG8+e2A/IFRoYXQgaXMgYSB2ZXJ5IGdvb2QgcXVlc3Rpb24uIFRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvblNlbGVjdGluZ2B9PC9pbmxpbmVDb2RlPntgIG1ldGhvZCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgVGltZSB2aWV3cyAoYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgd2Vla2B9PC9pbmxpbmVDb2RlPntgLCBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B3b3JrIHdlZWtgfTwvaW5saW5lQ29kZT57YCwgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZGF5YH08L2lubGluZUNvZGU+e2ApLCB3aGVyZWFzIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG9uU2VsZWN0U2xvdGB9PC9pbmxpbmVDb2RlPntgIGlzIGFsc28gYXZhaWxhYmxlIGluIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2Btb250aGB9PC9pbmxpbmVDb2RlPntgIHZpZXcuIFRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BvblNlbGVjdGluZ2B9PC9pbmxpbmVDb2RlPntgIG1ldGhvZCBhbGxvd3MgeW91IHRvICdjYW5jZWwnIHlvdXIgc2VsZWN0aW9uIGJ5IHJldHVybmluZyBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BmYWxzZWB9PC9pbmxpbmVDb2RlPntgLiBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb25TZWxlY3RTbG90YH08L2lubGluZUNvZGU+e2AgbWV0aG9kIHJldHVybnMgYSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BzbG90SW5mb2B9PC9pbmxpbmVDb2RlPntgIG9iamVjdCwgY29udGFpbmluZyBhIGxvdCBvZiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHlvdXIgc2VsZWN0aW9uLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9uc2hvd21vcmVcIlxuICAgIH19Pntgb25TaG93TW9yZWB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGV2ZW50czogQXJyYXlbZXZlbnQ6IE9iamVjdF0sIGRhdGU6IERhdGUpID0+IGFueWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1zaG93LW1vcmVcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BDYWxsYmFjayBmaXJlZCB3aGVuIGEgK3tjb3VudH0gbW9yZSBpcyBjbGlja2VkLiBSZWNlaXZlcyBgfTxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YGFsbGB9PC9zdHJvbmc+e2Agb2YgdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YGV2ZW50c2B9PC9pbmxpbmVDb2RlPntgIGZvciB0aGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZGF0ZWB9PC9pbmxpbmVDb2RlPntgIG9uIHdoaWNoIGl0IHdhcyBzZWxlY3RlZC5gfTwvcD5cbiAgICB7LyogVE9ETzogZG9TaG93TW9yZURyaWxsRG93biBpcyBub3QgZnVuY3Rpb25pbmcgKi99XG4gICAgey8qIFJlcXVpcmVkIHdoZW4gdXNpbmcgdGhlIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJkby1zaG93LW1vcmUtZHJpbGwtZG93blwiPmRvU2hvd01vcmVEcmlsbERvd248L0xpbmtUbz4gcHJvcHMgYXMgYGZhbHNlYC4gKi99XG4gICAgey8qICMjIyBkb1Nob3dNb3JlRHJpbGxEb3duXG4gICAgIC0gdHlwZTogYGJvb2xlYW5gXG4gICAgIC0gPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImRvLXNob3ctbW9yZS1kcmlsbC1kb3duXCI+XG4gICAgICAgIEV4YW1wbGVcbiAgICAgIDwvTGlua1RvPlxuICAgICBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGRyaWxsIGRvd24gc2hvdWxkIG9jY3VyIHdoZW4gY2xpY2tpbmcgb24gdGhlIFwiK194XyBtb3JlXCIgbGluay5cbiAgICAgSWYgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInBvcHVwXCI+cG9wdXA8L0xpbmtUbz4gaXMgYGZhbHNlYCwgYW5kIGBkb1Nob3dNb3JlRHJpbGxEb3duYCBpcyBgdHJ1ZWAsIHRoZSBkcmlsbCBkb3duIHdpbGwgb2NjdXIgYXMgdXN1YWwuXG4gICAgIElmIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJwb3B1cFwiPnBvcHVwPC9MaW5rVG8+IGlzIGBmYWxzZWAsIGFuZCBgZG9TaG93TW9yZURyaWxsRG93bmAgaXMgYGZhbHNlYCwgdGhlIGRyaWxsIGRvd24gd2lsbCBub3Qgb2NjdXIgYW5kIHRoZSA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwib24tc2hvdy1tb3JlXCI+b25TaG93TW9yZTwvTGlua1RvPiBmdW5jdGlvbiB3aWxsIHRyaWdnZXIuICovfVxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcIm9ua2V5cHJlc3NldmVudFwiXG4gICAgfX0+e2BvbktleVByZXNzRXZlbnRgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChldmVudDogT2JqZWN0LCBlOiBTeW50aGV0aWNFdmVudCkgPT4gdm9pZGB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJvbi1rZXktcHJlc3MtZXZlbnRcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BDYWxsYmFjayBmaXJlZCB3aGVuIGEgZm9jdXNlZCBjYWxlbmRhciBldmVudCByZWNlaXZlcyBhIGtleSBwcmVzcy5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJzaG93YWxsZXZlbnRzXCJcbiAgICB9fT57YHNob3dBbGxFdmVudHNgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZhbHNlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNob3ctYWxsLWV2ZW50c1wiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERpc3BsYXlzIGFsbCBldmVudHMgb24gdGhlIG1vbnRoIHZpZXcgaW5zdGVhZCBvZiBoYXZpbmcgc29tZSBoaWRkZW4gYmVoaW5kICt7Y291bnR9IG1vcmUuIFRoaXMgd2lsbCBjYXVzZSB0aGUgcm93cyBpbiB0aGUgbW9udGggdmlldyB0byBiZSBzY3JvbGxhYmxlIGlmIHRoZSBudW1iZXIgb2YgZXZlbnRzIGV4Y2VlZCB0aGUgaGVpZ2h0IG9mIHRoZSByb3cuYH08L3A+XG4gICAgPGg0IHsuLi57XG4gICAgICBcImlkXCI6IFwic2VsZWN0ZWRcIlxuICAgIH19Pntgc2VsZWN0ZWRgfTwvaDQ+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YEV2ZW50OiBPYmplY3RgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic2VsZWN0ZWRcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUaGUgc2VsZWN0ZWQgZXZlbnQsIGlmIGFueS4gQnkgZGVmYXVsdCwgQmlnIENhbGVuZGFyICdjb250cm9scycgdGhlIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHNlbGVjdGVkYH08L2lubGluZUNvZGU+e2AgKGhpZ2hsaWdodGVkKSBldmVudCBpbiB0aGUgZGlzcGxheS4gWW91IGNhbiB1c2UgdGhpcyBwcm9wIHRvIGNvbnRyb2wgd2hpY2ggZXZlbnQgaXMgaGlnaGxpZ2h0ZWQuIFRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BzZWxlY3RlZGB9PC9pbmxpbmVDb2RlPntgIGV2ZW50IG11c3QgYmUgYSBvYmplY3QgcmVmZXJlbmNlIHRvIHRoZSBldmVudCB3aXRoaW4gdGhlIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImV2ZW50c1wiIG1keFR5cGU9XCJMaW5rVG9cIj57YGV2ZW50c2B9PC9MaW5rVG8+e2AgYXJyYXkuYH08L3A+XG4gICAgPHA+e2BPZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwib24tc2VsZWN0LWV2ZW50XCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgT25TZWxlY3RFdmVudGB9PC9MaW5rVG8+e2AgYW5kL29yIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cIm9uLWRvdWJsZS1jbGljay1ldmVudFwiIG1keFR5cGU9XCJMaW5rVG9cIj57YG9uRG91YmxlQ2xpY2tFdmVudGB9PC9MaW5rVG8+e2AuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwidmlld3NcIlxuICAgIH19Pntgdmlld3NgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YFZpZXdzICgnbW9udGgnfCd3ZWVrJ3wnd29ya193ZWVrJ3wnZGF5J3wnYWdlbmRhJylgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YFt2aWV3cy5NT05USCwgdmlld3MuV0VFSywgdmlld3MuREFZLCB2aWV3cy5BR0VOREFdYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImNhbC12aWV3c1wiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEFuIGFycmF5IG9mIGJ1aWx0LWluIHZpZXcgbmFtZXMgdG8gYWxsb3cgdGhlIGNhbGVuZGFyIHRvIGRpc3BsYXkuIGFjY2VwdHMgZWl0aGVyIGFuIGFycmF5IG9mIGJ1aWx0aW4gdmlldyBuYW1lcyxgfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19Pntgdmlld3M9e1snbW9udGgnLCAnZGF5JywgJ2FnZW5kYSddfVxuYH08L2NvZGU+PC9wcmU+XG4gICAgPHA+e2BvciBhbiBvYmplY3QgaGFzaCBvZiB0aGUgdmlldyBuYW1lIGFuZCB0aGUgY29tcG9uZW50IChvciBib29sZWFuIGZvciBidWlsdGluKS5gfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19Pntgdmlld3M9e3tcbiAgbW9udGg6IHRydWUsXG4gIHdlZWs6IGZhbHNlLFxuICBteXdlZWs6IFdvcmtXZWVrVmlld0NvbXBvbmVudCxcbn19XG5gfTwvY29kZT48L3ByZT5cbiAgICA8cD57YEN1c3RvbSB2aWV3cyBjYW4gYmUgYW55IFJlYWN0IGNvbXBvbmVudCwgdGhhdCBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlOmB9PC9wPlxuICAgIDxwcmU+PGNvZGUgcGFyZW50TmFtZT1cInByZVwiIHsuLi57XG4gICAgICAgIFwiY2xhc3NOYW1lXCI6IFwibGFuZ3VhZ2UtanNcIlxuICAgICAgfX0+e2BpbnRlcmZhY2UgVmlldyB7XG4gIHN0YXRpYyB0aXRsZShkYXRlOiBEYXRlLCB7IGZvcm1hdHM6IERhdGVGb3JtYXRbXSwgY3VsdHVyZTogc3RyaW5nPywgLi4ucHJvcHMgfSk6IHN0cmluZ1xuICBzdGF0aWMgbmF2aWdhdGUoZGF0ZTogRGF0ZSwgYWN0aW9uOiAnUFJFVicgfCAnTkVYVCcgfCAnREFURScpOiBEYXRlXG59XG5gfTwvY29kZT48L3ByZT5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJkcmlsbGRvd252aWV3XCJcbiAgICB9fT57YGRyaWxsZG93blZpZXdgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgVmlld3MuREFZYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImRyaWxsZG93bi12aWV3XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIHN0cmluZyBuYW1lIG9mIHRoZSBkZXN0aW5hdGlvbiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B2aWV3YH08L2lubGluZUNvZGU+e2AgZm9yIGRyaWxsLWRvd24gYWN0aW9ucywgc3VjaCBhcyBjbGlja2luZyBhIGRhdGUgaGVhZGVyLCBvciB0aGUgdHJ1bmNhdGVkIGV2ZW50cyBsaW5rcy4gSWYgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZ2V0RHJpbGxkb3duVmlld2B9PC9pbmxpbmVDb2RlPntgIGlzIGFsc28gc3BlY2lmaWVkIGl0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkLmB9PC9wPlxuICAgIDxwPntgU2V0IHRvIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YG51bGxgfTwvaW5saW5lQ29kZT57YCB0byBkaXNhYmxlIGRyaWxsLWRvd24gYWN0aW9ucy5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJnZXRkcmlsbGRvd252aWV3XCJcbiAgICB9fT57YGdldERyaWxsZG93blZpZXdgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uICh0YXJnZXREYXRlOiBEYXRlLCBjdXJyZW50Vmlld05hbWU6IHN0cmluZywgY29uZmlndXJlZFZpZXdOYW1lczogVmlld3NbXSkgPT4gc3RyaW5nfG51bGxgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZ2V0LWRyaWxsZG93bi12aWV3XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gZHJpbGxkb3duVmlldywgYnV0IGFjY2VwdHMgYSBmdW5jdGlvbiB0aGF0IGNhbiByZXR1cm4gYSB2aWV3IG5hbWUuIEl0J3MgdXNlZnVsIGZvciBjdXN0b21pemluZyB0aGUgZHJpbGwtZG93biBhY3Rpb25zIGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0IGRhdGUgYW5kIHRyaWdnZXJpbmcgdmlldy5gfTwvcD5cbiAgICA8cD57YFJldHVybiBudWxsIHRvIGRpc2FibGUgZHJpbGwtZG93biBhY3Rpb25zLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImxlbmd0aFwiXG4gICAgfX0+e2BsZW5ndGhgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG51bWJlcmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgMzBgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwibGVuZ3RoXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRGV0ZXJtaW5lcyB0aGUgZW5kIGRhdGUgZnJvbSBkYXRlIHByb3AgaW4gdGhlIGFnZW5kYSB2aWV3IGRhdGUgcHJvcCArIGxlbmd0aCAoaW4gbnVtYmVyIG9mIGRheXMpID0gZW5kIGRhdGUuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwidG9vbGJhclwiXG4gICAgfX0+e2B0b29sYmFyYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2Bib29sZWFuYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YGRlZmF1bHQ6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2B0cnVlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInRvb2xiYXJcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRvb2xiYXIgaXMgZGlzcGxheWVkYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwicG9wdXBcIlxuICAgIH19PntgcG9wdXBgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHRydWVgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwicG9wdXBcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BTaG93IHRydW5jYXRlZCBldmVudHMgaW4gYW4gb3ZlcmxheSB3aGVuIHlvdSBjbGljayB0aGUgXCIrYH08ZW0gcGFyZW50TmFtZT1cInBcIj57YHhgfTwvZW0+e2AgbW9yZVwiIGxpbmsuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwicG9wdXBvZmZzZXRcIlxuICAgIH19PntgcG9wdXBPZmZzZXRgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG51bWJlcnxzaGFwZSB7eDogbnVtYmVyLCB5OiBudW1iZXJ9YH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInBvcHVwLW9mZnNldFwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERpc3RhbmNlIGluIHBpeGVscywgZnJvbSB0aGUgZWRnZXMgb2YgdGhlIHZpZXdwb3J0LCB0aGUgXCJzaG93IG1vcmVcIiBvdmVybGF5IHNob3VsZCBiZSBwb3NpdGlvbmVkLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImxvbmdwcmVzc3RocmVzaG9sZFwiXG4gICAgfX0+e2Bsb25nUHJlc3NUaHJlc2hvbGRgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG51bWJlcmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgMjUwYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImxvbmctcHJlc3MtdGhyZXNob2xkXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgbWlsaXNlY29uZHMgdGhlIHVzZXIgbXVzdCBwcmVzcyBhbmQgaG9sZCBvbiB0aGUgc2NyZWVuIGZvciBhIHRvdWNoIHRvIGJlIGNvbnNpZGVyZWQgYSBcImxvbmcgcHJlc3MuXCIgTG9uZyBwcmVzc2VzIGFyZSB1c2VkIGZvciB0aW1lIHNsb3Qgc2VsZWN0aW9uIG9uIHRvdWNoIGRldmljZXMuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwic3RlcFwiXG4gICAgfX0+e2BzdGVwYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BudW1iZXJgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YDMwYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInN0ZXBcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BEZXRlcm1pbmVzIHRoZSBzZWxlY3RhYmxlIHRpbWUgaW5jcmVtZW50cyBpbiB3ZWVrIGFuZCBkYXkgdmlld3NgfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJ0aW1lc2xvdHNcIlxuICAgIH19PntgdGltZXNsb3RzYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BudW1iZXJgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwidGltZXNsb3RzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGhlIG51bWJlciBvZiBzbG90cyBwZXIgXCJzZWN0aW9uXCIgaW4gdGhlIHRpbWUgZ3JpZCB2aWV3cy4gQWRqdXN0IHdpdGggYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic3RlcFwiIG1keFR5cGU9XCJMaW5rVG9cIj57YHN0ZXBgfTwvTGlua1RvPntgIHRvIGNoYW5nZSB0aGUgZGVmYXVsdCBvZiAxIGhvdXIgbG9uZyBncm91cHMsIHdpdGggMzAgbWludXRlIHNsb3RzLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcInJ0bFwiXG4gICAgfX0+e2BydGxgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGJvb2xlYW5gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZhbHNlYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInJpZ2h0LXRvLWxlZnRcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BTd2l0Y2ggdGhlIGNhbGVuZGFyIHRvIGEgcmlnaHQtdG8tbGVmdCByZWFkIGRpcmVjdGlvbi5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJldmVudHByb3BnZXR0ZXJcIlxuICAgIH19PntgZXZlbnRQcm9wR2V0dGVyYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZXZlbnQ6IE9iamVjdCwgc3RhcnQ6IERhdGUsIGVuZDogRGF0ZSwgaXNTZWxlY3RlZDogYm9vbGVhbikgPT4ge2NsYXNzTmFtZT86IHN0cmluZywgc3R5bGU/OiBPYmplY3R9YH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImV2ZW50LXByb3AtZ2V0dGVyXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgT3B0aW9uYWxseSBwcm92aWRlIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIG9iamVjdCBvZiBjbGFzc05hbWUgb3Igc3R5bGUgcHJvcHMgdG8gYmUgYXBwbGllZCB0byB0aGUgdGhlIGV2ZW50IG5vZGUuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwic2xvdHByb3BnZXR0ZXJcIlxuICAgIH19Pntgc2xvdFByb3BHZXR0ZXJgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChkYXRlOiBEYXRlKSA9PiB7Y2xhc3NOYW1lPzogc3RyaW5nLCBzdHlsZT86IE9iamVjdH1gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwib24tc2xvdC1wcm9wLWdldHRlclwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YE9wdGlvbmFsbHkgcHJvdmlkZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBvYmplY3Qgb2YgY2xhc3NOYW1lIG9yIHN0eWxlIHByb3BzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHRoZSB0aW1lLXNsb3Qgbm9kZS5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BDYXV0aW9uIWB9PC9zdHJvbmc+e2AgU3R5bGVzIHRoYXQgY2hhbmdlIGxheW91dCBvciBwb3NpdGlvbiBtYXkgYnJlYWsgdGhlIGNhbGVuZGFyIGluIHVuZXhwZWN0ZWQgd2F5cy5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJzbG90Z3JvdXBwcm9wZ2V0dGVyXCJcbiAgICB9fT57YHNsb3RHcm91cFByb3BHZXR0ZXJgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChncm91cDogRGF0ZVtdKSA9PiB7IHN0eWxlPzogT2JqZWN0IH1gfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic2xvdC1ncm91cC1wcm9wLWdldHRlclwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YE9wdGlvbmFsbHkgcHJvdmlkZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBvYmplY3Qgb2YgY2xhc3NOYW1lIG9yIHN0eWxlIHByb3BzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHRpbWUtc2xvdCBub2RlLmB9PC9wPlxuICAgIDxwPjxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YENhdXRpb24hIFN0eWxlcyB0aGF0IGNoYW5nZSBsYXlvdXQgb3IgcG9zaXRpb24gbWF5IGJyZWFrIHRoZSBjYWxlbmRhciBpbiB1bmV4cGVjdGVkIHdheXMuYH08L3N0cm9uZz48L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZGF5cHJvcGdldHRlclwiXG4gICAgfX0+e2BkYXlQcm9wR2V0dGVyYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSkgPT4ge2NsYXNzTmFtZT86IHN0cmluZywgc3R5bGU/OiBPYmplY3R9YH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImRheS1wcm9wLWdldHRlclwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YE9wdGlvbmFsbHkgcHJvdmlkZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBvYmplY3Qgb2YgY2xhc3NOYW1lIG9yIHN0eWxlIHByb3BzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHRoZSBkYXkgYmFja2dyb3VuZC5gfTwvcD5cbiAgICA8cD48c3Ryb25nIHBhcmVudE5hbWU9XCJwXCI+e2BDYXV0aW9uIWB9PC9zdHJvbmc+e2AgU3R5bGVzIHRoYXQgY2hhbmdlIGxheW91dCBvciBwb3NpdGlvbiBtYXkgYnJlYWsgdGhlIGNhbGVuZGFyIGluIHVuZXhwZWN0ZWQgd2F5cy5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJzaG93bXVsdGlkYXl0aW1lc1wiXG4gICAgfX0+e2BzaG93TXVsdGlEYXlUaW1lc2B9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgYm9vbGVhbmB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZmFsc2VgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic2hvdy1tdWx0aS1kYXktdGltZXNcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BTdXBwb3J0IHRvIHNob3cgbXVsdGktZGF5IGV2ZW50cyB3aXRoIHNwZWNpZmljIHN0YXJ0IGFuZCBlbmQgdGltZXMgaW4gdGhlIG1haW4gdGltZSBncmlkIChyYXRoZXIgdGhhbiBpbiB0aGUgYWxsIGRheSBoZWFkZXIpLmB9PC9wPlxuICAgIDxwPjxzdHJvbmcgcGFyZW50TmFtZT1cInBcIj57YE5vdGU6IFRoaXMgbWF5IGNhdXNlIGNhbGVuZGFycyB3aXRoIHNldmVyYWwgZXZlbnRzIHRvIGxvb2sgdmVyeSBidXN5IGluIHRoZSB3ZWVrIGFuZCBkYXkgdmlld3MuYH08L3N0cm9uZz48L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwibWluXCJcbiAgICB9fT57YG1pbmB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgaW5zdGFuY2VPZihEYXRlKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbmV3IERhdGUoMTk3MiwgMCwgMSwgMCwgMCwgMClgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwibWluXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ29uc3RyYWlucyB0aGUgbWluaW11bSB0aW1lIG9mIHRoZSBEYXkgYW5kIFdlZWsgdmlld3MuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwibWF4XCJcbiAgICB9fT57YG1heGB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgaW5zdGFuY2VPZihEYXRlKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbmV3IERhdGUoMTk3MiwgMCwgMSwgMjMsIDU5LCA1OSlgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwibWF4XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQ29uc3RyYWlucyB0aGUgbWF4aW11bSB0aW1lIG9mIHRoZSBEYXkgYW5kIFdlZWsgdmlld3MuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwic2Nyb2xsdG90aW1lXCJcbiAgICB9fT57YHNjcm9sbFRvVGltZWB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgaW5zdGFuY2VPZihEYXRlKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbmV3IERhdGUoKWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJzY3JvbGwtdG8tdGltZVwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YERldGVybWluZXMgaG93IGZhciBkb3duIHRoZSBzY3JvbGwgcGFuZSBpcyBpbml0aWFsbHkgc2Nyb2xsZWQgZG93bi5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJjdWx0dXJlXCJcbiAgICB9fT57YGN1bHR1cmVgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2BkZWZhdWx0OiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgbm9uZSAoYnJvd3NlciBkZWZhdWx0KWB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJjdWx0dXJlXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgU3BlY2lmeSBhIHNwZWNpZmljIGN1bHR1cmUgY29kZSBmb3IgdGhlIENhbGVuZGFyLiBUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgY3VsdHVyZWB9PC9pbmxpbmVDb2RlPntgIGlzIHVzZWQgYnkgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZm9ybWF0c2B9PC9pbmxpbmVDb2RlPntgIHdpdGggeW91ciBgfTxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJsb2NhbGl6ZXJcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2Bsb2NhbGl6ZXJgfTwvTGlua1RvPntgIHRvICdmb3JtYXQnIGRhdGUvdGltZSBpbmZvcm1hdGlvbiBvbiB0aGUgQ2FsZW5kYXIuIFRvIGxvY2FsaXplIG1lc3NhZ2luZywgdXNlIHRoZSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2BtZXNzYWdlc2B9PC9pbmxpbmVDb2RlPntgIHByb3AuYH08L3A+XG4gICAgPHA+PHN0cm9uZyBwYXJlbnROYW1lPVwicFwiPntgTm90ZTogaXQncyBnZW5lcmFsbHkgYmV0dGVyIHRvIGhhbmRsZSB0aGlzIGdsb2JhbGx5IHZpYSB5b3VyIGkxOG4gbGlicmFyeS5gfTwvc3Ryb25nPjwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJmb3JtYXRzXCJcbiAgICB9fT57YGZvcm1hdHNgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YE9iamVjdGB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJmb3JtYXRzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJsb2NhbGl6ZXJcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIExvY2FsaXplclxuICAgIDwvTGlua1RvPiBzcGVjaWZpYyBmb3JtYXRzLCB0ZWxsIHRoZSBDYWxlbmRhciBob3cgdG8gZm9ybWF0IGFuZCBkaXNwbGF5IGRhdGVzIGFuZFxudGltZXMuXG4gICAgPHA+e2BUaGUgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgZm9ybWF0YH08L2lubGluZUNvZGU+e2AgdHlwZXMgYXJlIGRlcGVuZGVudCBvbiB0aGUgY29uZmlndXJlZCBsb2NhbGl6ZXI7IGJvdGggTW9tZW50IGFuZCBHbG9iYWxpemUgYWNjZXB0IHN0cmluZ3Mgb2YgdG9rZW5zIGFjY29yZGluZyB0byB0aGVpciBvd24gc3BlY2lmaWNhdGlvbiwgc3VjaCBhczogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgJ0REIG1tIHl5eXknYH08L2lubGluZUNvZGU+e2AuYH08L3A+XG4gICAgPHByZT48Y29kZSBwYXJlbnROYW1lPVwicHJlXCIgey4uLntcbiAgICAgICAgXCJjbGFzc05hbWVcIjogXCJsYW5ndWFnZS1qc1wiXG4gICAgICB9fT57YGNvbnN0IGZvcm1hdHMgPSB1c2VNZW1vKCgpID0+ICh7XG4gIGRhdGVGb3JtYXQ6ICdkZCcsXG5cbiAgZGF5Rm9ybWF0OiAoZGF0ZSwgLCBsb2NhbGl6ZXIpID0+XG4gICAgbG9jYWxpemVyLmZvcm1hdChkYXRlLCAnREREJywgY3VsdHVyZSksXG5cbiAgZGF5UmFuZ2VIZWFkZXJGb3JtYXQ6ICh7IHN0YXJ0LCBlbmQgfSwgY3VsdHVyZSwgbG9jYWxpemVyKSA9PlxuICAgIGxvY2FsaXplci5mb3JtYXQoc3RhcnQsIHsgZGF0ZTogJ3Nob3J0JyB9LCBjdWx0dXJlKSArICcg4oCUICcgK1xuICAgIGxvY2FsaXplci5mb3JtYXQoZW5kLCB7IGRhdGU6ICdzaG9ydCcgfSwgY3VsdHVyZSlcbn0pLCBbXSlcblxuPENhbGVuZGFyIGZvcm1hdHM9e2Zvcm1hdHN9IC8+XG5gfTwvY29kZT48L3ByZT5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJmb3JtYXRzZGF0ZWZvcm1hdFwiXG4gICAgfX0+e2Bmb3JtYXRzLmRhdGVGb3JtYXRgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChkYXRlOiBEYXRlLCBjdWx0dXJlOiA/c3RyaW5nLCBsb2NhbGl6ZXI6IERhdGVMb2NhbGl6ZXIpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJmb3JtYXRzLWRhdGUtZm9ybWF0XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgRm9ybWF0IGZvciB0aGUgZGF5IG9mIHRoZSBtb250aCBoZWFkaW5nIGluIHRoZSBNb250aCB2aWV3LiBlLmcuIFwiMDFcIiwgXCIwMlwiLCBcIjAzXCIsIGV0Y2B9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNkYXlmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5kYXlGb3JtYXRgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChkYXRlOiBEYXRlLCBjdWx0dXJlOiA/c3RyaW5nLCBsb2NhbGl6ZXI6IERhdGVMb2NhbGl6ZXIpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJmb3JtYXRzLWRheS1mb3JtYXRcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBIGRheSBvZiB0aGUgd2VlayBmb3JtYXQgZm9yIFdlZWsgYW5kIERheSBoZWFkaW5ncywgZS5nLiBcIldlZCAwMS8wNFwiYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c3dlZWtkYXlmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy53ZWVrZGF5Rm9ybWF0YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0cy13ZWVrZGF5LWZvcm1hdFwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFdlZWsgZGF5IG5hbWUgZm9ybWF0IGZvciB0aGUgTW9udGggd2VlayBkYXkgaGVhZGluZ3MsIGUuZzogXCJTdW5cIiwgXCJNb25cIiwgXCJUdWVcIiwgZXRjYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c3RpbWVndXR0ZXJmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy50aW1lR3V0dGVyRm9ybWF0YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0cy10aW1lLWd1dHRlci1mb3JtYXRcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUaGUgdGltZXN0YW1wIGNlbGwgZm9ybWF0cyBpbiBXZWVrIGFuZCBUaW1lIHZpZXdzLCBlLmcuIFwiNDowMCBBTVwiYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c21vbnRoaGVhZGVyZm9ybWF0XCJcbiAgICB9fT57YGZvcm1hdHMubW9udGhIZWFkZXJGb3JtYXRgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChkYXRlOiBEYXRlLCBjdWx0dXJlOiA/c3RyaW5nLCBsb2NhbGl6ZXI6IERhdGVMb2NhbGl6ZXIpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJmb3JtYXRzLW1vbnRoLWhlYWRlci1mb3JtYXRcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUb29sYmFyIGhlYWRlciBmb3JtYXQgZm9yIHRoZSBNb250aCB2aWV3LCBlLmcgXCIyMDE1IEFwcmlsXCJgfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJmb3JtYXRzZGF5cmFuZ2VoZWFkZXJmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5kYXlSYW5nZUhlYWRlckZvcm1hdGB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKHJhbmdlOiBPYmplY3Qge3N0YXJ0OiBEYXRlLCBlbmQ6IERhdGV9LCBjdWx0dXJlOiA/c3RyaW5nLCBsb2NhbGl6ZXI6IERhdGVMb2NhbGl6ZXIpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJmb3JtYXRzLWRheS1yYW5nZS1oZWFkZXItZm9ybWF0XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVG9vbGJhciBoZWFkZXIgZm9ybWF0IGZvciB0aGUgV2VlayB2aWV3cywgZS5nLiBcIk1hciAyOSAtIEFwciAwNFwiYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c2RheWhlYWRlcmZvcm1hdFwiXG4gICAgfX0+e2Bmb3JtYXRzLmRheUhlYWRlckZvcm1hdGB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKGRhdGU6IERhdGUsIGN1bHR1cmU6ID9zdHJpbmcsIGxvY2FsaXplcjogRGF0ZUxvY2FsaXplcikgPT4gc3RyaW5nYH08L2lubGluZUNvZGU+PC9saT5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj5cbiAgICAgICAgPExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cImZvcm1hdHMtZGF5LWhlYWRlci1mb3JtYXRcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUb29sYmFyIGhlYWRlciBmb3JtYXQgZm9yIHRoZSBEYXkgdmlldywgZS5nLiBcIldlZG5lc2RheSBBcHIgMDFcImB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNhZ2VuZGFoZWFkZXJmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5hZ2VuZGFIZWFkZXJGb3JtYXRgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChyYW5nZTogT2JqZWN0IHtzdGFydDogRGF0ZSwgZW5kOiBEYXRlfSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0cy1hZ2VuZGEtaGVhZGVyLWZvcm1hdFwiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFRvb2xiYXIgaGVhZGVyIGZvcm1hdCBmb3IgdGhlIEFnZW5kYSB2aWV3LCBlLmcuIFwiNC8xLzIwMTUg4oCUIDUvMS8yMDE1XCJgfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJmb3JtYXRzc2VsZWN0cmFuZ2Vmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5zZWxlY3RSYW5nZUZvcm1hdGB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKHJhbmdlOiBPYmplY3Qge3N0YXJ0OiBEYXRlLCBlbmQ6IERhdGV9LCBjdWx0dXJlOiA/c3RyaW5nLCBsb2NhbGl6ZXI6IERhdGVMb2NhbGl6ZXIpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJmb3JtYXRzLXNlbGVjdC1yYW5nZS1mb3JtYXRcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBIHRpbWUgcmFuZ2UgZm9ybWF0IHNob3duIGluIHRoZSBoaWdobGlnaHRlZCBhcmVhIHdoZW4gc2VsZWN0aW5nIHRpbWUgc2xvdHMsIGUuZyBcIjA4OjAwIGFtIOKAlCAxMjowMCBwbVwiYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c2FnZW5kYWRhdGVmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5hZ2VuZGFEYXRlRm9ybWF0YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0cy1hZ2VuZGEtZGF0ZS1mb3JtYXRcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BEYXRlcyBkaXNwbGF5ZWQgaW4gdGhlIGd1dHRlciBvZiB0aGUgQWdlbmRhIGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cInBcIj57YHZpZXdgfTwvaW5saW5lQ29kZT48L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiZm9ybWF0c2FnZW5kYXRpbWVmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5hZ2VuZGFUaW1lRm9ybWF0YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0cy1hZ2VuZGEtdGltZS1mb3JtYXRcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUaW1lIG9ubHkgKG5vdCByYW5nZSkgZGlzcGxheWVkIGluIHRoZSBndXR0ZXIgb2YgdGhlIEFnZW5kYSBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJwXCI+e2B2aWV3YH08L2lubGluZUNvZGU+PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNhZ2VuZGF0aW1lcmFuZ2Vmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5hZ2VuZGFUaW1lUmFuZ2VGb3JtYXRgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChyYW5nZTogT2JqZWN0IHtzdGFydDogRGF0ZSwgZW5kOiBEYXRlfSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0cy1hZ2VuZGEtdGltZS1yYW5nZS1mb3JtYXRcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BUaW1lIHJhbmdlIGRpc3BsYXllZCBpbiB0aGUgZ3V0dGVyIG9mIHRoZSBBZ2VuZGEgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgdmlld2B9PC9pbmxpbmVDb2RlPjwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJmb3JtYXRzZXZlbnR0aW1lcmFuZ2Vmb3JtYXRcIlxuICAgIH19PntgZm9ybWF0cy5ldmVudFRpbWVSYW5nZUZvcm1hdGB9PC9oMz5cbiAgICA8dWw+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+e2B0eXBlOiBgfTxpbmxpbmVDb2RlIHBhcmVudE5hbWU9XCJsaVwiPntgZnVuY3Rpb24gKHJhbmdlOiBPYmplY3Qge3N0YXJ0OiBEYXRlLCBlbmQ6IERhdGV9LCBjdWx0dXJlOiA/c3RyaW5nLCBsb2NhbGl6ZXI6IERhdGVMb2NhbGl6ZXIpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJmb3JtYXRzLWV2ZW50LXRpbWUtcmFuZ2UtZm9ybWF0XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgVGltZSByYW5nZSBkaXNwbGF5ZWQgb24gZXZlbnRzIGluIFRpbWUgR3JpZCB2aWV3cy5gfTwvcD5cbiAgICA8aDMgey4uLntcbiAgICAgIFwiaWRcIjogXCJmb3JtYXRzZXZlbnR0aW1lcmFuZ2VzdGFydGZvcm1hdFwiXG4gICAgfX0+e2Bmb3JtYXRzLmV2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXRgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YGZ1bmN0aW9uIChkYXRlOiBEYXRlLCBjdWx0dXJlOiA/c3RyaW5nLCBsb2NhbGl6ZXI6IERhdGVMb2NhbGl6ZXIpID0+IHN0cmluZ2B9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJmb3JtYXRzLWV2ZW50LXRpbWUtcmFuZ2Utc3RhcnQtZm9ybWF0XCIgbWR4VHlwZT1cIkxpbmtUb1wiPlxuICBFeGFtcGxlXG4gICAgICAgIDwvTGlua1RvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPntgQW4gb3B0aW9uYWwgZXZlbnQgdGltZSByYW5nZSBmb3IgZXZlbnRzIHRoYXQgY29udGludWUgb250byBhbm90aGVyIGRheS4gVXNlZCB3aXRoIGB9PExpbmtUbyBraW5kPVwicHJvcHNcIiBzdG9yeT1cInNob3ctbXVsdGktZGF5LXRpbWVzXCIgbWR4VHlwZT1cIkxpbmtUb1wiPntgc2hvd011bHRpRGF5VGltZXNgfTwvTGlua1RvPntgLmB9PC9wPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImZvcm1hdHNldmVudHRpbWVyYW5nZWVuZGZvcm1hdFwiXG4gICAgfX0+e2Bmb3JtYXRzLmV2ZW50VGltZVJhbmdlRW5kRm9ybWF0YH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BmdW5jdGlvbiAoZGF0ZTogRGF0ZSwgY3VsdHVyZTogP3N0cmluZywgbG9jYWxpemVyOiBEYXRlTG9jYWxpemVyKSA9PiBzdHJpbmdgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZm9ybWF0cy1ldmVudC10aW1lLXJhbmdlLWVuZC1mb3JtYXRcIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBbiBvcHRpb25hbCBldmVudCB0aW1lIHJhbmdlIGZvciBldmVudHMgdGhhdCBjb250aW51ZSBvbnRvIGFub3RoZXIgZGF5LiBVc2VkIHdpdGggYH08TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwic2hvdy1tdWx0aS1kYXktdGltZXNcIiBtZHhUeXBlPVwiTGlua1RvXCI+e2BzaG93TXVsdGlEYXlUaW1lc2B9PC9MaW5rVG8+e2AuYH08L3A+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwiY29tcG9uZW50c1wiXG4gICAgfX0+e2Bjb21wb25lbnRzYH08L2gzPlxuICAgIDx1bD5cbiAgICAgIDxsaSBwYXJlbnROYW1lPVwidWxcIj57YHR5cGU6IGB9PGlubGluZUNvZGUgcGFyZW50TmFtZT1cImxpXCI+e2BvYmplY3RgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiY29tcG9uZW50c1wiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YEN1c3RvbWl6ZSBob3cgZGlmZmVyZW50IHNlY3Rpb25zIG9mIHRoZSBjYWxlbmRhciByZW5kZXIgYnkgcHJvdmlkaW5nIGN1c3RvbSBDb21wb25lbnRzLiBJbiBwYXJ0aWN1bGFyIHRoZSBFdmVudCBjb21wb25lbnQgY2FuIGJlIHNwZWNpZmllZCBmb3IgdGhlIGVudGlyZSBjYWxlbmRhciwgb3IgeW91IGNhbiBwcm92aWRlIGFuIGluZGl2aWR1YWwgY29tcG9uZW50IGZvciBlYWNoIHZpZXcgdHlwZS5gfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19PntgbGV0IGNvbXBvbmVudHMgPSB1c2VNZW1vKHtcbiAgZXZlbnQ6IE15RXZlbnQsIC8vIHVzZWQgYnkgZWFjaCB2aWV3IChNb250aCwgRGF5LCBXZWVrKVxuICB0b29sYmFyOiBNeVRvb2xiYXIsXG4gIGFnZW5kYToge1xuICAgICAgIGV2ZW50OiBNeUFnZW5kYUV2ZW50IC8vIHdpdGggdGhlIGFnZW5kYSB2aWV3IHVzZSBhIGRpZmZlcmVudCBjb21wb25lbnQgdG8gcmVuZGVyIGV2ZW50c1xuICB9XG59LCBbXSlcbjxDYWxlbmRhciBjb21wb25lbnRzPXtjb21wb25lbnRzfSAvPlxuYH08L2NvZGU+PC9wcmU+XG4gICAgPGgzIHsuLi57XG4gICAgICBcImlkXCI6IFwibWVzc2FnZXNcIlxuICAgIH19PntgbWVzc2FnZXNgfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YE9iamVjdGB9PC9pbmxpbmVDb2RlPjwvbGk+XG4gICAgICA8bGkgcGFyZW50TmFtZT1cInVsXCI+XG4gICAgICAgIDxMaW5rVG8ga2luZD1cInByb3BzXCIgc3Rvcnk9XCJtZXNzYWdlc1wiIG1keFR5cGU9XCJMaW5rVG9cIj5cbiAgRXhhbXBsZVxuICAgICAgICA8L0xpbmtUbz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cD57YFN0cmluZyBtZXNzYWdlcyB1c2VkIHRocm91Z2hvdXQgdGhlIGNvbXBvbmVudCwgb3ZlcnJpZGUgdG8gcHJvdmlkZSBsb2NhbGl6YXRpb25zIGZvciBidXR0b24gdGV4dCwgYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgdGl0bGVgfTwvaW5saW5lQ29kZT57YCBhdHRyaWJ1dGVzIGFuZCBtb3JlLmB9PC9wPlxuICAgIDxwPntgZGVmdWFsdHNgfTwvcD5cbiAgICA8cHJlPjxjb2RlIHBhcmVudE5hbWU9XCJwcmVcIiB7Li4ue1xuICAgICAgICBcImNsYXNzTmFtZVwiOiBcImxhbmd1YWdlLWpzXCJcbiAgICAgIH19Pntge1xuICBkYXRlOiAnRGF0ZScsXG4gIHRpbWU6ICdUaW1lJyxcbiAgZXZlbnQ6ICdFdmVudCcsXG4gIGFsbERheTogJ0FsbCBEYXknLFxuICB3ZWVrOiAnV2VlaycsXG4gIHdvcmtfd2VlazogJ1dvcmsgV2VlaycsXG4gIGRheTogJ0RheScsXG4gIG1vbnRoOiAnTW9udGgnLFxuICBwcmV2aW91czogJ0JhY2snLFxuICBuZXh0OiAnTmV4dCcsXG4gIHllc3RlcmRheTogJ1llc3RlcmRheScsXG4gIHRvbW9ycm93OiAnVG9tb3Jyb3cnLFxuICB0b2RheTogJ1RvZGF5JyxcbiAgYWdlbmRhOiAnQWdlbmRhJyxcblxuICBub0V2ZW50c0luUmFuZ2U6ICdUaGVyZSBhcmUgbm8gZXZlbnRzIGluIHRoaXMgcmFuZ2UuJyxcblxuICBzaG93TW9yZTogdG90YWwgPT4gXFxgK1xcJHt0b3RhbH0gbW9yZVxcYCxcbn1cbmB9PC9jb2RlPjwvcHJlPlxuICAgIDxoMyB7Li4ue1xuICAgICAgXCJpZFwiOiBcImRheWxheW91dGFsZ29yaXRobVwiXG4gICAgfX0+e2BkYXlMYXlvdXRBbGdvcml0aG1gfTwvaDM+XG4gICAgPHVsPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgdHlwZTogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YHN0cmluZyB8IEZ1bmN0aW9uKGV2ZW50cywgbWluaW11bVN0YXJ0RGlmZmVyZW5jZSwgc2xvdE1ldHJpY3MsIGFjY2Vzc29ycylgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPntgZGVmYXVsdDogYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwibGlcIj57YG92ZXJsYXBgfTwvaW5saW5lQ29kZT48L2xpPlxuICAgICAgPGxpIHBhcmVudE5hbWU9XCJ1bFwiPlxuICAgICAgICA8TGlua1RvIGtpbmQ9XCJwcm9wc1wiIHN0b3J5PVwiZGF5LWxheW91dC1hbGdvcml0aG1cIiBtZHhUeXBlPVwiTGlua1RvXCI+XG4gIEV4YW1wbGVcbiAgICAgICAgPC9MaW5rVG8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gICAgPHA+e2BBIGRheSBldmVudCBsYXlvdXQoYXJyYW5nZW1lbnQpIGFsZ29yaXRobS5gfTwvcD5cbiAgICA8cD48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgb3ZlcmxhcGB9PC9pbmxpbmVDb2RlPntgIGFsbG93cyBldmVudHMgdG8gYmUgb3ZlcmxhcHBlZC5gfTwvcD5cbiAgICA8cD48aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgbm8tb3ZlcmxhcGB9PC9pbmxpbmVDb2RlPntgIHJlc2l6ZXMgZXZlbnRzIHRvIGF2b2lkIG92ZXJsYXAuYH08L3A+XG4gICAgPHA+e2BvciBjdXN0b20gYH08aW5saW5lQ29kZSBwYXJlbnROYW1lPVwicFwiPntgRnVuY3Rpb24oZXZlbnRzLCBtaW5pbXVtU3RhcnREaWZmZXJlbmNlLCBzbG90TWV0cmljcywgYWNjZXNzb3JzKWB9PC9pbmxpbmVDb2RlPjwvcD5cbiAgICA8L01EWExheW91dD47XG59XG47XG5NRFhDb250ZW50LmlzTURYQ29tcG9uZW50ID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IF9fcGFnZSA9ICgpID0+IHsgdGhyb3cgbmV3IEVycm9yKFwiRG9jcy1vbmx5IHN0b3J5XCIpOyB9O1xuXG5fX3BhZ2UucGFyYW1ldGVycyA9IHsgZG9jc09ubHk6IHRydWUgfTtcblxuY29uc3QgY29tcG9uZW50TWV0YSA9IHsgdGl0bGU6ICdwcm9wcy9GdWxsIFByb3AgTGlzdCcsIGluY2x1ZGVTdG9yaWVzOiBbXCJfX3BhZ2VcIl0sICB9O1xuXG5jb25zdCBtZHhTdG9yeU5hbWVUb0tleSA9IHt9O1xuXG5jb21wb25lbnRNZXRhLnBhcmFtZXRlcnMgPSBjb21wb25lbnRNZXRhLnBhcmFtZXRlcnMgfHwge307XG5jb21wb25lbnRNZXRhLnBhcmFtZXRlcnMuZG9jcyA9IHtcbiAgLi4uKGNvbXBvbmVudE1ldGEucGFyYW1ldGVycy5kb2NzIHx8IHt9KSxcbiAgcGFnZTogKCkgPT4gPEFkZENvbnRleHQgbWR4U3RvcnlOYW1lVG9LZXk9e21keFN0b3J5TmFtZVRvS2V5fSBtZHhDb21wb25lbnRBbm5vdGF0aW9ucz17Y29tcG9uZW50TWV0YX0+PE1EWENvbnRlbnQgLz48L0FkZENvbnRleHQ+LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50TWV0YTsiLCIvLyBJbXBvcnRzXG52YXIgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fID0gcmVxdWlyZShcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIik7XG5leHBvcnRzID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKGZhbHNlKTtcbi8vIE1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLnJiYy1hZGRvbnMtZG5kIC5yYmMtYWRkb25zLWRuZC1yb3ctYm9keXtwb3NpdGlvbjpyZWxhdGl2ZX0ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLWRyYWctcm93e3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtyaWdodDowfS5yYmMtYWRkb25zLWRuZCAucmJjLWFkZG9ucy1kbmQtb3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjMpfS5yYmMtYWRkb25zLWRuZCAucmJjLWV2ZW50e3RyYW5zaXRpb246b3BhY2l0eSAxNTBtc30ucmJjLWFkZG9ucy1kbmQgLnJiYy1ldmVudDpob3ZlciAucmJjLWFkZG9ucy1kbmQtcmVzaXplLW5zLWljb24sLnJiYy1hZGRvbnMtZG5kIC5yYmMtZXZlbnQ6aG92ZXIgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ldy1pY29ue2Rpc3BsYXk6YmxvY2t9LnJiYy1hZGRvbnMtZG5kIC5yYmMtYWRkb25zLWRuZC1kcmFnZ2VkLWV2ZW50e29wYWNpdHk6MH0ucmJjLWFkZG9ucy1kbmQucmJjLWFkZG9ucy1kbmQtaXMtZHJhZ2dpbmcgLnJiYy1ldmVudDpub3QoLnJiYy1hZGRvbnMtZG5kLWRyYWdnZWQtZXZlbnQpOm5vdCgucmJjLWFkZG9ucy1kbmQtZHJhZy1wcmV2aWV3KXtvcGFjaXR5Oi41fS5yYmMtYWRkb25zLWRuZCAucmJjLWFkZG9ucy1kbmQtcmVzaXphYmxle3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LnJiYy1hZGRvbnMtZG5kIC5yYmMtYWRkb25zLWRuZC1yZXNpemUtbnMtYW5jaG9ye3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpjZW50ZXI7cG9zaXRpb246YWJzb2x1dGV9LnJiYy1hZGRvbnMtZG5kIC5yYmMtYWRkb25zLWRuZC1yZXNpemUtbnMtYW5jaG9yOmZpcnN0LWNoaWxke3RvcDowfS5yYmMtYWRkb25zLWRuZCAucmJjLWFkZG9ucy1kbmQtcmVzaXplLW5zLWFuY2hvcjpsYXN0LWNoaWxke2JvdHRvbTowfS5yYmMtYWRkb25zLWRuZCAucmJjLWFkZG9ucy1kbmQtcmVzaXplLW5zLWFuY2hvciAucmJjLWFkZG9ucy1kbmQtcmVzaXplLW5zLWljb257ZGlzcGxheTpub25lO2JvcmRlci10b3A6M3B4IGRvdWJsZTttYXJnaW46MCBhdXRvO3dpZHRoOjEwcHg7Y3Vyc29yOm5zLXJlc2l6ZX0ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ldy1hbmNob3J7cG9zaXRpb246YWJzb2x1dGU7dG9wOjRweDtib3R0b206MH0ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ldy1hbmNob3I6Zmlyc3QtY2hpbGR7bGVmdDowfS5yYmMtYWRkb25zLWRuZCAucmJjLWFkZG9ucy1kbmQtcmVzaXplLWV3LWFuY2hvcjpsYXN0LWNoaWxke3JpZ2h0OjB9LnJiYy1hZGRvbnMtZG5kIC5yYmMtYWRkb25zLWRuZC1yZXNpemUtZXctYW5jaG9yIC5yYmMtYWRkb25zLWRuZC1yZXNpemUtZXctaWNvbntkaXNwbGF5Om5vbmU7Ym9yZGVyLWxlZnQ6M3B4IGRvdWJsZTttYXJnaW4tdG9wOmF1dG87bWFyZ2luLWJvdHRvbTphdXRvO2hlaWdodDoxMHB4O2N1cnNvcjpldy1yZXNpemV9XCIsIFwiXCJdKTtcbi8vIEV4cG9ydHNcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cztcbiIsIi8vIEltcG9ydHNcbnZhciBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gPSByZXF1aXJlKFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKTtcbmV4cG9ydHMgPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oZmFsc2UpO1xuLy8gTW9kdWxlXG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCIucmJjLWJ0bntjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDttYXJnaW46MH1idXR0b24ucmJjLWJ0bntvdmVyZmxvdzp2aXNpYmxlO3RleHQtdHJhbnNmb3JtOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtjdXJzb3I6cG9pbnRlcn1idXR0b25bZGlzYWJsZWRdLnJiYy1idG57Y3Vyc29yOm5vdC1hbGxvd2VkfWJ1dHRvbi5yYmMtaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjA7cGFkZGluZzowfS5yYmMtY2FsZW5kYXJ7Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDoxMDAlO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6c3RyZXRjaH0ucmJjLWNhbGVuZGFyICosLnJiYy1jYWxlbmRhciAqOmJlZm9yZSwucmJjLWNhbGVuZGFyICo6YWZ0ZXJ7Ym94LXNpemluZzppbmhlcml0fS5yYmMtYWJzLWZ1bGwsLnJiYy1yb3ctYmd7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowfS5yYmMtZWxsaXBzaXMsLnJiYy1zaG93LW1vcmUsLnJiYy1yb3ctc2VnbWVudCAucmJjLWV2ZW50LWNvbnRlbnQsLnJiYy1ldmVudC1sYWJlbHtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0ucmJjLXJ0bHtkaXJlY3Rpb246cnRsfS5yYmMtb2ZmLXJhbmdle2NvbG9yOiM5OTl9LnJiYy1vZmYtcmFuZ2UtYmd7YmFja2dyb3VuZDojZTZlNmU2fS5yYmMtaGVhZGVye292ZXJmbG93OmhpZGRlbjtmbGV4OjEgMCAwJTt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDtwYWRkaW5nOjAgM3B4O3RleHQtYWxpZ246Y2VudGVyO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZTo5MCU7bWluLWhlaWdodDowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGR9LnJiYy1oZWFkZXIrLnJiYy1oZWFkZXJ7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkZGR9LnJiYy1ydGwgLnJiYy1oZWFkZXIrLnJiYy1oZWFkZXJ7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGR9LnJiYy1oZWFkZXI+YSwucmJjLWhlYWRlcj5hOmFjdGl2ZSwucmJjLWhlYWRlcj5hOnZpc2l0ZWR7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZX0ucmJjLWJ1dHRvbi1saW5re2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDpub25lO21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjt1c2VyLXNlbGVjdDp0ZXh0fS5yYmMtcm93LWNvbnRlbnR7cG9zaXRpb246cmVsYXRpdmU7dXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7ei1pbmRleDo0fS5yYmMtcm93LWNvbnRlbnQtc2Nyb2xsYWJsZXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlfS5yYmMtcm93LWNvbnRlbnQtc2Nyb2xsYWJsZSAucmJjLXJvdy1jb250ZW50LXNjcm9sbC1jb250YWluZXJ7aGVpZ2h0OjEwMCU7b3ZlcmZsb3cteTpzY3JvbGw7LW1zLW92ZXJmbG93LXN0eWxlOm5vbmU7c2Nyb2xsYmFyLXdpZHRoOm5vbmU7LW1zLW92ZXJmbG93LXN0eWxlOm5vbmU7c2Nyb2xsYmFyLXdpZHRoOm5vbmV9LnJiYy1yb3ctY29udGVudC1zY3JvbGxhYmxlIC5yYmMtcm93LWNvbnRlbnQtc2Nyb2xsLWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXJ7ZGlzcGxheTpub25lfS5yYmMtdG9kYXl7YmFja2dyb3VuZC1jb2xvcjojZWFmNmZmfS5yYmMtdG9vbGJhcntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbToxMHB4O2ZvbnQtc2l6ZToxNnB4fS5yYmMtdG9vbGJhciAucmJjLXRvb2xiYXItbGFiZWx7ZmxleC1ncm93OjE7cGFkZGluZzowIDEwcHg7dGV4dC1hbGlnbjpjZW50ZXJ9LnJiYy10b29sYmFyIGJ1dHRvbntjb2xvcjojMzczYTNjO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbjowO3RleHQtYWxpZ246Y2VudGVyO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtiYWNrZ3JvdW5kOm5vbmU7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlcjoxcHggc29saWQgI2NjYztwYWRkaW5nOi4zNzVyZW0gMXJlbTtib3JkZXItcmFkaXVzOjRweDtsaW5lLWhlaWdodDpub3JtYWw7d2hpdGUtc3BhY2U6bm93cmFwfS5yYmMtdG9vbGJhciBidXR0b246YWN0aXZlLC5yYmMtdG9vbGJhciBidXR0b24ucmJjLWFjdGl2ZXtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym94LXNoYWRvdzppbnNldCAwIDNweCA1cHggcmdiYSgwLDAsMCwuMTI1KTtiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTY7Ym9yZGVyLWNvbG9yOiNhZGFkYWR9LnJiYy10b29sYmFyIGJ1dHRvbjphY3RpdmU6aG92ZXIsLnJiYy10b29sYmFyIGJ1dHRvbjphY3RpdmU6Zm9jdXMsLnJiYy10b29sYmFyIGJ1dHRvbi5yYmMtYWN0aXZlOmhvdmVyLC5yYmMtdG9vbGJhciBidXR0b24ucmJjLWFjdGl2ZTpmb2N1c3tjb2xvcjojMzczYTNjO2JhY2tncm91bmQtY29sb3I6I2Q0ZDRkNDtib3JkZXItY29sb3I6IzhjOGM4Y30ucmJjLXRvb2xiYXIgYnV0dG9uOmZvY3Vze2NvbG9yOiMzNzNhM2M7YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2O2JvcmRlci1jb2xvcjojYWRhZGFkfS5yYmMtdG9vbGJhciBidXR0b246aG92ZXJ7Y29sb3I6IzM3M2EzYztiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTY7Ym9yZGVyLWNvbG9yOiNhZGFkYWR9LnJiYy1idG4tZ3JvdXB7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwfS5yYmMtYnRuLWdyb3VwPmJ1dHRvbjpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0ucmJjLWJ0bi1ncm91cD5idXR0b246bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5yYmMtcnRsIC5yYmMtYnRuLWdyb3VwPmJ1dHRvbjpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LnJiYy1ydGwgLnJiYy1idG4tZ3JvdXA+YnV0dG9uOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCl7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5yYmMtYnRuLWdyb3VwPmJ1dHRvbjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci1yYWRpdXM6MH0ucmJjLWJ0bi1ncm91cCBidXR0b24rYnV0dG9ue21hcmdpbi1sZWZ0Oi0xcHh9LnJiYy1ydGwgLnJiYy1idG4tZ3JvdXAgYnV0dG9uK2J1dHRvbnttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDotMXB4fS5yYmMtYnRuLWdyb3VwKy5yYmMtYnRuLWdyb3VwLC5yYmMtYnRuLWdyb3VwK2J1dHRvbnttYXJnaW4tbGVmdDoxMHB4fUBtZWRpYShtYXgtd2lkdGg6IDc2N3B4KXsucmJjLXRvb2xiYXJ7ZmxleC1kaXJlY3Rpb246Y29sdW1ufX0ucmJjLWV2ZW50LC5yYmMtZGF5LXNsb3QgLnJiYy1iYWNrZ3JvdW5kLWV2ZW50e2JvcmRlcjpub25lO2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2hhZG93Om5vbmU7bWFyZ2luOjA7cGFkZGluZzoycHggNXB4O2JhY2tncm91bmQtY29sb3I6IzMxNzRhZDtib3JkZXItcmFkaXVzOjVweDtjb2xvcjojZmZmO2N1cnNvcjpwb2ludGVyO3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpsZWZ0fS5yYmMtc2xvdC1zZWxlY3RpbmcgLnJiYy1ldmVudCwucmJjLXNsb3Qtc2VsZWN0aW5nIC5yYmMtZGF5LXNsb3QgLnJiYy1iYWNrZ3JvdW5kLWV2ZW50LC5yYmMtZGF5LXNsb3QgLnJiYy1zbG90LXNlbGVjdGluZyAucmJjLWJhY2tncm91bmQtZXZlbnR7Y3Vyc29yOmluaGVyaXQ7cG9pbnRlci1ldmVudHM6bm9uZX0ucmJjLWV2ZW50LnJiYy1zZWxlY3RlZCwucmJjLWRheS1zbG90IC5yYmMtc2VsZWN0ZWQucmJjLWJhY2tncm91bmQtZXZlbnR7YmFja2dyb3VuZC1jb2xvcjojMjY1OTg1fS5yYmMtZXZlbnQ6Zm9jdXMsLnJiYy1kYXktc2xvdCAucmJjLWJhY2tncm91bmQtZXZlbnQ6Zm9jdXN7b3V0bGluZTo1cHggYXV0byAjM2I5OWZjfS5yYmMtZXZlbnQtbGFiZWx7Zm9udC1zaXplOjgwJX0ucmJjLWV2ZW50LW92ZXJsYXBze2JveC1zaGFkb3c6LTFweCAxcHggNXB4IDBweCByZ2JhKDUxLDUxLDUxLC41KX0ucmJjLWV2ZW50LWNvbnRpbnVlcy1wcmlvcntib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5yYmMtZXZlbnQtY29udGludWVzLWFmdGVye2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0ucmJjLWV2ZW50LWNvbnRpbnVlcy1lYXJsaWVye2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5yYmMtZXZlbnQtY29udGludWVzLWxhdGVye2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5yYmMtcm93e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3d9LnJiYy1yb3ctc2VnbWVudHtwYWRkaW5nOjAgMXB4IDFweCAxcHh9LnJiYy1zZWxlY3RlZC1jZWxse2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9LnJiYy1zaG93LW1vcmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKTt6LWluZGV4OjQ7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6ODUlO2hlaWdodDphdXRvO2xpbmUtaGVpZ2h0Om5vcm1hbDtjb2xvcjojMzE3NGFkfS5yYmMtc2hvdy1tb3JlOmhvdmVyLC5yYmMtc2hvdy1tb3JlOmZvY3Vze2NvbG9yOiMyNjU5ODV9LnJiYy1tb250aC12aWV3e3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlcjoxcHggc29saWQgI2RkZDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXg6MSAwIDA7d2lkdGg6MTAwJTt1c2VyLXNlbGVjdDpub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTtoZWlnaHQ6MTAwJX0ucmJjLW1vbnRoLWhlYWRlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93fS5yYmMtbW9udGgtcm93e2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleDoxIDAgMDtmbGV4LWJhc2lzOjBweDtvdmVyZmxvdzpoaWRkZW47aGVpZ2h0OjEwMCV9LnJiYy1tb250aC1yb3crLnJiYy1tb250aC1yb3d7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZH0ucmJjLWRhdGUtY2VsbHtmbGV4OjEgMSAwO21pbi13aWR0aDowO3BhZGRpbmctcmlnaHQ6NXB4O3RleHQtYWxpZ246cmlnaHR9LnJiYy1kYXRlLWNlbGwucmJjLW5vd3tmb250LXdlaWdodDpib2xkfS5yYmMtZGF0ZS1jZWxsPmEsLnJiYy1kYXRlLWNlbGw+YTphY3RpdmUsLnJiYy1kYXRlLWNlbGw+YTp2aXNpdGVke2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnJiYy1yb3ctYmd7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4OjEgMCAwO292ZXJmbG93OmhpZGRlbn0ucmJjLWRheS1iZ3tmbGV4OjEgMCAwJX0ucmJjLWRheS1iZysucmJjLWRheS1iZ3tib3JkZXItbGVmdDoxcHggc29saWQgI2RkZH0ucmJjLXJ0bCAucmJjLWRheS1iZysucmJjLWRheS1iZ3tib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZH0ucmJjLW92ZXJsYXl7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo1O2JvcmRlcjoxcHggc29saWQgI2U1ZTVlNTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym94LXNoYWRvdzowIDVweCAxNXB4IHJnYmEoMCwwLDAsLjI1KTtwYWRkaW5nOjEwcHh9LnJiYy1vdmVybGF5PiorKnttYXJnaW4tdG9wOjFweH0ucmJjLW92ZXJsYXktaGVhZGVye2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNWU1ZTU7bWFyZ2luOi0xMHB4IC0xMHB4IDVweCAtMTBweDtwYWRkaW5nOjJweCAxMHB4fS5yYmMtYWdlbmRhLXZpZXd7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4OjEgMCAwO292ZXJmbG93OmF1dG99LnJiYy1hZ2VuZGEtdmlldyB0YWJsZS5yYmMtYWdlbmRhLXRhYmxle3dpZHRoOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JvcmRlci1zcGFjaW5nOjA7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfS5yYmMtYWdlbmRhLXZpZXcgdGFibGUucmJjLWFnZW5kYS10YWJsZSB0Ym9keT50cj50ZHtwYWRkaW5nOjVweCAxMHB4O3ZlcnRpY2FsLWFsaWduOnRvcH0ucmJjLWFnZW5kYS12aWV3IHRhYmxlLnJiYy1hZ2VuZGEtdGFibGUgLnJiYy1hZ2VuZGEtdGltZS1jZWxse3BhZGRpbmctbGVmdDoxNXB4O3BhZGRpbmctcmlnaHQ6MTVweDt0ZXh0LXRyYW5zZm9ybTpsb3dlcmNhc2V9LnJiYy1hZ2VuZGEtdmlldyB0YWJsZS5yYmMtYWdlbmRhLXRhYmxlIHRib2R5PnRyPnRkK3Rke2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZGRkfS5yYmMtcnRsIC5yYmMtYWdlbmRhLXZpZXcgdGFibGUucmJjLWFnZW5kYS10YWJsZSB0Ym9keT50cj50ZCt0ZHtib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZH0ucmJjLWFnZW5kYS12aWV3IHRhYmxlLnJiYy1hZ2VuZGEtdGFibGUgdGJvZHk+dHIrdHJ7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZH0ucmJjLWFnZW5kYS12aWV3IHRhYmxlLnJiYy1hZ2VuZGEtdGFibGUgdGhlYWQ+dHI+dGh7cGFkZGluZzozcHggNXB4O3RleHQtYWxpZ246bGVmdDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkfS5yYmMtcnRsIC5yYmMtYWdlbmRhLXZpZXcgdGFibGUucmJjLWFnZW5kYS10YWJsZSB0aGVhZD50cj50aHt0ZXh0LWFsaWduOnJpZ2h0fS5yYmMtYWdlbmRhLXRpbWUtY2VsbHt0ZXh0LXRyYW5zZm9ybTpsb3dlcmNhc2V9LnJiYy1hZ2VuZGEtdGltZS1jZWxsIC5yYmMtY29udGludWVzLWFmdGVyOmFmdGVye2NvbnRlbnQ6XFxcIiDCu1xcXCJ9LnJiYy1hZ2VuZGEtdGltZS1jZWxsIC5yYmMtY29udGludWVzLXByaW9yOmJlZm9yZXtjb250ZW50OlxcXCLCqyBcXFwifS5yYmMtYWdlbmRhLWRhdGUtY2VsbCwucmJjLWFnZW5kYS10aW1lLWNlbGx7d2hpdGUtc3BhY2U6bm93cmFwfS5yYmMtYWdlbmRhLWV2ZW50LWNlbGx7d2lkdGg6MTAwJX0ucmJjLXRpbWUtY29sdW1ue2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLWhlaWdodDoxMDAlfS5yYmMtdGltZS1jb2x1bW4gLnJiYy10aW1lc2xvdC1ncm91cHtmbGV4OjF9LnJiYy10aW1lc2xvdC1ncm91cHtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkO21pbi1oZWlnaHQ6NDBweDtkaXNwbGF5OmZsZXg7ZmxleC1mbG93OmNvbHVtbiBub3dyYXB9LnJiYy10aW1lLWd1dHRlciwucmJjLWhlYWRlci1ndXR0ZXJ7ZmxleDpub25lfS5yYmMtbGFiZWx7cGFkZGluZzowIDVweH0ucmJjLWRheS1zbG90e3Bvc2l0aW9uOnJlbGF0aXZlfS5yYmMtZGF5LXNsb3QgLnJiYy1ldmVudHMtY29udGFpbmVye2JvdHRvbTowO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO21hcmdpbi1yaWdodDoxMHB4O3RvcDowfS5yYmMtZGF5LXNsb3QgLnJiYy1ldmVudHMtY29udGFpbmVyLnJiYy1ydGx7bGVmdDoxMHB4O3JpZ2h0OjB9LnJiYy1kYXktc2xvdCAucmJjLWV2ZW50LC5yYmMtZGF5LXNsb3QgLnJiYy1iYWNrZ3JvdW5kLWV2ZW50e2JvcmRlcjoxcHggc29saWQgIzI2NTk4NTtkaXNwbGF5OmZsZXg7bWF4LWhlaWdodDoxMDAlO21pbi1oZWlnaHQ6MjBweDtmbGV4LWZsb3c6Y29sdW1uIHdyYXA7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGV9LnJiYy1kYXktc2xvdCAucmJjLWJhY2tncm91bmQtZXZlbnR7b3BhY2l0eTouNzV9LnJiYy1kYXktc2xvdCAucmJjLWV2ZW50LWxhYmVse2ZsZXg6bm9uZTtwYWRkaW5nLXJpZ2h0OjVweDt3aWR0aDphdXRvfS5yYmMtZGF5LXNsb3QgLnJiYy1ldmVudC1jb250ZW50e3dpZHRoOjEwMCU7ZmxleDoxIDEgMDt3b3JkLXdyYXA6YnJlYWstd29yZDtsaW5lLWhlaWdodDoxO2hlaWdodDoxMDAlO21pbi1oZWlnaHQ6MWVtfS5yYmMtZGF5LXNsb3QgLnJiYy10aW1lLXNsb3R7Ym9yZGVyLXRvcDoxcHggc29saWQgI2Y3ZjdmN30ucmJjLXRpbWUtdmlldy1yZXNvdXJjZXMgLnJiYy10aW1lLWd1dHRlciwucmJjLXRpbWUtdmlldy1yZXNvdXJjZXMgLnJiYy10aW1lLWhlYWRlci1ndXR0ZXJ7cG9zaXRpb246c3RpY2t5O2xlZnQ6MDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkO3otaW5kZXg6MTA7bWFyZ2luLXJpZ2h0Oi0xcHh9LnJiYy10aW1lLXZpZXctcmVzb3VyY2VzIC5yYmMtdGltZS1oZWFkZXJ7b3ZlcmZsb3c6aGlkZGVufS5yYmMtdGltZS12aWV3LXJlc291cmNlcyAucmJjLXRpbWUtaGVhZGVyLWNvbnRlbnR7bWluLXdpZHRoOmF1dG87ZmxleDoxIDAgMDtmbGV4LWJhc2lzOjBweH0ucmJjLXRpbWUtdmlldy1yZXNvdXJjZXMgLnJiYy10aW1lLWhlYWRlci1jZWxsLXNpbmdsZS1kYXl7ZGlzcGxheTpub25lfS5yYmMtdGltZS12aWV3LXJlc291cmNlcyAucmJjLWRheS1zbG90e21pbi13aWR0aDoxNDBweH0ucmJjLXRpbWUtdmlldy1yZXNvdXJjZXMgLnJiYy1oZWFkZXIsLnJiYy10aW1lLXZpZXctcmVzb3VyY2VzIC5yYmMtZGF5LWJne3dpZHRoOjE0MHB4O2ZsZXg6MSAxIDA7ZmxleC1iYXNpczowIHB4fS5yYmMtdGltZS1oZWFkZXItY29udGVudCsucmJjLXRpbWUtaGVhZGVyLWNvbnRlbnR7bWFyZ2luLWxlZnQ6LTFweH0ucmJjLXRpbWUtc2xvdHtmbGV4OjEgMCAwfS5yYmMtdGltZS1zbG90LnJiYy1ub3d7Zm9udC13ZWlnaHQ6Ym9sZH0ucmJjLWRheS1oZWFkZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LnJiYy1zbG90LXNlbGVjdGlvbnt6LWluZGV4OjEwO3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNSk7Y29sb3I6I2ZmZjtmb250LXNpemU6NzUlO3dpZHRoOjEwMCU7cGFkZGluZzozcHh9LnJiYy1zbG90LXNlbGVjdGluZ3tjdXJzb3I6bW92ZX0ucmJjLXRpbWUtdmlld3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXg6MTt3aWR0aDoxMDAlO2JvcmRlcjoxcHggc29saWQgI2RkZDttaW4taGVpZ2h0OjB9LnJiYy10aW1lLXZpZXcgLnJiYy10aW1lLWd1dHRlcnt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1hbGlnbjpyaWdodH0ucmJjLXRpbWUtdmlldyAucmJjLWFsbGRheS1jZWxse2JveC1zaXppbmc6Y29udGVudC1ib3g7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZX0ucmJjLXRpbWUtdmlldyAucmJjLWFsbGRheS1jZWxsKy5yYmMtYWxsZGF5LWNlbGx7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkZGR9LnJiYy10aW1lLXZpZXcgLnJiYy1hbGxkYXktZXZlbnRze3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6NH0ucmJjLXRpbWUtdmlldyAucmJjLXJvd3tib3gtc2l6aW5nOmJvcmRlci1ib3g7bWluLWhlaWdodDoyMHB4fS5yYmMtdGltZS1oZWFkZXJ7ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIGF1dG87ZmxleC1kaXJlY3Rpb246cm93fS5yYmMtdGltZS1oZWFkZXIucmJjLW92ZXJmbG93aW5ne2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZH0ucmJjLXJ0bCAucmJjLXRpbWUtaGVhZGVyLnJiYy1vdmVyZmxvd2luZ3tib3JkZXItcmlnaHQtd2lkdGg6MDtib3JkZXItbGVmdDoxcHggc29saWQgI2RkZH0ucmJjLXRpbWUtaGVhZGVyPi5yYmMtcm93OmZpcnN0LWNoaWxke2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGR9LnJiYy10aW1lLWhlYWRlcj4ucmJjLXJvdy5yYmMtcm93LXJlc291cmNle2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGR9LnJiYy10aW1lLWhlYWRlci1jZWxsLXNpbmdsZS1kYXl7ZGlzcGxheTpub25lfS5yYmMtdGltZS1oZWFkZXItY29udGVudHtmbGV4OjE7ZGlzcGxheTpmbGV4O21pbi13aWR0aDowO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3JkZXItbGVmdDoxcHggc29saWQgI2RkZH0ucmJjLXJ0bCAucmJjLXRpbWUtaGVhZGVyLWNvbnRlbnR7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGR9LnJiYy10aW1lLWhlYWRlci1jb250ZW50Pi5yYmMtcm93LnJiYy1yb3ctcmVzb3VyY2V7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZDtmbGV4LXNocmluazowfS5yYmMtdGltZS1jb250ZW50e2Rpc3BsYXk6ZmxleDtmbGV4OjEgMCAwJTthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O3dpZHRoOjEwMCU7Ym9yZGVyLXRvcDoycHggc29saWQgI2RkZDtvdmVyZmxvdy15OmF1dG87cG9zaXRpb246cmVsYXRpdmV9LnJiYy10aW1lLWNvbnRlbnQ+LnJiYy10aW1lLWd1dHRlcntmbGV4Om5vbmV9LnJiYy10aW1lLWNvbnRlbnQ+KisqPip7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkZGR9LnJiYy1ydGwgLnJiYy10aW1lLWNvbnRlbnQ+KisqPip7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGR9LnJiYy10aW1lLWNvbnRlbnQ+LnJiYy1kYXktc2xvdHt3aWR0aDoxMDAlO3VzZXItc2VsZWN0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lfS5yYmMtY3VycmVudC10aW1lLWluZGljYXRvcntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjM7bGVmdDowO3JpZ2h0OjA7aGVpZ2h0OjFweDtiYWNrZ3JvdW5kLWNvbG9yOiM3NGFkMzE7cG9pbnRlci1ldmVudHM6bm9uZX1cIiwgXCJcIl0pO1xuLy8gRXhwb3J0c1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzO1xuIiwiLy8gSW1wb3J0c1xudmFyIF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyA9IHJlcXVpcmUoXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpO1xuZXhwb3J0cyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhmYWxzZSk7XG4vLyBNb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5leGFtcGxlcy0tY3VzdG9tLXRvb2xiYXIgYnV0dG9ue2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MXJlbX1cIiwgXCJcIl0pO1xuLy8gRXhwb3J0c1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzO1xuIiwiLy8gSW1wb3J0c1xudmFyIF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyA9IHJlcXVpcmUoXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpO1xuZXhwb3J0cyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhmYWxzZSk7XG4vLyBNb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5yYmMtYnRue2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O21hcmdpbjowfWJ1dHRvbi5yYmMtYnRue292ZXJmbG93OnZpc2libGU7dGV4dC10cmFuc2Zvcm06bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uO2N1cnNvcjpwb2ludGVyfWJ1dHRvbltkaXNhYmxlZF0ucmJjLWJ0bntjdXJzb3I6bm90LWFsbG93ZWR9YnV0dG9uLnJiYy1pbnB1dDo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MDtwYWRkaW5nOjB9LnJiYy1jYWxlbmRhcntib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpzdHJldGNofS5yYmMtY2FsZW5kYXIgKiwucmJjLWNhbGVuZGFyICo6YmVmb3JlLC5yYmMtY2FsZW5kYXIgKjphZnRlcntib3gtc2l6aW5nOmluaGVyaXR9LnJiYy1hYnMtZnVsbCwucmJjLXJvdy1iZ3tvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjB9LnJiYy1lbGxpcHNpcywucmJjLXNob3ctbW9yZSwucmJjLXJvdy1zZWdtZW50IC5yYmMtZXZlbnQtY29udGVudCwucmJjLWV2ZW50LWxhYmVse2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5yYmMtcnRse2RpcmVjdGlvbjpydGx9LnJiYy1vZmYtcmFuZ2V7Y29sb3I6Izk5OX0ucmJjLW9mZi1yYW5nZS1iZ3tiYWNrZ3JvdW5kOiNlNmU2ZTZ9LnJiYy1oZWFkZXJ7b3ZlcmZsb3c6aGlkZGVuO2ZsZXg6MSAwIDAlO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO3BhZGRpbmc6MCAzcHg7dGV4dC1hbGlnbjpjZW50ZXI7dmVydGljYWwtYWxpZ246bWlkZGxlO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjkwJTttaW4taGVpZ2h0OjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZH0ucmJjLWhlYWRlcisucmJjLWhlYWRlcntib3JkZXItbGVmdDoxcHggc29saWQgI2RkZH0ucmJjLXJ0bCAucmJjLWhlYWRlcisucmJjLWhlYWRlcntib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZH0ucmJjLWhlYWRlcj5hLC5yYmMtaGVhZGVyPmE6YWN0aXZlLC5yYmMtaGVhZGVyPmE6dmlzaXRlZHtjb2xvcjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjpub25lfS5yYmMtYnV0dG9uLWxpbmt7Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO3VzZXItc2VsZWN0OnRleHR9LnJiYy1yb3ctY29udGVudHtwb3NpdGlvbjpyZWxhdGl2ZTt1c2VyLXNlbGVjdDpub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt6LWluZGV4OjR9LnJiYy1yb3ctY29udGVudC1zY3JvbGxhYmxle2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCV9LnJiYy1yb3ctY29udGVudC1zY3JvbGxhYmxlIC5yYmMtcm93LWNvbnRlbnQtc2Nyb2xsLWNvbnRhaW5lcntoZWlnaHQ6MTAwJTtvdmVyZmxvdy15OnNjcm9sbDstbXMtb3ZlcmZsb3ctc3R5bGU6bm9uZTtzY3JvbGxiYXItd2lkdGg6bm9uZTstbXMtb3ZlcmZsb3ctc3R5bGU6bm9uZTtzY3JvbGxiYXItd2lkdGg6bm9uZX0ucmJjLXJvdy1jb250ZW50LXNjcm9sbGFibGUgLnJiYy1yb3ctY29udGVudC1zY3JvbGwtY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhcntkaXNwbGF5Om5vbmV9LnJiYy10b2RheXtiYWNrZ3JvdW5kLWNvbG9yOiNlYWY2ZmZ9LnJiYy10b29sYmFye2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW4tYm90dG9tOjEwcHg7Zm9udC1zaXplOjE2cHh9LnJiYy10b29sYmFyIC5yYmMtdG9vbGJhci1sYWJlbHtmbGV4LWdyb3c6MTtwYWRkaW5nOjAgMTBweDt0ZXh0LWFsaWduOmNlbnRlcn0ucmJjLXRvb2xiYXIgYnV0dG9ue2NvbG9yOiMzNzNhM2M7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOjA7dGV4dC1hbGlnbjpjZW50ZXI7dmVydGljYWwtYWxpZ246bWlkZGxlO2JhY2tncm91bmQ6bm9uZTtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO3BhZGRpbmc6LjM3NXJlbSAxcmVtO2JvcmRlci1yYWRpdXM6NHB4O2xpbmUtaGVpZ2h0Om5vcm1hbDt3aGl0ZS1zcGFjZTpub3dyYXB9LnJiYy10b29sYmFyIGJ1dHRvbjphY3RpdmUsLnJiYy10b29sYmFyIGJ1dHRvbi5yYmMtYWN0aXZle2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3gtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsMCwwLC4xMjUpO2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNjtib3JkZXItY29sb3I6I2FkYWRhZH0ucmJjLXRvb2xiYXIgYnV0dG9uOmFjdGl2ZTpob3ZlciwucmJjLXRvb2xiYXIgYnV0dG9uOmFjdGl2ZTpmb2N1cywucmJjLXRvb2xiYXIgYnV0dG9uLnJiYy1hY3RpdmU6aG92ZXIsLnJiYy10b29sYmFyIGJ1dHRvbi5yYmMtYWN0aXZlOmZvY3Vze2NvbG9yOiMzNzNhM2M7YmFja2dyb3VuZC1jb2xvcjojZDRkNGQ0O2JvcmRlci1jb2xvcjojOGM4YzhjfS5yYmMtdG9vbGJhciBidXR0b246Zm9jdXN7Y29sb3I6IzM3M2EzYztiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTY7Ym9yZGVyLWNvbG9yOiNhZGFkYWR9LnJiYy10b29sYmFyIGJ1dHRvbjpob3Zlcntjb2xvcjojMzczYTNjO2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNjtib3JkZXItY29sb3I6I2FkYWRhZH0ucmJjLWJ0bi1ncm91cHtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXB9LnJiYy1idG4tZ3JvdXA+YnV0dG9uOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5yYmMtYnRuLWdyb3VwPmJ1dHRvbjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LnJiYy1ydGwgLnJiYy1idG4tZ3JvdXA+YnV0dG9uOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0ucmJjLXJ0bCAucmJjLWJ0bi1ncm91cD5idXR0b246bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItcmFkaXVzOjRweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LnJiYy1idG4tZ3JvdXA+YnV0dG9uOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXJhZGl1czowfS5yYmMtYnRuLWdyb3VwIGJ1dHRvbitidXR0b257bWFyZ2luLWxlZnQ6LTFweH0ucmJjLXJ0bCAucmJjLWJ0bi1ncm91cCBidXR0b24rYnV0dG9ue21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0Oi0xcHh9LnJiYy1idG4tZ3JvdXArLnJiYy1idG4tZ3JvdXAsLnJiYy1idG4tZ3JvdXArYnV0dG9ue21hcmdpbi1sZWZ0OjEwcHh9QG1lZGlhKG1heC13aWR0aDogNzY3cHgpey5yYmMtdG9vbGJhcntmbGV4LWRpcmVjdGlvbjpjb2x1bW59fS5yYmMtZXZlbnQsLnJiYy1kYXktc2xvdCAucmJjLWJhY2tncm91bmQtZXZlbnR7Ym9yZGVyOm5vbmU7Ym94LXNpemluZzpib3JkZXItYm94O2JveC1zaGFkb3c6bm9uZTttYXJnaW46MDtwYWRkaW5nOjJweCA1cHg7YmFja2dyb3VuZC1jb2xvcjojMzE3NGFkO2JvcmRlci1yYWRpdXM6NXB4O2NvbG9yOiNmZmY7Y3Vyc29yOnBvaW50ZXI7d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmxlZnR9LnJiYy1zbG90LXNlbGVjdGluZyAucmJjLWV2ZW50LC5yYmMtc2xvdC1zZWxlY3RpbmcgLnJiYy1kYXktc2xvdCAucmJjLWJhY2tncm91bmQtZXZlbnQsLnJiYy1kYXktc2xvdCAucmJjLXNsb3Qtc2VsZWN0aW5nIC5yYmMtYmFja2dyb3VuZC1ldmVudHtjdXJzb3I6aW5oZXJpdDtwb2ludGVyLWV2ZW50czpub25lfS5yYmMtZXZlbnQucmJjLXNlbGVjdGVkLC5yYmMtZGF5LXNsb3QgLnJiYy1zZWxlY3RlZC5yYmMtYmFja2dyb3VuZC1ldmVudHtiYWNrZ3JvdW5kLWNvbG9yOiMyNjU5ODV9LnJiYy1ldmVudDpmb2N1cywucmJjLWRheS1zbG90IC5yYmMtYmFja2dyb3VuZC1ldmVudDpmb2N1c3tvdXRsaW5lOjVweCBhdXRvICMzYjk5ZmN9LnJiYy1ldmVudC1sYWJlbHtmb250LXNpemU6ODAlfS5yYmMtZXZlbnQtb3ZlcmxhcHN7Ym94LXNoYWRvdzotMXB4IDFweCA1cHggMHB4IHJnYmEoNTEsNTEsNTEsLjUpfS5yYmMtZXZlbnQtY29udGludWVzLXByaW9ye2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LnJiYy1ldmVudC1jb250aW51ZXMtYWZ0ZXJ7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5yYmMtZXZlbnQtY29udGludWVzLWVhcmxpZXJ7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9LnJiYy1ldmVudC1jb250aW51ZXMtbGF0ZXJ7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LnJiYy1yb3d7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvd30ucmJjLXJvdy1zZWdtZW50e3BhZGRpbmc6MCAxcHggMXB4IDFweH0ucmJjLXNlbGVjdGVkLWNlbGx7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xKX0ucmJjLXNob3ctbW9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjMpO3otaW5kZXg6NDtmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZTo4NSU7aGVpZ2h0OmF1dG87bGluZS1oZWlnaHQ6bm9ybWFsO2NvbG9yOiMzMTc0YWR9LnJiYy1zaG93LW1vcmU6aG92ZXIsLnJiYy1zaG93LW1vcmU6Zm9jdXN7Y29sb3I6IzI2NTk4NX0ucmJjLW1vbnRoLXZpZXd7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleDoxIDAgMDt3aWR0aDoxMDAlO3VzZXItc2VsZWN0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO2hlaWdodDoxMDAlfS5yYmMtbW9udGgtaGVhZGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3d9LnJiYy1tb250aC1yb3d7ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4OjEgMCAwO2ZsZXgtYmFzaXM6MHB4O292ZXJmbG93OmhpZGRlbjtoZWlnaHQ6MTAwJX0ucmJjLW1vbnRoLXJvdysucmJjLW1vbnRoLXJvd3tib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkfS5yYmMtZGF0ZS1jZWxse2ZsZXg6MSAxIDA7bWluLXdpZHRoOjA7cGFkZGluZy1yaWdodDo1cHg7dGV4dC1hbGlnbjpyaWdodH0ucmJjLWRhdGUtY2VsbC5yYmMtbm93e2ZvbnQtd2VpZ2h0OmJvbGR9LnJiYy1kYXRlLWNlbGw+YSwucmJjLWRhdGUtY2VsbD5hOmFjdGl2ZSwucmJjLWRhdGUtY2VsbD5hOnZpc2l0ZWR7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZX0ucmJjLXJvdy1iZ3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXg6MSAwIDA7b3ZlcmZsb3c6aGlkZGVufS5yYmMtZGF5LWJne2ZsZXg6MSAwIDAlfS5yYmMtZGF5LWJnKy5yYmMtZGF5LWJne2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZGRkfS5yYmMtcnRsIC5yYmMtZGF5LWJnKy5yYmMtZGF5LWJne2JvcmRlci1sZWZ0LXdpZHRoOjA7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkfS5yYmMtb3ZlcmxheXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjU7Ym9yZGVyOjFweCBzb2xpZCAjZTVlNWU1O2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3gtc2hhZG93OjAgNXB4IDE1cHggcmdiYSgwLDAsMCwuMjUpO3BhZGRpbmc6MTBweH0ucmJjLW92ZXJsYXk+Kisqe21hcmdpbi10b3A6MXB4fS5yYmMtb3ZlcmxheS1oZWFkZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2U1ZTVlNTttYXJnaW46LTEwcHggLTEwcHggNXB4IC0xMHB4O3BhZGRpbmc6MnB4IDEwcHh9LnJiYy1hZ2VuZGEtdmlld3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXg6MSAwIDA7b3ZlcmZsb3c6YXV0b30ucmJjLWFnZW5kYS12aWV3IHRhYmxlLnJiYy1hZ2VuZGEtdGFibGV7d2lkdGg6MTAwJTtib3JkZXI6MXB4IHNvbGlkICNkZGQ7Ym9yZGVyLXNwYWNpbmc6MDtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9LnJiYy1hZ2VuZGEtdmlldyB0YWJsZS5yYmMtYWdlbmRhLXRhYmxlIHRib2R5PnRyPnRke3BhZGRpbmc6NXB4IDEwcHg7dmVydGljYWwtYWxpZ246dG9wfS5yYmMtYWdlbmRhLXZpZXcgdGFibGUucmJjLWFnZW5kYS10YWJsZSAucmJjLWFnZW5kYS10aW1lLWNlbGx7cGFkZGluZy1sZWZ0OjE1cHg7cGFkZGluZy1yaWdodDoxNXB4O3RleHQtdHJhbnNmb3JtOmxvd2VyY2FzZX0ucmJjLWFnZW5kYS12aWV3IHRhYmxlLnJiYy1hZ2VuZGEtdGFibGUgdGJvZHk+dHI+dGQrdGR7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkZGR9LnJiYy1ydGwgLnJiYy1hZ2VuZGEtdmlldyB0YWJsZS5yYmMtYWdlbmRhLXRhYmxlIHRib2R5PnRyPnRkK3Rke2JvcmRlci1sZWZ0LXdpZHRoOjA7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkfS5yYmMtYWdlbmRhLXZpZXcgdGFibGUucmJjLWFnZW5kYS10YWJsZSB0Ym9keT50cit0cntib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkfS5yYmMtYWdlbmRhLXZpZXcgdGFibGUucmJjLWFnZW5kYS10YWJsZSB0aGVhZD50cj50aHtwYWRkaW5nOjNweCA1cHg7dGV4dC1hbGlnbjpsZWZ0O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGR9LnJiYy1ydGwgLnJiYy1hZ2VuZGEtdmlldyB0YWJsZS5yYmMtYWdlbmRhLXRhYmxlIHRoZWFkPnRyPnRoe3RleHQtYWxpZ246cmlnaHR9LnJiYy1hZ2VuZGEtdGltZS1jZWxse3RleHQtdHJhbnNmb3JtOmxvd2VyY2FzZX0ucmJjLWFnZW5kYS10aW1lLWNlbGwgLnJiYy1jb250aW51ZXMtYWZ0ZXI6YWZ0ZXJ7Y29udGVudDpcXFwiIMK7XFxcIn0ucmJjLWFnZW5kYS10aW1lLWNlbGwgLnJiYy1jb250aW51ZXMtcHJpb3I6YmVmb3Jle2NvbnRlbnQ6XFxcIsKrIFxcXCJ9LnJiYy1hZ2VuZGEtZGF0ZS1jZWxsLC5yYmMtYWdlbmRhLXRpbWUtY2VsbHt3aGl0ZS1zcGFjZTpub3dyYXB9LnJiYy1hZ2VuZGEtZXZlbnQtY2VsbHt3aWR0aDoxMDAlfS5yYmMtdGltZS1jb2x1bW57ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4taGVpZ2h0OjEwMCV9LnJiYy10aW1lLWNvbHVtbiAucmJjLXRpbWVzbG90LWdyb3Vwe2ZsZXg6MX0ucmJjLXRpbWVzbG90LWdyb3Vwe2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGQ7bWluLWhlaWdodDo0MHB4O2Rpc3BsYXk6ZmxleDtmbGV4LWZsb3c6Y29sdW1uIG5vd3JhcH0ucmJjLXRpbWUtZ3V0dGVyLC5yYmMtaGVhZGVyLWd1dHRlcntmbGV4Om5vbmV9LnJiYy1sYWJlbHtwYWRkaW5nOjAgNXB4fS5yYmMtZGF5LXNsb3R7cG9zaXRpb246cmVsYXRpdmV9LnJiYy1kYXktc2xvdCAucmJjLWV2ZW50cy1jb250YWluZXJ7Ym90dG9tOjA7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7bWFyZ2luLXJpZ2h0OjEwcHg7dG9wOjB9LnJiYy1kYXktc2xvdCAucmJjLWV2ZW50cy1jb250YWluZXIucmJjLXJ0bHtsZWZ0OjEwcHg7cmlnaHQ6MH0ucmJjLWRheS1zbG90IC5yYmMtZXZlbnQsLnJiYy1kYXktc2xvdCAucmJjLWJhY2tncm91bmQtZXZlbnR7Ym9yZGVyOjFweCBzb2xpZCAjMjY1OTg1O2Rpc3BsYXk6ZmxleDttYXgtaGVpZ2h0OjEwMCU7bWluLWhlaWdodDoyMHB4O2ZsZXgtZmxvdzpjb2x1bW4gd3JhcDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZX0ucmJjLWRheS1zbG90IC5yYmMtYmFja2dyb3VuZC1ldmVudHtvcGFjaXR5Oi43NX0ucmJjLWRheS1zbG90IC5yYmMtZXZlbnQtbGFiZWx7ZmxleDpub25lO3BhZGRpbmctcmlnaHQ6NXB4O3dpZHRoOmF1dG99LnJiYy1kYXktc2xvdCAucmJjLWV2ZW50LWNvbnRlbnR7d2lkdGg6MTAwJTtmbGV4OjEgMSAwO3dvcmQtd3JhcDpicmVhay13b3JkO2xpbmUtaGVpZ2h0OjE7aGVpZ2h0OjEwMCU7bWluLWhlaWdodDoxZW19LnJiYy1kYXktc2xvdCAucmJjLXRpbWUtc2xvdHtib3JkZXItdG9wOjFweCBzb2xpZCAjZjdmN2Y3fS5yYmMtdGltZS12aWV3LXJlc291cmNlcyAucmJjLXRpbWUtZ3V0dGVyLC5yYmMtdGltZS12aWV3LXJlc291cmNlcyAucmJjLXRpbWUtaGVhZGVyLWd1dHRlcntwb3NpdGlvbjpzdGlja3k7bGVmdDowO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGQ7ei1pbmRleDoxMDttYXJnaW4tcmlnaHQ6LTFweH0ucmJjLXRpbWUtdmlldy1yZXNvdXJjZXMgLnJiYy10aW1lLWhlYWRlcntvdmVyZmxvdzpoaWRkZW59LnJiYy10aW1lLXZpZXctcmVzb3VyY2VzIC5yYmMtdGltZS1oZWFkZXItY29udGVudHttaW4td2lkdGg6YXV0bztmbGV4OjEgMCAwO2ZsZXgtYmFzaXM6MHB4fS5yYmMtdGltZS12aWV3LXJlc291cmNlcyAucmJjLXRpbWUtaGVhZGVyLWNlbGwtc2luZ2xlLWRheXtkaXNwbGF5Om5vbmV9LnJiYy10aW1lLXZpZXctcmVzb3VyY2VzIC5yYmMtZGF5LXNsb3R7bWluLXdpZHRoOjE0MHB4fS5yYmMtdGltZS12aWV3LXJlc291cmNlcyAucmJjLWhlYWRlciwucmJjLXRpbWUtdmlldy1yZXNvdXJjZXMgLnJiYy1kYXktYmd7d2lkdGg6MTQwcHg7ZmxleDoxIDEgMDtmbGV4LWJhc2lzOjAgcHh9LnJiYy10aW1lLWhlYWRlci1jb250ZW50Ky5yYmMtdGltZS1oZWFkZXItY29udGVudHttYXJnaW4tbGVmdDotMXB4fS5yYmMtdGltZS1zbG90e2ZsZXg6MSAwIDB9LnJiYy10aW1lLXNsb3QucmJjLW5vd3tmb250LXdlaWdodDpib2xkfS5yYmMtZGF5LWhlYWRlcnt0ZXh0LWFsaWduOmNlbnRlcn0ucmJjLXNsb3Qtc2VsZWN0aW9ue3otaW5kZXg6MTA7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC41KTtjb2xvcjojZmZmO2ZvbnQtc2l6ZTo3NSU7d2lkdGg6MTAwJTtwYWRkaW5nOjNweH0ucmJjLXNsb3Qtc2VsZWN0aW5ne2N1cnNvcjptb3ZlfS5yYmMtdGltZS12aWV3e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleDoxO3dpZHRoOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO21pbi1oZWlnaHQ6MH0ucmJjLXRpbWUtdmlldyAucmJjLXRpbWUtZ3V0dGVye3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWFsaWduOnJpZ2h0fS5yYmMtdGltZS12aWV3IC5yYmMtYWxsZGF5LWNlbGx7Ym94LXNpemluZzpjb250ZW50LWJveDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlfS5yYmMtdGltZS12aWV3IC5yYmMtYWxsZGF5LWNlbGwrLnJiYy1hbGxkYXktY2VsbHtib3JkZXItbGVmdDoxcHggc29saWQgI2RkZH0ucmJjLXRpbWUtdmlldyAucmJjLWFsbGRheS1ldmVudHN7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDo0fS5yYmMtdGltZS12aWV3IC5yYmMtcm93e2JveC1zaXppbmc6Ym9yZGVyLWJveDttaW4taGVpZ2h0OjIwcHh9LnJiYy10aW1lLWhlYWRlcntkaXNwbGF5OmZsZXg7ZmxleDowIDAgYXV0bztmbGV4LWRpcmVjdGlvbjpyb3d9LnJiYy10aW1lLWhlYWRlci5yYmMtb3ZlcmZsb3dpbmd7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkfS5yYmMtcnRsIC5yYmMtdGltZS1oZWFkZXIucmJjLW92ZXJmbG93aW5ne2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZGRkfS5yYmMtdGltZS1oZWFkZXI+LnJiYy1yb3c6Zmlyc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZH0ucmJjLXRpbWUtaGVhZGVyPi5yYmMtcm93LnJiYy1yb3ctcmVzb3VyY2V7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZH0ucmJjLXRpbWUtaGVhZGVyLWNlbGwtc2luZ2xlLWRheXtkaXNwbGF5Om5vbmV9LnJiYy10aW1lLWhlYWRlci1jb250ZW50e2ZsZXg6MTtkaXNwbGF5OmZsZXg7bWluLXdpZHRoOjA7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZGRkfS5yYmMtcnRsIC5yYmMtdGltZS1oZWFkZXItY29udGVudHtib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZH0ucmJjLXRpbWUtaGVhZGVyLWNvbnRlbnQ+LnJiYy1yb3cucmJjLXJvdy1yZXNvdXJjZXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkO2ZsZXgtc2hyaW5rOjB9LnJiYy10aW1lLWNvbnRlbnR7ZGlzcGxheTpmbGV4O2ZsZXg6MSAwIDAlO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7d2lkdGg6MTAwJTtib3JkZXItdG9wOjJweCBzb2xpZCAjZGRkO292ZXJmbG93LXk6YXV0bztwb3NpdGlvbjpyZWxhdGl2ZX0ucmJjLXRpbWUtY29udGVudD4ucmJjLXRpbWUtZ3V0dGVye2ZsZXg6bm9uZX0ucmJjLXRpbWUtY29udGVudD4qKyo+Kntib3JkZXItbGVmdDoxcHggc29saWQgI2RkZH0ucmJjLXJ0bCAucmJjLXRpbWUtY29udGVudD4qKyo+Kntib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZH0ucmJjLXRpbWUtY29udGVudD4ucmJjLWRheS1zbG90e3dpZHRoOjEwMCU7dXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmV9LnJiYy1jdXJyZW50LXRpbWUtaW5kaWNhdG9ye3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MztsZWZ0OjA7cmlnaHQ6MDtoZWlnaHQ6MXB4O2JhY2tncm91bmQtY29sb3I6Izc0YWQzMTtwb2ludGVyLWV2ZW50czpub25lfS5yYmMtYWRkb25zLWRuZCAucmJjLWFkZG9ucy1kbmQtcm93LWJvZHl7cG9zaXRpb246cmVsYXRpdmV9LnJiYy1hZGRvbnMtZG5kIC5yYmMtYWRkb25zLWRuZC1kcmFnLXJvd3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MH0ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLW92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zKX0ucmJjLWFkZG9ucy1kbmQgLnJiYy1ldmVudCwucmJjLWFkZG9ucy1kbmQgLnJiYy1kYXktc2xvdCAucmJjLWJhY2tncm91bmQtZXZlbnQsLnJiYy1kYXktc2xvdCAucmJjLWFkZG9ucy1kbmQgLnJiYy1iYWNrZ3JvdW5kLWV2ZW50e3RyYW5zaXRpb246b3BhY2l0eSAxNTBtc30ucmJjLWFkZG9ucy1kbmQgLnJiYy1ldmVudDpob3ZlciAucmJjLWFkZG9ucy1kbmQtcmVzaXplLW5zLWljb24sLnJiYy1hZGRvbnMtZG5kIC5yYmMtZGF5LXNsb3QgLnJiYy1iYWNrZ3JvdW5kLWV2ZW50OmhvdmVyIC5yYmMtYWRkb25zLWRuZC1yZXNpemUtbnMtaWNvbiwucmJjLWRheS1zbG90IC5yYmMtYWRkb25zLWRuZCAucmJjLWJhY2tncm91bmQtZXZlbnQ6aG92ZXIgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ucy1pY29uLC5yYmMtYWRkb25zLWRuZCAucmJjLWV2ZW50OmhvdmVyIC5yYmMtYWRkb25zLWRuZC1yZXNpemUtZXctaWNvbiwucmJjLWFkZG9ucy1kbmQgLnJiYy1kYXktc2xvdCAucmJjLWJhY2tncm91bmQtZXZlbnQ6aG92ZXIgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ldy1pY29uLC5yYmMtZGF5LXNsb3QgLnJiYy1hZGRvbnMtZG5kIC5yYmMtYmFja2dyb3VuZC1ldmVudDpob3ZlciAucmJjLWFkZG9ucy1kbmQtcmVzaXplLWV3LWljb257ZGlzcGxheTpibG9ja30ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLWRyYWdnZWQtZXZlbnR7b3BhY2l0eTowfS5yYmMtYWRkb25zLWRuZC5yYmMtYWRkb25zLWRuZC1pcy1kcmFnZ2luZyAucmJjLWV2ZW50Om5vdCgucmJjLWFkZG9ucy1kbmQtZHJhZ2dlZC1ldmVudCk6bm90KC5yYmMtYWRkb25zLWRuZC1kcmFnLXByZXZpZXcpLC5yYmMtYWRkb25zLWRuZC5yYmMtYWRkb25zLWRuZC1pcy1kcmFnZ2luZyAucmJjLWRheS1zbG90IC5yYmMtYmFja2dyb3VuZC1ldmVudDpub3QoLnJiYy1hZGRvbnMtZG5kLWRyYWdnZWQtZXZlbnQpOm5vdCgucmJjLWFkZG9ucy1kbmQtZHJhZy1wcmV2aWV3KSwucmJjLWRheS1zbG90IC5yYmMtYWRkb25zLWRuZC5yYmMtYWRkb25zLWRuZC1pcy1kcmFnZ2luZyAucmJjLWJhY2tncm91bmQtZXZlbnQ6bm90KC5yYmMtYWRkb25zLWRuZC1kcmFnZ2VkLWV2ZW50KTpub3QoLnJiYy1hZGRvbnMtZG5kLWRyYWctcHJldmlldyl7b3BhY2l0eTouNX0ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLXJlc2l6YWJsZXtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlfS5yYmMtYWRkb25zLWRuZCAucmJjLWFkZG9ucy1kbmQtcmVzaXplLW5zLWFuY2hvcnt3aWR0aDoxMDAlO3RleHQtYWxpZ246Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlfS5yYmMtYWRkb25zLWRuZCAucmJjLWFkZG9ucy1kbmQtcmVzaXplLW5zLWFuY2hvcjpmaXJzdC1jaGlsZHt0b3A6MH0ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ucy1hbmNob3I6bGFzdC1jaGlsZHtib3R0b206MH0ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ucy1hbmNob3IgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ucy1pY29ue2Rpc3BsYXk6bm9uZTtib3JkZXItdG9wOjNweCBkb3VibGU7bWFyZ2luOjAgYXV0bzt3aWR0aDoxMHB4O2N1cnNvcjpucy1yZXNpemV9LnJiYy1hZGRvbnMtZG5kIC5yYmMtYWRkb25zLWRuZC1yZXNpemUtZXctYW5jaG9ye3Bvc2l0aW9uOmFic29sdXRlO3RvcDo0cHg7Ym90dG9tOjB9LnJiYy1hZGRvbnMtZG5kIC5yYmMtYWRkb25zLWRuZC1yZXNpemUtZXctYW5jaG9yOmZpcnN0LWNoaWxke2xlZnQ6MH0ucmJjLWFkZG9ucy1kbmQgLnJiYy1hZGRvbnMtZG5kLXJlc2l6ZS1ldy1hbmNob3I6bGFzdC1jaGlsZHtyaWdodDowfS5yYmMtYWRkb25zLWRuZCAucmJjLWFkZG9ucy1kbmQtcmVzaXplLWV3LWFuY2hvciAucmJjLWFkZG9ucy1kbmQtcmVzaXplLWV3LWljb257ZGlzcGxheTpub25lO2JvcmRlci1sZWZ0OjNweCBkb3VibGU7bWFyZ2luLXRvcDphdXRvO21hcmdpbi1ib3R0b206YXV0bztoZWlnaHQ6MTBweDtjdXJzb3I6ZXctcmVzaXplfS5oZWlnaHQ2MDB7cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjYwMHB4fS5leGFtcGxlcy0taGVhZGVyLC5kbmRPdXRzaWRlU291cmNlRXhhbXBsZXttYXJnaW46MCA0MHB4O3RleHQtYWxpZ246Y2VudGVyfS5kbmRPdXRzaWRlU291cmNlRXhhbXBsZXtkaXNwbGF5OmZsZXh9LmRuZE91dHNpZGVTb3VyY2VFeGFtcGxlPi5pbm5lcntkaXNwbGF5OmZsZXg7ZmxleDoxO2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC13cmFwOndyYXB9LmRuZE91dHNpZGVTb3VyY2VFeGFtcGxlPi5pbm5lciBoNHtjb2xvcjpncmF5O3dpZHRoOjEwMCV9LmRuZE91dHNpZGVTb3VyY2VFeGFtcGxlPi5pbm5lciBkaXZbZHJhZ2dhYmxlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Ym9yZGVyOjJweCBzb2xpZCBncmF5O2JvcmRlci1yYWRpdXM6NHB4O3dpZHRoOjEwMHB4O21hcmdpbjoxMHB4O2N1cnNvcjpncmFifS5kbmRPdXRzaWRlU291cmNlRXhhbXBsZT4uaW5uZXIgaW5wdXRbdHlwZT1jaGVja2JveF17bWFyZ2luLXJpZ2h0OjVweH0uY2FyZHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjA7cGFkZGluZzoyNHB4O2JvcmRlci1yYWRpdXM6MnB4O21hcmdpbi1ib3R0b206MjBweDtib3gtc2hhZG93OjAgMnB4IDJweCAwIHJnYmEoMCwwLDAsLjE0KSwwIDNweCAxcHggLTJweCByZ2JhKDAsMCwwLC4yKSwwIDFweCA1cHggMCByZ2JhKDAsMCwwLC4xMil9LmlzRHJhZ2dhYmxle2N1cnNvcjpncmFiICFpbXBvcnRhbnR9Lm5vbkRyYWdnYWJsZSwubm9uUmVzaXphYmxle2JhY2tncm91bmQtY29sb3I6I2JlZDdlYyAhaW1wb3J0YW50O2NvbG9yOiMwMDAgIWltcG9ydGFudH1cIiwgXCJcIl0pO1xuLy8gRXhwb3J0c1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzO1xuIiwiLy8gSW1wb3J0c1xudmFyIF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyA9IHJlcXVpcmUoXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpO1xuZXhwb3J0cyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhmYWxzZSk7XG4vLyBNb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5wb3dkZXJCbHVlLCNteV9zY2hlZHVsZXIsLnR1ZXNkYXl7YmFja2dyb3VuZC1jb2xvcjojYjBlMGU2O2NvbG9yOiMwMDB9LmRhcmtHcmVlbntiYWNrZ3JvdW5kLWNvbG9yOiMwMDY0MDA7Y29sb3I6I2ZmZn0uc2xvdERlZmF1bHR7YmFja2dyb3VuZC1jb2xvcjpcXFwiI0ZBRjBFNlxcXCI7Y29sb3I6XFxcImJsYWNrXFxcIn0jbXlfc2NoZWR1bGVye3BhZGRpbmc6LjVlbTtib3JkZXI6MXB4IHNvbGlkIGJsdWV9XCIsIFwiXCJdKTtcbi8vIEV4cG9ydHNcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cztcbiIsIi8vIEltcG9ydHNcbnZhciBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gPSByZXF1aXJlKFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKTtcbmV4cG9ydHMgPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oZmFsc2UpO1xuLy8gTW9kdWxlXG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCIucmVuZGVyaW5nLW1vZHVsZV9fc3BlY2lhbERheS0tM25OV2l7YmFja2dyb3VuZC1jb2xvcjojZmVjfVwiLCBcIlwiXSk7XG4vLyBFeHBvcnRzXG5leHBvcnRzLmxvY2FscyA9IHtcblx0XCJzcGVjaWFsRGF5XCI6IFwicmVuZGVyaW5nLW1vZHVsZV9fc3BlY2lhbERheS0tM25OV2lcIlxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cztcbiIsInZhciBtYXAgPSB7XG5cdFwiLi9hZlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYWYuanNcIixcblx0XCIuL2FmLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hZi5qc1wiLFxuXHRcIi4vYXJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLmpzXCIsXG5cdFwiLi9hci1kelwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItZHouanNcIixcblx0XCIuL2FyLWR6LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1kei5qc1wiLFxuXHRcIi4vYXIta3dcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWt3LmpzXCIsXG5cdFwiLi9hci1rdy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXIta3cuanNcIixcblx0XCIuL2FyLWx5XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1seS5qc1wiLFxuXHRcIi4vYXItbHkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLWx5LmpzXCIsXG5cdFwiLi9hci1tYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItbWEuanNcIixcblx0XCIuL2FyLW1hLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1tYS5qc1wiLFxuXHRcIi4vYXItcHNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXBzLmpzXCIsXG5cdFwiLi9hci1wcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItcHMuanNcIixcblx0XCIuL2FyLXNhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci1zYS5qc1wiLFxuXHRcIi4vYXItc2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLXNhLmpzXCIsXG5cdFwiLi9hci10blwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXItdG4uanNcIixcblx0XCIuL2FyLXRuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hci10bi5qc1wiLFxuXHRcIi4vYXIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2FyLmpzXCIsXG5cdFwiLi9helwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYXouanNcIixcblx0XCIuL2F6LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9hei5qc1wiLFxuXHRcIi4vYmVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JlLmpzXCIsXG5cdFwiLi9iZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYmUuanNcIixcblx0XCIuL2JnXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iZy5qc1wiLFxuXHRcIi4vYmcuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JnLmpzXCIsXG5cdFwiLi9ibVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm0uanNcIixcblx0XCIuL2JtLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibS5qc1wiLFxuXHRcIi4vYm5cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLmpzXCIsXG5cdFwiLi9ibi1iZFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm4tYmQuanNcIixcblx0XCIuL2JuLWJkLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ibi1iZC5qc1wiLFxuXHRcIi4vYm4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JuLmpzXCIsXG5cdFwiLi9ib1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYm8uanNcIixcblx0XCIuL2JvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9iby5qc1wiLFxuXHRcIi4vYnJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JyLmpzXCIsXG5cdFwiLi9ici5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvYnIuanNcIixcblx0XCIuL2JzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9icy5qc1wiLFxuXHRcIi4vYnMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2JzLmpzXCIsXG5cdFwiLi9jYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY2EuanNcIixcblx0XCIuL2NhLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jYS5qc1wiLFxuXHRcIi4vY3NcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2NzLmpzXCIsXG5cdFwiLi9jcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3MuanNcIixcblx0XCIuL2N2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jdi5qc1wiLFxuXHRcIi4vY3YuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2N2LmpzXCIsXG5cdFwiLi9jeVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvY3kuanNcIixcblx0XCIuL2N5LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9jeS5qc1wiLFxuXHRcIi4vZGFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RhLmpzXCIsXG5cdFwiLi9kYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGEuanNcIixcblx0XCIuL2RlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS5qc1wiLFxuXHRcIi4vZGUtYXRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWF0LmpzXCIsXG5cdFwiLi9kZS1hdC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUtYXQuanNcIixcblx0XCIuL2RlLWNoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kZS1jaC5qc1wiLFxuXHRcIi4vZGUtY2guanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2RlLWNoLmpzXCIsXG5cdFwiLi9kZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZGUuanNcIixcblx0XCIuL2R2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9kdi5qc1wiLFxuXHRcIi4vZHYuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2R2LmpzXCIsXG5cdFwiLi9lbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZWwuanNcIixcblx0XCIuL2VsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbC5qc1wiLFxuXHRcIi4vZW4tYXVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWF1LmpzXCIsXG5cdFwiLi9lbi1hdS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tYXUuanNcIixcblx0XCIuL2VuLWNhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1jYS5qc1wiLFxuXHRcIi4vZW4tY2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWNhLmpzXCIsXG5cdFwiLi9lbi1nYlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tZ2IuanNcIixcblx0XCIuL2VuLWdiLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1nYi5qc1wiLFxuXHRcIi4vZW4taWVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWllLmpzXCIsXG5cdFwiLi9lbi1pZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taWUuanNcIixcblx0XCIuL2VuLWlsXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pbC5qc1wiLFxuXHRcIi4vZW4taWwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLWlsLmpzXCIsXG5cdFwiLi9lbi1pblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4taW4uanNcIixcblx0XCIuL2VuLWluLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1pbi5qc1wiLFxuXHRcIi4vZW4tbnpcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLW56LmpzXCIsXG5cdFwiLi9lbi1uei5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW4tbnouanNcIixcblx0XCIuL2VuLXNnXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lbi1zZy5qc1wiLFxuXHRcIi4vZW4tc2cuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VuLXNnLmpzXCIsXG5cdFwiLi9lb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZW8uanNcIixcblx0XCIuL2VvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lby5qc1wiLFxuXHRcIi4vZXNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLmpzXCIsXG5cdFwiLi9lcy1kb1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtZG8uanNcIixcblx0XCIuL2VzLWRvLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy1kby5qc1wiLFxuXHRcIi4vZXMtbXhcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLW14LmpzXCIsXG5cdFwiLi9lcy1teC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMtbXguanNcIixcblx0XCIuL2VzLXVzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9lcy11cy5qc1wiLFxuXHRcIi4vZXMtdXMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2VzLXVzLmpzXCIsXG5cdFwiLi9lcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXMuanNcIixcblx0XCIuL2V0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldC5qc1wiLFxuXHRcIi4vZXQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2V0LmpzXCIsXG5cdFwiLi9ldVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZXUuanNcIixcblx0XCIuL2V1LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ldS5qc1wiLFxuXHRcIi4vZmFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZhLmpzXCIsXG5cdFwiLi9mYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZmEuanNcIixcblx0XCIuL2ZpXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maS5qc1wiLFxuXHRcIi4vZmkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZpLmpzXCIsXG5cdFwiLi9maWxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZpbC5qc1wiLFxuXHRcIi4vZmlsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9maWwuanNcIixcblx0XCIuL2ZvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mby5qc1wiLFxuXHRcIi4vZm8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZvLmpzXCIsXG5cdFwiLi9mclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnIuanNcIixcblx0XCIuL2ZyLWNhXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jYS5qc1wiLFxuXHRcIi4vZnItY2EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLWNhLmpzXCIsXG5cdFwiLi9mci1jaFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnItY2guanNcIixcblx0XCIuL2ZyLWNoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9mci1jaC5qc1wiLFxuXHRcIi4vZnIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ZyLmpzXCIsXG5cdFwiLi9meVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZnkuanNcIixcblx0XCIuL2Z5LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9meS5qc1wiLFxuXHRcIi4vZ2FcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dhLmpzXCIsXG5cdFwiLi9nYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2EuanNcIixcblx0XCIuL2dkXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nZC5qc1wiLFxuXHRcIi4vZ2QuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dkLmpzXCIsXG5cdFwiLi9nbFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ2wuanNcIixcblx0XCIuL2dsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nbC5qc1wiLFxuXHRcIi4vZ29tLWRldmFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dvbS1kZXZhLmpzXCIsXG5cdFwiLi9nb20tZGV2YS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ29tLWRldmEuanNcIixcblx0XCIuL2dvbS1sYXRuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9nb20tbGF0bi5qc1wiLFxuXHRcIi4vZ29tLWxhdG4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2dvbS1sYXRuLmpzXCIsXG5cdFwiLi9ndVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvZ3UuanNcIixcblx0XCIuL2d1LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ndS5qc1wiLFxuXHRcIi4vaGVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hlLmpzXCIsXG5cdFwiLi9oZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaGUuanNcIixcblx0XCIuL2hpXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oaS5qc1wiLFxuXHRcIi4vaGkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2hpLmpzXCIsXG5cdFwiLi9oclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHIuanNcIixcblx0XCIuL2hyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oci5qc1wiLFxuXHRcIi4vaHVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h1LmpzXCIsXG5cdFwiLi9odS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaHUuanNcIixcblx0XCIuL2h5LWFtXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9oeS1hbS5qc1wiLFxuXHRcIi4vaHktYW0uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2h5LWFtLmpzXCIsXG5cdFwiLi9pZFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaWQuanNcIixcblx0XCIuL2lkLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pZC5qc1wiLFxuXHRcIi4vaXNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2lzLmpzXCIsXG5cdFwiLi9pcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXMuanNcIixcblx0XCIuL2l0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC5qc1wiLFxuXHRcIi4vaXQtY2hcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2l0LWNoLmpzXCIsXG5cdFwiLi9pdC1jaC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvaXQtY2guanNcIixcblx0XCIuL2l0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9pdC5qc1wiLFxuXHRcIi4vamFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2phLmpzXCIsXG5cdFwiLi9qYS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvamEuanNcIixcblx0XCIuL2p2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9qdi5qc1wiLFxuXHRcIi4vanYuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2p2LmpzXCIsXG5cdFwiLi9rYVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2EuanNcIixcblx0XCIuL2thLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rYS5qc1wiLFxuXHRcIi4va2tcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2trLmpzXCIsXG5cdFwiLi9ray5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva2suanNcIixcblx0XCIuL2ttXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbS5qc1wiLFxuXHRcIi4va20uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2ttLmpzXCIsXG5cdFwiLi9rblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva24uanNcIixcblx0XCIuL2tuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rbi5qc1wiLFxuXHRcIi4va29cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2tvLmpzXCIsXG5cdFwiLi9rby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva28uanNcIixcblx0XCIuL2t1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rdS5qc1wiLFxuXHRcIi4va3Uta21yXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9rdS1rbXIuanNcIixcblx0XCIuL2t1LWttci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3Uta21yLmpzXCIsXG5cdFwiLi9rdS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUva3UuanNcIixcblx0XCIuL2t5XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9reS5qc1wiLFxuXHRcIi4va3kuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2t5LmpzXCIsXG5cdFwiLi9sYlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbGIuanNcIixcblx0XCIuL2xiLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sYi5qc1wiLFxuXHRcIi4vbG9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2xvLmpzXCIsXG5cdFwiLi9sby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbG8uanNcIixcblx0XCIuL2x0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdC5qc1wiLFxuXHRcIi4vbHQuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL2x0LmpzXCIsXG5cdFwiLi9sdlwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbHYuanNcIixcblx0XCIuL2x2LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9sdi5qc1wiLFxuXHRcIi4vbWVcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21lLmpzXCIsXG5cdFwiLi9tZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWUuanNcIixcblx0XCIuL21pXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9taS5qc1wiLFxuXHRcIi4vbWkuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21pLmpzXCIsXG5cdFwiLi9ta1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWsuanNcIixcblx0XCIuL21rLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tay5qc1wiLFxuXHRcIi4vbWxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21sLmpzXCIsXG5cdFwiLi9tbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbWwuanNcIixcblx0XCIuL21uXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tbi5qc1wiLFxuXHRcIi4vbW4uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21uLmpzXCIsXG5cdFwiLi9tclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXIuanNcIixcblx0XCIuL21yLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tci5qc1wiLFxuXHRcIi4vbXNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLmpzXCIsXG5cdFwiLi9tcy1teVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXMtbXkuanNcIixcblx0XCIuL21zLW15LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tcy1teS5qc1wiLFxuXHRcIi4vbXMuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL21zLmpzXCIsXG5cdFwiLi9tdFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXQuanNcIixcblx0XCIuL210LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9tdC5qc1wiLFxuXHRcIi4vbXlcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL215LmpzXCIsXG5cdFwiLi9teS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbXkuanNcIixcblx0XCIuL25iXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uYi5qc1wiLFxuXHRcIi4vbmIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25iLmpzXCIsXG5cdFwiLi9uZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmUuanNcIixcblx0XCIuL25lLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9uZS5qc1wiLFxuXHRcIi4vbmxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLmpzXCIsXG5cdFwiLi9ubC1iZVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbmwtYmUuanNcIixcblx0XCIuL25sLWJlLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubC1iZS5qc1wiLFxuXHRcIi4vbmwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL25sLmpzXCIsXG5cdFwiLi9ublwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvbm4uanNcIixcblx0XCIuL25uLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ubi5qc1wiLFxuXHRcIi4vb2MtbG5jXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9vYy1sbmMuanNcIixcblx0XCIuL29jLWxuYy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvb2MtbG5jLmpzXCIsXG5cdFwiLi9wYS1pblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGEtaW4uanNcIixcblx0XCIuL3BhLWluLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wYS1pbi5qc1wiLFxuXHRcIi4vcGxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3BsLmpzXCIsXG5cdFwiLi9wbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcGwuanNcIixcblx0XCIuL3B0XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC5qc1wiLFxuXHRcIi4vcHQtYnJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3B0LWJyLmpzXCIsXG5cdFwiLi9wdC1ici5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcHQtYnIuanNcIixcblx0XCIuL3B0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9wdC5qc1wiLFxuXHRcIi4vcm9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3JvLmpzXCIsXG5cdFwiLi9yby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvcm8uanNcIixcblx0XCIuL3J1XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9ydS5qc1wiLFxuXHRcIi4vcnUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3J1LmpzXCIsXG5cdFwiLi9zZFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2QuanNcIixcblx0XCIuL3NkLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zZC5qc1wiLFxuXHRcIi4vc2VcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NlLmpzXCIsXG5cdFwiLi9zZS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2UuanNcIixcblx0XCIuL3NpXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zaS5qc1wiLFxuXHRcIi4vc2kuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NpLmpzXCIsXG5cdFwiLi9za1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2suanNcIixcblx0XCIuL3NrLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zay5qc1wiLFxuXHRcIi4vc2xcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NsLmpzXCIsXG5cdFwiLi9zbC5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc2wuanNcIixcblx0XCIuL3NxXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zcS5qc1wiLFxuXHRcIi4vc3EuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NxLmpzXCIsXG5cdFwiLi9zclwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3IuanNcIixcblx0XCIuL3NyLWN5cmxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLWN5cmwuanNcIixcblx0XCIuL3NyLWN5cmwuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NyLWN5cmwuanNcIixcblx0XCIuL3NyLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zci5qc1wiLFxuXHRcIi4vc3NcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3NzLmpzXCIsXG5cdFwiLi9zcy5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3MuanNcIixcblx0XCIuL3N2XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdi5qc1wiLFxuXHRcIi4vc3YuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3N2LmpzXCIsXG5cdFwiLi9zd1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvc3cuanNcIixcblx0XCIuL3N3LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS9zdy5qc1wiLFxuXHRcIi4vdGFcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RhLmpzXCIsXG5cdFwiLi90YS5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGEuanNcIixcblx0XCIuL3RlXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZS5qc1wiLFxuXHRcIi4vdGUuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RlLmpzXCIsXG5cdFwiLi90ZXRcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RldC5qc1wiLFxuXHRcIi4vdGV0LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ZXQuanNcIixcblx0XCIuL3RnXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90Zy5qc1wiLFxuXHRcIi4vdGcuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RnLmpzXCIsXG5cdFwiLi90aFwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGguanNcIixcblx0XCIuL3RoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90aC5qc1wiLFxuXHRcIi4vdGtcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RrLmpzXCIsXG5cdFwiLi90ay5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdGsuanNcIixcblx0XCIuL3RsLXBoXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bC1waC5qc1wiLFxuXHRcIi4vdGwtcGguanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsLXBoLmpzXCIsXG5cdFwiLi90bGhcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RsaC5qc1wiLFxuXHRcIi4vdGxoLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90bGguanNcIixcblx0XCIuL3RyXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90ci5qc1wiLFxuXHRcIi4vdHIuanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3RyLmpzXCIsXG5cdFwiLi90emxcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3R6bC5qc1wiLFxuXHRcIi4vdHpsLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90emwuanNcIixcblx0XCIuL3R6bVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLmpzXCIsXG5cdFwiLi90em0tbGF0blwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdHptLWxhdG4uanNcIixcblx0XCIuL3R6bS1sYXRuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0tbGF0bi5qc1wiLFxuXHRcIi4vdHptLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS90em0uanNcIixcblx0XCIuL3VnLWNuXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91Zy1jbi5qc1wiLFxuXHRcIi4vdWctY24uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VnLWNuLmpzXCIsXG5cdFwiLi91a1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdWsuanNcIixcblx0XCIuL3VrLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ay5qc1wiLFxuXHRcIi4vdXJcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3VyLmpzXCIsXG5cdFwiLi91ci5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXIuanNcIixcblx0XCIuL3V6XCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS91ei5qc1wiLFxuXHRcIi4vdXotbGF0blwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXotbGF0bi5qc1wiLFxuXHRcIi4vdXotbGF0bi5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdXotbGF0bi5qc1wiLFxuXHRcIi4vdXouanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3V6LmpzXCIsXG5cdFwiLi92aVwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvdmkuanNcIixcblx0XCIuL3ZpLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS92aS5qc1wiLFxuXHRcIi4veC1wc2V1ZG9cIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3gtcHNldWRvLmpzXCIsXG5cdFwiLi94LXBzZXVkby5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUveC1wc2V1ZG8uanNcIixcblx0XCIuL3lvXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS95by5qc1wiLFxuXHRcIi4veW8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3lvLmpzXCIsXG5cdFwiLi96aC1jblwiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtY24uanNcIixcblx0XCIuL3poLWNuLmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1jbi5qc1wiLFxuXHRcIi4vemgtaGtcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLWhrLmpzXCIsXG5cdFwiLi96aC1oay5qc1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtaGsuanNcIixcblx0XCIuL3poLW1vXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC1tby5qc1wiLFxuXHRcIi4vemgtbW8uanNcIjogXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlL3poLW1vLmpzXCIsXG5cdFwiLi96aC10d1wiOiBcIi4vbm9kZV9tb2R1bGVzL21vbWVudC9sb2NhbGUvemgtdHcuanNcIixcblx0XCIuL3poLXR3LmpzXCI6IFwiLi9ub2RlX21vZHVsZXMvbW9tZW50L2xvY2FsZS96aC10dy5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuL25vZGVfbW9kdWxlcy9tb21lbnQvbG9jYWxlIHN5bmMgcmVjdXJzaXZlIF5cXFxcLlxcXFwvLiokXCI7IiwidmFyIGFwaSA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCIpO1xuICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZXMuc2Nzc1wiKTtcblxuICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuX19lc01vZHVsZSA/IGNvbnRlbnQuZGVmYXVsdCA6IGNvbnRlbnQ7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuICAgICAgICAgICAgfVxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbm1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHMgfHwge307IiwidmFyIGFwaSA9IHJlcXVpcmUoXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCIpO1xuICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZXMuc2Nzc1wiKTtcblxuICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuX19lc01vZHVsZSA/IGNvbnRlbnQuZGVmYXVsdCA6IGNvbnRlbnQ7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuICAgICAgICAgICAgfVxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbm1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHMgfHwge307IiwidmFyIGFwaSA9IHJlcXVpcmUoXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCIpO1xuICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9jdXN0b21Ub29sYmFyLnNjc3NcIik7XG5cbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50Ll9fZXNNb2R1bGUgPyBjb250ZW50LmRlZmF1bHQgOiBjb250ZW50O1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbiAgICAgICAgICAgIH1cblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsInZhciBhcGkgPSByZXF1aXJlKFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiKTtcbiAgICAgICAgICAgIHZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vbWFpbi5zY3NzXCIpO1xuXG4gICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5fX2VzTW9kdWxlID8gY29udGVudC5kZWZhdWx0IDogY29udGVudDtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG4gICAgICAgICAgICB9XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxubW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJ2YXIgYXBpID0gcmVxdWlyZShcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIik7XG4gICAgICAgICAgICB2YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3Byb3BHZXR0ZXIuc2Nzc1wiKTtcblxuICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuX19lc01vZHVsZSA/IGNvbnRlbnQuZGVmYXVsdCA6IGNvbnRlbnQ7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuICAgICAgICAgICAgfVxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbm1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHMgfHwge307IiwidmFyIGFwaSA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCIpO1xuICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1s4XS51c2VbMV0hLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vcmVuZGVyaW5nLm1vZHVsZS5zY3NzXCIpO1xuXG4gICAgICAgICAgICBjb250ZW50ID0gY29udGVudC5fX2VzTW9kdWxlID8gY29udGVudC5kZWZhdWx0IDogY29udGVudDtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG4gICAgICAgICAgICB9XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxubW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJ2YXIgbWFwID0ge1xuXHRcIi4vQ2FsZW5kYXIuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9DYWxlbmRhci5zdG9yaWVzLmpzXCIsXG5cdFwiLi9EcmFnQW5kRHJvcC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL0RyYWdBbmREcm9wLnN0b3JpZXMuanNcIixcblx0XCIuL0R1cmF0aW9ucy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL0R1cmF0aW9ucy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9MYXlvdXQuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9MYXlvdXQuc3Rvcmllcy5qc1wiLFxuXHRcIi4vVGltZXNsb3RzLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvVGltZXNsb3RzLnN0b3JpZXMuanNcIixcblx0XCIuL2FkZG9ucy9kcmFnQW5kRHJvcC9iYXNpYy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9iYXNpYy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9hZGRvbnMvZHJhZ0FuZERyb3Avb3V0c2lkZS5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9vdXRzaWRlLnN0b3JpZXMuanNcIixcblx0XCIuL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9kcmFnRnJvbU91dHNpZGVJdGVtLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL2RyYWdGcm9tT3V0c2lkZUl0ZW0uc3Rvcmllcy5qc1wiLFxuXHRcIi4vYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL2RyYWdnYWJsZUFjY2Vzc29yLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL2RyYWdnYWJsZUFjY2Vzc29yLnN0b3JpZXMuanNcIixcblx0XCIuL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9vbkRyYWdPdmVyLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL29uRHJhZ092ZXIuc3Rvcmllcy5qc1wiLFxuXHRcIi4vYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL29uRHJhZ1N0YXJ0LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL29uRHJhZ1N0YXJ0LnN0b3JpZXMuanNcIixcblx0XCIuL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9vbkRyb3BGcm9tT3V0c2lkZS5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9vbkRyb3BGcm9tT3V0c2lkZS5zdG9yaWVzLmpzXCIsXG5cdFwiLi9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvb25FdmVudERyb3Auc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvb25FdmVudERyb3Auc3Rvcmllcy5qc1wiLFxuXHRcIi4vYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL29uRXZlbnRSZXNpemUuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvb25FdmVudFJlc2l6ZS5zdG9yaWVzLmpzXCIsXG5cdFwiLi9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvcmVzaXphYmxlLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL3Jlc2l6YWJsZS5zdG9yaWVzLmpzXCIsXG5cdFwiLi9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvcmVzaXphYmxlQWNjZXNzb3Iuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9hZGRvbnMvZHJhZ0FuZERyb3AvcHJvcHMvcmVzaXphYmxlQWNjZXNzb3Iuc3Rvcmllcy5qc1wiLFxuXHRcIi4vYWRkb25zL2RyYWdBbmREcm9wL3Jlc291cmNlLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Jlc291cmNlLnN0b3JpZXMuanNcIixcblx0XCIuL2RlbW9zL2JhY2tncm91bmRFdmVudHMuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9kZW1vcy9iYWNrZ3JvdW5kRXZlbnRzLnN0b3JpZXMuanNcIixcblx0XCIuL2RlbW9zL2Jhc2ljLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvZGVtb3MvYmFzaWMuc3Rvcmllcy5qc1wiLFxuXHRcIi4vZGVtb3MvY3VsdHVyZXMuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9kZW1vcy9jdWx0dXJlcy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9kZW1vcy9jdXN0b21WaWV3LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvZGVtb3MvY3VzdG9tVmlldy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9kZW1vcy9kYXlqcy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2RlbW9zL2RheWpzLnN0b3JpZXMuanNcIixcblx0XCIuL2RlbW9zL2x1eG9uLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvZGVtb3MvbHV4b24uc3Rvcmllcy5qc1wiLFxuXHRcIi4vZGVtb3Mvbm9PdmVybGFwLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvZGVtb3Mvbm9PdmVybGFwLnN0b3JpZXMuanNcIixcblx0XCIuL2RlbW9zL3BvcHVwLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvZGVtb3MvcG9wdXAuc3Rvcmllcy5qc1wiLFxuXHRcIi4vZGVtb3MvcmVuZGVyaW5nLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvZGVtb3MvcmVuZGVyaW5nLnN0b3JpZXMuanNcIixcblx0XCIuL2RlbW9zL3Jlc291cmNlLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvZGVtb3MvcmVzb3VyY2Uuc3Rvcmllcy5qc1wiLFxuXHRcIi4vZGVtb3Mvc2VsZWN0YWJsZS5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2RlbW9zL3NlbGVjdGFibGUuc3Rvcmllcy5qc1wiLFxuXHRcIi4vZGVtb3MvdGltZXNsb3RzLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvZGVtb3MvdGltZXNsb3RzLnN0b3JpZXMuanNcIixcblx0XCIuL2RlbW9zL3RpbWV6b25lcy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL2RlbW9zL3RpbWV6b25lcy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9hbGxEYXlBY2Nlc3Nvci5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2FsbERheUFjY2Vzc29yLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2FsbERheU1heFJvd3Muc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9hbGxEYXlNYXhSb3dzLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2JhY2tncm91bmRFdmVudHMuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9iYWNrZ3JvdW5kRXZlbnRzLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2NvbXBvbmVudHMuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9jb21wb25lbnRzLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2N1bHR1cmUuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9jdWx0dXJlLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2RhdGUuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9kYXRlLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2RheUxheW91dEFsZ29yaXRobS5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2RheUxheW91dEFsZ29yaXRobS5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9kYXlQcm9wR2V0dGVyLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvZGF5UHJvcEdldHRlci5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9kZWZhdWx0RGF0ZS5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2RlZmF1bHREYXRlLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2RlZmF1bHRWaWV3LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvZGVmYXVsdFZpZXcuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvZHJpbGxkb3duVmlldy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2RyaWxsZG93blZpZXcuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvZWxlbWVudFByb3BzLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvZWxlbWVudFByb3BzLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2VuZEFjY2Vzc29yLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvZW5kQWNjZXNzb3Iuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvZXZlbnRQcm9wR2V0dGVyLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvZXZlbnRQcm9wR2V0dGVyLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2V2ZW50cy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2V2ZW50cy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9mb3JtYXRzLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvZm9ybWF0cy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9mb3JtYXRzQWdlbmRhRGF0ZUZvcm1hdC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNBZ2VuZGFEYXRlRm9ybWF0LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2Zvcm1hdHNBZ2VuZGFIZWFkZXJGb3JtYXQuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzQWdlbmRhSGVhZGVyRm9ybWF0LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2Zvcm1hdHNBZ2VuZGFUaW1lRm9ybWF0LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0FnZW5kYVRpbWVGb3JtYXQuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvZm9ybWF0c0FnZW5kYVRpbWVSYW5nZUZvcm1hdC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNBZ2VuZGFUaW1lUmFuZ2VGb3JtYXQuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvZm9ybWF0c0RhdGVGb3JtYXQuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzRGF0ZUZvcm1hdC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9mb3JtYXRzRGF5Rm9ybWF0LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0RheUZvcm1hdC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9mb3JtYXRzRGF5SGVhZGVyRm9ybWF0LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0RheUhlYWRlckZvcm1hdC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9mb3JtYXRzRGF5UmFuZ2VIZWFkZXJGb3JtYXQuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzRGF5UmFuZ2VIZWFkZXJGb3JtYXQuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvZm9ybWF0c0V2ZW50VGltZVJhbmdlRW5kRm9ybWF0LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvZm9ybWF0c0V2ZW50VGltZVJhbmdlRW5kRm9ybWF0LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2Zvcm1hdHNFdmVudFRpbWVSYW5nZUZvcm1hdC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNFdmVudFRpbWVSYW5nZUZvcm1hdC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9mb3JtYXRzRXZlbnRUaW1lUmFuZ2VTdGFydEZvcm1hdC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNFdmVudFRpbWVSYW5nZVN0YXJ0Rm9ybWF0LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2Zvcm1hdHNNb250aEhlYWRlckZvcm1hdC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNNb250aEhlYWRlckZvcm1hdC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9mb3JtYXRzU2VsZWN0UmFuZ2VGb3JtYXQuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzU2VsZWN0UmFuZ2VGb3JtYXQuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvZm9ybWF0c1RpbWVHdXR0ZXJGb3JtYXQuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9mb3JtYXRzVGltZUd1dHRlckZvcm1hdC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9mb3JtYXRzV2Vla2RheUZvcm1hdC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2Zvcm1hdHNXZWVrZGF5Rm9ybWF0LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2dldERyaWxsZG93blZpZXcuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9nZXREcmlsbGRvd25WaWV3LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2dldE5vdy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2dldE5vdy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9sZW5ndGguc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9sZW5ndGguc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvbG9jYWxpemVyLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvbG9jYWxpemVyLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL2xvbmdQcmVzc1RocmVzaG9sZC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL2xvbmdQcmVzc1RocmVzaG9sZC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9tYXguc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9tYXguc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvbWVzc2FnZXMuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9tZXNzYWdlcy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9taW4uc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9taW4uc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvb25Eb3VibGVDbGlja0V2ZW50LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvb25Eb3VibGVDbGlja0V2ZW50LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL29uRHJpbGxEb3duLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvb25EcmlsbERvd24uc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvb25LZXlQcmVzc0V2ZW50LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvb25LZXlQcmVzc0V2ZW50LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL29uTmF2aWdhdGUuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9vbk5hdmlnYXRlLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL29uUmFuZ2VDaGFuZ2Uuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9vblJhbmdlQ2hhbmdlLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL29uU2VsZWN0RXZlbnQuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9vblNlbGVjdEV2ZW50LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL29uU2VsZWN0U2xvdC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL29uU2VsZWN0U2xvdC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9vblNlbGVjdGluZy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL29uU2VsZWN0aW5nLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL29uU2hvd01vcmUuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9vblNob3dNb3JlLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL29uVmlldy5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL29uVmlldy5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9wb3B1cC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL3BvcHVwLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL3BvcHVwT2Zmc2V0LnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvcG9wdXBPZmZzZXQuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvcmVzb3VyY2VJZEFjY2Vzc29yLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvcmVzb3VyY2VJZEFjY2Vzc29yLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL3Jlc291cmNlVGl0bGVBY2Nlc3Nvci5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL3Jlc291cmNlVGl0bGVBY2Nlc3Nvci5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9yZXNvdXJjZXMuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9yZXNvdXJjZXMuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvcnRsLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvcnRsLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL3Njcm9sbFRvVGltZS5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL3Njcm9sbFRvVGltZS5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9zZWxlY3RhYmxlLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvc2VsZWN0YWJsZS5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9zZWxlY3RlZC5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL3NlbGVjdGVkLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL3Nob3dBbGxFdmVudHMuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9zaG93QWxsRXZlbnRzLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL3Nob3dNdWx0aURheVRpbWVzLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvc2hvd011bHRpRGF5VGltZXMuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvc2xvdEdyb3VwUHJvcEdldHRlci5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL3Nsb3RHcm91cFByb3BHZXR0ZXIuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvc2xvdFByb3BHZXR0ZXIuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy9zbG90UHJvcEdldHRlci5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9zdGFydEFjY2Vzc29yLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvc3RhcnRBY2Nlc3Nvci5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy9zdGVwLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvc3RlcC5zdG9yaWVzLmpzXCIsXG5cdFwiLi9wcm9wcy90aW1lc2xvdHMuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy90aW1lc2xvdHMuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvdGl0bGVBY2Nlc3Nvci5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL3RpdGxlQWNjZXNzb3Iuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvdG9vbGJhci5zdG9yaWVzLmpzXCI6IFwiLi9zdG9yaWVzL3Byb3BzL3Rvb2xiYXIuc3Rvcmllcy5qc1wiLFxuXHRcIi4vcHJvcHMvdG9vbHRpcEFjY2Vzc29yLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvdG9vbHRpcEFjY2Vzc29yLnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL3ZpZXcuc3Rvcmllcy5qc1wiOiBcIi4vc3Rvcmllcy9wcm9wcy92aWV3LnN0b3JpZXMuanNcIixcblx0XCIuL3Byb3BzL3ZpZXdzLnN0b3JpZXMuanNcIjogXCIuL3N0b3JpZXMvcHJvcHMvdmlld3Muc3Rvcmllcy5qc1wiXG59O1xuXG5cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0KHJlcSkge1xuXHR2YXIgaWQgPSB3ZWJwYWNrQ29udGV4dFJlc29sdmUocmVxKTtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oaWQpO1xufVxuZnVuY3Rpb24gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSkge1xuXHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1hcCwgcmVxKSkge1xuXHRcdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0XHRlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cdFx0dGhyb3cgZTtcblx0fVxuXHRyZXR1cm4gbWFwW3JlcV07XG59XG53ZWJwYWNrQ29udGV4dC5rZXlzID0gZnVuY3Rpb24gd2VicGFja0NvbnRleHRLZXlzKCkge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMobWFwKTtcbn07XG53ZWJwYWNrQ29udGV4dC5yZXNvbHZlID0gd2VicGFja0NvbnRleHRSZXNvbHZlO1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrQ29udGV4dDtcbndlYnBhY2tDb250ZXh0LmlkID0gXCIuL3N0b3JpZXMgc3luYyByZWN1cnNpdmUgXlxcXFwuKD86KD86XiU3Q1xcXFwvJTdDKD86KD86KD8lMjEoPzpeJTdDXFxcXC8pXFxcXC4pLikqPylcXFxcLykoPyUyMVxcXFwuKSg/PS4pW14vXSo/XFxcXC5zdG9yaWVzXFxcXC4oanMlN0Nqc3glN0N0cyU3Q3RzeCkpJFwiOyIsInZhciBtYXAgPSB7XG5cdFwiLi9BYm91dEJpZ0NhbGVuZGFyLnN0b3JpZXMubWR4XCI6IFwiLi9zdG9yaWVzL0Fib3V0QmlnQ2FsZW5kYXIuc3Rvcmllcy5tZHhcIixcblx0XCIuL0Fib3V0RXhhbXBsZXMuc3Rvcmllcy5tZHhcIjogXCIuL3N0b3JpZXMvQWJvdXRFeGFtcGxlcy5zdG9yaWVzLm1keFwiLFxuXHRcIi4vYWRkb25zL2FkZE9ucy5zdG9yaWVzLm1keFwiOiBcIi4vc3Rvcmllcy9hZGRvbnMvYWRkT25zLnN0b3JpZXMubWR4XCIsXG5cdFwiLi9hZGRvbnMvZHJhZ0FuZERyb3AvSW50cm9kdWN0aW9uLnN0b3JpZXMubWR4XCI6IFwiLi9zdG9yaWVzL2FkZG9ucy9kcmFnQW5kRHJvcC9JbnRyb2R1Y3Rpb24uc3Rvcmllcy5tZHhcIixcblx0XCIuL2FkZG9ucy9kcmFnQW5kRHJvcC9wcm9wcy9BUEkuc3Rvcmllcy5tZHhcIjogXCIuL3N0b3JpZXMvYWRkb25zL2RyYWdBbmREcm9wL3Byb3BzL0FQSS5zdG9yaWVzLm1keFwiLFxuXHRcIi4vZGVtb3MvZHJhZ0FuZERyb3Auc3Rvcmllcy5tZHhcIjogXCIuL3N0b3JpZXMvZGVtb3MvZHJhZ0FuZERyb3Auc3Rvcmllcy5tZHhcIixcblx0XCIuL2d1aWRlcy9DdXN0b21TdHlsaW5nLnN0b3JpZXMubWR4XCI6IFwiLi9zdG9yaWVzL2d1aWRlcy9DdXN0b21TdHlsaW5nLnN0b3JpZXMubWR4XCIsXG5cdFwiLi9ndWlkZXMvQ3VzdG9tVmlldy5zdG9yaWVzLm1keFwiOiBcIi4vc3Rvcmllcy9ndWlkZXMvQ3VzdG9tVmlldy5zdG9yaWVzLm1keFwiLFxuXHRcIi4vZ3VpZGVzL0RhdGVzLnN0b3JpZXMubWR4XCI6IFwiLi9zdG9yaWVzL2d1aWRlcy9EYXRlcy5zdG9yaWVzLm1keFwiLFxuXHRcIi4vZ3VpZGVzL1RpbWV6b25lcy5zdG9yaWVzLm1keFwiOiBcIi4vc3Rvcmllcy9ndWlkZXMvVGltZXpvbmVzLnN0b3JpZXMubWR4XCIsXG5cdFwiLi9ndWlkZXMvbG9jYWxpemVyLnN0b3JpZXMubWR4XCI6IFwiLi9zdG9yaWVzL2d1aWRlcy9sb2NhbGl6ZXIuc3Rvcmllcy5tZHhcIixcblx0XCIuL3Byb3BzL0FQSS5zdG9yaWVzLm1keFwiOiBcIi4vc3Rvcmllcy9wcm9wcy9BUEkuc3Rvcmllcy5tZHhcIlxufTtcblxuXG5mdW5jdGlvbiB3ZWJwYWNrQ29udGV4dChyZXEpIHtcblx0dmFyIGlkID0gd2VicGFja0NvbnRleHRSZXNvbHZlKHJlcSk7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKGlkKTtcbn1cbmZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0UmVzb2x2ZShyZXEpIHtcblx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhtYXAsIHJlcSkpIHtcblx0XHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0cmV0dXJuIG1hcFtyZXFdO1xufVxud2VicGFja0NvbnRleHQua2V5cyA9IGZ1bmN0aW9uIHdlYnBhY2tDb250ZXh0S2V5cygpIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG1hcCk7XG59O1xud2VicGFja0NvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tDb250ZXh0UmVzb2x2ZTtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0NvbnRleHQ7XG53ZWJwYWNrQ29udGV4dC5pZCA9IFwiLi9zdG9yaWVzIHN5bmMgcmVjdXJzaXZlIF5cXFxcLig/Oig/Ol4lN0NcXFxcLyU3Qyg/Oig/Oig/JTIxKD86XiU3Q1xcXFwvKVxcXFwuKS4pKj8pXFxcXC8pKD8lMjFcXFxcLikoPz0uKVteL10qP1xcXFwuc3Rvcmllc1xcXFwubWR4KSRcIjsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9mcmFtZXdvcmtJbXBvcnRQYXRoID0gcmVxdWlyZShcIkBzdG9yeWJvb2svcmVhY3RcIik7XG5cbi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby11bnJlc29sdmVkICovXG4oMCwgX2ZyYW1ld29ya0ltcG9ydFBhdGguY29uZmlndXJlKShbcmVxdWlyZS5jb250ZXh0KCcuL3N0b3JpZXMnLCB0cnVlLCAvXlxcLig/Oig/Ol58XFwvfCg/Oig/Oig/ISg/Ol58XFwvKVxcLikuKSo/KVxcLykoPyFcXC4pKD89LilbXi9dKj9cXC5zdG9yaWVzXFwubWR4KSQvKSxyZXF1aXJlLmNvbnRleHQoJy4vc3RvcmllcycsIHRydWUsIC9eXFwuKD86KD86XnxcXC98KD86KD86KD8hKD86XnxcXC8pXFwuKS4pKj8pXFwvKSg/IVxcLikoPz0uKVteL10qP1xcLnN0b3JpZXNcXC4oanN8anN4fHRzfHRzeCkpJC8pXSwgbW9kdWxlLCBmYWxzZSk7Il0sIm5hbWVzIjpbInBhcmFtZXRlcnMiLCJhY3Rpb25zIiwiYXJnVHlwZXNSZWdleCIsImNvbnRyb2xzIiwibWF0Y2hlcnMiLCJjb2xvciIsImRhdGUiLCJzdG9yeVNvcnQiLCJvcmRlciIsInZpZXdNb2RlIiwiX19uYW1lZEV4cG9ydHNPcmRlciIsIm93bktleXMiLCJvYmplY3QiLCJlbnVtZXJhYmxlT25seSIsImtleXMiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW1ib2xzIiwiZmlsdGVyIiwic3ltIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9kZWZpbmVQcm9wZXJ0eSIsIm9iaiIsImtleSIsInZhbHVlIiwiZGVmaW5lUHJvcGVydHkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImNvbmZpZyIsImZvckVhY2giLCJhZGRBcmdzIiwiYWRkQXJnVHlwZXMiLCJkZWNvcmF0b3IiLCJhZGREZWNvcmF0b3IiLCJsb2FkZXIiLCJhZGRMb2FkZXIiLCJhZGRQYXJhbWV0ZXJzIiwiX29iamVjdFNwcmVhZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImVuaGFuY2VyIiwiYWRkQXJnVHlwZXNFbmhhbmNlciIsImFkZEFyZ3NFbmhhbmNlciIsInNldEdsb2JhbFJlbmRlciIsInYiLCJjb25zb2xlIiwibG9nIiwidGl0bGUiLCJjb21wb25lbnQiLCJDYWxlbmRhciIsImRlY29yYXRvcnMiLCJTdG9yeSIsIl9qc3giLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsIlRlbXBsYXRlIiwiYXJncyIsIkJhc2VDYWxlbmRhciIsImFzc2lnbiIsImRpc3BsYXlOYW1lIiwiQ29tcGxleERheVZpZXdMYXlvdXQiLCJiaW5kIiwic3RvcnlOYW1lIiwiZGVmYXVsdFZpZXciLCJWaWV3cyIsIkRBWSIsImRlZmF1bHREYXRlIiwiRGF0ZSIsImV2ZW50cyIsImNyZWF0ZUV2ZW50cyIsInN0ZXAiLCJUaW1lR3V0dGVyIiwiQ3VzdG9tVGltZUd1dHRlckhlYWRlciIsInBvcHVwIiwiZGVtb0V2ZW50cyIsIm9uU2VsZWN0RXZlbnQiLCJhY3Rpb24iLCJXRUVLIiwidmlld3MiLCJjb21wb25lbnRzIiwidGltZUd1dHRlckhlYWRlciIsIkN1c3RvbVRpbWVHdXR0ZXJXcmFwcGVyIiwidGltZUd1dHRlcldyYXBwZXIiLCJjdXN0b21Db21wb25lbnRzIiwiQ3VzdG9tRGF0ZUNlbGxXcmFwcGVyIiwiTU9OVEgiLCJkYXRlQ2VsbFdyYXBwZXIiLCJDdXN0b21UaW1lU2xvdFdyYXBwZXIiLCJ0aW1lU2xvdFdyYXBwZXIiLCJDdXN0b21FdmVudFdyYXBwZXIiLCJldmVudFdyYXBwZXIiLCJDdXN0b21Ob0FnZW5kYUV2ZW50c0xhYmVsIiwiQUdFTkRBIiwibWVzc2FnZXMiLCJub0V2ZW50c0luUmFuZ2UiLCJDdXN0b21EYXlDb2x1bW5XcmFwcGVyIiwicmVzb3VyY2VFdmVudHMiLCJyZXNvdXJjZXMiLCJyZXNvdXJjZUFjY2Vzc29yIiwicmVzb3VyY2VJZEFjY2Vzc29yIiwicmVzb3VyY2VUaXRsZUFjY2Vzc29yIiwiZGF5Q29sdW1uV3JhcHBlciIsImRvY3MiLCJkZXNjcmlwdGlvbiIsInN0b3J5Iiwic3RvcnlTb3VyY2UiLCJEcmFnQW5kRHJvcENhbGVuZGFyIiwiRHJhZ2dhYmxlQW5kUmVzaXphYmxlIiwicmVzaXphYmxlIiwib25FdmVudERyb3AiLCJvbkV2ZW50UmVzaXplIiwiQ3VzdG9tU3RlcHNBbmRUaW1lc2xvdHMiLCJzdGVwcyIsInRpbWVzbG90cyIsIldpdGhNdWx0aURheVRpbWVzIiwic2hvd011bHRpRGF5VGltZXMiLCJXaXRoQ3VzdG9tRGF0ZUNlbGxXcmFwcGVyIiwiV2l0aEN1c3RvbVRpbWVzbG90V3JhcHBlciIsIldpdGhDdXN0b21FdmVudFdyYXBwZXIiLCJEcmFnZ2FibGVNdWx0aXBsZVJlc291cmNlcyIsImxvY2FsaXplcnMiLCJnbG9iYWxpemUiLCJnbG9iYWxpemVMb2NhbGl6ZXIiLCJtb21lbnQiLCJtb21lbnRMb2NhbGl6ZXIiLCJsdXhvbiIsImx1eG9uTG9jYWxpemVyIiwiRGF0ZVRpbWUiLCJmaXJzdERheU9mV2VlayIsIkRyYWdnYWJsZUNhbGVuZGFyIiwid2l0aERyYWdBbmREcm9wIiwiX3JlZiIsIl9yZWYkbG9jYWxpemVyIiwibG9jYWxpemVyIiwibG9jIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiRGF5bGlnaHRTYXZpbmdzU3RhcnRzIiwiYXJnVHlwZXMiLCJvcHRpb25zIiwiY29udHJvbCIsInR5cGUiLCJtaW4iLCJ0b0RhdGUiLCJtYXgiLCJzdGFydCIsImVuZCIsImFsbERheSIsIkRheWxpZ2h0U2F2aW5nc1N0YXJ0c0FmdGVyMkFtIiwiRGF5bGlnaHRTYXZpbmdzRW5kcyIsIkRheWxpZ2h0U2F2aW5nc0VuZHNBZnRlcjJBbSIsIkV2ZW50TGF5b3V0IiwiRmlyc3RPZldlZWtBbGxEYXkiLCJFbmRPZldlZWtBbGxEYXkiLCJFdmVudEF0U3RhcnRPZldlZWsiLCJhZGQiLCJzdWJ0cmFjdCIsIkV2ZW50QXRFbmRPZldlZWsiLCJFdmVudHNPbkFDb25zdHJhaW5lZERheUNvbHVtbiIsIk5vRHVyYXRpb24iLCJEYXlTcGFuIiwiWmVyb0R1cmF0aW9uT2RkaXRpZXMiLCJpZCIsIlplcm9EdXJhdGlvbk92ZXJsYXAiLCJkYXlMYXlvdXRBbGdvcml0aG0iLCJzY3JvbGxUb1RpbWUiLCJPdmVybGFwcGluZ0JhY2tncm91bmRFdmVudHNPdmVybGFwIiwiYmFja2dyb3VuZEV2ZW50cyIsIk92ZXJsYXBwaW5nQmFja2dyb3VuZEV2ZW50c05vT3ZlcmxhcCIsIl9fZG9jZ2VuSW5mbyIsIlNUT1JZQk9PS19SRUFDVF9DTEFTU0VTIiwibmFtZSIsImRvY2dlbkluZm8iLCJwYXRoIiwiU2VsZWN0YWJsZVN0ZXAxNXg0U2xvdCIsInNlbGVjdGFibGUiLCJvblNlbGVjdFNsb3QiLCJTZWxlY3RhYmxlU3RlcDEweDZTbG90IiwiU2VsZWN0YWJsZVN0ZXA1eDZTbG90IiwiU2VsZWN0YWJsZTNTbG90IiwiRHJhZ0FuZERyb3AiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsIm15RXZlbnRzIiwic2V0TXlFdmVudHMiLCJtb3ZlRXZlbnQiLCJ1c2VDYWxsYmFjayIsIl9yZWYyIiwiZXZlbnQiLCJfcmVmMiRpc0FsbERheSIsImlzQWxsRGF5IiwiZHJvcHBlZE9uQWxsRGF5U2xvdCIsInByZXYiLCJfcHJldiRmaW5kIiwiZXhpc3RpbmciLCJmaW5kIiwiZXYiLCJmaWx0ZXJlZCIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsInJlc2l6ZUV2ZW50IiwiX3JlZjMiLCJfcHJldiRmaW5kMiIsInVzZU1lbW8iLCJfanN4cyIsIkZyYWdtZW50IiwiRGVtb0xpbmsiLCJmaWxlTmFtZSIsInBhZ2UiLCJFeGFtcGxlMSIsIkJhc2ljIiwiRXhhbXBsZTMiLCJsYXlvdXRQcm9wcyIsIk1EWENvbnRlbnQiLCJwcm9wcyIsIm1keCIsIl9leHRlbmRzIiwibWR4VHlwZSIsInBhcmVudE5hbWUiLCJpc01EWENvbXBvbmVudCIsIkRyYWdGcm9tT3V0c2lkZUl0ZW0iLCJEcmFnZ2FibGVBY2Nlc3NvciIsIk9uRHJhZ092ZXIiLCJPbkRyYWdTdGFydCIsIkxpbmtUbyIsImtpbmQiLCJPbkRyb3BGcm9tT3V0c2lkZSIsIk9uRXZlbnREcm9wIiwiT25FdmVudFJlc2l6ZSIsIlJlc2l6YWJsZSIsIlJlc2l6YWJsZUFjY2Vzc29yIiwicmVzb3VyY2VJZCIsInJlc291cmNlTWFwIiwicmVzb3VyY2VUaXRsZSIsIkRuRFJlc291cmNlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJjb3B5RXZlbnQiLCJzZXRDb3B5RXZlbnQiLCJ0b2dnbGVDb3B5RXZlbnQiLCJ2YWwiLCJBcnJheSIsImlzQXJyYXkiLCJTZXQiLCJzb3VyY2VSZXNvdXJjZSIsIl91c2VNZW1vIiwic3R5bGUiLCJtYXJnaW4iLCJjaGVja2VkIiwib25DaGFuZ2UiLCJFeGFtcGxlMiIsImFsbFZpZXdzIiwibWFwIiwiayIsIkJhY2tncm91bmRFdmVudHNDYWxlbmRhciIsImRhdGVzIiwiRXhhbXBsZTEwIiwiQmFja2dyb3VuZENhbGVuZGFyIiwicmVxdWlyZSIsImN1bHR1cmVzIiwibGFuZyIsImVuIiwiZXMiLCJ3ZWVrIiwid29ya193ZWVrIiwiZGF5IiwibW9udGgiLCJwcmV2aW91cyIsIm5leHQiLCJ0b2RheSIsImFnZW5kYSIsInNob3dNb3JlIiwidG90YWwiLCJmciIsIkN1bHR1cmVzRGVtbyIsImN1bHR1cmUiLCJzZXRDdWx0dXJlIiwicmlnaHRUb0xlZnQiLCJzZXRSaWdodFRvTGVmdCIsImN1bHR1cmVPbkNsaWNrIiwiTGF5b3V0IiwiZGlyZWN0aW9uIiwiYWxpZ24iLCJ3aWR0aCIsImRpc3BsYXkiLCJkZWZhdWx0VmFsdWUiLCJjIiwiaWR4IiwicnRsIiwiRXhhbXBsZTUiLCJDdWx0dXJlRGVtbyIsIk15V2VlayIsIl9yZWYkbWF4IiwiZW5kT2YiLCJfcmVmJG1pbiIsInN0YXJ0T2YiLCJfcmVmJHNjcm9sbFRvVGltZSIsImN1cnJSYW5nZSIsInJhbmdlIiwiVGltZUdyaWQiLCJldmVudE9mZnNldCIsIkN1c3RvbVZpZXciLCJfcmVmNCIsImN1cnJlbnQiLCJsdGUiLCJuYXZpZ2F0ZSIsIk5hdmlnYXRlIiwiUFJFVklPVVMiLCJORVhUIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwiRXhhbXBsZTkiLCJkYXlqcyIsInRpbWV6b25lIiwiZGpMb2NhbGl6ZXIiLCJkYXlqc0xvY2FsaXplciIsIkNvbG9yZWREYXRlQ2VsbFdyYXBwZXIiLCJSZWFjdCIsIm9ubHkiLCJiYWNrZ3JvdW5kQ29sb3IiLCJEYXlqcyIsIl9vYmplY3REZXN0cnVjdHVyaW5nRW1wdHkiLCJEYXlqc0xvY2FsaXplciIsImRlZmF1bHRUWiIsImxvY2FsIiwiem9uZU5hbWUiLCJMdXhvbiIsInNldFRpbWV6b25lIiwiU2V0dGluZ3MiLCJkZWZhdWx0Wm9uZSIsInN0ciIsIkRhdGVUaW1lT2JqIiwiZnJvbUlTTyIsInRvSlNEYXRlIiwiZ2V0Tm93IiwidXNlRWZmZWN0IiwiVGltZXpvbmVTZWxlY3QiLCJMdXhvbkxvY2FsaXplciIsIkNyZWF0ZUV2ZW50V2l0aE5vT3ZlcmxhcCIsIl9yZWYkZGF5TGF5b3V0QWxnb3JpdCIsInNldEV2ZW50cyIsImhhbmRsZVNlbGVjdFNsb3QiLCJ3aW5kb3ciLCJwcm9tcHQiLCJoYW5kbGVTZWxlY3RFdmVudCIsImFsZXJ0IiwiUG9wdXAiLCJFeGFtcGxlNiIsIlBvcHVwRGVtbyIsIkV2ZW50IiwiZGVzYyIsIkV2ZW50QWdlbmRhIiwiY3VzdG9tRGF5UHJvcEdldHRlciIsImdldERhdGUiLCJzdHlsZXMiLCJib3JkZXIiLCJjdXN0b21TbG90UHJvcEdldHRlciIsIlJlbmRlcmluZyIsImRheVByb3BHZXR0ZXIiLCJzbG90UHJvcEdldHRlciIsIkV4YW1wbGU4IiwiUmVzb3VyY2UiLCJFeGFtcGxlMTEiLCJTZWxlY3RhYmxlIiwiVGltZXNsb3RzIiwiRXhhbXBsZTciLCJndWVzcyIsIlRpbWV6b25lcyIsInNldERlZmF1bHQiLCJtb21lbnRPYmoiLCJFeGFtcGxlNCIsIlRpbWV6b25lQ2FsZW5kYXIiLCJBbGxEYXlBY2Nlc3NvciIsImFjY2Vzc29yU3RvcnlBcmdzIiwibUxvY2FsaXplciIsIkFsbERheU1heFJvd3MiLCJhbGxEYXlFdmVudHMiLCJhbGxEYXlNYXhSb3dzIiwiQmFja0dyb3VuZEV2ZW50cyIsIkNhbnZhcyIsIlZpZXdOYW1lc0dyb3VwIiwidmlld05hbWVzIiwidmlldyIsIm9uVmlldyIsImNsc3giLCJvbkNsaWNrIiwiQ3VzdG9tVG9vbGJhciIsImxhYmVsIiwib25OYXZpZ2F0ZSIsIlRPREFZIiwiQ29tcG9uZW50cyIsInRvb2xiYXIiLCJDdWx0dXJlIiwiQ2FsRGF0ZSIsInNldERhdGUiLCJuZXdEYXRlIiwiRGF5TGF5b3V0QWxnb3JpdGhtIiwiRGF5UHJvcEdldHRlciIsIkRlZmF1bHREYXRlIiwiRGVmYXVsdFZpZXciLCJkcmlsbGRvd25WaWV3IiwiRHJpbGxkb3duVmlldyIsIkVsZW1lbnRQcm9wcyIsImVsZW1lbnRQcm9wcyIsIkVuZEFjY2Vzc29yIiwiRXZlbnRQcm9wR2V0dGVyIiwiZXZlbnRQcm9wR2V0dGVyIiwiaXNTZWxlY3RlZCIsImhvdXIiLCJpbmNsdWRlcyIsIkV2ZW50cyIsIkZvcm1hdHMiLCJmb3JtYXRzIiwiZGF0ZUZvcm1hdCIsIndlZWtkYXlGb3JtYXQiLCJmb3JtYXQiLCJkYXlGb3JtYXQiLCJ0aW1lR3V0dGVyRm9ybWF0IiwiRm9ybWF0c0FnZW5kRGF0ZUZvcm1hdCIsImFnZW5kYURhdGVGb3JtYXQiLCJGb3JtYXRzQWdlbmRIZWFkZXJGb3JtYXQiLCJhZ2VuZGFIZWFkZXJGb3JtYXQiLCJGb3JtYXRzQWdlbmRUaW1lRm9ybWF0IiwiYWdlbmRhVGltZUZvcm1hdCIsIkZvcm1hdHNBZ2VuZGFUaW1lUmFuZ2VGb3JtYXQiLCJhZ2VuZGFUaW1lUmFuZ2VGb3JtYXQiLCJGb3JtYXRzRGF0ZUZvcm1hdCIsIkZvcm1hdHNEYXlGb3JtYXQiLCJGb3JtYXRzRGF5SGVhZGVyRm9ybWF0IiwiZGF5SGVhZGVyRm9ybWF0IiwiRm9ybWF0c0RheVJhbmdlSGVhZGVyRm9ybWF0IiwiZGF5UmFuZ2VIZWFkZXJGb3JtYXQiLCJGb3JtYXRzRXZlbnRUaW1lUmFuZ2VFbmRGb3JtYXQiLCJldmVudFRpbWVSYW5nZUVuZEZvcm1hdCIsIkZvcm1hdHNFdmVudFRpbWVSYW5nZUZvcm1hdCIsImV2ZW50VGltZVJhbmdlRm9ybWF0IiwiRm9ybWF0c0V2ZW50VGltZVJhbmdlU3RhcnRGb3JtYXQiLCJldmVudFRpbWVSYW5nZVN0YXJ0Rm9ybWF0IiwiRm9ybWF0c01vbnRoSGVhZGVyRm9ybWF0IiwibW9udGhIZWFkZXJGb3JtYXQiLCJGb3JtYXRzU2VsZWN0UmFuZ2VGb3JtYXQiLCJzZWxlY3RSYW5nZUZvcm1hdCIsIkZvcm1hdHNUaW1lR3V0dGVyRm9ybWF0IiwiRm9ybWF0c1dlZWtkYXlGb3JtYXQiLCJHZXREcmlsbGRvd25WaWV3IiwiZ2V0RHJpbGxkb3duVmlldyIsInRhcmdldERhdGUiLCJjdXJyZW50Vmlld05hbWUiLCJjb25maWd1cmVkVmlld05hbWVzIiwiR2V0Tm93IiwiTGVuZ3RoIiwiaGVpZ2h0IiwiTG9jYWxpemVyIiwibG9uZ1ByZXNzVGhyZXNob2xkIiwiTG9uZ1ByZXNzVGhyZXNob2xkIiwiTWF4IiwiTWVzc2FnZXMiLCJNaW4iLCJidWlsZE1lc3NhZ2UiLCJjYWxFdmVudCIsImV2ZW50TmFtZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJPbkRvdWJsZUNsaWNrRXZlbnQiLCJjbGlja1JlZiIsInVzZVJlZiIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJvbkRvdWJsZUNsaWNrRXZlbnQiLCJPbkRyaWxsRG93biIsInNldFZpZXciLCJuZXdWaWV3Iiwib25EcmlsbERvd24iLCJPbktleVByZXNzRXZlbnQiLCJwcmVzc1JlZiIsIm9uS2V5UHJlc3NFdmVudCIsImtleXByZXNzRXZlbnQiLCJhbHRLZXkiLCJjdHJsS2V5Iiwic2hpZnRLZXkiLCJtZXRhS2V5IiwicHJlZml4IiwiT25OYXZpZ2F0ZSIsIk9uUmFuZ2VDaGFuZ2UiLCJvblJhbmdlQ2hhbmdlIiwidG9Mb2NhbGVTdHJpbmciLCJPblNlbGVjdEV2ZW50IiwiT25TZWxlY3RTbG90Iiwic2xvdEluZm8iLCJPblNlbGVjdGluZyIsIm9uU2VsZWN0aW5nIiwiT25TaG93TW9yZSIsIm9uU2hvd01vcmUiLCJjYWxFdmVudHMiLCJPblZpZXciLCJQb3B1cE9mZnNldCIsInBvcHVwT2Zmc2V0IiwieCIsInkiLCJSZXNvdXJjZUlkQWNjZXNzb3IiLCJyZXNvdXJjZUFjY2Vzc29yU3RvcnlBcmdzIiwiUmVzb3VyY2VUaXRsZUFjY2Vzc29yIiwicmVzb3VyY2VEYXRhIiwibGlzdCIsIlJlc291cmNlcyIsIlJpZ2h0VG9MZWZ0IiwiU2Nyb2xsVG9UaW1lIiwiU2VsZWN0ZWQiLCJzZWxlY3RlZCIsInNldFNlbGVjdGVkIiwic2hvd0FsbEV2ZW50cyIsIlNob3dBbGxFdmVudHMiLCJTaG93TXVsdGlEYXlUaW1lcyIsIlNsb3RHcm91cFByb3BHZXR0ZXIiLCJzbG90R3JvdXBQcm9wR2V0dGVyIiwibWluSGVpZ2h0IiwiU2xvdFByb3BHZXR0ZXIiLCJTdGFydEFjY2Vzc29yIiwiU3RlcCIsIlRpdGxlQWNjZXNzb3IiLCJUb29sYmFyIiwiVG9vbHRpcEFjY2Vzc29yIiwiVmlldyIsIkNhbFZpZXdzIiwiTm9vcFdyYXBwZXIiLCJCYWNrZ3JvdW5kQ2VsbHMiLCJfUmVhY3QkQ29tcG9uZW50IiwiY29udGV4dCIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2NhbGxTdXBlciIsInN0YXRlIiwic2VsZWN0aW5nIiwiY29udGFpbmVyUmVmIiwiY3JlYXRlUmVmIiwiX2luaGVyaXRzIiwiX2NyZWF0ZUNsYXNzIiwiY29tcG9uZW50RGlkTW91bnQiLCJ0aGlzIiwiX3NlbGVjdGFibGUiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsIl90ZWFyZG93blNlbGVjdGFibGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJyZW5kZXIiLCJfdGhpcyRwcm9wcyIsImdldHRlcnMiLCJjdXJyZW50RGF0ZSIsIldyYXBwZXIiLCJfdGhpcyRzdGF0ZSIsInN0YXJ0SWR4IiwiZW5kSWR4IiwicmVmIiwiaW5kZXgiLCJfZ2V0dGVycyRkYXlQcm9wIiwiZGF5UHJvcCIsImlzU2FtZURhdGUiLCJuZXEiLCJfdGhpczIiLCJub2RlIiwic2VsZWN0b3IiLCJfc2VsZWN0b3IiLCJTZWxlY3Rpb24iLCJjb250YWluZXIiLCJzZWxlY3RvckNsaWNrc0hhbmRsZXIiLCJwb2ludCIsImFjdGlvblR5cGUiLCJpc0V2ZW50IiwiaXNTaG93TW9yZSIsInJvd0JveCIsImdldEJvdW5kc0Zvck5vZGUiLCJfdGhpczIkcHJvcHMiLCJwb2ludEluQm94IiwiY3VycmVudENlbGwiLCJnZXRTbG90QXRYIiwiX3NlbGVjdFNsb3QiLCJib3giLCJfaW5pdGlhbCIsInNldFN0YXRlIiwib24iLCJfdGhpczIkcHJvcHMyIiwibm90aWZ5Iiwib25TZWxlY3RTdGFydCIsIm5vZGVCb3giLCJfZGF0ZUNlbGxTZWxlY3Rpb24iLCJkYXRlQ2VsbFNlbGVjdGlvbiIsImJvdW5kcyIsIm9uU2VsZWN0RW5kIiwidGVhcmRvd24iLCJpc1NlZ21lbnRJblNsb3QiLCJzZWciLCJzbG90IiwibGVmdCIsInJpZ2h0IiwiZXZlbnRzSW5TbG90Iiwic2VnbWVudHMiLCJFdmVudEVuZGluZ1JvdyIsInNsb3RzIiwic2xvdE1ldHJpY3MiLCJyb3dTZWdtZW50cyIsImV2ZW50TGV2ZWxzIiwibGV2ZWxzIiwibGFzdEVuZCIsInJvdyIsInNwYW4iLCJnYXAiLCJNYXRoIiwiY2FuUmVuZGVyU2xvdEV2ZW50IiwiY29udGVudCIsIkV2ZW50Um93TWl4aW4iLCJyZW5kZXJFdmVudCIsInJlbmRlclNwYW4iLCJyZW5kZXJTaG93TW9yZSIsImV2ZXJ5IiwicyIsIl90aGlzJHByb3BzMiIsImdldEV2ZW50c0ZvclNsb3QiLCJyZW1haW5pbmdFdmVudHMiLCJjb3VudCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImRlZmF1bHRQcm9wcyIsIlNjcm9sbGFibGVXZWVrV3JhcHBlciIsImlzRXF1YWwiLCJhIiwiYiIsImdldFNsb3RNZXRyaWNzIiwibWVtb2l6ZSIsIm1heFJvd3MiLCJtaW5Sb3dzIiwiYWNjZXNzb3JzIiwiX2VuZE9mUmFuZ2UiLCJlbmRPZlJhbmdlIiwiZGF0ZVJhbmdlIiwiZmlyc3QiLCJsYXN0IiwiZXZ0IiwiZXZlbnRTZWdtZW50cyIsIl9ldmVudExldmVscyIsImV4dHJhIiwibWluRXZlbnRSb3dzIiwiY2xvbmUiLCJtZXRyaWNzIiwiZ2V0RGF0ZUZvclNsb3QiLCJzbG90TnVtYmVyIiwiZ2V0U2xvdEZvckRhdGUiLCJyIiwiY29udGludWVzUHJpb3IiLCJjb250aW51ZXNBZnRlciIsIkRhdGVDb250ZW50Um93IiwiX2xlbiIsIl9rZXkiLCJzbGljZSIsImhhbmRsZVNob3dNb3JlIiwiY2VsbCIsInFzYSIsImdldENvbnRhaW5lciIsInJlbmRlckhlYWRpbmdDZWxsIiwiX3RoaXMkcHJvcHMzIiwicmVuZGVySGVhZGVyIiwicmVuZGVyRHVtbXkiLCJfdGhpcyRwcm9wczQiLCJoZWFkaW5nUm93UmVmIiwiZXZlbnRSb3dSZWYiLCJEYXRlU2xvdE1ldHJpY3MiLCJnZXRSb3dMaW1pdCIsIl90aGlzJGhlYWRpbmdSb3dSZWYiLCJldmVudEhlaWdodCIsImdldEhlaWdodCIsImhlYWRpbmdIZWlnaHQiLCJldmVudFNwYWNlIiwiZmxvb3IiLCJfdGhpcyRwcm9wczUiLCJyZW5kZXJGb3JNZWFzdXJlIiwib25TZWxlY3QiLCJvbkRvdWJsZUNsaWNrIiwib25LZXlQcmVzcyIsIlNjcm9sbGFibGVXZWVrQ29tcG9uZW50IiwiV2Vla1dyYXBwZXIiLCJ3ZWVrV3JhcHBlciIsImV2ZW50Um93UHJvcHMiLCJyb2xlIiwic2VncyIsIkV2ZW50Um93IiwiSW5maW5pdHkiLCJFdmVudENlbGwiLCJfdGhpcyRwcm9wcyRjb21wb25lbnQiLCJFdmVudFdyYXBwZXIiLCJzbG90U3RhcnQiLCJzbG90RW5kIiwidG9vbHRpcCIsInNob3dBc0FsbERheSIsImRpZmYiLCJjZWlsIiwidXNlclByb3BzIiwiZXZlbnRQcm9wIiwidW5kZWZpbmVkIiwib25LZXlEb3duIiwicmVkdWNlIiwibGkiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJpc1JlcXVpcmVkIiwibGVuIiwicGVyIiwiYWJzIiwiV2Via2l0RmxleEJhc2lzIiwiZmxleEJhc2lzIiwibWF4V2lkdGgiLCJIZWFkZXIiLCJQb3AiLCJwb3NpdGlvbiIsInNob3ciLCJoYW5kbGVEcmFnU3RhcnQiLCJwb3BwZXJSZWYiLCJvZmZzZXQiLCJ1c2VDbGlja091dHNpZGUiLCJjYWxsYmFjayIsImhhbmRsZUNsaWNrT3V0c2lkZSIsImNvbnRhaW5zIiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInVzZUxheW91dEVmZmVjdCIsIl9nZXRQb3NpdGlvbiIsImdldFBvc2l0aW9uIiwiX2dldE9mZnNldCIsImdldE9mZnNldCIsInRvcCIsIl9nZXRPZmZzZXQyIiwiY1RvcCIsImNMZWZ0IiwiY1dpZHRoIiwiY0hlaWdodCIsIl9nZXRPZmZzZXQzIiwiYldpZHRoIiwiYkhlaWdodCIsInZpZXdCb3R0b20iLCJ2aWV3UmlnaHQiLCJib3R0b20iLCJ0b3BPZmZzZXQiLCJsZWZ0T2Zmc2V0IiwibWluV2lkdGgiLCJsdCIsImd0ZSIsImRyYWdnYWJsZSIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnRW5kIiwiQ2FsT3ZlcmxheSIsIl9yZWYkcG9wdXBPZmZzZXQiLCJvdmVybGF5IiwiaGFuZGxlRG91YmxlQ2xpY2tFdmVudCIsImhhbmRsZUtleVByZXNzRXZlbnQiLCJvbkhpZGUiLCJvdmVybGF5RGlzcGxheSIsImlzTmFOIiwiT3ZlcmxheSIsInJvb3RDbG9zZSIsImZsaXAiLCJwbGFjZW1lbnQiLCJQb3BPdmVybGF5IiwiaGFuZGxlciIsImxpc3RlbiIsInBhc3NpdmUiLCJnZXRFdmVudE5vZGVGcm9tUG9pbnQiLCJjbGllbnRYIiwiY2xpZW50WSIsImVsZW1lbnRGcm9tUG9pbnQiLCJjbG9zZXN0IiwiZ2V0U2hvd01vcmVOb2RlRnJvbVBvaW50IiwiZ2V0RXZlbnRDb29yZGluYXRlcyIsInRvdWNoZXMiLCJwYWdlWCIsInBhZ2VZIiwiX3JlZjMkZ2xvYmFsIiwiZ2xvYmFsIiwiX3JlZjMkbG9uZ1ByZXNzVGhyZXNoIiwiX3JlZjMkdmFsaWRDb250YWluZXJzIiwidmFsaWRDb250YWluZXJzIiwiX2luaXRpYWxFdmVudCIsImlzRGV0YWNoZWQiLCJnbG9iYWxNb3VzZSIsIl9saXN0ZW5lcnMiLCJjcmVhdGUiLCJfaGFuZGxlSW5pdGlhbEV2ZW50IiwiX2hhbmRsZU1vdmVFdmVudCIsIl9oYW5kbGVUZXJtaW5hdGluZ0V2ZW50IiwiX2tleUxpc3RlbmVyIiwiX2Ryb3BGcm9tT3V0c2lkZUxpc3RlbmVyIiwiX2RyYWdPdmVyRnJvbU91dHNpZGVMaXN0ZW5lciIsIl9yZW1vdmVUb3VjaE1vdmVXaW5kb3dMaXN0ZW5lciIsIl9yZW1vdmVLZXlEb3duTGlzdGVuZXIiLCJfcmVtb3ZlS2V5VXBMaXN0ZW5lciIsIl9yZW1vdmVEcm9wRnJvbU91dHNpZGVMaXN0ZW5lciIsIl9yZW1vdmVEcmFnT3ZlckZyb21PdXRzaWRlTGlzdGVuZXIiLCJfYWRkSW5pdGlhbEV2ZW50TGlzdGVuZXIiLCJoYW5kbGVycyIsInJlbW92ZSIsImluZGV4T2YiLCJzcGxpY2UiLCJlbWl0IiwicmVzdWx0IiwiZm4iLCJfaW5pdGlhbEV2ZW50RGF0YSIsIl9zZWxlY3RSZWN0IiwiX2xhc3RDbGlja0RhdGEiLCJfcmVtb3ZlSW5pdGlhbEV2ZW50TGlzdGVuZXIiLCJfcmVtb3ZlRW5kTGlzdGVuZXIiLCJfb25Fc2NMaXN0ZW5lciIsIl9yZW1vdmVNb3ZlTGlzdGVuZXIiLCJvYmplY3RzQ29sbGlkZSIsIml0ZW1zIiwiX2FkZExvbmdQcmVzc0xpc3RlbmVyIiwiaW5pdGlhbEV2ZW50IiwidGltZXIiLCJyZW1vdmVUb3VjaE1vdmVMaXN0ZW5lciIsInJlbW92ZVRvdWNoRW5kTGlzdGVuZXIiLCJoYW5kbGVUb3VjaFN0YXJ0IiwiY2xlYW51cCIsInJlbW92ZVRvdWNoU3RhcnRMaXN0ZW5lciIsInJlbW92ZU1vdXNlRG93bkxpc3RlbmVyIiwiX2dldEV2ZW50Q29vcmRpbmF0ZXMiLCJfZ2V0RXZlbnRDb29yZGluYXRlczIiLCJvZmZzZXREYXRhIiwiX2dldEV2ZW50Q29vcmRpbmF0ZXMzIiwid2hpY2giLCJidXR0b24iLCJpc092ZXJDb250YWluZXIiLCJfbm9ybWFsaXplRGlzdGFuY2UiLCJub3JtYWxpemVEaXN0YW5jZSIsImRpc3RhbmNlIiwiaXNUb3VjaCIsInRlc3QiLCJfaXNXaXRoaW5WYWxpZENvbnRhaW5lciIsImV2ZW50VGFyZ2V0IiwiY29udGFpbmVycyIsInNvbWUiLCJpblJvb3QiLCJpc1dpdGhpblZhbGlkQ29udGFpbmVyIiwiX2hhbmRsZUNsaWNrRXZlbnQiLCJfZ2V0RXZlbnRDb29yZGluYXRlczQiLCJub3ciLCJnZXRUaW1lIiwidGltZXN0YW1wIiwiX3RoaXMkX2luaXRpYWxFdmVudERhIiwiX2dldEV2ZW50Q29vcmRpbmF0ZXM1IiwidyIsImgiLCJvbGQiLCJjbGljayIsImlzQ2xpY2siLCJjdHJsIiwiX3RoaXMkX2luaXRpYWxFdmVudERhMiIsIm5vZGVBIiwibm9kZUIiLCJ0b2xlcmFuY2UiLCJfZ2V0Qm91bmRzRm9yTm9kZSIsImFUb3AiLCJhTGVmdCIsIl9nZXRCb3VuZHNGb3JOb2RlJHJpZyIsImFSaWdodCIsIl9nZXRCb3VuZHNGb3JOb2RlJGJvdCIsImFCb3R0b20iLCJfZ2V0Qm91bmRzRm9yTm9kZTIiLCJiVG9wIiwiYkxlZnQiLCJfZ2V0Qm91bmRzRm9yTm9kZTIkcmkiLCJiUmlnaHQiLCJfZ2V0Qm91bmRzRm9yTm9kZTIkYm8iLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJyZWN0IiwicGFnZU9mZnNldCIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0IiwiZGlyIiwicGFnZVhPZmZzZXQiLCJib2R5Iiwic2Nyb2xsTGVmdCIsInBhZ2VZT2Zmc2V0Iiwic2Nyb2xsVG9wIiwiZ2V0S2V5IiwidG90YWxNaW4iLCJnZXRUb3RhbE1pbiIsIm1pbnV0ZXNGcm9tTWlkbmlnaHQiLCJnZXRNaW51dGVzRnJvbU1pZG5pZ2h0IiwibnVtR3JvdXBzIiwibnVtU2xvdHMiLCJncm91cHMiLCJncnAiLCJzbG90SWR4IiwibWluRnJvbVN0YXJ0IiwiZ2V0U2xvdERhdGUiLCJsYXN0U2xvdE1pbkZyb21TdGFydCIsInBvc2l0aW9uRnJvbURhdGUiLCJnZXREc3RPZmZzZXQiLCJ1cGRhdGUiLCJkYXRlSXNJbkdyb3VwIiwiZ3JvdXBJbmRleCIsIm5leHRHcm91cCIsImluUmFuZ2UiLCJuZXh0U2xvdCIsImZpbmRJbmRleCIsImVxIiwiY2xvc2VzdFNsb3RUb1Bvc2l0aW9uIiwicGVyY2VudCIsImNsb3Nlc3RTbG90RnJvbVBvaW50IiwiYm91bmRhcnlSZWN0IiwiY2xvc2VzdFNsb3RGcm9tRGF0ZSIsImd0IiwiZGlmZk1pbnMiLCJzdGFydHNCZWZvcmVEYXkiLCJzdGFydHNBZnRlckRheSIsInN0YXJ0c0JlZm9yZSIsIm1lcmdlIiwic3RhcnRzQWZ0ZXIiLCJnZXRSYW5nZSIsInJhbmdlU3RhcnQiLCJyYW5nZUVuZCIsImlnbm9yZU1pbiIsImlnbm9yZU1heCIsInJhbmdlU3RhcnRNaW4iLCJyYW5nZUVuZE1pbiIsInN0YXJ0RGF0ZSIsImVuZERhdGUiLCJnZXRDdXJyZW50VGltZVBvc2l0aW9uIiwiZGF0YSIsIl9zbG90TWV0cmljcyRnZXRSYW5nZSIsInN0YXJ0TXMiLCJlbmRNcyIsImdldCIsInJvd3MiLCJsZWF2ZXMiLCJfd2lkdGgiLCJub092ZXJsYXAiLCJvdmVybGFwIiwiX3RoaXMkcm93IiwieE9mZnNldCIsIm9uU2FtZVJvdyIsIm1pbmltdW1TdGFydERpZmZlcmVuY2UiLCJnZXRTdHlsZWRFdmVudHMiLCJldmVudHNJblJlbmRlck9yZGVyIiwic29ydEJ5UmVuZGVyIiwic29ydGVkQnlUaW1lIiwic29ydEJ5Iiwic29ydGVkIiwic2hpZnQiLCJjb250YWluZXJFdmVudHMiLCJfbG9vcCIsImoiLCJnZXRNYXhJZHhERlMiLCJtYXhJZHgiLCJ2aXNpdGVkIiwiZnJpZW5kcyIsIm5ld0lkeCIsIkRlZmF1bHRBbGdvcml0aG1zIiwic3R5bGVkRXZlbnRzIiwic29ydCIsInNpemUiLCJzZTEiLCJ5MSIsInkyIiwic2UyIiwieTMiLCJ5NCIsInNlIiwiYml0bWFwIiwiYWxsRnJpZW5kcyIsInBhZGRpbmciLCJUaW1lU2xvdEdyb3VwIiwiX0NvbXBvbmVudCIsInJlbmRlclNsb3QiLCJyZXNvdXJjZSIsImdyb3VwIiwiX3RoaXMkcHJvcHMkY29tcG9uZW50MiIsIkJhY2tncm91bmRXcmFwcGVyIiwiZ3JvdXBQcm9wcyIsInNsb3RHcm91cFByb3AiLCJzbG90UHJvcHMiLCJzbG90UHJvcCIsIkNvbXBvbmVudCIsIkRheUNvbHVtbldyYXBwZXIiLCJpbm5lclJlZiIsIkRheUNvbHVtbiIsInRpbWVJbmRpY2F0b3JQb3NpdGlvbiIsImludGVydmFsVHJpZ2dlcmVkIiwicmVuZGVyRXZlbnRzIiwiaXNCYWNrZ3JvdW5kRXZlbnQiLCJhbGdvcml0aG0iLCJpc0Z1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJjYWxsIiwiRGF5RXZlbnRMYXlvdXQiLCJUaW1lR3JpZEV2ZW50IiwiX3NlbGVjdCIsIl9kb3VibGVDbGljayIsIl9rZXlQcmVzcyIsIm1heWJlU2VsZWN0Iiwic2VsZWN0aW9uU3RhdGUiLCJjdXJyZW50U2xvdCIsIl9pbml0aWFsU2xvdCIsImluaXRpYWxTbG90Iiwic2VsZWN0UmFuZ2UiLCJfc2VsZWN0aW9uU3RhdGUiLCJfbGVuMiIsIl9rZXkyIiwiX2xlbjMiLCJfa2V5MyIsIl9sZW40IiwiX2tleTQiLCJUaW1lU2xvdFV0aWxzIiwiaXNOb3ciLCJzZXRUaW1lSW5kaWNhdG9yUG9zaXRpb25VcGRhdGVJbnRlcnZhbCIsImNsZWFyVGltZUluZGljYXRvckludGVydmFsIiwicHJldlN0YXRlIiwiZ2V0Tm93Q2hhbmdlZCIsInRhaWwiLCJwb3NpdGlvblRpbWVJbmRpY2F0b3IiLCJfdGhpczMiLCJfdGltZUluZGljYXRvclRpbWVvdXQiLCJfdGhpcyRwcm9wczUkZ2V0dGVycyIsIl90aGlzJHByb3BzNSRjb21wb25lbiIsIkV2ZW50Q29udGFpbmVyIiwiZXZlbnRDb250YWluZXJXcmFwcGVyIiwiX2V4Y2x1ZGVkMiIsInNlbGVjdERhdGVzIiwiX2RheVByb3AiLCJEYXlDb2x1bW5XcmFwcGVyQ29tcG9uZW50IiwiZHJhZ1Rocm91Z2hFdmVudHMiLCJndXR0ZXJSZWYiLCJUaW1lR3V0dGVyV3JhcHBlciIsImFkanVzdEZvckRTVCIsImdldFRpbWV6b25lT2Zmc2V0IiwidG9JU09TdHJpbmciLCJzZXRTbG90TWV0cmljcyIsIlJlc291cmNlSGVhZGVyIiwiVGltZUdyaWRIZWFkZXIiLCJoYW5kbGVIZWFkZXJDbGljayIsInJlbmRlclJvdyIsImV2ZW50c1RvRGlzcGxheSIsInJlbmRlckhlYWRlckNlbGxzIiwiX3RoaXMkcHJvcHMyJGNvbXBvbmVuIiwiaGVhZGVyIiwiSGVhZGVyQ29tcG9uZW50Iiwic2Nyb2xsUmVmIiwiaXNPdmVyZmxvd2luZyIsIl90aGlzJHByb3BzMyRjb21wb25lbiIsIlRpbWVHdXR0ZXJIZWFkZXIiLCJfdGhpcyRwcm9wczMkY29tcG9uZW4yIiwicmVzb3VyY2VIZWFkZXIiLCJSZXNvdXJjZUhlYWRlckNvbXBvbmVudCIsInNjcm9sbGJhclNpemUiLCJncm91cGVkRXZlbnRzIiwiZ3JvdXBFdmVudHMiLCJOT05FIiwiaGFuZGxlU2Nyb2xsIiwiaGFuZGxlUmVzaXplIiwiYW5pbWF0aW9uRnJhbWUiLCJyYWZIYW5kbGUiLCJjaGVja092ZXJmbG93IiwiY2xlYXJTZWxlY3Rpb24iLCJkb1Nob3dNb3JlRHJpbGxEb3duIiwiaGFuZGxlU2VsZWN0QWxsRGF5U2xvdCIsIl91cGRhdGluZ092ZXJmbG93IiwiY29udGVudFJlZiIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsIm1lbW9pemVkUmVzb3VyY2VzIiwiZXZlbnRzQnlSZXNvdXJjZSIsIk1hcCIsIml0ZW0iLCJzZXQiLCJndXR0ZXJXaWR0aCIsIl9zY3JvbGxSYXRpbyIsImdldFNuYXBzaG90QmVmb3JlVXBkYXRlIiwibWVhc3VyZUd1dHRlciIsImNhbGN1bGF0ZVNjcm9sbCIsImFwcGx5U2Nyb2xsIiwibWVhc3VyZUd1dHRlckFuaW1hdGlvbkZyYW1lUmVxdWVzdCIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiZ3JvdXBlZEJhY2tncm91bmRFdmVudHMiLCJqaiIsImRheXNFdmVudHMiLCJkYXlzQmFja2dyb3VuZEV2ZW50cyIsIl9jcmVhdGVFbGVtZW50IiwiX3RoaXMkcHJvcHMkYWxsRGF5TWF4IiwicmFuZ2VFdmVudHMiLCJyYW5nZUJhY2tncm91bmRFdmVudHMiLCJlU3RhcnQiLCJlRW5kIiwic3RhcnRBbmRFbmRBcmVEYXRlT25seSIsInNvcnRFdmVudHMiLCJyZW5kZXJPdmVybGF5Iiwib25TY3JvbGwiLCJfdGhpcyRzdGF0ZSRvdmVybGF5IiwiX3NlbGVjdFRpbWVyIiwiX3BlbmRpbmdTZWxlY3Rpb24iLCJfdGhpczQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJfdGhpczQkZ3V0dGVyUmVmIiwiZ2V0V2lkdGgiLCJlbmFibGVBdXRvU2Nyb2xsIiwiZGlmZk1pbGxpcyIsInRvdGFsTWlsbGlzIiwic3RyaW5naWZ5UGVyY2VudCIsIl9wcm9wcyRjb21wb25lbnRzIiwiaW5uZXIiLCJldmVudFN0eWxlIiwidGFiSW5kZXgiLCJEbkRDb250ZXh0IiwiaGFuZGxlUmVzaXplVXAiLCJvbkJlZ2luQWN0aW9uIiwiaGFuZGxlUmVzaXplRG93biIsImhhbmRsZVJlc2l6ZUxlZnQiLCJoYW5kbGVSZXNpemVSaWdodCIsImhhbmRsZVN0YXJ0RHJhZ2dpbmciLCJfZSR0YXJnZXQkZ2V0QXR0cmlidXQiLCJnZXRBdHRyaWJ1dGUiLCJyZW5kZXJBbmNob3IiLCJjbHMiLCJvbk1vdXNlRG93biIsIl9faXNQcmV2aWV3IiwiZHJhZ2dhYmxlQWNjZXNzb3IiLCJyZXNpemFibGVBY2Nlc3NvciIsImlzRHJhZ2dhYmxlIiwiaXNSZXNpemFibGUiLCJuZXdQcm9wcyIsIm9uVG91Y2hTdGFydCIsIlN0YXJ0QW5jaG9yIiwiRW5kQW5jaG9yIiwiZHJhZ0FuZERyb3BBY3Rpb24iLCJpbnRlcmFjdGluZyIsImNvbnRleHRUeXBlIiwiZHJhZ0FjY2Vzc29ycyIsIndyYXBBY2Nlc3NvciIsIm1lcmdlQ29tcG9uZW50cyIsImFkZG9ucyIsIm5lc3QiLCJmYWN0b3JpZXMiLCJCb29sZWFuIiwiY3JlYXRlRmFjdG9yeSIsIk5lc3QiLCJyZWR1Y2VSaWdodCIsImNoaWxkIiwiZmFjdG9yeSIsInBvaW50SW5Db2x1bW4iLCJldmVudFRpbWVzIiwiZHVyYXRpb24iLCJFdmVudENvbnRhaW5lcldyYXBwZXIiLCJoYW5kbGVNb3ZlIiwicmVzZXQiLCJuZXdTbG90IiwiZXZlbnRPZmZzZXRUb3AiLCJuZXdFbmQiLCJoYW5kbGVEcm9wRnJvbU91dHNpZGUiLCJib3VuZGFyeUJveCIsIm9uRHJvcEZyb21PdXRzaWRlIiwidXBkYXRlUGFyZW50U2Nyb2xsIiwicGFyZW50IiwiZHJhZ2dlZEVsIiwib2Zmc2V0VG9wIiwid3JhcHBlciIsImlzQmVpbmdEcmFnZ2VkIiwic2Nyb2xsUGFyZW50IiwiZXZlbnROb2RlIiwiZHJhZ0Zyb21PdXRzaWRlSXRlbSIsIm9uU3RhcnQiLCJoYW5kbGVJbnRlcmFjdGlvbkVuZCIsIm9uRW5kIiwibGFzdEV2ZW50IiwibmV3UmFuZ2UiLCJfdGhpcyRjb250ZXh0JGRyYWdnYWIiLCJuZXdUaW1lIiwiX2V2ZW50VGltZXMyIiwibmV3U3RhcnQiLCJyZW5kZXJDb250ZW50IiwiZHJhZ2dlZEV2ZW50IiwiX2V2ZW50VGltZXMiLCJoYW5kbGVEcmFnT3ZlckZyb21PdXRzaWRlIiwiaXNNb250aFJvdyIsImNsYXNzTGlzdCIsImlzSW5Cb3giLCJzZWdtZW50IiwibGFzdFNlZ21lbnQiLCJjdXJzb3JJblJvdyIsIm9yaWdpbmFsRW5kIiwib3JpZ2luYWxTdGFydCIsImRlZmF1bHRPbkRyYWdPdmVyIiwiaGFuZGxlQmVnaW5BY3Rpb24iLCJoYW5kbGVJbnRlcmFjdGlvblN0YXJ0IiwiaW50ZXJhY3Rpb25JbmZvIiwiZ2V0RG5EQ29udGV4dFZhbHVlIiwiZWxlbWVudFByb3BzV2l0aERyb3BGcm9tT3V0c2lkZSIsIm9uRHJhZ092ZXIiLCJQcm92aWRlciIsImxvY2FsZVByb3BUeXBlIiwiX2Zvcm1hdCIsImZvcm1hdHRlciIsImludmFyaWFudCIsImR0IiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImRheXN0YXJ0IiwiZGF5U3BhbiIsIl9yZWYkZXZ0QSIsImV2dEEiLCJhU3RhcnQiLCJhRW5kIiwiYUFsbERheSIsIl9yZWYkZXZ0QiIsImV2dEIiLCJiU3RhcnQiLCJiRW5kIiwiYkFsbERheSIsInN0YXJ0U29ydCIsImR1ckEiLCJkdXJCIiwiaW5FdmVudFJhbmdlIiwiX3JlZjIkZXZlbnQiLCJfcmVmMiRyYW5nZSIsInN0YXJ0c0JlZm9yZUVuZCIsImVuZHNBZnRlclN0YXJ0IiwiZGF0ZTEiLCJkYXRlMiIsImlzSnVzdERhdGUiLCJEYXRlTG9jYWxpemVyIiwic3BlYyIsImZpcnN0T2ZXZWVrIiwicHJvcFR5cGUiLCJzdGFydE9mV2VlayIsIm1pbnV0ZXMiLCJmaXJzdFZpc2libGVEYXkiLCJsYXN0VmlzaWJsZURheSIsInZpc2libGVEYXlzIiwic2VnbWVudE9mZnNldCIsImJyb3dzZXJUWk9mZnNldCIsIm1lcmdlV2l0aERlZmF1bHRzIiwiZm9ybWF0T3ZlcnJpZGVzIiwiZGVmYXVsdE1lc3NhZ2VzIiwidGltZSIsInllc3RlcmRheSIsInRvbW9ycm93IiwiRGF0ZUhlYWRlciIsIk1vbnRoVmlldyIsInJlbmRlcldlZWsiLCJ3ZWVrSWR4IiwibmVlZExpbWl0TWVhc3VyZSIsInJvd0xpbWl0Iiwid2Vla3NFdmVudHMiLCJldmVudHNGb3JXZWVrIiwiZXZ0cyIsInNvcnRXZWVrRXZlbnRzIiwic2xvdFJvd1JlZiIsInJlYWRlckRhdGVIZWFkaW5nIiwiaXNPZmZSYW5nZSIsImlzQ3VycmVudCIsIkRhdGVIZWFkZXJDb21wb25lbnQiLCJkYXRlSGVhZGVyIiwiaGFuZGxlSGVhZGluZ0NsaWNrIiwiX2JnUm93cyIsInJ1bm5pbmciLCJtZWFzdXJlUm93TGltaXQiLCJfcmVzaXplTGlzdGVuZXIiLCJ3ZWVrcyIsImNodW5rIiwiX3dlZWtDb3VudCIsInJlbmRlckhlYWRlcnMiLCJfdGhpcyRzdGF0ZTIiLCJfdGhpcyRwcm9wczYiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJfcmVmNSIsIkRheSIsIl90aGlzJHByb3BzJG1pbiIsIl90aGlzJHByb3BzJG1heCIsIl90aGlzJHByb3BzJHNjcm9sbFRvVCIsIl90aGlzJHByb3BzJGVuYWJsZUF1dCIsIldlZWsiLCJfV2VlayRyYW5nZSIsIl9XZWVrJHJhbmdlMiIsIl90b0FycmF5IiwicmVzdCIsInBvcCIsIndvcmtXZWVrUmFuZ2UiLCJkIiwiZ2V0RGF5IiwiV29ya1dlZWsiLCJfd29ya1dlZWtSYW5nZSIsIl93b3JrV2Vla1JhbmdlMiIsIkFnZW5kYSIsIl9yZWYkbGVuZ3RoIiwiaGVhZGVyUmVmIiwiZGF0ZUNvbFJlZiIsInRpbWVDb2xSZWYiLCJ0Ym9keVJlZiIsIl9hZGp1c3RIZWFkZXIiLCJ0aW1lUmFuZ2VMYWJlbCIsImxhYmVsQ2xhc3MiLCJUaW1lQ29tcG9uZW50IiwidHJpbSIsImZpcnN0Um93IiwiZmlyc3RDaGlsZCIsIl93aWR0aHMiLCJ3aWR0aHMiLCJhZGRDbGFzcyIsIm1hcmdpblJpZ2h0IiwicmVtb3ZlQ2xhc3MiLCJyZW5kZXJEYXkiLCJkYXlLZXkiLCJBZ2VuZGFEYXRlIiwiZGF0ZUxhYmVsIiwicm93U3BhbiIsIl9yZWYyJGxlbmd0aCIsIl9yZWYzJGxlbmd0aCIsIl9yZWY0JGxlbmd0aCIsIk1vbnRoIiwiV09SS19XRUVLIiwidmlld05hbWVzR3JvdXAiLCJfdmlld3MiLCJfaSIsIl9PYmplY3QkZW50cmllcyIsImVudHJpZXMiLCJnZXRWaWV3cyIsInRyYW5zZm9ybSIsIlZJRVdTIiwibWFwVmFsdWVzIiwiZ2V0VmlldyIsImhhbmRsZVJhbmdlQ2hhbmdlIiwidmlld0NvbXBvbmVudCIsImhhbmRsZU5hdmlnYXRlIiwiVmlld0NvbXBvbmVudCIsIm1vdmVEYXRlIiwiREFURSIsImhhbmRsZVZpZXdDaGFuZ2UiLCJpc1ZhbGlkVmlldyIsImhhbmRsZURyaWxsRG93biIsImdldENvbnRleHQiLCJfdGhpcyRzdGF0ZSRjb250ZXh0IiwiQ2FsVG9vbGJhciIsIm5leHRQcm9wcyIsInN0YXJ0QWNjZXNzb3IiLCJlbmRBY2Nlc3NvciIsImFsbERheUFjY2Vzc29yIiwidG9vbHRpcEFjY2Vzc29yIiwidGl0bGVBY2Nlc3NvciIsImJhY2tncm91bmRFdmVudFByb3BHZXR0ZXIiLCJfcmVmNCRtZXNzYWdlcyIsIl9yZWY0JGNvbXBvbmVudHMiLCJfcmVmNCRmb3JtYXRzIiwibmFtZXMiLCJtc2dzIiwibWVzc2FnZSIsImJhY2tncm91bmRFdmVudFByb3AiLCJkZWZhdWx0cyIsIm9taXQiLCJiYWNrZ3JvdW5kRXZlbnRXcmFwcGVyIiwidW5jb250cm9sbGFibGUiLCJ0aW1lUmFuZ2VGb3JtYXQiLCJ0aW1lUmFuZ2VTdGFydEZvcm1hdCIsInRpbWVSYW5nZUVuZEZvcm1hdCIsIndlZWtSYW5nZUZvcm1hdCIsImRhdGVSYW5nZUZvcm1hdCIsImZpeFVuaXQiLCJ1bml0IiwiZGF0ZVBhcnQiLCJ0b0xvd2VyQ2FzZSIsIl9zdCRfeiRuYW1lIiwiX3N0JF96Iiwic3QiLCJlZCIsInR6IiwidHpOYW1lIiwiX3oiLCJ6b25lIiwidXRjT2Zmc2V0IiwiZGVmaW5lQ29tcGFyYXRvcnMiLCJfZGVmaW5lQ29tcGFyYXRvcnMiLCJfZGVmaW5lQ29tcGFyYXRvcnMyIiwiZHRBIiwiZHRCIiwiaXNTYW1lIiwiX2RlZmluZUNvbXBhcmF0b3JzOSIsIl9kZWZpbmVDb21wYXJhdG9yczEwIiwiaXNTYW1lT3JCZWZvcmUiLCJhZGRlciIsIm1TdGFydCIsIm1FbmQiLCJkYXlzIiwibG9jYWxlRGF0YSIsImxvY2FsZSIsIm0iLCJfZGVmaW5lQ29tcGFyYXRvcnM1IiwiX2RlZmluZUNvbXBhcmF0b3JzNiIsImlzQmVmb3JlIiwiX2RlZmluZUNvbXBhcmF0b3JzMyIsIl9kZWZpbmVDb21wYXJhdG9yczQiLCJpc0FmdGVyIiwiX2RlZmluZUNvbXBhcmF0b3JzNyIsIl9kZWZpbmVDb21wYXJhdG9yczgiLCJ0bSIsIm1EYXkiLCJtTWluIiwibU1heCIsImlzQmV0d2VlbiIsImRhdGVBIiwiZGF0ZUIiLCJtaW51dGUiLCJkYXlTdGFydCIsImdldERheVN0YXJ0RHN0T2Zmc2V0IiwibUZpcnN0IiwibUxhc3QiLCJpc1NhbWVPckFmdGVyIiwiX3JlZjYiLCJfcmVmNiRldnRBIiwiX3JlZjYkZXZ0QiIsIl9yZWY3IiwiX3JlZjckZXZlbnQiLCJfcmVmNyRyYW5nZSIsInN0YXJ0T2ZEYXkiLCJyU3RhcnQiLCJyRW5kIiwiZHQyIiwibmVnIiwidG9TdHJpbmciLCJkdE9mZnNldCIsImNvbXBhcmF0b3IiLCJOdW1iZXIiLCJwbHVyYWxpemVVbml0IiwiX3JlZjYkZmlyc3REYXlPZldlZWsiLCJmcm9tSlNEYXRlIiwic3RhcnRPZkRUV2VlayIsImR0T2JqIiwid2Vla2RheSIsIm1pbnVzIiwiZW5kT2ZEVFdlZWsiLCJlb3ciLCJwbHVzIiwic3RhcnRPZkRUIiwiZW5kT2ZEVCIsImNvbnZlcnNpb25BY2N1cmFjeSIsInRvT2JqZWN0IiwiZHRTdGFydCIsImFzIiwiZm9ybWF0RGF0ZVdpdGhDdWx0dXJlIiwic2V0TG9jYWxlIiwidG9Gb3JtYXQiLCJmb3JtYXREYXRlIiwic2Vjb25kIiwibWlsbGlzZWNvbmQiLCJyb3VuZCIsIl9yZWY3JGV2dEEiLCJfcmVmNyRldnRCIiwiX3JlZjgiLCJfcmVmOCRldmVudCIsIl9yZWY4JHJhbmdlIiwiaGFzU2FtZSIsImdldEN1bHR1cmUiLCJmaW5kQ2xvc2VzdEN1bHR1cmUiLCJjYWxlbmRhciIsImZpcnN0RGF5IiwibG9hZCIsImNsZHIiLCJ0ZXJyaXRvcnkiLCJhdHRyaWJ1dGVzIiwid2Vla0RhdGEiLCJwcm9jZXNzIiwibG9jYWxlRGF5IiwicGFyc2VJbnQiLCJyYXciLCJvbGRHbG9iYWxpemUiLCJkYXlqc0xpYiIsImV4dGVuZCIsImxvY2FsaXplZEZvcm1hdCIsIm1pbk1heCIsInV0YyIsIl9zdCR0eiQkeCQkdGltZXpvbmUiLCIkeCIsIiR0aW1lem9uZSIsInN0YXJ0RGF5IiwiZGoiLCJkakRheSIsImRqTWluIiwiZGpNYXgiLCJkalN0YXJ0IiwiZGpGaXJzdCIsImRqRW5kIiwiZGpMYXN0IiwiYWNjZXNzb3IiLCJmaWVsZCIsImFjYyIsIk1JTExJIiwic2Vjb25kcyIsImhvdXJzIiwiZmlyc3RPZk1vbnRoIiwiZW5kT2ZNb250aCIsIl9yZWYkdW5pdCIsImxpbWl0Iiwic2Vnc092ZXJsYXAiLCJvdGhlclNlZ3MiLCJvdGhlclNlZyIsImJhc2UiLCJtdWx0aURheUV2ZW50cyIsInN0YW5kYXJkRXZlbnRzIiwic3RhcnRDaGVjayIsImVuZENoZWNrIiwibXVsdGlTb3J0ZWQiLCJzdGFuZGFyZFNvcnRlZCIsImV2ZW50QSIsImV2ZW50QiIsInByb3AiLCJzbG90V2lkdGgiLCJjZWxsV2lkdGgiLCJsYXN0U2xvdElkeCIsImlzQ3VycmVudFJvdyIsImlzU3RhcnRSb3ciLCJpc0Fib3ZlU3RhcnQiLCJpc0JlbG93U3RhcnQiLCJsaW5rQmFzZSIsIm1hcmdpbkJvdHRvbSIsImhyZWYiLCJhbGxab25lcyIsIl9yZWYkZGVmYXVsdFRaIiwidW5zaGlmdCIsIl9yZWYyJGxvY2FsaXplciIsIl9yZWYyJHNob3dEZW1vTGluayIsInNob3dEZW1vTGluayIsImFkakV2ZW50cyIsIml0IiwiaW5kIiwiZm9ybWF0TmFtZSIsIkRuRE91dHNpZGVSZXNvdXJjZSIsInNldERyYWdnZWRFdmVudCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiZGlzcGxheURyYWdJdGVtSW5DZWxsIiwic2V0RGlzcGxheURyYWdJdGVtSW5DZWxsIiwiX3VzZVN0YXRlNyIsIml0ZW0xIiwiaXRlbTIiLCJfdXNlU3RhdGU4IiwiY291bnRlcnMiLCJzZXRDb3VudGVycyIsImN1c3RvbU9uRHJhZ092ZXIiLCJkcmFnRXZlbnQiLCJoYW5kbGVEaXNwbGF5RHJhZ0l0ZW1JbkNlbGwiLCJuZXdFdmVudCIsImlkTGlzdCIsIm5ld0lkIiwiQ2FyZCIsInNldFJlc2l6YWJsZSIsInRvZ2dsZVJlc2l6aW5nIiwiRHJhZ2FibGVDYWxlbmRhciIsImFkanVzdGVkIiwiYWxsRGF5RXZlbnQiLCJvdGhlciIsImFkanVzdGVkUmVzb3VyY2VzIiwiSWQiLCJUaXRsZSIsImRheUNvbHVtbldyYXBwZXJQcm9wcyIsImJvcmRlckNvbG9yIiwiYm9yZGVyU3R5bGUiLCJib3JkZXJXaWR0aCIsImRhdGVDZWxsV3JhcHBlclByb3BzIiwiaGFzQWxlcnQiLCJmbGV4IiwiYm9yZGVyTGVmdCIsInRpbWVTbG90V3JhcHBlclByb3BzIiwiaGFzQ3VzdG9tSW5mbyIsImdldEhvdXJzIiwiZXZlbnRXcmFwcGVyUHJvcHMiLCJnZXRNaW51dGVzIiwidGltZUd1dHRlcldyYXBwZXJQcm9wcyIsInNldEhvdXJzIiwiTWV0YSIsIl9fcGFnZSIsIkVycm9yIiwiZG9jc09ubHkiLCJjb21wb25lbnRNZXRhIiwiaW5jbHVkZVN0b3JpZXMiLCJtZHhTdG9yeU5hbWVUb0tleSIsIkFkZENvbnRleHQiLCJtZHhDb21wb25lbnRBbm5vdGF0aW9ucyIsImV4cG9ydHMiLCJfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18iLCJtb2R1bGUiLCJsb2NhbHMiLCJ3ZWJwYWNrQ29udGV4dCIsInJlcSIsIndlYnBhY2tDb250ZXh0UmVzb2x2ZSIsIl9fd2VicGFja19yZXF1aXJlX18iLCJvIiwiY29kZSIsIndlYnBhY2tDb250ZXh0S2V5cyIsInJlc29sdmUiLCJhcGkiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNvbmZpZ3VyZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/examples/project.json b/examples/project.json index 2b5eda0fc..0dd7c4fd0 100644 --- a/examples/project.json +++ b/examples/project.json @@ -1 +1 @@ -{"generatedAt":1724418752891,"builder":{"name":"webpack5"},"hasCustomBabel":false,"hasCustomWebpack":true,"hasStaticDirs":false,"hasStorybookEslint":true,"refCount":0,"packageManager":{"type":"yarn","version":"1.22.22"},"storybookVersion":"6.5.16","language":"javascript","storybookPackages":{"@storybook/addon-actions":{"version":"6.5.16"},"@storybook/addon-jest":{"version":"6.5.16"},"@storybook/builder-webpack5":{"version":"6.5.16"},"@storybook/manager-webpack5":{"version":"6.5.16"},"@storybook/react":{"version":"6.5.16"},"@storybook/theming":{"version":"6.5.16"},"eslint-plugin-storybook":{"version":"0.6.15"}},"framework":{"name":"react"},"addons":{"@storybook/addon-links":{"version":"6.5.16"},"@storybook/addon-essentials":{"version":"6.5.16"},"@storybook/preset-scss":{"options":{"rule":{"test":{}},"cssLoaderOptions":{"modules":{"localIdentName":"[name]__[local]--[hash:base64:5]"}}},"version":"1.0.3"},"@storybook/addon-postcss":{"options":{"postcssLoaderOptions":{}},"version":"2.0.0"}}} +{"generatedAt":1726164547470,"builder":{"name":"webpack5"},"hasCustomBabel":false,"hasCustomWebpack":true,"hasStaticDirs":false,"hasStorybookEslint":true,"refCount":0,"packageManager":{"type":"yarn","version":"1.22.22"},"storybookVersion":"6.5.16","language":"javascript","storybookPackages":{"@storybook/addon-actions":{"version":"6.5.16"},"@storybook/addon-jest":{"version":"6.5.16"},"@storybook/builder-webpack5":{"version":"6.5.16"},"@storybook/manager-webpack5":{"version":"6.5.16"},"@storybook/react":{"version":"6.5.16"},"@storybook/theming":{"version":"6.5.16"},"eslint-plugin-storybook":{"version":"0.6.15"}},"framework":{"name":"react"},"addons":{"@storybook/addon-links":{"version":"6.5.16"},"@storybook/addon-essentials":{"version":"6.5.16"},"@storybook/preset-scss":{"options":{"rule":{"test":{}},"cssLoaderOptions":{"modules":{"localIdentName":"[name]__[local]--[hash:base64:5]"}}},"version":"1.0.3"},"@storybook/addon-postcss":{"options":{"postcssLoaderOptions":{}},"version":"2.0.0"}}}