{"version":3,"sources":["models/questionType.model.ts","common/constants.ts","common/helperFunctions.ts","models/survey.model.ts","models/SurveySubmission.model.ts","services/auth-header.tsx","services/auth.service.tsx","store/Survey.ts","models/group.model.ts","models/question.model.ts","store/CreateSurvey.ts","models/SearchState.model.tsx","store/index.ts","components/Layout.tsx","common/lang-trans.ts","components/survey/SurveyHeader.tsx","components/survey/SurveyStart.tsx","components/survey/SurveyLanguage.tsx","components/survey/SurveyEndnote.tsx","components/survey/SurveyQuestion.tsx","components/survey/SurveyQuestionnaire.tsx","pages/Campaign.tsx","components/header.tsx","pages/Search.tsx","models/searchSurvey.model.ts","pages/LinkGenerator.tsx","pages/Submissions.tsx","components/EditSurvey/TopNav.tsx","components/EditSurvey/Start.tsx","components/EditSurvey/Endnote.tsx","models/mcq-option.model.ts","components/EditSurvey/questionType/Mcq.tsx","components/EditSurvey/questionType/Matrix.tsx","components/EditSurvey/AddQuestion.tsx","components/EditSurvey/Preview.tsx","components/EditSurvey/Publish.tsx","components/EditSurvey/Summary.tsx","components/EditSurvey/Group.tsx","pages/AddEditSurvey.tsx","pages/GithubMarkdown.tsx","pages/Login.tsx","pages/ChangePassword.tsx","components/EditSurvey/loading.tsx","pages/AdminHOC.tsx","App.tsx","index.tsx","store/configureStore.ts","logo-en.svg","logo-fr.svg","logo.svg"],"names":["QuestionTypeModel","id","name","code","defaultRegex","SurveyEditSteps","EditObject","MoveDirection","BreakPointEnum","GetDateString","date","dateWithTime","Date","toString","undefined","month","getMonth","getFullYear","appendZeroWhenLessThanTen","getDate","getHours","getMinutes","getSeconds","num","sanatizeStringForCsv","text","result","replace","search","GetFileName","fileName","extension","todaysDate","DownloadCsv","csvData","linkCode","navigator","msSaveBlob","Blob","type","link","document","createElement","setAttribute","encodeURI","body","appendChild","click","removeChild","validateString","checkCondition","minLength","maxLength","trim","length","changeLangSurvey","survey","lang","resultSurvey","startsWith","endNotes","endNotesFr","title","titleFr","startNotes","startNotesFr","endNotesEn","titleEn","startNotesEn","questions","resultQuestions","map","x","question","questionFr","placeholder","placeholderFr","errorMessage","errorMessageFr","mcqOptions","o","option","optionFr","questionEn","placeholderEn","errorMessageEn","optionEn","changeLangQuestions","groups","resultGroup","groupHeading","groupHeadingFr","groupSubHeading","groupSubHeadingFr","groupHeadingEn","groupSubHeadingEn","changeLangGroups","isRadio","minMcqOption","maxMcqOption","isValidDate","d","isNaN","Number","getQuestionTypeByCode","arrQuestionType","find","e","parseJSON","jsonString","JSON","parse","SurveyModel","surveyId","statusId","newStatusId","startDate","endDate","submissions","SurveySubmissionModel","Answers","AnswerIdValueModel","constructor","key","value","mcqAnswers","matrixAnswers","questionId","answerId","answer","this","McqAnswerModel","mcqOptionId","answerEn","answerFr","mcqAnswerId","MatrixAnswerModel","matrixRowId","matrixColumnId","matrixAnswerId","authHeader","httpMethod","url","user","localStorage","getItem","accessToken","header","Headers","logout","removeItem","AuthService","login","emailAddress","password","axios","post","API_URL","then","response","data","setItem","stringify","verifyCode","token","getCurrentUser","userStr","today","firstName","lastName","expiry","forceChangePassword","changePassword","currentPassword","newPassword","fetch","ok","Error","MOVE_NEXT_STEP","actionCreators","MoveNextStep","step","dispatch","getState","appState","surveyStore","surveyCode","RequestSurvey","window","location","origin","json","catch","error","SubmitSurvey","isValid","rqst","a","requestOptions","method","headers","errorInSubmit","SetValidationStatus","validationStatus","SetValidationStatusAndValue","answerValue","SetLanguage","language","moveNext","unloadedState","isLoading","isSubmitted","GroupModel","groupId","QuestionModel","questionTypeId","isMandatory","maxCharacterLimit","maxMcqValues","minMcqValues","matrixRows","matrixColumns","FETCH_SURVEY_LIST","SET_SUBMIT_STATUS","createSurveyStore","SaveSurvey","surveyWithUpdatedStatus","produce","df","v","message","status","FetchCanLoadUIFlag","canLoadUIFlag","RequestSurveyList","searchText","pageSize","pageNumber","surveyList","isNew","isReload","i","p","questionType","surveyStatusList","typeList","SetPropertyCreateSurvey","objectType","propertyName","propertyValueString","propertyValueBoolean","propertyValueNumber","propertyValueDate","CopyQuestion","index","StartQuestionEdit","EndQuestionEdit","cancelEdit","MoveQuestion","oldIndex","newIndex","DeleteQuestion","QuestionChangeGroupAction","DeleteGroup","StartGroupEdit","EndGroupEdit","UpdateMcqOption","options","UpdateMatrixOption","SubmitMessage","tag","surveyCopy","isSurveyDirty","surveyStatusPublishedId","questionIndex","editQuestion","groupIndex","editGroup","searchState","totalRecords","reducers","state","incomingAction","action","stepLevel","q","findIndex","f","draftSate","answerList","isChecked","ansIndex","optionId","splice","isOtherTextBoxChanged","mcqOption","isOther","push","matrixAnswerList","rowId","columnId","matrixCol","matrixId","matrixRow","filter","textEn","textFr","tempState","draftState","Loading","Publish","Start","publishStatus","typ","Question","dr","arrayMove","grp","isDirty","props","Container","children","LangKey","OtherLang","OtherLangShort","AllAsteriskFields","AreMandatory","Notice","PersonalInfo","PersonalInfo2","TollFreeNum","LocalOr","TollFree","ReauiredField","PasteMsg","ErrMsgPhone","Continue","LoadingPleaseWait","UnableToLoading","PhoneExample","Submit","SelectLanguage","Questions","Complete","FillOutAllRequiredFields","ErrorSubmitting","transEn","transFr","getLangTranslation","SurveyHeader","React","render","langTrans","imgLogo","logo","logoen","logofr","className","src","alt","style","maxWidth","height","onClick","renderHeaderLine","role","width","aria-valuenow","aria-valuemin","aria-valuemax","connect","SurveyStore","SurveyStart","moveNextStep","SurveyLanguage","langTransEN","langTransFR","SurveyEndnote","endnote","renderText","txt","txtArray","split","getParagraph","SurveyQuestion","handleTextAreaChange","changeEvent","handleChange","handleMcqChange","changeMcqEvent","handleMcqSelectChange","handleMcqOtherChange","changeMcqOtherEvent","handleMatrixChange","changeMatrixEvent","headingExists","getInputControl","ctrlName","errorMsg","required","onChange","isvalue","pattern","mcqControl","matrixControl","rows","inputType","col","defaultValue","disabled","item","sortMCQ","colCss","ctrlId","htmlFor","breakpoint","innerWidth","xxl","xl","lg","md","sm","xs","getBreakpoint","colLen","Math","floor","c","idx","r","mcq","isTwoColumn","half","ceil","SurveyQuestionnaire","handleSubmit","validateAllFiels","target","ValidateInputValue","checked","rowAndColumnId","componentDidUpdate","otherAnswer","matrixAns","RegExp","test","getQuestionElements","items","isFirstGroup","group","Campaign","componentDidMount","ensureDataFetched","match","params","heading","renderStepComponent","Header","handleLogout","history","data-bs-toggle","aria-expanded","to","Search","Component","handleOnChange","SearchState","handleSearch","handleDelete","colSpan","renderSurveyRecords","aria-label","renderPagination","li","totalPages","startLink","endLink","aria-current","m","pathname","numOfLinks","totalSubmissions","createdOn","aria-labelledby","SurveyListModel","SurveyLinkModel","linkList","LinkGenerator","linksx","baseurl","numberOfLinks","isPublic","previousSurvey","newLinks","links","handleGenerateLink","setState","setDataInState","handleOnCheckChange","toLowerCase","linkArray","splitLinkArray","slice","downloadCsv","csv","forEach","lnkArr","renderSurveyInfo","renderSurveyLinkArray","renderSurveyLink","Fragment","l","Submissions","downloadCsvAll","downloadPdf","renderSubmissions","submissionId","submittedOn","renderQuestionAnswers","answers","getQuestion","questionText","getQuestionText","getAnswerHtml","getMcqUlListAnswer","getMatrixAnswer","getQuestionTextForAllCsv","submissionIdVal","blob","URL","createObjectURL","href","download","remove","questionList","s","ansCount","join","submissionDate","submissionTime","ans","getCsvAnswerForAllCsv","submission","getCsvAnswer","getMatrixAnswerArray","getMcqAnswerArray","getMatrixAnswerArrayForAllCsv","QandA","row","tempAns","other","TopNav","getLiItem","Group","Summary","Endnote","Preview","stepName","stepNum","completedNum","validationChecked","generalErrorMessage","Survey","ValidateAndMoveNext","CreateSurveyStore","McqOptionModel","sequence","MatrixRowColumnModel","Mcq","super","mcqEnglishInput","isOtherExists","mcqInsertIndex","editOption","mcqEnglishText","mcqFrenchText","handleSelectChangeNumber","handleMCQOptionTextChange","enTxt","frTxt","handleMCQOptionCheckboxChange","AddOrUpdateOptions","getMcqOptions","newOrModifiedOptions","generateMcqOptions","shift","concat","current","focus","StartMcqOptionEdit","DeleteMcqOption","ChangePositionMcqOption","direction","temArry","Down","Up","tmpOptn","enArr","frArr","tmp","lastOption","pop","ref","t","Matrix","rowTemp","columnTemp","matrixRowIndex","matrixRowArray","matrixColumnIndex","matrixColumnArray","rowEnglishText","rowFrenchText","columnEnglishText","columnFrenchText","handleMatrixRowTextChange","ix","handleMatrixColumnTextChange","onColumnSortEnd","ds","onRowSortEnd","mr","mc","RenderRatingScale","SortableList","lockAxis","fun","onSortEnd","SortableItem","SortableElement","arrayLength","SortableContainer","array","AddQuestion","handleChangeNumber","handleInputChange","handleSelectChange","CancelAndMoveNext","ValidateAndSave","renderPlaceHolder","min","max","isError","msg","SortableQuestionList","sanitizeGropId","questionTypes","handleGroupChange","gropId","SortableQuestionItem","cardBorder","qItms","btnDisabled","AddEditSurvey","UnableToLoad","GithubMarkdown","markdownText","Login","formLogin","formCode","username","loading","showCodeUi","validate","onChangeCode","onChangeUsername","onChangePassword","handleCancel","handleCodeVerification","preventDefault","validateAll","afterLogin","errorVerifyCode","handleLogin","errorLogin","createRef","onSubmit","Changepassword","useState","setCurrentPassword","setNewPassword","confirmPassword","setConfirmPassword","setMessage","success","setSuccess","setLoading","setIsError","reg","currentTarget","textEN","flag","textFR","AdminHOC","ExtendedComponent","Layout","exact","path","component","baseUrl","getElementsByTagName","getAttribute","store","initialState","middleware","thunk","routerMiddleware","rootReducer","combineReducers","router","connectRouter","enhancers","windowIfDefined","__REDUX_DEVTOOLS_EXTENSION__","createStore","compose","applyMiddleware","configureStore","createBrowserHistory","basename","ReactDOM","App","getElementById","module","exports"],"mappings":"yPAAO,MAAMA,EAAmB,cAAD,KAEpBC,GAAa,EAFO,KAGpBC,KAAe,GAHK,KAIpBC,KAAe,GAJK,KAKpBC,aAAuB,ICL3B,IAoBKC,EAYAC,EAOAC,EAKAC,EC9BL,SAASC,EAAcC,EAAYC,GAGtC,IAFAD,EAAO,IAAIE,KAAKF,EAAKG,cAEA,OAATH,QAA0BI,IAATJ,EAAoB,CAC7C,IAAIK,GAAUL,EAAKM,WAAW,EAC9B,OACIN,EAAKO,cAAgB,IACrBC,EAA0BH,GAAS,IACnCG,EAA0BR,EAAKS,YAC9BR,EAED,IACAO,EAA0BR,EAAKU,YAAc,IAC7CF,EAA0BR,EAAKW,cAAgB,IAC/CH,EAA0BR,EAAKY,cAE/B,IAIR,MAAO,GAGJ,SAASJ,EAA0BK,GACtC,OAAOA,EAAM,GAAK,IAAMA,EAAMA,EAG3B,SAASC,EAAqBC,GAEjC,IAAIC,EAASD,EAUb,OARe,OAAXC,QAA8BZ,IAAXY,IACnBA,EAAS,KAGbA,EAASA,EAAOC,QAAQ,KAAM,OACnBC,OAAO,cAAgB,IAC9BF,EAAS,IAAMA,EAAS,KAErBA,EAEJ,SAASG,EAAYC,EAAyBC,GACjD,IAAMrB,EAAO,IAAIE,KAEboB,EAAU,UAAMtB,EAAKO,cAAX,YAA4BP,EAAKM,WAAW,EAA5C,YAAiDN,EAAKS,WAEpE,MAAM,GAAN,OAAUa,EAAV,qBAAkCF,GAAY,WAA9C,YAA6DC,GAG1D,SAASE,EAAYC,EAAiBC,GACzC,IAAML,EAAWD,EAAYM,EAAU,OAEvC,GAAIC,UAAUC,WACVD,UAAUC,WAAW,IAAIC,KAAK,CAAC,SAAWJ,GAAU,CAAEK,KAAM,4BAA8BT,EAASH,QAAQ,KAAM,UAEhH,CAED,IAAIa,EAAOC,SAASC,cAAc,KAClCF,EAAKG,aAAa,OAAQ,qCAAuCC,UAAUV,IAC3EM,EAAKG,aAAa,WAAYb,EAASH,QAAQ,KAAM,MACrDc,SAASI,KAAKC,YAAYN,GAC1BA,EAAKO,QACLN,SAASI,KAAKG,YAAYR,IAI3B,SAASS,EAAeC,EAAyBzB,EAAc0B,EAAmBC,GACrF,OAAuB,IAAnBF,IAGS,OAATzB,QAA0BX,IAATW,IACjBA,EAAO,MAEPA,EAAK4B,OAAOC,OAASH,MAGrBC,GAAa,GAAK3B,EAAK4B,OAAOC,OAASF,IAMtC,SAASG,EAAiBC,EAAqBC,GAEpD,IAAMC,EAAyB,eAAOF,GAetC,OAbIC,EAAKE,WAAW,MAChBD,EAAaE,SAAWJ,EAAOK,WAC/BH,EAAaI,MAAQN,EAAOO,QAC5BL,EAAaM,WAAaR,EAAOS,eAEjCP,EAAaE,SAAWJ,EAAOU,WAC/BR,EAAaI,MAAQN,EAAOW,QAC5BT,EAAaM,WAAaR,EAAOY,cAGrCV,EAAaW,UAMV,SAA6BA,EAA4BZ,GAC5D,IAAIa,EACJA,EAAkB,IAAID,GAGlBC,EADAb,EAAKE,WAAW,KACEU,EAAUE,IAAIC,GAEjB,eAAIA,EAAX,CACIC,SAAUD,EAAEE,WACZC,YAAaH,EAAEI,cACfC,aAAcL,EAAEM,eAChBC,WAAYP,EAAEO,WAAWR,IAAIS,GAClB,eAAIA,EAAX,CACQC,OAAQD,EAAEE,eAMhBb,EAAUE,IAAIC,GAEjB,eAAIA,EAAX,CACIC,SAAUD,EAAEW,WACZR,YAAaH,EAAEY,cACfP,aAAcL,EAAEa,eAChBN,WAAYP,EAAEO,WAAWR,IAAIS,GAClB,eAAIA,EAAX,CACQC,OAAQD,EAAEM,eAOtC,OAAOhB,EAxCkBiB,CAAoB/B,EAAOa,UAAWZ,GAC/DC,EAAa8B,OA0CV,SAA0BnB,EAAyBZ,GACtD,IAAIgC,EACJA,EAAc,IAAIpB,GAGdoB,EADAhC,EAAKE,WAAW,KACFU,EAAUE,IAAIC,GAEb,eAAIA,EAAX,CACIkB,aAAclB,EAAEmB,eAChBC,gBAAiBpB,EAAEqB,qBAIjBxB,EAAUE,IAAIC,GAEb,eAAIA,EAAX,CACIkB,aAAclB,EAAEsB,eAChBF,gBAAiBpB,EAAEuB,qBAKnC,OAAON,EAhEeO,CAAiBxC,EAAOgC,OAAQ/B,GAE/CC,EAiEJ,SAASuC,EAAQC,EAAsBC,GAC1C,OAA0B,IAAjBA,IACc,IAAlBD,IAAyC,IAAlBC,EAGzB,SAASC,EAAYC,GAExB,OADAA,EAAI,IAAIzF,KAAKyF,cACOzF,OAAS0F,MAAMC,OAAOF,IAGvC,SAASG,EAAsBC,EAAsCtG,GAExE,IAAMuB,EAAS+E,EAAgBC,KAAKC,GAAKA,EAAExG,OAASA,GAEpD,OAAIuB,GAGG,IAAI1B,EAgBR,SAAS4G,EAAUC,GAEtB,IACI,OAAOC,KAAKC,MAAMF,GAAc,IAClC,UAGF,MAAO,I,SDtMCxG,O,gCAAAA,I,qBAAAA,I,iBAAAA,I,iBAAAA,I,uBAAAA,I,qBAAAA,I,qBAAAA,I,qBAAAA,I,sBAAAA,M,cAYAC,O,mBAAAA,I,uBAAAA,I,iBAAAA,I,8BAAAA,M,cAOAC,O,WAAAA,I,gBAAAA,M,cAKAC,O,WAAAA,I,WAAAA,I,WAAAA,I,WAAAA,I,WAAAA,I,cAAAA,M,KExCL,MAAMwG,EAAa,cAAD,KACdC,SAAmB,EADL,KAGd/G,KAAe,GAHD,KAKdiE,QAAkB,GALJ,KAMdJ,QAAkB,GANJ,KAOdD,MAAgB,GAPF,KASdM,aAAuB,GATT,KAUdH,aAAuB,GAVT,KAWdD,WAAqB,GAXP,KAadE,WAAqB,GAbP,KAcdL,WAAqB,GAdP,KAedD,SAAmB,GAfL,KAiBdsD,SAAmB,EAjBL,KAkBdC,YAAsB,EAlBR,KAoBdC,UAAkB,IAAIxG,KApBR,KAqBdyG,QAAgB,IAAIzG,KArBN,KAuBd4E,OAAuB,GAvBT,KAyBdnB,UAA6B,GAzBf,KA2BdiD,YAAiC,IC/BrC,MAAMC,EAAuB,cAAD,KACxBpH,KAAe,GADS,KAGxBqH,QAAgC,IAGpC,MAAMC,EASTC,YAAYC,EAAaC,EAAeC,EAA8BC,GAAqC,KARpGC,YAAsB,EAQ6E,KAPnGC,SAAmB,EAOgF,KALnGC,OAAiB,GAKkF,KAJnGJ,WAA+B,GAIoE,KAHnGC,cAAqC,GAIxCI,KAAKH,WAAaJ,EAClBO,KAAKD,OAASL,EACdM,KAAKL,WAAaA,EAClBK,KAAKJ,cAAgBA,GAItB,MAAMK,EAMTT,YAAYU,EAAqBC,EAAkBC,GAAmB,KAL/DF,aAAuB,EAKuC,KAJ9DG,aAAuB,EAIuC,KAH9DF,SAAmB,GAG2C,KAF9DC,SAAmB,GAGtBJ,KAAKE,YAAcA,EACnBF,KAAKG,SAAWA,EAChBH,KAAKI,SAAWA,GAIjB,MAAME,EAOTd,YAAYe,EAAqBC,EAAwBL,EAAkBC,GAAmB,KANvFK,gBAA0B,EAM4D,KALtFD,gBAA0B,EAK4D,KAJtFD,aAAuB,EAI+D,KAHtFJ,SAAmB,GAGmE,KAFtFC,SAAmB,GAGtBJ,KAAKO,YAAcA,EACnBP,KAAKQ,eAAiBA,EACtBR,KAAKG,SAAWA,EAChBH,KAAKI,SAAWA,GC5CT,SAASM,EAAWC,EAAmChG,EAAciG,GAChF,IAAMC,EAAOnC,EAAUoC,aAAaC,QJcd,gBIbtB,GAAIF,GAAQA,EAAKG,YAAa,CAE5B,IAAMC,EAAc,CAClB,OAAUN,EACV,QAAW,IAAIO,QAAQ,CACvB,OAAU,mBACV,eAAgB,mBAChB,cAAiB,UAAYL,EAAKG,eASpC,OANIrG,QAAiB/B,IAAT+B,IACVsG,EAAM,KAAWtG,GAEfiG,QAAehI,IAARgI,IACTK,EAAM,IAAUL,GAEXK,EAGP,MAAO,G,qBC0BPE,EAAS,KACbL,aAAaM,WLjCW,gBKiEXC,EAPK,CAClBC,MAvDY,CAACC,EAAsBC,IAC5BC,IACJC,KAAKC,kBAAoB,CACxBJ,eACAC,aAEDI,KAAMC,IACDA,EAASC,MACXhB,aAAaiB,QLZK,cKYenD,KAAKoD,UAAUH,EAASC,OAEpDD,EAASC,OA8CpBG,WAvEiB,CAACV,EAAsBtJ,EAAciK,IAC/CT,IACJC,KAAKC,sBAAwB,CAC5BJ,eACAtJ,OACAiK,UAEDN,KAAMC,IACDA,EAASC,MACXhB,aAAaiB,QLEK,cKFenD,KAAKoD,UAAUH,EAASC,OAEpDD,EAASC,OA6DpBX,SACAgB,eA1BqB,KACrB,IAAMC,EAAUtB,aAAaC,QLrCL,eKsClBsB,EAAQ,IAAI3J,KAClB,GAAgB,OAAZ0J,EACF,MAAO,CACLpB,YAAY,GACZkB,MAAM,GACNI,UAAU,GACVC,SAAS,GACTC,OAAQH,EACRI,oBAAqB,IAGzB,IAAM5B,EAAOnC,EAAU0D,GAMvB,OAJIvB,EAAK2B,QAAUH,GACjBlB,IAGKN,GAQP6B,eA7CqB,CAACC,EAAyBC,IACxCC,MAAMlB,0BAA4BjB,EAAW,OAAQ9B,KAAKoD,UAAU,CACrEW,kBACAC,gBACE,KACDhB,KAAKC,IACJ,IAAKA,EAASiB,GACZ,MAAM,IAAIC,MAAM,kBAElB,OAAOlB,KClBJmB,EAAiB,0BA0EbC,EAAiB,CAC9BC,aAAeC,GACf,CAACC,EAAUC,KACP,IAAMC,EAAWD,IACbC,GAAYA,EAASC,aAAeD,EAASC,YAAYC,YACzDJ,EAAS,CAAE/I,KAAM2I,EAAgBG,KAAMA,KAG/CM,cAAgBD,GAChB,CAACJ,EAAUC,KACP,IAAMC,EAAWD,IACjB,GAAIC,GAAYA,EAASC,aAAeC,IAAeF,EAASC,YAAYC,WAAY,CACpEE,OAAOC,SAASC,OAAhC,IAKKhD,EAAM,sBAHES,EAAYc,iBAIhBnB,cACLJ,EAAM,2BAEViC,MAAM,IAAD,OAAKjC,EAAL,YAAY4C,GAAc9C,EAAW,MAAO,GAAI,KAChDkB,KAAKC,GAAYA,EAASgC,QAC1BjC,KAAKE,IACFsB,EAAS,CAAE/I,KApGD,0BAoGuBmJ,WAAYA,EAAYlI,OAAQwG,MAEpEgC,MAAMC,IACHX,EAAS,CAAE/I,KAAM2I,EAAgBG,MAAO,MAGhDC,EAAS,CAAE/I,KA3GK,wBA2GemJ,WAAYA,EAAYlI,OAAQ,IAAIwD,QAG7C,KAAf0E,GACPJ,EAAS,CAAE/I,KAAM2I,EAAgBG,MAAO,KAGhDa,aAAeC,GACf,CAACb,EAAUC,KACP,IAAMC,EAAWD,IACjB,GAAIY,GAAWX,GAAYA,EAASC,aAAmD,OAApCD,EAASC,YAAYC,WAAqB,CACzF,IAAMU,EAAO,IAAI7E,EACjB6E,EAAKjM,KAAOqL,EAASC,YAAYC,WAEjCU,EAAK5E,QAAUgE,EAASC,YAAYjI,OAAOa,UAAUE,IAAI8H,GACrC,IAAI5E,EACI4E,EAAEtE,WAAYsE,EAAEzE,OACfyE,EAAExE,YAAc,IAAItD,IAAIC,GAAK,IAAK2D,EAAe3D,EAAE4D,YAAa5D,EAAE6D,SAAU7D,EAAE8D,YAC9E+D,EAAEvE,eAAiB,IAAIvD,IAAIC,GAAK,IAAKgE,EAAkBhE,EAAEiE,YAAajE,EAAEkE,eAAgBlE,EAAE6D,SAAU7D,EAAE8D,aAInI,IAAMgE,EAAiB,CACnBC,OAAQ,OACRC,QAAS,CAAE,eAAgB,oBAC3B3J,KAAMiE,KAAKoD,UAAUkC,IAGzBrB,MAAM,iBAAkBuB,GACnBxC,KAAKC,IACEA,EAASiB,GACTM,EAAS,CAAE/I,KAAM2I,EAAgBG,UAAMvK,IAEvCwK,EAAS,CAAE/I,KA1IN,yBA0I2BkK,eAAe,MAEtDT,MAAMC,IACHX,EAAS,CAAE/I,KA7IF,yBA6IuBkK,eAAe,MAK3DnB,EAAS,CAAE/I,KA9IgB,+BA8IWkK,eAAe,KAEzDC,oBAAqB,CAAE3E,EAAoB4E,IAC3C,CAACrB,EAAUC,KACP,IAAMC,EAAWD,IACbC,GAAYA,EAASC,aAAeD,EAASC,YAAYC,YACzDJ,EAAS,CAAE/I,KAtJc,iCAsJewF,aAAY4E,sBAG5DC,4BAA+BC,GAC/B,CAACvB,EAAUC,KACP,IAAMC,EAAWD,IACbC,GAAYA,EAASC,aAAeD,EAASC,YAAYC,YACzDJ,EAAS,CAAE/I,KA5JwB,2CA4JesK,YAAaA,KAGvEC,YAAa,CAACC,EAAkBC,IAChC,CAAC1B,EAAUC,KACP,IAAMC,EAAWD,IACbC,GAAYA,EAASC,aAAeD,EAASC,YAAYC,YACzDJ,EAAS,CAAE/I,KAjKK,wBAiKewK,SAAUA,EAAUC,SAAUA,MAKnEC,EAA2B,CAC7BC,WAAW,EACXC,aAAa,EACbV,eAAe,EACfM,SAAU,KACVrB,WAAY,GACZL,KAAM,EACN7H,OAAQ,IAAIwD,GC5MT,MAAMoG,EAAY,cAAD,KACbC,SAAmB,GADN,KAEb3H,aAAuB,GAFV,KAGbI,eAAyB,GAHZ,KAIbH,eAAyB,GAJZ,KAKbC,gBAA0B,GALb,KAMbG,kBAA4B,GANf,KAObF,kBAA4B,ICJhC,MAAMyH,EAAe,cAAD,KAChBvF,WAAqB,EADL,KAGhB5C,WAAqB,GAHL,KAIhBT,WAAqB,GAJL,KAKhBD,SAAmB,GALH,KAOhBW,cAAwB,GAPR,KAQhBR,cAAwB,GARR,KAShBD,YAAsB,GATN,KAWhBU,eAAyB,GAXT,KAYhBP,eAAyB,GAZT,KAahBD,aAAuB,GAbP,KAehBwI,QAAkB,EAfF,KAgBhBE,eAAyB,EAhBT,KAkBhBC,aAAuB,EAlBP,KAmBhBC,kBAA4B,GAnBZ,KAoBhBtN,KAAe,OApBC,KAqBhBC,aAAuB,GArBP,KAsBhB+L,SAAmB,EAtBH,KAuBhBvE,MAAgB,GAvBA,KAyBhB8F,cAAwB,EAzBR,KA0BhBC,cAAwB,EA1BR,KA4BhB5I,WAA+B,GA5Bf,KA6BhB8C,WAA+B,GA7Bf,KA+BhBC,cAAqC,GA/BrB,KAiChB8F,WAAqC,GAjCrB,KAkChBC,cAAwC,I,YCOtCC,EAAoB,oCA0BpBC,EAAoB,oCAqJpB5C,EAAiB,CAC1BC,aAAeC,GACf,CAACC,EAAUC,KACP,IAAMC,EAAWD,IACbC,GAAYA,EAASwC,mBAAqBxC,EAASwC,kBAAkB/G,UACrEqE,EAAS,CAAE/I,KA5JO,iCA4Je8I,KAAMA,KAG/C4C,WAAY,IACZ,CAAC3C,EAAUC,KACP,IAAMC,EAAWD,IACjB,GAAIC,GAAYA,EAASwC,mBAAqBxC,EAASwC,kBAAmB,CACtE,IAAME,EAA0BC,YAAQ3C,EAASwC,kBAAkBxK,OAAQ4K,IACvEA,EAAGlH,SAAWkH,EAAGjH,cAGrB4D,MAAM,mBAAoBnC,EAAW,OAAQ9B,KAAKoD,UAAUgE,GAA0B,KACjFpE,KAAKC,IACEA,EAASiB,GACIjB,EAASgC,OACjBjC,KAAKuE,GACN/C,EAAS,CAAE/I,KAAMwL,EAAmBO,QAAQ,uBAAyBC,QAAQ,EAAOtH,SAAUoH,KAGlG/C,EAAS,CAAE/I,KAAMwL,EAAmBO,QAAS,iBAAkBC,QAAQ,MAG9EvC,MAAMC,IACHX,EAAS,CAAE/I,KAAMwL,EAAmBO,QAAS,kBAAoBrC,GAAS,IAAKsC,QAAQ,QAIvGC,mBAAoB,IACpB,CAAClD,EAAUC,KACP,IAAMC,EAAWD,IACbC,GAAYA,EAASwC,oBAAmE,IAA9CxC,EAASwC,kBAAkBS,eACrE1D,MAAM,oBAAqBnC,EAAW,MAAO,GAAI,KAC5CkB,KAAKC,GAAYA,EAASgC,QAC1BjC,KAAKE,IACFsB,EAAS,CAAE/I,KA7LK,uCA6LuBkM,cAAe,MAEzDzC,MAAMC,IACHX,EAAS,CAAE/I,KAhMK,uCAgMuBkM,cAAe,IACtDlF,EAAYF,YAI5BqF,kBAAmB,CAACC,EAAoBC,EAAkBC,IAC1D,CAACvD,EAAUC,KACP,IAAMC,EAAWD,IACbC,GAAYA,EAASwC,oBACrBjD,MAAM,uBAAD,OAAwB6D,EAAxB,YAAoCC,EAApC,YAAkDF,GAAc/F,EAAW,MAAO,GAAI,KAC1FkB,KAAKC,GAAYA,EAASgC,QAE1BjC,KAAKE,IACFsB,EAAS,CAAE/I,KAAMuL,EAAmBa,aAAYG,WAAY9E,EAAMkD,UAAW,MAEhFlB,MAAMC,IACHX,EAAS,CAAE/I,KAAMuL,EAAmBa,aAAYG,WAAY,GAAI5B,UAAW,MAG/E5B,EAAS,CAAE/I,KAAMuL,EAAmBa,aAAYG,WAAY,GAAI5B,UAAW,MAGnFvB,cAAe,CAAC1E,EAAkB8H,EAAgBC,IAClD,CAAC1D,EAAUC,KACP,IAAMC,EAAWD,IACbC,GAAYA,EAASwC,oBACrBjD,MAAM,iBAAD,OAAkB9D,GAAY2B,EAAW,MAAO,GAAI,KACpDkB,KAAKC,GAAYA,EAASgC,QAC1BjC,KAAKE,IACF,GAAI+E,EAAO,CACP/E,EAAK/C,WAAa,EAClB+C,EAAK9C,UAAY,EAEjB,IAAI,IAAI+H,EAAE,EAAGA,EAAIjF,EAAKxE,OAAOlC,OAAQ2L,IACjCjF,EAAKxE,OAAOyJ,GAAG5B,UAAY,EAG/B,IAAI,IAAI4B,EAAE,EAAGA,EAAIjF,EAAK3F,UAAUf,OAAQ2L,IAAK,CACzCjF,EAAK3F,UAAU4K,GAAG5B,UAAY,EAC9BrD,EAAK3F,UAAU4K,GAAGlH,aAAe,EAEjC,IAAI,IAAImH,EAAE,EAAGA,EAAIlF,EAAK3F,UAAU4K,GAAGlK,WAAWzB,OAAQ4L,IAClDlF,EAAK3F,UAAU4K,GAAGlK,WAAWmK,GAAG9G,cAAgB,GAK5DkD,EAAS,CAAE/I,KArQD,iCAqQuBmJ,WAAYzE,EAAUzD,OAAQwG,EAAMgF,SAAUA,MAElFhD,MAAMC,IACHX,EAAS,CAAE/I,KAnPD,iCAmPuB8I,MAAO,MAGO,IAAnDG,EAASwC,kBAAkBmB,aAAa7L,QACxCyH,MAAM,yBAA0BnC,EAAW,MAAO,GAAI,KACrDkB,KAAKC,GAAYA,EAASgC,QAC1BjC,KAAKE,IACFsB,EAAS,CAAE/I,KA9QM,wCA8QuB4M,aAAcnF,MAIH,IAAvDwB,EAASwC,kBAAkBoB,iBAAiB9L,QAC5CyH,MAAM,6BAA8BnC,EAAW,MAAO,GAAI,KACzDkB,KAAKC,GAAYA,EAASgC,QAC1BjC,KAAKE,IACFsB,EAAS,CAAE/I,KArRW,6CAqRuB8M,SAAUrF,OAI9C,IAAbgF,GACA1D,EAAS,CAAE/I,KA7RC,+BA6RmBmJ,WAAYzE,EAAUzD,OAAQ,IAAIwD,MAG7EsI,wBAAyB,CAACC,EAAwBC,EAAsBC,EAA6BC,EAA+BC,EAA6BC,IACjK,CAACtE,EAAUC,KAEP,IAAMC,EAAWD,IACbC,GAAYA,EAASwC,mBACrB1C,EAAS,CAAE/I,KAjSK,+BAiSegN,aAAYC,eAAcC,sBAAqBC,uBAAsBC,sBAAqBC,uBAIjIC,aAAeC,GACf,CAACxE,EAAUC,KAEP,IAAMC,EAAWD,IACbC,GAAYA,EAASwC,mBACrB1C,EAAS,CAAE/I,KAzSM,gCAySeuN,MAAOA,KAI/CC,kBAAoBD,GACpB,CAACxE,EAAUC,KAEP,IAAMC,EAAWD,IACbC,GAAYA,EAASwC,mBACrB1C,EAAS,CAAE/I,KAjTY,sCAiTeuN,MAAOA,KAIrDE,gBAAkBC,GAClB,CAAC3E,EAAUC,KAEP,IAAMC,EAAWD,IACbC,GAAYA,EAASwC,mBACrB1C,EAAS,CAAE/I,KAzTU,oCAyTe0N,gBAI5CC,aAAc,CAACC,EAAkBC,IACjC,CAAC9E,EAAUC,KAEP,IAAMC,EAAWD,IACbC,GAAYA,EAASwC,mBACrB1C,EAAS,CAAE/I,KAjUM,gCAiUe4N,WAAUC,cAIlDC,eAAiBP,GACjB,CAACxE,EAAUC,KAEP,IAAMC,EAAWD,IACbC,GAAYA,EAASwC,mBACrB1C,EAAS,CAAE/I,KAzUQ,kCAyUeuN,MAAOA,KAIjDQ,0BAA2B,CAACR,EAAezC,IAC3C,CAAC/B,EAAUC,KAEP,IAAMC,EAAWD,IACbC,GAAYA,EAASwC,mBACrB1C,EAAS,CAAE/I,KA5Uc,wCA4UeuN,MAAOA,EAAOzC,QAASA,KAIvEkD,YAAcT,GACd,CAACxE,EAAUC,KAEP,IAAMC,EAAWD,IACbC,GAAYA,EAASwC,mBACrB1C,EAAS,CAAE/I,KApVK,+BAoVeuN,MAAOA,KAI9CU,eAAiBV,GACjB,CAACxE,EAAUC,KAEP,IAAMC,EAAWD,IACbC,GAAYA,EAASwC,mBACrB1C,EAAS,CAAE/I,KAlWS,mCAkWe8K,QAASyC,KAIpDW,aAAeR,GACf,CAAC3E,EAAUC,KAEP,IAAMC,EAAWD,IACbC,GAAYA,EAASwC,mBACrB1C,EAAS,CAAE/I,KA1WO,iCA0We0N,gBAKzCS,gBAAkBC,GAClB,CAACrF,EAAUC,KAEP,IAAMC,EAAWD,IACbC,GAAYA,EAASwC,mBACrB1C,EAAS,CAAE/I,KA9WU,oCA8WeoO,QAASA,KAKrDC,mBAAoB,CAAChD,EAAoCC,IACzD,CAACvC,EAAUC,KAEP,IAAMC,EAAWD,IACbC,GAAYA,EAASwC,mBACrB1C,EAAS,CAAE/I,KAtXa,uCAsXeqL,aAAYC,mBAK3Df,YAAa,CAACC,EAAkBC,IAChC,CAAC1B,EAAUC,KACP,IAAMC,EAAWD,IACbC,GAAYA,EAASwC,mBAAqBxC,EAASwC,kBAAkB/G,UACrEqE,EAAS,CAAE/I,KA1XK,+BA0XewK,SAAUA,EAAUC,SAAUA,MAKnEC,EAA2B,CAC7BwB,eAAgB,EAChBvB,WAAW,EACXC,aAAa,EACbV,eAAe,EACfoE,cAAe,GAEf5J,SAAU,GACVoE,KAAM,EACNyF,IAAK,EACL/D,SAAU,KACVvJ,OAAQ,IAAIwD,EACZ+J,WAAY,IAAI/J,EAChBgK,eAAe,EAEf7B,aAAc,GACdC,iBAAkB,GAClB6B,yBAA0B,EAE1BC,eAAgB,EAChBC,aAAc,IAAI7D,EAElB8D,YAAa,EACbC,UAAW,IAAIjE,EACfkE,YAAa,IC5dV,MAAmB,cAAD,KACdpE,WAAoB,EADN,KAEdyB,WAAqB,GAFP,KAGdnL,OAA4B,GAHd,KAIdoL,SAAmB,GAJL,KAKd2C,aAAuB,EALT,KAMd1C,WAAqB,KCAnB2C,EAAW,CACpB/F,YLsMuC,CAACgG,EAAmBxE,EAAeyE,KAC1E,QAAc5Q,IAAV2Q,EACA,OAAOxE,EAIX,GA7LwB,0BA6LpByE,EAAenP,KAAuB,CACtC,IAAMoP,EAASD,EACf,OAAO,eAAID,EAAX,CACIvE,WAAW,EACXxB,WAAYiG,EAAOjG,WACnBL,KAAM,EACN7H,OAAQ,IAAIwD,IAEb,GApMmB,4BAoMf0K,EAAenP,KAAyB,CAC/C,IAAMoP,EAASD,EACf,GAAIC,EAAOjG,aAAe+F,EAAM/F,WAC5B,OAAO,eAAI+F,EAAX,CACIvE,WAAW,EACXxB,WAAYiG,EAAOjG,WACnBL,KAAM,EACN7H,OAAQD,EAAiBoO,EAAOnO,OAAQiO,EAAM1E,gBAGnD,IA7MkB,2BA6Md2E,EAAenP,KAAwB,CAC9C,IAAMoP,EAASD,EAEf,OAAO,eAAMD,EAAb,CAAoBtE,aAAa,EAAMV,cAAekF,EAAOlF,gBAC1D,GAAIiF,EAAenP,OAAS2I,EAAgB,CAC/C,IAAMyG,EAASD,EACXE,EAAYH,EAAMpG,KAAO,EAK7B,YAHoBvK,IAAhB6Q,EAAOtG,OACPuG,EAAYD,EAAOtG,MAEhB,eACAoG,EADP,CAEIpG,KAAMuG,IAEP,GA1N0B,mCA0NtBF,EAAenP,KAAgC,CACtD,IAAMoP,EAASD,EAETG,EAAIJ,EAAMjO,OAAOa,UAAUyN,UAAWC,GAAIA,EAAEhK,aAAe4J,EAAO5J,YAExE,OAAW,IAAP8J,GAAYJ,EAAMjO,OAAOa,UAAUwN,GAAG1F,UAAYwF,EAAOhF,iBAClD8E,EAEItD,YAAQsD,EAAOO,IACtBP,EAAMtE,cACN6E,EAAUxO,OAAOa,UAAUwN,GAAG1F,QAAUwF,EAAOhF,oBAMpD,GAzOoC,6CAyOhC+E,EAAenP,KAA0C,CAChE,IAAMoP,EAASD,EAETG,EAAIJ,EAAMjO,OAAOa,UAAUyN,UAAWC,GAAIA,EAAEhK,aAAe4J,EAAO9E,YAAY9E,YAEpF,OAAW,IAAP8J,EACOJ,EAEUtD,YAAQsD,EAAOO,IAChC,GN1QoB,QM0QhBP,EAAMjO,OAAOa,UAAUwN,GAAG1R,KAAyC,EAC/DsR,EAAMtE,aAAewE,EAAO9E,YAAYM,eACxC6E,EAAUxO,OAAOa,UAAUwN,GAAG1F,QAAUwF,EAAO9E,YAAYV,SAG/D,IAAI8F,EAAa,IAAMR,EAAMjO,OAAOa,UAAUwN,GAAGhK,YAAc,IAE/D,IAAqC,IAAjC8J,EAAO9E,YAAYqF,UAAsB,CACzC,IAAMC,EAAWF,EAAWH,UAAUC,GAAKA,EAAE3J,cAAgBuJ,EAAO9E,YAAYuF,UAE5ED,GAAY,GACZH,EAAUxO,OAAOa,UAAUwN,GAAGhK,WAAWwK,OAAOF,EAAU,QAE1D,GAAIR,EAAO9E,YAAYyF,sBAAuB,CAElD,IAAMC,EAAYd,EAAMjO,OAAOa,UAAUwN,GAAG9M,WAAW2B,KAAKqL,IAAkB,IAAdA,EAAES,SAElE,GAAID,EAAW,CACX,IAAMJ,EAAWF,EAAWH,UAAUC,GAAKA,EAAE3J,cAAgBmK,EAAUnK,aAEnEqJ,EAAMjO,OAAOa,UAAUwN,GAAGnE,cAAgB,IAC1CsE,EAAUxO,OAAOa,UAAUwN,GAAGhK,WAAa,IAE3CsK,EAAW,EACXF,EAAWQ,KAAK,IAAItK,EAAeoK,EAAUnK,YAAamK,EAAUjN,SAAUiN,EAAUrN,YAExF+M,EAAWE,GAAU9J,SAAWsJ,EAAO9E,YAAYpL,KACnDwQ,EAAWE,GAAU7J,SAAWqJ,EAAO9E,YAAYpL,MAGvDuQ,EAAUxO,OAAOa,UAAUwN,GAAGhK,WAAaoK,OAE5C,CACH,IAAIM,EAAYd,EAAMjO,OAAOa,UAAUwN,GAAG9M,WAAW2B,KAAKqL,GAAIA,EAAE3J,cAAgBuJ,EAAO9E,YAAYuF,UAElFH,EAAWH,UAAUC,GAAKA,EAAE3J,cAAgBuJ,EAAO9E,YAAYuF,UAEjE,GAAKG,IAEZtM,EAAQwL,EAAMjO,OAAOa,UAAUwN,GAAGlE,aAAc8D,EAAMjO,OAAOa,UAAUwN,GAAGnE,gBAC1EuE,EAAa,IAEbM,EAAUC,QACVP,EAAWQ,KAAK,IAAItK,EAAeoK,EAAUnK,YAAa,GAAG,KAE7D6J,EAAWQ,KAAK,IAAItK,EAAeoK,EAAUnK,YAAamK,EAAUjN,SAAUiN,EAAUrN,WAE5F8M,EAAUxO,OAAOa,UAAUwN,GAAGhK,WAAaoK,IAGrD,GN3TqB,WM2TjBR,EAAMjO,OAAOa,UAAUwN,GAAG1R,KAA4C,EACpEsR,EAAMtE,aAAewE,EAAO9E,YAAYM,eACxC6E,EAAUxO,OAAOa,UAAUwN,GAAG1F,QAAUwF,EAAO9E,YAAYV,SAK/E,IAAIuG,EAAmB,IAAMjB,EAAMjO,OAAOa,UAAUwN,GAAG/J,eAAiB,IAExE,IAAqC,IAAjC6J,EAAO9E,YAAYqF,UAAsB,CACzC,IAAMC,EAAWO,EAAiBZ,UAAUC,GAAKA,EAAEtJ,cAAgBkJ,EAAO9E,YAAY8F,OAASZ,EAAErJ,iBAAmBiJ,EAAO9E,YAAY+F,UAEnIT,GAAY,GACZH,EAAUxO,OAAOa,UAAUwN,GAAG/J,cAAcuK,OAAOF,EAAU,OAE9D,CACH,IAAIU,EAAYpB,EAAMjO,OAAOa,UAAUwN,GAAGhE,cAAcnH,KAAKqL,GAAIA,EAAEe,WAAanB,EAAO9E,YAAY+F,UAC/FG,EAAYtB,EAAMjO,OAAOa,UAAUwN,GAAGjE,WAAWlH,KAAKqL,GAAIA,EAAEe,WAAanB,EAAO9E,YAAY8F,OAE5FE,GAAaE,KAEbL,EAAmBA,EAAiBM,OAAOjB,GAAKA,EAAEtJ,cAAgBkJ,EAAO9E,YAAY8F,QAEpEF,KAAK,IAAIjK,EAAkBuK,EAAUD,SAAUD,EAAUC,SACtEC,EAAUE,ON/U0B,OM+UkBJ,EAAUI,OAChEF,EAAUG,ONhV0B,OMgVkBL,EAAUK,SAEpElB,EAAUxO,OAAOa,UAAUwN,GAAG/J,cAAgB4K,SAMlCjB,EAAMtE,aAAewE,EAAO9E,YAAYM,eACxC6E,EAAUxO,OAAOa,UAAUwN,GAAG1F,QAAUwF,EAAO9E,YAAYV,SAG/D6F,EAAUxO,OAAOa,UAAUwN,GAAGjK,MAAQ+J,EAAO9E,YAAYpL,OAM9D,GA9UwB,iCA8UpBiQ,EAAenP,KAGtB,OAAO,eAAMkP,EAAb,CAAoBtE,aAAa,IAE9B,GAlViB,0BAkVbuE,EAAenP,KAAuB,CAC7C,IAAMoP,EAASD,EAETrG,EAAOsG,EAAO3E,SAAWyE,EAAMpG,KAAO,EAAGoG,EAAMpG,KACrD,sBACOoG,EADP,CAEI1E,SAAU4E,EAAO5E,SACjB1B,KAAMA,EACN7H,OAAQD,EAAiBkO,EAAMjO,OAAQmO,EAAO5E,aAItD,OAAO0E,GKnXPzD,kBFuduC,CAACyD,EAAmBxE,EAAeyE,KAE1E,QAAc5Q,IAAV2Q,EACA,OAAOxE,EAGX,IAAMkG,EAAYhF,YAAQsD,EAAO2B,IAC7B,GA1boB,iCA0bhB1B,EAAenP,KAAuB,CACtC,IAAMoP,EAASD,EAGf0B,EAAWjG,aAAc,EACzBiG,EAAW3G,eAAgB,EAC3B2G,EAAWvC,cAAgB,GAE3BuC,EAAWtC,IAAM,EACjBsC,EAAWrG,SAAW,KACtBqG,EAAW5P,OAAS,IAAIwD,EACxBoM,EAAWrC,WAAa,IAAI/J,EAE5BoM,EAAWlC,eAAiB,EAC5BkC,EAAWjC,aAAe,IAAI7D,EAE9B8F,EAAWhC,YAAc,EACzBgC,EAAW/B,UAAY,IAAIjE,EAE3BgG,EAAWlG,WAAY,EACvBkG,EAAWnM,SAAW0K,EAAOjG,WAC7B0H,EAAW/H,KAAOhL,EAAgBgT,aAE/B,GAAI3B,EAAenP,OAASuL,EAAmB,CAClD,IAAM6D,EAASD,EAES,GAApBC,EAAOzE,YACHyE,EAAO7C,YAAc6C,EAAO7C,WAAWxL,OAAS,EAChD8P,EAAW9B,YAAYC,aAAeI,EAAO7C,WAAW,GAAGyC,aAE3D6B,EAAW9B,YAAYC,aAAe,EAG1C6B,EAAW9B,YAAY9N,OAASmO,EAAO7C,YAE3CsE,EAAW9B,YAAYpE,UAAYyE,EAAOzE,UAC1CkG,EAAWtC,KAAO,OAEf,GA/de,mCA+dXY,EAAenP,KAAyB,CAC/C,IAAMoP,EAASD,EAEXC,EAAOjG,aAAe0H,EAAWnM,WAE7BmM,EAAWlG,WAAY,EACvBkG,EAAWjG,aAAc,EACzBiG,EAAW3G,eAAgB,EAC3B2G,EAAWvC,cAAgB,GAE3BuC,EAAWnM,SAAW0K,EAAOjG,WAC7B0H,EAAW5P,OAASD,EAAiBoO,EAAOnO,OAAQ4P,EAAWrG,UAC/DqG,EAAW5P,OAAO2D,YAAciM,EAAW5P,OAAO0D,SAClDkM,EAAWrC,WAAaxN,EAAiBoO,EAAOnO,OAAQ4P,EAAWrG,UACnEqG,EAAWrC,WAAW5J,YAAciM,EAAW5P,OAAO0D,SAElDyK,EAAO3C,SACPoE,EAAW/H,KAAOhL,EAAgBiT,QAElCF,EAAW/H,KAAOhL,EAAgBkT,YAG3C,GAnf2B,+CAmfvB7B,EAAenP,KAAqC,CAC3D,IAAMoP,EAASD,EAEf0B,EAAWhE,iBAAmBuC,EAAOtC,SACrC,IAAMmE,EAAgB7B,EAAOtC,SAAS3I,KAAMC,GTxhBlB,cSwhBuBA,EAAExG,MAE/CqT,IACAJ,EAAWnC,wBAA0BuC,EAAcvT,SAIpD,GA/fsB,0CA+flByR,EAAenP,KAAgC,CACtD,IAAMoP,EAASD,EAEf0B,EAAWjE,aAAewC,EAAOxC,kBAE9B,GAlgBa,iCAkgBTuC,EAAenP,KAAuB,CAC7C,IAAMoP,EAASD,EAIf,OAFA0B,EAAWtC,KAAO,EAEVa,EAAOnC,cACX,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,eACL,IAAK,eACL,IAAK,aACL,IAAK,aACD4D,EAAW5P,OAAOmO,EAAOnC,cAAgBmC,EAAOlC,oBAChD,MAEJ,IAAK,YACL,IAAK,UACD2D,EAAW5P,OAAOmO,EAAOnC,cAAgBmC,EAAO/B,kBAChD,MAEJ,IAAK,cACDwD,EAAW5P,OAAOmO,EAAOnC,cAAgBmC,EAAOhC,oBAChD,MAEJ,IAAK,aACL,IAAK,aACL,IAAK,gBACL,IAAK,gBACL,IAAK,iBACL,IAAK,iBACDyD,EAAWjC,aAAaQ,EAAOnC,cAAgBmC,EAAOlC,oBACtD,MAEJ,IAAK,cACD2D,EAAWjC,aAAaQ,EAAOnC,cAAgBmC,EAAOjC,qBACtD,MAEJ,IAAK,oBACL,IAAK,eACL,IAAK,eACD0D,EAAWjC,aAAaQ,EAAOnC,cAAgBmC,EAAOhC,oBACtD,MAEJ,IAAK,UACDyD,EAAWjC,aAAaQ,EAAOnC,cAAgBmC,EAAOjC,qBACtD,MAEJ,IAAK,iBACD0D,EAAWjC,aAAaQ,EAAOnC,cAAgBmC,EAAOhC,oBACtD,IAAM8D,EAAMhC,EAAMtC,aAAazI,KAAKqL,GAAKA,EAAE9R,KAAO0R,EAAOhC,qBAE9C,MAAP8D,IACAL,EAAWjC,aAAahR,KAAOsT,EAAItT,KACnCiT,EAAWjC,aAAa/Q,aAAeqT,EAAIrT,cAG/C,MAEJ,IAAK,iBACL,IAAK,iBACL,IAAK,oBACL,IAAK,oBACDgT,EAAW/B,UAAUM,EAAOnC,cAAgBmC,EAAOlC,oBACnD,MAEJ,IAAK,aACD2D,EAAW9B,YAAYK,EAAOnC,cAAgBmC,EAAOlC,oBACrD,MAEJ,IAAK,aACL,IAAK,eACL,IAAK,WACD2D,EAAW9B,YAAYK,EAAOnC,cAAgBmC,EAAOhC,0BAI1D,GA7jBe,mCA6jBX+B,EAAenP,KAAyB,CAC/C,IAAMoP,EAASD,EACXE,EAAYwB,EAAW/H,KAAO,OAEdvK,IAAhB6Q,EAAOtG,OACPuG,EAAYD,EAAOtG,MAEvB+H,EAAW/H,KAAOuG,OAEf,GAvlBc,kCAulBVF,EAAenP,KAAwB,CAC9C,IAAMoP,EAASD,EAETR,EAAgBS,EAAO7B,MAC7BsD,EAAW/H,KAAOhL,EAAgBqT,UAGZ,IAAlB/B,EAAO7B,MACPsD,EAAWjC,aAAehD,YAAQsD,EAAMjO,OAAOa,UAAU6M,GAAgByC,IAErEA,EAAG5L,WAAa,EAEhB,IAAI,IAAImH,EAAE,EAAGA,EAAIyE,EAAG5O,WAAWzB,OAAQ4L,IACnCyE,EAAG5O,WAAWmK,GAAG9G,aAAe,IAIxCgL,EAAWjC,aAAe,IAAI7D,OAG/B,GA1mBoB,wCA0mBhBoE,EAAenP,KAA8B,CACpD,IAAMoP,EAASD,EAETR,EAAgBS,EAAO7B,MAC7BsD,EAAW/H,KAAOhL,EAAgBqT,SAClCN,EAAWlC,cAAgBA,GAEL,IAAlBS,EAAO7B,MACPsD,EAAWjC,aAAeM,EAAMjO,OAAOa,UAAU6M,GAEjDkC,EAAWjC,aAAe,IAAI7D,OAE/B,GArnBkB,sCAqnBdoE,EAAenP,KAA4B,EAGxB,IAFXmP,EAEJzB,aACHwB,EAAMP,eAAiB,EACvBkC,EAAW5P,OAAOa,UAAUoN,EAAMP,eAAiBO,EAAMN,aAEzDiC,EAAW5P,OAAOa,UAAUoO,KAAKhB,EAAMN,eAI/CiC,EAAWjC,aAAe,IAAI7D,EAC9B8F,EAAWlC,eAAiB,OAEzB,GAjoBgB,oCAioBZQ,EAAenP,KAA0B,CAChD,IAAMoP,EAASD,EAEXC,EAAO7B,OAAS,GAAK6B,EAAO7B,MAAQ2B,EAAMjO,OAAOa,UAAUf,QAE3D8P,EAAW5P,OAAOa,UAAUgO,OAAOV,EAAO7B,MAAO,GAIrDsD,EAAWjC,aAAe,IAAI7D,EAC9B8F,EAAWlC,eAAiB,OAEzB,GA9oBc,kCA8oBVQ,EAAenP,KAAwB,CAC9C,IAAMoP,EAASD,EAEf0B,EAAW5P,OAAOa,UAAYuP,YAAUR,EAAW5P,OAAOa,UAAWsN,EAAOxB,SAAUwB,EAAOvB,eAE1F,GAhpBiB,qCAgpBbsB,EAAenP,KAA2B,CACjD,IAAMoP,EAASD,EAETN,EAAaK,EAAMjO,OAAOgC,OAAOsM,UAAUC,GAAKA,EAAE1E,UAAYsE,EAAOtE,SAG3E+F,EAAWhC,WAAaA,EAGpBgC,EAAW/B,UADXD,GAAc,EACSK,EAAMjO,OAAOgC,OAAO4L,GAEpB,IAAIhE,OAG5B,GA7pBe,mCA6pBXsE,EAAenP,KAAyB,EAGrB,IAFXmP,EAEJzB,aACHwB,EAAML,YAAc,EACpBgC,EAAW5P,OAAOgC,OAAOiM,EAAML,YAAcK,EAAMJ,UAC/C,WAGJ,IAFA,IAAIhE,GAA8C,GAAnCoE,EAAMjO,OAAOgC,OAAOlC,OAAS,GAEtCmO,EAAMjO,OAAOgC,OAAOsM,UAAUC,GAAKA,EAAE1E,UAAYA,IAAY,GAC/DA,IAGJ+F,EAAW5P,OAAOgC,OAAOiN,KAAKhB,EAAMJ,WAEpC+B,EAAW5P,OAAOgC,OAAOiM,EAAMjO,OAAOgC,OAAOlC,QAAQ+J,QAAUA,EAT3D,IAaZ+F,EAAW/B,UAAY,IAAIjE,EAC3BgG,EAAWhC,YAAc,OACtB,GA9qBa,iCA8qBTM,EAAenP,KAAuB,CAC7C,IAAMoP,EAASD,EAEf,GAAIC,EAAO7B,OAAS,GAAK6B,EAAO7B,MAAQ2B,EAAMjO,OAAOgC,OAAOlC,OAAQ,CAIhE,IAFA,IAAMuQ,EAAMpC,EAAMjO,OAAOgC,OAAOmM,EAAO7B,OAE/BtL,EAAI,EAAGA,EAAIiN,EAAMjO,OAAOa,UAAUf,OAAQkB,IAE1CiN,EAAMjO,OAAOa,UAAUG,GAAG6I,UAAYwG,EAAIxG,UAC1C+F,EAAW5P,OAAOa,UAAUG,GAAG6I,SAAW,KAIlD+F,EAAW5P,OAAOgC,OAAO6M,OAAOV,EAAO7B,MAAO,GAGlDsD,EAAW/B,UAAY,IAAIjE,EAC3BgG,EAAWlC,eAAiB,OAEzB,GAnsBsB,0CAmsBlBQ,EAAenP,KAAgC,CACtD,IAAMoP,EAASD,EAEf,GAAIC,EAAO7B,OAAS,GAAK6B,EAAO7B,MAAQ2B,EAAMjO,OAAOa,UAAUf,OAAQ,CAEnE,IAAMuQ,EAAMpC,EAAMjO,OAAOgC,OAAOkB,KAAKqL,GAAKA,EAAE1E,UAAYsE,EAAOtE,SAG3D+F,EAAW5P,OAAOa,UAAUsN,EAAO7B,OAAOzC,QAAUwG,EAAMA,EAAIxG,QAAU,QAG7E,GA3sBkB,sCA2sBdqE,EAAenP,KAA4B,CAClD,IAAMoP,EAASD,EAEf0B,EAAWjC,aAAapM,WAAa4M,EAAOhB,aAEzC,GA9sBqB,yCA8sBjBe,EAAenP,KAA+B,CACrD,IAAMoP,EAASD,EAEf0B,EAAWjC,aAAatD,cAAgB8D,EAAO9D,cAC/CuF,EAAWjC,aAAavD,WAAa+D,EAAO/D,gBAEzC,GAjtBqB,yCAitBjB8D,EAAenP,KAA+B,CACrD,IAAMoP,EAASD,EAEf0B,EAAW3E,cAAgBkD,EAAOlD,mBAE/B,GAAIiD,EAAenP,OAASwL,EAAmB,CAClD,IAAM4D,EAASD,EAEf0B,EAAWvC,cAAgBc,EAAOrD,QAClC8E,EAAW3G,cAAgBkF,EAAOpD,OAClC6E,EAAWjG,aAAc,GAEH,IAAlBwE,EAAOpD,SACP6E,EAAWnM,SAAW,GAAG0K,EAAO1K,SAChCmM,EAAW5P,OAAOyD,SAAW0K,EAAO1K,eAGrC,GAhuBa,iCAguBTyK,EAAenP,KAAuB,CAC7C,IAAMoP,EAASD,EAETrG,EAAOsG,EAAO3E,SAAWoG,EAAW/H,KAAO,EAAG+H,EAAW/H,KAE/D+H,EAAWrG,SAAW4E,EAAO5E,SAC7BqG,EAAW/H,KAAOA,EAClB+H,EAAW5P,OAASD,EAAiB6P,EAAW5P,OAAQmO,EAAO5E,UAC/DqG,EAAWrC,WAAaxN,EAAiB6P,EAAWrC,WAAYY,EAAO5E,aAIzE+G,EAAUhN,KAAKoD,UAAUiJ,EAAU3P,UAAYsD,KAAKoD,UAAUiJ,EAAUpC,YAE9E,OAAO5C,YAAQgF,EAAWC,IACtBA,EAAWpC,cAAgB8C,M,oBGnzBnBC,MACZ,gBAAC,WAAD,KACI,gBAACC,EAAA,EAAD,KACKD,EAAME,WCNZ,MAAMC,GAAS,cAAD,KACVC,UAAoB,GADV,KAEVC,eAAyB,GAFf,KAGVC,kBAA4B,GAHlB,KAIVC,aAAuB,GAJb,KAKVC,OAAiB,GALP,KAMVC,aAAuB,GANb,KAOVC,cAAwB,GAPd,KAQVC,YAAsB,GARZ,KASVC,QAAkB,GATR,KAUVC,SAAmB,GAVT,KAWVC,cAAwB,GAXd,KAYVC,SAAmB,GAZT,KAaVC,YAAsB,GAbZ,KAcVC,SAAmB,GAdT,KAeVC,kBAA4B,GAflB,KAgBVC,gBAA0B,GAhBhB,KAiBVC,aAAuB,GAjBb,KAkBVC,OAAiB,GAlBP,KAmBVC,eAAyB,GAnBf,KAoBV9B,MAAgB,GApBN,KAqBV+B,UAAoB,GArBV,KAsBVC,SAAmB,GAtBT,KAuBVC,yBAAmC,GAvBzB,KAwBVC,gBAA0B,IAG9B,IAAMC,GAAmB,IAAIxB,GACpCwB,GAAQvB,UAAY,cACpBuB,GAAQtB,eAAiB,KACzBsB,GAAQrB,kBAAoB,8DAC5BqB,GAAQpB,aAAe,gCACvBoB,GAAQnC,MAAQ,QAChBmC,GAAQJ,UAAY,YACpBI,GAAQH,SAAW,WAEnBG,GAAQL,eAAgB,oCACxBK,GAAQnB,OAAS,SACjBmB,GAAQlB,aAAe,6kBACvBkB,GAAQhB,YAAc,iBACtBgB,GAAQf,QAAU,aAClBe,GAAQd,SAAW,cACnBc,GAAQjB,cAAgB,wBACxBiB,GAAQb,cAAgB,iBACxBa,GAAQZ,SAAW,mFACnBY,GAAQX,YAAc,8DACtBW,GAAQV,SAAW,WACnBU,GAAQT,kBAAoB,uBAC5BS,GAAQR,gBAAkB,wGAC1BQ,GAAQP,aAAe,wBACvBO,GAAQN,OAAS,SACjBM,GAAQF,yBAA2B,4CACnCE,GAAQD,gBAAkB,uJAEnB,IAAME,GAAmB,IAAIzB,GA2BrB,SAAS0B,GAAmBnS,GAEvC,OAAIA,EAAKE,WAAW,KACTgS,GAEJD,GA/BXC,GAAQxB,UAAY,UACpBwB,GAAQvB,eAAiB,KACzBuB,GAAQtB,kBAAoB,uCAC5BsB,GAAQrB,aAAe,oBACvBqB,GAAQpC,MAAQ,YAChBoC,GAAQL,UAAY,YACpBK,GAAQJ,SAAW,cAEnBI,GAAQN,eAAgB,oDACxBM,GAAQpB,OAAS,OACjBoB,GAAQnB,aAAe,gzBACvBmB,GAAQjB,YAAc,iBACtBiB,GAAQhB,QAAU,eAClBgB,GAAQf,SAAW,gBACnBe,GAAQlB,cAAgB,IACxBkB,GAAQd,cAAgB,oBACxBc,GAAQb,SAAW,oFACnBa,GAAQZ,YAAc,2GACtBY,GAAQX,SAAW,YACnBW,GAAQV,kBAAoB,0CAC5BU,GAAQT,gBAAkB,uKAC1BS,GAAQR,aAAe,0BACvBQ,GAAQP,OAAS,oBACjBO,GAAQH,yBAA2B,qDACnCG,GAAQF,gBAAkB,8M,gEChE1B,MAAMI,WAAqBC,gBAEhBC,SACH,IAAMhJ,EAAW7E,KAAK6L,MAAMhH,UAAY,KAClCiJ,EAAYJ,GAAmB7I,GAC/BkJ,EAAW/N,KAAK6L,MAAM1I,KAAO,EAAI6K,KAAqB,OAAbnJ,EAAoBoJ,KAASC,KAC5E,OACI,gBAAC,WAAD,KACI,uBAAKC,UAAU,OACX,uBAAKA,UAAU,YACX,uBAAKC,IAAKL,EAASM,IAAI,OAAOF,UAAU,sBAAsBG,MAAO,CAACC,SAAU,MAAOC,OAAQ,WAEnG,uBAAKL,UAAU,YACX,uBAAKA,UAAS,UAAKnO,KAAK6L,MAAM1I,KAAO,EAAI,SAAW,4BAChD,0BAAQgL,UAAU,0BAA0BM,QAAS,IAAMzO,KAAK6L,MAAMjH,YAAYkJ,EAAU5B,gBAAgB,IAAS4B,EAAU7B,cAIzIjM,KAAK0O,iBAAiBZ,IAK5BY,iBAAiBZ,GAErB,OAAI9N,KAAK6L,MAAM1I,KAAO,EAElB,uBAAKgL,UAAU,OACX,uBAAKA,UAAU,OACX,uBAAKA,UAAU,WAAWG,MAAO,CAACE,OAAQ,QACtC,uBAAKL,UAAU,0BAA0BQ,KAAK,cAAcL,MAAO,CAACM,MAAO,MAAOC,gBAAe,EAAGC,gBAAe,EAAGC,gBAAe,OAEzI,uBAAKZ,UAAU,WAAWG,MAAO,CAACE,OAAQ,QACtC,uBAAKL,UAAU,0BAA0BQ,KAAK,cAAcL,MAAO,CAACM,MAAO,QAASC,gBAAe,IAAKC,gBAAe,EAAGC,gBAAe,SAOrJ,gCACA,uBAAKZ,UAAU,yBACX,uBAAKA,UAAU,OACX,uBAAKA,UAAU,YACX,uBAAKA,UAAU,eAAeQ,KAAK,gBACnC,uBAAKR,UAAU,0BAA0BQ,KAAK,cAAcL,MAAO,CAAEM,OAAS5O,KAAK6L,MAAM1I,KAAO,GAAK,EAAI,IAAO,UAK5H,uBAAKgL,UAAU,OACX,uBAAKA,UAAU,yBACX,sBAAIA,UAAU,mCAAmCpW,GAAG,iBAChD,sBAAIoW,UAAS,8BAAyBnO,KAAK6L,MAAM1I,KAAO,EAAI,oBAAsB,GAArE,YAA+F,IAApBnD,KAAK6L,MAAM1I,KAAa,SAAW,KACvH,yBACI,wBAAMvH,MAAM,2BAA2BkS,EAAUzC,SAGzD,sBAAI8C,UAAS,8BAAyBnO,KAAK6L,MAAM1I,KAAO,EAAI,oBAAsB,GAArE,YAA+F,IAApBnD,KAAK6L,MAAM1I,KAAa,SAAW,KACvH,yBACI,wBAAMvH,MAAM,2BAA2BkS,EAAUV,aAGzD,sBAAIe,UAAS,8BAAyBnO,KAAK6L,MAAM1I,KAAO,EAAI,oBAAsB,GAArE,YAA+F,IAApBnD,KAAK6L,MAAM1I,KAAa,SAAW,KACvH,yBACI,wBAAMvH,MAAM,2BAA2BkS,EAAUT,iBAUlE2B,mBACVzF,GAA4BA,EAAMhG,YACnC0L,EAFWD,CAGbrB,I,UClFF,MAAMuB,WAAoBtB,gBAEfC,SACH,IAAM/R,EAAakE,KAAK6L,MAAMvQ,OAAOQ,YAAc,GAE7CgS,EAAYJ,GADD1N,KAAK6L,MAAMhH,UAAY,MAExC,OACI,gBAAC,WAAD,KACI,uBAAKsJ,UAAU,OACX,uBAAKA,UAAU,aACX,gBAAC,KAAD,CAAepC,SAAUjQ,KAE7B,uBAAKqS,UAAU,aACX,0BAAQA,UAAU,kBACdM,QAAS,IAAMzO,KAAK6L,MAAMsD,kBAAavW,IAAakV,EAAUhB,cAS3EoC,UCtBf,MAAME,WAAuBxB,gBAClBC,SAGH,IAAMwB,EAAc3B,GAAmB,MACjC4B,EAAc5B,GAAmB,MAEvC,OACI,gBAAC,WAAD,KACI,uBAAKS,UAAU,WACX,uBAAKA,UAAU,aACX,yBAAOA,UAAU,WAAYkB,EAAYlC,eAAzC,MAA8DmC,EAAYnC,eAA1E,MAEJ,uBAAKgB,UAAU,aACX,0BAAQA,UAAU,kBAAkBM,QAAU,IAAMzO,KAAK6L,MAAMjH,YAAY,MAAM,IAAU0K,EAAYrD,WACvG,0BAAQkC,UAAU,kBAAkBM,QAAU,IAAMzO,KAAK6L,MAAMjH,YAAY,MAAM,IAAUyK,EAAYpD,eAQhH+C,mBACVzF,GAA4BA,EAAMhG,YACnC0L,EAFWD,CAGbI,IC9BF,MAAMG,WAAsB3B,YACjBC,SACH,IAAM2B,EAAUxP,KAAK6L,MAAMvQ,OAAOI,UAAY,GAE9C,OACI,gBAAC,WAAD,KACI,uBAAKyS,UAAU,OACX,uBAAKA,UAAU,aACX,gBAAC,KAAD,CAAepC,SAAUyD,OAOrCC,WAAWC,GACf,IAAMC,EAAWD,EAAIE,MAAM,MAE3B,OACI,gCACCD,EAAStT,IAAI,CAACqT,EAAa9H,IAAkB5H,KAAK6P,aAAaH,EAAK9H,KAKrEiI,aAAaH,EAAa9H,GAC9B,OACI,qBAAGnI,IAAKmI,GAAQ8H,IAKbH,UCvBf,MAAMO,WAAuBlC,gBAA6B,eAAD,oBA+OrDmC,qBAAwBtR,IACpBuB,KAAK6L,MAAMmE,YAAYvR,IAhP0B,KAmPrDwR,aAAgBxR,IACZuB,KAAK6L,MAAMmE,YAAYvR,IApP0B,KAuPrDyR,gBAAmBzR,IACfuB,KAAK6L,MAAMsE,eAAe1R,IAxPuB,KA2PrD2R,sBAAyB3R,IACrBuB,KAAK6L,MAAMsE,eAAe1R,IA5PuB,KA+PrD4R,qBAAwB5R,IACpBuB,KAAK6L,MAAMyE,oBAAoB7R,IAhQkB,KAoQrD8R,mBAAsB9R,IAClBuB,KAAK6L,MAAM2E,kBAAkB/R,IApQ1BoP,SACH,IAAM4C,EAAiBzQ,KAAK6L,MAAMtP,SAAS4I,QAAU,EAG/C2I,EAAYJ,GADD1N,KAAK6L,MAAMhH,UAAY,MAGxC,OACI,gBAAC,WAAD,KACI,uBAAKsJ,UAAS,yBAAoBsC,EAAgB,OAAS,KACvD,yBAAOtC,UAAU,iCAAiCnO,KAAK6L,MAAMtP,SAASA,SAAUyD,KAAK6L,MAAMtP,SAAS+I,YAAc,wBAAM6I,UAAU,eAAhB,SAA+C,IAChKnO,KAAK0Q,gBAAgB1Q,KAAK6L,MAAMtP,SAAUuR,KAMnD4C,gBAAgB/G,EAAkBmE,GACtC,IAAM6C,EAAW,GAAKhH,EAAE9J,WACpB+Q,EAAWjH,EAAEhN,aAKjB,OAHKiU,GAAyB,KAAbA,IACbA,EAAW9C,EAAUnB,elBrCC,UkBuCtBhD,EAAE1R,KAEE,gCACI,yBAAOoC,KAAK,OACR8T,UAAU,eACVnW,KAAM2Y,EACNE,SAAU7Q,KAAK6L,MAAMtP,SAAS+I,YAC9B7I,YAAakN,EAAElN,YACfqU,SAAU9Q,KAAKiQ,gBACjBjQ,KAAK+Q,QAAQ/Q,KAAK6L,MAAMtP,SAAS0H,UAAY,uBAAKkK,UAAU,sCAAsCyC,IlB/CtF,UkBkDfjH,EAAE1R,KAEL,gCACI,yBAAOoC,KAAK,QACR8T,UAAU,eACVnW,KAAM2Y,EACNE,SAAU7Q,KAAK6L,MAAMtP,SAAS+I,YAC9B0L,QAASrH,EAAEzR,aACXuE,YAAakN,EAAElN,YACfqU,SAAU9Q,KAAKiQ,gBACjBjQ,KAAK+Q,QAAQ/Q,KAAK6L,MAAMtP,SAAS0H,UAAY,uBAAKkK,UAAU,sCAAsCyC,IlB1DxF,QkB6DbjH,EAAE1R,KAEF+H,KAAKiR,WAAYN,EAAUhH,EAAGiH,GlB9Dd,WkBgEhBjH,EAAE1R,KAEF+H,KAAKkR,cAAeP,EAAUhH,EAAGiH,GAEjCjH,EAAEpE,mBAAqB,IAE1B,gCACI,yBAAOlL,KAAK,OACR8T,UAAU,eACVnW,KAAM2Y,EACNE,SAAU7Q,KAAK6L,MAAMtP,SAAS+I,YAC9B0L,QAASrH,EAAEzR,aACXgD,UAAWyO,EAAEpE,kBACb9I,YAAakN,EAAElN,YACfqU,SAAU9Q,KAAKiQ,gBACjBjQ,KAAK+Q,QAAQ/Q,KAAK6L,MAAMtP,SAAS0H,UAAY,uBAAKkK,UAAU,sCAAsCyC,IAMxG,gCACI,4BACIO,KAAM,EACNhD,UAAU,eACVnW,KAAM2Y,EACNE,SAAU7Q,KAAK6L,MAAMtP,SAAS+I,YAC9BpK,UAAWyO,EAAEpE,kBAAoB,EAAIoE,EAAEpE,kBAAoB,IAC3D9I,YAAakN,EAAElN,YACfqU,SAAU9Q,KAAK+P,wBACb/P,KAAK+Q,QAAQ/Q,KAAK6L,MAAMtP,SAAS0H,UAAY,uBAAKkK,UAAU,sCAAsCyC,IAMhHK,WAAWN,EAAkBhH,EAAkBiH,GACnD,IAAMQ,EAAYrT,EAAQ4L,EAAElE,aAAckE,EAAEnE,cAAgB,QAAU,WAChE6L,EAAM1H,EAAE9M,WAAWzB,OAAS,GAAK,WAAa,YACpD,OAAO,gCAGgB,UAAdgW,GAAyBzH,EAAE9M,WAAWzB,OAAS,GAC9C,0BAAQ+S,UAAU,cAChBnW,KAAM2Y,EACNW,aAAa,GACbT,SAAU7Q,KAAK6L,MAAMtP,SAAS+I,YAC9B7I,YAAakN,EAAElN,YACdqU,SAAU9Q,KAAKoQ,uBACZ,0BAAQ1Q,MAAM,GAAG6R,UAAQ,IAErB5H,EAAE9M,WAAWR,IAAI,CAACmV,EAAM5J,IACb,0BAAQnI,IAAK+R,EAAKtR,YAAaR,MAAO8R,EAAKtR,aAAcsR,EAAKzU,UAKhF,uBAAKoR,UAAU,OACVnO,KAAKyR,QAAQ9H,EAAE9M,WAAY8M,EAAE9M,WAAWzB,OAAS,IAAIiB,IAAI,CAACmV,EAAM5J,KAC9D,IAAI8J,EAASL,EACTM,EAAM,WAAOhB,EAAP,YAAmBa,EAAKtR,aAClC,OACI,uBAAKiO,UAAWuD,EAAQjS,IAAG,UAAKkK,EAAE9J,WAAP,YAAqB+H,EAArB,iBACvB,uBAAKuG,UAAU,cAEX,yBAAO9T,KAAM+W,EACTjD,UAAU,mCACVpW,GAAI4Z,EACJ3Z,KAAM2Y,EACNW,aAAcE,EAAKtR,YACnB2Q,SAAU7Q,KAAK6L,MAAMtP,SAAS+I,YAC9BwL,SAAU9Q,KAAKkQ,kBARvB,OASI,yBAAO/B,UAAU,mBAAmByD,QAASD,GAASH,EAAKzU,aAUvF4M,EAAE9M,WAAWR,IAAI,CAACmV,EAAM5J,IAChB4J,EAAKlH,SAAWX,EAAEhK,YAAcgK,EAAEhK,WAAWiK,UAAWzF,GAAKA,EAAEjE,cAAgBsR,EAAKtR,cAAgB,EAEpG,yBAAOT,IAAG,UAAKkK,EAAE9J,WAAP,YAAqB+H,EAArB,cAAwCvN,KAAK,OACnD8T,UAAU,eACVnW,KAAM2R,EAAE9J,WAAWlH,WACnBZ,GAAIyZ,EAAKtR,YAAYvH,WACrBkY,UAAQ,EACRpU,YAAakN,EAAElN,YACfqU,SAAU9Q,KAAKqQ,uBAGZ,gBAAC,WAAD,CAAgB5Q,IAAG,UAAKkK,EAAE9J,WAAP,YAAqB+H,EAArB,kBAGhC5H,KAAK+Q,QAAQ/Q,KAAK6L,MAAMtP,SAAS0H,UAAY,uBAAKkK,UAAU,sCAAsCyC,IAKpGM,cAAcP,EAAkBhH,EAAkBiH,GACtD,GAAwB,OAApBjH,EAAEhE,eAA2C,OAAjBgE,EAAEjE,WAC9B,OAAO,iCAEX,IACMmM,EjBsBP,WACH,IAAIjD,EAAQlL,OAAOoO,WAEnB,OAAKlD,GAAS,KAAatW,EAAeyZ,IACrCnD,GAAS,KAAatW,EAAe0Z,GACrCpD,GAAS,IAAYtW,EAAe2Z,GACpCrD,GAAS,IAAYtW,EAAe4Z,GACpCtD,GAAS,IAAYtW,EAAe6Z,GAElC7Z,EAAe8Z,GiB/BCC,GACbC,EAASC,KAAKC,MAAM,IAAM7I,EAAEhE,cAAcvK,OAAS,GAAK,GAAKuO,EAAEhE,cAAcvK,SACnF,OAAO,gCACC,uBAAK+S,UAAS,4CAJJ,sBAKN,uBAAKA,UAAU,YAAf,QAGA,uBAAKA,UAAU,yEAEX,uBAAKA,UAAS,yBAAoBmE,EAApB,mBAEN3I,EAAEhE,cAActJ,IAAI,CAACoW,EAAGC,IAEhB,uBAAKvE,UAAS,wBAAmBmE,EAAnB,oBAA6C7S,IAAG,yBAAoBiT,IAC9ED,EAAE1H,YAS9BpB,EAAEjE,WAAWrJ,IAAI,CAACsW,EAAG5L,IAEb,uBAAKoH,UAAS,kBA1BZ,oBA0BY,YAA2BpH,EAAE,EAAK,WAAa,gBAAkBtH,IAAG,yBAAoBkT,EAAE/H,WACpG,uBAAKuD,UAAS,oDAAgD0D,GAAcvZ,EAAe6Z,GAAK,OAAS,KACpGQ,EAAE5H,QAEP,uBAAKoD,UAAU,4DACX,uBAAKA,UAAU,OAEPxE,EAAEhE,cAActJ,IAAI,CAACoW,EAAGC,KACpB,IAAMf,EAAM,UAAMhB,EAAN,YAAkBgC,EAAE/H,SAApB,YAAgC6H,EAAE7H,UAC9C,OACI,uBAAKuD,UAAS,wBAAmBmE,EAAnB,SAAkC7S,IAAG,wBAAmBiT,IAClE,uBAAKvE,UAAY0D,GAAcvZ,EAAe6Z,GAAK,aAAe,kBAC9D,yBAAO9X,KAAK,QACR8T,UAAU,mCACVpW,GAAI4Z,EACJ3Z,KAAI,UAAK2Y,EAAL,YAAiBgC,EAAE/H,UACvB0G,aAAY,UAAKqB,EAAE/H,SAAP,YAAmB6H,EAAE7H,UACjCiG,SAAU7Q,KAAK6L,MAAMtP,SAAS+I,YAC9BwL,SAAU9Q,KAAKuQ,qBACnB,yBAAOpC,UAAU,yCAAyCyD,QAASD,GAASc,EAAE1H,iBAWxH/K,KAAK+Q,QAAQ/Q,KAAK6L,MAAMtP,SAAS0H,UAAY,uBAAKkK,UAAU,sCAAsCyC,IAIpGa,QAAQmB,EAAwBC,GAEpC,IAAIrZ,EAA2B,GAE/B,GAAIqZ,EAAa,CAIb,IAFA,IAAMC,EAAOP,KAAKQ,KAAKH,EAAIxX,OAAQ,GAE3B2L,EAAG,EAAGA,EAAG6L,EAAIxX,OAAO2L,IAAI,CAE5BvN,EADWuN,GAAK+L,EAAiB,GAAR/L,EAAE+L,GAAS,EAAQ,EAAJ/L,GAC1B6L,EAAI7L,GAGtB,OAAOvN,EAGX,OAAOoZ,EA6BH7B,QAAQrR,GAEZ,YAAc9G,IAAV8G,GAAiC,OAAVA,GAGpBA,GAIAoQ,UChRf,MAAMkD,WAA4BpF,gBAA6B,eAAD,oBAO1DqF,aAAe,KACX,IAAMhP,EAAUjE,KAAKkT,mBACrBlT,KAAK6L,MAAM7H,aAAaC,IAT8B,KAY1DgM,aAAgBxR,IACZA,EAAE0U,OAAOzT,MAAQjB,EAAE0U,OAAOzT,MAC1B,IAAMuE,EAAUjE,KAAKoT,mBAAmB3U,EAAE0U,OAAOnb,KAAMyG,EAAE0U,OAAOzT,OAEhEM,KAAK6L,MAAMnH,4BAA4B,CAC/B7E,YAAapB,EAAE0U,OAAOnb,KACtBkS,SAAU,KACV3Q,KAAMkF,EAAE0U,OAAOzT,MACf0K,uBAAuB,EACvBnG,QAASA,EACTgB,aAAa,KAtBiC,KA0B1DiL,gBAAmBzR,IACfA,EAAE0U,OAAOzT,MAAQjB,EAAE0U,OAAOzT,MAC1B,IAAMuE,EAAUjE,KAAKoT,mBAAmB3U,EAAE0U,OAAOnb,KAAMyG,EAAE0U,OAAOzT,OAEhEM,KAAK6L,MAAMnH,4BAA4B,CAC/B7E,YAAapB,EAAE0U,OAAOnb,KACtBkS,UAAWzL,EAAE0U,OAAOzT,MACpBsK,UAAWvL,EAAE0U,OAAOE,QACpB9Z,KAAM,GACN0K,QAASA,EACTgB,aAAa,IAGrBjF,KAAKkT,oBAvCiD,KA0C1D3C,mBAAsB9R,IAClBA,EAAE0U,OAAOzT,MAAQjB,EAAE0U,OAAOzT,MAC1B,IAAMG,EAAapB,EAAE0U,OAAOnb,KAAK4X,MAAM,KAAK,GACtC0D,EAAiB7U,EAAE0U,OAAOzT,MAAMkQ,MAAM,KAEtC3L,EAAUjE,KAAKoT,mBAAmBvT,EAAYpB,EAAE0U,OAAOzT,OAE7DM,KAAK6L,MAAMnH,4BAA4B,CAC/B7E,YAAaA,EACb4K,OAAQ6I,EAAe,GACvB5I,UAAW4I,EAAe,GAC1BpJ,SAAU,KACVF,UAAWvL,EAAE0U,OAAOE,QACpB9Z,KAAM,GACN0K,QAASA,EACTgB,aAAa,IAGrBjF,KAAKkT,oBA5DiD,KA+D1D7C,qBAAwB5R,IACpBA,EAAE0U,OAAOzT,MAAQjB,EAAE0U,OAAOzT,MAC1B,IAAMuE,EAAUjE,KAAKoT,mBAAmB3U,EAAE0U,OAAOnb,KAAMyG,EAAE0U,OAAOzT,OAEhEM,KAAK6L,MAAMnH,4BAA4B,CAC/B7E,YAAapB,EAAE0U,OAAOnb,KACtBkS,UAAWzL,EAAE0U,OAAOpb,GACpBiS,UAAW,KACXI,uBAAuB,EACvB7Q,KAAMkF,EAAE0U,OAAOzT,MACfuE,QAASA,EACTgB,aAAa,IAGrBjF,KAAKkT,oBA3ETK,qBAEIvT,KAAKkT,mBA4EDE,mBAAmBvT,EAAoBH,GAE3C,IAAMiK,EAAI3J,KAAK6L,MAAMvQ,OAAOa,UAAUqC,KAAKqL,GAAKA,EAAEhK,cAAgBA,GAElE,QAASjH,IAAN+Q,EACC,OAAO,EAEX,GnBpGwB,QmBoGpBA,EAAE1R,KAAyC,CAE3C,GAAI0R,EAAErE,aAA+C,KAA/BqE,EAAEhK,YAAc,IAAIvE,OACtC,OAAO,EAEX,IAAKuO,EAAEhK,YAAc,IAAIvE,OAASuO,EAAEnE,eAAoC,IAApBmE,EAAEnE,aAClD,OAAO,EAEX,IAAKmE,EAAEhK,YAAc,IAAIvE,OAASuO,EAAElE,eAAoC,IAApBkE,EAAElE,aAClD,OAAO,EAEX,IAAM4E,EAAYV,EAAE9M,WAAW2B,KAAKqL,IAAkB,IAAdA,EAAES,SAE1C,GAAID,EAAW,CACX,IAAMmJ,GAAe7J,EAAEhK,YAAc,IAAInB,KAAKqL,GAAKA,EAAE3J,cAAgBmK,EAAUnK,aAE/E,GAAIsT,IAAgD,IAAhCA,EAAYrT,SAAS/E,QACR,OAAxBuO,EAAEpE,mBAA8BoE,EAAEpE,kBAAoB,GAAKiO,EAAYrT,SAAS/E,OAASuO,EAAEpE,mBAEhG,OAAO,OAGZ,InBzHoB,WmByHhBoE,EAAE1R,KAA4C,CAErD,IAAMwb,EAAa9J,EAAE/J,eAAiB,GAEtC,IAAsB,IAAlB+J,EAAErE,YACF,OAAO,EAEX,IAPqD,eAO7CyB,GAEJ,IAA+E,IAA3E0M,EAAU7J,UAAWnL,GAAKA,EAAE8B,cAAgBoJ,EAAEjE,WAAWqB,GAAG6D,UAC5D,MAAM,CAAN,GAAO,IAHP7D,EAAI,EAAGA,EAAK4C,EAAEjE,WAAWtK,OAAQ2L,IAAK,CAAC,IAAD,IAAtCA,GAAsC,kCAM9C,OAAO,EASP,GALc,OAAVrH,QAA4B9G,IAAV8G,IAClBA,EAAQ,IAEZA,EAAQA,EAAMvE,OAEXwO,EAAErE,aAAgC,IAAjB5F,EAAMtE,OACtB,OAAO,EAEX,GnBrJsB,UmBqJhBuO,EAAE1R,MnBtJc,UmBsJ+B0R,EAAE1R,MACvB,OAAxB0R,EAAEpE,mBAA8BoE,EAAEpE,kBAAoB,GAAK7F,EAAMtE,OAASuO,EAAEpE,kBAC5E,OAAO,EAGf,GAAc,KAAV7F,GAAgBiK,EAAEzR,eAEM,IADZ,IAAIwb,OAAO/J,EAAEzR,cACjByb,KAAKjU,GACT,OAAO,EAGnB,OAAO,EAGHwT,mBAGJ,IAFA,IAAI1Z,GAAS,EAELuN,EAAG,EAAGA,EAAI/G,KAAK6L,MAAMvQ,OAAOa,UAAUf,OAAQ2L,IAAK,CACvD,IAAM4C,EAAI3J,KAAK6L,MAAMvQ,OAAOa,UAAU4K,GAEhC9C,EAAUjE,KAAKoT,mBAAmBzJ,EAAE9J,WAAWlH,WAAYgR,EAAEjK,OAEnEM,KAAK6L,MAAMrH,oBAAoBmF,EAAE9J,WAAYoE,GAE7CzK,EAASA,GAAUyK,EAGvB,OAAOzK,EAGJqU,SACH,IAAM1R,EAAY6D,KAAK6L,MAAMvQ,OAAOa,UAC9BmB,EAAS0C,KAAK6L,MAAMvQ,OAAOgC,OAE3BwQ,EAAYJ,GADD1N,KAAK6L,MAAMhH,UAAY,MAGlCZ,EAAYjE,KAAK6L,MAAM5G,cAC4D,IAArEjF,KAAK6L,MAAMvQ,OAAOa,UAAUyN,UAAUC,IAAmB,IAAdA,EAAE5F,SAEjE,OACI,gBAAC,WAAD,KACI,uBAAKkK,UAAU,WACX,uBAAKA,UAAU,kBACX,yBAAOA,UAAU,sBAAsBL,EAAU3B,kBAAjD,IAAoE,wBAAMgC,UAAU,uBAAhB,KAApE,IAAoHL,EAAU1B,eAGjIpM,KAAK4T,oBAAoBzX,EAAWmB,GAErC,uBAAK6Q,UAAU,aACTlK,GAAW,uBAAKkK,UAAU,iCAAkCL,EAAUR,0BACxE,4BAEFtN,KAAK6L,MAAMtH,eAAiB,uBAAK4J,UAAU,aACxC,uBAAKA,UAAU,iCAAkCL,EAAUP,iBAC5D,4BAEJ,uBAAKY,UAAU,aACX,0BAAQA,UAAU,kBAAkBM,QAASzO,KAAKiT,cAAgBnF,EAAUZ,WAOxF0G,oBAAoBzX,EAA4BmB,GAMpD,IAJA,IAAI6H,GAAgC,GAE9B0O,EAAQ,GACVC,GAAe,EACV/M,EAAI,EAAGA,EAAI5K,EAAUf,OAAQ2L,IAAK,CACvC,GAAI5K,EAAU4K,GAAG5B,UAAYA,EAAS,CAElC,IAAM4O,EAAQzW,EAAOkB,KAAKqL,GAAKA,EAAE1E,UAAYhJ,EAAU4K,GAAG5B,SAEtD4O,GACAD,GAAe,EACfD,EAAMtJ,KACF,uBAAK9K,IAAG,YAAOsU,EAAM5O,QAAb,eAA2BhJ,EAAU4K,GAAGlH,YAAcsO,UAAU,uBAC5C,OAAvB4F,EAAMvW,cAAgD,KAAvBuW,EAAMvW,aAAsB,qBAAG2Q,UAAU,mBAAmB4F,EAAMvW,cAAoB,GAC3F,OAA1BuW,EAAMrW,iBAAsD,KAA1BqW,EAAMrW,gBAAyB,qBAAGyQ,UAAU,MAAM4F,EAAMrW,iBAAuB,OAElG,IAAjBoW,GACPD,EAAMtJ,KACF,uBAAK9K,IAAG,iBAAYtD,EAAU4K,GAAGlH,YAAcsO,UAAU,aACrD,qBAAGA,UAAU,MAAb,UAKhB0F,EAAMtJ,KAAK,gBAAC,GAAD,CAAgB9K,KAAMtD,EAAU4K,GAAGlH,YAAc,EAAIkH,EAAI5K,EAAU4K,GAAGlH,YAAc,YAAatD,SAAUJ,EAAU4K,GAChHiJ,YAAahQ,KAAKiQ,aAClBE,eAAgBnQ,KAAKkQ,gBACrBM,kBAAmBxQ,KAAKuQ,mBACxBD,oBAAqBtQ,KAAKqQ,qBAC1BxL,SAAU7E,KAAK6L,MAAMhH,YAErCM,EAAUhJ,EAAU4K,GAAG5B,QAG3B,OACI,gCACK0O,IAOFb,UClPf,MAAMgB,WAAiBpG,gBAGZqG,oBACHjU,KAAKkU,oBAIFX,qBACHvT,KAAKkU,oBAGDA,oBACJ,IAAM1Q,EAAaxD,KAAK6L,MAAMsI,MAAMC,OAAO5Q,YAAc,GACzDxD,KAAK6L,MAAMpI,cAAcD,GAGtBqK,SACH,IAAMwG,EAAUrU,KAAK6L,MAAMvQ,OAAOtD,MAAQgI,KAAK6L,MAAMvQ,OAAOM,OAASoE,KAAK6L,MAAMvQ,OAAOW,SAAW,GAElG,OACI,gBAAC,WAAD,KACI,gBAAC,GAAD,MACA,uBAAKkS,UAAU,YACX,uBAAKA,UAAU,OACX,uBAAKA,UAAU,sBACX,sBAAIA,UAAU,QAAQkG,IAE1B,uBAAKlG,UAAU,sBACX,uBAAKA,UAAU,8BAItBnO,KAAKsU,wBAMdA,sBACJ,IAAMjF,EAAc3B,GAAmB,MACjC4B,EAAc5B,GAAmB,MAEvC,IAAI1N,KAAK6L,MAAMvQ,OA4BX,OACI,yBAAK+T,EAAYrC,gBAAjB,MAAuCsC,EAAYtC,iBA5BvD,OAAQhN,KAAK6L,MAAM1I,MACf,KAAM,EACF,OAAQ,gCAAE,yBAAKkM,EAAYrC,iBAAqB,yBAAKsC,EAAYtC,kBACrE,KAAK,EACD,OAAQ,gCAAE,yBAAKqC,EAAYtC,mBAAuB,yBAAKuC,EAAYvC,oBACvE,KAAK,EACD,OAAQ,gBAAC,GAAD,MACZ,KAAK,EACD,OAAQ,gBAAC,GAAD,CACIoC,aAAenP,KAAK6L,MAAM3I,aAC1B5H,OAAS0E,KAAK6L,MAAMvQ,OACpBuJ,SAAW7E,KAAK6L,MAAMhH,WACtC,KAAK,EACD,OAAQ,gBAAC,GAAD,CACIN,cAAgBvE,KAAK6L,MAAMtH,cAC3BU,YAAcjF,KAAK6L,MAAM5G,YACzB3J,OAAS0E,KAAK6L,MAAMvQ,OACpBuJ,SAAW7E,KAAK6L,MAAMhH,SACtBb,aAAehE,KAAK6L,MAAM7H,aAC1BQ,oBAAsBxE,KAAK6L,MAAMrH,oBACjCE,4BAA8B1E,KAAK6L,MAAMnH,8BACzD,KAAK,EACD,OAAQ,gBAAC,GAAD,CACIpJ,OAAS0E,KAAK6L,MAAMvQ,WAarC0T,mBACVzF,GAA4BA,EAAMhG,YACnC0L,EAFWD,CAGbgF,ICjGF,MAAMO,WAAe3G,gBAA0B,eAAD,oBAElC4G,aAAe,KACfxU,KAAK6L,OAAS7L,KAAK6L,MAAM4I,SACzBpT,EAAYF,SACZnB,KAAK6L,MAAM4I,QAAQlK,KAAK,WACjBvK,KAAK6L,OAAS7L,KAAK6L,MAAMA,OAAS7L,KAAK6L,MAAMA,MAAM4I,UAC1DpT,EAAYF,SACZnB,KAAK6L,MAAMA,MAAM4I,QAAQlK,KAAK,YAG/BsD,SACH,IAAMhN,EAAOQ,EAAYc,iBACzB,OACI,gBAAC,WAAD,KACI,uBAAKgM,UAAU,OACX,uBAAKA,UAAU,OACX,uBAAKC,IAAKH,KAAQI,IAAI,OAAOF,UAAU,sBAAsBG,MAAO,CAACC,SAAU,MAAOC,OAAQ,WAG9F3N,EAAKG,aACL,uBAAKmN,UAAU,+BACX,uBAAKA,UAAU,aACX,0BAAQ9T,KAAK,SAAS8T,UAAU,kCAAkCuG,iBAAe,WAAWC,gBAAc,SACrG9T,EAAKyB,WAEV,sBAAI6L,UAAU,iBACV,0BAAI,gBAAC,IAAD,CAAMA,UAAU,gBAAgByG,GAAE,mBAAlC,oBACJ,0BAAI,sBAAIzG,UAAU,sBAClB,0BAAI,0BAAQA,UAAU,gBAAgBM,QAASzO,KAAKwU,cAAhD,aAGZ,wBAAMrG,UAAU,WAAhB,uBAOZ,uBAAKA,UAAU,YACX,uBAAKA,UAAU,OACX,uBAAKA,UAAU,WAAWG,MAAO,CAACE,OAAQ,QACtC,uBAAKL,UAAU,0BAA0BQ,KAAK,cAAcL,MAAO,CAACM,MAAO,MAAOC,gBAAe,GAAIC,gBAAe,EAAGC,gBAAe,OAE1I,uBAAKZ,UAAU,WAAWG,MAAO,CAACE,OAAQ,QACtC,uBAAKL,UAAU,0BAA0BQ,KAAK,cAAcL,MAAO,CAACM,MAAO,QAASC,gBAAe,GAAIC,gBAAe,EAAGC,gBAAe,WASrJwF,UClDf,MAAMM,WAAejH,IAAMkH,UAA8B,eAAD,oBA6DpDC,eAAkBtW,IACdA,EAAE0U,OAAOzT,MAAQjB,EAAE0U,OAAOzT,MAE1BM,KAAK6L,MAAMzE,wBAAwBhP,EAAW4c,YAAavW,EAAE0U,OAAOnb,KAAMyG,EAAE0U,OAAOzT,OAAO,EAAO,EAAG,IAAIhH,OAhExD,KAmEpDuc,aAAgBtO,IACZ3G,KAAK6L,MAAMzE,wBAAwBhP,EAAW4c,YAAa,aAAc,IAAI,EAAOrO,EAAY,IAAIjO,MAEpGsH,KAAK6L,MAAMrF,kBAAkBxG,KAAK6L,MAAMzC,YAAY3C,WAAYzG,KAAK6L,MAAMzC,YAAY1C,SAAUC,IAtEjD,KAyEpDuO,aAAgBnW,IACZ8D,MAAM,iBAAD,OAAkB9D,GAAY2B,EAAW,SAAU,GAAI,KAC3DkB,KAAKC,IACF,IAAKA,EAASiB,GACZ,MAAM,IAAIC,MAAM,oBAElB,OAAOlB,IAEVD,KAAKE,IACF9B,KAAK6L,MAAMrF,kBAAkBxG,KAAK6L,MAAMzC,YAAY3C,WAAYzG,KAAK6L,MAAMzC,YAAY1C,SAAU1G,KAAK6L,MAAMzC,YAAYzC,cAE3H7C,MAAOC,QAjFLkQ,oBACHjU,KAAKiV,aAAa,GAGtBpH,SAEI,OACI,oCACI,kBAAC,GAAD,CAAQhC,MAAO7L,KAAK6L,QAEpB,yBAAKsC,UAAU,WACX,yBAAKA,UAAU,8BACX,2BAAO9T,KAAK,OACZrC,KAAK,aACL0H,MAAOM,KAAK6L,MAAMzC,YAAY3C,WAC9BhK,YAAY,gBAAgB0R,UAAU,eAAe2C,SAAU9Q,KAAK+U,kBAExE,yBAAK5G,UAAU,sDACX,4BAAQA,UAAU,kBAAkBM,QAAS,IAAIzO,KAAKiV,aAAa,IAAnE,WAGJ,yBAAK9G,UAAU,8BACX,2BAAOA,UAAU,uBACb,+BACI,4BACI,kCACA,oCACA,0CACA,sCACA,2CACA,0CACA,0CACA,wCACA,wBAAIgH,QAAS,GAAb,YAGR,+BAEQnV,KAAKoV,yBAKrB,yBAAKjH,UAAU,aACX,yBAAKkH,aAAW,OACZ,wBAAIlH,UAAU,cAENnO,KAAKsV,wBAuCrCA,mBAAoB,IAAD,OACXC,EAAK,GAGLC,EAAajD,KAAKQ,KAAK/S,KAAK6L,MAAMzC,YAAYC,aAAarJ,KAAK6L,MAAMzC,YAAY1C,UAEtF,GAAI8O,EAAa,EAAG,OAAO,qCAEe,IAAtCxV,KAAK6L,MAAMzC,YAAYzC,WACvB4O,EAAGhL,KAAK,wBAAI4D,UAAU,sBAAqB,0BAAMA,UAAU,aAAhB,QAE3CoH,EAAGhL,KAAK,wBAAI4D,UAAU,aAAY,uBAAGA,UAAU,YAAYM,QAAS,IAAMzO,KAAKiV,aAAa,IAA1D,QAGtC,IACIQ,EAAYzV,KAAK6L,MAAMzC,YAAYzC,WADxB,EAEX+O,EAAU1V,KAAK6L,MAAMzC,YAAYzC,WAFtB,EAIX8O,EAAY,IACZC,IAAyB,EAAbD,EAAkB,EAC9BA,EAAY,GAGZC,EAAUF,IAEVC,GAAcC,EAAUF,EACxBE,EAAUF,EACNC,EAAY,IAAGA,EAAY,IAInC,IA/Be,eA+BP1O,GAEA,EAAK8E,MAAMzC,YAAYzC,aAAeI,EACtCwO,EAAGhL,KAAK,wBAAI4D,UAAU,mBAAmBwH,eAAa,QAC1C,0BAAMxH,UAAU,aAAapH,KAGzCwO,EAAGhL,KAAK,wBAAI4D,UAAU,aAAY,uBAAGA,UAAU,YAAYM,QAAS,IAAM,EAAKwG,aAAalO,IAAKA,MAPjGA,EAAI0O,EAAW1O,GAAK2O,EAAS3O,IAAM,EAAnCA,GAgBR,OALI/G,KAAK6L,MAAMzC,YAAYzC,aAAe6O,EACtCD,EAAGhL,KAAK,wBAAI4D,UAAU,sBAAqB,0BAAMA,UAAU,aAAhB,QAE3CoH,EAAGhL,KAAK,wBAAI4D,UAAU,aAAY,uBAAGA,UAAU,YAAYM,QAAS,IAAMzO,KAAKiV,aAAaO,IAA1D,QAE/BD,EAGXH,sBACI,OAAyC,IAArCpV,KAAK6L,MAAMzC,YAAYpE,UAEnB,4BACI,wBAAImQ,QAAS,GACT,yBAAKhH,UAAU,YACX,yBAAKA,UAAU,0DACXQ,KAAK,cAAcL,MAAO,CAACM,MAAO,aAKV,IAArC5O,KAAK6L,MAAMzC,YAAYpE,UACzBhF,KAAK6L,MAAMzC,YAAY9N,QAAU0E,KAAK6L,MAAMzC,YAAY9N,OAAOF,OAAS,EAErE4E,KAAK6L,MAAMzC,YAAY9N,OAAOe,IAAKuZ,GAEpB,wBAAIzH,UAAU,eAAe1O,IAAKmW,EAAE7W,UACvC,4BAAK6W,EAAE7W,UACP,4BAAK6W,EAAE5d,MACP,4BAAI,kBAAC,IAAD,CAAM4c,GAAI,CAACiB,SAAS,UAAD,OAAYD,EAAE7W,YAAc6W,EAAEE,aACrD,4BAAKF,EAAEvP,QACP,4BAAI,kBAAC,IAAD,CAAMuO,GAAI,CAACiB,SAAS,gBAAD,OAAkBD,EAAE7W,YAAc6W,EAAEG,mBAC3D,4BAAKxd,EAAcqd,EAAEI,WAAW,IAChC,4BAAKJ,EAAE1W,UAAY3G,EAAcqd,EAAE1W,WAAW,GAAQ,IACtD,4BAAK0W,EAAEzW,QAAU5G,EAAcqd,EAAEzW,SAAS,GAAQ,IAClD,4BACI,kBAAC,IAAD,CAAMyV,GAAE,kBAAagB,EAAE7W,WAAvB,QADJ,QAGA,4BACI,kBAAC,IAAD,CAAM6V,GAAE,kBAAagB,EAAE7W,WAAvB,QADJ,QAGA,4BACI,yBAAKoP,UAAU,YACX,4BAAQA,UAAU,8CAA8C9T,KAAK,SAAStC,GAAE,cAAS6d,EAAE7W,UAAY2V,iBAAe,WAAWC,gBAAc,SAA/I,UACA,wBAAIxG,UAAU,gBAAgB8H,kBAAA,cAAwBL,EAAE7W,WACpD,4BAAI,uBAAGoP,UAAU,gBAAgBM,QAAS,IAAMzO,KAAKkV,aAAaU,EAAE7W,WAAhE,iCAA0G6W,EAAE5d,KAA5G,YAS5B,4BACI,wBAAImd,QAAS,GAAb,qBASZ,4BACI,wBAAIA,QAAS,GAAb,uCAQDN,UClNR,MAAMqB,WAAwBpX,EAAa,eAAD,oBACtCgX,gBADsC,OAEtCzP,YAFsC,OAGtC0P,sBAHsC,OAItCC,eAJsC,OAKtC3M,aAAuB,GAG3B,MAAM8M,WAAwBD,GAAiB,eAAD,oBAC1CE,SAAwB,ICWnC,MAAMC,WAAsBzI,IAAMkH,UAAkD,eAAD,oBAC/EwB,OAAyB,GADsD,KAE/EC,QAAU,GAFqE,KAI/EhN,MAAQ,CACJvE,WAAY,EACZwR,cAAe,EACfC,UAAU,EACVnb,OAAQ,IAAI6a,GACZO,eAAgB,IAAIP,GACpBQ,SAAU,GACVC,MAAO5W,KAAKsW,QAX+D,KAmCvEO,mBAAqB,KACrB7W,KAAKuJ,MAAMvE,WAAa,IACxBhF,KAAK8W,SAAS7Q,YAAQjG,KAAKuJ,MAAO2B,IAC9BA,EAAWlG,UAAY,KAG3BnC,MAAM,8BAAD,OAA+B7C,KAAKuJ,MAAMjO,OAAOyD,SAAjD,YAA6DiB,KAAKuJ,MAAMiN,cAAxE,YAAyFxW,KAAKuJ,MAAMkN,UAAY/V,EAAW,MAAO,GAAI,KAC1IkB,KAAKC,GAAYA,EAASgC,QAE1BjC,KAAKE,IACF9B,KAAK+W,eAAejV,KAEvBgC,MAAMC,IACH/D,KAAK8W,SAAS7Q,YAAQjG,KAAKuJ,MAAO2B,IAC9BA,EAAWlG,UAAY,SAjDwC,KAuDvEgS,oBAAuBvY,IAC3BuB,KAAK8W,SAAS7Q,YAAQjG,KAAKuJ,MAAO2B,IAC9BA,EAAWuL,SAAWhY,EAAE0U,OAAOE,YAzDwC,KA6DvE0B,eAAkBtW,IACtBuB,KAAK8W,SAAS7Q,YAAQjG,KAAKuJ,MAAO2B,IAC9BA,EAAWsL,eAAiB/X,EAAE0U,OAAOzT,UAhDtCuU,oBACHjU,KAAKuW,QAAU7S,OAAOC,SAASC,OAAS,aAExC5D,KAAKuW,QAAUvW,KAAKuW,QAAQU,cAAcxd,QAAQ,QAAQ,IAC1D,IAAMsF,EAAWiB,KAAK6L,MAAMsI,MAAMC,OAAOrV,UAAY,EAErD8D,MAAM,eAAD,OAAgB9D,GAAY2B,EAAW,MAAO,GAAI,KACtDkB,KAAKC,GAAYA,EAASgC,QAE1BjC,KAAKE,IACF9B,KAAK+W,eAAejV,KAEvBgC,MAAMC,IAEH/D,KAAK8W,SAAS7Q,YAAQjG,KAAKuJ,MAAO2B,IAC9BA,EAAWlG,UAAY,OAqC3B+R,eAAejV,GACnB,IAAMoV,EAAYlX,KAAKmX,eAAerV,EAAKsU,UAE3CpW,KAAK8W,SAAS7Q,YAAQjG,KAAKuJ,MAAO2B,IAC9BA,EAAW5P,OAASwG,EACpBoJ,EAAWwL,eAAiB5U,EAC5BoJ,EAAWlG,UAAY,EACvBkG,EAAW0L,MAAQM,KAInBC,eAAeP,GACnB,IAAIpd,EAAwB,GAE5B,GAAIod,GAASA,EAAMxb,OAAS,EAExB,IADA,IAAIkB,EAAI,EACCyK,EAAI,EAAGA,EAAI6P,EAAMxb,OAAQ2L,IAExBA,IAAM6P,EAAMxb,OAAS,GAAMwb,EAAM7P,GAAGiP,YAAcY,EAAM7P,EAAI,GAAGiP,YACjExc,EAAO+Q,KAAKqM,EAAMQ,MAAM9a,EAAGyK,EAAE,IAE7BzK,EAAIyK,EAAE,GAKlB,OAAOvN,EAIH6d,YAAYT,GAEhB,GAAIA,GAASA,EAAMxb,OAAS,EAAG,CAC3B,IAAIkc,EAAM,GAEVV,EAAMW,QAAQC,IAEVA,EAAOD,QAAQ9Y,IAEX6Y,GAAO,IACPA,GAAOtX,KAAKuW,QACZe,GAAO7Y,EAAEnE,KACTgd,GAAO,UAKfvd,EAAYud,EAAK,UAMzBzJ,SAEI,OAA0B,OAAtB7N,KAAKuJ,MAAMjO,aACO1C,IAAtBoH,KAAKuJ,MAAMjO,QACX0E,KAAKuJ,MAAMjO,aACoB1C,IAA/BoH,KAAKuJ,MAAMjO,OAAOyD,SAGV,oCACA,kBAAC,GAAD,CAAQ8M,MAAO7L,KAAK6L,QACpB,yBAAKsC,UAAU,OACX,yBAAKA,UAAU,sBACX,wBAAIA,UAAU,QAAd,yBAEJ,yBAAKA,UAAU,sBACX,yBAAKA,UAAU,2BACX,kBAAC,IAAD,CAAMA,UAAU,kBAAkByG,GAAE,WAApC,oBAIV5U,KAAKyX,mBAEP,yBAAKtJ,UAAU,WACX,yBAAKA,UAAU,OACX,2BAAO9T,KAAK,OAAOoC,YAAY,+BAA+B0R,UAAU,eAAe2C,SAAU9Q,KAAK+U,kBAE1G,yBAAK5G,UAAU,OACX,yBAAKA,UAAU,+BACX,2BAAOA,UAAU,mBAAmB9T,KAAK,WAAWtC,GAAG,WAAY+Y,SAAU9Q,KAAKgX,sBAClF,2BAAO7I,UAAU,oBAAjB,iBAGR,yBAAKA,UAAU,8BACX,4BAAQA,UAAU,kBAAkBM,QAASzO,KAAK6W,oBAAlD,qBAEJ,yBAAK1I,UAAU,OACX,yBAAKA,UAAU,2BACX,4BAAQA,UAAU,kBAAkBM,QAAS,KAAOzO,KAAKqX,YAAYrX,KAAKuJ,MAAMqN,SAAhF,yBAIZ,uBAAGzI,UAAU,eAAb,yEACA,wBAAIA,UAAU,QAAd,kBAEEnO,KAAK0X,sBAAsB1X,KAAKuJ,MAAMqN,QAKnC,kBAAC,GAAD,CAAQ/K,MAAO7L,KAAK6L,QAI7B4L,mBACJ,OACG,2BAAOtJ,UAAU,uBACZ,+BACA,4BAAI,mCAAY,4BAAKnO,KAAKuJ,MAAMjO,OAAOyD,WACvC,4BAAI,qCAAc,4BAAKiB,KAAK6L,MAAMvQ,OAAOtD,MAAQgI,KAAK6L,MAAMvQ,OAAOM,OAASoE,KAAK6L,MAAMvQ,OAAOW,SAAW,KACzG,4BAAI,uCAAgB,4BAAK+D,KAAKuJ,MAAMjO,OAAO+K,WAM/CqR,sBAAsBd,GAE1B,IAAM/C,EAAa,GAMnB,OAJA+C,EAAMW,QAAQ9Y,IACNoV,EAAMtJ,KAAMvK,KAAK2X,iBAAiBlZ,MAItC,oCACKoV,GAKL8D,iBAAiBf,GAErB,OAAIA,GAASA,EAAMxb,OAAS,EAEpB,kBAAC,IAAMwc,SAAP,CAAgBnY,IAAKmX,EAAM,GAAG7e,GAAK,MACnC,yBAAKoW,UAAU,qBACX,yBAAKA,UAAU,iBACX,iDAAsB,0BAAMA,UAAU,WAAW5V,EAAcqe,EAAM,GAAGZ,WAAW,MAEvF,yBAAK7H,UAAU,iBACX,yBAAKA,UAAU,2BACX,4BAAQA,UAAU,uBAAuBM,QAAS,KAAOzO,KAAKqX,YAAY,CAACT,MAA3E,mBAKZ,2BAAOzI,UAAU,uBACb,+BACA,4BACI,qCACC,oCAED,qCAEFyI,EAAMva,IAAI,CAACwb,EAAGjQ,IACR,wBAAInI,IAAMoY,EAAE9f,IACR,4BAAM6P,EAAQ,GACd,4BAAMiQ,EAAEpB,SAAW,SAAW,UAE9B,4BAAMzW,KAAKuW,QAAWsB,EAAEvd,WAQzC,IAKA+b,UCtPf,MAAMyB,WAAoBlK,IAAMkH,UAAgD,eAAD,oBAC3EvL,MAAQ,CACJvE,WAAY,EACZ1J,OAAQ,IAAIwD,GAITmV,oBACH,IAAMlV,EAAWiB,KAAK6L,MAAMsI,MAAMC,OAAOrV,UAAY,EAErD8D,MAAM,kBAAD,OAAmB9D,GAAY2B,EAAW,MAAO,GAAI,KACzDkB,KAAKC,GAAYA,EAASgC,QAE1BjC,KAAKE,IACF9B,KAAK8W,SAAS7Q,YAAQjG,KAAKuJ,MAAO2B,IAC9BA,EAAW5P,OAASwG,EACpBoJ,EAAWlG,UAAY,OAG9BlB,MAAMC,IACH/D,KAAK8W,SAAS7Q,YAAQjG,KAAKuJ,MAAO2B,IAC9BA,EAAWlG,UAAY,OAKnC6I,SAGI,OACI,oCACI,kBAAC,GAAD,CAAQhC,MAAO7L,KAAK6L,QACpB,yBAAKsC,UAAU,OACX,yBAAKA,UAAU,sBACX,wBAAIA,UAAU,QAAd,yBAEJ,yBAAKA,UAAU,sBACX,yBAAKA,UAAU,2BACX,kBAAC,IAAD,CAAMA,UAAU,kBAAkByG,GAAE,WAApC,mBAGR,yBAAKzG,UAAU,aACX,4BAAQA,UAAU,uBAAuBM,QAAS,IAAMzO,KAAK+X,kBAA7D,sBACA,4BAAQ5J,UAAU,uBAAuBM,QAAS,IAAMzO,KAAKgY,YAAY,KAAMhY,KAAKuJ,MAAMjO,OAAOW,UAAjG,wBAGN+D,KAAKyX,mBACLzX,KAAKiY,qBAKnBR,mBACI,OAA0B,OAAtBzX,KAAKuJ,MAAMjO,aACW1C,IAAtBoH,KAAKuJ,MAAMjO,QACX0E,KAAKuJ,MAAMjO,aACoB1C,IAA/BoH,KAAKuJ,MAAMjO,OAAOyD,SAEd,oCACA,2BAAOoP,UAAU,uBACb,+BACA,4BAAI,mCAAY,4BAAKnO,KAAKuJ,MAAMjO,OAAOyD,WACvC,4BAAI,qCAAc,4BAAKiB,KAAKuJ,MAAMjO,OAAOW,aAO9C,QAGHgc,oBACJ,OACI,oCACA,4CACMjY,KAAKuJ,MAAMjO,OAAO8D,YAAY/C,IAAIwb,GAChC,kBAAC,IAAMD,SAAP,CAAgBnY,IAAKoY,EAAEK,cACvB,yBAAK/J,UAAU,sCACX,yBAAKA,UAAU,YACX,2BAAOA,UAAU,uBACb,+BACQ,4BAII,+CACA,yCAEJ,4BAII,4BAAM5V,EAAcsf,EAAEM,aAAa,IACnC,4BAAI,4BAAQhK,UAAU,uBAAuBM,QAAS,IAAMzO,KAAKgY,YAAYH,EAAEK,aAAclY,KAAKuJ,MAAMjO,OAAOW,UAA3G,OAAiI,4BAAQkS,UAAU,uBAAuBM,QAAS,IAAMzO,KAAKqX,YAAYQ,EAAEK,eAA3E,SAEzI,4BACI,wBAAI/C,QAAS,GAAb,WAMdnV,KAAKoY,sBAAsBP,KAGrC,gCAORO,sBAAsBP,GAC1B,OACI,yBAAK1J,UAAU,MAAM1O,IAAG,cAASoY,EAAEK,eAEjCL,EAAEQ,QAAQhc,IAAK8H,IACb,IAAM5H,EAAWyD,KAAKsY,YAAYnU,EAAEtE,YAC9B0Y,EAAevY,KAAKwY,gBAAgBjc,GAE1C,OACI,yBAAK4R,UAAU,iBAAiB1O,IAAK0E,EAAErE,UACnC,2BAAOqO,UAAU,sBAAsBoK,GAEnCvY,KAAKyY,cAActU,EAAG5H,OAUtCkc,cAActU,EAAsB5H,GACxC,OAAI4H,EAAExE,YAAcwE,EAAExE,WAAWvE,OAAS,EAC/B,4BAEC4E,KAAK0Y,mBAAmBvU,EAAG5H,IAG5B4H,EAAEvE,eAAiBuE,EAAEvE,cAAcxE,OAAS,EAC5C,4BAEC4E,KAAK2Y,gBAAgBxU,EAAG5H,IAK7B,2BAAI4H,EAAEpE,QAGTuY,YAAYzY,GAEhB,OAAOG,KAAKuJ,MAAMjO,OAAOa,UAAUqC,KAAMmL,GAAKA,EAAE9J,aAAeA,GAI3D2Y,gBAAgBjc,GAEpB,YAAoB3D,IAAb2D,EAAyBA,EAASU,WAAa,GAGlD2b,yBAAyBrc,GAE7B,MzBlL2B,YyBkLf,OAARA,QAAQ,IAARA,OAAA,EAAAA,EAAUtE,MACcsE,EAASmJ,WAAWrJ,IAAKoC,GAAMnF,EAAqBmF,EAAEsM,SAK3E,MAAcnS,IAAb2D,EAAyBjD,EAAqBiD,EAASU,YAAc,IAGzE+a,YAAYE,EAA6B5d,GAC7C,IAAMyE,EAAWiB,KAAKuJ,MAAMjO,OAAOyD,SAC7B8Z,EAAkBX,GAA8B,GACtDrV,MAAM,2BAAD,OAA4B9D,EAA5B,YAAwC8Z,GAAmBnY,EAAW,MAAO,GAAI,KACrFkB,KAAKC,GAAYA,EAASiX,QAC1BlX,KAAKkX,IACF,IAAIlY,EAAM8C,OAAOqV,IAAIC,gBAAgBF,GACjC3U,EAAI5J,SAASC,cAAc,KAC/B2J,EAAE8U,KAAOrY,EACTuD,EAAE+U,SAAWvf,EAAYW,EAAM,OAC/BC,SAASI,KAAKC,YAAYuJ,GAC1BA,EAAEtJ,QACFsJ,EAAEgV,WAKFpB,iBAEJ,IAAIT,EAAMhe,EAAqB0G,KAAKuJ,MAAMjO,OAAOW,SACjDqb,GAAO,QAGP,IAFA,IAAI8B,EAA2E,GAEtErS,EAAI,EAAGA,EAAI/G,KAAKuJ,MAAMjO,OAAO8D,YAAYhE,OAAQ2L,IAAK,CAC3D,IAAMsS,EAAIrZ,KAAKuJ,MAAMjO,OAAO8D,YAAY2H,GAExC,QAAUnO,IAANygB,EAAiB,CACjB/B,GAAOhe,EAAqB,oBAC5Bge,GAAO,IACPA,GAAOhe,EAAqB,gBAC5Bge,GAAO,IACPA,GAAOhe,EAAqB,kBAC5Bge,GAAO,IAEP,IAAK,IAAIgC,EAAW,EAAGA,EAAWD,EAAEhB,QAAQjd,OAAQke,IAAY,CAC5D,IAAM/c,EAAWyD,KAAKsY,YAAYe,EAAEhB,QAAQiB,GAAUzZ,YACtDyX,GAAOtX,KAAK4Y,yBAAyBrc,GAAUgd,KAAK,KACpDjC,GAAO,IAEP8B,EAAa7O,KAAO,CAAC1K,WAAYwZ,EAAEhB,QAAQiB,GAAUzZ,WAAYtD,SAASA,IAG9E+a,GAAO,KAEP,OAIRtX,KAAKuJ,MAAMjO,OAAO8D,YAAYmY,QAAS,CAAC8B,EAAGtS,KAEvC,QAAUnO,IAANygB,EAAiB,CACjB/B,GAAQvQ,EAAE,EACVuQ,GAAO,IACP,IAAM9e,EAAO,IAAIE,KAAK2gB,EAAElB,aACpBqB,EAAc,UAAMhhB,EAAKO,cAAX,YAA4BP,EAAKM,WAAW,EAA5C,YAAiDN,EAAKS,WACxEqe,GAAOhe,EAAqBkgB,GAC5BlC,GAAO,IAEP,IAAImC,EAAc,UAAMjhB,EAAKU,WAAX,YAAyBV,EAAKW,cAChDme,GAAOhe,EAAqBmgB,GAC5BnC,GAAO,IAEP8B,EAAa7B,QAAS5N,IAClB,IAAM+P,EAAML,EAAEhB,QAAQ7Z,KAAM2F,GAAKA,EAAEtE,aAAe8J,EAAE9J,iBAExCjH,IAAR8gB,IAEApC,GAAOtX,KAAK2Z,sBAAsBD,EAAK/P,EAAEpN,WAI7C+a,GAAO,MAGXA,GAAO,QAIfvd,EAAYud,EAAKtX,KAAKuJ,MAAMjO,OAAOW,SAG/Bob,YAAYa,GAEhB,IAAM0B,EAAa5Z,KAAKuJ,MAAMjO,OAAO8D,YAAYZ,KAAMqL,GAAKA,EAAEqO,eAAiBA,GAE/E,QAAmBtf,IAAfghB,EAA0B,CAC1B,IAAItC,EAAMhe,EAAqB0G,KAAKuJ,MAAMjO,OAAOW,SACjDqb,GAAO,QACPA,GAAOhe,EAAqB,iBAAmBsgB,EAAWzB,aAO1Db,GAAO,QAEPsC,EAAWvB,QAAQd,QAAUpT,IACzB,IAAM5H,EAAWyD,KAAKsY,YAAYnU,EAAEtE,YAC9B0Y,EAAevY,KAAKwY,gBAAgBjc,GAC1C+a,GAAOhe,EAAqBif,GAC5BjB,GAAO,KACPA,GAAOhe,EAAsB0G,KAAK6Z,aAAa1V,EAAG5H,IAClD+a,GAAO,UAGXvd,EAAYud,EAAKtX,KAAKuJ,MAAMjO,OAAOW,UAK3C4d,aAAaH,EAAyBnd,GAElC,cAAQA,QAAR,IAAQA,OAAR,EAAQA,EAAUtE,MACd,IzB7SuB,SyB8SnB,OAAO+H,KAAK8Z,qBAAqBJ,EAAKnd,GAAUgd,KAAK,MACzD,IzBhToB,MyBiThB,OAAOvZ,KAAK+Z,kBAAkBL,EAAKnd,GAAUgd,KAAK,MACtD,QACI,OAAOG,EAAI3Z,QAIvB4Z,sBAAsBD,EAAyBnd,GAE3C,cAAQA,QAAR,IAAQA,OAAR,EAAQA,EAAUtE,MACd,IzBzTuB,SyB0TnB,OAAO+H,KAAKga,8BAA8BN,EAAKnd,GAAUF,IAAKoC,GAAMnF,EAAqBmF,IAAI8a,KAAK,KACtG,IzB5ToB,MyB6ThB,OAAOjgB,EAAqB0G,KAAK+Z,kBAAkBL,EAAKnd,GAAUgd,KAAK,OAC3E,QACI,OAAOjgB,EAAqBogB,EAAI3Z,SAI5C4Y,gBAAgBe,EAAyBnd,GACrC,OACI,2BAAO4R,UAAU,uCACb,+BACI,4BACI,wCACA,wCAGR,+BAEQnO,KAAK8Z,qBAAqBJ,EAAKnd,GAAUF,IAAK,CAAC0K,EAAGa,KAC9C,IAAMqS,EAAQlT,EAAE6I,MzB5UI,MyB6UpB,OAAO,wBAAInQ,IAAKmI,GACZ,4BAAMqS,EAAM,IACZ,4BAAMA,EAAM,SASxCH,qBAAqBJ,EAAyBnd,GAc1C,OAZkBmd,EAAI9Z,cAAcvD,IAAK0K,IACrC,GAAIxK,EAAU,CACV,IAAM2d,EAAM3d,EAASmJ,WAAWlH,KAAM1B,GAAKA,EAAE8N,WAAa7D,EAAExG,aACtD8Q,EAAM9U,EAASoJ,cAAcnH,KAAM1B,GAAKA,EAAE8N,WAAa7D,EAAEvG,gBAE/D,GAAI0Z,GAAO7I,EACX,MAAM,GAAN,OAAU6I,EAAInP,QAAd,OzBhWgC,MyBgWhC,OAA0DsG,EAAItG,QAGlE,MAAO,KAMfiP,8BAA8BN,EAAyBnd,GAEnD,IAAMkX,EAAS,OAAGlX,QAAH,IAAGA,OAAH,EAAGA,EAAUmJ,WAAWrJ,IAAK6d,IAExC,IAAIC,EAAUT,EAAI9Z,cAAcpB,KAAKlC,GAAKA,EAAEiE,cAAgB2Z,EAAItP,UAEhE,QAAehS,GAAXuhB,EAAsB,CACtB,IAAM9I,EAAM9U,EAASoJ,cAAcnH,KAAM1B,GAAKA,EAAE8N,YAAF,OAAeuP,QAAf,IAAeA,OAAf,EAAeA,EAAS3Z,iBAEtE,GAAI0Z,GAAO7I,EACX,MAAM,GAAN,OAAUA,EAAItG,QAGlB,MAAO,KAIX,YAAkBnS,IAAd6a,EACOA,EAEJ,GAGXiF,mBAAmBgB,EAAyBnd,GACxC,OAAOyD,KAAK+Z,kBAAkBL,EAAKnd,GAAUF,IAAK,CAAC0K,EAAGa,IAC3C,wBAAInI,IAAG,UAAKia,EAAI5Z,SAAT,YAAqB8H,IAAUb,IAIrDgT,kBAAkBL,EAAyBnd,GAavC,OAXemd,EAAI/Z,WAAWtD,IAAK0K,IAC/B,IAAIqT,EAAQ,GAER7d,SAEU3D,IADA2D,EAASM,WAAW2B,KAAM1B,GAAKA,EAAEoD,cAAgB6G,EAAE7G,aAAepD,EAAEwN,WAE1E8P,EAAQ,YAEhB,MAAM,GAAN,OAAUA,GAAV,OAAkBrT,EAAE5G,aAOjB2X,UCvZf,MAAMuC,WAAezM,gBAEVC,SACH,OACI,gBAAC,WAAD,KACM7N,KAAK0O,oBAKXA,mBAEJ,OACI,gCACA,uBAAKP,UAAU,yBACX,uBAAKA,UAAU,OACX,uBAAKA,UAAU,YACX,uBAAKA,UAAU,eAAeQ,KAAK,gBACnC,uBAAKR,UAAU,0BAA0BQ,KAAK,cAAcL,MAAO,CAAEM,OAAS5O,KAAK6L,MAAM1I,KAAO,GAAK,EAAI,IAAO,UAK5H,uBAAKgL,UAAU,OACX,uBAAKA,UAAU,yBACX,sBAAIA,UAAU,mCAAmCpW,GAAG,iBAE/CiI,KAAKsa,UAAU,QAASniB,EAAgBkT,MAAOlT,EAAgBkT,OAC/DrL,KAAKsa,UAAU,QAASniB,EAAgBoiB,MAAOpiB,EAAgBoiB,OAC/Dva,KAAKsa,UAAU,WAAYniB,EAAgBqT,SAAUrT,EAAgBqT,UAErExL,KAAKsa,UAAU,UAAWniB,EAAgBqiB,QAASriB,EAAgBqT,UACnExL,KAAKsa,UAAU,UAAWniB,EAAgBsiB,QAAStiB,EAAgBqiB,SACnExa,KAAKsa,UAAU,UAAWniB,EAAgBuiB,QAASviB,EAAgBsiB,SACnEza,KAAKsa,UAAU,OAAQniB,EAAgBiT,QAASjT,EAAgBuiB,aAQrFJ,UAAUK,EAAkBC,EAAiBC,GAEzC,OACI,sBAAI1M,UAAS,8BAAyBnO,KAAK6L,MAAM1I,KAAO0X,EAAe,oBAAsB,GAAhF,YAAsF7a,KAAK6L,MAAM1I,OAASyX,EAAU,SAAW,KACxI,yBACI,wBAAMnM,QAAS,IAAMzO,KAAK6L,MAAMsD,aAAayL,IAAWD,MAO7DN,UCrDf,MAAMhP,WAAcuC,YAA4C,eAAD,oBAC3DrE,MAAQ,CACJuR,mBAAmB,EACnBC,oBAAqB,IAHkC,KAM3D9K,aAAgBxR,IACZA,EAAE0U,OAAOzT,MAAQjB,EAAE0U,OAAOzT,MAE1BM,KAAK6L,MAAMzE,wBAAwBhP,EAAW4iB,OAAQvc,EAAE0U,OAAOnb,KAAMyG,EAAE0U,OAAOzT,OAAO,EAAO,EAAG,IAAIhH,OAT5C,KAY3DqX,qBAAwBtR,IACpBA,EAAE0U,OAAOzT,MAAQjB,EAAE0U,OAAOzT,MAE1BM,KAAK6L,MAAMzE,wBAAwBhP,EAAW4iB,OAAQvc,EAAE0U,OAAOnb,KAAMyG,EAAE0U,OAAOzT,OAAO,EAAO,EAAG,IAAIhH,OAf5C,KAkB3DuiB,oBAAsB,KAClBjb,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CAA8BuR,mBAAmB,MACW,IAAxD/f,GAAe,EAAMiF,KAAK6L,MAAMvQ,OAAOtD,KAAM,GAAI,KACU,IAA3D+C,GAAe,EAAMiF,KAAK6L,MAAMvQ,OAAOW,QAAS,GAAI,KACO,IAA3DlB,GAAe,EAAMiF,KAAK6L,MAAMvQ,OAAOO,QAAS,GAAI,GAOxDmE,KAAK6L,MAAM3I,kBAAatK,GALhBoH,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CAA8BwR,oBAAsB,gDAQhElN,SACI,OACI,gBAAC,WAAD,KACI,uBAAKM,UAAU,WACX,uBAAKA,UAAU,sBACX,yBAAOA,UAAU,sBAAjB,iBAAoD,wBAAMA,UAAU,eAAhB,UACpD,yBAAO9T,KAAK,OACRqF,MAAOM,KAAK6L,MAAMvQ,OAAOtD,KACzB8Y,SAAU9Q,KAAKiQ,aACfjY,KAAK,OACLmW,UAAU,eACV0C,UAAQ,EACRpU,YAAY,sCACd1B,EAAeiF,KAAKuJ,MAAMuR,kBAAmB9a,KAAK6L,MAAMvQ,OAAOtD,KAAM,GAAI,IAAM,uBAAKmW,UAAU,sCAAf,oBAGzF,uBAAKA,UAAU,gBACX,uBAAKA,UAAU,sBACX,yBAAOA,UAAU,sBAAjB,0BAA6D,wBAAMA,UAAU,eAAhB,UAC7D,yBAAO9T,KAAK,OACR8T,UAAU,eACVzO,MAAOM,KAAK6L,MAAMvQ,OAAOW,QACzB6U,SAAU9Q,KAAKiQ,aACfjY,KAAK,UACLuZ,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD8H,UAAQ,EACRpU,YAAY,+CACd1B,EAAeiF,KAAKuJ,MAAMuR,kBAAmB9a,KAAK6L,MAAMvQ,OAAOW,QAAS,GAAI,IAAM,uBAAKkS,UAAU,sCAAf,oBAG5F,uBAAKA,UAAU,WACX,uBAAKA,UAAU,sBACX,yBAAOA,UAAU,sBAAjB,yBAA4D,wBAAMA,UAAU,eAAhB,UAC5D,yBAAO9T,KAAK,OACR8T,UAAU,eACVzO,MAAOM,KAAK6L,MAAMvQ,OAAOO,QACzBiV,SAAU9Q,KAAKiQ,aACfjY,KAAK,UACLuZ,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD8H,UAAQ,EACRpU,YAAY,8CACd1B,EAAeiF,KAAKuJ,MAAMuR,kBAAmB9a,KAAK6L,MAAMvQ,OAAOO,QAAS,GAAI,IAAM,uBAAKsS,UAAU,sCAAf,oBAG5F,uBAAKA,UAAU,gBACX,uBAAKA,UAAU,aACX,yBAAOA,UAAU,sBAAjB,sBADJ,OAEU,qBAAG8K,KAAK,WAAW9F,OAAO,UAA1B,QACN,4BAAUhF,UAAU,eAChBzO,MAAOM,KAAK6L,MAAMvQ,OAAOY,aACzB4U,SAAU9Q,KAAK+P,qBACf/X,KAAK,eACLuZ,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD8H,UAAQ,EACRM,KAAM,GACN1U,YAAY,wCAGxB,uBAAK0R,UAAU,WACX,uBAAKA,UAAU,aACX,yBAAOA,UAAU,sBAAjB,qBACA,4BAAUA,UAAU,eAChBzO,MAAOM,KAAK6L,MAAMvQ,OAAOS,aACzB+U,SAAU9Q,KAAK+P,qBACf/X,KAAK,eACLuZ,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD8H,UAAQ,EACRM,KAAM,GACN1U,YAAY,wCAIxB,uBAAK0R,UAAU,WACX,uBAAKA,UAAU,aACX,uBAAKA,UAAU,sCAAsCnO,KAAKuJ,MAAMwR,uBAIxE,uBAAK5M,UAAU,kBACX,0BAAQA,UAAU,kBAAkBM,QAAS,IAAMzO,KAAKib,uBAAxD,eAQLjM,mBACVzF,GAA4BA,EAAMzD,kBACnCoV,EAFWlM,CAGb3D,IC5HF,MAAMoP,WAAgB7M,YAAoC,eAAD,oBAErDmC,qBAAwBtR,IACpBA,EAAE0U,OAAOzT,MAAQjB,EAAE0U,OAAOzT,MAE1BM,KAAK6L,MAAMzE,wBAAwBhP,EAAW4iB,OAAQvc,EAAE0U,OAAOnb,KAAMyG,EAAE0U,OAAOzT,OAAO,EAAO,EAAG,IAAIhH,OAGvGmV,SACI,OACI,gBAAC,WAAD,KACI,uBAAKM,UAAU,WACX,uBAAKA,UAAU,aACX,yBAAOA,UAAU,sBAAjB,sBAAyD,wBAAMA,UAAU,eAAhB,UACzD,4BAAUA,UAAU,eAChBzO,MAAOM,KAAK6L,MAAMvQ,OAAOU,WACzB8U,SAAU9Q,KAAK+P,qBACf/X,KAAK,aACLuZ,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD8H,UAAQ,EACRM,KAAM,MAGlB,uBAAKhD,UAAU,WACX,uBAAKA,UAAU,aACX,yBAAOA,UAAU,sBAAjB,qBAAwD,wBAAMA,UAAU,eAAhB,UACxD,4BAAUA,UAAU,eAChBzO,MAAOM,KAAK6L,MAAMvQ,OAAOK,WACzBmV,SAAU9Q,KAAK+P,qBACf/X,KAAK,aACLuZ,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD8H,UAAQ,EACRM,KAAM,MAIlB,uBAAKhD,UAAU,kBACX,0BAAQA,UAAU,kBAAkBM,QAAS,IAAMzO,KAAK6L,MAAM3I,aAAalD,KAAK6L,MAAM1I,KAAM,IAA5F,YACA,0BAAQgL,UAAU,kBAAkBM,QAAS,IAAMzO,KAAK6L,MAAM3I,kBAAatK,IAA3E,eAOLoW,mBACVzF,GAA4BA,EAAMzD,kBACnCoV,EAFWlM,CAGbyL,ICvDK,MAAMU,GAAgB,cAAD,KACjBjb,aAAuB,EADN,KAEjBnD,OAAiB,GAFA,KAGjBK,SAAmB,GAHF,KAIjBJ,SAAmB,GAJF,KAKjBoe,SAAmB,EALF,KAMjB9Q,SAAmB,GAGvB,MAAM+Q,GAAsB,cAAD,KAC1BzQ,UAAoB,EADM,KAE1BrR,KAAe,GAFW,KAG1BwR,OAAiB,GAHS,KAI1BC,OAAiB,GAJS,KAK1BoQ,SAAmB,GCM3B,MAAME,WAAY1N,YAadpO,YAAYqM,GACR0P,MAAM1P,GADc,KAZhB2P,qBAYgB,OAVxBjS,MAAQ,CACJuR,mBAAmB,EACnBC,oBAAqB,GACrBU,eAAgB,EAChBC,gBAAiB,EACjBC,WAAY,IAAIR,GAChBS,eAAgB,GAChBC,cAAe,IAGK,KAuBxBC,yBAA4Brd,IAExBuB,KAAK6L,MAAMzE,wBAAwBhP,EAAWoT,SAAU/M,EAAE0U,OAAOnb,KAAM,IAAI,GAAQyG,EAAE0U,OAAOzT,MAAO,IAAIhH,OAzBnF,KA4BxBqjB,0BAA6Btd,IACzBA,EAAE0U,OAAOzT,MAAQjB,EAAE0U,OAAOzT,MAE1B,IAAI3C,EAASiD,KAAKuJ,MAAMoS,WACpBK,EAAQhc,KAAKuJ,MAAMqS,eACnBK,EAAQjc,KAAKuJ,MAAMsS,cAED,iBAAlBpd,EAAE0U,OAAOnb,MACT+E,EAAOC,SAAWyB,EAAE0U,OAAOzT,MAC3Buc,EAAQxd,EAAE0U,OAAOzT,QAEjB3C,EAAOK,SAAWqB,EAAE0U,OAAOzT,MAC3Bsc,EAAQvd,EAAE0U,OAAOzT,OAGrBM,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CACIoS,WAAY5e,EACZ6e,eAAgBI,EAChBH,cAAeI,MA9CC,KAkDxBC,8BAAiCzd,IAC7BA,EAAE0U,OAAOzT,MAAQjB,EAAE0U,OAAOzT,MAE1B,IAAI3C,EAASiD,KAAKuJ,MAAMoS,WAExB5e,EAAOuN,QAAU7L,EAAE0U,OAAOE,QAE1BrT,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CAA8BoS,WAAY5e,MAzDtB,KA4DxBof,mBAAqB,KAEjB,IAAMpf,EAAM,eAAOiD,KAAKuJ,MAAMoS,YAE9B,GAA0C,KAAtC5e,EAAOK,SAAS3D,QAAQ,KAAM,KACQ,KAAtCsD,EAAOC,SAASvD,QAAQ,KAAM,IAAY,CAE1C,IAAIgP,EAAU,IAAIzI,KAAKoc,iBAEnBC,EAAuBrc,KAAKsc,qBAE5Btc,KAAKuJ,MAAMmS,eAAiB,EAE5BjT,EAAQ8B,KAAK8R,EAAqB,IAIlC5T,EAAQzI,KAAKuJ,MAAMmS,gBAAkBW,EAAqB,GAI9DA,EAAqBE,QAGrB9T,EAAUA,EAAQ+T,OAAOH,GAGzBrc,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CACImS,gBAAiB,EACjBC,WAAY,IAAIR,MAEpBnb,KAAKwI,gBAAgBC,GAGW,MAAhCzI,KAAKwb,gBAAgBiB,SACrBzc,KAAKwb,gBAAgBiB,QAAQC,SA/Fb,KAmGxBC,mBAAsB/U,IAElB,IAAI7K,EAAM,eAAOiD,KAAKoc,gBAAgBxU,IAEtC5H,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CACoBoS,WAAY5e,EACZ2e,eAAgB9T,EAChBgU,eAAgB7e,EAAOK,SACvBye,cAAe9e,EAAOC,YAGN,MAAhCgD,KAAKwb,gBAAgBiB,SACrBzc,KAAKwb,gBAAgBiB,QAAQC,SA/Gb,KAmHxBE,gBAAmBhV,IAEf5H,KAAK8W,SACD7Q,YAASjG,KAAKuJ,MAAO2B,IAEbtD,IAAU5H,KAAKuJ,MAAMmS,gBAEpBxQ,EAAWwQ,gBAAkB,EAC9BxQ,EAAWyQ,WAAa,IAAIR,IAErBvT,EAAQ5H,KAAKuJ,MAAMmS,iBAE1BxQ,EAAWwQ,eAAiB1b,KAAKuJ,MAAMmS,eAAgB,MAM/D,IAAMjT,EAAU,IAAIzI,KAAKoc,iBAEzB3T,EAAQ0B,OAAOvC,EAAO,GAEtB5H,KAAKwI,gBAAgBC,IAzIL,KA4IxBoU,wBAA0B,CAACjV,EAAekV,KACtC,IAAMC,EAAU,IAAI/c,KAAKoc,iBAEzB,GAAKxU,EAAQ,GAAKA,EAAQmV,EAAQ3hB,OAAQ,GAC3B,IAAVwM,GAAekV,IAAczkB,EAAc2kB,MAC3CpV,EAAM,IAAMmV,EAAQ3hB,QAAU0hB,IAAczkB,EAAc4kB,GAAK,CAIhE,IAAIC,EAAuB,eAAOH,EAAQnV,IAEtCkV,IAAczkB,EAAc4kB,IAI5BF,EAAQnV,GAAR,eAAqBmV,EAAQnV,EAAQ,IACrCmV,EAAQnV,EAAO,GAAMsV,IAKrBH,EAAQnV,GAAR,eAAqBmV,EAAQnV,EAAQ,IACrCmV,EAAQnV,EAAQ,GAAKsV,GAGzBld,KAAK8W,SAAL,eACQ9W,KAAKuJ,MADb,CAEQoS,WAAY,IAAIR,GAChBO,gBAAiB,KAGzB1b,KAAKwI,gBAAgBuU,KAxKzB/c,KAAKwb,gBAAkB5N,cAGpBqG,oBACHjU,KAAKuT,qBAGFA,qBAET,GAAIvT,KAAK6L,MAAM5C,aAAapM,WAAY,CAEvC,IAEM4e,EAFQzb,KAAK6L,MAAM5C,aAAapM,WAAWiO,OAAO3G,GAAKA,EAAEmG,SAEnClP,OAExB4E,KAAKuJ,MAAMkS,gBAAkBA,GAChCzb,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CAA8BkS,cAAeA,MA6J7CjT,gBAAgBC,GAEZzI,KAAK6L,MAAMrD,gBACPvC,YAAQwC,EAASyC,IACb,IAAI,IAAInE,EAAG,EAAGA,EAAI0B,EAAQrN,OAAQ2L,IAC9BmE,EAAWnE,GAAGqU,SAAWrU,KAMzCqV,gBACI,OAAQpc,KAAK6L,MAAM5C,aAAapM,YAAc,GAGlDyf,qBACI,IAAIa,EAAQnd,KAAKuJ,MAAMqS,eAAehM,MAAM,MAC5CuN,EAAQA,EAAM9gB,IAAIoC,GAAKA,EAAEtD,QAAQ2P,OAAOxO,GAAW,KAANA,GAE7C,IAAI8gB,EAAQpd,KAAKuJ,MAAMsS,cAAcjM,MAAM,MAC3CwN,EAAQA,EAAM/gB,IAAIoC,GAAKA,EAAEtD,QAAQ2P,OAAOxO,GAAW,KAANA,GAI7C,IAFA,IAAI9C,EAA2B,GAEvBuN,EAAI,EAAGA,EAAIoW,EAAM/hB,QAAU2L,EAAIqW,EAAMhiB,OAAQ2L,IAAK,CACtD,IAAMsW,EAAM,IAAIlC,GAChBkC,EAAIjgB,SAAW+f,EAAMpW,GACrBsW,EAAIrgB,SAAWogB,EAAMrW,GACrBvN,EAAO+Q,KAAK8S,GAGhB,GAAI7jB,EAAO4B,OAAS,GAAK4E,KAAKuJ,MAAMoS,WAAWrR,QAAS,CACpD,IAAIgT,EAAa9jB,EAAO+jB,MACpBD,IACAA,EAAWhT,QAAUtK,KAAKuJ,MAAMoS,WAAWrR,QAE3C9Q,EAAO+Q,KAAK+S,IAIpB,OAAO9jB,EAGXqU,SACI,OACI,gCACI,uBAAKM,UAAU,gBACX,uBAAKA,UAAU,aACX,yBAAOA,UAAU,sBAAjB,sCACA,4BACInW,KAAK,kBACL0H,MAAOM,KAAKuJ,MAAMoS,WAAWve,SAC7B+Q,UAAU,eACVoD,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpDtM,YAAY,UACZqU,SAAU9Q,KAAK+b,0BACfyB,IAAKxd,KAAKwb,gBACV3K,UAAQ,MAGpB,uBAAK1C,UAAU,gBACX,uBAAKA,UAAU,aACX,4BACInW,KAAK,eACL0H,MAAOM,KAAKuJ,MAAMoS,WAAW3e,SAC7BmR,UAAU,eACVoD,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpDtM,YAAY,SACZqU,SAAU9Q,KAAK+b,0BACflL,UAAQ,MAGpB,uBAAK1C,UAAU,gBACX,uBAAKA,UAAU,sBACX,uBAAKA,UAAU,cACX,yBAAO9T,KAAK,WACR8T,UAAU,mBACVoD,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD/Q,KAAK,UACLD,GAAG,UACHsb,QAASrT,KAAKuJ,MAAMoS,WAAWrR,QAC/BwG,SAAU9Q,KAAKkc,gCAEnB,yBAAO/N,UAAU,mBAAmByD,QAAQ,WAA5C,6DAGR,uBAAKzD,UAAU,sBACf,0BACQA,UAAU,kBACVM,QAAS,IAAMzO,KAAKmc,qBACpB5K,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,yBAA2B/I,KAAKuJ,MAAMmS,gBAAiB,EAAI,SAAW,SAGtI,uBAAKvN,UAAU,WACX,yBAAOA,UAAU,uBACb,6BACI,0BACI,qCACA,oCACA,mCACA,sCAGR,6BACMnO,KAAKoc,gBAAgB/f,IAAI,CAACmV,EAAM5J,IACtB,sBAAInI,IAAKmI,GACb,0BAAK4J,EAAKpU,UACV,0BAAKoU,EAAKxU,UACV,0BAAKwU,EAAKlH,QAAU,MAAQ,MAC5B,0BACI,0BAAQ6D,UAAU,kBACdoD,SAAoB,IAAV3J,GAAe5H,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACnE0F,QAAS,IAAMzO,KAAK6c,wBAAwBjV,EAAOvP,EAAc4kB,KAFrE,MADJ,OAImB,0BACf9O,UAAU,kBACVoD,SAAU3J,IAAU5H,KAAKoc,gBAAgBhhB,OAAO,GAAK4E,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBAC3F0F,QAAS,IAAMzO,KAAK6c,wBAAwBjV,EAAOvP,EAAc2kB,OAHtD,QAJnB,OAQmB,0BACf7O,UAAU,kBAAkBM,QAAS,IAAMzO,KAAK2c,mBAAmB/U,GACnE2J,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,yBAFrC,QARnB,OAWmB,0BACfoF,UAAU,mCAAmCM,QAAS,IAAMzO,KAAK4c,gBAAgBhV,GACjF2J,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,yBAFrC,gBAWvC,uBAAKoF,UAAU,WACX,uBAAKA,UAAU,sBACX,yBAAOA,UAAU,sBAAjB,uBACA,0BAAQA,UAAU,cACd2C,SAAU9Q,KAAK8b,yBACfxK,aAActR,KAAK6L,MAAM5C,aAAaxD,aACtC8L,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD/Q,KAAK,gBACT,0BAAQyH,IAAI,KAAKC,MAAM,MAAvB,iBACKM,KAAKoc,gBAAgB/f,IAAI,CAACohB,EAAG1W,IACnB,0BAAQtH,IAAKsH,EAAE,EAAE,MAAOrH,MAAOqH,EAAE,GAAIA,EAAE,MAK1D,uBAAKoH,UAAU,sBACX,yBAAOA,UAAU,sBAAjB,uBACA,0BAAQA,UAAU,cACd2C,SAAU9Q,KAAK8b,yBACfxK,aAActR,KAAK6L,MAAM5C,aAAazD,aACtC+L,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD/Q,KAAK,gBACL,0BAAQyH,IAAI,KAAKC,MAAM,MAAvB,iBACCM,KAAKoc,gBAAgB/f,IAAI,CAACohB,EAAG1W,IACnB,0BAAQtH,IAAKsH,EAAE,EAAE,MAAOrH,MAAOqH,EAAE,GAAIA,EAAE,SAa/DiI,mBACVzF,GAA4BA,EAAMzD,kBACnCoV,EAFWlM,CAGbsM,IC9VF,MAAMoC,WAAe9P,YAwBjBpO,YAAYqM,GACR0P,MAAM1P,GADc,KAvBhB2P,qBAuBgB,OArBxBmC,QAAkC,GAqBV,KApBxBC,WAAqC,GAoBb,KAnBxBrU,MAAQ,CACJuR,mBAAmB,EACnBC,oBAAqB,GAErB8C,gBAAiB,EACjBC,eAAgB9d,KAAK2d,QAErBI,mBAAoB,EACpBC,kBAAmBhe,KAAK4d,WAExBK,eAAgB,GAChBC,cAAe,GAEfC,kBAAmB,GACnBC,iBAAkB,GAElBvK,MAAO,CAAC,SAAU,SAAU,SAAU,SAAU,SAAU,WAGtC,KA0BxBwK,0BAA4B,CAAC5f,EAAwCmJ,EAAe/C,KAChFpG,EAAE0U,OAAOzT,MAAQjB,EAAE0U,OAAOzT,MAE1B,IAAI6J,EACAtD,YAAQjG,KAAKuJ,MAAO2B,IAEC,OAAbrG,EACAqG,EAAW4S,eAAelW,GAAOoD,OAASvM,EAAE0U,OAAOzT,MAEnDwL,EAAW4S,eAAelW,GAAOmD,OAAStM,EAAE0U,OAAOzT,MAGvDwL,EAAW4S,eAAiB5S,EAAW4S,eAAehT,OAAO,CAAC0G,EAAM8M,IAE9DvjB,GAAe,EAAMyW,EAAKzG,OAAQ,GAAI,IACxChQ,GAAe,EAAMyW,EAAKxG,OAAQ,GAAI,IACrCsT,EAAK,IAAMpT,EAAW4S,eAAe1iB,SAIgE,IAAtGL,GAAe,EAAMmQ,EAAW4S,eAAe5S,EAAW4S,eAAe1iB,OAAO,GAAG2P,OAAQ,GAAI,KACO,IAAtGhQ,GAAe,EAAMmQ,EAAW4S,eAAe5S,EAAW4S,eAAe1iB,OAAO,GAAG4P,OAAQ,GAAI,IAC3FE,EAAW4S,eAAevT,KAAM,IAAI8Q,MAIpDrb,KAAK8W,SAAUvN,EAAQvJ,KAAK0I,qBApDR,KAuDxB6V,6BAA+B,CAAC9f,EAAwCmJ,EAAe/C,KACnFpG,EAAE0U,OAAOzT,MAAQjB,EAAE0U,OAAOzT,MAE1B,IAAI6J,EACAtD,YAAQjG,KAAKuJ,MAAO2B,IAEC,OAAbrG,EACAqG,EAAW8S,kBAAkBpW,GAAOoD,OAASvM,EAAE0U,OAAOzT,MAEtDwL,EAAW8S,kBAAkBpW,GAAOmD,OAAStM,EAAE0U,OAAOzT,MAG1DwL,EAAW8S,kBAAoB9S,EAAW8S,kBAAkBlT,OAAO,CAAC0G,EAAM8M,IAEpEvjB,GAAe,EAAMyW,EAAKzG,OAAQ,GAAI,IACxChQ,GAAe,EAAMyW,EAAKxG,OAAQ,GAAI,IACrCsT,EAAK,IAAMpT,EAAW8S,kBAAkB5iB,SAKmE,IAA5GL,GAAe,EAAMmQ,EAAW8S,kBAAkB9S,EAAW8S,kBAAkB5iB,OAAO,GAAG2P,OAAQ,GAAI,KACO,IAA5GhQ,GAAe,EAAMmQ,EAAW8S,kBAAkB9S,EAAW8S,kBAAkB5iB,OAAO,GAAG4P,OAAQ,GAAI,IAEjGE,EAAW8S,kBAAkBzT,KAAM,IAAI8Q,MAKvDrb,KAAK8W,SAAUvN,EAAOvJ,KAAK0I,qBApFP,KAuFhB8V,gBAAkB,EAAEvW,WAAUC,eAClC,GAAID,EAAW,IAAMjI,KAAKuJ,MAAMyU,kBAAkB5iB,QAC9C8M,EAAW,IAAMlI,KAAKuJ,MAAMyU,kBAAkB5iB,OADlD,CAIA,IAAI4iB,EAAoB/X,YAAQyF,YAAU1L,KAAKuJ,MAAMyU,kBAAmB/V,EAAUC,GAAWuW,IACzFA,EAAGlH,QAAQ,CAAC9Y,EAAIsI,KACZ0X,EAAG1X,GAAGqU,SAAWrU,MAKzB/G,KAAK8W,SAAU,CAAEkH,kBAAmBA,GAAqBhe,KAAK0I,sBAnG1C,KAsGhBgW,aAAe,EAAEzW,WAAUC,eAC/B,GAAID,EAAW,IAAMjI,KAAKuJ,MAAMuU,eAAe1iB,QAC3C8M,EAAW,IAAMlI,KAAKuJ,MAAMuU,eAAe1iB,OAD/C,CAIA,IAAI0iB,EAAiB7X,YAAQyF,YAAU1L,KAAKuJ,MAAMuU,eAAgB7V,EAAUC,GAAWuW,IACnFA,EAAGlH,QAAQ,CAAC9Y,EAAEsI,KACV0X,EAAG1X,GAAGqU,SAAWrU,MAIzB/G,KAAK8W,SAAU,CAAEgH,eAAgBA,GAAkB9d,KAAK0I,sBA9GxD1I,KAAKwb,gBAAkB5N,cAGpBqG,oBAEHjU,KAAK8W,SACD7Q,YAAQjG,KAAKuJ,MAAO2B,IAEZlL,KAAK6L,MAAM5C,aAAavD,aACxBwF,EAAW4S,eAAiB,IAAI9d,KAAK6L,MAAM5C,aAAavD,aAExD1F,KAAK6L,MAAM5C,aAAatD,gBACxBuF,EAAW8S,kBAAoB,IAAIhe,KAAK6L,MAAM5C,aAAatD,gBAE/D,IAAMuU,EAAM,IAAImB,GAChBnQ,EAAW4S,eAAevT,KAAK2P,GAE/B,IAAM7I,EAAM,IAAIgK,GAChBnQ,EAAW8S,kBAAkBzT,KAAK8G,MA+F9C3I,qBAEI,IAAIiW,EAAK1Y,YAAQjG,KAAKuJ,MAAMuU,eAAgBW,IACxCA,EAAGlB,QAGHqB,EAAK3Y,YAAQjG,KAAKuJ,MAAMyU,kBAAmBS,IAC3CA,EAAGlB,QAGPvd,KAAK6L,MAAMnD,mBAAmBiW,EAAIC,GAGtC/Q,SACI,OACI,gBAAC,WAAD,KAEQ7N,KAAK6e,qBAOrBA,oBACI,OACI,gCACI,uBAAK1Q,UAAU,gBACX,uBAAKA,UAAU,YACX,yBAAOA,UAAU,sBAAjB,cACA,gBAAC2Q,GAAD,CAAcC,SAAS,IAAIxN,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBAAyBnN,MAAM,WAAW6D,IAAI,MAAMoU,MAAO7T,KAAKuJ,MAAMuU,eAAgBkB,IAAKhf,KAAKqe,0BAA2BY,UAAWjf,KAAK0e,gBAE9N,uBAAKvQ,UAAU,YACX,yBAAOA,UAAU,sBAAjB,YACA,gBAAC2Q,GAAD,CAAcC,SAAS,IAAIxN,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBAAyBnN,MAAM,SAAS6D,IAAI,SAASoU,MAAO7T,KAAKuJ,MAAMyU,kBAAmBgB,IAAKhf,KAAKue,6BAA8BU,UAAWjf,KAAKwe,sBAQzP,IAAMU,GAAeC,YAAgB,EAChCvjB,QAAO8D,QAAOsf,MAAKtM,MAAK0M,cAAa7N,cAGtC,uBAAKpD,UAAU,YACX,uBAAKA,UAAU,aACX,uBAAKA,UAAU,eACX,wBAAMA,UAAU,+BAAhB,MACA,yBACIzO,MAAQA,EAAMqL,OACdoD,UAAU,eACVoD,SAAUA,EACV9U,YACK2iB,IAAgB1M,EAAM,EAAvB,cACS9W,EADT,cAEE,UAENkV,SAAWrS,GAAMugB,EAAIvgB,EAAGiU,EAAK,MAC7B7B,UAAQ,MAKpB,uBAAK1C,UAAU,aACX,uBAAKA,UAAU,eACX,wBAAMA,UAAU,+BAAhB,MACA,yBACIzO,MAAQA,EAAMsL,OACdmD,UAAU,eACVoD,SAAUA,EACV9U,YACK2iB,IAAgB1M,EAAM,EAAvB,cACS9W,EADT,aAEE,SAENkV,SAAWrS,GAAMugB,EAAIvgB,EAAGiU,EAAK,MAC7B7B,UAAQ,QAOpBiO,GAAeO,YAAkB,EAAEzjB,QAAO6D,MAAKoU,QAAOmL,MAAKzN,cAI7D,uBAAKpD,UAAU,aAET0F,EAAMxX,IAAI,CAACqD,EAAOkI,EAAO0X,IACrB,gBAACJ,GAAD,CAAczf,IAAG,UAAKA,EAAL,YAAYmI,GAC7BA,MAAOA,EACPhM,MAAOA,EACP8D,MAAOA,EACPsf,IAAKA,EACLtM,IAAK9K,EACLwX,YAAaE,EAAMlkB,OACnBmW,SAAUA,OAQXvC,eACVzF,GAA4BA,EAAMzD,kBACnCoV,EAFWlM,CAGb0O,ICzQF,MAAM6B,WAAoB3R,YAOtBpO,YAAYqM,GACR0P,MAAM1P,GADc,KALxBtC,MAAQ,CACJuR,mBAAmB,EACnBC,oBAAqB,IAGD,KAKxByE,mBAAsB/gB,IAClBA,EAAE0U,OAAOzT,MAAQjB,EAAE0U,OAAOzT,MAE1BM,KAAK6L,MAAMzE,wBAAwBhP,EAAWoT,SAAU/M,EAAE0U,OAAOnb,KAAM,IAAI,GAAQyG,EAAE0U,OAAOzT,MAAO,IAAIhH,OARnF,KAWxB+mB,kBAAqBhhB,IACjBA,EAAE0U,OAAOzT,MAAQjB,EAAE0U,OAAOzT,MAE1BM,KAAK6L,MAAMzE,wBAAwBhP,EAAWoT,SAAU/M,EAAE0U,OAAOnb,KAAMyG,EAAE0U,OAAOzT,OAAO,EAAO,EAAG,IAAIhH,OAdjF,KAiBxBqX,qBAAwBtR,IACpBA,EAAE0U,OAAOzT,MAAQjB,EAAE0U,OAAOzT,MAE1BM,KAAK6L,MAAMzE,wBAAwBhP,EAAWoT,SAAU/M,EAAE0U,OAAOnb,KAAMyG,EAAE0U,OAAOzT,OAAO,EAAO,EAAG,IAAIhH,OApBjF,KAuBxBojB,yBAA4Brd,IAExBuB,KAAK6L,MAAMzE,wBAAwBhP,EAAWoT,SAAU/M,EAAE0U,OAAOnb,KAAM,IAAI,GAAQyG,EAAE0U,OAAOzT,MAAO,IAAIhH,OAzBnF,KA4BxBgnB,mBAAsBjhB,IAClB,IAAI6G,GAAc,EAEd7G,EAAE0U,OAAOzT,QACT4F,GAAc,GAElBtF,KAAK6L,MAAMzE,wBAAwBhP,EAAWoT,SAAU/M,EAAE0U,OAAOnb,KAAM,GAAIsN,EAAa,EAAG,IAAI5M,OAlC3E,KAqCxBinB,kBAAoB,KACZ3f,KAAK6L,MAAMvQ,OAAOa,UAAUf,OAAS,EACrC4E,KAAK6L,MAAM3I,kBAAatK,GAExBoH,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CAA8BwR,oBAAsB,uCAzCpC,KA4CxB6E,gBAAkB,KACA5f,KAAK6L,MAAM5C,aAAapM,WAAWiO,OAAO3G,GAAKA,EAAEmG,SACrDlP,OAAS,EACf4E,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CAA8BuR,mBAAmB,EAAMC,oBAAsB,uChChEzD,QgCqEpB/a,KAAK6L,MAAM5C,aAAahR,MAA2E,IAA9C+H,KAAK6L,MAAM5C,aAAapM,WAAWzB,QAMpB,IAApEL,GAAe,EAAMiF,KAAK6L,MAAM5C,aAAahM,WAAY,GAAI,KACO,IAApElC,GAAe,EAAMiF,KAAK6L,MAAM5C,aAAazM,WAAY,GAAI,GhC3EtC,WgCmFvBwD,KAAK6L,MAAM5C,aAAahR,MAC8B,KAArD+H,KAAK6L,MAAM5C,aAAavD,YAAc,IAAItK,QACc,KAAxD4E,KAAK6L,MAAM5C,aAAatD,eAAiB,IAAIvK,QAOlD4E,KAAK6L,MAAM/D,iBAAgB,GAC3B9H,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CACIuR,mBAAmB,EACnBC,oBAAsB,OARtB/a,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CAA8BuR,mBAAmB,EAAMC,oBAAsB,6CAV7E/a,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CAA8BuR,mBAAmB,EAAMC,oBAAsB,+CAR7E/a,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CAA8BuR,mBAAmB,EAAMC,oBAAsB,+BA8BrFlN,SACI,OACI,gBAAC,WAAD,KACI,uBAAKM,UAAU,WACX,uBAAKA,UAAU,sBACX,yBAAOA,UAAU,sBAAjB,kBAAqD,wBAAMA,UAAU,eAAhB,UACrD,0BAAQA,UAAU,cACV2C,SAAU9Q,KAAK8b,yBACfpc,MAAOM,KAAK6L,MAAM5C,aAAa5D,eAC/BkM,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD/Q,KAAK,kBACRgI,KAAK6L,MAAM5E,aAAa5K,IAAKohB,GAAe,0BAAQhe,IAAKge,EAAE1lB,GAAI2H,MAAO+d,EAAE1lB,IAAK0lB,EAAEzlB,QAElFgI,KAAKuJ,MAAMuR,mBAAqB9a,KAAK6L,MAAM5C,aAAa5D,gBAAkB,GAAM,uBAAK8I,UAAU,sCAAf,oBAG1F,uBAAKA,UAAU,gBACX,uBAAKA,UAAU,aACX,yBAAOA,UAAU,sBAAjB,aAAgD,wBAAMA,UAAU,eAAhB,UAChD,yBAAOA,UAAU,eACb9T,KAAK,OACLqF,MAAOM,KAAK6L,MAAM5C,aAAahM,WAC/B6T,SAAU9Q,KAAKyf,kBACflO,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD/Q,KAAK,aACLyE,YAAY,UACZoU,UAAQ,KACV9V,EAAeiF,KAAKuJ,MAAMuR,kBAAmB9a,KAAK6L,MAAM5C,aAAahM,WAAY,GAAI,IAAM,uBAAKkR,UAAU,sCAAf,oBAGrG,uBAAKA,UAAU,WACX,uBAAKA,UAAU,aACX,yBAAOA,UAAU,eACb9T,KAAK,OACLqF,MAAOM,KAAK6L,MAAM5C,aAAazM,WAC/BsU,SAAU9Q,KAAKyf,kBACflO,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD/Q,KAAK,aACLyE,YAAY,SACZoU,UAAQ,KACV9V,EAAeiF,KAAKuJ,MAAMuR,kBAAmB9a,KAAK6L,MAAM5C,aAAazM,WAAY,GAAI,IAAM,uBAAK2R,UAAU,sCAAf,oBAIjGnO,KAAK6L,MAAM5C,aAAa5D,iBAAmB/G,EAAsB0B,KAAK6L,MAAM5E,ahChJhE,OgCgJgGlP,IhC/I7F,WgCgJZiI,KAAK6L,MAAM5C,aAAahR,MAE3B+H,KAAK6f,oBAET,uBAAK1R,UAAU,gBACX,uBAAKA,UAAU,sBACX,yBAAOA,UAAU,sBAAjB,cACA,0BAAQA,UAAU,cACV2C,SAAU9Q,KAAK0f,mBACfnO,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpDuI,aAActR,KAAK6L,MAAM5C,aAAa3D,YAAY3M,WAClDX,KAAK,eACT,0BAAQ0H,MAAM,QAAd,OACA,0BAAQA,MAAM,SAAd,SAIZ,uBAAKyO,UAAU,gBACX,uBAAKA,UAAU,aACX,yBAAOA,UAAU,sBAAjB,4JACA,yBAAO9T,KAAK,OACRqF,MAAOM,KAAK6L,MAAM5C,aAAa9L,eAC/B2T,SAAU9Q,KAAKyf,kBACftR,UAAU,eACVoD,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD/Q,KAAK,iBACLyE,YAAY,UACZoU,UAAQ,MAGpB,uBAAK1C,UAAU,gBACX,uBAAKA,UAAU,aACX,yBAAO9T,KAAK,OACRqF,MAAOM,KAAK6L,MAAM5C,aAAarM,eAC/BkU,SAAU9Q,KAAKyf,kBACftR,UAAU,eACVoD,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD/Q,KAAK,iBACLyE,YAAY,SACZoU,UAAQ,MAMR7Q,KAAK6L,MAAM5C,aAAa5D,iBAAoB/G,EAAsB0B,KAAK6L,MAAM5E,ahC9LzE,OgC8LyGlP,IAC7G,gBAAC,GAAD,OAGAiI,KAAK6L,MAAM5C,aAAa5D,iBAAoB/G,EAAsB0B,KAAK6L,MAAM5E,ahCjMtE,UgCiMyGlP,IAChH,gBAAC,GAAD,OhCpMK,SgCyMZiI,KAAK6L,MAAM5C,aAAahR,MhCxMb,QgCyMN+H,KAAK6L,MAAM5C,aAAahR,OAC9B,gCACI,uBAAKkW,UAAU,WACX,uBAAKA,UAAU,sBACX,yBAAOA,UAAU,sBAAjB,wBACA,yBAAO9T,KAAK,SACRqF,MAAOM,KAAK6L,MAAM5C,aAAa1D,kBAC/BuL,SAAU9Q,KAAKwf,mBACfrR,UAAU,eACVoD,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD/Q,KAAK,oBACL8nB,IAAI,IACJC,IAAI,OACJlP,UAAQ,MAKhB7Q,KAAK6L,MAAM5C,aAAa5D,iBAAoB/G,EAAsB0B,KAAK6L,MAAM5E,ahC3NzE,OgC2NyGlP,IAE7GiI,KAAK6f,qBAKjB,uBAAK1R,UAAU,WACX,uBAAKA,UAAU,aACX,uBAAKA,UAAU,sCAAsCnO,KAAKuJ,MAAMwR,uBAIxE,uBAAK5M,UAAU,kBACX,0BAAQA,UAAU,kBAAkBM,QAAS,IAAMzO,KAAK6L,MAAM3I,aAAalD,KAAK6L,MAAM1I,KAAM,IAA5F,YACA,0BAAQgL,UAAU,kBAAkBM,QAAS,IAAMzO,KAAK4f,kBACxDrO,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,yBADpD,cAEA,0BAAQoF,UAAU,kBAAkBM,QAAS,IAAMzO,KAAK2f,qBAAxD,uBAMhBE,oBACI,OACA,gCACI,uBAAK1R,UAAU,gBACX,uBAAKA,UAAU,aACX,yBAAOA,UAAU,sBAAjB,gBACA,yBAAOA,UAAU,eACbzO,MAAOM,KAAK6L,MAAM5C,aAAa/L,cAC/B4T,SAAU9Q,KAAKyf,kBACfznB,KAAK,gBACLuZ,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpDtM,YAAY,UACZoU,UAAQ,MAGpB,uBAAK1C,UAAU,WACX,uBAAKA,UAAU,aACX,yBAAOA,UAAU,eACbzO,MAAOM,KAAK6L,MAAM5C,aAAavM,cAC/BoU,SAAU9Q,KAAKyf,kBACfznB,KAAK,gBACLuZ,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpDtM,YAAY,SACZoU,UAAQ,QAQjB7B,mBACVzF,GAA4BA,EAAMzD,kBACnCoV,EAFWlM,CAGbuQ,IC/QF,MAAM7E,WAAgB9M,YAEV5J,gBACAU,+BACAxB,gBAED+Q,oBACHjU,KAAK6L,MAAMjH,YAAY5E,KAAK6L,MAAMhH,UAAY,MAAM,GAGxDgJ,SACI,IACMC,EAAYJ,GADD1N,KAAK6L,MAAMhH,UAAY,MAIxC,OACI,gBAAC,WAAD,KACA,uBAAKsJ,UAAU,OACX,uBAAKA,UAAU,aACX,uBAAKA,UAAU,2BACX,0BAAQA,UAAU,0BAA0BM,QAAS,IAAMzO,KAAK6L,MAAMjH,YAAYkJ,EAAU5B,gBAAgB,IAAS4B,EAAU7B,cAI3I,uBAAKkC,UAAU,OACX,uBAAKA,UAAU,aAEX,gBAAC,GAAD,CACIgB,aAAenP,KAAKkD,aACpB5H,OAAS0E,KAAK6L,MAAMvQ,OACpBuJ,SAAW7E,KAAK6L,MAAMhH,WAE9C,2BACA,2BACA,2BAEoB,gBAAC,GAAD,CACIN,cAAgBvE,KAAK6L,MAAMtH,cAC3BU,YAAcjF,KAAK6L,MAAM5G,YACzB3J,OAAS0E,KAAK6L,MAAMvQ,OACpBuJ,SAAW7E,KAAK6L,MAAMhH,SACtBb,aAAehE,KAAKgE,aACpBQ,oBAAsBxE,KAAK0E,4BAC3BA,4BAA8B1E,KAAK0E,8BAE3D,2BACA,2BACA,2BACoB,gBAAC,GAAD,CACIpJ,OAAS0E,KAAK6L,MAAMvQ,UAK5B,uBAAK6S,UAAU,kBACX,0BAAQA,UAAU,kBAAkBM,QAAS,IAAMzO,KAAK6L,MAAM3I,aAAalD,KAAK6L,MAAM1I,KAAM,IAA5F,YACA,0BAAQgL,UAAU,kBAAkBM,QAAS,IAAMzO,KAAK6L,MAAM3I,kBAAatK,IAA3E,gBASLoW,mBACVzF,GAA4BA,EAAMzD,kBACnCoV,EAFWlM,CAGb0L,IC9DF,MAAMrP,WAAcuC,YAA4C,eAAD,oBAC3DrE,MAAQ,CACJuR,mBAAmB,EACnB1U,QAAS,GACT4Z,SAAS,GAJ8C,KAqB3D/P,aAAgBxR,IACZA,EAAE0U,OAAOzT,MAAQjB,EAAE0U,OAAOzT,MAE1BM,KAAK6L,MAAMzE,wBAAwBhP,EAAW4iB,OAAQvc,EAAE0U,OAAOnb,KAAM,IAAI,EAAO,EAAG,IAAIU,KAAK+F,EAAE0U,OAAOzT,SAxB9C,KA2B3Doc,yBAA4Brd,IAExBuB,KAAK6L,MAAMzE,wBAAwBhP,EAAW4iB,OAAQvc,EAAE0U,OAAOnb,KAAM,IAAI,GAAQyG,EAAE0U,OAAOzT,MAAO,IAAIhH,OAtBlG6a,sBAE4B,IAA3BvT,KAAK6L,MAAM5G,aAEPjF,KAAK6L,MAAMlD,cAAcvN,OAAS,GAAK4E,KAAK6L,MAAMlD,gBAAkB3I,KAAKuJ,MAAMnD,UAC/EpG,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CAA8BnD,QAASpG,KAAK6L,MAAMlD,kBAEjB,IAA7B3I,KAAK6L,MAAMtH,eACXvE,KAAK6L,MAAMpI,cAAczD,KAAK6L,MAAM9M,UAAU,GAAO,IAiB7DgH,aACJ,IAAIka,EAAM,GACNjgB,KAAK6L,MAAMvQ,OAAO2D,cAAgBe,KAAK6L,MAAM9C,yBAEqB,IAA9DhO,GAAe,EAAMiF,KAAK6L,MAAMvQ,OAAOU,WAAY,GAAI,GACvDikB,EAAM,mCAC6D,IAA9DllB,GAAe,EAAMiF,KAAK6L,MAAMvQ,OAAOK,WAAY,GAAI,GAC5DskB,EAAM,kCAEuD,IAAxDllB,GAAe,EAAMiF,KAAK6L,MAAMvQ,OAAOtD,KAAM,GAAI,GACtDioB,EAAM,4BAE0D,IAA3DllB,GAAe,EAAMiF,KAAK6L,MAAMvQ,OAAOW,QAAS,GAAI,GACzDgkB,EAAM,qCAC0D,IAA3DllB,GAAe,EAAMiF,KAAK6L,MAAMvQ,OAAOO,QAAS,GAAI,GACzDokB,EAAM,oCAE+D,IAAhEllB,GAAe,EAAMiF,KAAK6L,MAAMvQ,OAAOY,aAAc,GAAI,GAC9D+jB,EAAM,qCAC+D,IAAhEllB,GAAe,EAAMiF,KAAK6L,MAAMvQ,OAAOS,aAAc,GAAI,GAC9DkkB,EAAM,mCAEsC,IAAvCjgB,KAAK6L,MAAMvQ,OAAOa,UAAUf,SACjC6kB,EAAM,qCAGwC,IAA7C/hB,EAAY8B,KAAK6L,MAAMvQ,OAAO4D,YAAwBc,KAAK6L,MAAMvQ,OAAO4D,UAAY,IAAIxG,KAAK,IAAM,EAAG,GAC3GunB,EAAM,gDAC0C,IAA3C/hB,EAAY8B,KAAK6L,MAAMvQ,OAAO6D,UAAsBa,KAAK6L,MAAMvQ,OAAO6D,QAAUa,KAAK6L,MAAMvQ,OAAO4D,aACvG+gB,EAAM,mDAGS,IAAfA,EAAI7kB,QACJ4E,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CACIuR,mBAAmB,EACnB1U,QAAS,GACT4Z,SAAS,KAEbhgB,KAAK6L,MAAM9F,cAEX/F,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CACIuR,mBAAmB,EACnB1U,QAAS6Z,EACTD,SAAS,KAIrBnS,SACI,OACI,gBAAC,WAAD,KACI,uBAAKM,UAAU,cACX,uBAAKA,UAAU,sBACX,yBAAOA,UAAU,sBAAjB,UAA6C,wBAAMA,UAAU,eAAhB,UAC7C,0BAAQA,UAAU,cACV2C,SAAU9Q,KAAK8b,yBACfxK,aAActR,KAAK6L,MAAMvQ,OAAO2D,YAChCsS,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD/Q,KAAK,eACRgI,KAAK6L,MAAM3E,iBAAiB7K,IAAKohB,GAAe,0BAAQhe,IAAKge,EAAE1lB,GAAI2H,MAAO+d,EAAE1lB,IAAK0lB,EAAEzlB,QAEvFgI,KAAK6L,MAAMvQ,OAAO2D,cAAgBe,KAAK6L,MAAM9C,yBAA2B,uBAAKoF,UAAU,sCAAf,0EAGjF,uBAAKA,UAAU,cACX,uBAAKA,UAAU,sBACX,yBAAOA,UAAU,sBAAjB,cAAiD,wBAAMA,UAAU,eAAhB,UACjD,yBAAO9T,KAAK,iBACR8T,UAAU,eACVmD,aAActR,KAAK6L,MAAMvQ,OAAO4D,UAAUvG,WAC1CmY,SAAU9Q,KAAKiQ,aACfjY,KAAK,YACL6Y,UAAQ,MAIpB,uBAAK1C,UAAU,cACX,uBAAKA,UAAU,sBACX,yBAAOA,UAAU,sBAAjB,YAA+C,wBAAMA,UAAU,eAAhB,UAC/C,yBAAO9T,KAAK,iBACR8T,UAAU,eACVmD,aAActR,KAAK6L,MAAMvQ,OAAO6D,QAAQxG,WACxCmY,SAAU9Q,KAAKiQ,aACfjY,KAAK,UACL6Y,UAAQ,MAKpB7Q,KAAKuJ,MAAMuR,mBAEX,uBAAK3M,UAAU,cACX,uBAAKA,UAAU,aACX,uBAAKA,UAAanO,KAAK6L,MAAMtH,eAAiBvE,KAAKuJ,MAAMyW,QAAW,qCAAuC,oCAAqChgB,KAAKuJ,MAAMnD,WAInK,uBAAK+H,UAAU,kBACX,0BAAQA,UAAU,kBAAkBM,QAAS,IAAMzO,KAAK6L,MAAM3I,aAAalD,KAAK6L,MAAM1I,KAAM,IAA5F,YACA,0BAAQgL,UAAU,kBAAkBM,QAAS,IAAMzO,KAAK+F,cAAxD,QACA,gBAAC,IAAD,CAAMoI,UAAU,mCAAmCyG,GAAI,WAAvD,oCAQL5F,mBACVzF,GAA4BA,EAAMzD,kBACnCoV,EAFWlM,CAGb3D,ICtJF,MAAMmP,WAAgB5M,YAAoC,eAAD,oBA2B7C8Q,aAAe,EAAEzW,WAAUC,eAE/BlI,KAAK6L,MAAM7D,aAAaC,EAAUC,IA3BrC2F,SACG,OACI,gBAAC,WAAD,KAEA,gBAACqS,GAAD,CACQ5kB,OAAQ0E,KAAK6L,MAAMvQ,OACnB6kB,eAAgBngB,KAAKmgB,eACrBC,cAAepgB,KAAK6L,MAAM5E,aAC1BsK,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpDsX,kBAAmBrgB,KAAK6L,MAAMzD,0BAC9BP,kBAAmB7H,KAAK6L,MAAMhE,kBAC9BF,aAAc3H,KAAK6L,MAAMlE,aACzBQ,eAAgBnI,KAAK6L,MAAM1D,eAC3B8W,UAAWjf,KAAK0e,eAGxB,uBAAKvQ,UAAU,kBACX,0BAAQA,UAAU,kBAAkBM,QAAS,IAAMzO,KAAK6L,MAAM3I,aAAalD,KAAK6L,MAAM1I,KAAM,IAA5F,YACA,0BAAQgL,UAAU,kBAAkBM,QAAS,IAAMzO,KAAK6L,MAAM3I,kBAAatK,IAA3E,cAaZunB,eAAeG,GACX,OAAOA,GAAkB,GAIjC,IAAMC,GAAuBpB,YAAiBtT,GAC9B,uBAAKsC,UAAWtC,EAAM2U,WAAa,sBAAuB/gB,IAAKoM,EAAM9E,EAAI,KACrE,qBAAGoH,UAAU,yCAAb,OACA,uBAAKA,UAAU,aACX,sBAAIA,UAAU,cAAa,wBAAMA,UAAU,sBAAsBtC,EAAM4U,MAAMxjB,WAAY4O,EAAM4U,MAAMnb,YAAc,wBAAM6I,UAAU,eAAhB,SAA+C,IAAlK,KAA+KtC,EAAM5E,aAAajP,KAAlM,KACA,qBAAGmW,UAAU,wBAAuB,wBAAMA,UAAU,eAAqBtC,EAAM4U,MAAMvjB,eAErF,uBAAKiR,UAAU,OACX,uBAAKA,UAAU,OACX,uBAAKA,UAAU,eACX,wBAAMA,UAAU,mBAAmBpW,GAAG,gBAAtC,SACA,0BAAQoW,UAAU,cACdoD,SAAU1F,EAAM6U,YAChB5P,SAAWrS,GAAMoN,EAAMwU,kBAAkBxU,EAAM9E,EAAG3I,OAAOK,EAAE0U,OAAOzT,OAAS,MAAQjB,EAAE0U,OAAOzT,OAC5FA,MAAOmM,EAAM4U,MAAMtb,QAAU0G,EAAM4U,MAAMtb,QAAU,IAC/C,0BAAQzF,MAAO,GAAf,UAEAmM,EAAMvO,OAAOjB,IAAI,CAACmV,EAAW5J,IACjB,0BAAQlI,MAAO8R,EAAKrM,QAAS1F,IAAK+R,EAAKrM,QAAU,aAAcqM,EAAK5T,gBAAkB4T,EAAK3T,uBAMvH,uBAAKsQ,UAAU,OACX,0BAAQA,UAAU,4BACdoD,SAAU1F,EAAM6U,YAChBjS,QAAS,IAAM5C,EAAMhE,kBAAkBgE,EAAM9E,IAFjD,QAIA,0BAAQoH,UAAU,oCACdoD,SAAU1F,EAAM6U,YAChBjS,QAAS,IAAM5C,EAAMlE,aAAakE,EAAM9E,IAF5C,QAIA,0BAAQoH,UAAU,mCACdoD,SAAU1F,EAAM6U,YAChBjS,QAAS,IAAM5C,EAAM1D,eAAe0D,EAAM9E,IAF9C,eAWxBmZ,GAAuBb,YAAmBxT,IAE1C,IAAM1P,EAAY0P,EAAMvQ,OAAOa,UACzBmB,EAASuO,EAAMvQ,OAAOgC,OACxBkjB,EAAa,iBAEjB,GAAIrkB,GAEKA,EAAUf,OAAS,EAAI,CAMxB,IAJA,IAAI+J,GAAmB,GAEjB0O,EAAQ,GAJU,WAMf9M,GAEL,GAAI8E,EAAMsU,eAAehkB,EAAU4K,GAAG5B,WAAaA,EAAS,CAE1C7H,EAAOkB,KAAMqL,GAAWA,EAAE1E,UAAY0G,EAAMsU,eAAehkB,EAAU4K,GAAG5B,UAEtFqb,EAA4B,mBAAfA,EAAkC,iBAAmB,iBAGtE3M,EAAMtJ,KACF,gBAACgW,GAAD,CAAsB9gB,IAAG,mBAAcsH,GACvC0Z,MAAOtkB,EAAU4K,GACjBA,EAAGA,EACHyZ,WAAYA,EACZvZ,aAAc4E,EAAMuU,cAAc5hB,KAAMqL,GAAWA,EAAE9R,KAAOoE,EAAU4K,GAAG1B,iBAAmB,IAAIvN,EAChGwF,OAAQA,EACRiU,SAAU1F,EAAM0F,SAChBmP,YAAa7U,EAAM0F,SACnB3J,MAAOb,EACPsZ,kBAAmBxU,EAAMwU,kBACzBxY,kBAAmBgE,EAAMhE,kBACzBF,aAAckE,EAAMlE,aACpBQ,eAAgB0D,EAAM1D,kBAI1BhD,EAAU0G,EAAMsU,eAAehkB,EAAU4K,GAAG5B,UA1BvC4B,EAAI,EAAGA,EAAI5K,EAAUf,OAAQ2L,IAAM,EAAnCA,GA8BT,OACI,uBAAKoH,UAAU,aACV0F,GAQjB,OACI,2BACI,sDAQD7E,eACVzF,GAA4BA,EAAMzD,kBACnCoV,EAFWlM,CAGbwL,ICpJF,MAAMD,WAAc3M,YAA4C,eAAD,oBAC3DrE,MAAQ,CACJuR,mBAAmB,EACnBC,oBAAqB,IAHkC,KAM3DhL,qBAAwBtR,IACpBA,EAAE0U,OAAOzT,MAAQjB,EAAE0U,OAAOzT,MAE1BM,KAAK6L,MAAMzE,wBAAwBhP,EAAWmiB,MAAO9b,EAAE0U,OAAOnb,KAAMyG,EAAE0U,OAAOzT,OAAO,EAAO,EAAG,IAAIhH,OAT3C,KAY3DinB,kBAAoB,KACZ3f,KAAK6L,MAAMvQ,OAAOa,UAAUf,OAAS,EACrC4E,KAAK6L,MAAM3I,kBAAatK,GAExBoH,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CAA8BwR,oBAAsB,uCAhBD,KAmB3D6E,gBAAkB,MAC4D,IAArE7kB,GAAe,EAAMiF,KAAK6L,MAAM1C,UAAUvL,eAAgB,GAAI,KACS,IAAxE7C,GAAe,EAAMiF,KAAK6L,MAAM1C,UAAUtL,kBAAmB,GAAI,KACK,IAArE9C,GAAe,EAAMiF,KAAK6L,MAAM1C,UAAU1L,eAAgB,GAAI,KACS,IAAxE1C,GAAe,EAAMiF,KAAK6L,MAAM1C,UAAUxL,kBAAmB,GAAI,GAEjEqC,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CAA8BuR,mBAAmB,EAAMC,oBAAsB,gFAKjF/a,KAAK6L,MAAMtD,cAAa,GACxBvI,KAAK8W,SAAL,eAAkB9W,KAAKuJ,MAAvB,CAA8BuR,mBAAmB,EAAOC,oBAAsB,QA/BvB,KAmC3DsF,kBAAqB5hB,IACjBuB,KAAK6L,MAAMvD,gBAAgB7J,EAAE0U,OAAOzT,QAGxCmO,SACI,OACI,gBAAC,WAAD,KACI,uBAAKM,UAAU,OACX,uBAAKA,UAAU,kBACX,uBAAKA,UAAU,0BAAyB,mCAAxC,yHAGR,uBAAKA,UAAU,gBACX,uBAAKA,UAAU,aACX,yBAAOA,UAAU,sBAAjB,2BACA,0BAAQA,UAAU,cACd2C,SAAU9Q,KAAKqgB,kBACf9O,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpDrJ,MAAQM,KAAK6L,MAAM1C,UAAUhE,SACzB,0BAAQzF,OAAQ,WAAhB,SAEAM,KAAK6L,MAAMvQ,OAAOgC,OAAOjB,IAAI,CAACmV,EAAM5J,IACxB,0BAAQlI,MAAO8R,EAAKrM,QAAS1F,IAAK+R,EAAKrM,QAAU,aAAcqM,EAAK5T,gBAAkB4T,EAAK3T,uBAOvH,uBAAKsQ,UAAU,gBACX,uBAAKA,UAAU,aACX,yBAAOA,UAAU,sBAAjB,sBACA,4BAAUA,UAAU,eAChBzO,MAAOM,KAAK6L,MAAM1C,UAAUvL,eAC5BkT,SAAU9Q,KAAK+P,qBACf/X,KAAK,iBACLuZ,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD8H,UAAQ,MAGpB,uBAAK1C,UAAU,WACX,uBAAKA,UAAU,aACX,yBAAOA,UAAU,sBAAjB,qBACA,4BAAUA,UAAU,eAChBzO,MAAOM,KAAK6L,MAAM1C,UAAU1L,eAC5BqT,SAAU9Q,KAAK+P,qBACf/X,KAAK,iBACLuZ,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD8H,UAAQ,MAIpB,uBAAK1C,UAAU,gBACX,uBAAKA,UAAU,aACX,yBAAOA,UAAU,sBAAjB,0BACA,4BAAUA,UAAU,eAChBzO,MAAOM,KAAK6L,MAAM1C,UAAUtL,kBAC5BiT,SAAU9Q,KAAK+P,qBACf/X,KAAK,oBACLuZ,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD8H,UAAQ,MAGpB,uBAAK1C,UAAU,WACX,uBAAKA,UAAU,aACX,yBAAOA,UAAU,sBAAjB,yBACA,4BAAUA,UAAU,eAChBzO,MAAOM,KAAK6L,MAAM1C,UAAUxL,kBAC5BmT,SAAU9Q,KAAK+P,qBACf/X,KAAK,oBACLuZ,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,wBACpD8H,UAAQ,MAIpB,uBAAK1C,UAAU,WACX,uBAAKA,UAAU,aACX,uBAAKA,UAAU,sCAAsCnO,KAAKuJ,MAAMwR,uBAIxE,uBAAK5M,UAAU,kBACX,0BAAQA,UAAU,kBAAkBM,QAAS,IAAMzO,KAAK6L,MAAM3I,aAAalD,KAAK6L,MAAM1I,KAAM,IAA5F,YACA,0BAAQgL,UAAU,kBAAkBM,QAAS,IAAMzO,KAAK4f,kBACpDrO,SAAUvR,KAAK6L,MAAMvQ,OAAO0D,WAAagB,KAAK6L,MAAM9C,yBADxD,cAEA,0BAAQoF,UAAU,kBAAkBM,QAAS,IAAMzO,KAAK2f,qBAAxD,uBACA,0BAAQxR,UAAU,mCAAmCM,QAAS,IAAMzO,KAAK6L,MAAMxD,YAAYrI,KAAK6L,MAAM3C,aAAtG,aAOL8F,mBACVzF,GAA4BA,EAAMzD,kBACnCoV,EAFWlM,CAGbuL,IC5HF,MAAMoG,WAAsB/S,gBAGjBqG,oBACH,IAAMlV,EAAWiB,KAAK6L,MAAMsI,MAAMC,OAAOrV,UAAY,GAC/C8H,EAAQ7G,KAAK6L,MAAMsI,MAAMC,OAAOvN,OAAS,EAE/C7G,KAAK6L,MAAMpI,cAAc1E,EAAoB,MAAV8H,GAAe,GAG/CgH,SAEH,IAAMwG,EAAUrU,KAAK6L,MAAMvQ,OAAOtD,MAAQgI,KAAK6L,MAAMvQ,OAAOM,OAASoE,KAAK6L,MAAMvQ,OAAOW,SAAW,GAElG,OACI,gBAAC,WAAD,KACI,gBAAC,GAAD,CAAQ4P,MAAO7L,KAAK6L,QAEpB,gBAAC,GAAD,CAAQ1I,KAAMnD,KAAK6L,MAAM1I,KACjBgM,aAAenP,KAAK6L,MAAM3I,eAClC,uBAAKiL,UAAU,YACX,uBAAKA,UAAU,OACX,uBAAKA,UAAU,sBACX,sBAAIA,UAAU,QAAQkG,IAE1B,uBAAKlG,UAAU,sBACX,uBAAKA,UAAU,2BAEPnO,KAAK6L,MAAM/C,cACT,0BAAQqF,UAAU,kBAAkBoD,UAAQ,GAA5C,iBACA,gBAAC,IAAD,CAAMpD,UAAU,kBAAkByG,GAAE,WAApC,oBAKlB,uBAAKzG,UAAU,WACVnO,KAAKsU,yBAOlBA,sBACJ,IAAMjF,EAAc3B,GAAmB,MACjC4B,EAAc5B,GAAmB,MAEvC,IAAI1N,KAAK6L,MAAMvQ,OAsBX,OACI,yBAAK+T,EAAYrC,gBAAjB,MAAuCsC,EAAYtC,iBAtBvD,OAAQhN,KAAK6L,MAAM1I,MACf,KAAKhL,EAAgByoB,aACjB,OAAQ,gCAAE,yBAAKvR,EAAYrC,iBAAqB,yBAAKsC,EAAYtC,kBACrE,KAAK7U,EAAgBgT,QACjB,OAAQ,gCAAE,yBAAKkE,EAAYtC,mBAAuB,yBAAKuC,EAAYvC,oBACvE,KAAK5U,EAAgBkT,MACjB,OAAQ,gBAAC,GAAD,MACZ,KAAKlT,EAAgBoiB,MACjB,OAAQ,gBAAC,GAAD,MACZ,KAAKpiB,EAAgBqT,SACjB,OAAQ,gBAAC,GAAD,MACZ,KAAKrT,EAAgBqiB,QACjB,OAAQ,gBAAC,GAAD,MACZ,KAAKriB,EAAgBsiB,QACjB,OAAQ,gBAAC,GAAD,MACZ,KAAKtiB,EAAgBuiB,QACjB,OAAQ,gBAAC,GAAD,MACZ,KAAKviB,EAAgBiT,QACjB,OAAQ,gBAACA,GAAD,QAUbuV,UCnFR,MAAME,WAAuBjT,YAA4C,eAAD,oBAEvErE,MAAQ,CACJuX,aAAa,gmDAiHrBjT,SACI,OACI,gBAAC,WAAD,KACI,gBAAC,GAAD,MAEA,uBAAKM,UAAU,YACX,uBAAKA,UAAU,OAEX,uBAAKA,UAAU,YACX,yBAAOA,UAAU,2BAAjB,8BACA,4BAAUA,UAAU,0BAA0BzO,MAAOM,KAAKuJ,MAAMuX,aAChEhQ,SAAWrS,GAAKuB,KAAK8W,SAAS,CAACgK,aAAcriB,EAAE0U,OAAOzT,WAE1D,uBAAKyO,UAAU,YACX,yBAAOA,UAAU,2BAAjB,WAEA,gBAAC,KAAD,CAAepC,SAAU/L,KAAKuJ,MAAMuX,oBASjDD,UCxIf,MAAME,WAAcnT,IAAMkH,UAcxBtV,YAAYqM,GACV0P,MAAM1P,GADgB,KAbhBmV,eAagB,OAZhBC,cAYgB,OAVxB1X,MAAQ,CACN2X,SAAU,GACV1f,SAAU,GACVvJ,KAAM,GACNkpB,SAAS,EACT/a,QAAS,GACTgb,YAAY,EACZC,UAAU,GAGY,KAWxBC,aAAgB7iB,IACd,IAAMxG,EAAOwG,EAAE0U,OAAOzT,MACtBM,KAAK8W,SAAS,CAAC7e,UAbO,KAgBxBspB,iBAAoB9iB,IAClB,IAAMyiB,EAAWziB,EAAE0U,OAAOzT,MAC1BM,KAAK8W,SAAS,CAACoK,cAlBO,KAqBxBM,iBAAoB/iB,IAClB,IAAM+C,EAAW/C,EAAE0U,OAAOzT,MAC1BM,KAAK8W,SAAS,CAACtV,cAvBO,KA0BxBigB,aAAgBhjB,IACduB,KAAK8W,SAAS,CAAC1Q,QAAQ,GAAI+a,SAAQ,EAAOC,YAAY,IACtD/f,EAAYF,UA5BU,KA+BxBugB,uBAA0BjjB,IACxBA,EAAEkjB,iBACF3hB,KAAK8W,SAAS,CAAC1Q,QAAQ,GAAI+a,SAAQ,EAAME,UAAU,IAEnD,IACMnf,EADOb,EAAYc,iBACND,WAEEtJ,GAAlBoH,KAAKghB,gBAAoDpoB,GAA1BoH,KAAKghB,UAAUvE,SAC7Czc,KAAKghB,UAAUvE,QAAQmF,cAEzBvgB,EAAYY,WAAWjC,KAAKuJ,MAAM2X,SAAUlhB,KAAKuJ,MAAMtR,KAAMiK,GAAON,KAClE5B,KAAK6hB,WACL7hB,KAAK8hB,kBA3Ca,KAgDxBC,YAAetjB,IACbA,EAAEkjB,iBACF3hB,KAAK8W,SAAS,CAAC1Q,QAAS,GAAI+a,SAAS,EAAME,UAAU,SACjCzoB,GAAjBoH,KAAKihB,eAAkDroB,GAAzBoH,KAAKihB,SAASxE,SAC5Czc,KAAKihB,SAASxE,QAAQmF,cAEvBvgB,EAAYC,MAAMtB,KAAKuJ,MAAM2X,SAAUlhB,KAAKuJ,MAAM/H,UAAUI,KAC1D5B,KAAK6hB,WACL7hB,KAAKgiB,aAxDa,KA6DxBH,WAAa,KACX,IAAMhhB,EAAOQ,EAAYc,iBAErBtB,EAAKG,YAC0B,MAA7BH,EAAK4B,oBACPzC,KAAK6L,MAAM4I,QAAQlK,KAAK,mBAExBvK,KAAK6L,MAAM4I,QAAQlK,KAAK,WACjB1J,EAAKqB,OACdlC,KAAK8W,SAAS,CAACsK,YAAY,EAAMC,UAAU,EAAOppB,KAAM,GAAIuJ,SAAU,KAGxExB,KAAK8W,SAAS,CAAC1Q,QAAS,GAAI+a,SAAS,KAzEf,KA4ExBa,WAAcje,KACPA,EAAMlC,UAAYkC,EAAMlC,SAASC,MAAQiC,EAAMlC,SAASC,KAAKsE,SAAYrC,EAAMqC,SAAWrC,EAAMpL,aACnGqH,KAAK8W,SAAS,CAAC1Q,QAAS,4BAA6B+a,SAAQ,KA9EzC,KAiFxBW,gBAAmB/d,KACZA,EAAMlC,UAAYkC,EAAMlC,SAASC,MAAQiC,EAAMlC,SAASC,KAAKsE,SAAYrC,EAAMqC,SAAWrC,EAAMpL,aACnGqH,KAAK8W,SAAS,CAAC1Q,QAAS,wBAAyB+a,SAAQ,KAhF3DnhB,KAAKghB,UAAYpT,IAAMqU,YACvBjiB,KAAKihB,SAAWrT,IAAMqU,YAGxBhO,oBACEjU,KAAK6hB,aA8EAhU,SACL,OACE,oCACE,kBAAC,GAAD,MACE,yBAAKM,UAAU,sCACb,yBAAKA,UAAU,+BACZnO,KAAKuJ,MAAMnD,SACV,yBAAK+H,UAAU,cACb,yBAAKA,UAAU,eACZnO,KAAKuJ,MAAMnD,YAMxB,yBAAK+H,UAAU,sCACX,yBAAKA,UAAU,gCACa,IAA1BnO,KAAKuJ,MAAM6X,YACX,0BAAMc,SAAUliB,KAAK+hB,YAAavE,IAAKxd,KAAKghB,UAAW7S,UAAS,2BAAsBnO,KAAKuJ,MAAM8X,SAAW,gBAAiB,KAC3H,yBAAKlT,UAAU,cACb,2BAAOA,UAAU,qBAAqByD,QAAQ,YAA9C,SACA,2BACEvX,KAAK,QACL8T,UAAU,eACVnW,KAAK,WACL0H,MAAOM,KAAKuJ,MAAM2X,SAClBpQ,SAAU9Q,KAAKuhB,iBACf1Q,UAAU,IAEZ,yBAAK1C,UAAU,oBAAf,uCAIF,yBAAKA,UAAU,mBACb,2BAAOA,UAAU,qBAAqByD,QAAQ,YAA9C,YACA,2BACEvX,KAAK,WACL8T,UAAU,eACVnW,KAAK,WACL0H,MAAOM,KAAKuJ,MAAM/H,SAClBsP,SAAU9Q,KAAKwhB,iBACf3Q,UAAU,IAEZ,yBAAK1C,UAAU,oBAAf,0BAIF,yBAAKA,UAAU,mBACb,4BAAQA,UAAU,4BAA4BoD,SAAUvR,KAAKuJ,MAAM4X,SAChEnhB,KAAKuJ,MAAM4X,SACV,oCAAE,0BAAMhT,UAAU,qCAAlB,QAEF,2CAKoB,IAA1BnO,KAAKuJ,MAAM6X,YACX,0BAAMc,SAAUliB,KAAK0hB,uBAAwBlE,IAAKxd,KAAKihB,UACrD,yBAAK9S,UAAU,cACb,2BAAOA,UAAU,qBAAqByD,QAAQ,YAA9C,QACA,2BACEvX,KAAK,OACL8T,UAAU,eACVnW,KAAK,WACL0H,MAAOM,KAAKuJ,MAAMtR,KAClB6Y,SAAU9Q,KAAKshB,aACfzQ,UAAU,IAEZ,yBAAK1C,UAAU,oBAAf,mCAIF,yBAAKA,UAAU,mBACb,4BAAQA,UAAU,kBAAkBoD,SAAUvR,KAAKuJ,MAAM4X,SACtDnhB,KAAKuJ,MAAM4X,SACV,oCAAE,0BAAMhT,UAAU,qCAAlB,QAEF,yCAEF,4BAAQA,UAAU,oCAChB9T,KAAK,SACLkX,SAAUvR,KAAKuJ,MAAM4X,QACrB1S,QAASzO,KAAKyhB,cAHhB,gBAcHV,U,SCtEAoB,GArIStW,IAAiB,IAAD,EACUuW,mBAAS,IADnB,oBAC7Bzf,EAD6B,KACZ0f,EADY,OAEED,mBAAS,IAFX,oBAE7Bxf,EAF6B,KAEhB0f,EAFgB,OAGUF,mBAAS,IAHnB,oBAG7BG,EAH6B,KAGZC,EAHY,OAINJ,mBAAS,IAJH,oBAI7Bhc,EAJ6B,KAIpBqc,EAJoB,OAKNL,oBAAS,GALH,oBAK7BM,EAL6B,KAKpBC,EALoB,OAMNP,oBAAS,GANH,oBAM7BjB,EAN6B,KAMpByB,EANoB,OAONR,oBAAS,GAPH,oBAO7BpC,EAP6B,KAOpB6C,EAPoB,OAQNT,mBAA8D,MAArD/gB,EAAYc,iBAAiBM,qBAA7DA,EAR6B,qBA4CpC,OACI,oCACI,kBAAC,GAAD,CAAQoJ,MAAOA,IACf,yBAAKsC,UAAU,sCACX,yBAAKA,UAAU,+BACV1L,EACA2D,GACD,yBAAK+H,UAAU,cACX,yBAAKA,UAAS,eAAU6R,EAAU,SAAW,YAC5C5Z,MAMb,yBAAK+H,UAAU,sCACX,yBAAKA,UAAU,+BACX,0BAAM+T,SAlDtB,SAAwBzjB,GACpBA,EAAEkjB,iBACFkB,GAAW,GAEX,IAAIC,EAAM,IAAIpP,OAAO,8FAES,IAA3B/Q,EAAgBvH,OACfqnB,EAAW,uCACqB,IAA1BK,EAAInP,KAAK/Q,GACf6f,EAAW,qIACL7f,IAAgB2f,EACtBE,EAAW,2CAEXA,EAAW,IACXG,GAAW,GACXvhB,EAAYqB,eAAeC,EAAiBC,GACvChB,KAAMC,IACHghB,GAAW,GACXJ,EAAW,iCACXG,GAAW,GACXD,GAAW,GACXL,EAAe,IACfE,EAAmB,IACnBH,EAAmB,IACf5f,GAAqBpB,EAAYF,WAExC2C,MAAQC,IACL0e,EAAW,gDACXG,GAAW,QAuBP,yBAAKzU,UAAU,cACX,2BAAOA,UAAU,qBAAqByD,QAAQ,YAA9C,oBACA,2BACIvX,KAAK,WACL8T,UAAU,eACVnW,KAAK,WACLuZ,SAAUmR,EACVhjB,MAAOiD,EACPmO,SAAWrS,GAAK4jB,EAAmB5jB,EAAEskB,cAAcrjB,OACnDmR,UAAU,IAEd,yBAAK1C,UAAU,oBAAf,uCAEJ,yBAAKA,UAAU,mBACX,2BAAOA,UAAU,qBAAqByD,QAAQ,YAA9C,gBACA,2BACIvX,KAAK,WACL8T,UAAU,eACVnW,KAAK,cACLuZ,SAAUmR,EACVhjB,MAAOkD,EACP1H,UAAW,GACX4V,SAAWrS,GAAK6jB,EAAe7jB,EAAEskB,cAAcrjB,OAC/CmR,UAAU,IAEd,yBAAK1C,UAAU,oBAAf,8BAEJ,yBAAKA,UAAU,mBACX,2BAAOA,UAAU,qBAAqByD,QAAQ,YAA9C,oBACA,2BACIvX,KAAK,WACL8T,UAAU,eACVnW,KAAK,kBACLuZ,SAAUmR,EACVhjB,MAAO6iB,EACPrnB,UAAW,GACX4V,SAAWrS,GAAK+jB,EAAmB/jB,EAAEskB,cAAcrjB,OACnDmR,UAAU,IAEd,yBAAK1C,UAAU,oBAAf,8BAEJ,yBAAKA,UAAU,oBACRuU,GACC,4BAAQvU,UAAU,4BAA4BoD,SAAU4P,GACvDA,GACG,oCAAE,0BAAMhT,UAAU,qCAAlB,QAEJ,0CAGF1L,GACE,qCACE0e,GACE,kBAAC,IAAD,CAAMhT,UAAU,yCAAyCyG,GAAE,WAA3D,UACHuM,GACG,4BAAQhT,UAAU,yCAAyCoD,UAAU,GAArE,WAKR9O,GAAuBigB,GACnB,kBAAC,IAAD,CAAMvU,UAAU,yCAAyCyG,GAAE,UAA3D,qBCtHhC,MAAMzJ,WAAgByC,IAAMkH,UACjBjH,SACH,IAAMwB,EAAc3B,GAAmB,MACjC4B,EAAc5B,GAAmB,MAEjCsV,GAA8B,IAArBhjB,KAAK6L,MAAMoX,KAAc5T,EAAYtC,kBAAoBsC,EAAYrC,gBAC9EkW,GAA8B,IAArBljB,KAAK6L,MAAMoX,KAAc3T,EAAYvC,kBAAoBuC,EAAYtC,gBAEpF,OACI,kBAAC,IAAM4K,SAAP,KACI,kBAAC,GAAD,MACA,yBAAKzJ,UAAU,YACX,2BAAK6U,GACL,2BAAKE,MAOV/X,UCWAgY,GA1BqBrO,IAEhC,MAAMsO,UAA0BxV,IAAMkH,UAElCb,oBAEIjU,KAAK6L,MAAMvF,qBAGfuH,SAAU,IACKhC,EADN,iBACgB7L,KAAK6L,OAE1B,OAAkC,IAA9B7L,KAAK6L,MAAMtF,eAAqD,IAA7BvG,KAAK6L,MAAMtF,cACtC,kBAAC,GAAD,CAAS0c,KAAMjjB,KAAK6L,MAAMtF,gBAG9B,kBAACuO,EAAcjJ,IAI/B,OAAOmD,YACFzF,GAA4BA,EAAMzD,kBACnCoV,EAFGlM,CAGLoU,ICtBS,I,OAAA,IACX,gBAACC,GAAD,KACI,gBAAC,IAAD,CAAOC,OAAK,EAACC,KAAK,IAAIC,UAAWxP,KACjC,gBAAC,IAAD,CAAOuP,KAAK,yBAAyBC,UAAWxP,KAEhD,gCACI,gBAAC,IAAD,CAAOuP,KAAK,mBAAmBC,UAAWL,GAAS9M,MACnD,gBAAC,IAAD,CAAOkN,KAAK,yBAAyBC,UAAWL,GAASrL,MACzD,gBAAC,IAAD,CAAOyL,KAAK,yBAAyBC,UAAWL,GAASxC,MACzD,gBAAC,IAAD,CAAO4C,KAAK,UAAUC,UAAWL,GAAStO,MAC1C,gBAAC,IAAD,CAAO0O,KAAK,YAAYC,UAAWL,GAAStC,MAC5C,gBAAC,IAAD,CAAO0C,KAAK,SAASC,UAAWzC,KAChC,gBAAC,IAAD,CAAOwC,KAAK,kBAAkBC,UAAWL,GAAShB,SCdxDsB,GAAUlpB,SAASmpB,qBAAqB,QAAQ,GAAGC,aAAa,QAIhEC,GCZS,SAAwBnP,EAAkBoP,GACrD,IAAMC,EAAa,CACfC,IACAC,YAAiBvP,IAGfwP,EAAcC,YAAgB,eAC7B5a,EAD4B,CAE/B6a,OAAQC,YAAc3P,MAGpB4P,EAAY,GACZC,EAAoC,qBAAX5gB,OAAyB,KAAOA,OAK/D,OAJI4gB,GAAmBA,EAAgBC,8BACnCF,EAAU9Z,KAAK+Z,EAAgBC,gCAG5BC,YACHP,EACAJ,EACAY,YAAQC,eAAmBZ,MAAgBO,IDRrCM,CAHEC,YAAqB,CAAEC,SAAUpB,MAKjDqB,SACI,gBAAC,IAAD,CAAUlB,MAAOA,IACb,gBAAC,IAAD,KACI,gBAACmB,GAAD,QAGRxqB,SAASyqB,eAAe,U,mBE1B5BC,EAAOC,QAAU,IAA0B,qC,mBCA3CD,EAAOC,QAAU,IAA0B,qC,mBCA3CD,EAAOC,QAAU,IAA0B,kC","file":"static/js/main.b2a4f6fb.chunk.js","sourcesContent":["export class QuestionTypeModel {\n\n public id: number = 0;\n public name: string = '';\n public code: string = '';\n public defaultRegex: string = '';\n\n}\n","export const Can_Display_Admin_UI = true;\n\nexport const QuestionType_Phone = 'PHONE';\nexport const QuestionType_Email = 'EMAIL';\nexport const QuestionType_Text = 'TEXT';\nexport const QuestionType_MCQ = 'MCQ';\nexport const QuestionType_MATRIX = 'MATRIX';\n\nexport const PDF_MatrixRowAndColumn_Seperator = ': ';\nexport const CSV_MatrixRowAndColumn_Seperator = ': ';\nexport const MatrixRowAndColumnText_Seperator = '~||~';\nexport const McqOption_Seperator = ',';\nexport const McqOption_OtherMcq = 'OTHER_MCQ';\n\n\nexport const SurveryState_Draft = 'DRAFT';\nexport const SurveryState_Published = 'PUBLISHED';\n\nexport const Token_Name = 'opusertoken';\n\nexport enum SurveyEditSteps {\n UnableToLoad = -1,\n Loading = 0,\n Start = 1,\n Group = 2,\n Question = 3,\n Summary = 4,\n Endnote = 5,\n Preview = 6,\n Publish = 7,\n}\n\nexport enum EditObject {\n Survey = 1,\n Question,\n Group,\n SearchState\n}\n\nexport enum MoveDirection {\n Up = 1,\n Down,\n}\n\nexport enum BreakPointEnum {\n 'xs',\n 'sm',\n 'md',\n 'lg',\n 'xl',\n 'xxl',\n}\n","import { GroupModel } from \"../models/group.model\";\r\nimport { QuestionModel } from \"../models/question.model\";\r\nimport { QuestionTypeModel } from \"../models/questionType.model\";\r\nimport { SurveyModel } from \"../models/survey.model\";\r\nimport { BreakPointEnum } from \"./constants\";\r\n\r\n//extend Navigator in global to avoid following error\r\n//Property 'msSaveBlob' does not exist on type 'Navigator'.ts(2339)\r\ndeclare global{\r\n interface Navigator{\r\n msSaveBlob:(blob: Blob,fileName:string) => boolean\r\n }\r\n}\r\n\r\nexport function GetDateString(date: Date, dateWithTime: boolean) {\r\n date = new Date(date.toString());\r\n\r\n if (date && date !== null && date !== undefined) {\r\n var month = (+date.getMonth()+1);\r\n return (\r\n date.getFullYear() + '-' +\r\n appendZeroWhenLessThanTen(month) + '-' +\r\n appendZeroWhenLessThanTen(date.getDate()) +\r\n (dateWithTime\r\n ?\r\n ' ' +\r\n appendZeroWhenLessThanTen(date.getHours()) + ':' +\r\n appendZeroWhenLessThanTen(date.getMinutes()) + ':' +\r\n appendZeroWhenLessThanTen(date.getSeconds())\r\n :\r\n ''\r\n ));\r\n }\r\n\r\n return '';\r\n}\r\n\r\nexport function appendZeroWhenLessThanTen(num: number) {\r\n return num < 10 ? '0' + num : num\r\n}\r\n\r\nexport function sanatizeStringForCsv(text: string): string {\r\n\r\n let result = text;\r\n \r\n if (result === null || result === undefined)\r\n result = '';\r\n\r\n\r\n result = result.replace(/\"/g, '\"\"');\r\n if (result.search(/(\"|,|\\n)/g) >= 0)\r\n result = '\"' + result + '\"';\r\n\r\n return result;\r\n}\r\nexport function GetFileName(fileName: string | null, extension: string): string {\r\n const date = new Date();\r\n\r\n let todaysDate = `${date.getFullYear()}-${date.getMonth()+1}-${date.getDate()}`; \r\n\r\n return `${todaysDate}-raw data_${(fileName || \"download\")}.${extension}`;\r\n\r\n}\r\nexport function DownloadCsv(csvData: string, linkCode: string) {\r\n const fileName = GetFileName(linkCode, 'csv');\r\n\r\n if (navigator.msSaveBlob) { // IE 10+ \r\n navigator.msSaveBlob(new Blob(['\\ufeff' + csvData], { type: 'text/csv;charset=utf-8;' }), fileName.replace(/ /g, \"_\"));\r\n }\r\n else {\r\n\r\n var link = document.createElement('a');\r\n link.setAttribute('href', 'data:text/csv;charset=utf-8,\\ufeff' + encodeURI(csvData));\r\n link.setAttribute('download', fileName.replace(/ /g, \"_\"));\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n}\r\n\r\nexport function validateString(checkCondition: boolean, text: string, minLength: number, maxLength: number) {\r\n if (checkCondition === false)\r\n return true;\r\n\r\n if (text === null || text === undefined)\r\n text = '';\r\n \r\n if (text.trim().length < minLength)\r\n return false;\r\n\r\n if (maxLength >= 0 && text.trim().length > maxLength)\r\n return false;\r\n \r\n return true;\r\n} \r\n\r\n export function changeLangSurvey(survey: SurveyModel, lang : string): SurveyModel {\r\n \r\n const resultSurvey: SurveyModel = {...survey};\r\n\r\n if (lang.startsWith('f')) {\r\n resultSurvey.endNotes = survey.endNotesFr;\r\n resultSurvey.title = survey.titleFr;\r\n resultSurvey.startNotes = survey.startNotesFr;\r\n } else {\r\n resultSurvey.endNotes = survey.endNotesEn;\r\n resultSurvey.title = survey.titleEn;\r\n resultSurvey.startNotes = survey.startNotesEn;\r\n }\r\n\r\n resultSurvey.questions = changeLangQuestions(survey.questions, lang);\r\n resultSurvey.groups = changeLangGroups(survey.groups, lang);\r\n \r\n return resultSurvey;\r\n}\r\n\r\nexport function changeLangQuestions(questions: QuestionModel[], lang : string) : QuestionModel[] {\r\n let resultQuestions: QuestionModel[];\r\n resultQuestions = [...questions];\r\n\r\n if (lang.startsWith('f')) {\r\n resultQuestions = questions.map(x => \r\n {\r\n return {...x,\r\n question: x.questionFr,\r\n placeholder: x.placeholderFr, \r\n errorMessage: x.errorMessageFr,\r\n mcqOptions: x.mcqOptions.map(o => {\r\n return {...o,\r\n option: o.optionFr\r\n }\r\n })\r\n }\r\n });\r\n } else {\r\n resultQuestions = questions.map(x => \r\n {\r\n return {...x,\r\n question: x.questionEn,\r\n placeholder: x.placeholderEn, \r\n errorMessage: x.errorMessageEn,\r\n mcqOptions: x.mcqOptions.map(o => {\r\n return {...o,\r\n option: o.optionEn\r\n }\r\n })\r\n }\r\n });\r\n }\r\n\r\n return resultQuestions;\r\n}\r\n\r\nexport function changeLangGroups(questions: GroupModel[], lang : string) : GroupModel[] {\r\n let resultGroup: GroupModel[];\r\n resultGroup = [...questions];\r\n\r\n if (lang.startsWith('f')) {\r\n resultGroup = questions.map(x => \r\n {\r\n return {...x,\r\n groupHeading: x.groupHeadingFr,\r\n groupSubHeading: x.groupSubHeadingFr\r\n }\r\n });\r\n } else {\r\n resultGroup = questions.map(x => \r\n {\r\n return {...x,\r\n groupHeading: x.groupHeadingEn,\r\n groupSubHeading: x.groupSubHeadingEn\r\n }\r\n });\r\n }\r\n\r\n return resultGroup;\r\n}\r\n\r\nexport function isRadio(minMcqOption: number, maxMcqOption: number): boolean {\r\n return ((maxMcqOption === 1) ||\r\n (minMcqOption === -1 && maxMcqOption === -1));\r\n}\r\n\r\nexport function isValidDate(d: any) {\r\n d = new Date(d);\r\n return d instanceof Date && !isNaN(Number(d));\r\n}\r\n\r\nexport function getQuestionTypeByCode(arrQuestionType: QuestionTypeModel[], code: string): QuestionTypeModel {\r\n\r\n const result = arrQuestionType.find(e => e.code === code);\r\n\r\n if (result)\r\n return result;\r\n\r\n return new QuestionTypeModel();\r\n\r\n}\r\n\r\nexport function getBreakpoint(): BreakPointEnum {\r\n var width = window.innerWidth;\r\n\r\n if ( width >= 1400) return BreakPointEnum.xxl;\r\n if ( width >= 1200) return BreakPointEnum.xl;\r\n if ( width >= 992) return BreakPointEnum.lg;\r\n if ( width >= 768) return BreakPointEnum.md;\r\n if ( width >= 576) return BreakPointEnum.sm;\r\n //if ( width < 576) \r\n return BreakPointEnum.xs; \r\n}\r\n\r\nexport function parseJSON(jsonString: string | null) {\r\n\r\n try{\r\n return JSON.parse(jsonString || '');\r\n } catch {\r\n }\r\n\r\n return {};\r\n}\r\n","import { GroupModel } from \"./group.model\";\r\nimport { QuestionModel } from \"./question.model\";\r\nimport { SubmissionModel } from \"./Submission.model\";\r\n\r\nexport class SurveyModel {\r\n public surveyId: number = 0;\r\n \r\n public name: string = '';\r\n\r\n public titleEn: string = '';\r\n public titleFr: string = '';\r\n public title: string = '';\r\n \r\n public startNotesEn: string = '';\r\n public startNotesFr: string = '';\r\n public startNotes: string = '';\r\n \r\n public endNotesEn: string = '';\r\n public endNotesFr: string = '';\r\n public endNotes: string = '';\r\n \r\n public statusId: number = 0;\r\n public newStatusId: number = 0;\r\n \r\n public startDate: Date = new Date();\r\n public endDate: Date = new Date();\r\n\r\n public groups: GroupModel[] = [];\r\n \r\n public questions: QuestionModel[] = [];\r\n\r\n public submissions: SubmissionModel[] = []; \r\n}\r\n","export class SurveySubmissionModel {\r\n public code: string = '';\r\n\r\n public Answers: AnswerIdValueModel[] = [];\r\n}\r\n\r\nexport class AnswerIdValueModel {\r\n public questionId: number = -1;\r\n public answerId: number = 0;\r\n\r\n public answer: string = '';\r\n public mcqAnswers: McqAnswerModel[] = [];\r\n public matrixAnswers: MatrixAnswerModel[] = [];\r\n \r\n\r\n constructor(key: number, value: string, mcqAnswers: McqAnswerModel[], matrixAnswers: MatrixAnswerModel[]) {\r\n this.questionId = key;\r\n this.answer = value;\r\n this.mcqAnswers = mcqAnswers;\r\n this.matrixAnswers = matrixAnswers;\r\n }\r\n}\r\n\r\nexport class McqAnswerModel {\r\n public mcqOptionId: number = -1;\r\n public mcqAnswerId: number = -1;\r\n public answerEn: string = '';\r\n public answerFr: string = '';\r\n\r\n constructor(mcqOptionId: number, answerEn: string, answerFr: string) {\r\n this.mcqOptionId = mcqOptionId;\r\n this.answerEn = answerEn;\r\n this.answerFr = answerFr;\r\n }\r\n}\r\n\r\nexport class MatrixAnswerModel {\r\n public matrixAnswerId: number = -1;\r\n public matrixColumnId: number = -1;\r\n public matrixRowId: number = -1;\r\n public answerEn: string = '';\r\n public answerFr: string = '';\r\n\r\n constructor(matrixRowId: number, matrixColumnId: number, answerEn: string, answerFr: string) {\r\n this.matrixRowId = matrixRowId;\r\n this.matrixColumnId = matrixColumnId;\r\n this.answerEn = answerEn;\r\n this.answerFr = answerFr;\r\n }\r\n}\r\n","import { Token_Name } from \"../common/constants\";\r\nimport { parseJSON } from \"../common/helperFunctions\";\r\n\r\nexport default function authHeader(httpMethod: 'GET'|'POST'|'DELETE', body: string, url: string) {\r\n const user = parseJSON(localStorage.getItem(Token_Name));\r\n if (user && user.accessToken) {\r\n \r\n const header: any = {\r\n 'method': httpMethod,\r\n 'headers': new Headers({ \r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + user.accessToken })\r\n };\r\n \r\n if (body && body !== undefined)\r\n header['body'] = body;\r\n\r\n if (url && url !== undefined)\r\n header['url'] = url;\r\n \r\n return header;\r\n\r\n } else {\r\n return {};\r\n }\r\n }","import axios from \"axios\";\r\nimport { Token_Name } from \"../common/constants\";\r\nimport { parseJSON } from \"../common/helperFunctions\";\r\nimport { authModel } from \"../models/Auth.model\";\r\nimport authHeader from \"./auth-header\";\r\nconst API_URL = \"/account/\";\r\n\r\nconst verifyCode = (emailAddress: string, code: string, token: string) => {\r\n return axios\r\n .post(API_URL + \"verifyCode\", {\r\n emailAddress,\r\n code,\r\n token\r\n })\r\n .then((response) => {\r\n if (response.data) {\r\n localStorage.setItem(Token_Name, JSON.stringify(response.data));\r\n }\r\n return response.data;\r\n });\r\n};\r\n\r\nconst login = (emailAddress: string, password: string) => {\r\n return axios\r\n .post(API_URL + \"signin\", {\r\n emailAddress,\r\n password,\r\n })\r\n .then((response) => {\r\n if (response.data) {\r\n localStorage.setItem(Token_Name, JSON.stringify(response.data));\r\n }\r\n return response.data;\r\n });\r\n};\r\n\r\nconst changePassword = (currentPassword: string, newPassword: string) => {\r\n return fetch(API_URL + \"ChangePassword\", authHeader(\"POST\", JSON.stringify({\r\n currentPassword,\r\n newPassword,\r\n }), ''))\r\n .then(response => {\r\n if (!response.ok) {\r\n throw new Error('Unable to save');\r\n }\r\n return response;\r\n });\r\n\r\n};\r\n\r\nconst logout = () => {\r\n localStorage.removeItem(Token_Name);\r\n};\r\n\r\nconst getCurrentUser = (): authModel => {\r\n const userStr = localStorage.getItem(Token_Name);\r\n const today = new Date();\r\n if (userStr === null) {\r\n return {\r\n accessToken:'',\r\n token:'',\r\n firstName:'',\r\n lastName:'',\r\n expiry: today,\r\n forceChangePassword: ''\r\n }\r\n }\r\n const user = parseJSON(userStr);\r\n\r\n if (user.expiry <= today){\r\n logout();\r\n }\r\n\r\n return user;\r\n};\r\n\r\nconst AuthService = {\r\n login,\r\n verifyCode,\r\n logout,\r\n getCurrentUser,\r\n changePassword,\r\n};\r\nexport default AuthService;","import produce from 'immer';\r\nimport { Action, Reducer } from 'redux';\r\nimport { changeLangSurvey, isRadio } from '../common/helperFunctions';\r\nimport { SurveyModel } from '../models/survey.model';\r\nimport { AnswerIdValueModel, MatrixAnswerModel, McqAnswerModel, SurveySubmissionModel } from '../models/SurveySubmission.model';\r\nimport { AppThunkAction } from './';\r\nimport * as fromConstants from '../common/constants';\r\nimport { MatrixRowAndColumnText_Seperator } from '../common/constants';\r\nimport authHeader from '../services/auth-header';\r\nimport AuthService from '../services/auth.service';\r\n\r\n// -----------------\r\n// STATE - This defines the type of data maintained in the Redux store.\r\n\r\nexport interface DataState {\r\n isLoading: boolean,\r\n isSubmitted: boolean,\r\n errorInSubmit: boolean,\r\n language: string,\r\n step: number,\r\n surveyCode: string,\r\n survey: SurveyModel,\r\n}\r\n\r\nexport const FETCH_SURVEY = '[SURVEY] FETCH_SURVEY';\r\nexport const RECEIVE_SURVEY = '[SURVEY] RECEIVE_SURVEY';\r\nexport const SUBMIT_SURVEY = '[SURVEY] SUBMIT_SURVEY';\r\nexport const MOVE_NEXT_STEP = '[SURVEY] MOVE_NEXT_STEP';\r\nexport const SET_VALIDATION_STATUS = '[SURVEY] SET_VALIDATION_STATUS';\r\nexport const SET_VALIDATION_STATUS_AND_VALUE = '[SURVEY] SET_VALIDATION_STATUS_AND_VALUE';\r\nexport const SET_SUBMISSION_FLAG = '[SURVEY] SET_SUBMISSION_FLAG';\r\nexport const SET_LANGUAGE = '[SURVEY] SET_LANGUAGE';\r\n\r\ninterface FetchSurveyAction {\r\n type: string;\r\n surveyCode: string;\r\n survey: SurveyModel;\r\n}\r\n\r\ninterface ReceiveSurveyAction {\r\n type: string;\r\n surveyCode: string;\r\n survey: SurveyModel;\r\n}\r\n\r\ninterface SubmitSurveyAction {\r\n type: string;\r\n errorInSubmit: boolean\r\n}\r\n\r\ninterface MoveNextStepSurveyAction {\r\n type: string;\r\n step?: number;\r\n}\r\n\r\ninterface SetValidationStatusAction {\r\n type: string;\r\n questionId: number;\r\n validationStatus: boolean;\r\n}\r\n\r\ninterface SetValidationStatusAndValueAction {\r\n type: string;\r\n answerValue: AnswerValue;\r\n}\r\n\r\ninterface AnswerValue {\r\n questionId: number;\r\n optionId: number;\r\n columnId: number;\r\n rowId: number;\r\n\r\n text: string;\r\n isChecked: boolean;\r\n isOtherTextBoxChanged: boolean;\r\n isValid: boolean;\r\n isSubmitted: boolean;\r\n}\r\n\r\ninterface SetSubmissionFlagAction {\r\n type: string;\r\n}\r\n\r\ninterface SetLanguageSurveyAction {\r\n type: string;\r\n language: string;\r\n moveNext: boolean;\r\n}\r\n\r\n\r\ntype KnownAction = \r\n FetchSurveyAction\r\n | ReceiveSurveyAction\r\n | SubmitSurveyAction\r\n | MoveNextStepSurveyAction\r\n | SetValidationStatusAction\r\n | SetValidationStatusAndValueAction\r\n | SetSubmissionFlagAction\r\n | SetLanguageSurveyAction;\r\n\r\n\r\n export const actionCreators = {\r\n MoveNextStep: (step?: number): AppThunkAction => \r\n (dispatch, getState) => {\r\n const appState = getState();\r\n if (appState && appState.surveyStore && appState.surveyStore.surveyCode) {\r\n dispatch({ type: MOVE_NEXT_STEP, step: step });\r\n }\r\n },\r\n RequestSurvey: (surveyCode: string): AppThunkAction => \r\n (dispatch, getState) => {\r\n const appState = getState();\r\n if (appState && appState.surveyStore && surveyCode !== appState.surveyStore.surveyCode) {\r\n const baseurl = window.location.origin;\r\n\r\n const user = AuthService.getCurrentUser();\r\n\r\n // const url = (baseurl.indexOf(\"uat\") > -1 || baseurl.indexOf(\"admin\") > -1 || baseurl.indexOf(\"localhost\") > -1) ? 'admin/SearchDraftByLink' : 'Survey/SearchByLink';\r\n let url = 'Survey/SearchByLink';\r\n if (user.accessToken)\r\n url = 'admin/SearchDraftByLink' ;\r\n\r\n fetch(`/${url}/${surveyCode}`, authHeader(\"GET\", '', ''))\r\n .then(response => response.json() as Promise)\r\n .then(data => {\r\n dispatch({ type: RECEIVE_SURVEY, surveyCode: surveyCode, survey: data });\r\n })\r\n .catch(error => {\r\n dispatch({ type: MOVE_NEXT_STEP, step: -1 });\r\n });\r\n\r\n dispatch({ type: FETCH_SURVEY, surveyCode: surveyCode, survey: new SurveyModel() });\r\n //} else if (appState && appState.survey && appState.survey.surveyCode) {\r\n // dispatch({ type: MOVE_NEXT_STEP, step: -1 });\r\n } else if (surveyCode === '') {\r\n dispatch({ type: MOVE_NEXT_STEP, step: -1 });\r\n }\r\n },\r\n SubmitSurvey: (isValid: boolean): AppThunkAction => \r\n (dispatch, getState) => {\r\n const appState = getState();\r\n if (isValid && appState && appState.surveyStore && appState.surveyStore.surveyCode !== null) {\r\n const rqst = new SurveySubmissionModel();\r\n rqst.code = appState.surveyStore.surveyCode;\r\n\r\n rqst.Answers = appState.surveyStore.survey.questions.map(a => \r\n new AnswerIdValueModel(\r\n a.questionId, a.value,\r\n (a.mcqAnswers || []).map(x => new McqAnswerModel(x.mcqOptionId, x.answerEn, x.answerFr) ),\r\n (a.matrixAnswers || []).map(x => new MatrixAnswerModel(x.matrixRowId, x.matrixColumnId, x.answerEn, x.answerFr) )\r\n )\r\n );\r\n\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(rqst)\r\n };\r\n\r\n fetch('/Survey/Submit', requestOptions)\r\n .then(response => {\r\n if (response.ok)\r\n dispatch({ type: MOVE_NEXT_STEP, step: undefined });\r\n else\r\n dispatch({ type: SUBMIT_SURVEY, errorInSubmit: true });\r\n })\r\n .catch(error => {\r\n dispatch({ type: SUBMIT_SURVEY, errorInSubmit: true });\r\n });\r\n\r\n }\r\n\r\n dispatch({ type: SET_SUBMISSION_FLAG, errorInSubmit: false });\r\n },\r\n SetValidationStatus: ( questionId: number, validationStatus: boolean ): AppThunkAction => \r\n (dispatch, getState) => {\r\n const appState = getState();\r\n if (appState && appState.surveyStore && appState.surveyStore.surveyCode) {\r\n dispatch({ type: SET_VALIDATION_STATUS, questionId, validationStatus });\r\n }\r\n },\r\n SetValidationStatusAndValue: ( answerValue: AnswerValue ): AppThunkAction => \r\n (dispatch, getState) => {\r\n const appState = getState();\r\n if (appState && appState.surveyStore && appState.surveyStore.surveyCode) {\r\n dispatch({ type: SET_VALIDATION_STATUS_AND_VALUE, answerValue: answerValue });\r\n }\r\n },\r\n SetLanguage: (language: string, moveNext: boolean ): AppThunkAction => \r\n (dispatch, getState) => {\r\n const appState = getState();\r\n if (appState && appState.surveyStore && appState.surveyStore.surveyCode) {\r\n dispatch({ type: SET_LANGUAGE, language: language, moveNext: moveNext });\r\n }\r\n }\r\n};\r\n\r\nconst unloadedState: DataState = {\r\n isLoading: false,\r\n isSubmitted: false,\r\n errorInSubmit: false,\r\n language: 'en',\r\n surveyCode: '',\r\n step: 0,\r\n survey: new SurveyModel()\r\n};\r\n\r\nexport const reducer: Reducer = (state: DataState = unloadedState, incomingAction: Action): DataState => {\r\n if (state === undefined) {\r\n return unloadedState;\r\n }\r\n\r\n\r\n if (incomingAction.type === FETCH_SURVEY) {\r\n const action = incomingAction as FetchSurveyAction;\r\n return {...state,\r\n isLoading: true,\r\n surveyCode: action.surveyCode,\r\n step: 0,\r\n survey: new SurveyModel()\r\n };\r\n } else if (incomingAction.type === RECEIVE_SURVEY) {\r\n const action = incomingAction as ReceiveSurveyAction;\r\n if (action.surveyCode === state.surveyCode) {\r\n return {...state,\r\n isLoading: false,\r\n surveyCode: action.surveyCode,\r\n step: 1,\r\n survey: changeLangSurvey(action.survey, state.language)\r\n };\r\n }\r\n } else if (incomingAction.type === SUBMIT_SURVEY) {\r\n const action = incomingAction as SubmitSurveyAction;\r\n\r\n return { ...state, isSubmitted: true, errorInSubmit: action.errorInSubmit };\r\n } else if (incomingAction.type === MOVE_NEXT_STEP) {\r\n const action = incomingAction as MoveNextStepSurveyAction;\r\n let stepLevel = state.step + 1;\r\n\r\n if (action.step !== undefined)\r\n stepLevel = action.step;\r\n\r\n return {\r\n ...state,\r\n step: stepLevel\r\n }\r\n } else if (incomingAction.type === SET_VALIDATION_STATUS) {\r\n const action = incomingAction as SetValidationStatusAction;\r\n\r\n const q = state.survey.questions.findIndex( f=> f.questionId === action.questionId);\r\n\r\n if (q === -1 || state.survey.questions[q].isValid === action.validationStatus)\r\n return state;\r\n\r\n var newState = produce(state, draftSate => {\r\n if (state.isSubmitted) {\r\n draftSate.survey.questions[q].isValid = action.validationStatus;\r\n }\r\n });\r\n\r\n return newState;\r\n\r\n } else if (incomingAction.type === SET_VALIDATION_STATUS_AND_VALUE) {\r\n const action = incomingAction as SetValidationStatusAndValueAction;\r\n \r\n const q = state.survey.questions.findIndex( f=> f.questionId === action.answerValue.questionId);\r\n\r\n if (q === -1)\r\n return state;\r\n\r\n var newStateResult = produce(state, draftSate => {\r\n if (state.survey.questions[q].code === fromConstants.QuestionType_MCQ) {\r\n if (state.isSubmitted || action.answerValue.isSubmitted) {\r\n draftSate.survey.questions[q].isValid = action.answerValue.isValid;\r\n }\r\n\r\n let answerList = [ ...(state.survey.questions[q].mcqAnswers || [])];\r\n\r\n if (action.answerValue.isChecked === false ) {\r\n const ansIndex = answerList.findIndex(f => f.mcqOptionId === action.answerValue.optionId);\r\n\r\n if (ansIndex >= 0) {\r\n draftSate.survey.questions[q].mcqAnswers.splice(ansIndex, 1);\r\n }\r\n } else if (action.answerValue.isOtherTextBoxChanged) {\r\n\r\n const mcqOption = state.survey.questions[q].mcqOptions.find(f=> f.isOther === true);\r\n\r\n if (mcqOption) {\r\n const ansIndex = answerList.findIndex(f => f.mcqOptionId === mcqOption.mcqOptionId);\r\n\r\n if (state.survey.questions[q].maxMcqValues <= 1)\r\n draftSate.survey.questions[q].mcqAnswers = [];\r\n\r\n if (ansIndex < 0) {\r\n answerList.push(new McqAnswerModel(mcqOption.mcqOptionId, mcqOption.optionEn, mcqOption.optionFr));\r\n } else {\r\n answerList[ansIndex].answerEn = action.answerValue.text;\r\n answerList[ansIndex].answerFr = action.answerValue.text;\r\n }\r\n \r\n draftSate.survey.questions[q].mcqAnswers = answerList;\r\n }\r\n } else {\r\n let mcqOption = state.survey.questions[q].mcqOptions.find(f=> f.mcqOptionId === action.answerValue.optionId);\r\n\r\n const ansIndex = answerList.findIndex(f => f.mcqOptionId === action.answerValue.optionId);\r\n \r\n if (ansIndex < 0 && mcqOption) {\r\n \r\n if (isRadio(state.survey.questions[q].minMcqValues, state.survey.questions[q].maxMcqValues))\r\n answerList = [];\r\n \r\n if (mcqOption.isOther)\r\n answerList.push(new McqAnswerModel(mcqOption.mcqOptionId, '',''));\r\n else\r\n answerList.push(new McqAnswerModel(mcqOption.mcqOptionId, mcqOption.optionEn, mcqOption.optionFr));\r\n\r\n draftSate.survey.questions[q].mcqAnswers = answerList;\r\n }\r\n }\r\n } if (state.survey.questions[q].code === fromConstants.QuestionType_MATRIX) {\r\n if (state.isSubmitted || action.answerValue.isSubmitted) {\r\n draftSate.survey.questions[q].isValid = action.answerValue.isValid;\r\n }\r\n\r\n////////////////////\r\n\r\nlet matrixAnswerList = [ ...(state.survey.questions[q].matrixAnswers || [])];\r\n\r\nif (action.answerValue.isChecked === false ) {\r\n const ansIndex = matrixAnswerList.findIndex(f => f.matrixRowId === action.answerValue.rowId && f.matrixColumnId === action.answerValue.columnId);\r\n\r\n if (ansIndex >= 0) {\r\n draftSate.survey.questions[q].matrixAnswers.splice(ansIndex, 1);\r\n }\r\n} else {\r\n let matrixCol = state.survey.questions[q].matrixColumns.find(f=> f.matrixId === action.answerValue.columnId);\r\n let matrixRow = state.survey.questions[q].matrixRows.find(f=> f.matrixId === action.answerValue.rowId);\r\n\r\n if (matrixCol && matrixRow) {\r\n \r\n matrixAnswerList = matrixAnswerList.filter(f => f.matrixRowId !== action.answerValue.rowId);\r\n \r\n matrixAnswerList.push(new MatrixAnswerModel(matrixRow.matrixId, matrixCol.matrixId, \r\n matrixRow.textEn + MatrixRowAndColumnText_Seperator + matrixCol.textEn, \r\n matrixRow.textFr + MatrixRowAndColumnText_Seperator + matrixCol.textFr));\r\n\r\n draftSate.survey.questions[q].matrixAnswers = matrixAnswerList;\r\n }\r\n}\r\n///////////////////\r\n\r\n } else {\r\n if (state.isSubmitted || action.answerValue.isSubmitted) {\r\n draftSate.survey.questions[q].isValid = action.answerValue.isValid;\r\n }\r\n\r\n draftSate.survey.questions[q].value = action.answerValue.text;\r\n }\r\n });\r\n\r\n return newStateResult;\r\n\r\n } else if (incomingAction.type === SET_SUBMISSION_FLAG) {\r\n // const action = incomingAction as SetSubmissionFlagAction;\r\n\r\n return { ...state, isSubmitted: true };\r\n\r\n } else if (incomingAction.type === SET_LANGUAGE) {\r\n const action = incomingAction as SetLanguageSurveyAction;\r\n\r\n const step = action.moveNext ? state.step + 1 :state.step;\r\n return{\r\n ...state,\r\n language: action.language,\r\n step: step,\r\n survey: changeLangSurvey(state.survey, action.language)\r\n }\r\n }\r\n\r\n return state;\r\n};\r\n","export class GroupModel {\n public groupId: number = -99;\n public groupHeading: string = '';\n public groupHeadingEn: string = '';\n public groupHeadingFr: string = '';\n public groupSubHeading: string = '';\n public groupSubHeadingEn: string = '';\n public groupSubHeadingFr: string = '';\n}","import { MatrixRowColumnModel, McqOptionModel } from \"./mcq-option.model\";\r\nimport { MatrixAnswerModel, McqAnswerModel } from \"./SurveySubmission.model\";\r\n\r\nexport class QuestionModel {\r\n public questionId: number = 0;\r\n \r\n public questionEn: string = '';\r\n public questionFr: string = '';\r\n public question: string = '';\r\n \r\n public placeholderEn: string = '';\r\n public placeholderFr: string = '';\r\n public placeholder: string = ''; \r\n \r\n public errorMessageEn: string = '';\r\n public errorMessageFr: string = '';\r\n public errorMessage: string = '';\r\n \r\n public groupId: number = 0;\r\n public questionTypeId: number = 1;\r\n\r\n public isMandatory: boolean = false;\r\n public maxCharacterLimit: number = 10;\r\n public code: string = 'TEXT';\r\n public defaultRegex: string = '';\r\n public isValid: boolean = true;\r\n public value: string = '';\r\n\r\n public maxMcqValues: number = -1;\r\n public minMcqValues: number = -1;\r\n \r\n public mcqOptions: McqOptionModel[] = [];\r\n public mcqAnswers: McqAnswerModel[] = [];\r\n\r\n public matrixAnswers: MatrixAnswerModel[] = [];\r\n\r\n public matrixRows: MatrixRowColumnModel[] = [];\r\n public matrixColumns: MatrixRowColumnModel[] = [];\r\n\r\n}","import produce from 'immer';\nimport { Action, Reducer } from 'redux';\nimport { changeLangSurvey } from '../common/helperFunctions';\nimport { EditObject } from '../common/constants';\nimport { GroupModel } from '../models/group.model';\nimport { QuestionModel } from '../models/question.model';\nimport { SurveyModel } from '../models/survey.model';\nimport { QuestionTypeModel } from '../models/questionType.model';\nimport { SearchState } from '../models/SearchState.model';\nimport { AppThunkAction } from './';\nimport { MatrixRowColumnModel, McqOptionModel } from '../models/mcq-option.model';\nimport * as constants from '../common/constants';\nimport { SurveyEditSteps } from '../common/constants';\nimport { arrayMove } from 'react-sortable-hoc';\nimport { SurveyListModel } from '../models/searchSurvey.model';\nimport authHeader from '../services/auth-header';\nimport AuthService from '../services/auth.service';\n\nexport interface DataState {\n canLoadUIFlag: number, // -1 = not loaded from server, 0 = cannot load, 1 = can load\n isLoading: boolean,\n isSubmitted: boolean,\n errorInSubmit: boolean,\n SubmitMessage: string,\n tag: number,\n step: number,\n language: string,\n surveyId: string,\n survey: SurveyModel,\n surveyCopy: SurveyModel,\n isSurveyDirty: boolean;\n\n questionType: QuestionTypeModel[],\n surveyStatusList: QuestionTypeModel[],\n surveyStatusPublishedId: number;\n\n questionIndex: number,\n editQuestion: QuestionModel,\n \n groupIndex: number,\n editGroup: GroupModel,\n searchState: SearchState\n}\n\nexport const FETCH_SURVEY_LIST = '[CREATE SURVEY] FETCH_SURVEY_LIST';\n\nexport const FETCH_SURVEY = '[CREATE SURVEY] FETCH_SURVEY';\nexport const RECEIVE_SURVEY = '[CREATE SURVEY] RECEIVE_SURVEY';\nexport const RECEIVE_QUESTION_TYPE = '[CREATE SURVEY] RECEIVE_QUESTION_TYPE';\nexport const RECEIVE_SURVEY_STATUS_LIST = '[CREATE SURVEY] RECEIVE_SURVEY_STATUS_LIST';\nexport const SET_PROPERTY = '[CREATE SURVEY] SET_PROPERTY';\nexport const COPY_QUESTION = '[CREATE SURVEY] COPY_QUESTION';\nexport const START_EDIT_QUESTION = '[CREATE SURVEY] START_EDIT_QUESTION';\nexport const END_EDIT_QUESTION = '[CREATE SURVEY] END_EDIT_QUESTION';\nexport const MOVE_QUESTION = '[CREATE SURVEY] MOVE_QUESTION';\nexport const DELETE_QUESTION = '[CREATE SURVEY] DELETE_QUESTION';\n\nexport const START_EDIT_GROUP = '[CREATE SURVEY] START_EDIT_GROUP';\nexport const END_EDIT_GROUP = '[CREATE SURVEY] END_EDIT_GROUP';\n\n\nexport const QUESTION_CHANGE_GROUP = '[CREATE SURVEY] QUESTION_CHANGE_GROUP';\nexport const DELETE_GROUP = '[CREATE SURVEY] DELETE_GROUP';\n\nexport const UPDATE_MCQ_OPTION = '[CREATE SURVEY] UPDATE_MCQ_OPTION';\n\nexport const UPDATE_MATRIX_OPTION = '[CREATE SURVEY] UPDATE_MATRIX_OPTION';\n\nexport const MOVE_NEXT_STEP = '[CREATE SURVEY] MOVE_NEXT_STEP';\nexport const SET_CAN_LOAD_UI_FLAG = '[CREATE SURVEY] SET_CAN_LOAD_UI_FLAG';\nexport const SET_SUBMIT_STATUS = '[CREATE SURVEY] SET_SUBMIT_STATUS';\nexport const SET_LANGUAGE = '[CREATE SURVEY] SET_LANGUAGE';\n\ninterface ReceiveSurveyListCreateSurveyAction {\n type: string;\n searchText: string;\n surveyList: SurveyListModel[];\n isLoading: number;\n}\n\ninterface FetchCreateSurveyAction {\n type: string;\n surveyCode: string;\n survey: SurveyModel;\n}\n\ninterface ReceiveCreateSurveyAction {\n type: string;\n surveyCode: string;\n survey: SurveyModel;\n isReload: boolean;\n}\n\ninterface ReceiveQuestionTypeAction {\n type: string;\n questionType: QuestionTypeModel[]\n}\n\ninterface ReceiveTypeListAction {\n type: string;\n typeList: QuestionTypeModel[]\n}\n\ninterface SetPropertyCreateSurveyAction {\n type: string;\n objectType: EditObject;\n propertyName: string;\n propertyValueString: string;\n propertyValueBoolean: boolean;\n propertyValueNumber: number;\n propertyValueDate: Date;\n}\n\n\ninterface CopyQuestionAction {\n type: string;\n index: number;\n}\n\ninterface StartQuestionEditAction {\n type: string;\n index: number;\n}\n\ninterface EndQuestionEditAction {\n type: string;\n cancelEdit: boolean;\n}\n\ninterface MoveQuestionAction {\n type: string;\n oldIndex: number;\n newIndex: number;\n}\n\ninterface MoveNextStepCreateSurveyAction {\n type: string;\n step?: number;\n}\n\n\ninterface StartGroupEditAction {\n type: string;\n groupId: number | null;\n}\n\ninterface EndGroupEditAction {\n type: string;\n cancelEdit: boolean;\n}\n\ninterface QuestionChangeGroupAction {\n type: string;\n index: number;\n groupId: number | null;\n}\n\ninterface DeleteGroupAction {\n type: string;\n index: number;\n}\n\ninterface DeleteQuestionAction {\n type: string;\n index: number;\n}\n\ninterface UpdateMcqOptionAction {\n type: string;\n options: McqOptionModel[];\n}\n\ninterface UpdateMatrixOptionAction {\n type: string;\n matrixRows: MatrixRowColumnModel[];\n matrixColumns: MatrixRowColumnModel[];\n}\n\ninterface SetcanLoadUIFlagCreateSurveyAction {\n type: string;\n canLoadUIFlag: number;\n}\n\ninterface SetSubmitStatusCreateSurveyAction {\n type: string;\n message: string;\n status: boolean;\n surveyId: number;\n}\n\ninterface SetLanguageCreateSurveyAction {\n type: string;\n language: string;\n moveNext: boolean;\n}\n\ntype KnownAction =\n FetchCreateSurveyAction\n | ReceiveCreateSurveyAction\n | ReceiveSurveyListCreateSurveyAction\n | ReceiveQuestionTypeAction\n | ReceiveTypeListAction\n | SetPropertyCreateSurveyAction\n | CopyQuestionAction\n | StartQuestionEditAction\n | EndQuestionEditAction\n | MoveQuestionAction\n | MoveNextStepCreateSurveyAction\n | StartGroupEditAction\n | EndGroupEditAction\n | DeleteQuestionAction\n | QuestionChangeGroupAction\n | DeleteGroupAction\n | UpdateMcqOptionAction\n | UpdateMatrixOptionAction\n | SetcanLoadUIFlagCreateSurveyAction\n | SetSubmitStatusCreateSurveyAction\n | SetLanguageCreateSurveyAction;\n\nexport const actionCreators = {\n MoveNextStep: (step?: number): AppThunkAction => \n (dispatch, getState) => {\n const appState = getState();\n if (appState && appState.createSurveyStore && appState.createSurveyStore.surveyId) {\n dispatch({ type: MOVE_NEXT_STEP, step: step });\n }\n },\n SaveSurvey: (): AppThunkAction =>\n (dispatch, getState) => {\n const appState = getState();\n if (appState && appState.createSurveyStore && appState.createSurveyStore) {\n const surveyWithUpdatedStatus = produce(appState.createSurveyStore.survey, df => {\n df.statusId = df.newStatusId\n });\n\n fetch(`Admin/SaveSurvey`, authHeader(\"POST\", JSON.stringify(surveyWithUpdatedStatus), ''))\n .then(response => {\n if (response.ok) {\n const data = response.json() as Promise;\n data.then(v =>\n dispatch({ type: SET_SUBMIT_STATUS, message: `Saved successfully!!`, status: false, surveyId: v })\n );\n } else {\n dispatch({ type: SET_SUBMIT_STATUS, message: 'Unable to save', status: true });\n }\n })\n .catch(error => {\n dispatch({ type: SET_SUBMIT_STATUS, message: 'Unable to save' + (error || ''), status: true });\n });\n }\n },\n FetchCanLoadUIFlag: (): AppThunkAction =>\n (dispatch, getState) => {\n const appState = getState();\n if (appState && appState.createSurveyStore && appState.createSurveyStore.canLoadUIFlag === -1) {\n fetch(`account/checkuser`, authHeader(\"GET\", '', ''))\n .then(response => response.json() as Promise)\n .then(data => {\n dispatch({ type: SET_CAN_LOAD_UI_FLAG, canLoadUIFlag: 1 });\n })\n .catch(error => {\n dispatch({ type: SET_CAN_LOAD_UI_FLAG, canLoadUIFlag: 0 });\n AuthService.logout();\n });\n }\n },\n RequestSurveyList: (searchText: string, pageSize: number, pageNumber: number): AppThunkAction => \n (dispatch, getState) => {\n const appState = getState();\n if (appState && appState.createSurveyStore) {\n fetch(`/Admin/SearchSurvey/${pageSize}/${pageNumber}/${searchText}`, authHeader(\"GET\", '', ''))\n .then(response => response.json() as Promise\n )\n .then(data => {\n dispatch({ type: FETCH_SURVEY_LIST, searchText, surveyList: data, isLoading: 0 });\n })\n .catch(error => {\n dispatch({ type: FETCH_SURVEY_LIST, searchText, surveyList: [], isLoading: 0 });\n });\n\n dispatch({ type: FETCH_SURVEY_LIST, searchText, surveyList: [], isLoading: 1 });\n }\n },\n RequestSurvey: (surveyId: string, isNew: boolean, isReload: boolean): AppThunkAction => \n (dispatch, getState) => {\n const appState = getState();\n if (appState && appState.createSurveyStore) {\n fetch(`/Admin/Search/${surveyId}`, authHeader(\"GET\", '', ''))\n .then(response => response.json() as Promise)\n .then(data => {\n if (isNew) {\n data.surveyId *= -1;\n data.statusId = -1;\n \n for(let i=0; i < data.groups.length; i++) {\n data.groups[i].groupId *= -1;\n }\n\n for(let i=0; i < data.questions.length; i++) {\n data.questions[i].groupId *= -1;\n data.questions[i].questionId *= -1;\n \n for(let p=0; p < data.questions[i].mcqOptions.length; p++) {\n data.questions[i].mcqOptions[p].mcqOptionId *= -1;\n }\n }\n }\n\n dispatch({ type: RECEIVE_SURVEY, surveyCode: surveyId, survey: data, isReload: isReload });\n })\n .catch(error => {\n dispatch({ type: MOVE_NEXT_STEP, step: -1 });\n });\n\n if (appState.createSurveyStore.questionType.length === 0) {\n fetch(`/Admin/GetQuestionType`, authHeader(\"GET\", '', ''))\n .then(response => response.json() as Promise)\n .then(data => {\n dispatch({ type: RECEIVE_QUESTION_TYPE, questionType: data });\n });\n }\n\n if (appState.createSurveyStore.surveyStatusList.length === 0) {\n fetch(`/Admin/GetSurveyStatusList`, authHeader(\"GET\", '', ''))\n .then(response => response.json() as Promise)\n .then(data => {\n dispatch({ type: RECEIVE_SURVEY_STATUS_LIST, typeList: data });\n });\n }\n \n if (isReload === false)\n dispatch({ type: FETCH_SURVEY, surveyCode: surveyId, survey: new SurveyModel() });\n }\n },\n SetPropertyCreateSurvey: (objectType: EditObject, propertyName: string, propertyValueString: string, propertyValueBoolean: boolean, propertyValueNumber: number, propertyValueDate: Date): AppThunkAction => \n (dispatch, getState) => {\n\n const appState = getState();\n if (appState && appState.createSurveyStore) {\n dispatch({ type: SET_PROPERTY, objectType, propertyName, propertyValueString, propertyValueBoolean, propertyValueNumber, propertyValueDate });\n }\n\n },\n CopyQuestion: (index: number): AppThunkAction => \n (dispatch, getState) => {\n\n const appState = getState();\n if (appState && appState.createSurveyStore) {\n dispatch({ type: COPY_QUESTION, index: index });\n }\n\n },\n StartQuestionEdit: (index: number): AppThunkAction => \n (dispatch, getState) => {\n\n const appState = getState();\n if (appState && appState.createSurveyStore) {\n dispatch({ type: START_EDIT_QUESTION, index: index });\n }\n\n },\n EndQuestionEdit: (cancelEdit: boolean): AppThunkAction => \n (dispatch, getState) => {\n\n const appState = getState();\n if (appState && appState.createSurveyStore) {\n dispatch({ type: END_EDIT_QUESTION, cancelEdit });\n }\n\n },\n MoveQuestion: (oldIndex: number, newIndex: number): AppThunkAction => \n (dispatch, getState) => {\n\n const appState = getState();\n if (appState && appState.createSurveyStore) {\n dispatch({ type: MOVE_QUESTION, oldIndex, newIndex });\n }\n\n },\n DeleteQuestion: (index: number): AppThunkAction => \n (dispatch, getState) => {\n\n const appState = getState();\n if (appState && appState.createSurveyStore) {\n dispatch({ type: DELETE_QUESTION, index: index });\n }\n\n },\n QuestionChangeGroupAction: (index: number, groupId: number | null): AppThunkAction => \n (dispatch, getState) => {\n\n const appState = getState();\n if (appState && appState.createSurveyStore) {\n dispatch({ type: QUESTION_CHANGE_GROUP, index: index, groupId: groupId });\n }\n\n },\n DeleteGroup: (index: number): AppThunkAction => \n (dispatch, getState) => {\n\n const appState = getState();\n if (appState && appState.createSurveyStore) {\n dispatch({ type: DELETE_GROUP, index: index });\n }\n\n },\n StartGroupEdit: (index: number): AppThunkAction => \n (dispatch, getState) => {\n\n const appState = getState();\n if (appState && appState.createSurveyStore) {\n dispatch({ type: START_EDIT_GROUP, groupId: index });\n }\n\n },\n EndGroupEdit: (cancelEdit: boolean): AppThunkAction => \n (dispatch, getState) => {\n\n const appState = getState();\n if (appState && appState.createSurveyStore) {\n dispatch({ type: END_EDIT_GROUP, cancelEdit });\n }\n\n },\n\n UpdateMcqOption: (options: McqOptionModel[]): AppThunkAction => \n (dispatch, getState) => {\n\n const appState = getState();\n if (appState && appState.createSurveyStore) {\n dispatch({ type: UPDATE_MCQ_OPTION, options: options });\n }\n\n },\n\n UpdateMatrixOption: (matrixRows: MatrixRowColumnModel[], matrixColumns: MatrixRowColumnModel[]): AppThunkAction => \n (dispatch, getState) => {\n\n const appState = getState();\n if (appState && appState.createSurveyStore) {\n dispatch({ type: UPDATE_MATRIX_OPTION, matrixRows, matrixColumns });\n }\n\n },\n\n SetLanguage: (language: string, moveNext: boolean ): AppThunkAction => \n (dispatch, getState) => {\n const appState = getState();\n if (appState && appState.createSurveyStore && appState.createSurveyStore.surveyId) {\n dispatch({ type: SET_LANGUAGE, language: language, moveNext: moveNext });\n }\n }\n};\n\nconst unloadedState: DataState = {\n canLoadUIFlag: -1,\n isLoading: false,\n isSubmitted: false,\n errorInSubmit: false,\n SubmitMessage: '',\n\n surveyId: '',\n step: 0,\n tag: 0,\n language: 'en',\n survey: new SurveyModel(),\n surveyCopy: new SurveyModel(),\n isSurveyDirty: false,\n\n questionType: [],\n surveyStatusList: [],\n surveyStatusPublishedId: -1,\n\n questionIndex: -1,\n editQuestion: new QuestionModel(),\n \n groupIndex: -1,\n editGroup: new GroupModel(),\n searchState: new SearchState()\n};\n\nexport const reducer: Reducer = (state: DataState = unloadedState, incomingAction: Action): DataState => {\n\n if (state === undefined) {\n return unloadedState;\n }\n\n const tempState = produce(state, draftState => {\n if (incomingAction.type === FETCH_SURVEY) {\n const action = incomingAction as FetchCreateSurveyAction;\n\n //draftState.canLoadUIFlag = -1;\n draftState.isSubmitted = false;\n draftState.errorInSubmit = false;\n draftState.SubmitMessage = '';\n \n draftState.tag = 0;\n draftState.language = 'en';\n draftState.survey = new SurveyModel();\n draftState.surveyCopy = new SurveyModel();\n \n draftState.questionIndex = -1;\n draftState.editQuestion = new QuestionModel();\n \n draftState.groupIndex = -1;\n draftState.editGroup = new GroupModel();\n\n draftState.isLoading = true;\n draftState.surveyId = action.surveyCode;\n draftState.step = SurveyEditSteps.Loading;\n\n } else if (incomingAction.type === FETCH_SURVEY_LIST) {\n const action = incomingAction as ReceiveSurveyListCreateSurveyAction;\n\n if (action.isLoading != 1) {\n if (action.surveyList && action.surveyList.length > 0)\n draftState.searchState.totalRecords = action.surveyList[0].totalRecords;\n else \n draftState.searchState.totalRecords = 0;\n\n\n draftState.searchState.survey = action.surveyList;\n }\n draftState.searchState.isLoading = action.isLoading;\n draftState.tag += 1;\n\n } else if (incomingAction.type === RECEIVE_SURVEY) {\n const action = incomingAction as ReceiveCreateSurveyAction;\n\n if (action.surveyCode === draftState.surveyId) {\n //return {...state,\n draftState.isLoading = false;\n draftState.isSubmitted = false;\n draftState.errorInSubmit = false;\n draftState.SubmitMessage = '';\n \n draftState.surveyId = action.surveyCode;\n draftState.survey = changeLangSurvey(action.survey, draftState.language);\n draftState.survey.newStatusId = draftState.survey.statusId;\n draftState.surveyCopy = changeLangSurvey(action.survey, draftState.language);\n draftState.surveyCopy.newStatusId = draftState.survey.statusId;\n \n if (action.isReload)\n draftState.step = SurveyEditSteps.Publish;\n else\n draftState.step = SurveyEditSteps.Start;\n // };\n }\n } else if (incomingAction.type === RECEIVE_SURVEY_STATUS_LIST) {\n const action = incomingAction as ReceiveTypeListAction;\n\n draftState.surveyStatusList = action.typeList;\n const publishStatus = action.typeList.find( e => e.code === constants.SurveryState_Published);\n\n if (publishStatus) {\n draftState.surveyStatusPublishedId = publishStatus.id;\n }\n \n\n } else if (incomingAction.type === RECEIVE_QUESTION_TYPE) {\n const action = incomingAction as ReceiveQuestionTypeAction;\n\n draftState.questionType = action.questionType;\n \n } else if (incomingAction.type === SET_PROPERTY) {\n const action = incomingAction as SetPropertyCreateSurveyAction;\n\n draftState.tag += 1;\n \n switch (action.propertyName) {\n case 'name':\n case 'titleEn':\n case 'titleFr':\n case 'startNotesEn':\n case 'startNotesFr':\n case 'endNotesEn':\n case 'endNotesFr':\n draftState.survey[action.propertyName] = action.propertyValueString;\n break;\n\n case 'startDate':\n case 'endDate':\n draftState.survey[action.propertyName] = action.propertyValueDate;\n break;\n\n case 'newStatusId':\n draftState.survey[action.propertyName] = action.propertyValueNumber;\n break;\n\n case 'questionEn':\n case 'questionFr':\n case 'placeholderEn':\n case 'placeholderFr':\n case 'errorMessageEn':\n case 'errorMessageFr':\n draftState.editQuestion[action.propertyName] = action.propertyValueString;\n break;\n \n case 'isMandatory':\n draftState.editQuestion[action.propertyName] = action.propertyValueBoolean;\n break;\n \n case 'maxCharacterLimit':\n case 'maxMcqValues':\n case 'minMcqValues':\n draftState.editQuestion[action.propertyName] = action.propertyValueNumber;\n break;\n \n case 'isValid':\n draftState.editQuestion[action.propertyName] = action.propertyValueBoolean;\n break;\n\n case 'questionTypeId':\n draftState.editQuestion[action.propertyName] = action.propertyValueNumber;\n const typ = state.questionType.find(f => f.id === action.propertyValueNumber);\n\n if (typ != null) {\n draftState.editQuestion.code = typ.code;\n draftState.editQuestion.defaultRegex = typ.defaultRegex;\n }\n\n break;\n \n case 'groupHeadingEn':\n case 'groupHeadingFr':\n case 'groupSubHeadingEn':\n case 'groupSubHeadingFr':\n draftState.editGroup[action.propertyName] = action.propertyValueString;\n break;\n\n case 'searchText':\n draftState.searchState[action.propertyName] = action.propertyValueString;\n break;\n\n case 'pageNumber':\n case 'totalRecords':\n case 'pageSize':\n draftState.searchState[action.propertyName] = action.propertyValueNumber;\n break;\n\n }\n } else if (incomingAction.type === MOVE_NEXT_STEP) {\n const action = incomingAction as MoveNextStepCreateSurveyAction;\n let stepLevel = draftState.step + 1;\n\n if (action.step !== undefined)\n stepLevel = action.step;\n\n draftState.step = stepLevel;\n \n } else if (incomingAction.type === COPY_QUESTION) {\n const action = incomingAction as CopyQuestionAction;\n\n const questionIndex = action.index;\n draftState.step = SurveyEditSteps.Question;\n // draftState.questionIndex = questionIndex;\n\n if (action.index !== -1) {\n draftState.editQuestion = produce(state.survey.questions[questionIndex], dr => {\n\n dr.questionId = 0;\n \n for(let p=0; p < dr.mcqOptions.length; p++) {\n dr.mcqOptions[p].mcqOptionId = -1;\n }\n });\n } else {\n draftState.editQuestion = new QuestionModel();\n }\n\n } else if (incomingAction.type === START_EDIT_QUESTION) {\n const action = incomingAction as StartQuestionEditAction;\n\n const questionIndex = action.index;\n draftState.step = SurveyEditSteps.Question;\n draftState.questionIndex = questionIndex;\n\n if (action.index !== -1)\n draftState.editQuestion = state.survey.questions[questionIndex];\n else\n draftState.editQuestion = new QuestionModel();\n\n } else if (incomingAction.type === END_EDIT_QUESTION) {\n const action = incomingAction as EndQuestionEditAction;\n\n if (action.cancelEdit === false) {\n if (state.questionIndex >= 0) {\n draftState.survey.questions[state.questionIndex] = state.editQuestion;\n } else {\n draftState.survey.questions.push(state.editQuestion);\n }\n }\n \n draftState.editQuestion = new QuestionModel();\n draftState.questionIndex = -1;\n\n } else if (incomingAction.type === DELETE_QUESTION) {\n const action = incomingAction as DeleteQuestionAction;\n\n if (action.index >= 0 && action.index < state.survey.questions.length) {\n\n draftState.survey.questions.splice(action.index, 1);\n \n }\n \n draftState.editQuestion = new QuestionModel();\n draftState.questionIndex = -1;\n \n } else if (incomingAction.type === MOVE_QUESTION) {\n const action = incomingAction as MoveQuestionAction;\n\n draftState.survey.questions = arrayMove(draftState.survey.questions, action.oldIndex, action.newIndex);\n \n } else if (incomingAction.type === START_EDIT_GROUP) {\n const action = incomingAction as StartGroupEditAction;\n\n const groupIndex = state.survey.groups.findIndex(f => f.groupId === action.groupId);\n \n //draftState.step = SurveyEditSteps.Group;\n draftState.groupIndex = groupIndex;\n\n if (groupIndex >= 0) {\n draftState.editGroup = state.survey.groups[groupIndex];\n } else {\n draftState.editGroup = new GroupModel();\n }\n\n } else if (incomingAction.type === END_EDIT_GROUP) {\n const action = incomingAction as EndGroupEditAction;\n\n if (action.cancelEdit === false) {\n if (state.groupIndex >= 0) {\n draftState.survey.groups[state.groupIndex] = state.editGroup;\n } else {\n let groupId = (state.survey.groups.length + 1) * -1;\n\n while(state.survey.groups.findIndex(f => f.groupId === groupId) > -1 ) {\n groupId--;\n }\n \n draftState.survey.groups.push(state.editGroup);\n\n draftState.survey.groups[state.survey.groups.length].groupId = groupId;\n }\n }\n \n draftState.editGroup = new GroupModel();\n draftState.groupIndex = -1;\n } else if (incomingAction.type === DELETE_GROUP) {\n const action = incomingAction as DeleteGroupAction;\n\n if (action.index >= 0 && action.index < state.survey.groups.length) {\n\n const grp = state.survey.groups[action.index];\n\n for(let x = 0; x < state.survey.questions.length; x++) {\n \n if (state.survey.questions[x].groupId === grp.groupId) {\n draftState.survey.questions[x].groupId = -999;\n }\n }\n\n draftState.survey.groups.splice(action.index, 1);\n }\n \n draftState.editGroup = new GroupModel();\n draftState.questionIndex = -1;\n \n } else if (incomingAction.type === QUESTION_CHANGE_GROUP) {\n const action = incomingAction as QuestionChangeGroupAction;\n\n if (action.index >= 0 && action.index < state.survey.questions.length) {\n\n const grp = state.survey.groups.find(f => f.groupId === action.groupId);\n \n // if (grp) {\n draftState.survey.questions[action.index].groupId = grp ? grp.groupId : 0;\n // }\n }\n } else if (incomingAction.type === UPDATE_MCQ_OPTION) {\n const action = incomingAction as UpdateMcqOptionAction;\n\n draftState.editQuestion.mcqOptions = action.options;\n \n } else if (incomingAction.type === UPDATE_MATRIX_OPTION) {\n const action = incomingAction as UpdateMatrixOptionAction;\n\n draftState.editQuestion.matrixColumns = action.matrixColumns;\n draftState.editQuestion.matrixRows = action.matrixRows;\n \n } else if (incomingAction.type === SET_CAN_LOAD_UI_FLAG) {\n const action = incomingAction as SetcanLoadUIFlagCreateSurveyAction;\n\n draftState.canLoadUIFlag = action.canLoadUIFlag;\n\n } else if (incomingAction.type === SET_SUBMIT_STATUS) {\n const action = incomingAction as SetSubmitStatusCreateSurveyAction;\n\n draftState.SubmitMessage = action.message;\n draftState.errorInSubmit = action.status;\n draftState.isSubmitted = true;\n\n if (action.status === false) {\n draftState.surveyId = \"\"+action.surveyId;\n draftState.survey.surveyId = action.surveyId;\n }\n\n } else if (incomingAction.type === SET_LANGUAGE) {\n const action = incomingAction as SetLanguageCreateSurveyAction;\n\n const step = action.moveNext ? draftState.step + 1 :draftState.step;\n \n draftState.language = action.language;\n draftState.step = step;\n draftState.survey = changeLangSurvey(draftState.survey, action.language);\n draftState.surveyCopy = changeLangSurvey(draftState.surveyCopy, action.language);\n }\n });\n\n const isDirty = JSON.stringify(tempState.survey) !== JSON.stringify(tempState.surveyCopy);\n\n return produce(tempState, draftState => {\n draftState.isSurveyDirty = isDirty;\n });\n};\n","import { SurveyListModel } from \"./searchSurvey.model\";\n\nexport class SearchState {\n public isLoading: number =-1;\n public searchText: string = '';\n public survey: SurveyListModel[] = [];\n public pageSize: number = 20;\n public totalRecords: number = 0;\n public pageNumber: number = 1\n}\n","import * as Survey from './Survey';\r\nimport * as CreateSurvey from './CreateSurvey';\r\n\r\nexport interface ApplicationState {\r\n surveyStore: Survey.DataState | undefined;\r\n createSurveyStore: CreateSurvey.DataState | undefined;\r\n}\r\n\r\nexport const reducers = {\r\n surveyStore: Survey.reducer,\r\n createSurveyStore: CreateSurvey.reducer,\r\n};\r\n\r\nexport interface AppThunkAction {\r\n (dispatch: (action: TAction) => void, getState: () => ApplicationState): void;\r\n}\r\n","import * as React from 'react';\r\nimport { Container } from 'reactstrap';\r\n\r\nexport default (props: { children?: React.ReactNode }) => (\r\n \r\n \r\n {props.children}\r\n \r\n \r\n);\r\n","export class LangKey {\r\n public OtherLang: string = '';\r\n public OtherLangShort: string = '';\r\n public AllAsteriskFields: string = '';\r\n public AreMandatory: string = '';\r\n public Notice: string = '';\r\n public PersonalInfo: string = '';\r\n public PersonalInfo2: string = '';\r\n public TollFreeNum: string = '';\r\n public LocalOr: string = '';\r\n public TollFree: string = '';\r\n public ReauiredField: string = '';\r\n public PasteMsg: string = '';\r\n public ErrMsgPhone: string = '';\r\n public Continue: string = '';\r\n public LoadingPleaseWait: string = '';\r\n public UnableToLoading: string = '';\r\n public PhoneExample: string = '';\r\n public Submit: string = '';\r\n public SelectLanguage: string = '';\r\n public Start: string = '';\r\n public Questions: string = '';\r\n public Complete: string = '';\r\n public FillOutAllRequiredFields: string = '';\r\n public ErrorSubmitting: string = '';\r\n}\r\n\r\nexport const transEn: LangKey = new LangKey();\r\ntransEn.OtherLang = \"Français\";\r\ntransEn.OtherLangShort = \"fr\";\r\ntransEn.AllAsteriskFields = \"Please note that all questions marked with a red asterisk (\";\r\ntransEn.AreMandatory = \") are mandatory items/fields.\";\r\ntransEn.Start = \"Start\";\r\ntransEn.Questions = \"Questions\";\r\ntransEn.Complete = \"Complete\";\r\n\r\ntransEn.SelectLanguage =\"Please select language to proceed\";\r\ntransEn.Notice = \"Notice\";\r\ntransEn.PersonalInfo = \"Personal information on this form is collected by the Patient Ombudsman and staff of the Patient Ombudsman under the authority of s. 13.1, 13.2 and 13.3 of the Excellent Care for All Act, 2010, and of the Freedom of Information and Protection of Privacy Act and will be used to contact you and to attempt to facilitate a resolution of a complaint to the Patient Ombudsman, and the information may be used in an investigation by the Patient Ombudsman and staff of the Patient Ombudsman. Questions about this collection should be directed to the Records Management & Privacy Specialist at\";\r\ntransEn.TollFreeNum = \"1.888.321.0339\";\r\ntransEn.LocalOr = \"(local) or\";\r\ntransEn.TollFree = \"(toll-free)\";\r\ntransEn.PersonalInfo2 = \"at Patient Ombudsman.\";\r\ntransEn.ReauiredField = \"Required Field\";\r\ntransEn.PasteMsg = \"There is 4900 character limit, your text will be trimmed if it exceeds the limit\";\r\ntransEn.ErrMsgPhone = \"Please use hyphens (-) as seen in the example, 416-597-0339\";\r\ntransEn.Continue = \"Continue\";\r\ntransEn.LoadingPleaseWait = \"Loading, please wait\";\r\ntransEn.UnableToLoading = \"Sorry, we are unable to load the questionnaire. Either submission is already done or campaign is over\";\r\ntransEn.PhoneExample = \"Example: 416-597-0339\";\r\ntransEn.Submit = \"Submit\";\r\ntransEn.FillOutAllRequiredFields = \"Please fill out the required fields above\";\r\ntransEn.ErrorSubmitting = \"Sorry, there was a problem submitting your response. Please call us at 416-597-0339 ext. 1960 or email us at LTCH_investigation@patientombudsman.ca\";\r\n\r\nexport const transFr: LangKey = new LangKey();\r\ntransFr.OtherLang = \"English\";\r\ntransFr.OtherLangShort = \"en\";\r\ntransFr.AllAsteriskFields = \"Tous les champs marqués d’un\";\r\ntransFr.AreMandatory = \"sont obligatoires\";\r\ntransFr.Start = \"Commencer\";\r\ntransFr.Questions = \"Questions\";\r\ntransFr.Complete = \"Compléte\";\r\n\r\ntransFr.SelectLanguage =\"Veuillez sélectionner la langue pour continuer\";\r\ntransFr.Notice = \"Avis\";\r\ntransFr.PersonalInfo = \"Tous renseignements, notamment les renseignements personnels et les renseignements personnels sur la santé que vous avez choisi d’inclure dans ce formulaire ainsi que dans toute correspondance de suivi avec le bureau de l’Ombudsman des patients, sont recueillis en vertu des articles 13.2, 13.3 et 13.6 de la Loi de 2010 sur l’excellence des soins pour tous et seront utilisés afin de vous contacter et de tenter de faciliter le règlement de la plainte et, après avoir tenté de faciliter un règlement, l’information pourrait être utilisée pour enquêter sur la plainte. Les questions au sujet de cette collecte doivent être adressées au Spécialiste en matière de confidentialité et de gestion des documents du bureau de l’Ombudsman des patients au\";\r\ntransFr.TollFreeNum = \"1.888.321.0339\";\r\ntransFr.LocalOr = \" (locale) ou\";\r\ntransFr.TollFree = \" (sans frais)\";\r\ntransFr.PersonalInfo2 = \".\";\r\ntransFr.ReauiredField = \"Champ obligatoire\";\r\ntransFr.PasteMsg = \"Saisir la plainte (Limite de caractères (mots, espaces et chiffres) à 4900)\";\r\ntransFr.ErrMsgPhone = \"S’il vous plaît utiliser des traits d’union (-) comme dans l’exemple ici: 416-597-0339\";\r\ntransFr.Continue = \"Continuer\";\r\ntransFr.LoadingPleaseWait = \"Chargement en cours, veuillez patienter\";\r\ntransFr.UnableToLoading = \"Nous sommes désolés, nous ne pouvons pas charger le questionnaire. Soit la soumission est déjà complétée, soit l’enquête est terminée.\";\r\ntransFr.PhoneExample = \"Exemple: (416) 597-0339\";\r\ntransFr.Submit = \"Télécharger\";\r\ntransFr.FillOutAllRequiredFields = \"Veuillez remplir les champs obligatoires ci-dessus\";\r\ntransFr.ErrorSubmitting = \"Pardon, un problème est survenu lors de l'envoi de votre réponse. Veuillez nous téléphoner au 416 597-0339, poste 1960, ou nous envoyer un courriel à LTCH_investigation@patientombudsman.ca\";\r\n\r\nexport default function getLangTranslation(lang: string): LangKey {\r\n\r\n if (lang.startsWith(\"f\"))\r\n return transFr;\r\n\r\n return transEn;\r\n}\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from '../../store';\r\nimport * as SurveyStore from '../../store/Survey';\r\nimport getLangTranslation, { LangKey } from '../../common/lang-trans';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport logoen from '../../logo-en.svg';\r\nimport logofr from '../../logo-fr.svg';\r\nimport logo from '../../logo.svg';\r\n\r\ntype SurveyProps =\r\n SurveyStore.DataState\r\n & typeof SurveyStore.actionCreators\r\n & RouteComponentProps<{}>;\r\n\r\nclass SurveyHeader extends React.PureComponent {\r\n\r\n public render() {\r\n const language = this.props.language || 'en';\r\n const langTrans = getLangTranslation(language);\r\n const imgLogo = (this.props.step < 2 ? logo : (language === 'en' ? logoen : logofr))\r\n return (\r\n \r\n
\r\n
\r\n \"logo\"\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n { this.renderHeaderLine(langTrans) }\r\n
\r\n );\r\n }\r\n\r\n private renderHeaderLine(langTrans: LangKey){\r\n \r\n if (this.props.step < 2) {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
);\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
    \r\n
  • 2 ? 'visited completed' : ''} ${this.props.step === 2 ? 'active' : ''}`}>\r\n

    \r\n {langTrans.Start}\r\n

    \r\n
  • \r\n
  • 3 ? 'visited completed' : ''} ${this.props.step === 3 ? 'active' : ''}`}>\r\n

    \r\n {langTrans.Questions}\r\n

    \r\n
  • \r\n
  • 4 ? 'visited completed' : ''} ${this.props.step === 4 ? 'active' : ''}`}>\r\n

    \r\n {langTrans.Complete}\r\n

    \r\n
  • \r\n
\r\n
\r\n
\r\n );\r\n }\r\n};\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.surveyStore,\r\n SurveyStore.actionCreators\r\n)(SurveyHeader as any);\r\n","import * as React from 'react';\r\nimport getLangTranslation from '../../common/lang-trans';\r\nimport { SurveyModel } from '../../models/survey.model';\r\nimport ReactMarkdown from 'react-markdown';\r\n\r\ninterface iProps {\r\n survey: SurveyModel,\r\n moveNextStep: any,\r\n language: string\r\n}\r\n\r\nclass SurveyStart extends React.PureComponent {\r\n\r\n public render() {\r\n const startNotes = this.props.survey.startNotes || '';\r\n const language = this.props.language || 'en';\r\n const langTrans = getLangTranslation(language);\r\n return (\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n};\r\n\r\nexport default SurveyStart;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from '../../store';\r\nimport * as SurveyStore from '../../store/Survey';\r\nimport getLangTranslation from '../../common/lang-trans';\r\nimport { RouteComponentProps } from 'react-router';\r\n\r\ntype SurveyProps =\r\n SurveyStore.DataState\r\n & typeof SurveyStore.actionCreators\r\n & RouteComponentProps<{ }>;\r\n\r\nclass SurveyLanguage extends React.PureComponent {\r\n public render() {\r\n // const language = this.props.language || 'en';\r\n // const langTrans = getLangTranslation(language);\r\n const langTransEN = getLangTranslation('en');\r\n const langTransFR = getLangTranslation('fr');\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n};\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.surveyStore,\r\n SurveyStore.actionCreators\r\n)(SurveyLanguage as any);\r\n","import * as React from 'react';\r\nimport { SurveyModel } from '../../models/survey.model';\r\nimport ReactMarkdown from 'react-markdown';\r\n\r\ninterface iProps {\r\n survey: SurveyModel,\r\n}\r\n\r\nclass SurveyEndnote extends React.Component {\r\n public render() {\r\n const endnote = this.props.survey.endNotes || '';\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private renderText(txt: string) {\r\n const txtArray = txt.split('\\n');\r\n\r\n return (\r\n <>\r\n {txtArray.map((txt: string, index :number) => this.getParagraph(txt, index))}\r\n \r\n );\r\n }\r\n\r\n private getParagraph(txt: string, index: number) {\r\n return (\r\n

{txt}

\r\n );\r\n }\r\n};\r\n\r\nexport default SurveyEndnote;\r\n","import * as React from 'react';\r\nimport { QuestionModel } from '../../models/question.model';\r\nimport getLangTranslation, { LangKey } from '../../common/lang-trans';\r\nimport * as fromConstants from '../../common/constants';\r\nimport { getBreakpoint, isRadio } from '../../common/helperFunctions';\r\nimport { McqOptionModel } from '../../models/mcq-option.model';\r\nimport { BreakPointEnum } from '../../common/constants';\r\n\r\ninterface iProps {\r\n question: QuestionModel,\r\n changeEvent: any,\r\n changeMcqEvent: any,\r\n changeMatrixEvent: any,\r\n changeMcqOtherEvent: any,\r\n language: string\r\n}\r\n\r\nclass SurveyQuestion extends React.PureComponent {\r\n public render() {\r\n const headingExists = (this.props.question.groupId > 0);\r\n \r\n const language = this.props.language || 'en';\r\n const langTrans = getLangTranslation(language);\r\n\r\n return (\r\n \r\n
\r\n \r\n {this.getInputControl(this.props.question, langTrans)}\r\n
\r\n
\r\n );\r\n }\r\n\r\n private getInputControl(q: QuestionModel, langTrans: LangKey) {\r\n const ctrlName = '' + q.questionId;\r\n let errorMsg = q.errorMessage;\r\n\r\n if (!errorMsg || errorMsg === '')\r\n errorMsg = langTrans.ReauiredField;\r\n\r\n if (q.code === fromConstants.QuestionType_Phone) {\r\n return (\r\n <>\r\n \r\n {!this.isvalue(this.props.question.isValid) &&
{errorMsg}
}\r\n \r\n );\r\n } else if (q.code === fromConstants.QuestionType_Email) {\r\n return (\r\n <>\r\n \r\n {!this.isvalue(this.props.question.isValid) &&
{errorMsg}
}\r\n \r\n );\r\n } else if (q.code === fromConstants.QuestionType_MCQ) {\r\n\r\n return this.mcqControl( ctrlName, q, errorMsg );\r\n\r\n } else if (q.code === fromConstants.QuestionType_MATRIX) {\r\n\r\n return this.matrixControl( ctrlName, q, errorMsg );\r\n\r\n } else if (q.maxCharacterLimit <= 100) {\r\n return (\r\n <>\r\n \r\n {!this.isvalue(this.props.question.isValid) &&
{errorMsg}
}\r\n \r\n );\r\n } else {\r\n\r\n return (\r\n <>\r\n 0 ? q.maxCharacterLimit : 100}\r\n placeholder={q.placeholder}\r\n onChange={this.handleTextAreaChange}>\r\n {!this.isvalue(this.props.question.isValid) &&
{errorMsg}
}\r\n \r\n );\r\n }\r\n }\r\n \r\n private mcqControl(ctrlName: string, q: QuestionModel, errorMsg: string) {\r\n const inputType = isRadio(q.minMcqValues, q.maxMcqValues) ? 'radio' : 'checkbox';\r\n const col = q.mcqOptions.length > 10 ? 'col-sm-6' : 'col-sm-12';\r\n return <>\r\n {\r\n // render dropdown or radio/checkbox\r\n (inputType === 'radio' && q.mcqOptions.length > 10) \r\n ? \r\n \r\n :
\r\n { this.sortMCQ(q.mcqOptions, q.mcqOptions.length > 10).map((item, index) => {\r\n let colCss = col;\r\n let ctrlId = `c${ctrlName}-${item.mcqOptionId}`;\r\n return (\r\n
\r\n
\r\n\r\n  \r\n \r\n
\r\n
\r\n )})\r\n }\r\n
\r\n }\r\n \r\n {\r\n //Other Textbox\r\n q.mcqOptions.map((item, index) => {\r\n if (item.isOther && q.mcqAnswers && q.mcqAnswers.findIndex( a => a.mcqOptionId === item.mcqOptionId) >= 0) {\r\n return (\r\n \r\n );\r\n } else {\r\n return \r\n }\r\n })}\r\n {!this.isvalue(this.props.question.isValid) &&
{errorMsg}
}\r\n\r\n \r\n }\r\n\r\n private matrixControl(ctrlName: string, q: QuestionModel, errorMsg: string) {\r\n if (q.matrixColumns === null || q.matrixRows === null)\r\n return <>\r\n\r\n const textColor = \"text-matrix-color\";\r\n const breakpoint = getBreakpoint();\r\n const colLen = Math.floor(12 / (q.matrixColumns.length > 12 ? 12 : q.matrixColumns.length));\r\n return <>\r\n
\r\n
\r\n  \r\n
\r\n
\r\n {/*
*/}\r\n
\r\n {\r\n q.matrixColumns.map((c, idx) => {\r\n return (\r\n
\r\n {c.textEn}\r\n
\r\n )\r\n })\r\n }\r\n
\r\n
\r\n
\r\n {\r\n q.matrixRows.map((r, i) => {\r\n return (\r\n
\r\n
\r\n {r.textEn}\r\n
\r\n
\r\n
\r\n {\r\n q.matrixColumns.map((c, idx) => {\r\n const ctrlId = `${ctrlName}-${r.matrixId}-${c.matrixId}`;\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n )\r\n })\r\n }\r\n
\r\n
\r\n
)\r\n })\r\n }\r\n {!this.isvalue(this.props.question.isValid) &&
{errorMsg}
}\r\n \r\n }\r\n\r\n private sortMCQ(mcq: McqOptionModel[], isTwoColumn: boolean): McqOptionModel[] {\r\n\r\n let result: McqOptionModel[] = [];\r\n\r\n if (isTwoColumn) {\r\n\r\n const half = Math.ceil(mcq.length /2);\r\n\r\n for(let i= 0; i< mcq.length;i++){\r\n let idx = (i >= half ? ((i-half)*2)+1 : i * 2);\r\n result[idx] = mcq[i]; \r\n }\r\n\r\n return result;\r\n }\r\n\r\n return mcq;\r\n\r\n }\r\n \r\n handleTextAreaChange = (e: React.ChangeEvent) => {\r\n this.props.changeEvent(e);\r\n };\r\n\r\n handleChange = (e: React.ChangeEvent) => {\r\n this.props.changeEvent(e);\r\n };\r\n\r\n handleMcqChange = (e: React.ChangeEvent) => {\r\n this.props.changeMcqEvent(e);\r\n };\r\n\r\n handleMcqSelectChange = (e: React.ChangeEvent) => {\r\n this.props.changeMcqEvent(e);\r\n };\r\n\r\n handleMcqOtherChange = (e: React.ChangeEvent) => {\r\n this.props.changeMcqOtherEvent(e);\r\n };\r\n\r\n\r\n handleMatrixChange = (e: React.ChangeEvent) => {\r\n this.props.changeMatrixEvent(e);\r\n };\r\n\r\n private isvalue(value: boolean): boolean {\r\n\r\n if (value === undefined || value === null)\r\n return true;\r\n\r\n return value;\r\n }\r\n};\r\n\r\nexport default SurveyQuestion;\r\n","import * as React from 'react';\r\nimport SurveyQuestion from './SurveyQuestion';\r\nimport getLangTranslation from '../../common/lang-trans';\r\nimport { QuestionModel } from '../../models/question.model';\r\nimport { GroupModel } from \"../../models/group.model\";\r\nimport { SurveyModel } from '../../models/survey.model';\r\nimport * as fromConstants from '../../common/constants';\r\n\r\ninterface iProps {\r\n language: string,\r\n errorInSubmit: boolean,\r\n isSubmitted: boolean,\r\n survey: SurveyModel,\r\n SubmitSurvey: any,\r\n SetValidationStatusAndValue: any\r\n SetValidationStatus: any\r\n}\r\n\r\nclass SurveyQuestionnaire extends React.PureComponent {\r\n\r\n componentDidUpdate() {\r\n\r\n this.validateAllFiels();\r\n }\r\n\r\n handleSubmit = () => {\r\n const isValid = this.validateAllFiels();\r\n this.props.SubmitSurvey(isValid);\r\n }\r\n\r\n handleChange = (e: React.ChangeEvent) => {\r\n e.target.value = e.target.value;\r\n const isValid = this.ValidateInputValue(e.target.name, e.target.value);\r\n \r\n this.props.SetValidationStatusAndValue({\r\n questionId: +e.target.name,\r\n optionId: null,\r\n text: e.target.value,\r\n isOtherTextBoxChanged: false,\r\n isValid: isValid,\r\n isSubmitted: false\r\n });\r\n }\r\n\r\n handleMcqChange = (e: React.ChangeEvent) => {\r\n e.target.value = e.target.value;\r\n const isValid = this.ValidateInputValue(e.target.name, e.target.value);\r\n \r\n this.props.SetValidationStatusAndValue({\r\n questionId: +e.target.name,\r\n optionId: +e.target.value,\r\n isChecked: e.target.checked,\r\n text: '',\r\n isValid: isValid,\r\n isSubmitted: false\r\n });\r\n\r\n this.validateAllFiels();\r\n };\r\n\r\n handleMatrixChange = (e: React.ChangeEvent) => {\r\n e.target.value = e.target.value;\r\n const questionId = e.target.name.split('-')[0];\r\n const rowAndColumnId = e.target.value.split('-');\r\n\r\n const isValid = this.ValidateInputValue(questionId, e.target.value);\r\n \r\n this.props.SetValidationStatusAndValue({\r\n questionId: +questionId,\r\n rowId: +rowAndColumnId[0],\r\n columnId: +rowAndColumnId[1],\r\n optionId: null,\r\n isChecked: e.target.checked,\r\n text: '',\r\n isValid: isValid,\r\n isSubmitted: false\r\n });\r\n\r\n this.validateAllFiels();\r\n };\r\n\r\n handleMcqOtherChange = (e: React.ChangeEvent) => {\r\n e.target.value = e.target.value;\r\n const isValid = this.ValidateInputValue(e.target.name, e.target.value);\r\n \r\n this.props.SetValidationStatusAndValue({\r\n questionId: +e.target.name,\r\n optionId: +e.target.id,\r\n isChecked: null,\r\n isOtherTextBoxChanged: true,\r\n text: e.target.value,\r\n isValid: isValid,\r\n isSubmitted: false\r\n });\r\n\r\n this.validateAllFiels();\r\n };\r\n\r\n private ValidateInputValue(questionId: string, value:string): boolean {\r\n\r\n const q = this.props.survey.questions.find(f => f.questionId === +questionId);\r\n\r\n if(q === undefined)\r\n return false;\r\n\r\n if (q.code === fromConstants.QuestionType_MCQ) {\r\n\r\n if (q.isMandatory && (q.mcqAnswers || []).length === 0)\r\n return false;\r\n\r\n if ((q.mcqAnswers || []).length > q.maxMcqValues && q.maxMcqValues !== -1)\r\n return false;\r\n\r\n if ((q.mcqAnswers || []).length < q.minMcqValues && q.minMcqValues !== -1)\r\n return false;\r\n\r\n const mcqOption = q.mcqOptions.find(f=> f.isOther === true);\r\n\r\n if (mcqOption) {\r\n const otherAnswer = (q.mcqAnswers || []).find(f => f.mcqOptionId === mcqOption.mcqOptionId);\r\n\r\n if (otherAnswer && (otherAnswer.answerEn.length === 0 || \r\n (q.maxCharacterLimit !== null && q.maxCharacterLimit > 0 && otherAnswer.answerEn.length > q.maxCharacterLimit))\r\n )\r\n return false;\r\n }\r\n\r\n } else if (q.code === fromConstants.QuestionType_MATRIX) {\r\n\r\n const matrixAns = (q.matrixAnswers || []);\r\n\r\n if (q.isMandatory === false)\r\n return true;\r\n\r\n for(let i = 0; i < q.matrixRows.length; i++) {\r\n\r\n if (matrixAns.findIndex( e => e.matrixRowId === q.matrixRows[i].matrixId) === -1)\r\n return false;\r\n }\r\n\r\n return true;\r\n\r\n } else {\r\n\r\n if (value === null || value === undefined)\r\n value = '';\r\n \r\n value = value.trim();\r\n\r\n if(q.isMandatory && value.length === 0)\r\n return false;\r\n\r\n if (!(q.code === fromConstants.QuestionType_Email || q.code === fromConstants.QuestionType_Phone)) {\r\n if (q.maxCharacterLimit !== null && q.maxCharacterLimit > 0 && value.length > q.maxCharacterLimit)\r\n return false;\r\n }\r\n\r\n if (value !== '' && q.defaultRegex) {\r\n const rgx = new RegExp(q.defaultRegex);\r\n if (rgx.test(value) === false)\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private validateAllFiels(): boolean {\r\n let result = true;\r\n\r\n for(let i =0; i < this.props.survey.questions.length; i++) {\r\n const q = this.props.survey.questions[i];\r\n\r\n const isValid = this.ValidateInputValue(q.questionId.toString(), q.value);\r\n \r\n this.props.SetValidationStatus(q.questionId, isValid);\r\n\r\n result = result && isValid;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public render() {\r\n const questions = this.props.survey.questions;\r\n const groups = this.props.survey.groups;\r\n const language = this.props.language || 'en';\r\n const langTrans = getLangTranslation(language);\r\n\r\n const isValid = ( this.props.isSubmitted && \r\n this.props.survey.questions.findIndex(f => f.isValid === false) !== -1 );\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n {this.getQuestionElements(questions, groups)}\r\n\r\n
\r\n { isValid &&
{ langTrans.FillOutAllRequiredFields }
}\r\n
\r\n
\r\n { this.props.errorInSubmit &&
\r\n
{ langTrans.ErrorSubmitting }
\r\n
\r\n
}\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private getQuestionElements(questions: QuestionModel[], groups: GroupModel[]) {\r\n\r\n let groupId : number | undefined = -99;\r\n\r\n const items = [];\r\n let isFirstGroup = true;\r\n for (var i = 0; i < questions.length; i++) {\r\n if (questions[i].groupId !== groupId) {\r\n \r\n const group = groups.find(f => f.groupId === questions[i].groupId);\r\n\r\n if (group) {\r\n isFirstGroup = false;\r\n items.push(\r\n
\r\n {group.groupHeading !== null && group.groupHeading !== '' ?

{group.groupHeading}

: ''}\r\n {group.groupSubHeading !== null && group.groupSubHeading !== '' ?

{group.groupSubHeading}

: ''}\r\n
);\r\n } else if (isFirstGroup === false) {\r\n items.push(\r\n
\r\n

 

\r\n
); \r\n }\r\n }\r\n\r\n items.push();\r\n\r\n groupId = questions[i].groupId;\r\n }\r\n\r\n return (\r\n <>\r\n {items}\r\n \r\n );\r\n }\r\n\r\n};\r\n\r\nexport default SurveyQuestionnaire;\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ApplicationState } from '../store';\r\nimport * as SurveyStore from '../store/Survey';\r\nimport getLangTranslation from '../common/lang-trans';\r\n\r\nimport SurveyHeader from '../components/survey/SurveyHeader';\r\nimport SurveyStart from \"../components/survey/SurveyStart\";\r\nimport SurveyLanguage from \"../components/survey/SurveyLanguage\";\r\nimport SurveyEndnote from \"../components/survey/SurveyEndnote\";\r\nimport SurveyQuestionnaire from \"../components/survey/SurveyQuestionnaire\";\r\n\r\n// At runtime, Redux will merge together...\r\ntype SurveyProps =\r\n SurveyStore.DataState // ... state we've requested from the Redux store\r\n & typeof SurveyStore.actionCreators // ... plus action creators we've requested\r\n & RouteComponentProps<{ surveyCode: string }>; // ... plus incoming routing parameters\r\n\r\nclass Campaign extends React.PureComponent {\r\n\r\n // This method is called when the component is first added to the document\r\n public componentDidMount() {\r\n this.ensureDataFetched();\r\n }\r\n\r\n // This method is called when the route parameters change\r\n public componentDidUpdate() {\r\n this.ensureDataFetched();\r\n }\r\n\r\n private ensureDataFetched() {\r\n const surveyCode = this.props.match.params.surveyCode || '';\r\n this.props.RequestSurvey(surveyCode);\r\n }\r\n\r\n public render() {\r\n const heading = this.props.survey.name || this.props.survey.title || this.props.survey.titleEn || '';\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n
\r\n

{heading}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {this.renderStepComponent()}\r\n
\r\n
\r\n );\r\n }\r\n\r\n private renderStepComponent() {\r\n const langTransEN = getLangTranslation('en');\r\n const langTransFR = getLangTranslation('fr');\r\n\r\n if (this.props.survey) {\r\n switch (this.props.step) {\r\n case -1:\r\n return (<>

{ langTransEN.UnableToLoading }

{ langTransFR.UnableToLoading }

);\r\n case 0:\r\n return (<>

{ langTransEN.LoadingPleaseWait }

{ langTransFR.LoadingPleaseWait }

);\r\n case 1:\r\n return ();\r\n case 2:\r\n return ();\r\n case 3:\r\n return ();\r\n case 4:\r\n return ();\r\n }\r\n } else {\r\n return (\r\n

{ langTransEN.UnableToLoading } / { langTransFR.UnableToLoading }

\r\n );\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.surveyStore,\r\n SurveyStore.actionCreators\r\n)(Campaign as any);\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport logoen from '../logo-en.svg';\r\nimport AuthService from '../services/auth.service';\r\n\r\nclass Header extends React.PureComponent {\r\n\r\n private handleLogout = () => {\r\n if (this.props && this.props.history) {\r\n AuthService.logout();\r\n this.props.history.push('/login');\r\n } else if (this.props && this.props.props && this.props.props.history) {\r\n AuthService.logout();\r\n this.props.props.history.push('/login');\r\n }\r\n }\r\n public render() {\r\n const user = AuthService.getCurrentUser();\r\n return (\r\n \r\n
\r\n
\r\n \"logo\"\r\n
\r\n {\r\n user.accessToken &&\r\n
\r\n
\r\n \r\n
    \r\n
  • Change Password
  • \r\n

  • \r\n
  • \r\n
\r\n
\r\n \r\n  \r\n Welcome, \r\n \r\n
\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n};\r\n\r\nexport default Header;\r\n","import React from 'react';\r\nimport { CreateSurveyProps } from '../common/CreateSurveyProps';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { GetDateString } from '../common/helperFunctions';\r\nimport { EditObject } from '../common/constants';\r\nimport Header from '../components/header';\r\nimport authHeader from '../services/auth-header';\r\n\r\nclass Search extends React.Component {\r\n \r\n // This method is called when the component is first added to the document\r\n public componentDidMount() {\r\n this.handleSearch(1);\r\n }\r\n\r\n render() {\r\n\r\n return ( \r\n <>\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.renderSurveyRecords()\r\n }\r\n \r\n
IDName# of LinksStatusSubmissionsCreated OnStart DateEnd DateAction
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n );\r\n }\r\n\r\n handleOnChange = (e: React.ChangeEvent) => {\r\n e.target.value = e.target.value;\r\n\r\n this.props.SetPropertyCreateSurvey(EditObject.SearchState, e.target.name, e.target.value, false, 0, new Date());\r\n }\r\n\r\n handleSearch = (pageNumber: number) => {\r\n this.props.SetPropertyCreateSurvey(EditObject.SearchState, 'pageNumber', '', false, pageNumber, new Date());\r\n\r\n this.props.RequestSurveyList(this.props.searchState.searchText, this.props.searchState.pageSize, pageNumber);\r\n }\r\n\r\n handleDelete = (surveyId: number) => {\r\n fetch(`/Admin/Delete/${surveyId}`, authHeader('DELETE', '', ''))\r\n .then(response => {\r\n if (!response.ok) {\r\n throw new Error('Unable to delete');\r\n }\r\n return response;\r\n })\r\n .then(data => {\r\n this.props.RequestSurveyList(this.props.searchState.searchText, this.props.searchState.pageSize, this.props.searchState.pageNumber);\r\n })\r\n .catch( error => {\r\n\r\n });\r\n }\r\n\r\n renderPagination() {\r\n let li = [];\r\n\r\n \r\n var totalPages = Math.ceil(this.props.searchState.totalRecords/this.props.searchState.pageSize); \r\n \r\n if (totalPages < 2) return <>;\r\n \r\n if (this.props.searchState.pageNumber === 1) {\r\n li.push(
  • <<
  • );\r\n } else {\r\n li.push(
  • this.handleSearch(1)}><<
  • );\r\n }\r\n\r\n let maxLinks = 2;\r\n let startLink = this.props.searchState.pageNumber - maxLinks;\r\n let endLink = this.props.searchState.pageNumber + maxLinks;\r\n\r\n if (startLink < 1) {\r\n endLink += (startLink * -1) + 1;\r\n startLink = 1;\r\n }\r\n\r\n if (endLink > totalPages) {\r\n \r\n startLink -= (endLink - totalPages);\r\n endLink = totalPages;\r\n if (startLink < 1) startLink = 1;\r\n }\r\n\r\n\r\n for(let i = startLink; i <= endLink; i++) {\r\n\r\n if (this.props.searchState.pageNumber === i) {\r\n li.push(
  • \r\n {i}\r\n
  • );\r\n } else {\r\n li.push(
  • this.handleSearch(i)}>{i}
  • );\r\n }\r\n }\r\n\r\n if (this.props.searchState.pageNumber === totalPages) {\r\n li.push(
  • >>
  • );\r\n } else {\r\n li.push(
  • this.handleSearch(totalPages)}>>>
  • );\r\n }\r\n return li;\r\n }\r\n\r\n renderSurveyRecords() {\r\n if (this.props.searchState.isLoading === 1) {\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n );\r\n } else if (this.props.searchState.isLoading === 0) {\r\n if ( this.props.searchState.survey && this.props.searchState.survey.length > 0 ) {\r\n return (\r\n this.props.searchState.survey.map( m => \r\n {\r\n return \r\n {m.surveyId}\r\n {m.name}\r\n {m.numOfLinks}\r\n {m.status}\r\n {m.totalSubmissions}\r\n {GetDateString(m.createdOn, false)}\r\n {m.startDate ? GetDateString(m.startDate, true) : ''}\r\n {m.endDate ? GetDateString(m.endDate, true) : ''}\r\n \r\n Edit \r\n \r\n \r\n Copy \r\n \r\n \r\n \r\n \r\n ;\r\n }\r\n ));\r\n } else {\r\n return (\r\n \r\n \r\n No records found\r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n Click search to fetch the records\r\n \r\n \r\n );\r\n }\r\n}\r\n \r\nexport default Search;\r\n","import { SurveyModel } from \"./survey.model\";\r\n\r\nexport class SurveyListModel extends SurveyModel {\r\n public numOfLinks!: number;\r\n public status!: string;\r\n public totalSubmissions!: number;\r\n public createdOn!: Date;\r\n public totalRecords: number = 0;\r\n}\r\n\r\nexport class SurveyLinkModel extends SurveyListModel {\r\n public linkList: LinkModel[] = [];\r\n}\r\n\r\nexport class LinkModel {\r\n\r\n public id: number = 0;\r\n public status: string = '';\r\n public link: string = '';\r\n public isPublic: boolean = false;\r\n public createdOn: Date = new Date();\r\n}","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { CreateSurveyProps } from '../common/CreateSurveyProps';\r\nimport { ApplicationState } from '../store';\r\nimport * as CreateSurveyStore from '../store/CreateSurvey';\r\nimport { DownloadCsv, GetDateString } from \"../common/helperFunctions\";\r\nimport produce from 'immer';\r\nimport { LinkModel, SurveyLinkModel } from '../models/searchSurvey.model';\r\nimport Header from \"../components/header\";\r\nimport { Link } from 'react-router-dom';\r\nimport authHeader from '../services/auth-header';\r\n\r\nexport interface LinkGeneratorState {\r\n isLoading: number;\r\n numberOfLinks: number;\r\n isPublic: boolean,\r\n survey: SurveyLinkModel;\r\n previousSurvey: SurveyLinkModel;\r\n newLinks: LinkModel[];\r\n links: LinkModel[][];\r\n}\r\n \r\nclass LinkGenerator extends React.Component {\r\n linksx : LinkModel[][] = [];\r\n baseurl = '';\r\n\r\n state = {\r\n isLoading: -1,\r\n numberOfLinks: 0,\r\n isPublic: false,\r\n survey: new SurveyLinkModel(),\r\n previousSurvey: new SurveyLinkModel(),\r\n newLinks: [],\r\n links: this.linksx\r\n }\r\n\r\n // This method is called when the component is first added to the document\r\n public componentDidMount() {\r\n this.baseurl = window.location.origin + \"/campaign/\" ;\r\n\r\n this.baseurl = this.baseurl.toLowerCase().replace(\"admin\",\"\");\r\n const surveyId = this.props.match.params.surveyId || 0;\r\n\r\n fetch(`/Admin/Link/${surveyId}`, authHeader(\"GET\", '', ''))\r\n .then(response => response.json() as Promise\r\n )\r\n .then(data => {\r\n this.setDataInState(data);\r\n })\r\n .catch(error => {\r\n //console.log('error', error);\r\n this.setState(produce(this.state, draftState => {\r\n draftState.isLoading = 0;\r\n }));\r\n });\r\n }\r\n\r\n private handleGenerateLink = () => {\r\n if (this.state.isLoading <= 0) {\r\n this.setState(produce(this.state, draftState => {\r\n draftState.isLoading = 1;\r\n }));\r\n\r\n fetch(`/Admin/GenerateUniqueLinks/${this.state.survey.surveyId}/${this.state.numberOfLinks}/${this.state.isPublic}`, authHeader(\"GET\", '', ''))\r\n .then(response => response.json() as Promise\r\n )\r\n .then(data => {\r\n this.setDataInState(data);\r\n })\r\n .catch(error => {\r\n this.setState(produce(this.state, draftState => {\r\n draftState.isLoading = 0;\r\n }));\r\n });\r\n }\r\n }\r\n\r\n private handleOnCheckChange = (e: React.ChangeEvent) => {\r\n this.setState(produce(this.state, draftState => {\r\n draftState.isPublic = e.target.checked;\r\n }));\r\n }\r\n\r\n private handleOnChange = (e: React.ChangeEvent) => {\r\n this.setState(produce(this.state, draftState => {\r\n draftState.numberOfLinks = +e.target.value;\r\n }));\r\n }\r\n \r\n private setDataInState(data: SurveyLinkModel){\r\n const linkArray = this.splitLinkArray(data.linkList);\r\n\r\n this.setState(produce(this.state, draftState => {\r\n draftState.survey = data;\r\n draftState.previousSurvey = data;\r\n draftState.isLoading = 0;\r\n draftState.links = linkArray;\r\n }));\r\n }\r\n\r\n private splitLinkArray(links: LinkModel[]) : LinkModel[][] {\r\n let result: LinkModel[][] = [];\r\n\r\n if (links && links.length > 0) {\r\n let x = 0;\r\n for (var i = 0; i < links.length; i++) {\r\n \r\n if ( (i === links.length - 1) || links[i].createdOn !== links[i + 1].createdOn) {\r\n result.push(links.slice(x, i+1));\r\n\r\n x = i+1;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n\r\n }\r\n\r\n private downloadCsv(links: LinkModel[][]) {\r\n\r\n if (links && links.length > 0) {\r\n let csv = '';\r\n\r\n links.forEach(lnkArr => {\r\n \r\n lnkArr.forEach(e => {\r\n \r\n csv += '\"';\r\n csv += this.baseurl;\r\n csv += e.link;\r\n csv += '\"\\n';\r\n });\r\n \r\n });\r\n\r\n DownloadCsv(csv, 'links');\r\n }\r\n \r\n }\r\n\r\n\r\n render() { \r\n\r\n if (this.state.survey !== null && \r\n this.state.survey !== undefined && \r\n this.state.survey && \r\n this.state.survey.surveyId !== undefined) {\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n

    Campaign Information

    \r\n
    \r\n
    \r\n
    \r\n Campaign List\r\n
    \r\n
    \r\n
    \r\n { this.renderSurveyInfo() }\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n

    Campaign links generated in Draft state, cannot be use when published

    \r\n

    Campaign links

    \r\n\r\n { this.renderSurveyLinkArray(this.state.links) }\r\n \r\n )\r\n } else {\r\n\r\n return (
    );\r\n }\r\n }\r\n\r\n private renderSurveyInfo() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Id:{this.state.survey.surveyId}
    Name:{this.props.survey.name || this.props.survey.title || this.props.survey.titleEn || ''}
    Status:{this.state.survey.status}
    \r\n );\r\n }\r\n\r\n private renderSurveyLinkArray(links: LinkModel[][]) {\r\n\r\n const items: any = [];\r\n\r\n links.forEach(e => {\r\n items.push( this.renderSurveyLink(e) );\r\n });\r\n\r\n return (\r\n <>\r\n {items}\r\n \r\n );\r\n }\r\n\r\n private renderSurveyLink(links: LinkModel[]) {\r\n\r\n if (links && links.length > 0) {\r\n return (\r\n \r\n
    \r\n
    \r\n
    Links Created On: {GetDateString(links[0].createdOn, true)}
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n {}\r\n {/**/}\r\n \r\n \r\n { links.map((l, index) => \r\n \r\n \r\n \r\n {/**/}\r\n \r\n )}\r\n \r\n
    S.No.TypeStatusLink
    { index + 1 }{ l.isPublic ? 'Public' : 'Unique' }{ l.status }{ this.baseurl }{ l.link }
    \r\n
    \r\n );\r\n }\r\n\r\n return '';\r\n\r\n }\r\n}\r\n \r\nexport default LinkGenerator;\r\n","import React from 'react';\nimport { CreateSurveyProps } from '../common/CreateSurveyProps';\nimport { DownloadCsv, GetDateString, GetFileName, sanatizeStringForCsv } from \"../common/helperFunctions\";\nimport produce from 'immer';\nimport { SurveyModel } from '../models/survey.model';\nimport Header from \"../components/header\";\nimport { SubmissionModel } from '../models/Submission.model';\nimport { Link } from 'react-router-dom';\nimport { AnswerIdValueModel } from '../models/SurveySubmission.model';\nimport { PDF_MatrixRowAndColumn_Seperator, QuestionType_MATRIX, QuestionType_MCQ } from '../common/constants';\nimport { QuestionModel } from '../models/question.model';\nimport authHeader from '../services/auth-header';\n\nexport interface SubmissionsState {\n isLoading: number;\n survey: SurveyModel\n}\n \nclass Submissions extends React.Component {\n state = {\n isLoading: -1,\n survey: new SurveyModel()\n }\n\n // This method is called when the component is first added to the document\n public componentDidMount() {\n const surveyId = this.props.match.params.surveyId || 0;\n\n fetch(`/Admin/Answers/${surveyId}`, authHeader(\"GET\", '', ''))\n .then(response => response.json() as Promise\n )\n .then(data => {\n this.setState(produce(this.state, draftState => {\n draftState.survey = data;\n draftState.isLoading = 0;\n }));\n })\n .catch(error => {\n this.setState(produce(this.state, draftState => {\n draftState.isLoading = 0;\n }));\n });\n }\n\n render() { \n // const heading = this.props.survey.name || this.props.survey.title || this.props.survey.titleEn || '';\n\n return (\n <>\n
    \n
    \n
    \n

    Campaign Information

    \n
    \n
    \n
    \n Campaign List\n
    \n
    \n
    \n \n \n
    \n
    \n { this.renderSurveyInfo() }\n { this.renderSubmissions() }\n \n );\n }\n\n renderSurveyInfo() {\n if (this.state.survey !== null && \n this.state.survey !== undefined && \n this.state.survey && \n this.state.survey.surveyId !== undefined) {\n return (\n <>\n \n \n \n \n \n
    Id:{this.state.survey.surveyId}
    Name:{this.state.survey.titleEn}
    \n \n );\n }\n\n return('<>');\n }\n\n private renderSubmissions() {\n return (\n <>\n

    Submissions:

    \n { this.state.survey.submissions.map(l => \n \n
    \n
    \n \n \n \n {/**/}\n {/**/}\n {/**/}\n \n \n \n \n {/**/}\n {/**/}\n {/**/}\n \n \n \n \n \n \n \n
    BrowserIP AddressLinkSubmitted OnDownload
    { l.browser }{ l.ipAddress }{ l.link }{ GetDateString(l.submittedOn, true) }
    \n  \n
    \n { this.renderQuestionAnswers(l) }\n
    \n
    \n
    \n
    \n )}\n \n );\n }\n\n private renderQuestionAnswers(l: SubmissionModel){\n return (\n
    \n \n { l.answers.map((a) => {\n const question = this.getQuestion(a.questionId);\n const questionText = this.getQuestionText(question);\n\n return (\n
    \n \n {\n this.getAnswerHtml(a, question)\n }\n
    \n );\n }\n )}\n
    \n );\n }\n\n private getAnswerHtml(a:AnswerIdValueModel, question: QuestionModel | undefined) {\n if (a.mcqAnswers && a.mcqAnswers.length > 0) {\n return
      \n {\n this.getMcqUlListAnswer(a, question)\n }\n
    \n } else if (a.matrixAnswers && a.matrixAnswers.length > 0) {\n return
      \n {\n this.getMatrixAnswer(a, question)\n }\n
    \n }\n\n return

    {a.answer}

    \n }\n\n private getQuestion(questionId: number): QuestionModel | undefined {\n \n return this.state.survey.questions.find( q => q.questionId === questionId);\n\n }\n\n private getQuestionText(question: QuestionModel | undefined): string {\n\n return question !== undefined ? question.questionEn : '';\n }\n\n private getQuestionTextForAllCsv(question: QuestionModel | undefined): string[] {\n\n if (question?.code === QuestionType_MATRIX) {\n const matrixQuestions = question.matrixRows.map((e) => sanatizeStringForCsv(e.textEn));\n\n return matrixQuestions;\n }\n\n return [question !== undefined ? sanatizeStringForCsv(question.questionEn) : ''];\n }\n\n private downloadPdf(submissionId: number | null, link: string | null) {\n const surveyId = this.state.survey.surveyId;\n const submissionIdVal = submissionId ? submissionId : '';\n fetch(`/Admin/GetSubmissionPdf/${surveyId}/${submissionIdVal}`, authHeader(\"GET\", '', ''))\n .then(response => response.blob())\n .then(blob => {\n var url = window.URL.createObjectURL(blob);\n var a = document.createElement('a');\n a.href = url;\n a.download = GetFileName(link, 'pdf');\n document.body.appendChild(a);\n a.click(); \n a.remove();\n });\n\n }\n\n private downloadCsvAll() {\n\n let csv = sanatizeStringForCsv(this.state.survey.titleEn);\n csv += '\\n \\n';\n let questionList: {questionId:number, question: QuestionModel | undefined}[] = [];\n\n for (let i = 0; i < this.state.survey.submissions.length; i++) {\n const s = this.state.survey.submissions[i];\n\n if (s !== undefined) {\n csv += sanatizeStringForCsv('Recipient Number');\n csv += ',';\n csv += sanatizeStringForCsv('Submitted On');\n csv += ',';\n csv += sanatizeStringForCsv('Time Submitted');\n csv += ',';\n\n for (let ansCount = 0; ansCount < s.answers.length; ansCount++) {\n const question = this.getQuestion(s.answers[ansCount].questionId); \n csv += this.getQuestionTextForAllCsv(question).join(',');\n csv += ',';\n\n questionList.push ( {questionId: s.answers[ansCount].questionId, question:question} );\n\n };\n csv += '\\n';\n\n break;\n }\n }\n\n this.state.survey.submissions.forEach( (s, i) => {\n\n if (s !== undefined) {\n csv += (i+1);\n csv += ',';\n const date = new Date(s.submittedOn);\n let submissionDate = `${date.getFullYear()}-${date.getMonth()+1}-${date.getDate()}`; \n csv += sanatizeStringForCsv(submissionDate);\n csv += ',';\n\n let submissionTime = `${date.getHours()}:${date.getMinutes()}`; \n csv += sanatizeStringForCsv(submissionTime);\n csv += ',';\n\n questionList.forEach((q) => {\n const ans = s.answers.find( a => a.questionId === q.questionId);\n \n if (ans !== undefined) {\n\n csv += this.getCsvAnswerForAllCsv(ans, q.question);\n\n }\n\n csv += ',';\n });\n\n csv += '\\n';\n }\n });\n \n DownloadCsv(csv, this.state.survey.titleEn);\n }\n\n private downloadCsv(submissionId: number) {\n\n const submission = this.state.survey.submissions.find( f => f.submissionId === submissionId);\n\n if (submission !== undefined) {\n let csv = sanatizeStringForCsv(this.state.survey.titleEn);\n csv += '\\n \\n';\n csv += sanatizeStringForCsv('Submitted On: ' + submission.submittedOn);\n //csv += '\\n';\n //csv += sanatizeStringForCsv('Link: ' + submission.link);\n //csv += '\\n';\n //csv += sanatizeStringForCsv('Browser: ' + submission.browser);\n //csv += '\\n';\n //csv += sanatizeStringForCsv('IP Address: ' + submission.ipAddress);\n csv += '\\n \\n';\n\n submission.answers.forEach( (a) => {\n const question = this.getQuestion(a.questionId);\n const questionText = this.getQuestionText(question); \n csv += sanatizeStringForCsv(questionText);\n csv += '\\n';\n csv += sanatizeStringForCsv( this.getCsvAnswer(a, question) );\n csv += '\\n \\n';\n });\n\n DownloadCsv(csv, this.state.survey.titleEn);\n\n }\n }\n\n getCsvAnswer(ans: AnswerIdValueModel, question: QuestionModel | undefined): string {\n\n switch (question?.code) {\n case QuestionType_MATRIX:\n return this.getMatrixAnswerArray(ans, question).join('\\n');\n case QuestionType_MCQ:\n return this.getMcqAnswerArray(ans, question).join('\\n');\n default:\n return ans.answer;\n }\n }\n\n getCsvAnswerForAllCsv(ans: AnswerIdValueModel, question: QuestionModel | undefined): string {\n\n switch (question?.code) {\n case QuestionType_MATRIX:\n return this.getMatrixAnswerArrayForAllCsv(ans, question).map((e) => sanatizeStringForCsv(e)).join(',');\n case QuestionType_MCQ:\n return sanatizeStringForCsv(this.getMcqAnswerArray(ans, question).join('\\n'));\n default:\n return sanatizeStringForCsv(ans.answer);\n }\n }\n\n getMatrixAnswer(ans: AnswerIdValueModel, question: QuestionModel | undefined) {\n return (\n \n \n \n \n \n \n \n \n {\n this.getMatrixAnswerArray(ans, question).map( (i, index) => {\n const QandA = i.split(PDF_MatrixRowAndColumn_Seperator);\n return \n \n \n \n })\n }\n \n
    QuestionAnswer
    { QandA[0] }{ QandA[1] }
    \n )\n }\n\n getMatrixAnswerArray(ans: AnswerIdValueModel, question: QuestionModel | undefined): string[] {\n \n const matrixAns = ans.matrixAnswers.map((i) => { \n if (question) {\n const row = question.matrixRows.find( o => o.matrixId === i.matrixRowId);\n const col = question.matrixColumns.find( o => o.matrixId === i.matrixColumnId);\n \n if (row && col)\n return `${row.textEn}${PDF_MatrixRowAndColumn_Seperator}${col.textEn}`;\n }\n\n return '';\n });\n \n return matrixAns;\n }\n\n getMatrixAnswerArrayForAllCsv(ans: AnswerIdValueModel, question: QuestionModel | undefined): string[] {\n \n const matrixAns = question?.matrixRows.map((row) => {\n \n let tempAns = ans.matrixAnswers.find(x => x.matrixRowId === row.matrixId);\n\n if (tempAns != undefined) {\n const col = question.matrixColumns.find( o => o.matrixId === tempAns?.matrixColumnId);\n \n if (row && col)\n return `${col.textEn}`;\n }\n\n return '';\n\n });\n\n if (matrixAns !== undefined)\n return matrixAns;\n \n return [];\n }\n\n getMcqUlListAnswer(ans: AnswerIdValueModel, question: QuestionModel | undefined) {\n return this.getMcqAnswerArray(ans, question).map( (i, index) => {\n return
  • {i}
  • \n });\n }\n\n getMcqAnswerArray(ans: AnswerIdValueModel, question: QuestionModel | undefined): string[] {\n \n const mcqAns = ans.mcqAnswers.map((i) => { \n let other = '';\n \n if (question) {\n const x = question.mcqOptions.find( o => o.mcqOptionId === i.mcqOptionId && o.isOther);\n if( x !== undefined)\n other = '*Other:';\n }\n return `${other}${i.answerEn}`;\n });\n \n return mcqAns;\n }\n}\n \nexport default Submissions;\n","import * as React from 'react';\nimport { SurveyEditSteps } from '../../common/constants';\n\ninterface iProps {\n step: number,\n moveNextStep: any,\n}\n\nclass TopNav extends React.PureComponent {\n\n public render() {\n return (\n \n { this.renderHeaderLine() }\n \n );\n }\n\n private renderHeaderLine() {\n \n return (\n <>\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n\n
    \n
    \n
      \n \n {this.getLiItem('Start', SurveyEditSteps.Start, SurveyEditSteps.Start)}\n {this.getLiItem('Group', SurveyEditSteps.Group, SurveyEditSteps.Group)}\n {this.getLiItem('Question', SurveyEditSteps.Question, SurveyEditSteps.Question)}\n\n {this.getLiItem('Summary', SurveyEditSteps.Summary, SurveyEditSteps.Question)}\n {this.getLiItem('Endnote', SurveyEditSteps.Endnote, SurveyEditSteps.Summary)}\n {this.getLiItem('Preview', SurveyEditSteps.Preview, SurveyEditSteps.Endnote)}\n {this.getLiItem('Save', SurveyEditSteps.Publish, SurveyEditSteps.Preview)}\n \n
    \n
    \n
    \n );\n }\n\n getLiItem(stepName: string, stepNum: number, completedNum: number ) {\n\n return (\n
  • completedNum ? 'visited completed' : ''} ${this.props.step === stepNum ? 'active' : ''}`}>\n

    \n this.props.moveNextStep(stepNum)}>{stepName}\n

    \n
  • \n );\n }\n};\n\nexport default TopNav;\n","import * as React from 'react';\nimport { connect } from 'react-redux';\nimport { CreateSurveyProps } from '../../common/CreateSurveyProps';\nimport { validateString } from '../../common/helperFunctions';\nimport { ApplicationState } from '../../store';\nimport * as CreateSurveyStore from '../../store/CreateSurvey';\nimport { iState } from '../../models/iState';\nimport { EditObject } from '../../common/constants';\n\nclass Start extends React.Component {\n state = {\n validationChecked: false,\n generalErrorMessage: ''\n }\n\n handleChange = (e: React.ChangeEvent) => {\n e.target.value = e.target.value;\n\n this.props.SetPropertyCreateSurvey(EditObject.Survey, e.target.name, e.target.value, false, 0, new Date());\n };\n\n handleTextAreaChange = (e: React.ChangeEvent) => {\n e.target.value = e.target.value;\n \n this.props.SetPropertyCreateSurvey(EditObject.Survey, e.target.name, e.target.value, false, 0, new Date());\n };\n\n ValidateAndMoveNext = () => {\n this.setState({...this.state, validationChecked: true});\n if (validateString(true, this.props.survey.name, 1, -1) === false ||\n validateString(true, this.props.survey.titleEn, 1, -1) === false ||\n validateString(true, this.props.survey.titleFr, 1, -1) === false) {\n\n this.setState({...this.state, generalErrorMessage : 'Please fill out the required fields above' });\n\n return;\n }\n\n this.props.MoveNextStep(undefined);\n }\n\n render() {\n return(\n \n
    \n
    \n \n \n {!validateString(this.state.validationChecked, this.props.survey.name, 1, -1) &&
    Required field
    }\n
    \n
    \n
    \n
    \n \n \n {!validateString(this.state.validationChecked, this.props.survey.titleEn, 1, -1) &&
    Required field
    }\n
    \n
    \n
    \n
    \n \n \n {!validateString(this.state.validationChecked, this.props.survey.titleFr, 1, -1) &&
    Required field
    }\n
    \n
    \n
    \n
    \n \n  help\n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n\n
    \n
    \n
    {this.state.generalErrorMessage}
    \n
    \n
    \n\n
    \n \n
    \n\n
    \n );\n }\n};\n\nexport default connect(\n (state: ApplicationState) => state.createSurveyStore,\n CreateSurveyStore.actionCreators\n)(Start as any);\n\n","import * as React from 'react';\nimport { connect } from 'react-redux';\nimport { CreateSurveyProps } from '../../common/CreateSurveyProps';\nimport { EditObject } from '../../common/constants';\nimport { ApplicationState } from '../../store';\nimport * as CreateSurveyStore from '../../store/CreateSurvey';\n\nclass Endnote extends React.Component {\n\n handleTextAreaChange = (e: React.ChangeEvent) => {\n e.target.value = e.target.value;\n \n this.props.SetPropertyCreateSurvey(EditObject.Survey, e.target.name, e.target.value, false, 0, new Date());\n };\n \n render() {\n return(\n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n\n
    \n \n \n
    \n
    \n );\n }\n};\n\nexport default connect(\n (state: ApplicationState) => state.createSurveyStore,\n CreateSurveyStore.actionCreators\n)(Endnote as any);\n","export class McqOptionModel {\n public mcqOptionId: number = -1;\n public option: string = '';\n public optionEn: string = '';\n public optionFr: string = '';\n public sequence: number = 0;\n public isOther: boolean = false;\n}\n\nexport class MatrixRowColumnModel {\n\tpublic matrixId: number = -1;\n\tpublic text: string = '';\n\tpublic textEn: string = '';\n\tpublic textFr: string = '';\n\tpublic sequence: number = 0;\n}\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { CreateSurveyProps } from '../../../common/CreateSurveyProps';\r\nimport { EditObject, MoveDirection } from '../../../common/constants';\r\nimport { ApplicationState } from '../../../store';\r\nimport * as CreateSurveyStore from '../../../store/CreateSurvey';\r\nimport { McqOptionModel } from '../../../models/mcq-option.model';\r\nimport produce from 'immer';\r\n\r\nexport interface iState {\r\n validationChecked: boolean,\r\n generalErrorMessage: string,\r\n\r\n isOtherExists: number, //-1 = unknown, 0 = not exists, 1 = exists, 2 = more than 2 exists\r\n mcqInsertIndex: number,\r\n editOption: McqOptionModel,\r\n mcqEnglishText: string,\r\n mcqFrenchText: string,\r\n}\r\n\r\nclass Mcq extends React.Component {\r\n private mcqEnglishInput: React.RefObject;\r\n \r\n state = {\r\n validationChecked: false,\r\n generalErrorMessage: '',\r\n isOtherExists: -1,\r\n mcqInsertIndex: -1,\r\n editOption: new McqOptionModel(),\r\n mcqEnglishText: '',\r\n mcqFrenchText: '',\r\n }\r\n\r\n constructor(props: any) {\r\n super(props);\r\n \r\n this.mcqEnglishInput = React.createRef();\r\n }\r\n\r\n public componentDidMount() {\r\n this.componentDidUpdate();\r\n }\r\n\r\n public componentDidUpdate() {\r\n\r\n\t\tif (this.props.editQuestion.mcqOptions) {\r\n\t\t\r\n\t\t\tconst other = this.props.editQuestion.mcqOptions.filter(a => a.isOther);\r\n\t\t\r\n\t\t\tconst isOtherExists = other.length;\r\n\r\n\t\t\tif (this.state.isOtherExists !== isOtherExists)\r\n\t\t\t\tthis.setState({...this.state, isOtherExists: isOtherExists});\r\n\t\t}\r\n\t}\r\n\r\n handleSelectChangeNumber = (e: React.ChangeEvent) => {\r\n\r\n this.props.SetPropertyCreateSurvey(EditObject.Question, e.target.name, '', false, +e.target.value, new Date());\r\n };\r\n\r\n handleMCQOptionTextChange = (e: React.ChangeEvent) => {\r\n e.target.value = e.target.value;\r\n\r\n var option = this.state.editOption;\r\n var enTxt = this.state.mcqEnglishText;\r\n var frTxt = this.state.mcqFrenchText;\r\n \r\n if (e.target.name === 'optionFrench') {\r\n option.optionFr = e.target.value;\r\n frTxt = e.target.value;\r\n } else {\r\n option.optionEn = e.target.value;\r\n enTxt = e.target.value;\r\n }\r\n\r\n this.setState({...this.state,\r\n editOption: option,\r\n mcqEnglishText: enTxt,\r\n mcqFrenchText: frTxt\r\n });\r\n };\r\n\r\n handleMCQOptionCheckboxChange = (e: React.ChangeEvent) => {\r\n e.target.value = e.target.value;\r\n\r\n var option = this.state.editOption;\r\n\r\n option.isOther = e.target.checked;\r\n\r\n this.setState({...this.state, editOption: option});\r\n };\r\n\r\n AddOrUpdateOptions = () => {\r\n \r\n const option = {...this.state.editOption};\r\n\r\n if (option.optionEn.replace(/ /g, '') !== '' &&\r\n option.optionFr.replace(/ /g, '') !== '') {\r\n\r\n let options = [...this.getMcqOptions()];\r\n\r\n let newOrModifiedOptions = this.generateMcqOptions();\r\n\r\n if (this.state.mcqInsertIndex < 0) {\r\n\r\n options.push(newOrModifiedOptions[0]);\r\n\r\n } else {\r\n\r\n options[this.state.mcqInsertIndex] = newOrModifiedOptions[0];\r\n\r\n }\r\n\r\n newOrModifiedOptions.shift();\r\n\r\n \r\n options = options.concat(newOrModifiedOptions);\r\n\r\n\r\n this.setState({...this.state,\r\n mcqInsertIndex: -1,\r\n editOption: new McqOptionModel()});\r\n\r\n this.UpdateMcqOption(options);\r\n }\r\n\r\n if (this.mcqEnglishInput.current != null) {\r\n this.mcqEnglishInput.current.focus();\r\n }\r\n }\r\n\r\n StartMcqOptionEdit = (index: number) => {\r\n\r\n var option = {...this.getMcqOptions()[index]};\r\n\r\n this.setState({...this.state,\r\n editOption: option,\r\n mcqInsertIndex: index,\r\n mcqEnglishText: option.optionEn,\r\n mcqFrenchText: option.optionFr\r\n });\r\n\r\n if (this.mcqEnglishInput.current != null) {\r\n this.mcqEnglishInput.current.focus();\r\n }\r\n }\r\n\r\n DeleteMcqOption = (index: number) => {\r\n \r\n this.setState(\r\n produce( this.state, draftState => {\r\n\r\n if (index === this.state.mcqInsertIndex) {\r\n \r\n draftState.mcqInsertIndex = -1;\r\n draftState.editOption = new McqOptionModel();\r\n \r\n } else if (index < this.state.mcqInsertIndex) {\r\n \r\n draftState.mcqInsertIndex = this.state.mcqInsertIndex -1;\r\n \r\n }\r\n \r\n }));\r\n\r\n const options = [...this.getMcqOptions()];\r\n\r\n options.splice(index, 1);\r\n\r\n this.UpdateMcqOption(options);\r\n }\r\n \r\n ChangePositionMcqOption = (index: number, direction: MoveDirection) => {\r\n const temArry = [...this.getMcqOptions()];\r\n\r\n if ((index > 0 && index < temArry.length -1) ||\r\n (index === 0 && direction === MoveDirection.Down) ||\r\n (index+1 === temArry.length && direction === MoveDirection.Up)) {\r\n \r\n // let subtract = 0;\r\n // let add = 0;\r\n let tmpOptn: McqOptionModel = {...temArry[index]};\r\n\r\n if (direction === MoveDirection.Up) {\r\n // subtract = 2;\r\n // add = 1;\r\n\r\n temArry[index] = {...temArry[index - 1]};\r\n temArry[index -1 ] = tmpOptn;\r\n } else {\r\n // subtract = 1;\r\n // add = 2;\r\n\r\n temArry[index] = {...temArry[index + 1]};\r\n temArry[index + 1] = tmpOptn;\r\n }\r\n\r\n this.setState(\r\n {...this.state,\r\n editOption: new McqOptionModel(),\r\n mcqInsertIndex: -1\r\n });\r\n\r\n this.UpdateMcqOption(temArry);\r\n\r\n }\r\n }\r\n\r\n UpdateMcqOption(options:McqOptionModel[]){\r\n \r\n this.props.UpdateMcqOption(\r\n produce(options, draftState => {\r\n for(let i =0; i < options.length; i++) {\r\n draftState[i].sequence = i;\r\n }\r\n })\r\n );\r\n }\r\n\r\n getMcqOptions() : McqOptionModel[] {\r\n return (this.props.editQuestion.mcqOptions || []);\r\n }\r\n\r\n generateMcqOptions() : McqOptionModel[] {\r\n let enArr = this.state.mcqEnglishText.split('\\n');\r\n enArr = enArr.map(e => e.trim()).filter(x => x !== '');\r\n\r\n let frArr = this.state.mcqFrenchText.split('\\n');\r\n frArr = frArr.map(e => e.trim()).filter(x => x !== '');\r\n\r\n let result: McqOptionModel[] = [];\r\n \r\n for(let i = 0; i < enArr.length && i < frArr.length; i++) {\r\n const tmp = new McqOptionModel();\r\n tmp.optionEn = enArr[i];\r\n tmp.optionFr = frArr[i];\r\n result.push(tmp);\r\n }\r\n\r\n if (result.length > 0 && this.state.editOption.isOther) {\r\n let lastOption = result.pop();\r\n if (lastOption) {\r\n lastOption.isOther = this.state.editOption.isOther;\r\n \r\n result.push(lastOption);\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n this.AddOrUpdateOptions()}\r\n disabled={this.props.survey.statusId === this.props.surveyStatusPublishedId}>{ this.state.mcqInsertIndex >=0 ? 'Update' : 'Add' }\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n { this.getMcqOptions().map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    EnglishFrenchOtherAction
    {item.optionEn}{item.optionFr}{item.isOther ? 'Yes' : 'No'}\r\n   this.ChangePositionMcqOption(index, MoveDirection.Down)}>Down\r\n   this.StartMcqOptionEdit(index)}\r\n disabled={this.props.survey.statusId === this.props.surveyStatusPublishedId}>Edit\r\n   this.DeleteMcqOption(index)}\r\n disabled={this.props.survey.statusId === this.props.surveyStatusPublishedId}>Delete\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n {/* {(this.state.validationChecked && this.props.editQuestion.questionTypeId <= 0) &&
    Required field
    } */}\r\n
    \r\n
    \r\n \r\n \r\n {/* {(this.state.validationChecked && this.props.editQuestion.questionTypeId <= 0) &&
    Required field
    } */}\r\n
    \r\n
    \r\n \r\n );\r\n\r\n }\r\n\r\n};\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.createSurveyStore,\r\n CreateSurveyStore.actionCreators\r\n)(Mcq as any);\r\n","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { CreateSurveyProps } from '../../../common/CreateSurveyProps';\r\nimport { ApplicationState } from '../../../store';\r\nimport * as CreateSurveyStore from '../../../store/CreateSurvey';\r\nimport produce from 'immer';\r\nimport {arrayMove, SortableContainer, SortableElement} from 'react-sortable-hoc';\r\n\r\nimport { validateString } from '../../../common/helperFunctions';\r\nimport { MatrixRowColumnModel } from '../../../models/mcq-option.model';\r\n\r\nexport interface iState {\r\n validationChecked: boolean,\r\n generalErrorMessage: string,\r\n\r\n matrixRowIndex: number,\r\n matrixRowArray: MatrixRowColumnModel[],\r\n \r\n matrixColumnIndex: number,\r\n matrixColumnArray: MatrixRowColumnModel[],\r\n \r\n rowEnglishText: string,\r\n rowFrenchText: string,\r\n\r\n columnEnglishText: string,\r\n columnFrenchText: string,\r\n\r\n items: string[]\r\n}\r\n\r\nclass Matrix extends React.Component {\r\n private mcqEnglishInput: React.RefObject;\r\n \r\n rowTemp: MatrixRowColumnModel[] = [];\r\n columnTemp: MatrixRowColumnModel[] = [];\r\n state = {\r\n validationChecked: false,\r\n generalErrorMessage: '',\r\n \r\n matrixRowIndex: -1,\r\n matrixRowArray: this.rowTemp,\r\n \r\n matrixColumnIndex: -1,\r\n matrixColumnArray: this.columnTemp,\r\n\r\n rowEnglishText: '',\r\n rowFrenchText: '',\r\n \r\n columnEnglishText: '',\r\n columnFrenchText: '',\r\n\r\n items: ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5', 'Item 6']\r\n }\r\n\r\n constructor(props: any) {\r\n super(props);\r\n \r\n this.mcqEnglishInput = React.createRef();\r\n }\r\n\r\n public componentDidMount() {\r\n\r\n this.setState(\r\n produce(this.state, draftState => {\r\n \r\n if (this.props.editQuestion.matrixRows)\r\n draftState.matrixRowArray = [...this.props.editQuestion.matrixRows];\r\n \r\n if (this.props.editQuestion.matrixColumns)\r\n draftState.matrixColumnArray = [...this.props.editQuestion.matrixColumns];\r\n\r\n const row = new MatrixRowColumnModel();\r\n draftState.matrixRowArray.push(row);\r\n\r\n const col = new MatrixRowColumnModel();\r\n draftState.matrixColumnArray.push(col);\r\n })\r\n );\r\n }\r\n\r\n handleMatrixRowTextChange = (e: React.ChangeEvent, index: number, language: string) => {\r\n e.target.value = e.target.value;\r\n\r\n let state =\r\n produce(this.state, draftState => {\r\n\r\n if (language === 'Fr') {\r\n draftState.matrixRowArray[index].textFr = e.target.value;\r\n } else {\r\n draftState.matrixRowArray[index].textEn = e.target.value;\r\n }\r\n\r\n draftState.matrixRowArray = draftState.matrixRowArray.filter((item, ix) => (\r\n \r\n ((validateString(true, item.textEn, 1, -1) ||\r\n validateString(true, item.textFr, 1, -1)) ||\r\n ix + 1 === draftState.matrixRowArray.length)\r\n ));\r\n\r\n if (!(\r\n validateString(true, draftState.matrixRowArray[draftState.matrixRowArray.length-1].textEn, 1, -1) === false &&\r\n validateString(true, draftState.matrixRowArray[draftState.matrixRowArray.length-1].textFr, 1, -1) === false)) {\r\n draftState.matrixRowArray.push( new MatrixRowColumnModel());\r\n }\r\n });\r\n\r\n this.setState( state , this.UpdateMatrixOption );\r\n };\r\n\r\n handleMatrixColumnTextChange = (e: React.ChangeEvent, index: number, language: string) => {\r\n e.target.value = e.target.value;\r\n\r\n let state =\r\n produce(this.state, draftState => {\r\n\r\n if (language === 'Fr') {\r\n draftState.matrixColumnArray[index].textFr = e.target.value;\r\n } else {\r\n draftState.matrixColumnArray[index].textEn = e.target.value;\r\n }\r\n\r\n draftState.matrixColumnArray = draftState.matrixColumnArray.filter((item, ix) => (\r\n \r\n ((validateString(true, item.textEn, 1, -1) ||\r\n validateString(true, item.textFr, 1, -1)) ||\r\n ix + 1 === draftState.matrixColumnArray.length)\r\n\r\n ));\r\n\r\n if (!(\r\n validateString(true, draftState.matrixColumnArray[draftState.matrixColumnArray.length-1].textEn, 1, -1) === false &&\r\n validateString(true, draftState.matrixColumnArray[draftState.matrixColumnArray.length-1].textFr, 1, -1) === false\r\n )) {\r\n draftState.matrixColumnArray.push( new MatrixRowColumnModel());\r\n }\r\n\r\n })\r\n\r\n this.setState( state, this.UpdateMatrixOption );\r\n };\r\n\r\n private onColumnSortEnd = ({oldIndex, newIndex}: {oldIndex: number, newIndex: number}) => {\r\n if (oldIndex + 1 === this.state.matrixColumnArray.length || \r\n newIndex + 1 === this.state.matrixColumnArray.length)\r\n return;\r\n\r\n let matrixColumnArray = produce(arrayMove(this.state.matrixColumnArray, oldIndex, newIndex), ds => {\r\n ds.forEach((e, i) => {\r\n ds[i].sequence = i;\r\n });\r\n });\r\n\r\n\r\n this.setState( { matrixColumnArray: matrixColumnArray }, this.UpdateMatrixOption );\r\n };\r\n\r\n private onRowSortEnd = ({oldIndex, newIndex}: {oldIndex: number, newIndex: number}) => {\r\n if (oldIndex + 1 === this.state.matrixRowArray.length || \r\n newIndex + 1 === this.state.matrixRowArray.length)\r\n return;\r\n\r\n let matrixRowArray = produce(arrayMove(this.state.matrixRowArray, oldIndex, newIndex), ds => {\r\n ds.forEach((e,i) => {\r\n ds[i].sequence = i;\r\n });\r\n });\r\n\r\n this.setState( { matrixRowArray: matrixRowArray }, this.UpdateMatrixOption );\r\n }\r\n\r\n UpdateMatrixOption() {\r\n\r\n let mr = produce(this.state.matrixRowArray, ds => {\r\n ds.pop();\r\n });\r\n\r\n let mc = produce(this.state.matrixColumnArray, ds => {\r\n ds.pop();\r\n });\r\n\r\n this.props.UpdateMatrixOption(mr, mc);\r\n }\r\n\r\n render() {\r\n return(\r\n \r\n {\r\n this.RenderRatingScale()\r\n }\r\n \r\n );\r\n }\r\n \r\n\r\n RenderRatingScale() {\r\n return (\r\n <>\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n};\r\n\r\nconst SortableItem = SortableElement((\r\n {title, value, fun, idx, arrayLength, disabled}:\r\n {title: string, value: MatrixRowColumnModel,\r\n fun: any, idx: number, arrayLength: number, disabled: boolean}) => (\r\n
    \r\n
    \r\n
    \r\n ::\r\n fun(e, idx, \"En\")}\r\n required>\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n ::\r\n fun(e, idx, \"Fr\")}\r\n required>\r\n \r\n
    \r\n
    \r\n
    \r\n ));\r\n \r\n const SortableList = SortableContainer(({title, key, items, fun, disabled}: {\r\n title: string, key: string, items: MatrixRowColumnModel[], \r\n fun: any, disabled: boolean}) => {\r\n return (\r\n
    \r\n {\r\n items.map((value, index, array) => (\r\n \r\n ))\r\n }\r\n
    \r\n );\r\n });\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.createSurveyStore,\r\n CreateSurveyStore.actionCreators\r\n)(Matrix as any);\r\n","import * as React from 'react';\nimport { connect } from 'react-redux';\nimport { CreateSurveyProps } from '../../common/CreateSurveyProps';\nimport { getQuestionTypeByCode, validateString } from '../../common/helperFunctions';\nimport { EditObject, QuestionType_MATRIX, QuestionType_MCQ, QuestionType_Text } from '../../common/constants';\nimport Mcq from './questionType/Mcq';\nimport Matrix from './questionType/Matrix';\nimport { ApplicationState } from '../../store';\nimport * as CreateSurveyStore from '../../store/CreateSurvey';\n\nexport interface iState {\n validationChecked: boolean,\n generalErrorMessage: string,\n}\n\nclass AddQuestion extends React.Component {\n \n state = {\n validationChecked: false,\n generalErrorMessage: '',\n }\n\n constructor(props: any) {\n super(props);\n \n }\n\n handleChangeNumber = (e: React.ChangeEvent) => {\n e.target.value = e.target.value;\n \n this.props.SetPropertyCreateSurvey(EditObject.Question, e.target.name, '', false, +e.target.value, new Date());\n };\n\n handleInputChange = (e: React.ChangeEvent) => {\n e.target.value = e.target.value;\n \n this.props.SetPropertyCreateSurvey(EditObject.Question, e.target.name, e.target.value, false, 0, new Date());\n };\n\n handleTextAreaChange = (e: React.ChangeEvent) => {\n e.target.value = e.target.value;\n \n this.props.SetPropertyCreateSurvey(EditObject.Question, e.target.name, e.target.value, false, 0, new Date());\n };\n\n handleSelectChangeNumber = (e: React.ChangeEvent) => {\n\n this.props.SetPropertyCreateSurvey(EditObject.Question, e.target.name, '', false, +e.target.value, new Date());\n };\n\n handleSelectChange = (e: React.ChangeEvent) => {\n let isMandatory = false;\n \n if (e.target.value)\n isMandatory = true;\n\n this.props.SetPropertyCreateSurvey(EditObject.Question, e.target.name, '', isMandatory, 0, new Date());\n };\n\n CancelAndMoveNext = () => {\n if (this.props.survey.questions.length > 0)\n this.props.MoveNextStep(undefined);\n else\n this.setState({...this.state, generalErrorMessage : 'Please add at least one question' });\n }\n\n ValidateAndSave = () => {\n const other = this.props.editQuestion.mcqOptions.filter(a => a.isOther);\n if (other.length > 1) {\n this.setState({...this.state, validationChecked: true, generalErrorMessage : 'You can have only one \"Other\" MCQ' });\n\n return;\n }\n\n if (this.props.editQuestion.code === QuestionType_MCQ && this.props.editQuestion.mcqOptions.length === 0) {\n this.setState({...this.state, validationChecked: true, generalErrorMessage : 'Please add MCQ option(s)' });\n\n return;\n }\n\n if (validateString(true, this.props.editQuestion.questionEn, 1, -1) === false ||\n validateString(true, this.props.editQuestion.questionFr, 1, -1) === false) {\n \n this.setState({...this.state, validationChecked: true, generalErrorMessage : 'Please fill out the required fields above' });\n\n return;\n }\n\n if (\n this.props.editQuestion.code === QuestionType_MATRIX && (\n (this.props.editQuestion.matrixRows || []).length === 0 ||\n (this.props.editQuestion.matrixColumns || []).length === 0 )\n ) {\n this.setState({...this.state, validationChecked: true, generalErrorMessage : 'Please add Matrix question(s)/option(s)' });\n\n return;\n }\n\n this.props.EndQuestionEdit(false);\n this.setState({...this.state, \n validationChecked: false,\n generalErrorMessage : '',\n });\n }\n\n render() {\n return(\n \n
    \n
    \n \n \n {(this.state.validationChecked && this.props.editQuestion.questionTypeId <= 0) &&
    Required field
    }\n
    \n
    \n
    \n
    \n \n \n {!validateString(this.state.validationChecked, this.props.editQuestion.questionEn, 1, -1) &&
    Required field
    }\n
    \n
    \n
    \n
    \n \n {!validateString(this.state.validationChecked, this.props.editQuestion.questionFr, 1, -1) &&
    Required field
    }\n
    \n
    \n {\n this.props.editQuestion.questionTypeId !== getQuestionTypeByCode(this.props.questionType, QuestionType_MCQ).id \n && this.props.editQuestion.code !== QuestionType_MATRIX \n &&\n this.renderPlaceHolder()\n }\n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n {\n (\n (\n this.props.editQuestion.questionTypeId === getQuestionTypeByCode(this.props.questionType, QuestionType_MCQ).id && \n \n ) ||\n (\n this.props.editQuestion.questionTypeId === getQuestionTypeByCode(this.props.questionType, QuestionType_MATRIX).id && \n \n )\n )\n }\n {\n (this.props.editQuestion.code === QuestionType_Text || \n ( this.props.editQuestion.code === QuestionType_MCQ )) &&\n <>\n
    \n
    \n \n \n
    \n
    \n\n {\n this.props.editQuestion.questionTypeId === getQuestionTypeByCode(this.props.questionType, QuestionType_MCQ).id && \n //this.state.isOtherExists && \n this.renderPlaceHolder()\n }\n \n }\n\n
    \n
    \n
    {this.state.generalErrorMessage}
    \n
    \n
    \n\n
    \n \n \n \n
    \n
    \n );\n }\n\n renderPlaceHolder() {\n return (\n <>\n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n );\n }\n\n};\n\nexport default connect(\n (state: ApplicationState) => state.createSurveyStore,\n CreateSurveyStore.actionCreators\n)(AddQuestion as any);\n","import * as React from 'react';\nimport { connect } from 'react-redux';\nimport { CreateSurveyProps } from '../../common/CreateSurveyProps';\nimport getLangTranslation from '../../common/lang-trans';\nimport { ApplicationState } from '../../store';\nimport * as CreateSurveyStore from '../../store/CreateSurvey';\nimport SurveyEndnote from '../survey/SurveyEndnote';\nimport SurveyQuestionnaire from '../survey/SurveyQuestionnaire';\nimport SurveyStart from '../survey/SurveyStart';\n\nclass Preview extends React.Component {\n\n private SubmitSurvey() {}\n private SetValidationStatusAndValue() {}\n private MoveNextStep() {}\n\n public componentDidMount() {\n this.props.SetLanguage(this.props.language || 'en', false);\n }\n\n render() {\n const language = this.props.language || 'en';\n const langTrans = getLangTranslation(language);\n\n\n return(\n \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n\n \n\n
    \n
    \n
    \n \n \n\n
    \n
    \n
    \n \n \n
    \n\n
    \n \n \n
    \n\n
    \n
    \n );\n }\n};\n\nexport default connect(\n (state: ApplicationState) => state.createSurveyStore,\n CreateSurveyStore.actionCreators\n)(Preview as any);\n\n","import * as React from 'react';\nimport { connect } from 'react-redux';\nimport { RouteComponentProps } from 'react-router';\nimport { Link } from 'react-router-dom';\nimport { EditObject } from '../../common/constants';\nimport { CreateSurveyProps } from '../../common/CreateSurveyProps';\nimport { isValidDate, validateString } from '../../common/helperFunctions';\nimport { ApplicationState } from '../../store';\nimport * as CreateSurveyStore from '../../store/CreateSurvey';\n\nexport interface iState {\n validationChecked: boolean,\n message: string,\n isError: boolean\n}\n\nclass Start extends React.Component {\n state = {\n validationChecked: false,\n message: '',\n isError: false\n }\n\n public componentDidUpdate() {\n\n if (this.props.isSubmitted === true) {\n \n if (this.props.SubmitMessage.length > 0 && this.props.SubmitMessage !== this.state.message) {\n this.setState({...this.state, message: this.props.SubmitMessage});\n \n if (this.props.errorInSubmit === false)\n this.props.RequestSurvey(this.props.surveyId, false, true);\n }\n\n }\n }\n\n handleChange = (e: React.ChangeEvent) => {\n e.target.value = e.target.value;\n\n this.props.SetPropertyCreateSurvey(EditObject.Survey, e.target.name, '', false, 0, new Date(e.target.value));\n };\n\n handleSelectChangeNumber = (e: React.ChangeEvent) => {\n\n this.props.SetPropertyCreateSurvey(EditObject.Survey, e.target.name, '', false, +e.target.value, new Date());\n };\n \n private SaveSurvey() {\n let msg = '';\n if (this.props.survey.newStatusId === this.props.surveyStatusPublishedId) {\n \n if (validateString(true, this.props.survey.endNotesEn, 1, -1) === false)\n msg = 'Endnote English text is missing';\n else if (validateString(true, this.props.survey.endNotesFr, 1, -1) === false)\n msg = 'Endnote French text is missing';\n\n else if (validateString(true, this.props.survey.name, 1, -1) === false)\n msg = 'Campaign name is missing';\n\n else if (validateString(true, this.props.survey.titleEn, 1, -1) === false)\n msg = 'Campaign English title is missing';\n else if (validateString(true, this.props.survey.titleFr, 1, -1) === false)\n msg = 'Campaign French title is missing';\n\n else if (validateString(true, this.props.survey.startNotesEn, 1, -1) === false)\n msg = 'Startnote English text is missing';\n else if (validateString(true, this.props.survey.startNotesFr, 1, -1) === false)\n msg = 'Startnote French text is missing';\n \n else if (this.props.survey.questions.length === 0)\n msg = 'Please add at least one question';\n }\n\n else if (isValidDate(this.props.survey.startDate) === false || this.props.survey.startDate < new Date(2000, 1, 1))\n msg = 'Survey start date cannot be before Jan 2000';\n else if (isValidDate(this.props.survey.endDate) === false || this.props.survey.endDate < this.props.survey.startDate)\n msg = 'Survey end date must be greater than start date';\n\n\n if (msg.length === 0) {\n this.setState({...this.state, \n validationChecked: true,\n message: '',\n isError: false});\n\n this.props.SaveSurvey();\n } else {\n this.setState({...this.state, \n validationChecked: true,\n message: msg,\n isError: true});\n }\n }\n\n render() {\n return(\n \n
    \n
    \n \n \n {this.props.survey.newStatusId === this.props.surveyStatusPublishedId &&
    Please note that you won't be able to make anychanges once published
    }\n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n\n {\n this.state.validationChecked &&\n\n
    \n
    \n
    {this.state.message}
    \n
    \n
    \n }\n
    \n \n \n Cancel and goto campaign list\n
    \n\n
    \n );\n }\n};\n\nexport default connect(\n (state: ApplicationState) => state.createSurveyStore,\n CreateSurveyStore.actionCreators\n)(Start as any);\n\n","import * as React from 'react';\nimport { connect } from 'react-redux';\nimport { CreateSurveyProps } from '../../common/CreateSurveyProps';\nimport { SortableContainer, SortableElement } from 'react-sortable-hoc';\nimport { QuestionTypeModel } from '../../models/questionType.model';\nimport { ApplicationState } from '../../store';\nimport * as CreateSurveyStore from '../../store/CreateSurvey';\n\nclass Summary extends React.Component {\n\n render() {\n return(\n \n\n \n\n
    \n \n \n
    \n\n
    \n );\n }\n\n private onRowSortEnd = ({oldIndex, newIndex}: {oldIndex: number, newIndex: number}) => {\n\n this.props.MoveQuestion(oldIndex, newIndex);\n\n }\n\n sanitizeGropId(gropId: number | null) {\n return gropId ? gropId : 0;\n }\n};\n\nconst SortableQuestionItem = SortableElement((props: any) => (\n
    \n

    :::

    \n
    \n
    {props.qItms.questionEn}{props.qItms.isMandatory ?  * : ''} ({props.questionType.name})
    \n

    {props.qItms.placeholderEn}

    \n \n
    \n
    \n
    \n Group\n \n
    \n
    \n
    \n \n \n \n
    \n
    \n \n
    \n
    \n));\n \n const SortableQuestionList = SortableContainer((props: any) => {\n\n const questions = props.survey.questions;\n const groups = props.survey.groups;\n let cardBorder = 'border-success';\n\n if (questions ) {\n\n if ( questions.length > 0 ) {\n\n let groupId: number = -99;\n \n const items = [];\n\n for (let i = 0; i < questions.length; i++) {\n\n if (props.sanitizeGropId(questions[i].groupId) !== groupId) {\n\n const group = groups.find((f: any) => f.groupId === props.sanitizeGropId(questions[i].groupId));\n\n cardBorder = cardBorder === 'border-success' ? 'border-warning' : 'border-success';\n }\n \n items.push(\n f.id === questions[i].questionTypeId) || new QuestionTypeModel()}\n groups={groups}\n disabled={props.disabled}\n btnDisabled={props.disabled}\n index={i}\n handleGroupChange={props.handleGroupChange}\n StartQuestionEdit={props.StartQuestionEdit}\n CopyQuestion={props.CopyQuestion}\n DeleteQuestion={props.DeleteQuestion}\n />\n );\n \n groupId = props.sanitizeGropId(questions[i].groupId);\n\n }\n \n return (\n
    \n {items}\n
    \n );\n\n }\n\n }\n\n return (\n
    \n

    \n Please add question(s)\n

    \n
    \n );\n \n });\n \nexport default connect(\n (state: ApplicationState) => state.createSurveyStore,\n CreateSurveyStore.actionCreators\n)(Summary as any);\n","import * as React from 'react';\nimport { connect } from 'react-redux';\nimport { CreateSurveyProps } from '../../common/CreateSurveyProps';\nimport { validateString } from '../../common/helperFunctions';\nimport { EditObject } from '../../common/constants';\nimport { ApplicationState } from '../../store';\nimport * as CreateSurveyStore from '../../store/CreateSurvey';\nimport { iState } from '../../models/iState';\n\nclass Group extends React.Component {\n state = {\n validationChecked: false,\n generalErrorMessage: ''\n }\n\n handleTextAreaChange = (e: React.ChangeEvent) => {\n e.target.value = e.target.value;\n \n this.props.SetPropertyCreateSurvey(EditObject.Group, e.target.name, e.target.value, false, 0, new Date());\n };\n\n CancelAndMoveNext = () => {\n if (this.props.survey.questions.length > 0)\n this.props.MoveNextStep(undefined);\n else\n this.setState({...this.state, generalErrorMessage : 'Please add at least one question' });\n }\n\n ValidateAndSave = () => {\n if ((validateString(true, this.props.editGroup.groupHeadingEn, 1, -1) === false &&\n validateString(true, this.props.editGroup.groupSubHeadingEn, 1, -1) === false) ||\n (validateString(true, this.props.editGroup.groupHeadingFr, 1, -1) === false &&\n validateString(true, this.props.editGroup.groupSubHeadingFr, 1, -1) === false)) {\n \n this.setState({...this.state, validationChecked: true, generalErrorMessage : 'Please fill out the heading and/or subheading for English and Frehch both' });\n\n return;\n }\n\n this.props.EndGroupEdit(false);\n this.setState({...this.state, validationChecked: false, generalErrorMessage : ''});\n\n }\n\n handleGroupChange = (e: React.ChangeEvent) => {\n this.props.StartGroupEdit(+e.target.value);\n }\n \n render() {\n return(\n \n
    \n
    \n
    Note: Assign group to question(s) in 'Summary' step. Group will be deleted automatically, if not assigned to any question
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n\n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n\n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n\n
    \n
    \n
    {this.state.generalErrorMessage}
    \n
    \n
    \n\n
    \n \n \n \n \n
    \n
    \n );\n }\n};\n\nexport default connect(\n (state: ApplicationState) => state.createSurveyStore,\n CreateSurveyStore.actionCreators\n)(Group as any);\n","import * as React from 'react';\nimport { CreateSurveyProps } from '../common/CreateSurveyProps';\nimport getLangTranslation from '../common/lang-trans';\n\nimport TopNav from '../components/EditSurvey/TopNav';\nimport Start from \"../components/EditSurvey/Start\";\nimport Endnote from \"../components/EditSurvey/Endnote\";\nimport AddQuestion from \"../components/EditSurvey/AddQuestion\";\nimport Preview from \"../components/EditSurvey/Preview\";\nimport Publish from \"../components/EditSurvey/Publish\";\nimport Summary from \"../components/EditSurvey/Summary\";\nimport { Link } from 'react-router-dom';\nimport Group from '../components/EditSurvey/Group';\nimport { SurveyEditSteps } from '../common/constants';\nimport Header from '../components/header';\n\nclass AddEditSurvey extends React.PureComponent {\n\n // This method is called when the component is first added to the document\n public componentDidMount() {\n const surveyId = this.props.match.params.surveyId || '';\n const isNew = this.props.match.params.isNew || 0;\n\n this.props.RequestSurvey(surveyId, isNew === '1', false);\n }\n\n public render() {\n\n const heading = this.props.survey.name || this.props.survey.title || this.props.survey.titleEn || '';\n\n return (\n \n
    \n\n \n
    \n
    \n
    \n

    {heading}

    \n
    \n
    \n
    \n {\n this.props.isSurveyDirty\n ? \n : Campaign List\n }\n
    \n
    \n
    \n
    \n {this.renderStepComponent()}\n
    \n
    \n
    \n );\n }\n\n private renderStepComponent() {\n const langTransEN = getLangTranslation('en');\n const langTransFR = getLangTranslation('fr');\n\n if (this.props.survey) {\n switch (this.props.step) {\n case SurveyEditSteps.UnableToLoad:\n return (<>

    { langTransEN.UnableToLoading }

    { langTransFR.UnableToLoading }

    );\n case SurveyEditSteps.Loading:\n return (<>

    { langTransEN.LoadingPleaseWait }

    { langTransFR.LoadingPleaseWait }

    );\n case SurveyEditSteps.Start:\n return ();\n case SurveyEditSteps.Group:\n return ();\n case SurveyEditSteps.Question:\n return ();\n case SurveyEditSteps.Summary:\n return ();\n case SurveyEditSteps.Endnote:\n return ();\n case SurveyEditSteps.Preview:\n return ();\n case SurveyEditSteps.Publish:\n return ();\n }\n } else {\n return (\n

    { langTransEN.UnableToLoading } / { langTransFR.UnableToLoading }

    \n );\n }\n }\n}\n\nexport default AddEditSurvey;\n","import * as React from 'react';\r\n\r\nimport ReactMarkdown from 'react-markdown';\r\nimport { CreateSurveyProps } from '../common/CreateSurveyProps';\r\nimport Header from '../components/header';\r\n\r\ninterface iState {\r\n markdownText: string\r\n}\r\nexport class GithubMarkdown extends React.Component {\r\n \r\n state = {\r\n markdownText: \r\n`## Headings\r\n----\r\nTo create heading add one to six \\`#\\` symbol before heading text \\`e.g.\\`\r\n\r\n# H1\r\n\\`# H1\\`\r\n\r\n### H3\r\n\\`### H3\\`\r\n\r\n~~~\r\n\r\n\r\n~~~\r\n\r\n## Styling text\r\n----\r\n### Bold\r\nFor bold add \\`**\\` before and after the text \\`e.g.\\`\r\n\r\n\\`This is **a bold** text\\`\r\n\r\nThis is **a bold** text \r\n\r\n### Italic\r\nFor italic add \\`*\\` before and after the text \\`e.g.\\`\r\n\r\n\\`This is *an italic* text\\`\r\n\r\nThis is *a italic* text \r\n\r\n~~~\r\n\r\n\r\n~~~\r\n\r\n## Horizontal line\r\nFor horizontal line use three or more Hyphens (\\`-\\`) \\`e.g.\\`\r\n\r\n\\`----\\`\r\n\r\n----\r\n\r\n~~~\r\n\r\n\r\n~~~\r\n\r\n## Link\r\n----\r\n\r\nA link can be created by wrapping display text in brackets [ ], and then wrapping the URL in parentheses ( )\r\n\\`e.g.\\`\r\n\r\n\\`[Click here](https://patientombudsman.ca)\\`\r\n\r\n[Click here](https://patientombudsman.ca)\r\n\r\n~~~\r\n\r\n\r\n~~~\r\n\r\n\\`[patientombudsman.ca](https://patientombudsman.ca)\\`\r\n\r\n[patientombudsman.ca](https://patientombudsman.ca)\r\n\r\n~~~\r\n\r\n\r\n~~~\r\n\r\n**Note:** that the url has \\`https://\\` prefix. If you want a phone # as link then use \\`tel://\\` and if you want an email as link then use \\`mailto:\\` for \\`e.g.\\`.\r\n\r\n\\`[1-888-321-0339](tel://18883210339)\\`\r\n\r\n[1-888-321-0339](tel://18883210339)\r\n\r\n\\`[info@patientombudsman.ca](mailto:info@patientombudsman.ca)\\`\r\n\r\n[info@patientombudsman.ca](mailto:info@patientombudsman.ca)\r\n\r\n~~~\r\n\r\n\r\n~~~\r\n\r\n## Bullet list\r\n----\r\nFor bullet list add \\`-\\` or \\`+\\` before text and for nested bullet add two spaces \\`e.g.\\`\r\n\r\n+ Bullet list item 1\r\n - Nested bullet\r\n - Sub-nested bullet \r\n\r\n- Bullet list item 2 \r\n\r\n~~~\r\n+ Bullet list item 1\r\n - Nested bullet\r\n - Sub-nested bullet \r\n\r\n- Bullet list item 2 \r\n\r\n~~~\r\n\r\n\r\n~~~\r\n\r\n`\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default GithubMarkdown;\r\n","import React from \"react\";\r\nimport Header from \"../components/header\";\r\nimport AuthService from \"./../services/auth.service\";\r\n\r\nexport interface iState {\r\n username: string,\r\n password: string,\r\n code: string,\r\n loading: boolean,\r\n message: string,\r\n showCodeUi: boolean,\r\n validate: boolean\r\n}\r\n\r\nclass Login extends React.Component {\r\n private formLogin: React.RefObject;\r\n private formCode: React.RefObject;\r\n\r\n state = {\r\n username: '',\r\n password: '',\r\n code: '',\r\n loading: false,\r\n message: '',\r\n showCodeUi: false,\r\n validate: false\r\n }\r\n\r\n constructor(props: any) {\r\n super(props);\r\n \r\n this.formLogin = React.createRef();\r\n this.formCode = React.createRef();\r\n }\r\n\r\n componentDidMount() {\r\n this.afterLogin();\r\n }\r\n\r\n onChangeCode = (e: React.ChangeEvent) => {\r\n const code = e.target.value;\r\n this.setState({code});\r\n };\r\n\r\n onChangeUsername = (e: React.ChangeEvent) => {\r\n const username = e.target.value;\r\n this.setState({username});\r\n };\r\n\r\n onChangePassword = (e: React.ChangeEvent ) => {\r\n const password = e.target.value;\r\n this.setState({password});\r\n };\r\n\r\n handleCancel = (e: React.FormEvent) => {\r\n this.setState({message:\"\", loading:false, showCodeUi: false});\r\n AuthService.logout();\r\n };\r\n\r\n handleCodeVerification = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n this.setState({message:\"\", loading:true, validate: true});\r\n\r\n const user = AuthService.getCurrentUser();\r\n const token = user.token;\r\n\r\n if (this.formLogin != undefined && this.formLogin.current != undefined)\r\n this.formLogin.current.validateAll();\r\n {\r\n AuthService.verifyCode(this.state.username, this.state.code, token).then(\r\n this.afterLogin,\r\n this.errorVerifyCode\r\n );\r\n }\r\n };\r\n\r\n handleLogin = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n this.setState({message: \"\", loading: true, validate: true});\r\n if (this.formCode != undefined && this.formCode.current != undefined)\r\n this.formCode.current.validateAll();\r\n {\r\n AuthService.login(this.state.username, this.state.password).then(\r\n this.afterLogin,\r\n this.errorLogin\r\n );\r\n }\r\n };\r\n\r\n afterLogin = () => {\r\n const user = AuthService.getCurrentUser();\r\n\r\n if (user.accessToken) {\r\n if (user.forceChangePassword === \"1\")\r\n this.props.history.push(\"/changepassword\");\r\n else\r\n this.props.history.push(\"/search\");\r\n } else if (user.token){\r\n this.setState({showCodeUi: true, validate: false, code: \"\", password: \"\"});\r\n }\r\n\r\n this.setState({message: \"\", loading: false});\r\n }\r\n\r\n errorLogin = (error: any) => {\r\n if ((error.response && error.response.data && error.response.data.message) || error.message || error.toString())\r\n this.setState({message: 'Invalid email or password', loading:false});\r\n }\r\n\r\n errorVerifyCode = (error: any) => {\r\n if ((error.response && error.response.data && error.response.data.message) || error.message || error.toString())\r\n this.setState({message: 'Unable to verify code', loading:false});\r\n }\r\n\r\n public render() {\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n {this.state.message && (\r\n
    \r\n
    \r\n {this.state.message}\r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n { this.state.showCodeUi === false &&\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n Please enter a valid email address\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n Please enter password\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n { this.state.showCodeUi === true &&\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n Please enter code sent to you.\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Login;","import React, { useState } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport Header from \"../components/header\";\r\nimport AuthService from \"./../services/auth.service\";\r\n\r\nconst Changepassword = (props : any) => {\r\n const [currentPassword, setCurrentPassword] = useState('');\r\n const [newPassword, setNewPassword] = useState('');\r\n const [confirmPassword, setConfirmPassword] = useState('');\r\n const [message, setMessage] = useState('');\r\n const [success, setSuccess] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [isError, setIsError] = useState(true);\r\n const [forceChangePassword] = useState(AuthService.getCurrentUser().forceChangePassword === \"1\");\r\n \r\n \r\n function onHandleSubmit(e: React.FormEvent) {\r\n e.preventDefault();\r\n setIsError(true);\r\n\r\n var reg = new RegExp('^(?=(.*[a-z]){1,})(?=(.*[A-Z]){1,})(?=(.*[0-9]){1,})(?=(.*[!@#$%^&*()\\\\-__+.]){1,}).{10,}$');\r\n\r\n if(currentPassword.length === 0) {\r\n setMessage('Please enter your current password');\r\n } else if(reg.test(newPassword) === false) {\r\n setMessage('New password must be at least 10 character long and include one of each, lower case, upper case, special character and a number. ');\r\n } else if(newPassword !== confirmPassword) {\r\n setMessage(\"New and confirm passwords must be same\");\r\n } else {\r\n setMessage(\"\");\r\n setLoading(true);\r\n AuthService.changePassword(currentPassword, newPassword)\r\n .then((response) => {\r\n setIsError(false);\r\n setMessage('Password changed successfully');\r\n setLoading(false);\r\n setSuccess(true);\r\n setNewPassword('');\r\n setConfirmPassword('');\r\n setCurrentPassword('');\r\n if (forceChangePassword) AuthService.logout();\r\n })\r\n .catch ((error) => {\r\n setMessage('Sorry, we are unable to change your password');\r\n setLoading(false);\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n {forceChangePassword}\r\n {message && (\r\n
    \r\n
    \r\n {message}\r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n setCurrentPassword(e.currentTarget.value) }\r\n required={true}\r\n />\r\n
    Please enter your current password
    \r\n
    \r\n
    \r\n \r\n setNewPassword(e.currentTarget.value) }\r\n required={true}\r\n />\r\n
    Please enter new password
    \r\n
    \r\n
    \r\n \r\n setConfirmPassword(e.currentTarget.value) }\r\n required={true}\r\n />\r\n
    Please enter new password
    \r\n
    \r\n
    \r\n { !success &&\r\n \r\n }\r\n {!forceChangePassword &&\r\n <>\r\n {!loading &&\r\n Cancel}\r\n {loading &&\r\n }\r\n \r\n }\r\n\r\n {\r\n forceChangePassword && success &&\r\n Go to Login\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n}\r\n\r\nexport default Changepassword;","import React from 'react';\nimport getLangTranslation from '../../common/lang-trans';\nimport SurveyHeader from '../../components/survey/SurveyHeader';\n\ninterface iProps {\n flag: number\n}\n\ninterface iState {}\n\nclass Loading extends React.Component {\n public render() {\n const langTransEN = getLangTranslation('en');\n const langTransFR = getLangTranslation('fr');\n\n const textEN = this.props.flag === -1 ? langTransEN.LoadingPleaseWait : langTransEN.UnableToLoading;\n const textFR = this.props.flag === -1 ? langTransFR.LoadingPleaseWait : langTransFR.UnableToLoading;\n\n return (\n \n \n
    \n

    { textEN }

    \n

    { textFR }

    \n
    \n
    );\n }\n}\n\n\nexport default Loading;","import React from \"react\";\nimport { connect } from 'react-redux';\nimport { CreateSurveyProps } from \"../common/CreateSurveyProps\";\nimport Loading from \"../components/EditSurvey/loading\";\nimport { ApplicationState } from '../store';\nimport * as CreateSurveyStore from '../store/CreateSurvey';\n\n// interface WithLoadingProps {\n// loading: boolean;\n// }\n\ninterface istate {\n canLoadUIFlag: number, // -1 = not loaded from server, 0 = cannot load, 1 = can load\n}\n\nconst AdminHOC =

    (Component: React.ComponentType

    ) => {\n\n class ExtendedComponent extends React.Component

    {\n \n componentDidMount() {\n \n this.props.FetchCanLoadUIFlag();\n }\n\n render() {\n const { ...props } = this.props;\n\n if (this.props.canLoadUIFlag === -1 || this.props.canLoadUIFlag === 0) {\n return ();\n }\n\n return ()\n }\n };\n\n return connect(\n (state: ApplicationState) => state.createSurveyStore,\n CreateSurveyStore.actionCreators\n )(ExtendedComponent as any);\n }\n\nexport default AdminHOC;\n","import * as React from 'react';\r\nimport { Route } from 'react-router';\r\nimport Layout from './components/Layout';\r\nimport Campaign from './pages/Campaign';\r\nimport Search from './pages/Search';\r\nimport LinkGenerator from './pages/LinkGenerator';\r\nimport Submissions from './pages/Submissions';\r\nimport AddEditSurvey from './pages/AddEditSurvey';\r\nimport GithubMarkdown from './pages/GithubMarkdown';\r\nimport Login from './pages/Login';\r\nimport Changepassword from './pages/ChangePassword';\r\nimport AdminHOC from './pages/AdminHOC';\r\n\r\nimport './custom.css'\r\nimport { Can_Display_Admin_UI } from './common/constants';\r\n\r\nexport default () => (\r\n \r\n \r\n \r\n { Can_Display_Admin_UI &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n);\r\n","import 'bootstrap/dist/css/bootstrap.css';\r\n\r\nimport * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport { Provider } from 'react-redux';\r\n//import { ConnectedRouter } from 'connected-react-router';\r\nimport 'bootstrap/dist/js/bootstrap';\r\nimport { createBrowserHistory } from 'history';\r\nimport configureStore from './store/configureStore';\r\nimport App from './App';\r\n//import registerServiceWorker from './registerServiceWorker';\r\n\r\n// Create browser history to use in the Redux store\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href') as string;\r\nconst history = createBrowserHistory({ basename: baseUrl });\r\n\r\n// Get the application-wide store instance, prepopulating with state from the server where available.\r\nconst store = configureStore(history);\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root'));\r\n\r\n//registerServiceWorker();\r\n","import { applyMiddleware, combineReducers, compose, createStore } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport { connectRouter, routerMiddleware } from 'connected-react-router';\r\nimport { History } from 'history';\r\nimport { ApplicationState, reducers } from './';\r\n\r\nexport default function configureStore(history: History, initialState?: ApplicationState) {\r\n const middleware = [\r\n thunk,\r\n routerMiddleware(history)\r\n ];\r\n\r\n const rootReducer = combineReducers({\r\n ...reducers,\r\n router: connectRouter(history)\r\n });\r\n\r\n const enhancers = [];\r\n const windowIfDefined = typeof window === 'undefined' ? null : window as any;\r\n if (windowIfDefined && windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__) {\r\n enhancers.push(windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__());\r\n }\r\n\r\n return createStore(\r\n rootReducer,\r\n initialState,\r\n compose(applyMiddleware(...middleware), ...enhancers)\r\n );\r\n}\r\n","module.exports = __webpack_public_path__ + \"static/media/logo-en.79ca2526.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo-fr.1787dc38.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo.f939f12b.svg\";"],"sourceRoot":""}