diff --git a/package-lock.json b/package-lock.json index 833fa4e..7d2ad31 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "eslint-plugin-react": "^7.37.1", "eslint-plugin-react-hooks": "^4.6.2", "i": "^0.3.7", + "lodash": "^4.17.21", "npm": "^10.8.3", "react": "^18.3.1", "react-calendar": "^5.0.0", @@ -2828,6 +2829,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", diff --git a/package.json b/package.json index 69485b5..43b33f0 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "eslint-plugin-react": "^7.37.1", "eslint-plugin-react-hooks": "^4.6.2", "i": "^0.3.7", + "lodash": "^4.17.21", "npm": "^10.8.3", "react": "^18.3.1", "react-calendar": "^5.0.0", diff --git a/src/app/DailyRoutineView.tsx b/src/app/DailyRoutineView.tsx index 443da4e..4c9d5ed 100644 --- a/src/app/DailyRoutineView.tsx +++ b/src/app/DailyRoutineView.tsx @@ -5,7 +5,6 @@ import { useCallback, useEffect, useState } from "react"; import { Day } from "shared/day"; import { usePageRoute } from "./use-page-route"; import "./style.css"; -import { DrQueryClient } from "./query-client"; // FIXME: setPage로 렌더링 1번, cmd를 적용해서 다시 렌더링까지 총 2번의 렌더링이 발생한다. 추후 여건되면 최적화 가능 diff --git a/src/entities/archive.ts b/src/entities/archive.ts index f6a0514..11cb4f1 100644 --- a/src/entities/archive.ts +++ b/src/entities/archive.ts @@ -3,7 +3,7 @@ import { RoutineNote, routineNoteService, Task } from "entities/routine-note"; //////////////////////////////////// import { fileAccessor } from "shared/file/file-accessor"; import { plugin } from "shared/plugin-service-locator"; -import { TFile } from "obsidian"; +import { TAbstractFile, TFile } from "obsidian"; import { Day } from "shared/day"; import moment from "moment"; import { FileNotFoundError } from "shared/file/errors"; @@ -51,8 +51,9 @@ export const routineNoteArchiver: RoutineNoteArchiver = { const notes: RoutineNote[] = []; const s = start.moment; const e = end.moment; - const routineNoteFiles = fileAccessor.getFolder(plugin().settings.routineArchiveFolderPath).children.filter(file => file instanceof TFile); + const routineNoteFiles: TAbstractFile[] = fileAccessor.getFolder(plugin().settings.routineArchiveFolderPath).children.filter(file => file instanceof TFile); for(const file of routineNoteFiles){ + if(!(file instanceof TFile)) continue; const day = moment(file.basename); if(day.isBetween(s, e, 'day', '[]')){ notes.push(await parseFile(file)); diff --git a/src/entities/routine-note.ts b/src/entities/routine-note.ts index 7233028..b48b609 100644 --- a/src/entities/routine-note.ts +++ b/src/entities/routine-note.ts @@ -4,7 +4,9 @@ import moment from "obsidian"; +export type TaskType = "routine" | "todo"; export interface Task { + type: TaskType; name: string; checked: boolean; } @@ -16,6 +18,11 @@ export interface RoutineNote { } + +interface TaskMetaData { + type: TaskType; +} + interface TaskCompletion { total: number; uncompleted: number; @@ -65,7 +72,13 @@ export const routineNoteService: RoutineNoteService = { `--- --- # Tasks -${routineNote.tasks.map(task => `- [${task.checked ? 'x' : ' '}] [[${task.name}]]`).join('\n')} +${routineNote.tasks.map(task => { + const checked = task.checked ? 'x' : ' '; + const data = { + type: "routine" + } + return `- [${checked}] [[${task.name}]]`; +}).join('\n')} `; return content; }, @@ -76,8 +89,13 @@ ${routineNote.tasks.map(task => `- [${task.checked ? 'x' : ' '}] [[${task.name}] const tasks: Task[] = content.split('# Tasks')[1].split('\n').flatMap(line => { if(line.trim() === '') return []; const checked = line.startsWith('- [x]'); - const name = line.split('] ')[1].replace('[[', '').replace(']]', ''); - return { name, checked }; + const name = line.split('] ')[1].split('', '')) as TaskMetaData; + return { + type: data.type, + name, + checked + }; }); return { @@ -152,6 +170,7 @@ const deriveRoutineTask = (routine: Routine, day: Day): RoutineTask | null => { if (!routine.properties.dayOfWeeks.contains(day.getDayOfWeek())) return null; return { + type: "routine", name: routine.name, checked: false }; diff --git a/src/features/days/DaysNav.tsx b/src/features/days/DaysNav.tsx index d64d548..716a263 100644 --- a/src/features/days/DaysNav.tsx +++ b/src/features/days/DaysNav.tsx @@ -3,7 +3,7 @@ import clsx from "clsx"; import React, { useCallback, useEffect, useMemo, useRef, useState } from "react"; import "./days-nav.scss"; import { PerCentageCircle } from "shared/components/PercentageCircle"; -import { Navigation, Mousewheel } from 'swiper/modules'; +import { Navigation } from 'swiper/modules'; import { Swiper, SwiperClass, SwiperRef, SwiperSlide } from 'swiper/react'; import 'swiper/swiper-bundle.css'; import { routineNoteArchiver } from "entities/archive"; @@ -183,20 +183,15 @@ export const DaysNav = ({ currentDay, onDayClick }: DaysNavProps) => { }, []); - return ( <> { + passiveListeners={false} + touchMoveStopPropagation={true} // touchmove 이벤트가 부모로 전파되지 않도록 한다. + preventInteractionOnTransition={true} // transition 중에는 interaction을 막는다. + modules={[Navigation]} + onToEdge={async(swiper: SwiperClass) =>{ // 3개 이하는 초기값 설정이 아직 안되어있는 상태임 if(weeks.length < 3) return; await onSlideToEdge(swiper.isBeginning ? "start" : "end") diff --git a/src/features/routine/index.ts b/src/features/routine/index.ts index fa67379..d659913 100644 --- a/src/features/routine/index.ts +++ b/src/features/routine/index.ts @@ -1,3 +1,2 @@ import "./style.scss" -export { openAddRoutineModal } from "./add-routine"; -export { RoutineTask } from "./RoutineTask"; \ No newline at end of file +export { openAddRoutineModal } from "./add-routine"; \ No newline at end of file diff --git a/src/features/task/Task.tsx b/src/features/task/Task.tsx index 35775c6..efa8bc1 100644 --- a/src/features/task/Task.tsx +++ b/src/features/task/Task.tsx @@ -1,9 +1,13 @@ -import { Task as TaskEntity } from "entities/routine-note"; +import { RoutineNote, Task as TaskEntity } from "entities/routine-note"; //////////////////////////// -import React, { useCallback, useEffect, useRef, useState } from "react" +import React, { useCallback, useEffect, useMemo, useRef, useState } from "react" import clsx from "clsx"; import "./task.scss"; -import { useDrag } from "react-dnd"; +import { useDrag, useDrop, XYCoord } from "react-dnd"; +import { useRoutineNoteState } from "./task-context"; +import _ from "lodash"; +import { Day } from "shared/day"; +import { moment } from "obsidian"; /** @@ -49,6 +53,15 @@ export const Task = ({ className, task, onOptionClick, onT }); }, [task, onTaskClick]) + /////////////////////////////////////////////////////////////////////////// + // option 클릭시 콜백함수 + const optionClick = useCallback((e: React.MouseEvent) => { + e.stopPropagation(); + if(onOptionClick){ + onOptionClick(task); + } + }, [task, onOptionClick]) + // taskRef /////////////////////////////////////////////////////////////// const taskRef = useRef(null); @@ -57,6 +70,7 @@ export const Task = ({ className, task, onOptionClick, onT // DND //////////////////////////////////////////////////////// const [dragState, setDragState] = useState({type: "idle"}); + const [ routineNote, setRoutineNote ] = useRoutineNoteState(); const [{isDragging}, drag] = useDrag({ type: "task", @@ -65,7 +79,6 @@ export const Task = ({ className, task, onOptionClick, onT return {task}; }, end: (item, monitor) => { - console.log('end'); const dropResult = monitor.getDropResult(); if(dropResult){ console.log(dropResult); @@ -74,13 +87,61 @@ export const Task = ({ className, task, onOptionClick, onT collect: (monitor) => ({ isDragging: monitor.isDragging() }) - }) + }, [task]) + const getHixArea = useCallback(({ y }: XYCoord): "top" | "bottom" | null => { + if(!taskRef.current) return null; + const dropElOffset = taskRef.current.getBoundingClientRect(); + const dropTargetHeight = dropElOffset.height; + // 전체 task 높이 중에서 윗부분 n%, 아랫부분 n%에 hit한 경우 각각 topHix, bottomHix로 처리 + const hitBoundary = 0.35; + const dropTargetAvailableHeightPerHixboxes = dropTargetHeight * hitBoundary; + + // RETURN + if(y < dropElOffset.top + dropTargetAvailableHeightPerHixboxes) return "top"; + if(y > dropElOffset.bottom - dropTargetAvailableHeightPerHixboxes) return "bottom"; + return null; + }, []) + + const replaceTask = useCallback((target: T, hit: "top" | "bottom"): RoutineNote => { + return { + ...routineNote, + tasks: routineNote.tasks.reduce((acc, t) => { + if(t.name === task.name && hit === "top"){ + acc.push(target); + } + if(t.name === target.name) return acc; + acc.push(t); + if(t.name === task.name && hit === "bottom"){ + acc.push(target); + } + return acc; + }, [] as TaskEntity[]) + } + }, [routineNote, task]) + + const [ , drop ] = useDrop({ + accept: "task", + hover(item, monitor) { + // drag와 drop이 같은 task일 경우는 무시 + if(item.task.name === task.name) return; + const xy = monitor.getClientOffset()??{x: -1, y: -1}; + const hit = getHixArea(xy); + if(!hit) return; + + const newRoutineNote = replaceTask(item.task, hit); + setRoutineNote(newRoutineNote); + }, + drop: (item: {task: T}) => { + return {task: item.task}; + } + }, [task, routineNote, replaceTask, getHixArea, setRoutineNote]) + const touchTimeoutRef = useRef(); /** - * taskRef에 dragSource를 할당. touchstart, touchend 이벤트를 통해 일정시간 클릭시 드래그 가능 상태로 전환 + * taskRef에 dragSource, dropSource를 할당. touchstart, touchend 이벤트를 통해 일정시간 클릭시 드래그 가능 상태로 전환 */ useEffect(() => { if(!taskRef.current) return; @@ -88,67 +149,57 @@ export const Task = ({ className, task, onOptionClick, onT const el = taskRef.current; // dnd 할당 drag(el); + drop(el); + }, [drag, drop]) - // touchstart, touchend 이벤트를 통해 dragState 변경 - const touchStart = () => { - touchTimeoutRef.current = setTimeout(() => { - setDragState({type: "ready"}); - }, 500); + // touchstart, touchend 이벤트를 통해 dragState 변경 + const touchStart = useCallback(() => { + touchTimeoutRef.current = setTimeout(() => { + setDragState({type: "ready"}); + }, 500); + }, []) + const touchEnd = useCallback(() => { + if(touchTimeoutRef.current){ + clearTimeout(touchTimeoutRef.current); + touchTimeoutRef.current = null; } - const touchEnd = () => { - if(touchTimeoutRef.current){ - clearTimeout(touchTimeoutRef.current); - touchTimeoutRef.current = null; - } - setDragState({type: "idle"}); - } - - // register and cleanup - el.addEventListener('touchstart', touchStart); - el.addEventListener('touchend', touchEnd); - return () => { - el.removeEventListener('touchstart', touchStart); - el.removeEventListener('touchend', touchEnd); - } - }, [drag]) - - - + setDragState({type: "idle"}); + }, []) return ( - <> -
+
+
{/* MAIN */} -
-
- - - - - - {task.name} -
+
+ + + + + + {task.name}
{/* 옵션 */}
{if(onOptionClick) onOptionClick(task)}} - // ref={dragHandleRef} + onClick={optionClick} > @@ -156,6 +207,6 @@ export const Task = ({ className, task, onOptionClick, onT
- +
) } diff --git a/src/features/task/index.ts b/src/features/task/index.ts index b1a6bd7..8ddeab5 100644 --- a/src/features/task/index.ts +++ b/src/features/task/index.ts @@ -1,2 +1,2 @@ -export { Task } from "./Task"; -export { TaskContext } from "./context"; \ No newline at end of file +export { TaskContext } from "./task-context"; +export { RoutineTask } from "../../widgets/tasks/RoutineTask"; \ No newline at end of file diff --git a/src/features/task/context.tsx b/src/features/task/task-context.tsx similarity index 60% rename from src/features/task/context.tsx rename to src/features/task/task-context.tsx index ba53275..7e8ca20 100644 --- a/src/features/task/context.tsx +++ b/src/features/task/task-context.tsx @@ -1,6 +1,7 @@ -import { RoutineNote, Task } from "entities/routine-note"; -import { createStoreContext } from "shared/create-store-context"; -import React from "react"; +import { RoutineNote } from "entities/routine-note"; +import { Task } from "entities/routine-note"; +/////////////////////////////////////////////////////// +import React, { Dispatch, SetStateAction, useState } from "react"; import { HTML5Backend } from "react-dnd-html5-backend"; import { TouchBackend } from "react-dnd-touch-backend"; import { @@ -9,17 +10,11 @@ import { MouseTransition, Preview } from "react-dnd-multi-backend"; -import { delay } from "lodash"; +import { createUseStateSyncedStore, UseStateRv } from "shared/zustand/create-use-state-synced-store"; -interface UseTaskStore { - routineNote: RoutineNote; - -} -const {Context, useStoreHook} = createStoreContext((note, set, get) => ({ - routineNote: note, -})) +const {StoreProvider, useStoreHook} = createUseStateSyncedStore(); const HTML5toTouch = { @@ -44,12 +39,12 @@ const HTML5toTouch = { interface TaskContextProps { - routineNote: RoutineNote; + useRoutineNoteState: UseStateRv; children: React.ReactNode; } -export const TaskContext = ({ routineNote, children }: TaskContextProps) => { +export const TaskContext = ({ useRoutineNoteState, children }: TaskContextProps) => { return ( - + {children} { @@ -60,8 +55,8 @@ export const TaskContext = ({ routineNote, children }: TaskContextProps) => { }} - + ) } -export const useTaskStore = useStoreHook; \ No newline at end of file +export const useRoutineNoteState = useStoreHook; \ No newline at end of file diff --git a/src/features/task/task.scss b/src/features/task/task.scss index c213d58..797cab2 100644 --- a/src/features/task/task.scss +++ b/src/features/task/task.scss @@ -5,35 +5,27 @@ box-sizing: border-box; } -// 개별 루틴 +// 루틴 기본 레이아웃 .dr-task { - display: flex; - align-items: center; - justify-content: space-between; + display: block; font-size: 16px; /* 전체적 루틴의 사이즈를 결정 */ width: 100%; - height: 1.6em; - margin: calc(0.6em) 0; - &.dr-task--pressed { // context menu를 표시하려고 누르고 있는 상태에 - box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); - } - .dr-task__main { - width: 90%; + height: 2.3em; + padding: 0 0.5em; + margin: 0 0; + cursor: pointer; + + .dr-task__container { + display: flex; + align-items: center; + justify-content: space-between; height: 100%; - cursor: pointer; - position: relative; - padding: 0; - margin: 0; - - .dr-task__flex { - display: flex; - position: absolute; - top: 50%; - transform: translateY(-50%); - width: 100%; - line-height: 1; - align-items: center; + .dr-task__main { + display: flex; + align-items: center; + line-height: 1; + .dr-task__cbx { position: relative; top: calc(1/32 * 1em); @@ -101,17 +93,24 @@ } } } - } - .dr-task__option { - width: 1.2em; - cursor: pointer; + + .dr-task__option { + width: 1.2em; + cursor: pointer; + position: relative; + svg { + position: absolute; + transform: translateY(-50%); + width: 1.2em; + } + } } } // 체크된 상태 .dr-task.dr-task--checked { - .dr-task__flex { + .dr-task__container .dr-task__main { .dr-task__cbx { border-color: transparent; svg { @@ -140,7 +139,17 @@ } } - +// dnd .dr-task--ready, .dr-task--dragging { - font-size: 20px; + position: relative; + &::after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border-radius: 5px; + background-color: rgba(203, 203, 203, 0.5); + } } \ No newline at end of file diff --git a/src/pages/routine-note/RoutineNote.tsx b/src/pages/routine-note/RoutineNote.tsx index 2afbb2a..21c04e8 100644 --- a/src/pages/routine-note/RoutineNote.tsx +++ b/src/pages/routine-note/RoutineNote.tsx @@ -3,13 +3,13 @@ import { loadOrCreateRoutineNote } from "entities/utils"; import { RoutineNote as RoutineNoteEntity, routineNoteService } from "entities/routine-note"; import { openAddRoutineModal } from "features/routine"; import { DaysNav } from "features/days/DaysNav"; -import { RoutineTask } from "features/routine"; +import { useDaysNav } from "features/days"; ///////////////////// -import { useCallback, useEffect, useRef, useState } from "react"; +import { useCallback, useEffect, useMemo, useState } from "react"; import { Day } from "shared/day"; import "./routine-note.scss"; -import { useDaysNav } from "features/days"; -import { TaskContext } from "features/task"; +import { TaskList } from "widgets/tasks"; + interface RoutineNoteProps { @@ -21,31 +21,37 @@ export const RoutineNote = ({ day: propsDay }: RoutineNoteProps) => { // 노트 상태 const [ note, setNote ] = useState(null); - // day변수. day는 리렌더링을 트리거하지 않음. 리렌더링은 day의 파생상태인 note를 통해서 발생. - const dayRef = useRef(propsDay); + // note의 파생상태인 day. + const day = useMemo(() => { + if(!note) return Day.now(); + return note.day; + }, [note]); - // daysNav에 현재 보고있는 note의 완료율을 동적으로 전달하기 위한 상태 - const updatePercentage = useDaysNav(state => state.updatePercentage); - - useEffect(() => { // props와 동기화 - setDayRef(propsDay); - }, [propsDay]); - - // setDayRef - const setDayRef = useCallback((_day: Day) => { - dayRef.current = _day; + // setNoteBasedOnDay로 day를 기준으로 note 상태를 변경할 수 있다. + const setNoteBasedOnDay = useCallback((_day: Day) => { // Day가 변경되면 해당하는 RoutineNote를 가져와서 설정 loadOrCreateRoutineNote(_day) .then(note => { setNote(note); }); - }, [dayRef]); + }, [day]); + + // props로 넘겨진 day를 기준으로 note를 동기화 + useEffect(() => { + setNoteBasedOnDay(propsDay); + }, [propsDay]); + + + ///////////////////////////////////////////////////////////////////////// + // daysNav에 현재 보고있는 note의 완료율을 동적으로 전달하기 위한 상태 + const updatePercentage = useDaysNav(state => state.updatePercentage); + ////////////////////////////////////////// // DaysNav에서 day 버튼 클릭시 콜백(day 변경) const onDayClick = useCallback((day: Day) => { - setDayRef(day); - }, [setDayRef]); + setNoteBasedOnDay(day); + }, [setNoteBasedOnDay]); //////////////////////////////////////// // routine 추가 버튼 콜백 @@ -61,18 +67,16 @@ export const RoutineNote = ({ day: propsDay }: RoutineNoteProps) => { if(!note) return; const newPercentage = routineNoteService.getTaskCompletion(note).percentageRounded; updatePercentage({ - day: dayRef.current, + day: day, percentage: newPercentage }); }, [note]); - - if(!note) return (
Loading...
); return (
- +
@@ -80,11 +84,10 @@ export const RoutineNote = ({ day: propsDay }: RoutineNoteProps) => {
- - {note.tasks.map((task, idx) => { - return - })} - +
); diff --git a/src/shared/create-store-context.tsx b/src/shared/zustand/create-store-context.tsx similarity index 73% rename from src/shared/create-store-context.tsx rename to src/shared/zustand/create-store-context.tsx index 44c5591..c68f745 100644 --- a/src/shared/create-store-context.tsx +++ b/src/shared/zustand/create-store-context.tsx @@ -26,12 +26,12 @@ const createStoreWithInit: (initializer: Initializer) => (data: D) = interface StoreContextProviderProps { - initialData: D; + data: D; onDataChanged?: (state: S, data: D) => void; children: React.ReactNode; } export const createStoreContext = (initializer: Initializer): { - Context: React.FC>, + StoreProvider: React.FC>, useStoreHook: (selector: (state: S) => R) => R; } => { const StoreContext = createContext | null>(null); @@ -44,22 +44,22 @@ export const createStoreContext = (initializer: Initializer): { * 만약 onDataChanged가 주어지지 않으면, initialData가 변경될 때마다 해당 context에서 관리되는 store 인스턴스 자체가 초기화된다. * 이 경우 하위 모든 컴포넌트들이 리렌더링되므로 주의. */ - const Provider = React.memo(function Provider({ initialData, onDataChanged, children }: StoreContextProviderProps) { - const storeRef = useRef(store(initialData)); + const Provider = React.memo(function Provider({ data, onDataChanged, children }: StoreContextProviderProps) { + const storeRef = useRef(store(data)); + useEffect(() => { if(onDataChanged){ - onDataChanged(storeRef.current.getState(), initialData); + onDataChanged(storeRef.current.getState(), data); + } else { + storeRef.current = store(data); } - }, [initialData, onDataChanged]); - return {children}; - }, (prev, next) => { - // onDataChanged가 정의되었다면 컴포넌트를 절대 리렌더링되지 않는다. - if(prev.onDataChanged){ - return true; - // onDataChanged가 정의되지 않았다면, initialData가 변경될 때마다 리렌더링된다. - } else { - return prev.initialData !== next.initialData; - } + }, [data, onDataChanged]); + + return ( + + {children} + + ) }); @@ -70,5 +70,5 @@ export const createStoreContext = (initializer: Initializer): { return useStore(store, selector); } - return { Context: Provider, useStoreHook }; + return { StoreProvider: Provider, useStoreHook }; } \ No newline at end of file diff --git a/src/shared/zustand/create-use-state-synced-store.tsx b/src/shared/zustand/create-use-state-synced-store.tsx new file mode 100644 index 0000000..9193fa7 --- /dev/null +++ b/src/shared/zustand/create-use-state-synced-store.tsx @@ -0,0 +1,98 @@ +/** + * useState와 store를 동기화해준다. + * 상위 컴포넌트에서 사용하는 useState를 하위 레이어들에게 context로, 또는 store 상태로 전달하고싶을 때 유용하다. + * 이렇게하면 하위 컴포넌트에서 상위 컴포넌트의 state를 변경하는 것도 가능하다. + */ +import { StoreApi, useStore } from 'zustand'; +import { createStore } from 'zustand/vanilla'; +import { createContext, Dispatch, SetStateAction, useContext, useEffect, useRef } from 'react'; +import React from 'react'; + + +// useState Return Value의 타입을 정의 +// ReturnType는 [S, Dispatch>] 타입을 반환하고, 0번 인덱스의 falsy함을 제거하지 못함. +export interface UseStateRv { + state: S; + setState: Dispatch>; +} +// useState의 반환값을 UseStateRv로 변환해주는 함수 +const getUseStateRvFromUseStateReturnType = function(useState: UseState): UseStateRv { + if(Array.isArray(useState)) { + return { + state: useState[0], + setState: useState[1] + } + } else { + return useState; + } +} + +// 어떤 형태의 useState든... +type UseState = UseStateRv | [S, Dispatch>] + +// store 타입 +interface UseStateSyncStore{ + state: S; + setState: (state: S) => void; +} + +// () => (useStateRv: UseStateRv) => StoreApi> +// 해당 함수는 useState를 받아서 store를 생성후 동기화해서 반환하는 함수를 반환한다. +const createSyncedStore = (useStateRv: UseStateRv): StoreApi> => { + const store = createStore>((set, get) => ({ + state: useStateRv.state, + setState: (state: S) => { + set({ state }); + if(!Object.is(useStateRv.state, state)){ + useStateRv.setState(state) + } + } + })); + return store; +} + + +interface StoreContextProviderProps { + useState: UseState; + children: React.ReactNode; +} +export const createUseStateSyncedStore = (): { + StoreProvider: React.FC>, + useStoreHook: () => [S, (state: S) => void]; +} => { + const StoreContext = createContext> | null>(null); + + /** + * Provider 컴포넌트의 initialData는 최초 store 초기화만을 담당한다. + * 그 이후 변경된 데이터에 대한 처리는 onDataChanged 콜백을 이용하도록한다. + * + * 만약 onDataChanged가 주어지지 않으면, initialData가 변경될 때마다 해당 context에서 관리되는 store 인스턴스 자체가 초기화된다. + * 이 경우 하위 모든 컴포넌트들이 리렌더링되므로 주의. + */ + const Provider = React.memo(function Provider({ useState, children }: StoreContextProviderProps) { + const useStateRv = getUseStateRvFromUseStateReturnType(useState); + const storeRef = useRef(createSyncedStore(useStateRv)); + + useEffect(() => { + if(!Object.is(storeRef.current.getState().state, useStateRv.state)){ + storeRef.current.setState({state: useStateRv.state}); + } + }, [useStateRv.state]) + + return ( + + {children} + + ) + }); + + + const useStoreHook = (): [S, (state: S) => void] => { + const store = useContext(StoreContext); + if (!store) throw new Error("해당 context에서는 store가 정의되지 않습니다. 올바른 컨텍스트에서 접근가능"); + const {state, setState} = useStore(store); + return [state, setState]; + } + + return { StoreProvider: Provider, useStoreHook }; +} \ No newline at end of file diff --git a/src/features/routine/RoutineTask.tsx b/src/widgets/tasks/RoutineTask.tsx similarity index 70% rename from src/features/routine/RoutineTask.tsx rename to src/widgets/tasks/RoutineTask.tsx index 3a55b1d..6eeee9a 100644 --- a/src/features/routine/RoutineTask.tsx +++ b/src/widgets/tasks/RoutineTask.tsx @@ -1,18 +1,20 @@ +import { routineNoteService, RoutineTask as RoutineTaskEntity } from "entities/routine-note"; import { routineNoteArchiver } from "entities/archive"; import { routineManager } from "entities/routine"; -import { Task } from "features/task"; -import { RoutineNote, routineNoteService, RoutineTask as RoutineTaskEntity } from "entities/routine-note"; +import { openRoutineOptionModal } from "features/routine/routine-option"; +import { useRoutineNoteState } from "features/task/task-context"; +import { Task } from "features/task/Task"; //////////////////////////// -import { useCallback } from "react" -import { openRoutineOptionModal } from "./routine-option"; +import React, { useCallback } from "react" interface RoutineTaskProps { - routineNote: RoutineNote; routineTask: RoutineTaskEntity; onTaskClick?: (task: RoutineTaskEntity) => void; } -export const RoutineTask = ({ routineNote, routineTask, onTaskClick }: RoutineTaskProps) => { +export const RoutineTask = React.memo(({ routineTask, onTaskClick }: RoutineTaskProps) => { + + const [ routineNote, ] = useRoutineNoteState(); // 루틴 클릭시 const onClick = useCallback((task: RoutineTaskEntity) => { @@ -44,4 +46,4 @@ export const RoutineTask = ({ routineNote, routineTask, onTaskClick }: RoutineTa onTaskClick={onClick} /> ) -} +}); \ No newline at end of file diff --git a/src/widgets/tasks/TaskList.tsx b/src/widgets/tasks/TaskList.tsx new file mode 100644 index 0000000..6039bed --- /dev/null +++ b/src/widgets/tasks/TaskList.tsx @@ -0,0 +1,36 @@ +import { RoutineNote, Task, } from "entities/routine-note"; +import { RoutineTask, TaskContext } from "features/task"; +import React from "react"; +import { UseStateRv } from "shared/zustand/create-use-state-synced-store"; + + + + + +interface TaskListProps { + useRoutineNoteState: UseStateRv; + onTaskClick?: (task: Task) => void; +} +export const TaskList = React.memo(({ useRoutineNoteState, onTaskClick}: TaskListProps) => { + + + return ( + + { + useRoutineNoteState.state.tasks.map(task => { + if(task.type === "routine"){ + return ( + { + if(onTaskClick) onTaskClick(task) + }} + /> + ) + } + }) + } + + ) +}); \ No newline at end of file diff --git a/src/widgets/tasks/index.ts b/src/widgets/tasks/index.ts new file mode 100644 index 0000000..1c7442a --- /dev/null +++ b/src/widgets/tasks/index.ts @@ -0,0 +1 @@ +export { TaskList } from "./TaskList"; \ No newline at end of file diff --git a/styles.css b/styles.css index e397708..97e2df6 100644 --- a/styles.css +++ b/styles.css @@ -50,145 +50,6 @@ color: rgba(var(--color-red-rgb), 1); } -/* src/features/task/task.scss */ -.dr-task *, -.dr-task ::after, -.dr-task ::before { - box-sizing: border-box; -} -.dr-task { - display: flex; - align-items: center; - justify-content: space-between; - font-size: 16px; - width: 100%; - height: 1.6em; - margin: 0.6em 0; -} -.dr-task.dr-task--pressed { - box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); -} -.dr-task .dr-task__main { - width: 90%; - height: 100%; - cursor: pointer; - position: relative; - padding: 0; - margin: 0; -} -.dr-task .dr-task__main .dr-task__flex { - display: flex; - position: absolute; - top: 50%; - transform: translateY(-50%); - width: 100%; - line-height: 1; - align-items: center; -} -.dr-task .dr-task__main .dr-task__flex .dr-task__cbx { - position: relative; - top: 0.03125em; - display: inline-block; - width: 0.875em; - height: 0.875em; - margin-right: 0.5em; - border: 0.0625em solid #c8ccd4; - border-radius: 3px; - cursor: pointer; -} -.dr-task .dr-task__main .dr-task__flex .dr-task__cbx svg { - position: relative; - width: 0.875em; - height: 0.75em; - top: -0.0625em; - transform: scale(0); - fill: none; - stroke-linecap: round; - stroke-linejoin: round; -} -.dr-task .dr-task__main .dr-task__flex .dr-task__cbx svg polyline { - stroke-width: 2; - stroke: hsla(var(--color-accent-1-hsl), 1); -} -.dr-task .dr-task__main .dr-task__flex .dr-task__cbx:before { - content: ""; - position: absolute; - top: 50%; - left: 50%; - margin: -0.625em 0 0 -0.625em; - width: 1.25em; - height: 1.25em; - border-radius: 100%; - background: hsla(var(--color-accent-1-hsl), 1); - transform: scale(0); -} -.dr-task .dr-task__main .dr-task__flex .dr-task__cbx:after { - content: ""; - position: absolute; - top: 0.3125em; - left: 0.3125em; - width: 0.125em; - height: 0.125em; - border-radius: 2px; - box-shadow: - 0 -1.125em 0 hsla(var(--color-accent-1-hsl), 1), - 0.75em -0.75em 0 hsla(var(--color-accent-1-hsl), 1), - 1.125em 0 0 hsla(var(--color-accent-1-hsl), 1), - 0.75em 0.75em 0 hsla(var(--color-accent-1-hsl), 1), - 0 1.125em 0 hsla(var(--color-accent-1-hsl), 1), - -0.75em 0.75em 0 hsla(var(--color-accent-1-hsl), 1), - -1.125em 0 0 hsla(var(--color-accent-1-hsl), 1), - -0.75em -0.75em 0 hsla(var(--color-accent-1-hsl), 1); - transform: scale(0); -} -.dr-task .dr-task__main .dr-task__flex .dr-task__name { - position: relative; - cursor: pointer; - transition: color 0.3s ease; -} -.dr-task .dr-task__main .dr-task__flex .dr-task__name:after { - content: ""; - position: absolute; - top: 50%; - left: 0; - width: 0; - height: 1px; - background: #9098a9; -} -.dr-task .dr-task__option { - width: 1.2em; - cursor: pointer; -} -.dr-task.dr-task--checked .dr-task__flex .dr-task__cbx { - border-color: transparent; -} -.dr-task.dr-task--checked .dr-task__flex .dr-task__cbx svg { - transform: scale(1); - transition: all 0.4s ease; - transition-delay: 0.1s; -} -.dr-task.dr-task--checked .dr-task__flex .dr-task__cbx:before { - transform: scale(1); - opacity: 0; - transition: all 0.3s ease; -} -.dr-task.dr-task--checked .dr-task__flex .dr-task__cbx:after { - transform: scale(1); - opacity: 0; - transition: all 0.6s ease; -} -.dr-task.dr-task--checked .dr-task__flex .dr-task__name { - color: #9098a9; -} -.dr-task.dr-task--checked .dr-task__flex .dr-task__name:after { - width: 100%; - transition: all 0.4s ease; -} -.dr-task--ready, -.dr-task--dragging { - font-size: 20px; -} - /* src/features/days/days-nav.scss */ .dr-days { display: flex; @@ -904,6 +765,153 @@ button.swiper-pagination-bullet { /* src/pages/routine-note/routine-note.scss */ +/* src/features/task/task.scss */ +.dr-task *, +.dr-task ::after, +.dr-task ::before { + box-sizing: border-box; +} +.dr-task { + display: block; + font-size: 16px; + width: 100%; + height: 2.3em; + padding: 0 0.5em; + margin: 0 0; + cursor: pointer; +} +.dr-task .dr-task__container { + display: flex; + align-items: center; + justify-content: space-between; + height: 100%; +} +.dr-task .dr-task__container .dr-task__main { + display: flex; + align-items: center; + line-height: 1; +} +.dr-task .dr-task__container .dr-task__main .dr-task__cbx { + position: relative; + top: 0.03125em; + display: inline-block; + width: 0.875em; + height: 0.875em; + margin-right: 0.5em; + border: 0.0625em solid #c8ccd4; + border-radius: 3px; + cursor: pointer; +} +.dr-task .dr-task__container .dr-task__main .dr-task__cbx svg { + position: relative; + width: 0.875em; + height: 0.75em; + top: -0.0625em; + transform: scale(0); + fill: none; + stroke-linecap: round; + stroke-linejoin: round; +} +.dr-task .dr-task__container .dr-task__main .dr-task__cbx svg polyline { + stroke-width: 2; + stroke: hsla(var(--color-accent-1-hsl), 1); +} +.dr-task .dr-task__container .dr-task__main .dr-task__cbx:before { + content: ""; + position: absolute; + top: 50%; + left: 50%; + margin: -0.625em 0 0 -0.625em; + width: 1.25em; + height: 1.25em; + border-radius: 100%; + background: hsla(var(--color-accent-1-hsl), 1); + transform: scale(0); +} +.dr-task .dr-task__container .dr-task__main .dr-task__cbx:after { + content: ""; + position: absolute; + top: 0.3125em; + left: 0.3125em; + width: 0.125em; + height: 0.125em; + border-radius: 2px; + box-shadow: + 0 -1.125em 0 hsla(var(--color-accent-1-hsl), 1), + 0.75em -0.75em 0 hsla(var(--color-accent-1-hsl), 1), + 1.125em 0 0 hsla(var(--color-accent-1-hsl), 1), + 0.75em 0.75em 0 hsla(var(--color-accent-1-hsl), 1), + 0 1.125em 0 hsla(var(--color-accent-1-hsl), 1), + -0.75em 0.75em 0 hsla(var(--color-accent-1-hsl), 1), + -1.125em 0 0 hsla(var(--color-accent-1-hsl), 1), + -0.75em -0.75em 0 hsla(var(--color-accent-1-hsl), 1); + transform: scale(0); +} +.dr-task .dr-task__container .dr-task__main .dr-task__name { + position: relative; + cursor: pointer; + transition: color 0.3s ease; +} +.dr-task .dr-task__container .dr-task__main .dr-task__name:after { + content: ""; + position: absolute; + top: 50%; + left: 0; + width: 0; + height: 1px; + background: #9098a9; +} +.dr-task .dr-task__container .dr-task__option { + width: 1.2em; + cursor: pointer; + position: relative; +} +.dr-task .dr-task__container .dr-task__option svg { + position: absolute; + transform: translateY(-50%); + width: 1.2em; +} +.dr-task.dr-task--checked .dr-task__container .dr-task__main .dr-task__cbx { + border-color: transparent; +} +.dr-task.dr-task--checked .dr-task__container .dr-task__main .dr-task__cbx svg { + transform: scale(1); + transition: all 0.4s ease; + transition-delay: 0.1s; +} +.dr-task.dr-task--checked .dr-task__container .dr-task__main .dr-task__cbx:before { + transform: scale(1); + opacity: 0; + transition: all 0.3s ease; +} +.dr-task.dr-task--checked .dr-task__container .dr-task__main .dr-task__cbx:after { + transform: scale(1); + opacity: 0; + transition: all 0.6s ease; +} +.dr-task.dr-task--checked .dr-task__container .dr-task__main .dr-task__name { + color: #9098a9; +} +.dr-task.dr-task--checked .dr-task__container .dr-task__main .dr-task__name:after { + width: 100%; + transition: all 0.4s ease; +} +.dr-task--ready, +.dr-task--dragging { + position: relative; +} +.dr-task--ready::after, +.dr-task--dragging::after { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border-radius: 5px; + background-color: rgba(203, 203, 203, 0.5); +} + /* src/features/calendar/calendar-style.scss */ .react-calendar, .react-calendar *, @@ -1029,4 +1037,4 @@ body { calc(var(--accent-s) * 1.05), calc(var(--accent-l) * 1.29); } -/*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL2ZlYXR1cmVzL3JvdXRpbmUvc3R5bGUuc2NzcyIsICJzcmMvZmVhdHVyZXMvdGFzay90YXNrLnNjc3MiLCAic3JjL2ZlYXR1cmVzL2RheXMvZGF5cy1uYXYuc2NzcyIsICJub2RlX21vZHVsZXMvc3dpcGVyL3N3aXBlci1idW5kbGUuY3NzIiwgInNyYy9mZWF0dXJlcy9jYWxlbmRhci9jYWxlbmRhci1zdHlsZS5zY3NzIiwgInNyYy9hcHAvc3R5bGUuY3NzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIOyalOydvCDshKDtg50gc2VjdGlvblxuLmRyLXJvdXRpbmUtb3B0aW9uLWRheXMge1xuICAmX19saXN0IHtcbiAgICAuZHItcm91dGluZS1vcHRpb24tZGF5c19fZGF5IHtcbiAgICAgIG1hcmdpbjogMCAwLjVlbTtcbiAgICAgICYtLWFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudC0yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSb3V0aW5lIE9wdGlvbiBNb2RhbCDssL1cbi5kci1yb3V0aW5lLW9wdGlvbiB7XG4gIC8qIO2XpOuNlCAqL1xuICAvLyAuZHItcm91dGluZS1vcHRpb25fX2hlYWRlciB7fVxuXG4gIC8qIOyYteyFmCDrs7jrrLggKi9cbiAgc2VjdGlvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMWVtO1xuXG4gICAgLy8g7IS57IWYIO2VmOuCmO2VmOuCmFxuICAgIC5kci1yb3V0aW5lLW9wdGlvbl9fc2VjdGlvbiB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyDsnbTrpoQg67OA6rK9IHNlY3Rpb25cbi5kci1yb3V0aW5lLW9wdGlvbi1uYW1lIHtcbiAgLy8g7J2066aEIOuzgOqyvSBpbnB1dFxuICBkaXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBlbmQ7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaW5wdXQge1xuICAgICAgd2lkdGg6IDQwJTtcbiAgICB9XG4gIH1cbiAgYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogMWVtO1xuICB9XG59XG5cblxuXG4vLyDro6jti7Qg7IKt7KCcIHNlY3Rpb25cbi5kci1yb3V0aW5lLW9wdGlvbi1kZWxldGUge1xuICBidXR0b24ge1xuICAgIGNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXJlZC1yZ2IpLCAxKTtcbiAgfVxufVxuLy8g7IKt7KCcIOuyhO2KvOydhCDriITrpbTrqbQg64KY7Jik64qUIOyCreygnO2ZleyduCDrqqjri6xcbi5kci1yb3V0aW5lLW9wdGlvbi1kZWxldGUtbW9kYWwge1xuICB3aWR0aDogY2FsYyh2YXIoLS1kaWFsb2ctd2lkdGgpICogMC44KTtcbiAgLmRyLXJvdXRpbmUtb3B0aW9uLWRlbGV0ZS1tb2RhbF9fY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW46IDFlbSAwO1xuXG4gICAgZGl2IHtcbiAgICAgIGJ1dHRvbiB7XG4gICAgICAgIHBhZGRpbmc6IDAuNWVtIDFlbTtcbiAgICAgICAgbWFyZ2luOiAwIDAuNWVtO1xuICAgICAgICAmLmRyLXJvdXRpbmUtb3B0aW9uLWRlbGV0ZS1tb2RhbF9fY29uZmlybSB7XG4gICAgICAgICAgY29sb3I6IHJnYmEodmFyKC0tY29sb3ItcmVkLXJnYiksIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCAiLy8g66Oo7Yu0IOy7tO2PrOuEjO2KuCDroIjsnbTslYTsm4Mg7ISk7KCVXG4uZHItdGFzayAqLFxuLmRyLXRhc2sgOjphZnRlcixcbi5kci10YXNrIDo6YmVmb3JlIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLy8g6rCc67OEIOujqO2LtCBcbi5kci10YXNrIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBmb250LXNpemU6IDE2cHg7IC8qIOyghOyytOyggSDro6jti7TsnZgg7IKs7J207KaI66W8IOqysOyglSAqL1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxLjZlbTtcbiAgbWFyZ2luOiBjYWxjKDAuNmVtKSAwO1xuICAmLmRyLXRhc2stLXByZXNzZWQgeyAvLyBjb250ZXh0IG1lbnXrpbwg7ZGc7Iuc7ZWY66Ck6rOgIOuIhOultOqzoCDsnojripQg7IOB7YOc7JeQXG4gICAgYm94LXNoYWRvdzogMCAwIDEwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICB9XG4gIC5kci10YXNrX19tYWluIHtcbiAgICB3aWR0aDogOTAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIFxuICAgIC5kci10YXNrX19mbGV4IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAuZHItdGFza19fY2J4IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IGNhbGMoMS8zMiAqIDFlbSk7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgd2lkdGg6IGNhbGMoMTQvMTYgKiAxZW0pO1xuICAgICAgICBoZWlnaHQ6IGNhbGMoMTQvMTYgKiAxZW0pO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoMC41ZW0pO1xuICAgICAgICBib3JkZXI6IGNhbGMoMS8xNiAqIDFlbSkgc29saWQgI2M4Y2NkNDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OyAvKiDssrTtgazrsJXsiqQg6rOh66WgICovXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgd2lkdGg6IGNhbGMoNy84ICogMWVtKTtcbiAgICAgICAgICBoZWlnaHQ6IGNhbGMoMy80ICogMWVtKTtcbiAgICAgICAgICB0b3A6IGNhbGMoLTEvMTYgKiAxZW0pO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgICAgICAgZmlsbDogbm9uZTtcbiAgICAgICAgICBzdHJva2UtbGluZWNhcDogcm91bmQ7XG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDtcbiAgICAgICAgICBwb2x5bGluZSB7XG4gICAgICAgICAgICBzdHJva2Utd2lkdGg6IDI7XG4gICAgICAgICAgICBzdHJva2U6IGhzbGEodmFyKC0tY29sb3ItYWNjZW50LTEtaHNsKSwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIOyytO2BrO2RnOyLnCDslYTsnbTsvZhcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgbWFyZ2luOiBjYWxjKC01LzggKiAxZW0pIDAgMCBjYWxjKC01LzggKiAxZW0pO1xuICAgICAgICAgIHdpZHRoOiBjYWxjKDUvNCAqIDFlbSk7XG4gICAgICAgICAgaGVpZ2h0OiBjYWxjKDUvNCAqIDFlbSk7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiBoc2xhKHZhcigtLWNvbG9yLWFjY2VudC0xLWhzbCksIDEuMCk7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICAgICAgfVxuICAgICAgICAvKiDssrTtgawg7J207Y6Z7Yq4ICovXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICB0b3A6IGNhbGMoNS8xNiAqIDFlbSk7XG4gICAgICAgICAgbGVmdDogY2FsYyg1LzE2ICogMWVtKTtcbiAgICAgICAgICB3aWR0aDogY2FsYygxLzggKiAxZW0pO1xuICAgICAgICAgIGhlaWdodDogY2FsYygxLzggKiAxZW0pO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgXG4gICAgICAgICAgYm94LXNoYWRvdzogMCBjYWxjKDkvOCAqIC0xZW0pIDAgaHNsYSh2YXIoLS1jb2xvci1hY2NlbnQtMS1oc2wpLCAxLjApLCBjYWxjKDMvNCAqIDFlbSkgY2FsYygzLzQgKiAtMWVtKSAwIGhzbGEodmFyKC0tY29sb3ItYWNjZW50LTEtaHNsKSwgMS4wKSwgY2FsYyg5LzggKiAxZW0pIDAgMCBoc2xhKHZhcigtLWNvbG9yLWFjY2VudC0xLWhzbCksIDEuMCksIGNhbGMoMy80ICogMWVtKSBjYWxjKDMvNCAqIDFlbSkgMCBoc2xhKHZhcigtLWNvbG9yLWFjY2VudC0xLWhzbCksIDEuMCksIDAgY2FsYyg5LzggKiAxZW0pIDAgaHNsYSh2YXIoLS1jb2xvci1hY2NlbnQtMS1oc2wpLCAxLjApLCBjYWxjKDMvNCAqIC0xZW0pIGNhbGMoMy80ICogMWVtKSAwIGhzbGEodmFyKC0tY29sb3ItYWNjZW50LTEtaHNsKSwgMS4wKSwgY2FsYyg5LzggKiAtMWVtKSAwIDAgaHNsYSh2YXIoLS1jb2xvci1hY2NlbnQtMS1oc2wpLCAxLjApLCBjYWxjKDMvNCAqIC0xZW0pIGNhbGMoMy80ICogLTFlbSkgMCBoc2xhKHZhcigtLWNvbG9yLWFjY2VudC0xLWhzbCksIDEuMCk7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICAuZHItdGFza19fbmFtZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzIGVhc2U7XG4gICAgICAgIC8vIOyytO2BrOyEoChjaGVja+uQmOuptCB3aWR0aOulvCAxMDAl66GcIOuwlOq/lOyEnCDslaDri4jrqZTsnbTshZjqs7wg7ZWo6ruYIOuCmO2DgOuCmOuPhOuhnSlcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgYmFja2dyb3VuZDogIzkwOThhOTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAuZHItdGFza19fb3B0aW9uIHtcbiAgICB3aWR0aDogMS4yZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbn1cblxuLy8g7LK07YGs65CcIOyDge2DnFxuLmRyLXRhc2suZHItdGFzay0tY2hlY2tlZCB7XG4gIC5kci10YXNrX19mbGV4IHtcbiAgICAuZHItdGFza19fY2J4IHtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBzdmcge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlO1xuICAgICAgICB0cmFuc2l0aW9uLWRlbGF5OiAwLjFzO1xuICAgICAgfVxuICAgICAgJjpiZWZvcmUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAgICAgfVxuICAgICAgJjphZnRlciB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjZzIGVhc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC5kci10YXNrX19uYW1lIHtcbiAgICAgIGNvbG9yOiAjOTA5OGE5O1xuICAgICAgJjphZnRlciB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi5kci10YXNrLS1yZWFkeSwgLmRyLXRhc2stLWRyYWdnaW5nIHtcbiAgZm9udC1zaXplOiAyMHB4O1xufSIsICIvLyBSb3V0aW5lTm90ZSDsg4Hri6ggRGF5cyBNZW51IFxuLmRyLWRheXMge1xuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3cteDogc2Nyb2xsO1xuICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG4gIHBhZGRpbmctdG9wOiA1cHg7XG5cbiAgLmRyLWRheXNfX2l0ZW1zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNXB4O1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuXG4gICAgLmRyLWRheXNfX2l0ZW0ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgIHBhZGRpbmc6IDAgMC41ZW07XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBib3JkZXItcmFkaXVzOiA3cHg7XG4gICAgICAuZHItZGF5c19fZGF5LW9mLXdlZWsge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgICB9XG4gICAgICAvLyAuZHItcGVyY2VudGFnZS1jaXJjbGUge1xuICAgICAgLy8gfVxuICAgICAgXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8g7ZiE7J6sIOyEoO2DnVxuICAgICAgJi5kci1kYXlzX19jdXJyZW50IHtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAuNmVtIDAuMmVtIHJnYmEoMCwgMCwgMCwgMC4xKSAhaW1wb3J0YW50O1xuICAgICAgICAvLyBiYWNrZ3JvdW5kLWNvbG9yOiAjZDhkOGQ4O1xuICAgICAgfVxuXG4gICAgICAvLyDsmKTriphcbiAgICAgIC8vICYuZHItZGF5c19fdG9kYXkge1xuICAgICAgLy8gICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKHZhcigtLWNvbG9yLWFjY2VudC0xLWhzbCksIDEpICFpbXBvcnRhbnQ7XG4gICAgICAvLyB9XG4gICAgICBcbiAgICB9XG4gIH1cbn0iLCAiLyoqXG4gKiBTd2lwZXIgMTEuMS4xNFxuICogTW9zdCBtb2Rlcm4gbW9iaWxlIHRvdWNoIHNsaWRlciBhbmQgZnJhbWV3b3JrIHdpdGggaGFyZHdhcmUgYWNjZWxlcmF0ZWQgdHJhbnNpdGlvbnNcbiAqIGh0dHBzOi8vc3dpcGVyanMuY29tXG4gKlxuICogQ29weXJpZ2h0IDIwMTQtMjAyNCBWbGFkaW1pciBLaGFybGFtcGlkaVxuICpcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZVxuICpcbiAqIFJlbGVhc2VkIG9uOiBTZXB0ZW1iZXIgMTIsIDIwMjRcbiAqL1xuXG4vKiBGT05UX1NUQVJUICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdzd2lwZXItaWNvbnMnO1xuICBzcmM6IHVybCgnZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQsIGQwOUdSZ0FCQUFBQUFBWmdBQkFBQUFBQURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCR1JsUk5BQUFHUkFBQUFCb0FBQUFjaTZxSGtVZEVSVVlBQUFXZ0FBQUFJd0FBQUNRQVlBQlhSMUJQVXdBQUJoUUFBQUF1QUFBQU51QVk3K3hIVTFWQ0FBQUZ4QUFBQUZBQUFBQm0yZlBjelU5VEx6SUFBQUhjQUFBQVNnQUFBR0JQOVY1UlkyMWhjQUFBQWtRQUFBQ0lBQUFCWXQ2RjBjQmpkblFnQUFBQ3pBQUFBQVFBQUFBRUFCRUJSR2RoYzNBQUFBV1lBQUFBQ0FBQUFBai8vd0FEWjJ4NVpnQUFBeXdBQUFETUFBQUQyTUh0cnlWb1pXRmtBQUFCYkFBQUFEQUFBQUEyRTIrZW9XaG9aV0VBQUFHY0FBQUFId0FBQUNRQzlnRHphRzEwZUFBQUFpZ0FBQUFaQUFBQXJnSmtBQkZzYjJOaEFBQUMwQUFBQUZvQUFBQmFGUUFVR0cxaGVIQUFBQUc4QUFBQUh3QUFBQ0FBY0FCQWJtRnRaUUFBQS9nQUFBRTVBQUFDWHZGZEJ3bHdiM04wQUFBRk5BQUFBR0lBQUFDRTVzNzRoWGphWTJCa1lHQUFZcGY1SHUvaitXMitNbkF6TVlEQXphWDZRakQ2LzQvL0J4ajVHQThBdVJ3TVlHa0FQeXdMMTNqYVkyQmtZR0E4OFA4QWd4NGorLzhmUURZZkExQUVCV2dEQUlCMkJPb0FlTnBqWUdSZ1lOQmg0R2RnWWdBQkVNbklBQkp6WU5BRENRQUFDV2dBc1FCNDJtTmdZZnpDT0lHQmxZR0IwWWN4allHQndSMUtmMldRWkdoaFlHQmlZR1ZtZ0FGR0JpUVFrT2Fhd3REQW9NQlF4WGpnL3dFR1BjWUREQTR3TlVBMkNDZ3dzQUFBTzRFTDZnQUFlTnBqMk0wZ3lBQUNxeGdHTldCa1oyRDQvd01BK3hrRGRnQUFBSGphWTJCZ1lHYUFZQmtHUmdZUWlBSHlHTUY4RmdZSElNM0R3TUhBQkdRck1PZ3lXRExFTTFUOS93OFVCZkVNZ0x6RS8vLy9QLzUvL2YvVi94dityNGVhQUFlTWJBeHdJVVltSU1IRWdLWUFZalVjc0RBd3NMS3hjM0J5Y2ZQdzhqRVFBL2daQkFTRmhFVkV4Y1FsSktXa1pXVGw1QlVVbFpSVlZOWFVOVFFaQmdNQUFNUitFK2dBRVFGRUFBQUFLZ0FxQUNvQU5BQStBRWdBVWdCY0FHWUFjQUI2QUlRQWpnQ1lBS0lBckFDMkFNQUF5Z0RVQU40QTZBRHlBUHdCQmdFUUFSb0JKQUV1QVRnQlFnRk1BVllCWUFGcUFYUUJmZ0dJQVpJQm5BR21BYklCemdIc0FBQjQydTJOTVE2Q1VBeUdXNTY4eDlBbmVZWWdtNE1KYmhLRmFFeElPQVZYOEFwZXdTdDRCaWM0QWZlQWlkM1ZPQml4RHhmUFlFemE1TytYZmkwNFlBRGdnaVVJVUxDdUVKSzhWaE80YlN2cGRua3RISTVRQ1l0ZGkyc2w4Wm5YYUhscVVyTkt6ZEtjVDhjamxxK3J3WlN2SVZjek5pZXpzZm5QL3V6bm1mUEZCTk9ETTJLN01UUTQ1WUVBWnFHUDgxQW1HR2NGM2lQcU9vcDByMVNQVGFUYlZrZlVlNEhYajk3d1lFK3lOd1dZeHdXdTR2MXVnV0hnbzNTMVhkWkVWcVdNN0VUMGNmbkxHeFdma2dSNDJvMlB2V3JETUJTRmovSUhMYUYwektqUmdkaVZNd1NjTlJBb1dVb0g3OFkyaWNCL3lJWTA5QW42QUgyQmR1L1VCK3l4b3BZc2hRaUV2bnZ1MGRVUmdEdDhRZUM4UER3N0ZwamkzZkVBNHovUEVKNllPQjVoS2g0ZGozRXZYaHhQcUgvU0tVWTNySjdzclo0RlpuaDFQTUF0UGh3UDZmbDJQTUpNUERnZVE0clk4WVQ2R3phbzBlQUVBNDA5RHVnZ21UbkZuT2NTQ2lFaUxNZ3hDaVRJNkNxNURaVWQzUW1wMTB2TzBMYUxUZDJjak40Zk91bWxjN2xVWWJTUWNaRmt1dFJHN2c2SktaS3kwUm1kTFk2ODBDRG5FSitVTWtwRkZlMVJON254ZFZwWHJDNGFUdG5hdXJPblllcmNaZzJZVm1MTi9kL2djemZFaW1yRS9mcy9iT3VxMjlabW44dGxvT1JhWGdaZ0dhNzh5TzkvY25YbTJCcGFHdnEyNUR2OVM0RTkrNVNJYzlQcXVwSktoWUZTU2w0NytRY3IxbVlOQUFBQWVOcHR3MGNLd2tBQUFNRFpKQThRN09VSnZrTHNQZlo2ekZWRVJQeThxSGgyWUVSKzNpL0JQODN2SUJMTHlTc29LaW1ycUtxcGEyaHA2K2pxNlJzWUdobWJtSnFaU3kwc3JheHRiTzNzSFJ5ZG5FTVU0dVI2eXg3SkpYdmVQN1dyRHljQUFBQUFBQUgvL3dBQ2VOcGpZR1JnWU9BQlloa2daZ0pDWmdaTkJrWUdMUVp0SUpzRkxNWUFBQXczQUxnQWVOb2xpekVLZ0RBUUJDY2hSYkMyc0ZFUjBZRDZxVlFpQkN2L0g5ZXpHSTZaNVhCQXc4Q0JLL201aVFRVmF1VmJYTG5Pck1adjJvTGRLRmE4UGp1cnUyaEp6R2FibU9TTHpOTXp2dXRwQjNONDJtTmdaR0JnNEdLUVl6QmhZTXhKTE1sajRHQmdBWW93L1AvUEFKSmhMTTZzU29XS2ZXQ0FBd0RBamdiUkFBQjQybU5nWUdCa0FJSWJDWm81SVBybVVuMGhHQTBBTzhFRlRRQUEnKTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuLyogRk9OVF9FTkQgKi9cbjpyb290IHtcbiAgLS1zd2lwZXItdGhlbWUtY29sb3I6ICMwMDdhZmY7XG4gIC8qXG4gIC0tc3dpcGVyLXByZWxvYWRlci1jb2xvcjogdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKTtcbiAgLS1zd2lwZXItd3JhcHBlci10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogaW5pdGlhbDtcbiAgKi9cbn1cbjpob3N0IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgei1pbmRleDogMTtcbn1cbi5zd2lwZXIge1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG4gIC8qIEZpeCBvZiBXZWJraXQgZmxpY2tlcmluZyAqL1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi5zd2lwZXItdmVydGljYWwgPiAuc3dpcGVyLXdyYXBwZXIge1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuLnN3aXBlci13cmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBmbGV4O1xuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07XG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zd2lwZXItd3JhcHBlci10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiwgaW5pdGlhbCk7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xufVxuLnN3aXBlci1hbmRyb2lkIC5zd2lwZXItc2xpZGUsXG4uc3dpcGVyLWlvcyAuc3dpcGVyLXNsaWRlLFxuLnN3aXBlci13cmFwcGVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwcHgsIDAsIDApO1xufVxuLnN3aXBlci1ob3Jpem9udGFsIHtcbiAgdG91Y2gtYWN0aW9uOiBwYW4teTtcbn1cbi5zd2lwZXItdmVydGljYWwge1xuICB0b3VjaC1hY3Rpb246IHBhbi14O1xufVxuLnN3aXBlci1zbGlkZSB7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4uc3dpcGVyLXNsaWRlLWludmlzaWJsZS1ibGFuayB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi8qIEF1dG8gSGVpZ2h0ICovXG4uc3dpcGVyLWF1dG9oZWlnaHQsXG4uc3dpcGVyLWF1dG9oZWlnaHQgLnN3aXBlci1zbGlkZSB7XG4gIGhlaWdodDogYXV0bztcbn1cbi5zd2lwZXItYXV0b2hlaWdodCAuc3dpcGVyLXdyYXBwZXIge1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBoZWlnaHQ7XG59XG4uc3dpcGVyLWJhY2tmYWNlLWhpZGRlbiAuc3dpcGVyLXNsaWRlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG59XG4vKiAzRCBFZmZlY3RzICovXG4uc3dpcGVyLTNkLnN3aXBlci1jc3MtbW9kZSAuc3dpcGVyLXdyYXBwZXIge1xuICBwZXJzcGVjdGl2ZTogMTIwMHB4O1xufVxuLnN3aXBlci0zZCAuc3dpcGVyLXdyYXBwZXIge1xuICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xufVxuLnN3aXBlci0zZCB7XG4gIHBlcnNwZWN0aXZlOiAxMjAwcHg7XG59XG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUsXG4uc3dpcGVyLTNkIC5zd2lwZXItY3ViZS1zaGFkb3cge1xuICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xufVxuLyogQ1NTIE1vZGUgKi9cbi5zd2lwZXItY3NzLW1vZGUgPiAuc3dpcGVyLXdyYXBwZXIge1xuICBvdmVyZmxvdzogYXV0bztcbiAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuICAvKiBGb3IgRmlyZWZveCAqL1xuICAtbXMtb3ZlcmZsb3ctc3R5bGU6IG5vbmU7XG4gIC8qIEZvciBJbnRlcm5ldCBFeHBsb3JlciBhbmQgRWRnZSAqL1xufVxuLnN3aXBlci1jc3MtbW9kZSA+IC5zd2lwZXItd3JhcHBlcjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuLnN3aXBlci1jc3MtbW9kZSA+IC5zd2lwZXItd3JhcHBlciA+IC5zd2lwZXItc2xpZGUge1xuICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQgc3RhcnQ7XG59XG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1ob3Jpem9udGFsID4gLnN3aXBlci13cmFwcGVyIHtcbiAgc2Nyb2xsLXNuYXAtdHlwZTogeCBtYW5kYXRvcnk7XG59XG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci12ZXJ0aWNhbCA+IC5zd2lwZXItd3JhcHBlciB7XG4gIHNjcm9sbC1zbmFwLXR5cGU6IHkgbWFuZGF0b3J5O1xufVxuLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItZnJlZS1tb2RlID4gLnN3aXBlci13cmFwcGVyIHtcbiAgc2Nyb2xsLXNuYXAtdHlwZTogbm9uZTtcbn1cbi5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWZyZWUtbW9kZSA+IC5zd2lwZXItd3JhcHBlciA+IC5zd2lwZXItc2xpZGUge1xuICBzY3JvbGwtc25hcC1hbGlnbjogbm9uZTtcbn1cbi5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWNlbnRlcmVkID4gLnN3aXBlci13cmFwcGVyOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgZmxleC1zaHJpbms6IDA7XG4gIG9yZGVyOiA5OTk5O1xufVxuLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItY2VudGVyZWQgPiAuc3dpcGVyLXdyYXBwZXIgPiAuc3dpcGVyLXNsaWRlIHtcbiAgc2Nyb2xsLXNuYXAtYWxpZ246IGNlbnRlciBjZW50ZXI7XG4gIHNjcm9sbC1zbmFwLXN0b3A6IGFsd2F5cztcbn1cbi5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWNlbnRlcmVkLnN3aXBlci1ob3Jpem9udGFsID4gLnN3aXBlci13cmFwcGVyID4gLnN3aXBlci1zbGlkZTpmaXJzdC1jaGlsZCB7XG4gIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IHZhcigtLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYmVmb3JlKTtcbn1cbi5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWNlbnRlcmVkLnN3aXBlci1ob3Jpem9udGFsID4gLnN3aXBlci13cmFwcGVyOjpiZWZvcmUge1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDFweDtcbiAgd2lkdGg6IHZhcigtLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYWZ0ZXIpO1xufVxuLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItY2VudGVyZWQuc3dpcGVyLXZlcnRpY2FsID4gLnN3aXBlci13cmFwcGVyID4gLnN3aXBlci1zbGlkZTpmaXJzdC1jaGlsZCB7XG4gIG1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1iZWZvcmUpO1xufVxuLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItY2VudGVyZWQuc3dpcGVyLXZlcnRpY2FsID4gLnN3aXBlci13cmFwcGVyOjpiZWZvcmUge1xuICB3aWR0aDogMTAwJTtcbiAgbWluLXdpZHRoOiAxcHg7XG4gIGhlaWdodDogdmFyKC0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1hZnRlcik7XG59XG4vKiBTbGlkZSBzdHlsZXMgc3RhcnQgKi9cbi8qIDNEIFNoYWRvd3MgKi9cbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3csXG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQsXG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0LFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3AsXG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSxcbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3csXG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQsXG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0LFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3AsXG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTA7XG59XG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93IHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDAsIDAsIDAsIDAuNSksIHJnYmEoMCwgMCwgMCwgMCkpO1xufVxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjUpLCByZ2JhKDAsIDAsIDAsIDApKTtcbn1cbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgcmdiYSgwLCAwLCAwLCAwLjUpLCByZ2JhKDAsIDAsIDAsIDApKTtcbn1cbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAwLCAwLCAwLjUpLCByZ2JhKDAsIDAsIDAsIDApKTtcbn1cbi5zd2lwZXItbGF6eS1wcmVsb2FkZXIge1xuICB3aWR0aDogNDJweDtcbiAgaGVpZ2h0OiA0MnB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDUwJTtcbiAgdG9wOiA1MCU7XG4gIG1hcmdpbi1sZWZ0OiAtMjFweDtcbiAgbWFyZ2luLXRvcDogLTIxcHg7XG4gIHotaW5kZXg6IDEwO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJvcmRlcjogNHB4IHNvbGlkIHZhcigtLXN3aXBlci1wcmVsb2FkZXItY29sb3IsIHZhcigtLXN3aXBlci10aGVtZS1jb2xvcikpO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLnN3aXBlcjpub3QoLnN3aXBlci13YXRjaC1wcm9ncmVzcykgLnN3aXBlci1sYXp5LXByZWxvYWRlcixcbi5zd2lwZXItd2F0Y2gtcHJvZ3Jlc3MgLnN3aXBlci1zbGlkZS12aXNpYmxlIC5zd2lwZXItbGF6eS1wcmVsb2FkZXIge1xuICBhbmltYXRpb246IHN3aXBlci1wcmVsb2FkZXItc3BpbiAxcyBpbmZpbml0ZSBsaW5lYXI7XG59XG4uc3dpcGVyLWxhenktcHJlbG9hZGVyLXdoaXRlIHtcbiAgLS1zd2lwZXItcHJlbG9hZGVyLWNvbG9yOiAjZmZmO1xufVxuLnN3aXBlci1sYXp5LXByZWxvYWRlci1ibGFjayB7XG4gIC0tc3dpcGVyLXByZWxvYWRlci1jb2xvcjogIzAwMDtcbn1cbkBrZXlmcmFtZXMgc3dpcGVyLXByZWxvYWRlci1zcGluIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cbi8qIFNsaWRlIHN0eWxlcyBlbmQgKi9cbi5zd2lwZXItdmlydHVhbCAuc3dpcGVyLXNsaWRlIHtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbn1cbi5zd2lwZXItdmlydHVhbC5zd2lwZXItY3NzLW1vZGUgLnN3aXBlci13cmFwcGVyOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4uc3dpcGVyLXZpcnR1YWwuc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1ob3Jpem9udGFsIC5zd2lwZXItd3JhcHBlcjo6YWZ0ZXIge1xuICBoZWlnaHQ6IDFweDtcbiAgd2lkdGg6IHZhcigtLXN3aXBlci12aXJ0dWFsLXNpemUpO1xufVxuLnN3aXBlci12aXJ0dWFsLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItdmVydGljYWwgLnN3aXBlci13cmFwcGVyOjphZnRlciB7XG4gIHdpZHRoOiAxcHg7XG4gIGhlaWdodDogdmFyKC0tc3dpcGVyLXZpcnR1YWwtc2l6ZSk7XG59XG46cm9vdCB7XG4gIC0tc3dpcGVyLW5hdmlnYXRpb24tc2l6ZTogNDRweDtcbiAgLypcbiAgLS1zd2lwZXItbmF2aWdhdGlvbi10b3Atb2Zmc2V0OiA1MCU7XG4gIC0tc3dpcGVyLW5hdmlnYXRpb24tc2lkZXMtb2Zmc2V0OiAxMHB4O1xuICAtLXN3aXBlci1uYXZpZ2F0aW9uLWNvbG9yOiB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpO1xuICAqL1xufVxuLnN3aXBlci1idXR0b24tcHJldixcbi5zd2lwZXItYnV0dG9uLW5leHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogdmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tdG9wLW9mZnNldCwgNTAlKTtcbiAgd2lkdGg6IGNhbGModmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tc2l6ZSkgLyA0NCAqIDI3KTtcbiAgaGVpZ2h0OiB2YXIoLS1zd2lwZXItbmF2aWdhdGlvbi1zaXplKTtcbiAgbWFyZ2luLXRvcDogY2FsYygwcHggLSAodmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tc2l6ZSkgLyAyKSk7XG4gIHotaW5kZXg6IDEwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBjb2xvcjogdmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tY29sb3IsIHZhcigtLXN3aXBlci10aGVtZS1jb2xvcikpO1xufVxuLnN3aXBlci1idXR0b24tcHJldi5zd2lwZXItYnV0dG9uLWRpc2FibGVkLFxuLnN3aXBlci1idXR0b24tbmV4dC5zd2lwZXItYnV0dG9uLWRpc2FibGVkIHtcbiAgb3BhY2l0eTogMC4zNTtcbiAgY3Vyc29yOiBhdXRvO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5zd2lwZXItYnV0dG9uLXByZXYuc3dpcGVyLWJ1dHRvbi1oaWRkZW4sXG4uc3dpcGVyLWJ1dHRvbi1uZXh0LnN3aXBlci1idXR0b24taGlkZGVuIHtcbiAgb3BhY2l0eTogMDtcbiAgY3Vyc29yOiBhdXRvO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5zd2lwZXItbmF2aWdhdGlvbi1kaXNhYmxlZCAuc3dpcGVyLWJ1dHRvbi1wcmV2LFxuLnN3aXBlci1uYXZpZ2F0aW9uLWRpc2FibGVkIC5zd2lwZXItYnV0dG9uLW5leHQge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4uc3dpcGVyLWJ1dHRvbi1wcmV2IHN2Zyxcbi5zd2lwZXItYnV0dG9uLW5leHQgc3ZnIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xufVxuLnN3aXBlci1ydGwgLnN3aXBlci1idXR0b24tcHJldiBzdmcsXG4uc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1uZXh0IHN2ZyB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG59XG4uc3dpcGVyLWJ1dHRvbi1wcmV2LFxuLnN3aXBlci1ydGwgLnN3aXBlci1idXR0b24tbmV4dCB7XG4gIGxlZnQ6IHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXNpZGVzLW9mZnNldCwgMTBweCk7XG4gIHJpZ2h0OiBhdXRvO1xufVxuLnN3aXBlci1idXR0b24tbmV4dCxcbi5zd2lwZXItcnRsIC5zd2lwZXItYnV0dG9uLXByZXYge1xuICByaWdodDogdmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tc2lkZXMtb2Zmc2V0LCAxMHB4KTtcbiAgbGVmdDogYXV0bztcbn1cbi5zd2lwZXItYnV0dG9uLWxvY2sge1xuICBkaXNwbGF5OiBub25lO1xufVxuLyogTmF2aWdhdGlvbiBmb250IHN0YXJ0ICovXG4uc3dpcGVyLWJ1dHRvbi1wcmV2OmFmdGVyLFxuLnN3aXBlci1idXR0b24tbmV4dDphZnRlciB7XG4gIGZvbnQtZmFtaWx5OiBzd2lwZXItaWNvbnM7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tc2l6ZSk7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gIGxldHRlci1zcGFjaW5nOiAwO1xuICBmb250LXZhcmlhbnQ6IGluaXRpYWw7XG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuLnN3aXBlci1idXR0b24tcHJldjphZnRlcixcbi5zd2lwZXItcnRsIC5zd2lwZXItYnV0dG9uLW5leHQ6YWZ0ZXIge1xuICBjb250ZW50OiAncHJldic7XG59XG4uc3dpcGVyLWJ1dHRvbi1uZXh0LFxuLnN3aXBlci1ydGwgLnN3aXBlci1idXR0b24tcHJldiB7XG4gIHJpZ2h0OiB2YXIoLS1zd2lwZXItbmF2aWdhdGlvbi1zaWRlcy1vZmZzZXQsIDEwcHgpO1xuICBsZWZ0OiBhdXRvO1xufVxuLnN3aXBlci1idXR0b24tbmV4dDphZnRlcixcbi5zd2lwZXItcnRsIC5zd2lwZXItYnV0dG9uLXByZXY6YWZ0ZXIge1xuICBjb250ZW50OiAnbmV4dCc7XG59XG4vKiBOYXZpZ2F0aW9uIGZvbnQgZW5kICovXG46cm9vdCB7XG4gIC8qXG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tY29sb3I6IHZhcigtLXN3aXBlci10aGVtZS1jb2xvcik7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tbGVmdDogYXV0bztcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi1yaWdodDogOHB4O1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLWJvdHRvbTogOHB4O1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLXRvcDogYXV0bztcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi1mcmFjdGlvbi1jb2xvcjogaW5oZXJpdDtcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1iZy1jb2xvcjogcmdiYSgwLDAsMCwwLjI1KTtcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1zaXplOiA0cHg7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LXNpemU6IDhweDtcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtd2lkdGg6IDhweDtcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtaGVpZ2h0OiA4cHg7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWJvcmRlci1yYWRpdXM6IDUwJTtcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtaW5hY3RpdmUtY29sb3I6ICMwMDA7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWluYWN0aXZlLW9wYWNpdHk6IDAuMjtcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtb3BhY2l0eTogMTtcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtaG9yaXpvbnRhbC1nYXA6IDRweDtcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtdmVydGljYWwtZ2FwOiA2cHg7XG4gICovXG59XG4uc3dpcGVyLXBhZ2luYXRpb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdHJhbnNpdGlvbjogMzAwbXMgb3BhY2l0eTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgei1pbmRleDogMTA7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24uc3dpcGVyLXBhZ2luYXRpb24taGlkZGVuIHtcbiAgb3BhY2l0eTogMDtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi1kaXNhYmxlZCA+IC5zd2lwZXItcGFnaW5hdGlvbixcbi5zd2lwZXItcGFnaW5hdGlvbi5zd2lwZXItcGFnaW5hdGlvbi1kaXNhYmxlZCB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbi8qIENvbW1vbiBTdHlsZXMgKi9cbi5zd2lwZXItcGFnaW5hdGlvbi1mcmFjdGlvbixcbi5zd2lwZXItcGFnaW5hdGlvbi1jdXN0b20sXG4uc3dpcGVyLWhvcml6b250YWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyxcbi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWhvcml6b250YWwge1xuICBib3R0b206IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJvdHRvbSwgOHB4KTtcbiAgdG9wOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi10b3AsIGF1dG8pO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbn1cbi8qIEJ1bGxldHMgKi9cbi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBmb250LXNpemU6IDA7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQge1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuMzMpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUtbWFpbiB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMSk7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLXByZXYge1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuNjYpO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1wcmV2LXByZXYge1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuMzMpO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1uZXh0IHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjY2KTtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUtbmV4dC1uZXh0IHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjMzKTtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQge1xuICB3aWR0aDogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LXdpZHRoLCB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtc2l6ZSwgOHB4KSk7XG4gIGhlaWdodDogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWhlaWdodCwgdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LXNpemUsIDhweCkpO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1ib3JkZXItcmFkaXVzLCA1MCUpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtaW5hY3RpdmUtY29sb3IsICMwMDApO1xuICBvcGFjaXR5OiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtaW5hY3RpdmUtb3BhY2l0eSwgMC4yKTtcbn1cbmJ1dHRvbi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQge1xuICBib3JkZXI6IG5vbmU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tY2xpY2thYmxlIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0Om9ubHktY2hpbGQge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZSB7XG4gIG9wYWNpdHk6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1vcGFjaXR5LCAxKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tY29sb3IsIHZhcigtLXN3aXBlci10aGVtZS1jb2xvcikpO1xufVxuLnN3aXBlci12ZXJ0aWNhbCA+IC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLFxuLnN3aXBlci1wYWdpbmF0aW9uLXZlcnRpY2FsLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMge1xuICByaWdodDogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tcmlnaHQsIDhweCk7XG4gIGxlZnQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWxlZnQsIGF1dG8pO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwcHgsIC01MCUsIDApO1xufVxuLnN3aXBlci12ZXJ0aWNhbCA+IC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQsXG4uc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHtcbiAgbWFyZ2luOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtdmVydGljYWwtZ2FwLCA2cHgpIDA7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLnN3aXBlci12ZXJ0aWNhbCA+IC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyxcbi5zd2lwZXItcGFnaW5hdGlvbi12ZXJ0aWNhbC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyB7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIHdpZHRoOiA4cHg7XG59XG4uc3dpcGVyLXZlcnRpY2FsID4gLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQsXG4uc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdHJhbnNpdGlvbjogMjAwbXMgdHJhbnNmb3JtLFxuICAgICAgICAyMDBtcyB0b3A7XG59XG4uc3dpcGVyLWhvcml6b250YWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LFxuLnN3aXBlci1wYWdpbmF0aW9uLWhvcml6b250YWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHtcbiAgbWFyZ2luOiAwIHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1ob3Jpem9udGFsLWdhcCwgNHB4KTtcbn1cbi5zd2lwZXItaG9yaXpvbnRhbCA+IC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyxcbi5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIHtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4uc3dpcGVyLWhvcml6b250YWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCxcbi5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQge1xuICB0cmFuc2l0aW9uOiAyMDBtcyB0cmFuc2Zvcm0sXG4gICAgICAgIDIwMG1zIGxlZnQ7XG59XG4uc3dpcGVyLWhvcml6b250YWwuc3dpcGVyLXJ0bCA+IC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7XG4gIHRyYW5zaXRpb246IDIwMG1zIHRyYW5zZm9ybSxcbiAgICAyMDBtcyByaWdodDtcbn1cbi8qIEZyYWN0aW9uICovXG4uc3dpcGVyLXBhZ2luYXRpb24tZnJhY3Rpb24ge1xuICBjb2xvcjogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tZnJhY3Rpb24tY29sb3IsIGluaGVyaXQpO1xufVxuLyogUHJvZ3Jlc3MgKi9cbi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2JhciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLWJnLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMjUpKTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyIC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1maWxsIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tY29sb3IsIHZhcigtLXN3aXBlci10aGVtZS1jb2xvcikpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCB0b3A7XG59XG4uc3dpcGVyLXJ0bCAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIgLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLWZpbGwge1xuICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCB0b3A7XG59XG4uc3dpcGVyLWhvcml6b250YWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIsXG4uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbCxcbi5zd2lwZXItdmVydGljYWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItb3Bwb3NpdGUsXG4uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItb3Bwb3NpdGUge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1zaXplLCA0cHgpO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG59XG4uc3dpcGVyLXZlcnRpY2FsID4gLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLFxuLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLnN3aXBlci1wYWdpbmF0aW9uLXZlcnRpY2FsLFxuLnN3aXBlci1ob3Jpem9udGFsID4gLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLW9wcG9zaXRlLFxuLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLnN3aXBlci1wYWdpbmF0aW9uLWhvcml6b250YWwuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItb3Bwb3NpdGUge1xuICB3aWR0aDogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItc2l6ZSwgNHB4KTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tbG9jayB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG46cm9vdCB7XG4gIC8qXG4gIC0tc3dpcGVyLXNjcm9sbGJhci1ib3JkZXItcmFkaXVzOiAxMHB4O1xuICAtLXN3aXBlci1zY3JvbGxiYXItdG9wOiBhdXRvO1xuICAtLXN3aXBlci1zY3JvbGxiYXItYm90dG9tOiA0cHg7XG4gIC0tc3dpcGVyLXNjcm9sbGJhci1sZWZ0OiBhdXRvO1xuICAtLXN3aXBlci1zY3JvbGxiYXItcmlnaHQ6IDRweDtcbiAgLS1zd2lwZXItc2Nyb2xsYmFyLXNpZGVzLW9mZnNldDogMSU7XG4gIC0tc3dpcGVyLXNjcm9sbGJhci1iZy1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAtLXN3aXBlci1zY3JvbGxiYXItZHJhZy1iZy1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAtLXN3aXBlci1zY3JvbGxiYXItc2l6ZTogNHB4O1xuICAqL1xufVxuLnN3aXBlci1zY3JvbGxiYXIge1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd2lwZXItc2Nyb2xsYmFyLWJvcmRlci1yYWRpdXMsIDEwcHgpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvdWNoLWFjdGlvbjogbm9uZTtcbiAgYmFja2dyb3VuZDogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1iZy1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbn1cbi5zd2lwZXItc2Nyb2xsYmFyLWRpc2FibGVkID4gLnN3aXBlci1zY3JvbGxiYXIsXG4uc3dpcGVyLXNjcm9sbGJhci5zd2lwZXItc2Nyb2xsYmFyLWRpc2FibGVkIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLnN3aXBlci1ob3Jpem9udGFsID4gLnN3aXBlci1zY3JvbGxiYXIsXG4uc3dpcGVyLXNjcm9sbGJhci5zd2lwZXItc2Nyb2xsYmFyLWhvcml6b250YWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IHZhcigtLXN3aXBlci1zY3JvbGxiYXItc2lkZXMtb2Zmc2V0LCAxJSk7XG4gIGJvdHRvbTogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1ib3R0b20sIDRweCk7XG4gIHRvcDogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci10b3AsIGF1dG8pO1xuICB6LWluZGV4OiA1MDtcbiAgaGVpZ2h0OiB2YXIoLS1zd2lwZXItc2Nyb2xsYmFyLXNpemUsIDRweCk7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAyICogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1zaWRlcy1vZmZzZXQsIDElKSk7XG59XG4uc3dpcGVyLXZlcnRpY2FsID4gLnN3aXBlci1zY3JvbGxiYXIsXG4uc3dpcGVyLXNjcm9sbGJhci5zd2lwZXItc2Nyb2xsYmFyLXZlcnRpY2FsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiB2YXIoLS1zd2lwZXItc2Nyb2xsYmFyLWxlZnQsIGF1dG8pO1xuICByaWdodDogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1yaWdodCwgNHB4KTtcbiAgdG9wOiB2YXIoLS1zd2lwZXItc2Nyb2xsYmFyLXNpZGVzLW9mZnNldCwgMSUpO1xuICB6LWluZGV4OiA1MDtcbiAgd2lkdGg6IHZhcigtLXN3aXBlci1zY3JvbGxiYXItc2l6ZSwgNHB4KTtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAyICogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1zaWRlcy1vZmZzZXQsIDElKSk7XG59XG4uc3dpcGVyLXNjcm9sbGJhci1kcmFnIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zd2lwZXItc2Nyb2xsYmFyLWRyYWctYmctY29sb3IsIHJnYmEoMCwgMCwgMCwgMC41KSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3aXBlci1zY3JvbGxiYXItYm9yZGVyLXJhZGl1cywgMTBweCk7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbn1cbi5zd2lwZXItc2Nyb2xsYmFyLWN1cnNvci1kcmFnIHtcbiAgY3Vyc29yOiBtb3ZlO1xufVxuLnN3aXBlci1zY3JvbGxiYXItbG9jayB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4vKiBab29tIGNvbnRhaW5lciBzdHlsZXMgc3RhcnQgKi9cbi5zd2lwZXItem9vbS1jb250YWluZXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLnN3aXBlci16b29tLWNvbnRhaW5lciA+IGltZyxcbi5zd2lwZXItem9vbS1jb250YWluZXIgPiBzdmcsXG4uc3dpcGVyLXpvb20tY29udGFpbmVyID4gY2FudmFzIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xuICBvYmplY3QtZml0OiBjb250YWluO1xufVxuLyogWm9vbSBjb250YWluZXIgc3R5bGVzIGVuZCAqL1xuLnN3aXBlci1zbGlkZS16b29tZWQge1xuICBjdXJzb3I6IG1vdmU7XG4gIHRvdWNoLWFjdGlvbjogbm9uZTtcbn1cbi8qIGExMXkgKi9cbi5zd2lwZXIgLnN3aXBlci1ub3RpZmljYXRpb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IC0xMDAwO1xufVxuLnN3aXBlci1mcmVlLW1vZGUgPiAuc3dpcGVyLXdyYXBwZXIge1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuLnN3aXBlci1ncmlkID4gLnN3aXBlci13cmFwcGVyIHtcbiAgZmxleC13cmFwOiB3cmFwO1xufVxuLnN3aXBlci1ncmlkLWNvbHVtbiA+IC5zd2lwZXItd3JhcHBlciB7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cbi5zd2lwZXItZmFkZS5zd2lwZXItZnJlZS1tb2RlIC5zd2lwZXItc2xpZGUge1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7XG59XG4uc3dpcGVyLWZhZGUgLnN3aXBlci1zbGlkZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5O1xufVxuLnN3aXBlci1mYWRlIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuLnN3aXBlci1mYWRlIC5zd2lwZXItc2xpZGUtYWN0aXZlIHtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG59XG4uc3dpcGVyLWZhZGUgLnN3aXBlci1zbGlkZS1hY3RpdmUgLnN3aXBlci1zbGlkZS1hY3RpdmUge1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbn1cbi5zd2lwZXIuc3dpcGVyLWN1YmUge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cbi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgei1pbmRleDogMTtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4uc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZSAuc3dpcGVyLXNsaWRlIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4uc3dpcGVyLWN1YmUuc3dpcGVyLXJ0bCAuc3dpcGVyLXNsaWRlIHtcbiAgdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAwO1xufVxuLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtYWN0aXZlLFxuLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtYWN0aXZlIC5zd2lwZXItc2xpZGUtYWN0aXZlIHtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG59XG4uc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1hY3RpdmUsXG4uc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1uZXh0LFxuLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtcHJldiB7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuLnN3aXBlci1jdWJlIC5zd2lwZXItY3ViZS1zaGFkb3cge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvcGFjaXR5OiAwLjY7XG4gIHotaW5kZXg6IDA7XG59XG4uc3dpcGVyLWN1YmUgLnN3aXBlci1jdWJlLXNoYWRvdzpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgYmFja2dyb3VuZDogIzAwMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGZpbHRlcjogYmx1cig1MHB4KTtcbn1cbi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLW5leHQgKyAuc3dpcGVyLXNsaWRlIHtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG59XG4vKiBDdWJlIHNsaWRlIHNoYWRvd3Mgc3RhcnQgKi9cbi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLXNoYWRvdy1jdWJlLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLFxuLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtc2hhZG93LWN1YmUuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20sXG4uc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1zaGFkb3ctY3ViZS5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQsXG4uc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1zaGFkb3ctY3ViZS5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0IHtcbiAgei1pbmRleDogMDtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLyogQ3ViZSBzbGlkZSBzaGFkb3dzIGVuZCAqL1xuLnN3aXBlci5zd2lwZXItZmxpcCB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICB6LWluZGV4OiAxO1xufVxuLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUtYWN0aXZlLFxuLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUtYWN0aXZlIC5zd2lwZXItc2xpZGUtYWN0aXZlIHtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG59XG4vKiBGbGlwIHNsaWRlIHNoYWRvd3Mgc3RhcnQgKi9cbi5zd2lwZXItZmxpcCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1mbGlwLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLFxuLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUtc2hhZG93LWZsaXAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20sXG4uc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1zaGFkb3ctZmxpcC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQsXG4uc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1zaGFkb3ctZmxpcC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0IHtcbiAgei1pbmRleDogMDtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLyogRmxpcCBzbGlkZSBzaGFkb3dzIGVuZCAqL1xuLnN3aXBlci1jcmVhdGl2ZSAuc3dpcGVyLXNsaWRlIHtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIG9wYWNpdHksIGhlaWdodDtcbn1cbi5zd2lwZXIuc3dpcGVyLWNhcmRzIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4uc3dpcGVyLWNhcmRzIC5zd2lwZXItc2xpZGUge1xuICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgYm90dG9tO1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4iLCAiLy8g7IOJ7IOBIOuzgOyImFxuJGNvbG9yLWJvcmRlcjogI2EwYTA5NjtcbiRjb2xvci1kaXNhYmxlZC1iZzogI2YwZjBmMDtcbiRjb2xvci1kaXNhYmxlZC10ZXh0OiAjYWJhYmFiO1xuJGNvbG9yLWRpc2FibGVkLW5laWdoYm9yOiAjY2RjZGNkO1xuJGNvbG9yLWhvdmVyLWJnOiAjZTZlNmU2O1xuXG4vLyDqs7XthrUg7Iqk7YOA7J28XG4ucmVhY3QtY2FsZW5kYXIsXG4ucmVhY3QtY2FsZW5kYXIgKixcbi5yZWFjdC1jYWxlbmRhciAqOmJlZm9yZSxcbi5yZWFjdC1jYWxlbmRhciAqOmFmdGVyIHtcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi8vIHJlYWN0LWNhbGVuZGFyIOq4sOuzuCDsiqTtg4Dsnbxcbi5yZWFjdC1jYWxlbmRhciB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItYm9yZGVyO1xuICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgbGluZS1oZWlnaHQ6IDEuMTI1ZW07XG5cbiAgYnV0dG9uIHtcbiAgICBtYXJnaW46IDA7XG4gICAgYm9yZGVyOiAwO1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmOmVuYWJsZWQ6aG92ZXIge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbiAgfVxuICBcbiAgJi0tZG91YmxlVmlldyB7XG4gICAgd2lkdGg6IDcwMHB4O1xuXG4gICAgLnJlYWN0LWNhbGVuZGFyX192aWV3Q29udGFpbmVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBtYXJnaW46IC0wLjVlbTtcblxuICAgICAgPiAqIHtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgbWFyZ2luOiAwLjVlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8g64Sk67mE6rKM7J207IWYXG4ucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IDQ0cHg7XG4gIG1hcmdpbi1ib3R0b206IDFlbTtcblxuICBidXR0b24ge1xuICAgIG1pbi13aWR0aDogNDRweDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuXG4gICAgJjpkaXNhYmxlZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZGlzYWJsZWQtYmc7XG4gICAgfVxuXG4gICAgJjplbmFibGVkIHtcbiAgICAgICY6aG92ZXIsXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWhvdmVyLWJnO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyDsm5QsIOyalOydvCDrsI8g64Kg7KecXG4ucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtkYXlzIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDAuNzVlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cbiAgJl9fd2Vla2RheSB7XG4gICAgcGFkZGluZzogMC41ZW07XG4gIH1cbn1cblxuLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X193ZWVrTnVtYmVycyAucmVhY3QtY2FsZW5kYXJfX3RpbGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAwLjc1ZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vLyDrgqDsp5wg7YOA7J28IOyKpO2DgOydvFxuLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzIHtcbiAgZ2FwOiAwLjVlbSAwO1xuXG4gICZfX2RheSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XG4gIH1cblxuICBhYmJyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLmRyLXBlcmNlbnRhZ2UtY2lyY2xlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgY2lyY2xlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjdzIGVhc2UtaW4tb3V0O1xuICAgIH1cbiAgfVxufVxuLy8g7J207JuD7ZWcIOuLrOydmCDrgqDsp5xcbi5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fZGF5c19fZGF5LS1uZWlnaGJvcmluZ01vbnRoIHtcbiAgLmRyLXBlcmNlbnRhZ2UtY2lyY2xlIHtcbiAgICBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiAkY29sb3ItZGlzYWJsZWQtbmVpZ2hib3IgIWltcG9ydGFudDtcbiAgICAgIHN0cm9rZS1vcGFjaXR5OiAwLjEgIWltcG9ydGFudDtcbiAgICB9XG4gICAgdGV4dCB7XG4gICAgICBvcGFjaXR5OiAwLjI7XG4gICAgfVxuICB9XG59XG5cblxuLy8gcmVhY3QtY2FsZW5kYXIg7YOA7J28XG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNmVtO1xuICBwYWRkaW5nOiAxZW07XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGluZS1oZWlnaHQ6IDFlbTtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAwLjdlbTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItaG92ZXItYmc7XG4gIH1cbn1cbiIsICJib2R5IHtcbiAgLS1jb2xvci1hY2NlbnQtMS1oc2w6IGNhbGModmFyKC0tYWNjZW50LWgpIC0gMyksIGNhbGModmFyKC0tYWNjZW50LXMpICogMS4wMiksIGNhbGModmFyKC0tYWNjZW50LWwpICogMS4xNSk7XG4gIC0tY29sb3ItYWNjZW50LTItaHNsOiBjYWxjKHZhcigtLWFjY2VudC1oKSAtIDUpLCBjYWxjKHZhcigtLWFjY2VudC1zKSAqIDEuMDUpLCBjYWxjKHZhcigtLWFjY2VudC1sKSAqIDEuMjkpO1xufSJdLAogICJtYXBwaW5ncyI6ICI7OztBQU1JLENBQUEsNkJBQUEsQ0FBQTtBQUNFLFVBQUEsRUFBQTs7QUFDQSxDQUZGLDZCQUVFLENBQUE7QUFDRSxvQkFBQSxJQUFBOztBQVVSLENBQUE7O0FBS0UsQ0FMRixrQkFLRTtBQUNFLFdBQUE7QUFDQSxrQkFBQTtBQUNBLE9BQUE7O0FBR0EsQ0FYSixrQkFXSSxRQUFBLENBQUE7QUFDRSxXQUFBO0FBQ0EsbUJBQUE7QUFDQSxlQUFBOztBQVNKLENBQUEsdUJBQUE7QUFDRSxXQUFBO0FBQ0EsbUJBQUE7QUFDQSxTQUFBOztBQUNBLENBSkYsdUJBSUUsSUFBQTtBQUNFLFNBQUE7O0FBR0osQ0FSQSx1QkFRQTtBQUNFLGVBQUE7O0FBUUYsQ0FBQSx5QkFBQTtBQUNFLFNBQUEsS0FBQSxJQUFBLGdCQUFBLEVBQUE7O0FBSUosQ0FBQTtBQUNFLFNBQUEsS0FBQSxJQUFBLGdCQUFBLEVBQUE7O0FBQ0EsQ0FGRiwrQkFFRSxDQUFBO0FBQ0UsV0FBQTtBQUNBLG1CQUFBO0FBQ0EsZUFBQTtBQUNBLFVBQUEsSUFBQTs7QUFHRSxDQVROLCtCQVNNLENBUEosd0NBT0ksSUFBQTtBQUNFLFdBQUEsTUFBQTtBQUNBLFVBQUEsRUFBQTs7QUFDQSxDQVpSLCtCQVlRLENBVk4sd0NBVU0sSUFBQSxNQUFBLENBQUE7QUFDRSxTQUFBLEtBQUEsSUFBQSxnQkFBQSxFQUFBOzs7O0FDNUVWLENBQUEsUUFBQTtBQUFBLENBQUEsUUFBQTtBQUFBLENBQUEsUUFBQTtBQUdFLGNB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QUFFQSxDQUhGLDJCQUdFLENBQUE7QUFDRSxXQUFBO0FBQ0EsVUFBQTs7QUFFQSxDQVBKLDJCQU9JLENBSkYsOEJBSUUsRUFBQTtBQUNFLFNBQUE7QUFDQSxVQUFBOztBQU9SLENBQUE7QUFDRSxXQUFBO0FBQ0EsVUFBQTtBQUNBLGlCQUFBOztBQUVBLENBTEYsMkJBS0U7QUFDRSxhQUFBO0FBQ0EsY0FBQTs7QUFFQSxDQVRKLDJCQVNJLE1BQUE7QUFDRSxvQkE1RGM7O0FBZ0VkLENBZE4sMkJBY00sTUFBQSxRQUFBO0FBQUEsQ0FkTiwyQkFjTSxNQUFBLFFBQUE7QUFFRSxvQkEvRFM7O0FBc0VqQixDQUFBO0FBQ0UsY0FBQTtBQUNBLGtCQUFBO0FBQ0EsUUFBQTtBQUNBLGFBQUE7QUFDQSxlQUFBOztBQUVBLENBQUE7QUFDRSxXQUFBOztBQUlKLENBQUEsd0NBQUEsQ0FBQTtBQUNFLFdBQUE7QUFDQSxlQUFBO0FBQ0EsbUJBQUE7QUFDQSxRQUFBO0FBQ0EsYUFBQTtBQUNBLGVBQUE7O0FBSUYsQ0FBQTtBQUNFLE9BQUEsTUFBQTs7QUFFQSxDQUFBO0FBQ0UsWUFBQTtBQUNBLFdBQUE7QUFDQSxjQUFBO0FBQ0EsVUFBQTs7QUFHRixDQVZGLGlDQVVFO0FBQ0UsV0FBQTs7QUFHRixDQWRGLGlDQWNFLENBQUE7QUFDRSxTQUFBO0FBQ0EsVUFBQTs7QUFDQSxDQWpCSixpQ0FpQkksQ0FIRixxQkFHRTtBQUNFLFlBQUE7QUFDQSxjQUFBLElBQUEsS0FBQTs7QUFPRixDQUFBLHdEQUFBLENBWkYscUJBWUU7QUFDRSxVQUFBO0FBQ0Esa0JBQUE7O0FBRUYsQ0FKQSx3REFJQSxDQWhCRixxQkFnQkU7QUFDRSxXQUFBOztBQU9OLENBaERBO0FBaURFLGFBQUE7QUFDQSxVQUFBO0FBQ0EsV0FBQTtBQUNBLGNBQUE7QUFDQSxjQUFBO0FBQ0EsZUFBQTtBQUNBLFFBQUE7QUFDQSxhQUFBOztBQUVBLENBMURGLG9CQTBERTtBQUNFLG9CQTdJYTs7OztBQ0xqQjtBQUNFO0FBQUEsSUFBc0IsS0FBSyxJQUFJLFlBQVksRUFBRSxFQUFFO0FBQUEsSUFBRSxLQUFLLElBQUksWUFBWSxFQUFFLEtBQUs7QUFBQSxJQUFFLEtBQUssSUFBSSxZQUFZLEVBQUU7QUFDdEc7QUFBQSxJQUFzQixLQUFLLElBQUksWUFBWSxFQUFFLEVBQUU7QUFBQSxJQUFFLEtBQUssSUFBSSxZQUFZLEVBQUUsS0FBSztBQUFBLElBQUUsS0FBSyxJQUFJLFlBQVksRUFBRTtBQUN4RzsiLAogICJuYW1lcyI6IFtdCn0K */ +/*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL2ZlYXR1cmVzL3JvdXRpbmUvc3R5bGUuc2NzcyIsICJzcmMvZmVhdHVyZXMvZGF5cy9kYXlzLW5hdi5zY3NzIiwgIm5vZGVfbW9kdWxlcy9zd2lwZXIvc3dpcGVyLWJ1bmRsZS5jc3MiLCAic3JjL2ZlYXR1cmVzL3Rhc2svdGFzay5zY3NzIiwgInNyYy9mZWF0dXJlcy9jYWxlbmRhci9jYWxlbmRhci1zdHlsZS5zY3NzIiwgInNyYy9hcHAvc3R5bGUuY3NzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIOyalOydvCDshKDtg50gc2VjdGlvblxuLmRyLXJvdXRpbmUtb3B0aW9uLWRheXMge1xuICAmX19saXN0IHtcbiAgICAuZHItcm91dGluZS1vcHRpb24tZGF5c19fZGF5IHtcbiAgICAgIG1hcmdpbjogMCAwLjVlbTtcbiAgICAgICYtLWFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudC0yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSb3V0aW5lIE9wdGlvbiBNb2RhbCDssL1cbi5kci1yb3V0aW5lLW9wdGlvbiB7XG4gIC8qIO2XpOuNlCAqL1xuICAvLyAuZHItcm91dGluZS1vcHRpb25fX2hlYWRlciB7fVxuXG4gIC8qIOyYteyFmCDrs7jrrLggKi9cbiAgc2VjdGlvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMWVtO1xuXG4gICAgLy8g7IS57IWYIO2VmOuCmO2VmOuCmFxuICAgIC5kci1yb3V0aW5lLW9wdGlvbl9fc2VjdGlvbiB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyDsnbTrpoQg67OA6rK9IHNlY3Rpb25cbi5kci1yb3V0aW5lLW9wdGlvbi1uYW1lIHtcbiAgLy8g7J2066aEIOuzgOqyvSBpbnB1dFxuICBkaXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBlbmQ7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaW5wdXQge1xuICAgICAgd2lkdGg6IDQwJTtcbiAgICB9XG4gIH1cbiAgYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogMWVtO1xuICB9XG59XG5cblxuXG4vLyDro6jti7Qg7IKt7KCcIHNlY3Rpb25cbi5kci1yb3V0aW5lLW9wdGlvbi1kZWxldGUge1xuICBidXR0b24ge1xuICAgIGNvbG9yOiByZ2JhKHZhcigtLWNvbG9yLXJlZC1yZ2IpLCAxKTtcbiAgfVxufVxuLy8g7IKt7KCcIOuyhO2KvOydhCDriITrpbTrqbQg64KY7Jik64qUIOyCreygnO2ZleyduCDrqqjri6xcbi5kci1yb3V0aW5lLW9wdGlvbi1kZWxldGUtbW9kYWwge1xuICB3aWR0aDogY2FsYyh2YXIoLS1kaWFsb2ctd2lkdGgpICogMC44KTtcbiAgLmRyLXJvdXRpbmUtb3B0aW9uLWRlbGV0ZS1tb2RhbF9fY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW46IDFlbSAwO1xuXG4gICAgZGl2IHtcbiAgICAgIGJ1dHRvbiB7XG4gICAgICAgIHBhZGRpbmc6IDAuNWVtIDFlbTtcbiAgICAgICAgbWFyZ2luOiAwIDAuNWVtO1xuICAgICAgICAmLmRyLXJvdXRpbmUtb3B0aW9uLWRlbGV0ZS1tb2RhbF9fY29uZmlybSB7XG4gICAgICAgICAgY29sb3I6IHJnYmEodmFyKC0tY29sb3ItcmVkLXJnYiksIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCAiLy8gUm91dGluZU5vdGUg7IOB64uoIERheXMgTWVudSBcbi5kci1kYXlzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93LXg6IHNjcm9sbDtcbiAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuICBwYWRkaW5nLXRvcDogNXB4O1xuXG4gIC5kci1kYXlzX19pdGVtcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDVweDtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcblxuICAgIC5kci1kYXlzX19pdGVtIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICBwYWRkaW5nOiAwIDAuNWVtO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgYm9yZGVyLXJhZGl1czogN3B4O1xuICAgICAgLmRyLWRheXNfX2RheS1vZi13ZWVrIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgICAgfVxuICAgICAgLy8gLmRyLXBlcmNlbnRhZ2UtY2lyY2xlIHtcbiAgICAgIC8vIH1cbiAgICAgIFxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIO2YhOyerCDshKDtg51cbiAgICAgICYuZHItZGF5c19fY3VycmVudCB7XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwLjZlbSAwLjJlbSByZ2JhKDAsIDAsIDAsIDAuMSkgIWltcG9ydGFudDtcbiAgICAgICAgLy8gYmFja2dyb3VuZC1jb2xvcjogI2Q4ZDhkODtcbiAgICAgIH1cblxuICAgICAgLy8g7Jik64qYXG4gICAgICAvLyAmLmRyLWRheXNfX3RvZGF5IHtcbiAgICAgIC8vICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSh2YXIoLS1jb2xvci1hY2NlbnQtMS1oc2wpLCAxKSAhaW1wb3J0YW50O1xuICAgICAgLy8gfVxuICAgICAgXG4gICAgfVxuICB9XG59IiwgIi8qKlxuICogU3dpcGVyIDExLjEuMTRcbiAqIE1vc3QgbW9kZXJuIG1vYmlsZSB0b3VjaCBzbGlkZXIgYW5kIGZyYW1ld29yayB3aXRoIGhhcmR3YXJlIGFjY2VsZXJhdGVkIHRyYW5zaXRpb25zXG4gKiBodHRwczovL3N3aXBlcmpzLmNvbVxuICpcbiAqIENvcHlyaWdodCAyMDE0LTIwMjQgVmxhZGltaXIgS2hhcmxhbXBpZGlcbiAqXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2VcbiAqXG4gKiBSZWxlYXNlZCBvbjogU2VwdGVtYmVyIDEyLCAyMDI0XG4gKi9cblxuLyogRk9OVF9TVEFSVCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnc3dpcGVyLWljb25zJztcbiAgc3JjOiB1cmwoJ2RhdGE6YXBwbGljYXRpb24vZm9udC13b2ZmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCBkMDlHUmdBQkFBQUFBQVpnQUJBQUFBQUFEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkdSbFJOQUFBR1JBQUFBQm9BQUFBY2k2cUhrVWRFUlVZQUFBV2dBQUFBSXdBQUFDUUFZQUJYUjFCUFV3QUFCaFFBQUFBdUFBQUFOdUFZNyt4SFUxVkNBQUFGeEFBQUFGQUFBQUJtMmZQY3pVOVRMeklBQUFIY0FBQUFTZ0FBQUdCUDlWNVJZMjFoY0FBQUFrUUFBQUNJQUFBQll0NkYwY0JqZG5RZ0FBQUN6QUFBQUFRQUFBQUVBQkVCUkdkaGMzQUFBQVdZQUFBQUNBQUFBQWovL3dBRFoyeDVaZ0FBQXl3QUFBRE1BQUFEMk1IdHJ5Vm9aV0ZrQUFBQmJBQUFBREFBQUFBMkUyK2VvV2hvWldFQUFBR2NBQUFBSHdBQUFDUUM5Z0R6YUcxMGVBQUFBaWdBQUFBWkFBQUFyZ0prQUJGc2IyTmhBQUFDMEFBQUFGb0FBQUJhRlFBVUdHMWhlSEFBQUFHOEFBQUFId0FBQUNBQWNBQkFibUZ0WlFBQUEvZ0FBQUU1QUFBQ1h2RmRCd2x3YjNOMEFBQUZOQUFBQUdJQUFBQ0U1czc0aFhqYVkyQmtZR0FBWXBmNUh1L2orVzIrTW5Bek1ZREF6YVg2UWpENi80Ly9CeGo1R0E4QXVSd01ZR2tBUHl3TDEzamFZMkJrWUdBODhQOEFneDRqKy84ZlFEWWZBMUFFQldnREFJQjJCT29BZU5wallHUmdZTkJoNEdkZ1lnQUJFTW5JQUJKellOQURDUUFBQ1dnQXNRQjQybU5nWWZ6Q09JR0JsWUdCMFljeGpZR0J3UjFLZjJXUVpHaGhZR0JpWUdWbWdBRkdCaVFRa09hYXd0REFvTUJReFhqZy93RUdQY1lEREE0d05VQTJDQ2d3c0FBQU80RUw2Z0FBZU5wajJNMGd5QUFDcXhnR05XQmtaMkQ0L3dNQSt4a0RkZ0FBQUhqYVkyQmdZR2FBWUJrR1JnWVFpQUh5R01GOEZnWUhJTTNEd01IQUJHUXJNT2d5V0RMRU0xVDkvdzhVQmZFTWdMekUvLy8vUC81Ly9mL1YveHYrcjRlYUFBZU1iQXh3SVVZbUlNSEVnS1lBWWpVY3NEQXdzTEt4YzNCeWNmUHc4akVRQS9nWkJBU0ZoRVZFeGNRbEpLV2taV1RsNUJVVWxaUlZWTlhVTlRRWkJnTUFBTVIrRStnQUVRRkVBQUFBS2dBcUFDb0FOQUErQUVnQVVnQmNBR1lBY0FCNkFJUUFqZ0NZQUtJQXJBQzJBTUFBeWdEVUFONEE2QUR5QVB3QkJnRVFBUm9CSkFFdUFUZ0JRZ0ZNQVZZQllBRnFBWFFCZmdHSUFaSUJuQUdtQWJJQnpnSHNBQUI0MnUyTk1RNkNVQXlHVzU2OHg5QW5lWVlnbTRNSmJoS0ZhRXhJT0FWWDhBcGV3U3Q0QmljNEFmZUFpZDNWT0JpeER4ZlBZRXphNU8rWGZpMDRZQURnZ2lVSVVMQ3VFSks4VmhPNGJTdnBkbmt0SEk1UUNZdGRpMnNsOFpuWGFIbHFVck5LemRLY1Q4Y2pscStyd1pTdklWY3pOaWV6c2ZuUC91em5tZlBGQk5PRE0ySzdNVFE0NVlFQVpxR1A4MUFtR0djRjNpUHFPb3AwcjFTUFRhVGJWa2ZVZTRIWGo5N3dZRSt5TndXWXh3V3U0djF1Z1dIZ28zUzFYZFpFVnFXTTdFVDBjZm5MR3hXZmtnUjQybzJQdldyRE1CU0ZqL0lITGFGMHpLalJnZGlWTXdTY05SQW9XVW9INzhZMmljQi95SVkwOUFuNkFIMkJkdS9VQit5eG9wWXNoUWlFdm52dTBkVVJnRHQ4UWVDOFBEdzdGcGppM2ZFQTR6L1BFSjZZT0I1aEtoNGRqM0V2WGh4UHFIL1NLVVkzcko3c3JaNEZabmgxUE1BdFBod1A2ZmwyUE1KTVBEZ2VRNHJZOFlUNkd6YW8wZUFFQTQwOUR1Z2dtVG5Gbk9jU0NpRWlMTWd4Q2lUSTZDcTVEWlVkM1FtcDEwdk8wTGFMVGQyY2pONGZPdW1sYzdsVVliU1FjWkZrdXRSRzdnNkpLWkt5MFJtZExZNjgwQ0RuRUorVU1rcEZGZTFSTjdueGRWcFhyQzRhVHRuYXVyT25ZZXJjWmcyWVZtTE4vZC9nY3pmRWltckUvZnMvYk91cTI5Wm1uOHRsb09SYVhnWmdHYTc4eU85L2NuWG0yQnBhR3ZxMjVEdjlTNEU5KzVTSWM5UHF1cEpLaFlGU1NsNDcrUWNyMW1ZTkFBQUFlTnB0dzBjS3drQUFBTURaSkE4UTdPVUp2a0xzUGZaNnpGVkVSUHk4cUhoMllFUiszaS9CUDgzdklCTEx5U3NvS2ltcnFLcXBhMmhwNitqcTZSc1lHaG1ibUpxWlN5MHNyYXh0Yk8zc0hSeWRuRU1VNHVSNnl4N0pKWHZlUDdXckR5Y0FBQUFBQUFILy93QUNlTnBqWUdSZ1lPQUJZaGtnWmdKQ1pnWk5Ca1lHTFFadElKc0ZMTVlBQUF3M0FMZ0FlTm9saXpFS2dEQVFCQ2NoUmJDMnNGRVIwWUQ2cVZRaUJDdi9IOWV6R0k2WjVYQkF3OENCSy9tNWlRUVZhdVZiWExuT3JNWnYyb0xkS0ZhOFBqdXJ1MmhKekdhYm1PU0x6Tk16dnV0cEIzTjQybU5nWkdCZzRHS1FZekJoWU14SkxNbGo0R0JnQVlvdy9QL1BBSkpoTE02c1NvV0tmV0NBQXdEQWpnYlJBQUI0Mm1OZ1lHQmtBSUliQ1pvNUlQcm1VbjBoR0EwQU84RUZUUUFBJyk7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cbi8qIEZPTlRfRU5EICovXG46cm9vdCB7XG4gIC0tc3dpcGVyLXRoZW1lLWNvbG9yOiAjMDA3YWZmO1xuICAvKlxuICAtLXN3aXBlci1wcmVsb2FkZXItY29sb3I6IHZhcigtLXN3aXBlci10aGVtZS1jb2xvcik7XG4gIC0tc3dpcGVyLXdyYXBwZXItdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGluaXRpYWw7XG4gICovXG59XG46aG9zdCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIHotaW5kZXg6IDE7XG59XG4uc3dpcGVyIHtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICAvKiBGaXggb2YgV2Via2l0IGZsaWNrZXJpbmcgKi9cbiAgei1pbmRleDogMTtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4uc3dpcGVyLXZlcnRpY2FsID4gLnN3aXBlci13cmFwcGVyIHtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cbi5zd2lwZXItd3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgei1pbmRleDogMTtcbiAgZGlzcGxheTogZmxleDtcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtO1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tc3dpcGVyLXdyYXBwZXItdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24sIGluaXRpYWwpO1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbn1cbi5zd2lwZXItYW5kcm9pZCAuc3dpcGVyLXNsaWRlLFxuLnN3aXBlci1pb3MgLnN3aXBlci1zbGlkZSxcbi5zd2lwZXItd3JhcHBlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMHB4LCAwLCAwKTtcbn1cbi5zd2lwZXItaG9yaXpvbnRhbCB7XG4gIHRvdWNoLWFjdGlvbjogcGFuLXk7XG59XG4uc3dpcGVyLXZlcnRpY2FsIHtcbiAgdG91Y2gtYWN0aW9uOiBwYW4teDtcbn1cbi5zd2lwZXItc2xpZGUge1xuICBmbGV4LXNocmluazogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLnN3aXBlci1zbGlkZS1pbnZpc2libGUtYmxhbmsge1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG4vKiBBdXRvIEhlaWdodCAqL1xuLnN3aXBlci1hdXRvaGVpZ2h0LFxuLnN3aXBlci1hdXRvaGVpZ2h0IC5zd2lwZXItc2xpZGUge1xuICBoZWlnaHQ6IGF1dG87XG59XG4uc3dpcGVyLWF1dG9oZWlnaHQgLnN3aXBlci13cmFwcGVyIHtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgaGVpZ2h0O1xufVxuLnN3aXBlci1iYWNrZmFjZS1oaWRkZW4gLnN3aXBlci1zbGlkZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLyogM0QgRWZmZWN0cyAqL1xuLnN3aXBlci0zZC5zd2lwZXItY3NzLW1vZGUgLnN3aXBlci13cmFwcGVyIHtcbiAgcGVyc3BlY3RpdmU6IDEyMDBweDtcbn1cbi5zd2lwZXItM2QgLnN3aXBlci13cmFwcGVyIHtcbiAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbn1cbi5zd2lwZXItM2Qge1xuICBwZXJzcGVjdGl2ZTogMTIwMHB4O1xufVxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLFxuLnN3aXBlci0zZCAuc3dpcGVyLWN1YmUtc2hhZG93IHtcbiAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbn1cbi8qIENTUyBNb2RlICovXG4uc3dpcGVyLWNzcy1tb2RlID4gLnN3aXBlci13cmFwcGVyIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHNjcm9sbGJhci13aWR0aDogbm9uZTtcbiAgLyogRm9yIEZpcmVmb3ggKi9cbiAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xuICAvKiBGb3IgSW50ZXJuZXQgRXhwbG9yZXIgYW5kIEVkZ2UgKi9cbn1cbi5zd2lwZXItY3NzLW1vZGUgPiAuc3dpcGVyLXdyYXBwZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5zd2lwZXItY3NzLW1vZGUgPiAuc3dpcGVyLXdyYXBwZXIgPiAuc3dpcGVyLXNsaWRlIHtcbiAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0IHN0YXJ0O1xufVxuLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItaG9yaXpvbnRhbCA+IC5zd2lwZXItd3JhcHBlciB7XG4gIHNjcm9sbC1zbmFwLXR5cGU6IHggbWFuZGF0b3J5O1xufVxuLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItdmVydGljYWwgPiAuc3dpcGVyLXdyYXBwZXIge1xuICBzY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbn1cbi5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWZyZWUtbW9kZSA+IC5zd2lwZXItd3JhcHBlciB7XG4gIHNjcm9sbC1zbmFwLXR5cGU6IG5vbmU7XG59XG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1mcmVlLW1vZGUgPiAuc3dpcGVyLXdyYXBwZXIgPiAuc3dpcGVyLXNsaWRlIHtcbiAgc2Nyb2xsLXNuYXAtYWxpZ246IG5vbmU7XG59XG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1jZW50ZXJlZCA+IC5zd2lwZXItd3JhcHBlcjo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBvcmRlcjogOTk5OTtcbn1cbi5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWNlbnRlcmVkID4gLnN3aXBlci13cmFwcGVyID4gLnN3aXBlci1zbGlkZSB7XG4gIHNjcm9sbC1zbmFwLWFsaWduOiBjZW50ZXIgY2VudGVyO1xuICBzY3JvbGwtc25hcC1zdG9wOiBhbHdheXM7XG59XG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1jZW50ZXJlZC5zd2lwZXItaG9yaXpvbnRhbCA+IC5zd2lwZXItd3JhcHBlciA+IC5zd2lwZXItc2xpZGU6Zmlyc3QtY2hpbGQge1xuICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWJlZm9yZSk7XG59XG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1jZW50ZXJlZC5zd2lwZXItaG9yaXpvbnRhbCA+IC5zd2lwZXItd3JhcHBlcjo6YmVmb3JlIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtaW4taGVpZ2h0OiAxcHg7XG4gIHdpZHRoOiB2YXIoLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWFmdGVyKTtcbn1cbi5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWNlbnRlcmVkLnN3aXBlci12ZXJ0aWNhbCA+IC5zd2lwZXItd3JhcHBlciA+IC5zd2lwZXItc2xpZGU6Zmlyc3QtY2hpbGQge1xuICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYmVmb3JlKTtcbn1cbi5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWNlbnRlcmVkLnN3aXBlci12ZXJ0aWNhbCA+IC5zd2lwZXItd3JhcHBlcjo6YmVmb3JlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMXB4O1xuICBoZWlnaHQ6IHZhcigtLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYWZ0ZXIpO1xufVxuLyogU2xpZGUgc3R5bGVzIHN0YXJ0ICovXG4vKiAzRCBTaGFkb3dzICovXG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCxcbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20sXG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCxcbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDEwO1xufVxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdyB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG59XG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgwLCAwLCAwLCAwLjUpLCByZ2JhKDAsIDAsIDAsIDApKTtcbn1cbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC41KSwgcmdiYSgwLCAwLCAwLCAwKSk7XG59XG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsIHJnYmEoMCwgMCwgMCwgMC41KSwgcmdiYSgwLCAwLCAwLCAwKSk7XG59XG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMCwgMCwgMCwgMC41KSwgcmdiYSgwLCAwLCAwLCAwKSk7XG59XG4uc3dpcGVyLWxhenktcHJlbG9hZGVyIHtcbiAgd2lkdGg6IDQycHg7XG4gIGhlaWdodDogNDJweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA1MCU7XG4gIHRvcDogNTAlO1xuICBtYXJnaW4tbGVmdDogLTIxcHg7XG4gIG1hcmdpbi10b3A6IC0yMXB4O1xuICB6LWluZGV4OiAxMDtcbiAgdHJhbnNmb3JtLW9yaWdpbjogNTAlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3JkZXI6IDRweCBzb2xpZCB2YXIoLS1zd2lwZXItcHJlbG9hZGVyLWNvbG9yLCB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpKTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5zd2lwZXI6bm90KC5zd2lwZXItd2F0Y2gtcHJvZ3Jlc3MpIC5zd2lwZXItbGF6eS1wcmVsb2FkZXIsXG4uc3dpcGVyLXdhdGNoLXByb2dyZXNzIC5zd2lwZXItc2xpZGUtdmlzaWJsZSAuc3dpcGVyLWxhenktcHJlbG9hZGVyIHtcbiAgYW5pbWF0aW9uOiBzd2lwZXItcHJlbG9hZGVyLXNwaW4gMXMgaW5maW5pdGUgbGluZWFyO1xufVxuLnN3aXBlci1sYXp5LXByZWxvYWRlci13aGl0ZSB7XG4gIC0tc3dpcGVyLXByZWxvYWRlci1jb2xvcjogI2ZmZjtcbn1cbi5zd2lwZXItbGF6eS1wcmVsb2FkZXItYmxhY2sge1xuICAtLXN3aXBlci1wcmVsb2FkZXItY29sb3I6ICMwMDA7XG59XG5Aa2V5ZnJhbWVzIHN3aXBlci1wcmVsb2FkZXItc3BpbiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG4vKiBTbGlkZSBzdHlsZXMgZW5kICovXG4uc3dpcGVyLXZpcnR1YWwgLnN3aXBlci1zbGlkZSB7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG59XG4uc3dpcGVyLXZpcnR1YWwuc3dpcGVyLWNzcy1tb2RlIC5zd2lwZXItd3JhcHBlcjo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuLnN3aXBlci12aXJ0dWFsLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItaG9yaXpvbnRhbCAuc3dpcGVyLXdyYXBwZXI6OmFmdGVyIHtcbiAgaGVpZ2h0OiAxcHg7XG4gIHdpZHRoOiB2YXIoLS1zd2lwZXItdmlydHVhbC1zaXplKTtcbn1cbi5zd2lwZXItdmlydHVhbC5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLXZlcnRpY2FsIC5zd2lwZXItd3JhcHBlcjo6YWZ0ZXIge1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IHZhcigtLXN3aXBlci12aXJ0dWFsLXNpemUpO1xufVxuOnJvb3Qge1xuICAtLXN3aXBlci1uYXZpZ2F0aW9uLXNpemU6IDQ0cHg7XG4gIC8qXG4gIC0tc3dpcGVyLW5hdmlnYXRpb24tdG9wLW9mZnNldDogNTAlO1xuICAtLXN3aXBlci1uYXZpZ2F0aW9uLXNpZGVzLW9mZnNldDogMTBweDtcbiAgLS1zd2lwZXItbmF2aWdhdGlvbi1jb2xvcjogdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKTtcbiAgKi9cbn1cbi5zd2lwZXItYnV0dG9uLXByZXYsXG4uc3dpcGVyLWJ1dHRvbi1uZXh0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXRvcC1vZmZzZXQsIDUwJSk7XG4gIHdpZHRoOiBjYWxjKHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXNpemUpIC8gNDQgKiAyNyk7XG4gIGhlaWdodDogdmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tc2l6ZSk7XG4gIG1hcmdpbi10b3A6IGNhbGMoMHB4IC0gKHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXNpemUpIC8gMikpO1xuICB6LWluZGV4OiAxMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgY29sb3I6IHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLWNvbG9yLCB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpKTtcbn1cbi5zd2lwZXItYnV0dG9uLXByZXYuc3dpcGVyLWJ1dHRvbi1kaXNhYmxlZCxcbi5zd2lwZXItYnV0dG9uLW5leHQuc3dpcGVyLWJ1dHRvbi1kaXNhYmxlZCB7XG4gIG9wYWNpdHk6IDAuMzU7XG4gIGN1cnNvcjogYXV0bztcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4uc3dpcGVyLWJ1dHRvbi1wcmV2LnN3aXBlci1idXR0b24taGlkZGVuLFxuLnN3aXBlci1idXR0b24tbmV4dC5zd2lwZXItYnV0dG9uLWhpZGRlbiB7XG4gIG9wYWNpdHk6IDA7XG4gIGN1cnNvcjogYXV0bztcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4uc3dpcGVyLW5hdmlnYXRpb24tZGlzYWJsZWQgLnN3aXBlci1idXR0b24tcHJldixcbi5zd2lwZXItbmF2aWdhdGlvbi1kaXNhYmxlZCAuc3dpcGVyLWJ1dHRvbi1uZXh0IHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLnN3aXBlci1idXR0b24tcHJldiBzdmcsXG4uc3dpcGVyLWJ1dHRvbi1uZXh0IHN2ZyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbn1cbi5zd2lwZXItcnRsIC5zd2lwZXItYnV0dG9uLXByZXYgc3ZnLFxuLnN3aXBlci1ydGwgLnN3aXBlci1idXR0b24tbmV4dCBzdmcge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xufVxuLnN3aXBlci1idXR0b24tcHJldixcbi5zd2lwZXItcnRsIC5zd2lwZXItYnV0dG9uLW5leHQge1xuICBsZWZ0OiB2YXIoLS1zd2lwZXItbmF2aWdhdGlvbi1zaWRlcy1vZmZzZXQsIDEwcHgpO1xuICByaWdodDogYXV0bztcbn1cbi5zd2lwZXItYnV0dG9uLW5leHQsXG4uc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1wcmV2IHtcbiAgcmlnaHQ6IHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXNpZGVzLW9mZnNldCwgMTBweCk7XG4gIGxlZnQ6IGF1dG87XG59XG4uc3dpcGVyLWJ1dHRvbi1sb2NrIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qIE5hdmlnYXRpb24gZm9udCBzdGFydCAqL1xuLnN3aXBlci1idXR0b24tcHJldjphZnRlcixcbi5zd2lwZXItYnV0dG9uLW5leHQ6YWZ0ZXIge1xuICBmb250LWZhbWlseTogc3dpcGVyLWljb25zO1xuICBmb250LXNpemU6IHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXNpemUpO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICBsZXR0ZXItc3BhY2luZzogMDtcbiAgZm9udC12YXJpYW50OiBpbml0aWFsO1xuICBsaW5lLWhlaWdodDogMTtcbn1cbi5zd2lwZXItYnV0dG9uLXByZXY6YWZ0ZXIsXG4uc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1uZXh0OmFmdGVyIHtcbiAgY29udGVudDogJ3ByZXYnO1xufVxuLnN3aXBlci1idXR0b24tbmV4dCxcbi5zd2lwZXItcnRsIC5zd2lwZXItYnV0dG9uLXByZXYge1xuICByaWdodDogdmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tc2lkZXMtb2Zmc2V0LCAxMHB4KTtcbiAgbGVmdDogYXV0bztcbn1cbi5zd2lwZXItYnV0dG9uLW5leHQ6YWZ0ZXIsXG4uc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1wcmV2OmFmdGVyIHtcbiAgY29udGVudDogJ25leHQnO1xufVxuLyogTmF2aWdhdGlvbiBmb250IGVuZCAqL1xuOnJvb3Qge1xuICAvKlxuICAtLXN3aXBlci1wYWdpbmF0aW9uLWNvbG9yOiB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpO1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLWxlZnQ6IGF1dG87XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tcmlnaHQ6IDhweDtcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi1ib3R0b206IDhweDtcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi10b3A6IGF1dG87XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tZnJhY3Rpb24tY29sb3I6IGluaGVyaXQ7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItYmctY29sb3I6IHJnYmEoMCwwLDAsMC4yNSk7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItc2l6ZTogNHB4O1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1zaXplOiA4cHg7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LXdpZHRoOiA4cHg7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWhlaWdodDogOHB4O1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1ib3JkZXItcmFkaXVzOiA1MCU7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWluYWN0aXZlLWNvbG9yOiAjMDAwO1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1pbmFjdGl2ZS1vcGFjaXR5OiAwLjI7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LW9wYWNpdHk6IDE7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWhvcml6b250YWwtZ2FwOiA0cHg7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LXZlcnRpY2FsLWdhcDogNnB4O1xuICAqL1xufVxuLnN3aXBlci1wYWdpbmF0aW9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRyYW5zaXRpb246IDMwMG1zIG9wYWNpdHk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIHotaW5kZXg6IDEwO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLnN3aXBlci1wYWdpbmF0aW9uLWhpZGRlbiB7XG4gIG9wYWNpdHk6IDA7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgPiAuc3dpcGVyLXBhZ2luYXRpb24sXG4uc3dpcGVyLXBhZ2luYXRpb24uc3dpcGVyLXBhZ2luYXRpb24tZGlzYWJsZWQge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4vKiBDb21tb24gU3R5bGVzICovXG4uc3dpcGVyLXBhZ2luYXRpb24tZnJhY3Rpb24sXG4uc3dpcGVyLXBhZ2luYXRpb24tY3VzdG9tLFxuLnN3aXBlci1ob3Jpem9udGFsID4gLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMsXG4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsIHtcbiAgYm90dG9tOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1ib3R0b20sIDhweCk7XG4gIHRvcDogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tdG9wLCBhdXRvKTtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG59XG4vKiBCdWxsZXRzICovXG4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZm9udC1zaXplOiAwO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjMzKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMSk7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLW1haW4ge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1wcmV2IHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjY2KTtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUtcHJldi1wcmV2IHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjMzKTtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUtbmV4dCB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC42Nik7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLW5leHQtbmV4dCB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC4zMyk7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHtcbiAgd2lkdGg6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC13aWR0aCwgdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LXNpemUsIDhweCkpO1xuICBoZWlnaHQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1oZWlnaHQsIHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1zaXplLCA4cHgpKTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYm9yZGVyLXJhZGl1cywgNTAlKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWluYWN0aXZlLWNvbG9yLCAjMDAwKTtcbiAgb3BhY2l0eTogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWluYWN0aXZlLW9wYWNpdHksIDAuMik7XG59XG5idXR0b24uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHtcbiAgYm9yZGVyOiBub25lO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWNsaWNrYWJsZSAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldDpvbmx5LWNoaWxkIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUge1xuICBvcGFjaXR5OiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtb3BhY2l0eSwgMSk7XG4gIGJhY2tncm91bmQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWNvbG9yLCB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpKTtcbn1cbi5zd2lwZXItdmVydGljYWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyxcbi5zd2lwZXItcGFnaW5hdGlvbi12ZXJ0aWNhbC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIHtcbiAgcmlnaHQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLXJpZ2h0LCA4cHgpO1xuICBsZWZ0OiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1sZWZ0LCBhdXRvKTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMHB4LCAtNTAlLCAwKTtcbn1cbi5zd2lwZXItdmVydGljYWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LFxuLnN3aXBlci1wYWdpbmF0aW9uLXZlcnRpY2FsLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7XG4gIG1hcmdpbjogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LXZlcnRpY2FsLWdhcCwgNnB4KSAwO1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi5zd2lwZXItdmVydGljYWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMsXG4uc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMge1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICB3aWR0aDogOHB4O1xufVxuLnN3aXBlci12ZXJ0aWNhbCA+IC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LFxuLnN3aXBlci1wYWdpbmF0aW9uLXZlcnRpY2FsLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHRyYW5zaXRpb246IDIwMG1zIHRyYW5zZm9ybSxcbiAgICAgICAgMjAwbXMgdG9wO1xufVxuLnN3aXBlci1ob3Jpem9udGFsID4gLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCxcbi5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7XG4gIG1hcmdpbjogMCB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtaG9yaXpvbnRhbC1nYXAsIDRweCk7XG59XG4uc3dpcGVyLWhvcml6b250YWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMsXG4uc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyB7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLnN3aXBlci1ob3Jpem9udGFsID4gLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQsXG4uc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHtcbiAgdHJhbnNpdGlvbjogMjAwbXMgdHJhbnNmb3JtLFxuICAgICAgICAyMDBtcyBsZWZ0O1xufVxuLnN3aXBlci1ob3Jpem9udGFsLnN3aXBlci1ydGwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQge1xuICB0cmFuc2l0aW9uOiAyMDBtcyB0cmFuc2Zvcm0sXG4gICAgMjAwbXMgcmlnaHQ7XG59XG4vKiBGcmFjdGlvbiAqL1xuLnN3aXBlci1wYWdpbmF0aW9uLWZyYWN0aW9uIHtcbiAgY29sb3I6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWZyYWN0aW9uLWNvbG9yLCBpbmhlcml0KTtcbn1cbi8qIFByb2dyZXNzICovXG4uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1iZy1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjI1KSk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2JhciAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItZmlsbCB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWNvbG9yLCB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpKTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgdG9wO1xufVxuLnN3aXBlci1ydGwgLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyIC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1maWxsIHtcbiAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgdG9wO1xufVxuLnN3aXBlci1ob3Jpem9udGFsID4gLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLFxuLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLnN3aXBlci1wYWdpbmF0aW9uLWhvcml6b250YWwsXG4uc3dpcGVyLXZlcnRpY2FsID4gLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLW9wcG9zaXRlLFxuLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLnN3aXBlci1wYWdpbmF0aW9uLXZlcnRpY2FsLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLW9wcG9zaXRlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItc2l6ZSwgNHB4KTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xufVxuLnN3aXBlci12ZXJ0aWNhbCA+IC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhcixcbi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi12ZXJ0aWNhbCxcbi5zd2lwZXItaG9yaXpvbnRhbCA+IC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1vcHBvc2l0ZSxcbi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLW9wcG9zaXRlIHtcbiAgd2lkdGg6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLXNpemUsIDRweCk7XG4gIGhlaWdodDogMTAwJTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWxvY2sge1xuICBkaXNwbGF5OiBub25lO1xufVxuOnJvb3Qge1xuICAvKlxuICAtLXN3aXBlci1zY3JvbGxiYXItYm9yZGVyLXJhZGl1czogMTBweDtcbiAgLS1zd2lwZXItc2Nyb2xsYmFyLXRvcDogYXV0bztcbiAgLS1zd2lwZXItc2Nyb2xsYmFyLWJvdHRvbTogNHB4O1xuICAtLXN3aXBlci1zY3JvbGxiYXItbGVmdDogYXV0bztcbiAgLS1zd2lwZXItc2Nyb2xsYmFyLXJpZ2h0OiA0cHg7XG4gIC0tc3dpcGVyLXNjcm9sbGJhci1zaWRlcy1vZmZzZXQ6IDElO1xuICAtLXN3aXBlci1zY3JvbGxiYXItYmctY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgLS1zd2lwZXItc2Nyb2xsYmFyLWRyYWctYmctY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgLS1zd2lwZXItc2Nyb2xsYmFyLXNpemU6IDRweDtcbiAgKi9cbn1cbi5zd2lwZXItc2Nyb2xsYmFyIHtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1ib3JkZXItcmFkaXVzLCAxMHB4KTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3VjaC1hY3Rpb246IG5vbmU7XG4gIGJhY2tncm91bmQ6IHZhcigtLXN3aXBlci1zY3JvbGxiYXItYmctY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xKSk7XG59XG4uc3dpcGVyLXNjcm9sbGJhci1kaXNhYmxlZCA+IC5zd2lwZXItc2Nyb2xsYmFyLFxuLnN3aXBlci1zY3JvbGxiYXIuc3dpcGVyLXNjcm9sbGJhci1kaXNhYmxlZCB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5zd2lwZXItaG9yaXpvbnRhbCA+IC5zd2lwZXItc2Nyb2xsYmFyLFxuLnN3aXBlci1zY3JvbGxiYXIuc3dpcGVyLXNjcm9sbGJhci1ob3Jpem9udGFsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiB2YXIoLS1zd2lwZXItc2Nyb2xsYmFyLXNpZGVzLW9mZnNldCwgMSUpO1xuICBib3R0b206IHZhcigtLXN3aXBlci1zY3JvbGxiYXItYm90dG9tLCA0cHgpO1xuICB0b3A6IHZhcigtLXN3aXBlci1zY3JvbGxiYXItdG9wLCBhdXRvKTtcbiAgei1pbmRleDogNTA7XG4gIGhlaWdodDogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1zaXplLCA0cHgpO1xuICB3aWR0aDogY2FsYygxMDAlIC0gMiAqIHZhcigtLXN3aXBlci1zY3JvbGxiYXItc2lkZXMtb2Zmc2V0LCAxJSkpO1xufVxuLnN3aXBlci12ZXJ0aWNhbCA+IC5zd2lwZXItc2Nyb2xsYmFyLFxuLnN3aXBlci1zY3JvbGxiYXIuc3dpcGVyLXNjcm9sbGJhci12ZXJ0aWNhbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1sZWZ0LCBhdXRvKTtcbiAgcmlnaHQ6IHZhcigtLXN3aXBlci1zY3JvbGxiYXItcmlnaHQsIDRweCk7XG4gIHRvcDogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1zaWRlcy1vZmZzZXQsIDElKTtcbiAgei1pbmRleDogNTA7XG4gIHdpZHRoOiB2YXIoLS1zd2lwZXItc2Nyb2xsYmFyLXNpemUsIDRweCk7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gMiAqIHZhcigtLXN3aXBlci1zY3JvbGxiYXItc2lkZXMtb2Zmc2V0LCAxJSkpO1xufVxuLnN3aXBlci1zY3JvbGxiYXItZHJhZyB7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1kcmFnLWJnLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuNSkpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd2lwZXItc2Nyb2xsYmFyLWJvcmRlci1yYWRpdXMsIDEwcHgpO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG59XG4uc3dpcGVyLXNjcm9sbGJhci1jdXJzb3ItZHJhZyB7XG4gIGN1cnNvcjogbW92ZTtcbn1cbi5zd2lwZXItc2Nyb2xsYmFyLWxvY2sge1xuICBkaXNwbGF5OiBub25lO1xufVxuLyogWm9vbSBjb250YWluZXIgc3R5bGVzIHN0YXJ0ICovXG4uc3dpcGVyLXpvb20tY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5zd2lwZXItem9vbS1jb250YWluZXIgPiBpbWcsXG4uc3dpcGVyLXpvb20tY29udGFpbmVyID4gc3ZnLFxuLnN3aXBlci16b29tLWNvbnRhaW5lciA+IGNhbnZhcyB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogMTAwJTtcbiAgb2JqZWN0LWZpdDogY29udGFpbjtcbn1cbi8qIFpvb20gY29udGFpbmVyIHN0eWxlcyBlbmQgKi9cbi5zd2lwZXItc2xpZGUtem9vbWVkIHtcbiAgY3Vyc29yOiBtb3ZlO1xuICB0b3VjaC1hY3Rpb246IG5vbmU7XG59XG4vKiBhMTF5ICovXG4uc3dpcGVyIC5zd2lwZXItbm90aWZpY2F0aW9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAtMTAwMDtcbn1cbi5zd2lwZXItZnJlZS1tb2RlID4gLnN3aXBlci13cmFwcGVyIHtcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0O1xuICBtYXJnaW46IDAgYXV0bztcbn1cbi5zd2lwZXItZ3JpZCA+IC5zd2lwZXItd3JhcHBlciB7XG4gIGZsZXgtd3JhcDogd3JhcDtcbn1cbi5zd2lwZXItZ3JpZC1jb2x1bW4gPiAuc3dpcGVyLXdyYXBwZXIge1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG4uc3dpcGVyLWZhZGUuc3dpcGVyLWZyZWUtbW9kZSAuc3dpcGVyLXNsaWRlIHtcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0O1xufVxuLnN3aXBlci1mYWRlIC5zd2lwZXItc2xpZGUge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eTtcbn1cbi5zd2lwZXItZmFkZSAuc3dpcGVyLXNsaWRlIC5zd2lwZXItc2xpZGUge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5zd2lwZXItZmFkZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuLnN3aXBlci1mYWRlIC5zd2lwZXItc2xpZGUtYWN0aXZlIC5zd2lwZXItc2xpZGUtYWN0aXZlIHtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG59XG4uc3dpcGVyLnN3aXBlci1jdWJlIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4uc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIHotaW5kZXg6IDE7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuLnN3aXBlci1jdWJlLnN3aXBlci1ydGwgLnN3aXBlci1zbGlkZSB7XG4gIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMDtcbn1cbi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSxcbi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtYWN0aXZlLFxuLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtbmV4dCxcbi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLXByZXYge1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbn1cbi5zd2lwZXItY3ViZSAuc3dpcGVyLWN1YmUtc2hhZG93IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3BhY2l0eTogMC42O1xuICB6LWluZGV4OiAwO1xufVxuLnN3aXBlci1jdWJlIC5zd2lwZXItY3ViZS1zaGFkb3c6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIGJhY2tncm91bmQ6ICMwMDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBmaWx0ZXI6IGJsdXIoNTBweCk7XG59XG4uc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1uZXh0ICsgLnN3aXBlci1zbGlkZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuLyogQ3ViZSBzbGlkZSBzaGFkb3dzIHN0YXJ0ICovXG4uc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1zaGFkb3ctY3ViZS5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCxcbi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLXNoYWRvdy1jdWJlLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLFxuLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtc2hhZG93LWN1YmUuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LFxuLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtc2hhZG93LWN1YmUuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCB7XG4gIHotaW5kZXg6IDA7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi8qIEN1YmUgc2xpZGUgc2hhZG93cyBlbmQgKi9cbi5zd2lwZXIuc3dpcGVyLWZsaXAge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cbi5zd2lwZXItZmxpcCAuc3dpcGVyLXNsaWRlIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgei1pbmRleDogMTtcbn1cbi5zd2lwZXItZmxpcCAuc3dpcGVyLXNsaWRlIC5zd2lwZXItc2xpZGUge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5zd2lwZXItZmxpcCAuc3dpcGVyLXNsaWRlLWFjdGl2ZSxcbi5zd2lwZXItZmxpcCAuc3dpcGVyLXNsaWRlLWFjdGl2ZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuLyogRmxpcCBzbGlkZSBzaGFkb3dzIHN0YXJ0ICovXG4uc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1zaGFkb3ctZmxpcC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCxcbi5zd2lwZXItZmxpcCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1mbGlwLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLFxuLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUtc2hhZG93LWZsaXAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LFxuLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUtc2hhZG93LWZsaXAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCB7XG4gIHotaW5kZXg6IDA7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi8qIEZsaXAgc2xpZGUgc2hhZG93cyBlbmQgKi9cbi5zd2lwZXItY3JlYXRpdmUgLnN3aXBlci1zbGlkZSB7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBvcGFjaXR5LCBoZWlnaHQ7XG59XG4uc3dpcGVyLnN3aXBlci1jYXJkcyB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuLnN3aXBlci1jYXJkcyAuc3dpcGVyLXNsaWRlIHtcbiAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGJvdHRvbTtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuIiwgIi8vIOujqO2LtCDsu7Ttj6zrhIztirgg66CI7J207JWE7JuDIOyEpOyglVxuLmRyLXRhc2sgKixcbi5kci10YXNrIDo6YWZ0ZXIsXG4uZHItdGFzayA6OmJlZm9yZSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi8vIOujqO2LtCDquLDrs7gg66CI7J207JWE7JuDIFxuLmRyLXRhc2sge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiAxNnB4OyAvKiDsoITssrTsoIEg66Oo7Yu07J2YIOyCrOydtOymiOulvCDqsrDsoJUgKi9cbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMi4zZW07XG4gIHBhZGRpbmc6IDAgMC41ZW07XG4gIG1hcmdpbjogMCAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIFxuICAuZHItdGFza19fY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGhlaWdodDogMTAwJTtcblxuICAgIC5kci10YXNrX19tYWluIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gIFxuICAgICAgLmRyLXRhc2tfX2NieCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgdG9wOiBjYWxjKDEvMzIgKiAxZW0pO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHdpZHRoOiBjYWxjKDE0LzE2ICogMWVtKTtcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDE0LzE2ICogMWVtKTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKDAuNWVtKTtcbiAgICAgICAgYm9yZGVyOiBjYWxjKDEvMTYgKiAxZW0pIHNvbGlkICNjOGNjZDQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsgLyog7LK07YGs67CV7IqkIOqzoeuloCAqL1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIHdpZHRoOiBjYWxjKDcvOCAqIDFlbSk7XG4gICAgICAgICAgaGVpZ2h0OiBjYWxjKDMvNCAqIDFlbSk7XG4gICAgICAgICAgdG9wOiBjYWxjKC0xLzE2ICogMWVtKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICAgICAgICAgIGZpbGw6IG5vbmU7XG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kO1xuICAgICAgICAgIHN0cm9rZS1saW5lam9pbjogcm91bmQ7XG4gICAgICAgICAgcG9seWxpbmUge1xuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoOiAyO1xuICAgICAgICAgICAgc3Ryb2tlOiBoc2xhKHZhcigtLWNvbG9yLWFjY2VudC0xLWhzbCksIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyDssrTtgaztkZzsi5wg7JWE7J207L2YXG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAgIG1hcmdpbjogY2FsYygtNS84ICogMWVtKSAwIDAgY2FsYygtNS84ICogMWVtKTtcbiAgICAgICAgICB3aWR0aDogY2FsYyg1LzQgKiAxZW0pO1xuICAgICAgICAgIGhlaWdodDogY2FsYyg1LzQgKiAxZW0pO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgICAgICAgYmFja2dyb3VuZDogaHNsYSh2YXIoLS1jb2xvci1hY2NlbnQtMS1oc2wpLCAxLjApO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgICAgIH1cbiAgICAgICAgLyog7LK07YGsIOydtO2Ome2KuCAqL1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgdG9wOiBjYWxjKDUvMTYgKiAxZW0pO1xuICAgICAgICAgIGxlZnQ6IGNhbGMoNS8xNiAqIDFlbSk7XG4gICAgICAgICAgd2lkdGg6IGNhbGMoMS84ICogMWVtKTtcbiAgICAgICAgICBoZWlnaHQ6IGNhbGMoMS84ICogMWVtKTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7IFxuICAgICAgICAgIGJveC1zaGFkb3c6IDAgY2FsYyg5LzggKiAtMWVtKSAwIGhzbGEodmFyKC0tY29sb3ItYWNjZW50LTEtaHNsKSwgMS4wKSwgY2FsYygzLzQgKiAxZW0pIGNhbGMoMy80ICogLTFlbSkgMCBoc2xhKHZhcigtLWNvbG9yLWFjY2VudC0xLWhzbCksIDEuMCksIGNhbGMoOS84ICogMWVtKSAwIDAgaHNsYSh2YXIoLS1jb2xvci1hY2NlbnQtMS1oc2wpLCAxLjApLCBjYWxjKDMvNCAqIDFlbSkgY2FsYygzLzQgKiAxZW0pIDAgaHNsYSh2YXIoLS1jb2xvci1hY2NlbnQtMS1oc2wpLCAxLjApLCAwIGNhbGMoOS84ICogMWVtKSAwIGhzbGEodmFyKC0tY29sb3ItYWNjZW50LTEtaHNsKSwgMS4wKSwgY2FsYygzLzQgKiAtMWVtKSBjYWxjKDMvNCAqIDFlbSkgMCBoc2xhKHZhcigtLWNvbG9yLWFjY2VudC0xLWhzbCksIDEuMCksIGNhbGMoOS84ICogLTFlbSkgMCAwIGhzbGEodmFyKC0tY29sb3ItYWNjZW50LTEtaHNsKSwgMS4wKSwgY2FsYygzLzQgKiAtMWVtKSBjYWxjKDMvNCAqIC0xZW0pIDAgaHNsYSh2YXIoLS1jb2xvci1hY2NlbnQtMS1oc2wpLCAxLjApO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgLmRyLXRhc2tfX25hbWUge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4zcyBlYXNlO1xuICAgICAgICAvLyDssrTtgazshKAoY2hlY2vrkJjrqbQgd2lkdGjrpbwgMTAwJeuhnCDrsJTqv5TshJwg7JWg64uI66mU7J207IWY6rO8IO2VqOq7mCDrgpjtg4Drgpjrj4TroZ0pXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgIHdpZHRoOiAwO1xuICAgICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICAgIGJhY2tncm91bmQ6ICM5MDk4YTk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuZHItdGFza19fb3B0aW9uIHtcbiAgICAgIHdpZHRoOiAxLjJlbTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHN2ZyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB3aWR0aDogMS4yZW07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cblxuLy8g7LK07YGs65CcIOyDge2DnFxuLmRyLXRhc2suZHItdGFzay0tY2hlY2tlZCB7XG4gIC5kci10YXNrX19jb250YWluZXIgLmRyLXRhc2tfX21haW4ge1xuICAgIC5kci10YXNrX19jYngge1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIHN2ZyB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG4gICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDAuMXM7XG4gICAgICB9XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gICAgICB9XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNnMgZWFzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLmRyLXRhc2tfX25hbWUge1xuICAgICAgY29sb3I6ICM5MDk4YTk7XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIGRuZFxuLmRyLXRhc2stLXJlYWR5LCAuZHItdGFzay0tZHJhZ2dpbmcge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIwMywgMjAzLCAyMDMsIDAuNSk7XG4gIH1cbn0iLCAiLy8g7IOJ7IOBIOuzgOyImFxuJGNvbG9yLWJvcmRlcjogI2EwYTA5NjtcbiRjb2xvci1kaXNhYmxlZC1iZzogI2YwZjBmMDtcbiRjb2xvci1kaXNhYmxlZC10ZXh0OiAjYWJhYmFiO1xuJGNvbG9yLWRpc2FibGVkLW5laWdoYm9yOiAjY2RjZGNkO1xuJGNvbG9yLWhvdmVyLWJnOiAjZTZlNmU2O1xuXG4vLyDqs7XthrUg7Iqk7YOA7J28XG4ucmVhY3QtY2FsZW5kYXIsXG4ucmVhY3QtY2FsZW5kYXIgKixcbi5yZWFjdC1jYWxlbmRhciAqOmJlZm9yZSxcbi5yZWFjdC1jYWxlbmRhciAqOmFmdGVyIHtcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi8vIHJlYWN0LWNhbGVuZGFyIOq4sOuzuCDsiqTtg4Dsnbxcbi5yZWFjdC1jYWxlbmRhciB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItYm9yZGVyO1xuICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgbGluZS1oZWlnaHQ6IDEuMTI1ZW07XG5cbiAgYnV0dG9uIHtcbiAgICBtYXJnaW46IDA7XG4gICAgYm9yZGVyOiAwO1xuICAgIG91dGxpbmU6IG5vbmU7XG5cbiAgICAmOmVuYWJsZWQ6aG92ZXIge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbiAgfVxuICBcbiAgJi0tZG91YmxlVmlldyB7XG4gICAgd2lkdGg6IDcwMHB4O1xuXG4gICAgLnJlYWN0LWNhbGVuZGFyX192aWV3Q29udGFpbmVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBtYXJnaW46IC0wLjVlbTtcblxuICAgICAgPiAqIHtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgbWFyZ2luOiAwLjVlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8g64Sk67mE6rKM7J207IWYXG4ucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IDQ0cHg7XG4gIG1hcmdpbi1ib3R0b206IDFlbTtcblxuICBidXR0b24ge1xuICAgIG1pbi13aWR0aDogNDRweDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuXG4gICAgJjpkaXNhYmxlZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZGlzYWJsZWQtYmc7XG4gICAgfVxuXG4gICAgJjplbmFibGVkIHtcbiAgICAgICY6aG92ZXIsXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWhvdmVyLWJnO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyDsm5QsIOyalOydvCDrsI8g64Kg7KecXG4ucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtkYXlzIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDAuNzVlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cbiAgJl9fd2Vla2RheSB7XG4gICAgcGFkZGluZzogMC41ZW07XG4gIH1cbn1cblxuLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X193ZWVrTnVtYmVycyAucmVhY3QtY2FsZW5kYXJfX3RpbGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAwLjc1ZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vLyDrgqDsp5wg7YOA7J28IOyKpO2DgOydvFxuLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzIHtcbiAgZ2FwOiAwLjVlbSAwO1xuXG4gICZfX2RheSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XG4gIH1cblxuICBhYmJyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLmRyLXBlcmNlbnRhZ2UtY2lyY2xlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgY2lyY2xlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjdzIGVhc2UtaW4tb3V0O1xuICAgIH1cbiAgfVxufVxuLy8g7J207JuD7ZWcIOuLrOydmCDrgqDsp5xcbi5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fZGF5c19fZGF5LS1uZWlnaGJvcmluZ01vbnRoIHtcbiAgLmRyLXBlcmNlbnRhZ2UtY2lyY2xlIHtcbiAgICBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiAkY29sb3ItZGlzYWJsZWQtbmVpZ2hib3IgIWltcG9ydGFudDtcbiAgICAgIHN0cm9rZS1vcGFjaXR5OiAwLjEgIWltcG9ydGFudDtcbiAgICB9XG4gICAgdGV4dCB7XG4gICAgICBvcGFjaXR5OiAwLjI7XG4gICAgfVxuICB9XG59XG5cblxuLy8gcmVhY3QtY2FsZW5kYXIg7YOA7J28XG4ucmVhY3QtY2FsZW5kYXJfX3RpbGUge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNmVtO1xuICBwYWRkaW5nOiAxZW07XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGluZS1oZWlnaHQ6IDFlbTtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAwLjdlbTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItaG92ZXItYmc7XG4gIH1cbn1cbiIsICJib2R5IHtcbiAgLS1jb2xvci1hY2NlbnQtMS1oc2w6IGNhbGModmFyKC0tYWNjZW50LWgpIC0gMyksIGNhbGModmFyKC0tYWNjZW50LXMpICogMS4wMiksIGNhbGModmFyKC0tYWNjZW50LWwpICogMS4xNSk7XG4gIC0tY29sb3ItYWNjZW50LTItaHNsOiBjYWxjKHZhcigtLWFjY2VudC1oKSAtIDUpLCBjYWxjKHZhcigtLWFjY2VudC1zKSAqIDEuMDUpLCBjYWxjKHZhcigtLWFjY2VudC1sKSAqIDEuMjkpO1xufSJdLAogICJtYXBwaW5ncyI6ICI7OztBQU1JLENBQUEsNkJBQUEsQ0FBQTtBQUNFLFVBQUEsRUFBQTs7QUFDQSxDQUZGLDZCQUVFLENBQUE7QUFDRSxvQkFBQSxJQUFBOztBQVVSLENBQUE7O0FBS0UsQ0FMRixrQkFLRTtBQUNFLFdBQUE7QUFDQSxrQkFBQTtBQUNBLE9BQUE7O0FBR0EsQ0FYSixrQkFXSSxRQUFBLENBQUE7QUFDRSxXQUFBO0FBQ0EsbUJBQUE7QUFDQSxlQUFBOztBQVNKLENBQUEsdUJBQUE7QUFDRSxXQUFBO0FBQ0EsbUJBQUE7QUFDQSxTQUFBOztBQUNBLENBSkYsdUJBSUUsSUFBQTtBQUNFLFNBQUE7O0FBR0osQ0FSQSx1QkFRQTtBQUNFLGVBQUE7O0FBUUYsQ0FBQSx5QkFBQTtBQUNFLFNBQUEsS0FBQSxJQUFBLGdCQUFBLEVBQUE7O0FBSUosQ0FBQTtBQUNFLFNBQUEsS0FBQSxJQUFBLGdCQUFBLEVBQUE7O0FBQ0EsQ0FGRiwrQkFFRSxDQUFBO0FBQ0UsV0FBQTtBQUNBLG1CQUFBO0FBQ0EsZUFBQTtBQUNBLFVBQUEsSUFBQTs7QUFHRSxDQVROLCtCQVNNLENBUEosd0NBT0ksSUFBQTtBQUNFLFdBQUEsTUFBQTtBQUNBLFVBQUEsRUFBQTs7QUFDQSxDQVpS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 */