保誠-保戶業務員媒合平台
Jack
2021-12-22 b1444ee7c513ed3322ff4086fe3a8ee6eb6a4212
Merge branch 'Phase2' of ssh://dev.pollex.com.tw:29418/pcalife/PAM into Phase2
刪除15個檔案
修改55個檔案
新增22個檔案
修改25個檔案名稱
2390 ■■■■■ 已變更過的檔案
PAMapp/assets/icon/demo.html 172 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/icon/fonts/icomoon.eot 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/icon/fonts/icomoon.svg 43 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/icon/fonts/icomoon.ttf 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/icon/fonts/icomoon.woff 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/icon/selection.json 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/icon/style.css 67 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/scss/_variable.scss 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/scss/vendors/_elementUI.scss 1 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/scss/vendors/elementUI/_tree.scss 90 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/ts/api/appointment.ts 29 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/ts/api/consultant.ts 173 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/ts/api/share.ts 67 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/ts/models/AppointmentDetail.ts 18 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/ts/models/UserReviewsConsultantsParams.ts 4 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/ts/models/agentOfStrictQuery.ts 12 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/ts/models/appointment.model.ts 39 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/ts/models/appointmentParams.ts 12 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/ts/models/enum/Role.ts 5 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/ts/models/fastQueryParams.model.ts 7 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/ts/models/strictQueryParams.ts 12 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/ts/services/appointment.service.ts 37 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/ts/services/my-consultant.service.ts 29 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/ts/services/pamService.service.ts 90 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/ts/services/query-consultant.service.ts 14 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/components/AddAndReservedBtns.vue 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/components/BackActionBar.vue 25 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/components/Client/ClientCard.vue 11 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/components/Client/ClientList.vue 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/components/Consultant/ConsultantCard.vue 116 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/components/Consultant/ConsultantList.vue 12 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/components/Consultant/ConsultantSwiper.vue 4 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/components/NavBar.vue 7 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/components/QuickFilter/QuickFilterConsultantList.vue 4 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/components/QuickFilter/QuickFilterSelector.vue 4 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/components/Ui/UiField.vue 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/components/Ui/UiPagination.vue 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/components/popUpFrame.vue 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/accountSetting/index.vue 9 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/agentInfo/_agentNo.vue 8 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/consultantLogin/index.vue 6 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/faq.vue 25 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/index.vue 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/login/index.vue 24 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/myAppointmentList.vue 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/myAppointmentList/appointmentList.vue 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/myAppointmentList/contactedList.vue 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/myConsultantList.vue 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/myConsultantList/consultantList.vue 3 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/myConsultantList/contactedList.vue 3 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/questionnaire/_agentNo.vue 32 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/quickFilter/index.vue 11 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/recommendConsultant/index.vue 5 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/recommendConsultant/result.vue 4 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/record/index.vue 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/userReviews/index.vue 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/userReviewsRecord/index.vue 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/const/faqList.ts 43 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/const/hide-reviews.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/const/quickFilter-questionList.ts 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/device.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/errorService.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/ConsultantLoginInfo.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/account.model.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/agent-info.model.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/appointment.model.ts 95 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/client.model.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/clientInfo.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/consultant.model.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/editAppointmentParams.model.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/enum/ContactType.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/enum/Gender.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/enum/Role.ts 5 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/enum/otpErrorCode.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/enum/seniority.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/loginRequest.model.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/loginSuccessToken.model.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/loginVerify.model.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/otpInfo.model.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/quick-filter.model.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/registerInfo.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/reviews.model.ts 4 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/strict-query.model.ts 24 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/services/account-setting.service.ts 17 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/services/appointment.service.ts 46 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/services/httpClient.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/services/login.service.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/services/my-consultant.service.ts 42 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/services/query-consultant.service.ts 37 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/services/reviews.service.ts 18 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/storageConsultant.ts 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/storageRequests.ts 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/store/index.ts 36 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/store/localStorage.ts 4 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/doc/顧問API/嚴選配對.txt 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/doc/顧問API/快速篩選.txt 3 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/doc/顧問API/指定顧問詳細資訊.txt 5 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/config/ApplicationProperties.java 78 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/config/SecurityConfiguration.java 1 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/security/provider/EServiceAuthenticationProvider.java 6 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java 9 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/SendMsgService.java 107 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantDetailDTO.java 6 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/dto/FastQueryConsultantParam.java 10 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/dto/SMSDetail.java 26 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/dto/SendMailRequest.java 103 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/dto/SendMailResponse.java 39 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSRequest.java 99 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSResponse.java 60 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/util/HttpRequestUtil.java 114 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/web/rest/TestSendMsgResource.java 33 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendEmailFailException.java 12 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendSMSFailException.java 12 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/resources/config/application-dev.yml 8 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/resources/config/application-sit.yml 8 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/resources/config/application-uat.yml 8 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/assets/icon/demo.html
@@ -9,56 +9,14 @@
    <link rel="stylesheet" href="style.css"></head>
<body>
    <div class="bgc1 clearfix">
        <h1 class="mhmm mvm"><span class="fgc1">Font Name:</span> icomoon <small class="fgc1">(Glyphs:&nbsp;33)</small></h1>
        <h1 class="mhmm mvm"><span class="fgc1">Font Name:</span> icomoon <small class="fgc1">(Glyphs:&nbsp;34)</small></h1>
    </div>
    <div class="clearfix mhl ptl">
        <h1 class="mvm mtn fgc1">Grid Size: Unknown</h1>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-delet"></span>
                <span class="mls"> icon-delet</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e920" class="unit size1of2" />
                <input type="text" maxlength="1" readonly value="&#xe920;" class="unitRight size1of2 talign-right" />
            </fieldset>
            <div class="fs0 bshadow0 clearfix hidden-true">
                <span class="unit pvs fgc1">liga: </span>
                <input type="text" readonly value="" class="liga unitRight" />
            </div>
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-top"></span>
                <span class="mls"> icon-top</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e91f" class="unit size1of2" />
                <input type="text" maxlength="1" readonly value="&#xe91f;" class="unitRight size1of2 talign-right" />
            </fieldset>
            <div class="fs0 bshadow0 clearfix hidden-true">
                <span class="unit pvs fgc1">liga: </span>
                <input type="text" readonly value="" class="liga unitRight" />
            </div>
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-puzzle"></span>
                <span class="mls"> icon-puzzle</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e91e" class="unit size1of2" />
                <input type="text" maxlength="1" readonly value="&#xe91e;" class="unitRight size1of2 talign-right" />
            </fieldset>
            <div class="fs0 bshadow0 clearfix hidden-true">
                <span class="unit pvs fgc1">liga: </span>
                <input type="text" readonly value="" class="liga unitRight" />
            </div>
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-down"></span>
                <span class="mls"> icon-down</span>
                <span class="icon-decrease"></span>
                <span class="mls"> icon-decrease</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e900" class="unit size1of2" />
@@ -169,8 +127,8 @@
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-checkbox"></span>
                <span class="mls"> icon-checkbox</span>
                <span class="icon-checkbox-1"></span>
                <span class="mls"> icon-checkbox-1</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e908" class="unit size1of2" />
@@ -183,8 +141,8 @@
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-checkbox-1"></span>
                <span class="mls"> icon-checkbox-1</span>
                <span class="icon-checkbox"></span>
                <span class="mls"> icon-checkbox</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e909" class="unit size1of2" />
@@ -267,8 +225,8 @@
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-edit"></span>
                <span class="mls"> icon-edit</span>
                <span class="icon-delet"></span>
                <span class="mls"> icon-delet</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e90f" class="unit size1of2" />
@@ -281,8 +239,8 @@
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-eye"></span>
                <span class="mls"> icon-eye</span>
                <span class="icon-down"></span>
                <span class="mls"> icon-down</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e910" class="unit size1of2" />
@@ -295,8 +253,8 @@
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-eye-1"></span>
                <span class="mls"> icon-eye-1</span>
                <span class="icon-edit"></span>
                <span class="mls"> icon-edit</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e911" class="unit size1of2" />
@@ -309,8 +267,8 @@
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-flag"></span>
                <span class="mls"> icon-flag</span>
                <span class="icon-eye-1"></span>
                <span class="mls"> icon-eye-1</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e912" class="unit size1of2" />
@@ -323,8 +281,8 @@
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-information"></span>
                <span class="mls"> icon-information</span>
                <span class="icon-eye"></span>
                <span class="mls"> icon-eye</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e913" class="unit size1of2" />
@@ -337,8 +295,8 @@
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-left"></span>
                <span class="mls"> icon-left</span>
                <span class="icon-flag"></span>
                <span class="mls"> icon-flag</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e914" class="unit size1of2" />
@@ -351,8 +309,8 @@
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-phone"></span>
                <span class="mls"> icon-phone</span>
                <span class="icon-information"></span>
                <span class="mls"> icon-information</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e915" class="unit size1of2" />
@@ -365,8 +323,8 @@
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-right"></span>
                <span class="mls"> icon-right</span>
                <span class="icon-left"></span>
                <span class="mls"> icon-left</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e916" class="unit size1of2" />
@@ -379,8 +337,8 @@
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-school"></span>
                <span class="mls"> icon-school</span>
                <span class="icon-phone"></span>
                <span class="mls"> icon-phone</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e917" class="unit size1of2" />
@@ -393,8 +351,8 @@
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-search"></span>
                <span class="mls"> icon-search</span>
                <span class="icon-puzzle"></span>
                <span class="mls"> icon-puzzle</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e918" class="unit size1of2" />
@@ -407,8 +365,8 @@
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-star"></span>
                <span class="mls"> icon-star</span>
                <span class="icon-right"></span>
                <span class="mls"> icon-right</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e919" class="unit size1of2" />
@@ -421,8 +379,8 @@
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-star-1"></span>
                <span class="mls"> icon-star-1</span>
                <span class="icon-school"></span>
                <span class="mls"> icon-school</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e91a" class="unit size1of2" />
@@ -435,8 +393,8 @@
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-thumbs-up"></span>
                <span class="mls"> icon-thumbs-up</span>
                <span class="icon-search"></span>
                <span class="mls"> icon-search</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e91b" class="unit size1of2" />
@@ -449,8 +407,8 @@
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-time"></span>
                <span class="mls"> icon-time</span>
                <span class="icon-star-1"></span>
                <span class="mls"> icon-star-1</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e91c" class="unit size1of2" />
@@ -463,8 +421,8 @@
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-trophy"></span>
                <span class="mls"> icon-trophy</span>
                <span class="icon-star"></span>
                <span class="mls"> icon-star</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e91d" class="unit size1of2" />
@@ -475,6 +433,62 @@
                <input type="text" readonly value="" class="liga unitRight" />
            </div>
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-thumbs-up"></span>
                <span class="mls"> icon-thumbs-up</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e91e" class="unit size1of2" />
                <input type="text" maxlength="1" readonly value="&#xe91e;" class="unitRight size1of2 talign-right" />
            </fieldset>
            <div class="fs0 bshadow0 clearfix hidden-true">
                <span class="unit pvs fgc1">liga: </span>
                <input type="text" readonly value="" class="liga unitRight" />
            </div>
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-time"></span>
                <span class="mls"> icon-time</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e91f" class="unit size1of2" />
                <input type="text" maxlength="1" readonly value="&#xe91f;" class="unitRight size1of2 talign-right" />
            </fieldset>
            <div class="fs0 bshadow0 clearfix hidden-true">
                <span class="unit pvs fgc1">liga: </span>
                <input type="text" readonly value="" class="liga unitRight" />
            </div>
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-top"></span>
                <span class="mls"> icon-top</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e920" class="unit size1of2" />
                <input type="text" maxlength="1" readonly value="&#xe920;" class="unitRight size1of2 talign-right" />
            </fieldset>
            <div class="fs0 bshadow0 clearfix hidden-true">
                <span class="unit pvs fgc1">liga: </span>
                <input type="text" readonly value="" class="liga unitRight" />
            </div>
        </div>
        <div class="glyph fs1">
            <div class="clearfix bshadow0 pbs">
                <span class="icon-trophy"></span>
                <span class="mls"> icon-trophy</span>
            </div>
            <fieldset class="fs0 size1of1 clearfix hidden-false">
                <input type="text" readonly value="e921" class="unit size1of2" />
                <input type="text" maxlength="1" readonly value="&#xe921;" class="unitRight size1of2 talign-right" />
            </fieldset>
            <div class="fs0 bshadow0 clearfix hidden-true">
                <span class="unit pvs fgc1">liga: </span>
                <input type="text" readonly value="" class="liga unitRight" />
            </div>
        </div>
    </div>
    <!--[if gt IE 8]><!-->
PAMapp/assets/icon/fonts/icomoon.eot
Binary files differ
PAMapp/assets/icon/fonts/icomoon.svg
@@ -7,7 +7,7 @@
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe900;" glyph-name="down" d="M563.115 105.771l407.851 408.107c13.086 12.984 21.186 30.975 21.186 50.858 0 19.714-7.963 37.568-20.848 50.521l-68.136 68.136c-12.998 13.055-30.985 21.133-50.859 21.133-19.725 0-37.592-7.958-50.564-20.838l-289.532-289.617-289.195 289.195c-13.008 13.118-31.038 21.24-50.965 21.24-19.778 0-37.688-8.001-50.669-20.943l-0.297-0.297-67.968-67.499c-13.075-12.989-21.168-30.978-21.168-50.859 0-19.71 7.956-37.563 20.831-50.521l408.231-408.316c13.040-13.276 31.18-21.503 51.243-21.503 19.596 0 37.358 7.849 50.315 20.575l-0.011-0.010z" />
<glyph unicode="&#xe900;" glyph-name="decrease" horiz-adv-x="1059" d="M947.023 536.276h-834.737c-42.513 0-76.977-34.464-76.977-76.977s34.464-76.977 76.977-76.977h834.737c42.513 0 76.977 34.464 76.977 76.977s-34.464 76.977-76.977 76.977v0z" />
<glyph unicode="&#xe901;" glyph-name="add" d="M944.305 527.805h-352.501v352.501c-0.083 44.019-35.777 79.674-79.803 79.695h-0.002c-43.994-0.083-79.632-35.735-79.695-79.725v-352.47h-352.537c-44.055 0-79.768-35.713-79.768-79.768s35.713-79.768 79.768-79.768v0h352.501v-352.574c0-44.055 35.713-79.768 79.768-79.768s79.768 35.713 79.768 79.768v0 352.574h352.501c44.055 0 79.768 35.713 79.768 79.768s-35.713 79.768-79.768 79.768v0z" />
<glyph unicode="&#xe902;" glyph-name="address" horiz-adv-x="717" d="M358.4 960c-0.076 0-0.166 0-0.256 0-197.797 0-358.144-160.347-358.144-358.144 0-0.090 0-0.18 0-0.27v0.014c0-268.8 358.4-665.6 358.4-665.6s358.4 396.8 358.4 665.6c0 0.076 0 0.166 0 0.256 0 197.797-160.347 358.144-358.144 358.144-0.090 0-0.18 0-0.27 0h0.014zM358.4 473.6c-70.692 0-128 57.308-128 128s57.308 128 128 128c70.692 0 128-57.308 128-128v0c0-70.692-57.308-128-128-128v0z" />
<glyph unicode="&#xe903;" glyph-name="agent" horiz-adv-x="896" d="M447.993 448.019c141.38 0 255.991 114.611 255.991 255.991s-114.611 255.991-255.991 255.991c-141.38 0-255.991-114.611-255.991-255.991v0c0-141.38 114.611-255.991 255.991-255.991v0zM639.585 382.836l-95.609-382.81-63.988 272.006 63.988 111.998h-191.965l63.988-111.998-63.988-272.006-95.609 382.773c-142.815-6.542-256.155-123.796-256.401-267.577v-179.221h895.986v179.197c-0.246 143.806-113.586 261.059-255.814 267.58l-0.587 0.021z" />
@@ -15,29 +15,30 @@
<glyph unicode="&#xe905;" glyph-name="avatar" horiz-adv-x="894" d="M448.963 456.819c138.95 0 251.59 112.641 251.59 251.59s-112.641 251.59-251.59 251.59v0c-138.95 0-251.59-112.641-251.59-251.59s112.641-251.59 251.59-251.59v0zM448.963 840.512v0c72.958 0 132.103-59.144 132.103-132.103s-59.144-132.103-132.103-132.103c-72.958 0-132.103 59.144-132.103 132.103 0 0.013 0 0.026 0 0.039v-0.002c0 72.938 59.128 132.065 132.065 132.065 0.013 0 0.026 0 0.039 0h-0.002zM448.963 393.931c-167.938 0-448.963-50.013-448.963-217.355v-240.576h893.721v240.576c0 167.305-276.82 217.355-444.758 217.355zM774.233 55.525h-654.931v121.051c0 40.263 142.671 97.83 329.475 97.83v0c186.804 0 325.27-57.567 325.27-97.83z" />
<glyph unicode="&#xe906;" glyph-name="bell" horiz-adv-x="932" d="M908.486 267.183c-1.1 0.834-112.139 84.872-112.139 362.886 0 182.216-147.715 329.931-329.931 329.931s-329.931-147.715-329.931-329.931v0c0-278.014-111.039-362.052-111.191-362.242-15.359-10.347-25.326-27.674-25.326-47.328 0-31.414 25.465-56.881 56.878-56.885h819.14c25.031 0.194 46.179 16.601 53.474 39.229l0.112 0.401c1.696 5.184 2.675 11.15 2.675 17.344 0 19.089-9.291 36.008-23.598 46.482l-0.162 0.113zM174.901 277.384c47.923 94.131 76 205.282 76 322.99 0 10.443-0.221 20.835-0.659 31.17l0.050-1.475c0 119.383 96.779 216.162 216.162 216.162s216.162-96.779 216.162-216.162v0c-0.387-8.856-0.608-19.244-0.608-29.684 0-117.708 28.062-228.862 77.862-327.136l-1.9 4.135zM573.853 87.541c-8.181 4.825-18.026 7.675-28.536 7.675-20.904 0-39.175-11.276-49.061-28.077l-0.145-0.266c-6.013-10.266-16.989-17.051-29.55-17.051-6.311 0-12.222 1.713-17.293 4.699l0.16-0.087c-5.181 3.025-9.376 7.22-12.314 12.241l-0.086 0.16c-10.022 17.142-28.338 28.474-49.3 28.474-31.434 0-56.916-25.482-56.916-56.916 0-10.472 2.828-20.283 7.762-28.711l-0.145 0.269c26.074-44.41 73.596-73.753 127.972-73.753s101.897 29.344 127.594 73.059l0.377 0.694c4.808 8.17 7.648 17.998 7.648 28.489 0 20.831-11.197 39.047-27.901 48.958l-0.263 0.144z" />
<glyph unicode="&#xe907;" glyph-name="calender" horiz-adv-x="922" d="M307.2 499.2h-102.4v-102.4h102.4zM512 499.2h-102.4v-102.4h102.4zM716.8 499.2h-102.4v-102.4h102.4zM819.2 857.6h-51.2v102.4h-102.4v-102.4h-409.6v102.4h-102.4v-102.4h-51.2c-56.277-0.024-101.889-45.651-101.889-101.931 0-0.165 0-0.33 0.001-0.495v0.025l-0.512-716.8c0-56.554 45.846-102.4 102.4-102.4v0h716.8c56.486 0.169 102.231 45.914 102.4 102.384v716.816c-0.169 56.486-45.914 102.231-102.384 102.4h-0.016zM819.2 38.4h-716.8v563.2h716.8z" />
<glyph unicode="&#xe908;" glyph-name="checkbox" d="M910.222 846.222v-796.444h-796.444v796.444h796.444zM910.222 960h-796.444c-62.76-0.193-113.584-51.018-113.778-113.759v-796.463c0.193-62.76 51.018-113.584 113.759-113.778h796.463c62.76 0.193 113.584 51.018 113.778 113.759v796.463c-0.193 62.76-51.018 113.584-113.759 113.778h-0.019z" />
<glyph unicode="&#xe909;" glyph-name="checkbox-1" d="M910.222 960h-796.444c-62.838 0-113.778-50.94-113.778-113.778v0-796.444c0-62.838 50.94-113.778 113.778-113.778v0h796.444c62.838 0 113.778 50.94 113.778 113.778v0 796.444c0 62.838-50.94 113.778-113.778 113.778v0zM398.222 163.556l-284.444 284.444 80.213 80.213 204.231-203.662 431.787 431.787 80.213-80.782z" />
<glyph unicode="&#xe908;" glyph-name="checkbox-1" d="M910.222 960h-796.444c-62.838 0-113.778-50.94-113.778-113.778v0-796.444c0-62.838 50.94-113.778 113.778-113.778v0h796.444c62.838 0 113.778 50.94 113.778 113.778v0 796.444c0 62.838-50.94 113.778-113.778 113.778v0zM398.222 163.556l-284.444 284.444 80.213 80.213 204.231-203.662 431.787 431.787 80.213-80.782z" />
<glyph unicode="&#xe909;" glyph-name="checkbox" d="M910.222 846.222v-796.444h-796.444v796.444h796.444zM910.222 960h-796.444c-62.76-0.193-113.584-51.018-113.778-113.759v-796.463c0.193-62.76 51.018-113.584 113.759-113.778h796.463c62.76 0.193 113.584 51.018 113.778 113.759v796.463c-0.193 62.76-51.018 113.584-113.759 113.778h-0.019z" />
<glyph unicode="&#xe90a;" glyph-name="circle-left" d="M512-64c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512v0c0-282.77-229.23-512-512-512v0zM276.821 412.928l279.723-279.723c8.937-8.992 21.312-14.557 34.987-14.557s26.050 5.565 34.984 14.554l35.117 35.117c8.992 8.937 14.557 21.312 14.557 34.987s-5.565 26.050-14.554 34.984l-209.751 209.751 209.749 209.749c8.992 8.937 14.557 21.312 14.557 34.987s-5.565 26.050-14.554 34.984l-35.117 35.117c-8.937 8.992-21.312 14.557-34.987 14.557s-26.050-5.565-34.984-14.554l-279.725-279.767c-8.993-8.976-14.557-21.385-14.557-35.093s5.564-26.118 14.556-35.093l0.001-0.001z" />
<glyph unicode="&#xe90b;" glyph-name="circle-right" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512c-282.77 0-512-229.23-512-512v0c0-282.77 229.23-512 512-512v0zM747.136 412.885l-279.723-279.723c-8.937-8.992-21.312-14.557-34.987-14.557s-26.050 5.565-34.984 14.554l-35.117 35.117c-8.992 8.937-14.557 21.312-14.557 34.987s5.565 26.050 14.554 34.984l209.751 209.751-209.792 209.792c-8.992 8.937-14.557 21.312-14.557 34.987s5.565 26.050 14.554 34.984l35.117 35.117c8.937 8.992 21.312 14.557 34.987 14.557s26.050-5.565 34.984-14.554l279.725-279.725c9.019-8.98 14.6-21.406 14.6-35.136 0-13.709-5.564-26.118-14.556-35.093l-0.001-0.001z" />
<glyph unicode="&#xe90c;" glyph-name="close" d="M843.123 929.004l-331.098-331.098-331.098 331.098c-19.185 19.146-45.668 30.985-74.916 30.985s-55.731-11.839-74.918-30.987l0.002 0.002c-19.117-19.18-30.937-45.643-30.937-74.868s11.82-55.687 30.94-74.87l331.047-331.095-331.050-331.244c-19.191-19.173-31.063-45.67-31.063-74.94 0-58.504 47.427-105.93 105.93-105.93 29.234 0 55.702 11.842 74.868 30.991l331.097 331.097 331.196-331.147c19.046-18.46 45.049-29.839 73.71-29.839 58.521 0 105.961 47.44 105.961 105.961 0 28.661-11.379 54.663-29.865 73.737l0.027-0.028-331.196 331.196 331.098 331.098c18.46 19.046 29.839 45.049 29.839 73.71 0 58.521-47.44 105.961-105.961 105.961-28.661 0-54.663-11.379-73.737-29.865l0.028 0.027z" />
<glyph unicode="&#xe90d;" glyph-name="comment" d="M895.851 960h-767.872c-70.681 0-127.979-57.298-127.979-127.979v0-575.904c0-70.681 57.298-127.979 127.979-127.979v0h191.968v-167.993c0-0.025 0-0.056 0-0.086 0-13.288 10.772-24.060 24.060-24.060 5.399 0 10.382 1.778 14.397 4.781l-0.063-0.045 249.558 187.403h287.952c70.681 0 127.979 57.298 127.979 127.979v0 575.904c0 70.681-57.298 127.979-127.979 127.979v0zM604.699 384.096h-371.821v127.979h371.821zM791.42 663.303h-558.84v127.979h558.84z" />
<glyph unicode="&#xe90e;" glyph-name="company" horiz-adv-x="970" d="M646.741 474.965v323.371l-161.707 161.664-161.664-161.664v-107.819h-323.371v-754.517h970.112v538.965zM215.595 43.776h-107.819v107.819h107.819zM215.595 259.371h-107.819v107.776h107.819zM215.595 474.965h-107.819v107.776h107.819zM538.965 43.819h-107.819v107.776h107.776zM538.965 259.413h-107.819v107.733h107.776zM538.965 475.008h-107.819v107.733h107.776zM538.965 690.603h-107.819v107.733h107.776zM862.336 43.861h-107.819v107.733h107.776zM862.336 259.456h-107.819v107.691h107.776z" />
<glyph unicode="&#xe90f;" glyph-name="edit" d="M864 960c88.366 0 160-71.634 160-160 0-36.2-12.022-69.593-32.292-96.402l0.292 0.402-64-64-224 224 64 64c26.324 19.976 59.637 32 95.758 32 0.085 0 0.17 0 0.255 0h-0.013zM64 224l-64-288 288 64 592.171 592-224.171 224.128zM715.563 596.437l-448-448-55.168 55.125 448 448z" />
<glyph unicode="&#xe910;" glyph-name="eye" horiz-adv-x="1352" d="M1343.806 481.543c-9.762 19.575-244.11 478.457-667.948 478.457s-658.136-458.883-667.948-478.457c-4.994-9.78-7.92-21.332-7.92-33.568s2.926-23.787 8.117-33.994l-0.197 0.427c10.013-19.575 244.11-478.407 667.948-478.407s658.186 458.832 667.948 478.407c4.994 9.78 7.92 21.332 7.92 33.568s-2.926 23.787-8.117 33.994l0.197-0.427zM675.858 86.040c-272.446 0-457.030 266.138-514.553 361.809 57.523 95.671 242.107 361.809 514.553 361.809s457.13-266.288 514.553-361.809c-57.523-95.521-242.157-361.659-514.553-361.659zM675.858 748.381c-165.896 0-300.381-134.485-300.381-300.381s134.485-300.381 300.381-300.381c165.896 0 300.381 134.485 300.381 300.381v0c-0.199 165.816-134.565 300.182-300.362 300.381h-0.020zM675.858 297.809c-82.948 0-150.191 67.243-150.191 150.191s67.243 150.191 150.191 150.191c82.948 0 150.191-67.243 150.191-150.191v0c0-82.948-67.243-150.191-150.191-150.191v0z" />
<glyph unicode="&#xe911;" glyph-name="eye-1" horiz-adv-x="1142" d="M1123.235 38.654l-217.634 208.847c5.132-1.805 11.050-2.848 17.211-2.848 15.851 0 30.089 6.902 39.875 17.864l0.046 0.052c37.481 38.161 71.036 80.412 99.866 125.951l1.835 3.103c5.666 8.976 9.029 19.899 9.029 31.606 0 11.056-2.999 21.412-8.227 30.299l0.153-0.28c-7.952 13.359-194.813 327.802-528.499 327.802h-1.312c-35.996-0.005-71.127-3.696-105.040-10.716l3.34 0.578c-18.092-3.787-32.895-15.391-40.954-31.036l-0.156-0.333-212.306 203.798c-10.7 10.287-25.264 16.622-41.308 16.622-32.938 0-59.64-26.702-59.64-59.64 0-16.894 7.024-32.148 18.312-42.999l0.020-0.019 162.768-156.208c-5.287-1.648-9.884-3.809-14.111-6.501l0.235 0.14c-95.97-62.868-175.328-142.911-235.543-236.445l-1.89-3.135c-5.835-9.056-9.303-20.115-9.303-31.985 0-11.035 2.997-21.371 8.222-30.236l-0.152 0.279c7.952-13.359 194.813-327.802 529.175-327.802 107.604 0.9 207.542 32.95 291.456 87.555l-2.1-1.281c1.312 0.835 2.385 1.908 3.618 2.863l210.398-201.929c10.7-10.287 25.264-16.622 41.308-16.622 32.938 0 59.64 26.702 59.64 59.64 0 16.894-7.024 32.148-18.312 42.999l-0.020 0.019zM536.729 661.777c210.716 0 354.679-168.573 405.529-238.546-20.464-28.603-41.631-53.756-64.584-77.15l0.097 0.1c-10.193-10.583-16.471-24.997-16.471-40.878 0-6.315 0.993-12.399 2.831-18.103l-0.116 0.417-385.213 369.747c17.213 2.809 37.053 4.414 57.267 4.414 0.232 0 0.464 0 0.696-0.001h-0.036zM480.591 454.242c6.937 5.309 12.58 11.943 16.621 19.556l0.156 0.323 89.972-86.354c-14.804-12.070-33.904-19.382-54.711-19.382-7.266 0-14.323 0.892-21.069 2.571l0.598-0.126c-21.583 3.776-39.081 18.284-47.003 37.713l-0.149 0.414c-0.942 3.344-1.484 7.185-1.484 11.153 0 13.911 6.658 26.266 16.961 34.054l0.107 0.078zM536.729 184.685c-210.716 0-354.4 168.215-405.211 238.546 49.32 68.027 109.037 125.034 177.432 169.904l2.551 1.571c11.947 7.883 20.761 19.68 24.668 33.535l0.101 0.418 78.482-75.301c-2.135-1.142-3.89-2.209-5.584-3.359l0.217 0.139c-39.593-30.204-64.883-77.409-64.883-130.521 0-16.497 2.44-32.424 6.979-47.441l-0.301 1.159c21.213-61.143 72.589-106.713 135.851-119.32l1.154-0.192c13.578-3.209 29.168-5.048 45.187-5.048 51.658 0 98.848 19.131 134.872 50.694l-0.235-0.202c1.923 1.788 3.692 3.67 5.327 5.665l0.080 0.1 67.389-64.686c-58.645-34.055-128.851-54.577-203.762-55.657l-0.314-0.004z" />
<glyph unicode="&#xe912;" glyph-name="flag" horiz-adv-x="1008" d="M470.315 580.139v-136.192c52.181-11.819 98.603-31.189 147.2-44.587v136.405c-52.011 11.605-98.773 30.976-147.2 44.416zM916.907 826.112c-67.939-35.792-147.729-58.874-232.376-63.923l-1.608-0.077c-107.008 0.213-195.584 69.76-330.368 69.76-0.457 0.002-0.998 0.003-1.539 0.003-48.265 0-94.476-8.794-137.118-24.867l2.678 0.885c4.705 11.905 7.433 25.695 7.433 40.122 0 61.856-50.144 112-112 112s-112-50.144-112-112c0-37.882 18.807-71.371 47.593-91.64l0.355-0.237v-772.267c0-0.038 0-0.083 0-0.128 0-26.439 21.433-47.872 47.872-47.872 0.045 0 0.090 0 0.135 0h31.993c0.038 0 0.083 0 0.128 0 26.439 0 47.872 21.433 47.872 47.872 0 0.045 0 0.090 0 0.135v-0.007 188.928c64.268 28.012 139.144 44.31 217.827 44.31 3.851 0 7.693-0.039 11.525-0.117l-0.573 0.009c107.179 0 195.584-69.589 330.368-69.589 92.324 0.765 177.356 31.352 246.099 82.581l-1.107-0.789c16.771 11.705 27.605 30.909 27.605 52.644 0 0.047 0 0.094 0 0.141v-0.007 486.144c-0.078 35.287-28.702 63.863-64 63.863-9.72 0-18.935-2.167-27.186-6.044l0.391 0.165zM323.157 308.992c-54.473-5.68-104.346-17.389-151.58-34.589l4.38 1.394v140.8c42.966 16.959 92.83 29.258 144.754 34.612l2.446 0.204zM911.957 577.792c-42.344-20.263-91.614-36.787-143.125-47.106l-4.075-0.681v-141.867c55.26 7.286 105.051 25.69 148.773 52.924l-1.573-0.913v-140.8c-41.573-28.653-91.64-48.031-145.739-54.055l-1.461-0.132v142.976c-14.605-2.234-31.455-3.51-48.603-3.51-35.177 0-69.1 5.37-100.994 15.334l2.396-0.645v-134.912c-39.685 15.094-88.92 29.775-139.395 41.183l-7.805 1.483v136.875c-28.906 6.694-62.098 10.532-96.186 10.532-17.976 0-35.702-1.067-53.12-3.141l2.106 0.204v140.032c-55.565-9.583-104.997-24.104-151.88-43.532l4.68 1.718v140.8c42.614 19.83 92.097 35.166 143.91 43.55l3.29 0.439v-142.976c14.417 2.165 31.054 3.401 47.98 3.401 35.4 0 69.537-5.408 101.63-15.442l-2.41 0.649v134.741c39.858-15.224 89.098-29.908 139.605-41.235l7.595-1.431v-136.704c26.239-6.45 56.363-10.149 87.35-10.149 21.13 0 41.859 1.72 62.054 5.028l-2.204-0.298v143.872c55.763 10.757 105.071 26.328 151.746 46.79l-4.546-1.777z" />
<glyph unicode="&#xe913;" glyph-name="information" d="M460.771 601.604h102.293v102.251h-102.293zM511.917 38.251c-0.012 0-0.027 0-0.041 0-226.23 0-409.625 183.395-409.625 409.625s183.395 409.625 409.625 409.625c226.215 0 409.601-183.372 409.625-409.581v-0.002c0-226.23-183.395-409.625-409.625-409.625v0zM511.876 960.207c-282.717-0.071-511.876-229.274-511.876-512 0-282.77 229.23-512 512-512 282.697 0 511.882 229.113 512 511.782v0.011c0 282.77-229.23 512-512 512v0zM460.854 191.979h102.21v307.25h-102.21z" />
<glyph unicode="&#xe914;" glyph-name="left" horiz-adv-x="661" d="M22.52 393.406l435.159-434.886c13.85-13.942 33.032-22.572 54.23-22.572s40.38 8.63 54.226 22.567l72.295 72.295c13.931 13.855 22.553 33.035 22.553 54.23s-8.622 40.375-22.549 54.227l-308.504 308.413 308.365 308.365c13.931 13.855 22.553 33.035 22.553 54.23s-8.622 40.375-22.549 54.227l-0.003 0.003-71.973 72.792c-13.85 13.942-33.032 22.572-54.23 22.572s-40.38-8.63-54.226-22.567l-435.027-434.936c-14.154-13.904-22.927-33.246-22.927-54.637 0-21.234 8.643-40.449 22.604-54.319l0.004-0.004z" />
<glyph unicode="&#xe915;" glyph-name="phone" horiz-adv-x="652" d="M558.549 959.531l-465.451 0.469c-51.358-0.145-92.954-41.74-93.099-93.085v-837.817c0.145-51.358 41.74-92.954 93.085-93.099h465.465c51.358 0.145 92.954 41.74 93.099 93.085v837.817c-0.194 51.199-41.744 92.629-92.97 92.629-0.045 0-0.090 0-0.136 0h0.007zM558.549 122.197h-465.451v651.605h465.451z" />
<glyph unicode="&#xe916;" glyph-name="right" horiz-adv-x="661" d="M638.368 393.381l-435.042-434.86c-13.855-13.932-33.037-22.554-54.232-22.554s-40.377 8.622-54.229 22.55l-72.298 72.298c-13.932 13.855-22.554 33.037-22.554 54.232s8.622 40.377 22.55 54.229l308.381 308.381-308.378 308.378c-13.932 13.855-22.554 33.037-22.554 54.232s8.622 40.377 22.55 54.229l0.003 0.003 71.976 72.795c13.855 13.932 33.037 22.554 54.232 22.554s40.377-8.622 54.229-22.55l435.045-434.726c14.1-13.896 22.836-33.203 22.836-54.549 0-21.189-8.607-40.368-22.515-54.232l-0.002-0.002z" />
<glyph unicode="&#xe917;" glyph-name="school" horiz-adv-x="1252" d="M227.579 380.884v-227.579l398.211-217.305 398.211 217.305v227.579l-398.211-217.358zM625.789 960l-625.789-341.316 625.789-341.316 512 279.311v-393.1h113.789v455.105z" />
<glyph unicode="&#xe918;" glyph-name="search" d="M1009.922 74.686l-199.391 199.391c-8.672 8.647-20.639 13.993-33.854 13.993-0.096 0-0.192 0-0.288-0.001h-32.577c54.858 69.783 87.982 158.908 87.982 255.769 0 229.618-186.142 415.76-415.76 415.76s-415.76-186.142-415.76-415.76c0-229.618 186.142-415.76 415.76-415.76 96.861 0 185.986 33.123 256.666 88.661l-0.897-0.679v-32.464c0-0.081-0.001-0.177-0.001-0.273 0-13.216 5.346-25.182 13.994-33.855l199.39-199.39c8.657-8.711 20.645-14.103 33.893-14.103s25.236 5.392 33.891 14.1l56.611 56.611c8.774 8.732 14.204 20.817 14.204 34.171 0 13.184-5.292 25.131-13.869 33.834l0.006-0.006zM415.973 287.984c-141.361 0-255.957 114.596-255.957 255.957s114.596 255.957 255.957 255.957c141.361 0 255.957-114.596 255.957-255.957v0c-0.049-141.325-114.626-255.872-255.957-255.872v0z" />
<glyph unicode="&#xe919;" glyph-name="star" horiz-adv-x="1103" d="M1060.923 605.515h-362.082l-110.034 328.386c-5.769 15.366-20.337 26.102-37.413 26.102s-31.644-10.737-37.322-25.828l-0.091-0.275-110.034-328.386h-364.574c-21.717-0.069-39.304-17.656-39.374-39.367v-0.007c0-0.051-0.001-0.111-0.001-0.172 0-2.3 0.268-4.537 0.775-6.682l-0.039 0.196c1.082-11.588 7.245-21.545 16.211-27.732l0.127-0.083 297.753-209.856-114.363-332.062c-1.356-3.823-2.14-8.232-2.14-12.824 0-12.816 6.104-24.206 15.563-31.422l0.096-0.070c5.913-5.322 13.556-8.829 21.991-9.588l0.147-0.011c9.263 0.701 17.658 3.918 24.649 8.961l-0.142-0.098 290.483 207.038 290.483-207.038c6.807-5.047 15.229-8.284 24.374-8.857l0.132-0.007c8.688 0.56 16.438 4.176 22.272 9.773l-0.012-0.012c9.602 7.187 15.75 18.533 15.75 31.315 0 4.66-0.817 9.13-2.316 13.273l0.086-0.272-114.159 331.898 295.139 211.694 7.148 6.167c7.108 6.72 11.823 15.905 12.772 26.182l0.012 0.163c-1.204 22.063-19.388 39.497-41.643 39.497-0.078 0-0.156 0-0.234-0.001h0.012z" />
<glyph unicode="&#xe91a;" glyph-name="star-1" horiz-adv-x="1095" d="M264.124-64l-3.988 0.315c-45.874 4.728-81.349 43.172-81.349 89.9 0 9.949 1.608 19.523 4.579 28.476l-0.183-0.638 89.58 260.661-235.092 165.554c-19.618 13.599-33.145 34.797-36.332 59.244l-0.046 0.43c-0.823 4.244-1.294 9.125-1.294 14.115 0 0.018 0 0.036 0 0.054v-0.003c0.197 48.36 39.308 87.52 87.63 87.796h289.579l86.747 258.842c12.356 34.779 44.982 59.235 83.32 59.235 37.789 0 70.029-23.761 82.593-57.157l0.201-0.608 87.272-260.311h287.525c0.011 0 0.025 0 0.038 0 47.863 0 86.99-37.407 89.741-84.58l0.011-0.243v-3.848l-0.315-3.883c-2.124-22.565-12.304-42.418-27.594-56.944l-0.039-0.036-11.963-10.074-233.098-167.233 89.755-261.011c3.161-8.633 4.99-18.602 4.99-28.997 0-27.516-12.812-52.041-32.795-67.933l-0.177-0.136c-13.364-11.803-30.658-19.438-49.692-20.728l-0.258-0.014-3.183-0.21-3.148 0.175c-18.973 1.079-36.226 7.647-50.416 18.125l0.256-0.181-229.565 163.77-230.369-164.12c-13.682-9.851-30.475-16.214-48.672-17.473l-0.298-0.017zM812.414 19.949v-0.28zM282.243 20.124v0zM838.403 39.502v0zM139.39 536.968l258.003-181.889-97.94-285.006 247.929 176.642 247.649-176.502-97.94 284.586 254.015 182.169h-309.246l-94.442 282.243-94.722-282.243zM1004.972 536.968v0zM97.346 566.595l0.56-0.42z" />
<glyph unicode="&#xe91b;" glyph-name="thumbs-up" horiz-adv-x="910" d="M662.613 598.059c-7.552 20.181 201.344 206.72 79.531 357.888-28.501 35.328-125.227-169.259-262.528-261.845-75.776-51.2-252.075-159.872-252.075-219.989v-389.461c0-72.32 279.552-148.864 491.989-148.864 77.867 0 190.677 487.851 190.677 565.333s-240.128 76.459-247.467 96.725zM170.624 592.64c-0.681 0.010-1.486 0.016-2.292 0.016-93.126 0-168.619-75.493-168.619-168.619 0-3.187 0.088-6.354 0.263-9.498l-0.019 0.437v-275.797c-0.161-2.71-0.252-5.878-0.252-9.068 0-90.015 72.972-162.987 162.987-162.987 2.79 0 5.564 0.070 8.32 0.209l-0.387-0.016c37.376 0-56.875 32.555-56.875 128.555v362.667c0 100.565 94.251 134.187 56.875 134.187z" />
<glyph unicode="&#xe91c;" glyph-name="time" d="M511.488 960c-282.55-0.292-511.488-229.41-511.488-512 0-282.77 229.23-512 512-512s512 229.23 512 512v0c0 0.076 0 0.166 0 0.257 0 282.628-229.116 511.744-511.744 511.744-0.27 0-0.54 0-0.81-0.001h0.042zM512 38.4c-226.216 0-409.6 183.384-409.6 409.6s183.384 409.6 409.6 409.6c226.216 0 409.6-183.384 409.6-409.6v0c0-226.216-183.384-409.6-409.6-409.6v0zM537.6 704h-76.8v-307.2l268.8-161.28 38.4 63.147-230.4 136.533z" />
<glyph unicode="&#xe91d;" glyph-name="trophy" horiz-adv-x="1152" d="M1104.017 831.982h-207.987v80.017c0 26.51-21.491 48.001-48.001 48.001v0h-544.040c-26.51 0-48.001-21.491-48.001-48.001v0-80.017h-207.987c-26.51 0-48.001-21.491-48.001-48.001v0-111.986c7.076-85.462 54.363-158.548 122.682-200.96l1.112-0.643c61.778-44.226 136.678-74.099 217.854-83.23l2.133-0.195c34.389-59.486 80.159-108.69 134.709-145.998l1.518-0.98v-144.002h-96.001c-3.854 0.457-8.318 0.718-12.843 0.718-62.746 0-113.776-50.163-115.172-112.574l-0.002-0.13v-24c0-13.255 10.745-24 24-24v0h592.041c13.255 0 24 10.745 24 24v0 24c-1.399 62.54-52.429 112.704-115.175 112.704-4.525 0-8.989-0.261-13.378-0.768l0.535 0.050h-96.001v144.002c56.068 38.356 101.826 87.64 135.041 145.086l1.137 2.132c83.314 9.166 158.252 38.973 221.451 84.147l-1.416-0.962c69.366 43.121 116.621 116.171 123.729 200.646l0.065 0.957v111.986c0 26.51-21.491 48.001-48.001 48.001v0zM198.627 574.41c-35.829 20.914-61.682 55.601-70.437 96.621l-0.172 0.964v32.016h128.402c1.638-61.997 10.873-121.145 26.808-177.479l-1.223 5.061c-31.815 11.002-59.407 25.499-84.329 43.47l0.951-0.653zM1024 671.995c-9.695-41.665-35.309-76.091-69.932-97.202l-0.677-0.383c-24.040-17.319-51.713-31.817-81.346-42.129l-2.271-0.688c14.711 51.273 23.946 110.421 25.564 171.467l0.020 0.952h128.594z" />
<glyph unicode="&#xe91e;" glyph-name="puzzle" d="M384 960c-0.789 0.017-1.719 0.027-2.651 0.027-34.738 0-66.285-13.665-89.558-35.914l0.049 0.046c-22.202-23.224-35.867-54.77-35.867-89.509 0-0.932 0.010-1.862 0.029-2.789l-0.002 0.138c5.836-34.821 18.412-65.879 36.393-93.049l-0.553 0.889c2.672-8.237 4.213-17.715 4.213-27.553 0-2.918-0.136-5.803-0.401-8.652l0.027 0.365h-295.68v-768h295.68c0.053 1.37 0.084 2.978 0.084 4.594 0 11.101-1.431 21.868-4.119 32.126l0.196-0.88c-17.428 26.281-30.005 57.34-35.644 90.756l-0.196 1.404c-0.017 0.789-0.027 1.719-0.027 2.651 0 34.738 13.665 66.285 35.914 89.558l-0.046-0.049c23.224 22.202 54.77 35.867 89.509 35.867 0.932 0 1.862-0.010 2.789-0.029l-0.138 0.002c0.789 0.017 1.719 0.027 2.651 0.027 34.738 0 66.285-13.665 89.558-35.914l-0.049 0.046c22.202-23.224 35.867-54.77 35.867-89.509 0-0.932-0.010-1.862-0.029-2.789l0.002 0.138c-5.836-34.821-18.412-65.879-36.393-93.049l0.553 0.889c-2.672-8.237-4.213-17.715-4.213-27.553 0-2.918 0.136-5.803 0.401-8.652l-0.027 0.365h295.68v295.68c1.37 0.053 2.978 0.084 4.594 0.084 11.101 0 21.868-1.431 32.126-4.119l-0.88 0.196c26.281-17.428 57.34-30.005 90.756-35.644l1.404-0.196c70.692 0 128 57.308 128 128s-57.308 128-128 128v0c-34.821-5.836-65.879-18.412-93.049-36.393l0.889 0.553c-8.237-2.672-17.715-4.213-27.553-4.213-2.918 0-5.803 0.136-8.652 0.401l0.365-0.027v295.68h-295.68c-0.053 1.37-0.084 2.978-0.084 4.594 0 11.101 1.431 21.868 4.119 32.126l-0.196-0.88c17.428 26.281 30.005 57.34 35.644 90.756l0.196 1.404c0.017 0.789 0.027 1.719 0.027 2.651 0 34.738-13.665 66.285-35.914 89.558l0.046-0.049c-23.224 22.202-54.77 35.867-89.509 35.867-0.932 0-1.862-0.010-2.789-0.029l0.138 0.002z" />
<glyph unicode="&#xe91f;" glyph-name="top" d="M563.115 736.768l407.851-408.107c13.137-12.992 21.272-31.018 21.272-50.943 0-19.756-7.997-37.645-20.932-50.605l-68.138-68.138c-12.998-13.055-30.985-21.133-50.859-21.133-19.725 0-37.592 7.958-50.564 20.838l-289.532 289.788-289.195-289.195c-12.998-13.055-30.985-21.133-50.859-21.133-19.725 0-37.592 7.958-50.564 20.838l0.004-0.004-0.213 0.299-68.267 67.499c-13.075 12.989-21.168 30.978-21.168 50.859 0 19.71 7.956 37.563 20.831 50.521l408.231 408.316c13.040 13.276 31.18 21.503 51.243 21.503 19.596 0 37.358-7.849 50.315-20.575l-0.011 0.010z" />
<glyph unicode="&#xe920;" glyph-name="delet" horiz-adv-x="783" d="M587.199 904.076l-55.924 55.924h-279.618l-55.924-55.924h-195.733v-111.847h782.932v111.847zM33.107 89.492c1.405-85.070 70.697-153.493 155.97-153.493 0.217 0 0.434 0 0.65 0.001h403.362c0.182-0.001 0.398-0.001 0.614-0.001 85.338 0 154.671 68.528 155.971 153.557l0.001 0.122v647.895h-716.569zM144.954 627.888h493.023v-538.023c-0.295-24.483-20.211-44.217-44.736-44.217-0.001 0-0.002 0-0.003 0h-403.21c-0.101-0.001-0.22-0.001-0.34-0.001-24.499 0-44.399 19.692-44.735 44.112v0.032zM288.939 125.097c30.886 0 55.924 25.038 55.924 55.924v0 316.901c0 30.886-25.038 55.924-55.924 55.924s-55.924-25.038-55.924-55.924v0-316.901c0-30.886 25.038-55.924 55.924-55.924v0zM493.993 125.097c30.886 0 55.924 25.038 55.924 55.924v0 316.901c0 30.886-25.038 55.924-55.924 55.924s-55.924-25.038-55.924-55.924v0-316.901c0-30.886 25.038-55.924 55.924-55.924v0z" />
<glyph unicode="&#xe90f;" glyph-name="delet" horiz-adv-x="783" d="M587.199 904.076l-55.924 55.924h-279.618l-55.924-55.924h-195.733v-111.847h782.932v111.847zM33.107 89.492c1.405-85.070 70.697-153.493 155.97-153.493 0.217 0 0.434 0 0.65 0.001h403.362c0.182-0.001 0.398-0.001 0.614-0.001 85.338 0 154.671 68.528 155.971 153.557l0.001 0.122v647.895h-716.569zM144.954 627.888h493.023v-538.023c-0.295-24.483-20.211-44.217-44.736-44.217-0.001 0-0.002 0-0.003 0h-403.21c-0.101-0.001-0.22-0.001-0.34-0.001-24.499 0-44.399 19.692-44.735 44.112v0.032zM288.939 125.097c30.886 0 55.924 25.038 55.924 55.924v0 316.901c0 30.886-25.038 55.924-55.924 55.924s-55.924-25.038-55.924-55.924v0-316.901c0-30.886 25.038-55.924 55.924-55.924v0zM493.993 125.097c30.886 0 55.924 25.038 55.924 55.924v0 316.901c0 30.886-25.038 55.924-55.924 55.924s-55.924-25.038-55.924-55.924v0-316.901c0-30.886 25.038-55.924 55.924-55.924v0z" />
<glyph unicode="&#xe910;" glyph-name="down" d="M563.115 105.771l407.851 408.107c13.086 12.984 21.186 30.975 21.186 50.858 0 19.714-7.963 37.568-20.848 50.521l-68.136 68.136c-12.998 13.055-30.985 21.133-50.859 21.133-19.725 0-37.592-7.958-50.564-20.838l-289.532-289.617-289.195 289.195c-13.008 13.118-31.038 21.24-50.965 21.24-19.778 0-37.688-8.001-50.669-20.943l-0.297-0.297-67.968-67.499c-13.075-12.989-21.168-30.978-21.168-50.859 0-19.71 7.956-37.563 20.831-50.521l408.231-408.316c13.040-13.276 31.18-21.503 51.243-21.503 19.596 0 37.358 7.849 50.315 20.575l-0.011-0.010z" />
<glyph unicode="&#xe911;" glyph-name="edit" d="M864 960c88.366 0 160-71.634 160-160 0-36.2-12.022-69.593-32.292-96.402l0.292 0.402-64-64-224 224 64 64c26.324 19.976 59.637 32 95.758 32 0.085 0 0.17 0 0.255 0h-0.013zM64 224l-64-288 288 64 592.171 592-224.171 224.128zM715.563 596.437l-448-448-55.168 55.125 448 448z" />
<glyph unicode="&#xe912;" glyph-name="eye-1" horiz-adv-x="1142" d="M1123.235 38.654l-217.634 208.847c5.132-1.805 11.050-2.848 17.211-2.848 15.851 0 30.089 6.902 39.875 17.864l0.046 0.052c37.481 38.161 71.036 80.412 99.866 125.951l1.835 3.103c5.666 8.976 9.029 19.899 9.029 31.606 0 11.056-2.999 21.412-8.227 30.299l0.153-0.28c-7.952 13.359-194.813 327.802-528.499 327.802h-1.312c-35.996-0.005-71.127-3.696-105.040-10.716l3.34 0.578c-18.092-3.787-32.895-15.391-40.954-31.036l-0.156-0.333-212.306 203.798c-10.7 10.287-25.264 16.622-41.308 16.622-32.938 0-59.64-26.702-59.64-59.64 0-16.894 7.024-32.148 18.312-42.999l0.020-0.019 162.768-156.208c-5.287-1.648-9.884-3.809-14.111-6.501l0.235 0.14c-95.97-62.868-175.328-142.911-235.543-236.445l-1.89-3.135c-5.835-9.056-9.303-20.115-9.303-31.985 0-11.035 2.997-21.371 8.222-30.236l-0.152 0.279c7.952-13.359 194.813-327.802 529.175-327.802 107.604 0.9 207.542 32.95 291.456 87.555l-2.1-1.281c1.312 0.835 2.385 1.908 3.618 2.863l210.398-201.929c10.7-10.287 25.264-16.622 41.308-16.622 32.938 0 59.64 26.702 59.64 59.64 0 16.894-7.024 32.148-18.312 42.999l-0.020 0.019zM536.729 661.777c210.716 0 354.679-168.573 405.529-238.546-20.464-28.603-41.631-53.756-64.584-77.15l0.097 0.1c-10.193-10.583-16.471-24.997-16.471-40.878 0-6.315 0.993-12.399 2.831-18.103l-0.116 0.417-385.213 369.747c17.213 2.809 37.053 4.414 57.267 4.414 0.232 0 0.464 0 0.696-0.001h-0.036zM480.591 454.242c6.937 5.309 12.58 11.943 16.621 19.556l0.156 0.323 89.972-86.354c-14.804-12.070-33.904-19.382-54.711-19.382-7.266 0-14.323 0.892-21.069 2.571l0.598-0.126c-21.583 3.776-39.081 18.284-47.003 37.713l-0.149 0.414c-0.942 3.344-1.484 7.185-1.484 11.153 0 13.911 6.658 26.266 16.961 34.054l0.107 0.078zM536.729 184.685c-210.716 0-354.4 168.215-405.211 238.546 49.32 68.027 109.037 125.034 177.432 169.904l2.551 1.571c11.947 7.883 20.761 19.68 24.668 33.535l0.101 0.418 78.482-75.301c-2.135-1.142-3.89-2.209-5.584-3.359l0.217 0.139c-39.593-30.204-64.883-77.409-64.883-130.521 0-16.497 2.44-32.424 6.979-47.441l-0.301 1.159c21.213-61.143 72.589-106.713 135.851-119.32l1.154-0.192c13.578-3.209 29.168-5.048 45.187-5.048 51.658 0 98.848 19.131 134.872 50.694l-0.235-0.202c1.923 1.788 3.692 3.67 5.327 5.665l0.080 0.1 67.389-64.686c-58.645-34.055-128.851-54.577-203.762-55.657l-0.314-0.004z" />
<glyph unicode="&#xe913;" glyph-name="eye" horiz-adv-x="1352" d="M1343.806 481.543c-9.762 19.575-244.11 478.457-667.948 478.457s-658.136-458.883-667.948-478.457c-4.994-9.78-7.92-21.332-7.92-33.568s2.926-23.787 8.117-33.994l-0.197 0.427c10.013-19.575 244.11-478.407 667.948-478.407s658.186 458.832 667.948 478.407c4.994 9.78 7.92 21.332 7.92 33.568s-2.926 23.787-8.117 33.994l0.197-0.427zM675.858 86.040c-272.446 0-457.030 266.138-514.553 361.809 57.523 95.671 242.107 361.809 514.553 361.809s457.13-266.288 514.553-361.809c-57.523-95.521-242.157-361.659-514.553-361.659zM675.858 748.381c-165.896 0-300.381-134.485-300.381-300.381s134.485-300.381 300.381-300.381c165.896 0 300.381 134.485 300.381 300.381v0c-0.199 165.816-134.565 300.182-300.362 300.381h-0.020zM675.858 297.809c-82.948 0-150.191 67.243-150.191 150.191s67.243 150.191 150.191 150.191c82.948 0 150.191-67.243 150.191-150.191v0c0-82.948-67.243-150.191-150.191-150.191v0z" />
<glyph unicode="&#xe914;" glyph-name="flag" horiz-adv-x="1008" d="M470.315 580.139v-136.192c52.181-11.819 98.603-31.189 147.2-44.587v136.405c-52.011 11.605-98.773 30.976-147.2 44.416zM916.907 826.112c-67.939-35.792-147.729-58.874-232.376-63.923l-1.608-0.077c-107.008 0.213-195.584 69.76-330.368 69.76-0.457 0.002-0.998 0.003-1.539 0.003-48.265 0-94.476-8.794-137.118-24.867l2.678 0.885c4.705 11.905 7.433 25.695 7.433 40.122 0 61.856-50.144 112-112 112s-112-50.144-112-112c0-37.882 18.807-71.371 47.593-91.64l0.355-0.237v-772.267c0-0.038 0-0.083 0-0.128 0-26.439 21.433-47.872 47.872-47.872 0.045 0 0.090 0 0.135 0h31.993c0.038 0 0.083 0 0.128 0 26.439 0 47.872 21.433 47.872 47.872 0 0.045 0 0.090 0 0.135v-0.007 188.928c64.268 28.012 139.144 44.31 217.827 44.31 3.851 0 7.693-0.039 11.525-0.117l-0.573 0.009c107.179 0 195.584-69.589 330.368-69.589 92.324 0.765 177.356 31.352 246.099 82.581l-1.107-0.789c16.771 11.705 27.605 30.909 27.605 52.644 0 0.047 0 0.094 0 0.141v-0.007 486.144c-0.078 35.287-28.702 63.863-64 63.863-9.72 0-18.935-2.167-27.186-6.044l0.391 0.165zM323.157 308.992c-54.473-5.68-104.346-17.389-151.58-34.589l4.38 1.394v140.8c42.966 16.959 92.83 29.258 144.754 34.612l2.446 0.204zM911.957 577.792c-42.344-20.263-91.614-36.787-143.125-47.106l-4.075-0.681v-141.867c55.26 7.286 105.051 25.69 148.773 52.924l-1.573-0.913v-140.8c-41.573-28.653-91.64-48.031-145.739-54.055l-1.461-0.132v142.976c-14.605-2.234-31.455-3.51-48.603-3.51-35.177 0-69.1 5.37-100.994 15.334l2.396-0.645v-134.912c-39.685 15.094-88.92 29.775-139.395 41.183l-7.805 1.483v136.875c-28.906 6.694-62.098 10.532-96.186 10.532-17.976 0-35.702-1.067-53.12-3.141l2.106 0.204v140.032c-55.565-9.583-104.997-24.104-151.88-43.532l4.68 1.718v140.8c42.614 19.83 92.097 35.166 143.91 43.55l3.29 0.439v-142.976c14.417 2.165 31.054 3.401 47.98 3.401 35.4 0 69.537-5.408 101.63-15.442l-2.41 0.649v134.741c39.858-15.224 89.098-29.908 139.605-41.235l7.595-1.431v-136.704c26.239-6.45 56.363-10.149 87.35-10.149 21.13 0 41.859 1.72 62.054 5.028l-2.204-0.298v143.872c55.763 10.757 105.071 26.328 151.746 46.79l-4.546-1.777z" />
<glyph unicode="&#xe915;" glyph-name="information" d="M460.771 601.604h102.293v102.251h-102.293zM511.917 38.251c-0.012 0-0.027 0-0.041 0-226.23 0-409.625 183.395-409.625 409.625s183.395 409.625 409.625 409.625c226.215 0 409.601-183.372 409.625-409.581v-0.002c0-226.23-183.395-409.625-409.625-409.625v0zM511.876 960.207c-282.717-0.071-511.876-229.274-511.876-512 0-282.77 229.23-512 512-512 282.697 0 511.882 229.113 512 511.782v0.011c0 282.77-229.23 512-512 512v0zM460.854 191.979h102.21v307.25h-102.21z" />
<glyph unicode="&#xe916;" glyph-name="left" horiz-adv-x="661" d="M22.52 393.406l435.159-434.886c13.85-13.942 33.032-22.572 54.23-22.572s40.38 8.63 54.226 22.567l72.295 72.295c13.931 13.855 22.553 33.035 22.553 54.23s-8.622 40.375-22.549 54.227l-308.504 308.413 308.365 308.365c13.931 13.855 22.553 33.035 22.553 54.23s-8.622 40.375-22.549 54.227l-0.003 0.003-71.973 72.792c-13.85 13.942-33.032 22.572-54.23 22.572s-40.38-8.63-54.226-22.567l-435.027-434.936c-14.154-13.904-22.927-33.246-22.927-54.637 0-21.234 8.643-40.449 22.604-54.319l0.004-0.004z" />
<glyph unicode="&#xe917;" glyph-name="phone" horiz-adv-x="652" d="M558.549 959.531l-465.451 0.469c-51.358-0.145-92.954-41.74-93.099-93.085v-837.817c0.145-51.358 41.74-92.954 93.085-93.099h465.465c51.358 0.145 92.954 41.74 93.099 93.085v837.817c-0.194 51.199-41.744 92.629-92.97 92.629-0.045 0-0.090 0-0.136 0h0.007zM558.549 122.197h-465.451v651.605h465.451z" />
<glyph unicode="&#xe918;" glyph-name="puzzle" d="M384 960c-0.789 0.017-1.719 0.027-2.651 0.027-34.738 0-66.285-13.665-89.558-35.914l0.049 0.046c-22.202-23.224-35.867-54.77-35.867-89.509 0-0.932 0.010-1.862 0.029-2.789l-0.002 0.138c5.836-34.821 18.412-65.879 36.393-93.049l-0.553 0.889c2.672-8.237 4.213-17.715 4.213-27.553 0-2.918-0.136-5.803-0.401-8.652l0.027 0.365h-295.68v-768h295.68c0.053 1.37 0.084 2.978 0.084 4.594 0 11.101-1.431 21.868-4.119 32.126l0.196-0.88c-17.428 26.281-30.005 57.34-35.644 90.756l-0.196 1.404c-0.017 0.789-0.027 1.719-0.027 2.651 0 34.738 13.665 66.285 35.914 89.558l-0.046-0.049c23.224 22.202 54.77 35.867 89.509 35.867 0.932 0 1.862-0.010 2.789-0.029l-0.138 0.002c0.789 0.017 1.719 0.027 2.651 0.027 34.738 0 66.285-13.665 89.558-35.914l-0.049 0.046c22.202-23.224 35.867-54.77 35.867-89.509 0-0.932-0.010-1.862-0.029-2.789l0.002 0.138c-5.836-34.821-18.412-65.879-36.393-93.049l0.553 0.889c-2.672-8.237-4.213-17.715-4.213-27.553 0-2.918 0.136-5.803 0.401-8.652l-0.027 0.365h295.68v295.68c1.37 0.053 2.978 0.084 4.594 0.084 11.101 0 21.868-1.431 32.126-4.119l-0.88 0.196c26.281-17.428 57.34-30.005 90.756-35.644l1.404-0.196c70.692 0 128 57.308 128 128s-57.308 128-128 128v0c-34.821-5.836-65.879-18.412-93.049-36.393l0.889 0.553c-8.237-2.672-17.715-4.213-27.553-4.213-2.918 0-5.803 0.136-8.652 0.401l0.365-0.027v295.68h-295.68c-0.053 1.37-0.084 2.978-0.084 4.594 0 11.101 1.431 21.868 4.119 32.126l-0.196-0.88c17.428 26.281 30.005 57.34 35.644 90.756l0.196 1.404c0.017 0.789 0.027 1.719 0.027 2.651 0 34.738-13.665 66.285-35.914 89.558l0.046-0.049c-23.224 22.202-54.77 35.867-89.509 35.867-0.932 0-1.862-0.010-2.789-0.029l0.138 0.002z" />
<glyph unicode="&#xe919;" glyph-name="right" horiz-adv-x="661" d="M638.368 393.381l-435.042-434.86c-13.855-13.932-33.037-22.554-54.232-22.554s-40.377 8.622-54.229 22.55l-72.298 72.298c-13.932 13.855-22.554 33.037-22.554 54.232s8.622 40.377 22.55 54.229l308.381 308.381-308.378 308.378c-13.932 13.855-22.554 33.037-22.554 54.232s8.622 40.377 22.55 54.229l0.003 0.003 71.976 72.795c13.855 13.932 33.037 22.554 54.232 22.554s40.377-8.622 54.229-22.55l435.045-434.726c14.1-13.896 22.836-33.203 22.836-54.549 0-21.189-8.607-40.368-22.515-54.232l-0.002-0.002z" />
<glyph unicode="&#xe91a;" glyph-name="school" horiz-adv-x="1252" d="M227.579 380.884v-227.579l398.211-217.305 398.211 217.305v227.579l-398.211-217.358zM625.789 960l-625.789-341.316 625.789-341.316 512 279.311v-393.1h113.789v455.105z" />
<glyph unicode="&#xe91b;" glyph-name="search" d="M1009.922 74.686l-199.391 199.391c-8.672 8.647-20.639 13.993-33.854 13.993-0.096 0-0.192 0-0.288-0.001h-32.577c54.858 69.783 87.982 158.908 87.982 255.769 0 229.618-186.142 415.76-415.76 415.76s-415.76-186.142-415.76-415.76c0-229.618 186.142-415.76 415.76-415.76 96.861 0 185.986 33.123 256.666 88.661l-0.897-0.679v-32.464c0-0.081-0.001-0.177-0.001-0.273 0-13.216 5.346-25.182 13.994-33.855l199.39-199.39c8.657-8.711 20.645-14.103 33.893-14.103s25.236 5.392 33.891 14.1l56.611 56.611c8.774 8.732 14.204 20.817 14.204 34.171 0 13.184-5.292 25.131-13.869 33.834l0.006-0.006zM415.973 287.984c-141.361 0-255.957 114.596-255.957 255.957s114.596 255.957 255.957 255.957c141.361 0 255.957-114.596 255.957-255.957v0c-0.049-141.325-114.626-255.872-255.957-255.872v0z" />
<glyph unicode="&#xe91c;" glyph-name="star-1" horiz-adv-x="1095" d="M264.124-64l-3.988 0.315c-45.874 4.728-81.349 43.172-81.349 89.9 0 9.949 1.608 19.523 4.579 28.476l-0.183-0.638 89.58 260.661-235.092 165.554c-19.618 13.599-33.145 34.797-36.332 59.244l-0.046 0.43c-0.823 4.244-1.294 9.125-1.294 14.115 0 0.018 0 0.036 0 0.054v-0.003c0.197 48.36 39.308 87.52 87.63 87.796h289.579l86.747 258.842c12.356 34.779 44.982 59.235 83.32 59.235 37.789 0 70.029-23.761 82.593-57.157l0.201-0.608 87.272-260.311h287.525c0.011 0 0.025 0 0.038 0 47.863 0 86.99-37.407 89.741-84.58l0.011-0.243v-3.848l-0.315-3.883c-2.124-22.565-12.304-42.418-27.594-56.944l-0.039-0.036-11.963-10.074-233.098-167.233 89.755-261.011c3.161-8.633 4.99-18.602 4.99-28.997 0-27.516-12.812-52.041-32.795-67.933l-0.177-0.136c-13.364-11.803-30.658-19.438-49.692-20.728l-0.258-0.014-3.183-0.21-3.148 0.175c-18.973 1.079-36.226 7.647-50.416 18.125l0.256-0.181-229.565 163.77-230.369-164.12c-13.682-9.851-30.475-16.214-48.672-17.473l-0.298-0.017zM812.414 19.949v-0.28zM282.243 20.124v0zM838.403 39.502v0zM139.39 536.968l258.003-181.889-97.94-285.006 247.929 176.642 247.649-176.502-97.94 284.586 254.015 182.169h-309.246l-94.442 282.243-94.722-282.243zM1004.972 536.968v0zM97.346 566.595l0.56-0.42z" />
<glyph unicode="&#xe91d;" glyph-name="star" horiz-adv-x="1103" d="M1060.923 605.515h-362.082l-110.034 328.386c-5.769 15.366-20.337 26.102-37.413 26.102s-31.644-10.737-37.322-25.828l-0.091-0.275-110.034-328.386h-364.574c-21.717-0.069-39.304-17.656-39.374-39.367v-0.007c0-0.051-0.001-0.111-0.001-0.172 0-2.3 0.268-4.537 0.775-6.682l-0.039 0.196c1.082-11.588 7.245-21.545 16.211-27.732l0.127-0.083 297.753-209.856-114.363-332.062c-1.356-3.823-2.14-8.232-2.14-12.824 0-12.816 6.104-24.206 15.563-31.422l0.096-0.070c5.913-5.322 13.556-8.829 21.991-9.588l0.147-0.011c9.263 0.701 17.658 3.918 24.649 8.961l-0.142-0.098 290.483 207.038 290.483-207.038c6.807-5.047 15.229-8.284 24.374-8.857l0.132-0.007c8.688 0.56 16.438 4.176 22.272 9.773l-0.012-0.012c9.602 7.187 15.75 18.533 15.75 31.315 0 4.66-0.817 9.13-2.316 13.273l0.086-0.272-114.159 331.898 295.139 211.694 7.148 6.167c7.108 6.72 11.823 15.905 12.772 26.182l0.012 0.163c-1.204 22.063-19.388 39.497-41.643 39.497-0.078 0-0.156 0-0.234-0.001h0.012z" />
<glyph unicode="&#xe91e;" glyph-name="thumbs-up" horiz-adv-x="910" d="M662.613 598.059c-7.552 20.181 201.344 206.72 79.531 357.888-28.501 35.328-125.227-169.259-262.528-261.845-75.776-51.2-252.075-159.872-252.075-219.989v-389.461c0-72.32 279.552-148.864 491.989-148.864 77.867 0 190.677 487.851 190.677 565.333s-240.128 76.459-247.467 96.725zM170.624 592.64c-0.681 0.010-1.486 0.016-2.292 0.016-93.126 0-168.619-75.493-168.619-168.619 0-3.187 0.088-6.354 0.263-9.498l-0.019 0.437v-275.797c-0.161-2.71-0.252-5.878-0.252-9.068 0-90.015 72.972-162.987 162.987-162.987 2.79 0 5.564 0.070 8.32 0.209l-0.387-0.016c37.376 0-56.875 32.555-56.875 128.555v362.667c0 100.565 94.251 134.187 56.875 134.187z" />
<glyph unicode="&#xe91f;" glyph-name="time" d="M511.488 960c-282.55-0.292-511.488-229.41-511.488-512 0-282.77 229.23-512 512-512s512 229.23 512 512v0c0 0.076 0 0.166 0 0.257 0 282.628-229.116 511.744-511.744 511.744-0.27 0-0.54 0-0.81-0.001h0.042zM512 38.4c-226.216 0-409.6 183.384-409.6 409.6s183.384 409.6 409.6 409.6c226.216 0 409.6-183.384 409.6-409.6v0c0-226.216-183.384-409.6-409.6-409.6v0zM537.6 704h-76.8v-307.2l268.8-161.28 38.4 63.147-230.4 136.533z" />
<glyph unicode="&#xe920;" glyph-name="top" d="M563.115 736.768l407.851-408.107c13.137-12.992 21.272-31.018 21.272-50.943 0-19.756-7.997-37.645-20.932-50.605l-68.138-68.138c-12.998-13.055-30.985-21.133-50.859-21.133-19.725 0-37.592 7.958-50.564 20.838l-289.532 289.788-289.195-289.195c-12.998-13.055-30.985-21.133-50.859-21.133-19.725 0-37.592 7.958-50.564 20.838l0.004-0.004-0.213 0.299-68.267 67.499c-13.075 12.989-21.168 30.978-21.168 50.859 0 19.71 7.956 37.563 20.831 50.521l408.231 408.316c13.040 13.276 31.18 21.503 51.243 21.503 19.596 0 37.358-7.849 50.315-20.575l-0.011 0.010z" />
<glyph unicode="&#xe921;" glyph-name="trophy" horiz-adv-x="1152" d="M1104.017 831.982h-207.987v80.017c0 26.51-21.491 48.001-48.001 48.001v0h-544.040c-26.51 0-48.001-21.491-48.001-48.001v0-80.017h-207.987c-26.51 0-48.001-21.491-48.001-48.001v0-111.986c7.076-85.462 54.363-158.548 122.682-200.96l1.112-0.643c61.778-44.226 136.678-74.099 217.854-83.23l2.133-0.195c34.389-59.486 80.159-108.69 134.709-145.998l1.518-0.98v-144.002h-96.001c-3.854 0.457-8.318 0.718-12.843 0.718-62.746 0-113.776-50.163-115.172-112.574l-0.002-0.13v-24c0-13.255 10.745-24 24-24v0h592.041c13.255 0 24 10.745 24 24v0 24c-1.399 62.54-52.429 112.704-115.175 112.704-4.525 0-8.989-0.261-13.378-0.768l0.535 0.050h-96.001v144.002c56.068 38.356 101.826 87.64 135.041 145.086l1.137 2.132c83.314 9.166 158.252 38.973 221.451 84.147l-1.416-0.962c69.366 43.121 116.621 116.171 123.729 200.646l0.065 0.957v111.986c0 26.51-21.491 48.001-48.001 48.001v0zM198.627 574.41c-35.829 20.914-61.682 55.601-70.437 96.621l-0.172 0.964v32.016h128.402c1.638-61.997 10.873-121.145 26.808-177.479l-1.223 5.061c-31.815 11.002-59.407 25.499-84.329 43.47l0.951-0.653zM1024 671.995c-9.695-41.665-35.309-76.091-69.932-97.202l-0.677-0.383c-24.040-17.319-51.713-31.817-81.346-42.129l-2.271-0.688c14.711 51.273 23.946 110.421 25.564 171.467l0.020 0.952h128.594z" />
</font></defs></svg>
PAMapp/assets/icon/fonts/icomoon.ttf
Binary files differ
PAMapp/assets/icon/fonts/icomoon.woff
Binary files differ
PAMapp/assets/icon/selection.json
@@ -1 +1 @@
{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M587.199 55.924l-55.924-55.924h-279.618l-55.924 55.924h-195.733v111.847h782.932v-111.847z","M33.107 870.508c1.405 85.070 70.697 153.493 155.97 153.493 0.217 0 0.434-0 0.65-0.001l-0.034 0h403.396c0.182 0.001 0.398 0.001 0.614 0.001 85.338 0 154.671-68.528 155.971-153.557l0.001-0.122v-647.895h-716.569zM144.954 332.112h493.023v538.023c-0.295 24.483-20.211 44.217-44.736 44.217-0.001 0-0.002-0-0.003-0l-403.21 0c-0.101 0.001-0.22 0.001-0.34 0.001-24.499 0-44.399-19.692-44.735-44.112l-0-0.032z","M288.939 834.903c30.886 0 55.924-25.038 55.924-55.924v0-316.901c0-30.886-25.038-55.924-55.924-55.924s-55.924 25.038-55.924 55.924v0 316.901c0 30.886 25.038 55.924 55.924 55.924v0z","M493.993 834.903c30.886 0 55.924-25.038 55.924-55.924v0-316.901c0-30.886-25.038-55.924-55.924-55.924s-55.924 25.038-55.924 55.924v0 316.901c0 30.886 25.038 55.924 55.924 55.924v0z"],"attrs":[{},{},{},{}],"width":783,"grid":0,"tags":["delet"],"isMulticolor":false,"isMulticolor2":false},"attrs":[{},{},{},{}],"properties":{"order":38,"id":33,"name":"delet","prevSize":32,"code":59680},"setIdx":0,"setId":0,"iconIdx":0},{"icon":{"paths":["M563.115 223.232l407.851 408.107c13.137 12.992 21.272 31.018 21.272 50.943 0 19.756-7.997 37.645-20.932 50.605l0.001-0.001-68.139 68.139c-12.998 13.055-30.985 21.133-50.859 21.133-19.725 0-37.592-7.958-50.564-20.838l0.004 0.004-289.536-289.792-289.195 289.195c-12.998 13.055-30.985 21.133-50.859 21.133-19.725 0-37.592-7.958-50.564-20.838l0.004 0.004-0.213-0.299-68.267-67.499c-13.075-12.989-21.168-30.978-21.168-50.859 0-19.71 7.956-37.563 20.831-50.521l-0.004 0.004 408.235-408.32c13.040-13.276 31.18-21.503 51.243-21.503 19.596 0 37.358 7.849 50.315 20.575l-0.011-0.010z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["top"]},"attrs":[{}],"properties":{"order":37,"id":32,"name":"top","prevSize":32,"code":59679},"setIdx":0,"setId":0,"iconIdx":1},{"icon":{"paths":["M384 0c-0.789-0.017-1.719-0.027-2.651-0.027-34.738 0-66.285 13.665-89.558 35.914l0.049-0.046c-22.202 23.224-35.867 54.77-35.867 89.509 0 0.932 0.010 1.862 0.029 2.789l-0.002-0.138c5.836 34.821 18.412 65.879 36.393 93.049l-0.553-0.889c2.672 8.237 4.213 17.715 4.213 27.553 0 2.918-0.136 5.803-0.401 8.652l0.027-0.365h-295.68v768h295.68c0.053-1.37 0.084-2.978 0.084-4.594 0-11.101-1.431-21.868-4.119-32.126l0.196 0.88c-17.428-26.281-30.005-57.34-35.644-90.756l-0.196-1.404c-0.017-0.789-0.027-1.719-0.027-2.651 0-34.738 13.665-66.285 35.914-89.558l-0.046 0.049c23.224-22.202 54.77-35.867 89.509-35.867 0.932 0 1.862 0.010 2.789 0.029l-0.138-0.002c0.789-0.017 1.719-0.027 2.651-0.027 34.738 0 66.285 13.665 89.558 35.914l-0.049-0.046c22.202 23.224 35.867 54.77 35.867 89.509 0 0.932-0.010 1.862-0.029 2.789l0.002-0.138c-5.836 34.821-18.412 65.879-36.393 93.049l0.553-0.889c-2.672 8.237-4.213 17.715-4.213 27.553 0 2.918 0.136 5.803 0.401 8.652l-0.027-0.365h295.68v-295.68c1.37-0.053 2.978-0.084 4.594-0.084 11.101 0 21.868 1.431 32.126 4.119l-0.88-0.196c26.281 17.428 57.34 30.005 90.756 35.644l1.404 0.196c70.692 0 128-57.308 128-128s-57.308-128-128-128v0c-34.821 5.836-65.879 18.412-93.049 36.393l0.889-0.553c-8.237 2.672-17.715 4.213-27.553 4.213-2.918 0-5.803-0.136-8.652-0.401l0.365 0.027v-295.68h-295.68c-0.053-1.37-0.084-2.978-0.084-4.594 0-11.101 1.431-21.868 4.119-32.126l-0.196 0.88c17.428-26.281 30.005-57.34 35.644-90.756l0.196-1.404c0.017-0.789 0.027-1.719 0.027-2.651 0-34.738-13.665-66.285-35.914-89.558l0.046 0.049c-23.224-22.202-54.77-35.867-89.509-35.867-0.932 0-1.862 0.010-2.789 0.029l0.138-0.002z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["puzzle"]},"attrs":[{}],"properties":{"order":35,"id":31,"name":"puzzle","prevSize":32,"code":59678},"setIdx":0,"setId":0,"iconIdx":2},{"icon":{"paths":["M563.115 854.229l407.851-408.107c13.086-12.984 21.186-30.975 21.186-50.858 0-19.714-7.963-37.568-20.848-50.521l0.003 0.003-68.139-68.139c-12.998-13.055-30.985-21.133-50.859-21.133-19.725 0-37.592 7.958-50.564 20.838l0.004-0.004-289.536 289.621-289.195-289.195c-13.008-13.118-31.038-21.24-50.965-21.24-19.778 0-37.688 8.001-50.669 20.943l0.002-0.002-0.299 0.299-67.968 67.499c-13.075 12.989-21.168 30.978-21.168 50.859 0 19.71 7.956 37.563 20.831 50.521l-0.004-0.004 408.235 408.32c13.040 13.276 31.18 21.503 51.243 21.503 19.596 0 37.358-7.849 50.315-20.575l-0.011 0.010z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["down"]},"attrs":[{}],"properties":{"order":5,"id":30,"name":"down","prevSize":32,"code":59648},"setIdx":0,"setId":0,"iconIdx":3},{"icon":{"paths":["M944.305 432.195h-352.501v-352.501c-0.083-44.019-35.777-79.674-79.803-79.695l-0.002-0c-43.994 0.083-79.632 35.735-79.695 79.725l-0 0.006v352.464h-352.537c-44.055 0-79.768 35.713-79.768 79.768s35.713 79.768 79.768 79.768v0h352.501v352.574c0 44.055 35.713 79.768 79.768 79.768s79.768-35.713 79.768-79.768l-0 0v-352.574h352.501c44.055 0 79.768-35.713 79.768-79.768s-35.713-79.768-79.768-79.768l0 0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["add"]},"attrs":[{}],"properties":{"order":6,"id":29,"name":"add","prevSize":32,"code":59649},"setIdx":0,"setId":0,"iconIdx":4},{"icon":{"paths":["M358.4 0c-0.076-0-0.166-0-0.256-0-197.797 0-358.144 160.347-358.144 358.144 0 0.090 0 0.18 0 0.27l-0-0.014c0 268.8 358.4 665.6 358.4 665.6s358.4-396.8 358.4-665.6c0-0.076 0-0.166 0-0.256 0-197.797-160.347-358.144-358.144-358.144-0.090 0-0.18 0-0.27 0l0.014-0zM358.4 486.4c-70.692 0-128-57.308-128-128s57.308-128 128-128c70.692 0 128 57.308 128 128v0c0 70.692-57.308 128-128 128h0z"],"attrs":[{}],"width":717,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["address"]},"attrs":[{}],"properties":{"order":11,"id":28,"name":"address","prevSize":32,"code":59650},"setIdx":0,"setId":0,"iconIdx":5},{"icon":{"paths":["M447.993 511.981c141.38 0 255.991-114.611 255.991-255.991s-114.611-255.991-255.991-255.991c-141.38 0-255.991 114.611-255.991 255.991v-0c0 141.38 114.611 255.991 255.991 255.991v-0zM639.585 577.164l-95.609 382.81-63.988-272.006 63.988-111.998h-191.965l63.988 111.998-63.988 272.006-95.609-382.773c-142.815 6.542-256.155 123.796-256.401 267.577l-0 0.024v179.197h895.986v-179.197c-0.246-143.806-113.586-261.059-255.814-267.58l-0.587-0.021z"],"attrs":[{}],"width":896,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["agent"]},"attrs":[{}],"properties":{"order":13,"id":27,"name":"agent","prevSize":32,"code":59651},"setIdx":0,"setId":0,"iconIdx":6},{"icon":{"paths":["M889.022 7.054l-831.526 383.772c-34.358 15.411-57.857 49.317-57.857 88.711 0 53.291 43.002 96.539 96.2 96.936l0.038 0h351.649v351.801c0.219 53.372 43.536 96.553 96.938 96.553 39.559 0 73.583-23.696 88.654-57.668l0.245-0.618 383.621-831.564c3.826-10.169 6.041-21.922 6.041-34.192 0-55.109-44.674-99.783-99.783-99.783-12.281 0-24.044 2.219-34.909 6.277l0.689-0.226z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["arrow"]},"attrs":[{}],"properties":{"order":14,"id":26,"name":"arrow","prevSize":32,"code":59652},"setIdx":0,"setId":0,"iconIdx":7},{"icon":{"paths":["M448.963 503.181c138.95 0 251.59-112.641 251.59-251.59s-112.641-251.59-251.59-251.59v-0c-138.95 0-251.59 112.641-251.59 251.59s112.641 251.59 251.59 251.59v0zM448.963 119.488v0c72.958-0 132.103 59.144 132.103 132.103s-59.144 132.103-132.103 132.103c-72.958 0-132.103-59.144-132.103-132.103 0-0.013 0-0.026 0-0.039l-0 0.002c-0-72.938 59.128-132.065 132.065-132.065 0.013 0 0.026 0 0.039 0l-0.002-0z","M448.963 566.069c-167.938 0-448.963 50.013-448.963 217.355v240.576h893.721v-240.576c0-167.305-276.82-217.355-444.758-217.355zM774.233 904.475h-654.931v-121.051c0-40.263 142.671-97.83 329.475-97.83v0c186.804 0 325.27 57.567 325.27 97.83z"],"attrs":[{},{}],"width":894,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["avatar"]},"attrs":[{},{}],"properties":{"order":15,"id":25,"name":"avatar","prevSize":32,"code":59653},"setIdx":0,"setId":0,"iconIdx":8},{"icon":{"paths":["M908.486 692.817c-1.1-0.834-112.139-84.872-112.139-362.886 0-182.216-147.715-329.931-329.931-329.931s-329.931 147.715-329.931 329.931v0c0 278.014-111.039 362.052-111.191 362.242-15.359 10.347-25.326 27.674-25.326 47.328 0 31.414 25.465 56.881 56.878 56.885l819.14 0c25.031-0.194 46.179-16.601 53.474-39.229l0.112-0.401c1.696-5.184 2.675-11.15 2.675-17.344 0-19.089-9.291-36.008-23.598-46.482l-0.162-0.113zM174.901 682.616c47.923-94.131 76-205.282 76-322.99 0-10.443-0.221-20.835-0.659-31.17l0.050 1.475c0-119.383 96.779-216.162 216.162-216.162s216.162 96.779 216.162 216.162l0 0c-0.387 8.856-0.608 19.244-0.608 29.684 0 117.708 28.062 228.862 77.862 327.136l-1.9-4.135z","M573.853 872.459c-8.181-4.825-18.026-7.675-28.536-7.675-20.904 0-39.175 11.276-49.061 28.077l-0.145 0.266c-6.013 10.266-16.989 17.051-29.55 17.051-6.311 0-12.222-1.713-17.293-4.699l0.16 0.087c-5.181-3.025-9.376-7.22-12.314-12.241l-0.086-0.16c-10.022-17.142-28.338-28.474-49.3-28.474-31.434 0-56.916 25.482-56.916 56.916 0 10.472 2.828 20.283 7.762 28.711l-0.145-0.269c26.074 44.41 73.596 73.753 127.972 73.753s101.897-29.344 127.594-73.059l0.377-0.694c4.808-8.17 7.648-17.998 7.648-28.489 0-20.831-11.197-39.047-27.901-48.958l-0.263-0.144z"],"attrs":[{},{}],"width":932,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["bell"]},"attrs":[{},{}],"properties":{"order":16,"id":24,"name":"bell","prevSize":32,"code":59654},"setIdx":0,"setId":0,"iconIdx":9},{"icon":{"paths":["M307.2 460.8h-102.4v102.4h102.4zM512 460.8h-102.4v102.4h102.4zM716.8 460.8h-102.4v102.4h102.4zM819.2 102.4h-51.2v-102.4h-102.4v102.4h-409.6v-102.4h-102.4v102.4h-51.2c-56.277 0.024-101.889 45.651-101.889 101.931 0 0.165 0 0.33 0.001 0.495l-0-0.025-0.512 716.8c0 56.554 45.846 102.4 102.4 102.4v0h716.8c56.486-0.169 102.231-45.914 102.4-102.384l0-0.016v-716.8c-0.169-56.486-45.914-102.231-102.384-102.4l-0.016-0zM819.2 921.6h-716.8v-563.2h716.8z"],"attrs":[{}],"width":922,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["calender"]},"attrs":[{}],"properties":{"order":17,"id":23,"name":"calender","prevSize":32,"code":59655},"setIdx":0,"setId":0,"iconIdx":10},{"icon":{"paths":["M910.222 113.778v796.444h-796.444v-796.444h796.444zM910.222 0h-796.444c-62.76 0.193-113.584 51.018-113.778 113.759l-0 0.019v796.444c0.193 62.76 51.018 113.584 113.759 113.778l0.019 0h796.444c62.76-0.193 113.584-51.018 113.778-113.759l0-0.019v-796.444c-0.193-62.76-51.018-113.584-113.759-113.778l-0.019-0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["checkbox"]},"attrs":[{}],"properties":{"order":18,"id":22,"name":"checkbox","prevSize":32,"code":59656},"setIdx":0,"setId":0,"iconIdx":11},{"icon":{"paths":["M910.222 0h-796.444c-62.838 0-113.778 50.94-113.778 113.778v0 796.444c0 62.838 50.94 113.778 113.778 113.778v0h796.444c62.838 0 113.778-50.94 113.778-113.778v0-796.444c0-62.838-50.94-113.778-113.778-113.778v0zM398.222 796.444l-284.444-284.444 80.213-80.213 204.231 203.662 431.787-431.787 80.213 80.782z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["checkbox-1"]},"attrs":[{}],"properties":{"order":19,"id":21,"name":"checkbox-1","prevSize":32,"code":59657},"setIdx":0,"setId":0,"iconIdx":12},{"icon":{"paths":["M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512v0c0 282.77-229.23 512-512 512h-0zM276.821 547.072l279.723 279.723c8.937 8.992 21.312 14.557 34.987 14.557s26.050-5.565 34.984-14.554l0.002-0.002 35.115-35.115c8.992-8.937 14.557-21.312 14.557-34.987s-5.565-26.050-14.554-34.984l-0.002-0.002-209.749-209.749 209.749-209.749c8.992-8.937 14.557-21.312 14.557-34.987s-5.565-26.050-14.554-34.984l-0.002-0.002-35.115-35.115c-8.937-8.992-21.312-14.557-34.987-14.557s-26.050 5.565-34.984 14.554l-0.002 0.002-279.723 279.765c-8.993 8.976-14.557 21.385-14.557 35.093s5.564 26.118 14.556 35.093l0.001 0.001z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["circle-left"]},"attrs":[{}],"properties":{"order":20,"id":20,"name":"circle-left","prevSize":32,"code":59658},"setIdx":0,"setId":0,"iconIdx":13},{"icon":{"paths":["M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512v0c0 282.77 229.23 512 512 512v0zM747.136 547.115l-279.723 279.723c-8.937 8.992-21.312 14.557-34.987 14.557s-26.050-5.565-34.984-14.554l-0.002-0.002-35.115-35.115c-8.992-8.937-14.557-21.312-14.557-34.987s5.565-26.050 14.554-34.984l0.002-0.002 209.749-209.749-209.792-209.792c-8.992-8.937-14.557-21.312-14.557-34.987s5.565-26.050 14.554-34.984l0.002-0.002 35.115-35.115c8.937-8.992 21.312-14.557 34.987-14.557s26.050 5.565 34.984 14.554l0.002 0.002 279.723 279.723c9.019 8.98 14.6 21.406 14.6 35.136 0 13.709-5.564 26.118-14.556 35.093l-0.001 0.001z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["circle-right"]},"attrs":[{}],"properties":{"order":21,"id":19,"name":"circle-right","prevSize":32,"code":59659},"setIdx":0,"setId":0,"iconIdx":14},{"icon":{"paths":["M843.123 30.996l-331.098 331.098-331.098-331.098c-19.185-19.146-45.668-30.985-74.916-30.985s-55.731 11.839-74.918 30.987l0.002-0.002c-19.117 19.18-30.937 45.643-30.937 74.868s11.82 55.687 30.94 74.87l-0.003-0.003 331.050 331.098-331.050 331.244c-19.191 19.173-31.063 45.67-31.063 74.94 0 58.504 47.427 105.93 105.93 105.93 29.234 0 55.702-11.842 74.868-30.991l-0.001 0.001 331.098-331.098 331.196 331.147c19.046 18.46 45.049 29.839 73.71 29.839 58.521 0 105.961-47.44 105.961-105.961 0-28.661-11.379-54.663-29.865-73.737l0.027 0.028-331.196-331.196 331.098-331.098c18.46-19.046 29.839-45.049 29.839-73.71 0-58.521-47.44-105.961-105.961-105.961-28.661 0-54.663 11.379-73.737 29.865l0.028-0.027z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["close"]},"attrs":[{}],"properties":{"order":22,"id":18,"name":"close","prevSize":32,"code":59660},"setIdx":0,"setId":0,"iconIdx":15},{"icon":{"paths":["M895.851 0h-767.872c-70.681 0-127.979 57.298-127.979 127.979v0 575.904c0 70.681 57.298 127.979 127.979 127.979v0h191.968v167.993c-0 0.025-0 0.056-0 0.086 0 13.288 10.772 24.060 24.060 24.060 5.399 0 10.382-1.778 14.397-4.781l-0.063 0.045 249.558-187.403h287.952c70.681 0 127.979-57.298 127.979-127.979v0-575.904c0-70.681-57.298-127.979-127.979-127.979l0 0zM604.699 575.904h-371.821v-127.979h371.821zM791.42 296.697h-558.84v-127.979h558.84z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["comment"]},"attrs":[{}],"properties":{"order":23,"id":17,"name":"comment","prevSize":32,"code":59661},"setIdx":0,"setId":0,"iconIdx":16},{"icon":{"paths":["M646.741 485.035v-323.371l-161.707-161.664-161.664 161.664v107.819h-323.371v754.517h970.112v-538.965zM215.595 916.224h-107.819v-107.819h107.819zM215.595 700.629h-107.819v-107.776h107.819zM215.595 485.035h-107.819v-107.776h107.819zM538.965 916.181h-107.819v-107.776h107.776zM538.965 700.587h-107.819v-107.733h107.776zM538.965 484.992h-107.819v-107.733h107.776zM538.965 269.397h-107.819v-107.733h107.776zM862.336 916.139h-107.819v-107.733h107.776zM862.336 700.544h-107.819v-107.691h107.776z"],"attrs":[{}],"width":970,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["company"]},"attrs":[{}],"properties":{"order":7,"id":16,"name":"company","prevSize":32,"code":59662},"setIdx":0,"setId":0,"iconIdx":17},{"icon":{"paths":["M864 0c88.366 0 160 71.634 160 160 0 36.2-12.022 69.593-32.292 96.402l0.292-0.402-64 64-224-224 64-64c26.324-19.976 59.637-32 95.758-32 0.085 0 0.17 0 0.255 0l-0.013-0zM64 736l-64 288 288-64 592.171-592-224.171-224.128zM715.563 363.563l-448 448-55.168-55.125 448-448z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["edit"]},"attrs":[{}],"properties":{"order":8,"id":14,"name":"edit","prevSize":32,"code":59663},"setIdx":0,"setId":0,"iconIdx":18},{"icon":{"paths":["M1343.806 478.457c-9.762-19.575-244.11-478.457-667.948-478.457s-658.136 458.883-667.948 478.457c-4.994 9.78-7.92 21.332-7.92 33.568s2.926 23.787 8.117 33.994l-0.197-0.427c10.013 19.575 244.11 478.407 667.948 478.407s658.186-458.832 667.948-478.407c4.994-9.78 7.92-21.332 7.92-33.568s-2.926-23.787-8.117-33.994l0.197 0.427zM675.858 873.96c-272.446 0-457.030-266.138-514.553-361.809 57.523-95.671 242.107-361.809 514.553-361.809s457.13 266.288 514.553 361.809c-57.523 95.521-242.157 361.659-514.553 361.659z","M675.858 211.619c-165.896 0-300.381 134.485-300.381 300.381s134.485 300.381 300.381 300.381c165.896 0 300.381-134.485 300.381-300.381v0c-0.199-165.816-134.565-300.182-300.362-300.381l-0.020-0zM675.858 662.191c-82.948 0-150.191-67.243-150.191-150.191s67.243-150.191 150.191-150.191c82.948 0 150.191 67.243 150.191 150.191v0c0 82.948-67.243 150.191-150.191 150.191v0z"],"attrs":[{},{}],"width":1352,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["eye"]},"attrs":[{},{}],"properties":{"order":34,"id":13,"name":"eye","prevSize":32,"code":59664},"setIdx":0,"setId":0,"iconIdx":19},{"icon":{"paths":["M1123.235 921.346l-217.634-208.847c5.132 1.805 11.050 2.848 17.211 2.848 15.851 0 30.089-6.902 39.875-17.864l0.046-0.052c37.481-38.161 71.036-80.412 99.866-125.951l1.835-3.103c5.666-8.976 9.029-19.899 9.029-31.606 0-11.056-2.999-21.412-8.227-30.299l0.153 0.28c-7.952-13.359-194.813-327.802-528.499-327.802h-1.312c-35.996 0.005-71.127 3.696-105.040 10.716l3.34-0.578c-18.092 3.787-32.895 15.391-40.954 31.036l-0.156 0.333-212.306-203.798c-10.7-10.287-25.264-16.622-41.308-16.622-32.938 0-59.64 26.702-59.64 59.64 0 16.894 7.024 32.148 18.312 42.999l0.020 0.019 162.768 156.208c-5.287 1.648-9.884 3.809-14.111 6.501l0.235-0.14c-95.97 62.868-175.328 142.911-235.543 236.445l-1.89 3.135c-5.835 9.056-9.303 20.115-9.303 31.985 0 11.035 2.997 21.371 8.222 30.236l-0.152-0.279c7.952 13.359 194.813 327.802 529.175 327.802 107.604-0.9 207.542-32.95 291.456-87.555l-2.1 1.281c1.312-0.835 2.385-1.908 3.618-2.863l210.398 201.929c10.7 10.287 25.264 16.622 41.308 16.622 32.938 0 59.64-26.702 59.64-59.64 0-16.894-7.024-32.148-18.312-42.999l-0.020-0.019zM536.729 298.223c210.716 0 354.679 168.573 405.529 238.546-20.464 28.603-41.631 53.756-64.584 77.15l0.097-0.1c-10.193 10.583-16.471 24.997-16.471 40.878 0 6.315 0.993 12.399 2.831 18.103l-0.116-0.417-385.213-369.747c17.213-2.809 37.053-4.414 57.267-4.414 0.232 0 0.464 0 0.696 0.001l-0.036-0zM480.591 505.758c6.937-5.309 12.58-11.943 16.621-19.556l0.156-0.323 89.972 86.354c-14.804 12.070-33.904 19.382-54.711 19.382-7.266 0-14.323-0.892-21.069-2.571l0.598 0.126c-21.583-3.776-39.081-18.284-47.003-37.713l-0.149-0.414c-0.942-3.344-1.484-7.185-1.484-11.153 0-13.911 6.658-26.266 16.961-34.054l0.107-0.078zM536.729 775.315c-210.716 0-354.4-168.215-405.211-238.546 49.32-68.027 109.037-125.034 177.432-169.904l2.551-1.571c11.947-7.883 20.761-19.68 24.668-33.535l0.101-0.418 78.482 75.301c-2.135 1.142-3.89 2.209-5.584 3.359l0.217-0.139c-39.593 30.204-64.883 77.409-64.883 130.521 0 16.497 2.44 32.424 6.979 47.441l-0.301-1.159c21.213 61.143 72.589 106.713 135.851 119.32l1.154 0.192c13.578 3.209 29.168 5.048 45.187 5.048 51.658 0 98.848-19.131 134.872-50.694l-0.235 0.202c1.923-1.788 3.692-3.67 5.327-5.665l0.080-0.1 67.389 64.686c-58.645 34.055-128.851 54.577-203.762 55.657l-0.314 0.004z"],"attrs":[{}],"width":1142,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["eye-1"]},"attrs":[{}],"properties":{"order":24,"id":12,"name":"eye-1","prevSize":32,"code":59665},"setIdx":0,"setId":0,"iconIdx":20},{"icon":{"paths":["M470.315 379.861v136.192c52.181 11.819 98.603 31.189 147.2 44.587v-136.405c-52.011-11.605-98.773-30.976-147.2-44.416zM916.907 133.888c-67.939 35.792-147.729 58.874-232.376 63.923l-1.608 0.077c-107.008-0.213-195.584-69.76-330.368-69.76-0.457-0.002-0.998-0.003-1.539-0.003-48.265 0-94.476 8.794-137.118 24.867l2.678-0.885c4.705-11.905 7.433-25.695 7.433-40.122 0-61.856-50.144-112-112-112s-112 50.144-112 112c0 37.882 18.807 71.371 47.593 91.64l0.355 0.237v772.267c-0 0.038-0 0.083-0 0.128 0 26.439 21.433 47.872 47.872 47.872 0.045 0 0.090-0 0.135-0l-0.007 0h32c0.038 0 0.083 0 0.128 0 26.439 0 47.872-21.433 47.872-47.872 0-0.045-0-0.090-0-0.135l0 0.007v-188.928c64.268-28.012 139.144-44.31 217.827-44.31 3.851 0 7.693 0.039 11.525 0.117l-0.573-0.009c107.179 0 195.584 69.589 330.368 69.589 92.324-0.765 177.356-31.352 246.099-82.581l-1.107 0.789c16.771-11.705 27.605-30.909 27.605-52.644 0-0.047-0-0.094-0-0.141l0 0.007v-486.144c-0.078-35.287-28.702-63.863-64-63.863-9.72 0-18.935 2.167-27.186 6.044l0.391-0.165zM323.157 651.008c-54.473 5.68-104.346 17.389-151.58 34.589l4.38-1.394v-140.8c42.966-16.959 92.83-29.258 144.754-34.612l2.446-0.204zM911.957 382.208c-42.344 20.263-91.614 36.787-143.125 47.106l-4.075 0.681v141.867c55.26-7.286 105.051-25.69 148.773-52.924l-1.573 0.913v140.8c-41.573 28.653-91.64 48.031-145.739 54.055l-1.461 0.132v-142.976c-14.605 2.234-31.455 3.51-48.603 3.51-35.177 0-69.1-5.37-100.994-15.334l2.396 0.645v134.912c-39.685-15.094-88.92-29.775-139.395-41.183l-7.805-1.483v-136.875c-28.906-6.694-62.098-10.532-96.186-10.532-17.976 0-35.702 1.067-53.12 3.141l2.106-0.204v-140.032c-55.565 9.583-104.997 24.104-151.88 43.532l4.68-1.718v-140.8c42.614-19.83 92.097-35.166 143.91-43.55l3.29-0.439v142.976c14.417-2.165 31.054-3.401 47.98-3.401 35.4 0 69.537 5.408 101.63 15.442l-2.41-0.649v-134.741c39.858 15.224 89.098 29.908 139.605 41.235l7.595 1.431v136.704c26.239 6.45 56.363 10.149 87.35 10.149 21.13 0 41.859-1.72 62.054-5.028l-2.204 0.298v-143.872c55.763-10.757 105.071-26.328 151.746-46.79l-4.546 1.777z"],"attrs":[{}],"width":1008,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["flag"]},"attrs":[{}],"properties":{"order":25,"id":11,"name":"flag","prevSize":32,"code":59666},"setIdx":0,"setId":0,"iconIdx":21},{"icon":{"paths":["M460.771 358.396h102.293v-102.251h-102.293zM511.917 921.749c-0.012 0-0.027 0-0.041 0-226.23 0-409.625-183.395-409.625-409.625s183.395-409.625 409.625-409.625c226.215 0 409.601 183.372 409.625 409.581l0 0.002c0 226.23-183.395 409.625-409.625 409.625v0zM511.876-0.207c-282.717 0.071-511.876 229.274-511.876 512 0 282.77 229.23 512 512 512 282.697 0 511.882-229.113 512-511.782l0-0.011c0-282.77-229.23-512-512-512v0zM460.854 768.021h102.21v-307.25h-102.21z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["information"]},"attrs":[{}],"properties":{"order":26,"id":10,"name":"information","prevSize":32,"code":59667},"setIdx":0,"setId":0,"iconIdx":22},{"icon":{"paths":["M22.52 566.594l435.159 434.886c13.85 13.942 33.032 22.572 54.23 22.572s40.38-8.63 54.226-22.567l0.004-0.004 72.291-72.291c13.931-13.855 22.553-33.035 22.553-54.23s-8.622-40.375-22.549-54.227l-0.003-0.003-308.501-308.41 308.365-308.365c13.931-13.855 22.553-33.035 22.553-54.23s-8.622-40.375-22.549-54.227l-0.003-0.003-71.973-72.792c-13.85-13.942-33.032-22.572-54.23-22.572s-40.38 8.63-54.226 22.567l-0.004 0.004-435.023 434.932c-14.154 13.904-22.927 33.246-22.927 54.637 0 21.234 8.643 40.449 22.604 54.319l0.004 0.004z"],"attrs":[{}],"width":661,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["left"]},"attrs":[{}],"properties":{"order":27,"id":9,"name":"left","prevSize":32,"code":59668},"setIdx":0,"setId":0,"iconIdx":23},{"icon":{"paths":["M558.549 0.469l-465.451-0.469c-51.358 0.145-92.954 41.74-93.099 93.085l-0 0.014v837.803c0.145 51.358 41.74 92.954 93.085 93.099l0.014 0h465.451c51.358-0.145 92.954-41.74 93.099-93.085l0-0.014v-837.803c-0.194-51.199-41.744-92.629-92.97-92.629-0.045 0-0.090 0-0.136 0l0.007-0zM558.549 837.803h-465.451v-651.605h465.451z"],"attrs":[{}],"width":652,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["phone"]},"attrs":[{}],"properties":{"order":28,"id":8,"name":"phone","prevSize":32,"code":59669},"setIdx":0,"setId":0,"iconIdx":24},{"icon":{"paths":["M638.368 566.619l-435.042 434.86c-13.855 13.932-33.037 22.554-54.232 22.554s-40.377-8.622-54.229-22.55l-0.003-0.003-72.295-72.295c-13.932-13.855-22.554-33.037-22.554-54.232s8.622-40.377 22.55-54.229l0.003-0.003 308.378-308.378-308.378-308.378c-13.932-13.855-22.554-33.037-22.554-54.232s8.622-40.377 22.55-54.229l0.003-0.003 71.976-72.795c13.855-13.932 33.037-22.554 54.232-22.554s40.377 8.622 54.229 22.55l0.003 0.003 435.042 434.723c14.1 13.896 22.836 33.203 22.836 54.549 0 21.189-8.607 40.368-22.515 54.232l-0.002 0.002z"],"attrs":[{}],"width":661,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["right"]},"attrs":[{}],"properties":{"order":29,"id":7,"name":"right","prevSize":32,"code":59670},"setIdx":0,"setId":0,"iconIdx":25},{"icon":{"paths":["M227.579 579.116v227.579l398.211 217.305 398.211-217.305v-227.579l-398.211 217.358zM625.789-0l-625.789 341.316 625.789 341.316 512-279.311v393.1h113.789v-455.105z"],"attrs":[{}],"width":1252,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["school"]},"attrs":[{}],"properties":{"order":30,"id":6,"name":"school","prevSize":32,"code":59671},"setIdx":0,"setId":0,"iconIdx":26},{"icon":{"paths":["M1009.922 885.314l-199.391-199.391c-8.672-8.647-20.639-13.993-33.854-13.993-0.096 0-0.192 0-0.288 0.001l0.015-0h-32.592c54.858-69.783 87.982-158.908 87.982-255.769 0-229.618-186.142-415.76-415.76-415.76s-415.76 186.142-415.76 415.76c0 229.618 186.142 415.76 415.76 415.76 96.861 0 185.986-33.123 256.666-88.661l-0.897 0.679v32.464c-0 0.081-0.001 0.177-0.001 0.273 0 13.216 5.346 25.182 13.994 33.855l-0.001-0.001 199.391 199.391c8.657 8.711 20.645 14.103 33.893 14.103s25.236-5.392 33.891-14.1l0.002-0.002 56.609-56.609c8.774-8.732 14.204-20.817 14.204-34.171 0-13.184-5.292-25.131-13.869-33.834l0.006 0.006zM415.973 672.016c-141.361 0-255.957-114.596-255.957-255.957s114.596-255.957 255.957-255.957c141.361 0 255.957 114.596 255.957 255.957v0c-0.049 141.325-114.626 255.872-255.957 255.872l-0-0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["search"]},"attrs":[{}],"properties":{"order":31,"id":5,"name":"search","prevSize":32,"code":59672},"setIdx":0,"setId":0,"iconIdx":27},{"icon":{"paths":["M1060.923 354.485h-362.082l-110.034-328.386c-5.769-15.366-20.337-26.102-37.413-26.102s-31.644 10.737-37.322 25.828l-0.091 0.275-110.034 328.386h-364.574c-21.717 0.069-39.304 17.656-39.374 39.367l-0 0.007c-0 0.051-0.001 0.111-0.001 0.172 0 2.3 0.268 4.537 0.775 6.682l-0.039-0.196c1.082 11.588 7.245 21.545 16.211 27.732l0.127 0.083 297.753 209.856-114.363 332.062c-1.356 3.823-2.14 8.232-2.14 12.824 0 12.816 6.104 24.206 15.563 31.422l0.096 0.070c5.913 5.322 13.556 8.829 21.991 9.588l0.147 0.011c9.263-0.701 17.658-3.918 24.649-8.961l-0.142 0.098 290.483-207.038 290.483 207.038c6.807 5.047 15.229 8.284 24.374 8.857l0.132 0.007c8.688-0.56 16.438-4.176 22.272-9.773l-0.012 0.012c9.602-7.187 15.75-18.533 15.75-31.315 0-4.66-0.817-9.13-2.316-13.273l0.086 0.272-114.159-331.898 295.139-211.694 7.148-6.167c7.108-6.72 11.823-15.905 12.772-26.182l0.012-0.163c-1.204-22.063-19.388-39.497-41.643-39.497-0.078 0-0.156 0-0.234 0.001l0.012-0z"],"attrs":[{}],"width":1103,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["star"]},"attrs":[{}],"properties":{"order":32,"id":4,"name":"star","prevSize":32,"code":59673},"setIdx":0,"setId":0,"iconIdx":28},{"icon":{"paths":["M264.124 1024l-3.988-0.315c-45.874-4.728-81.349-43.172-81.349-89.9 0-9.949 1.608-19.523 4.579-28.476l-0.183 0.638 89.58-260.661-235.092-165.554c-19.618-13.599-33.145-34.797-36.332-59.244l-0.046-0.43c-0.823-4.244-1.294-9.125-1.294-14.115 0-0.018 0-0.036 0-0.054l-0 0.003c0.197-48.36 39.308-87.52 87.63-87.796l0.026-0h289.553l86.747-258.842c12.356-34.779 44.982-59.235 83.32-59.235 37.789 0 70.029 23.761 82.593 57.157l0.201 0.608 87.272 260.311h287.525c0.011-0 0.025-0 0.038-0 47.863 0 86.99 37.407 89.741 84.58l0.011 0.243v3.848l-0.315 3.883c-2.124 22.565-12.304 42.418-27.594 56.944l-0.039 0.036-11.963 10.074-233.098 167.233 89.755 261.011c3.161 8.633 4.99 18.602 4.99 28.997 0 27.516-12.812 52.041-32.795 67.933l-0.177 0.136c-13.364 11.803-30.658 19.438-49.692 20.728l-0.258 0.014-3.183 0.21-3.148-0.175c-18.973-1.079-36.226-7.647-50.416-18.125l0.256 0.181-229.565-163.77-230.369 164.12c-13.682 9.851-30.475 16.214-48.672 17.473l-0.298 0.017zM812.414 940.051v0.28zM282.243 939.876v0zM838.403 920.498v0zM139.39 423.032l258.003 181.889-97.94 285.006 247.929-176.642 247.649 176.502-97.94-284.586 254.015-182.169h-309.246l-94.442-282.243-94.722 282.243zM1004.972 423.032v0zM97.346 393.405l0.56 0.42z"],"attrs":[{}],"width":1095,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["star-1"]},"attrs":[{}],"properties":{"order":33,"id":3,"name":"star-1","prevSize":32,"code":59674},"setIdx":0,"setId":0,"iconIdx":29},{"icon":{"paths":["M662.613 361.941c-7.552-20.181 201.344-206.72 79.531-357.888-28.501-35.328-125.227 169.259-262.528 261.845-75.776 51.2-252.075 159.872-252.075 219.989v389.461c0 72.32 279.552 148.864 491.989 148.864 77.867 0 190.677-487.851 190.677-565.333s-240.128-76.459-247.467-96.725zM170.624 367.36c-0.681-0.010-1.486-0.016-2.292-0.016-93.126 0-168.619 75.493-168.619 168.619 0 3.187 0.088 6.354 0.263 9.498l-0.019-0.437v275.797c-0.161 2.71-0.252 5.878-0.252 9.068 0 90.015 72.972 162.987 162.987 162.987 2.79 0 5.564-0.070 8.32-0.209l-0.387 0.016c37.376 0-56.875-32.555-56.875-128.555v-362.667c0-100.565 94.251-134.187 56.875-134.187z"],"attrs":[{}],"width":910,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["thumbs-up"]},"attrs":[{}],"properties":{"order":12,"id":2,"name":"thumbs-up","prevSize":32,"code":59675},"setIdx":0,"setId":0,"iconIdx":30},{"icon":{"paths":["M511.488 0c-282.55 0.292-511.488 229.41-511.488 512 0 282.77 229.23 512 512 512s512-229.23 512-512l-0 0c0-0.076 0-0.166 0-0.257 0-282.628-229.116-511.744-511.744-511.744-0.27 0-0.54 0-0.81 0.001l0.042-0zM512 921.6c-226.216 0-409.6-183.384-409.6-409.6s183.384-409.6 409.6-409.6c226.216 0 409.6 183.384 409.6 409.6v0c0 226.216-183.384 409.6-409.6 409.6v0zM537.6 256h-76.8v307.2l268.8 161.28 38.4-63.147-230.4-136.533z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["time"]},"attrs":[{}],"properties":{"order":9,"id":1,"name":"time","prevSize":32,"code":59676},"setIdx":0,"setId":0,"iconIdx":31},{"icon":{"paths":["M1104.017 128.018h-207.987v-80.017c0-26.51-21.491-48.001-48.001-48.001v0h-544.040c-26.51 0-48.001 21.491-48.001 48.001v0 80.017h-207.987c-26.51 0-48.001 21.491-48.001 48.001v0 111.986c7.076 85.462 54.363 158.548 122.682 200.96l1.112 0.643c61.778 44.226 136.678 74.099 217.854 83.23l2.133 0.195c34.389 59.486 80.159 108.69 134.709 145.998l1.518 0.98v144.002h-96.001c-3.854-0.457-8.318-0.718-12.843-0.718-62.746 0-113.776 50.163-115.172 112.574l-0.002 0.13v24c0 13.255 10.745 24 24 24v0h592.041c13.255 0 24-10.745 24-24v0-24c-1.399-62.54-52.429-112.704-115.175-112.704-4.525 0-8.989 0.261-13.378 0.768l0.535-0.050h-96.001v-144.002c56.068-38.356 101.826-87.64 135.041-145.086l1.137-2.132c83.314-9.166 158.252-38.973 221.451-84.147l-1.416 0.962c69.366-43.121 116.621-116.171 123.729-200.646l0.065-0.957v-111.986c0-26.51-21.491-48.001-48.001-48.001v0zM198.627 385.59c-35.829-20.914-61.682-55.601-70.437-96.621l-0.172-0.964v-32.016h128.402c1.638 61.997 10.873 121.145 26.808 177.479l-1.223-5.061c-31.815-11.002-59.407-25.499-84.329-43.47l0.951 0.653zM1024 288.005c-9.695 41.665-35.309 76.091-69.932 97.202l-0.677 0.383c-24.040 17.319-51.713 31.817-81.346 42.129l-2.271 0.688c14.711-51.273 23.946-110.421 25.564-171.467l0.020-0.952h128.594z"],"attrs":[{}],"width":1152,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["trophy"]},"attrs":[{}],"properties":{"order":10,"id":0,"name":"trophy","prevSize":32,"code":59677},"setIdx":0,"setId":0,"iconIdx":32}],"height":1024,"metadata":{"name":"icomoon"},"preferences":{"showGlyphs":true,"showCodes":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"icomoon","majorVersion":1,"minorVersion":0},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"name":"icomoon","classSelector":".icon"},"historySize":50,"gridSize":16}}
{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M947.023 423.724h-834.737c-42.513 0-76.977 34.464-76.977 76.977s34.464 76.977 76.977 76.977h834.737c42.513 0 76.977-34.464 76.977-76.977s-34.464-76.977-76.977-76.977h0z"],"attrs":[{}],"width":1059,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["decrease"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":2,"id":34,"name":"decrease","prevSize":32,"code":59648},"setIdx":0,"setId":2,"iconIdx":0},{"icon":{"paths":["M944.305 432.195h-352.501v-352.501c-0.083-44.019-35.777-79.674-79.803-79.695l-0.002-0c-43.994 0.083-79.632 35.735-79.695 79.725l-0 0.006v352.464h-352.537c-44.055 0-79.768 35.713-79.768 79.768s35.713 79.768 79.768 79.768v0h352.501v352.574c0 44.055 35.713 79.768 79.768 79.768s79.768-35.713 79.768-79.768l-0 0v-352.574h352.501c44.055 0 79.768-35.713 79.768-79.768s-35.713-79.768-79.768-79.768l0 0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["add"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":3,"id":33,"name":"add","prevSize":32,"code":59649},"setIdx":0,"setId":2,"iconIdx":1},{"icon":{"paths":["M358.4 0c-0.076-0-0.166-0-0.256-0-197.797 0-358.144 160.347-358.144 358.144 0 0.090 0 0.18 0 0.27l-0-0.014c0 268.8 358.4 665.6 358.4 665.6s358.4-396.8 358.4-665.6c0-0.076 0-0.166 0-0.256 0-197.797-160.347-358.144-358.144-358.144-0.090 0-0.18 0-0.27 0l0.014-0zM358.4 486.4c-70.692 0-128-57.308-128-128s57.308-128 128-128c70.692 0 128 57.308 128 128v0c0 70.692-57.308 128-128 128h0z"],"attrs":[{}],"width":717,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["address"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":4,"id":32,"name":"address","prevSize":32,"code":59650},"setIdx":0,"setId":2,"iconIdx":2},{"icon":{"paths":["M447.993 511.981c141.38 0 255.991-114.611 255.991-255.991s-114.611-255.991-255.991-255.991c-141.38 0-255.991 114.611-255.991 255.991v-0c0 141.38 114.611 255.991 255.991 255.991v-0zM639.585 577.164l-95.609 382.81-63.988-272.006 63.988-111.998h-191.965l63.988 111.998-63.988 272.006-95.609-382.773c-142.815 6.542-256.155 123.796-256.401 267.577l-0 0.024v179.197h895.986v-179.197c-0.246-143.806-113.586-261.059-255.814-267.58l-0.587-0.021z"],"attrs":[{}],"width":896,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["agent"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":5,"id":31,"name":"agent","prevSize":32,"code":59651},"setIdx":0,"setId":2,"iconIdx":3},{"icon":{"paths":["M889.022 7.054l-831.526 383.772c-34.358 15.411-57.857 49.317-57.857 88.711 0 53.291 43.002 96.539 96.2 96.936l0.038 0h351.649v351.801c0.219 53.372 43.536 96.553 96.938 96.553 39.559 0 73.583-23.696 88.654-57.668l0.245-0.618 383.621-831.564c3.826-10.169 6.041-21.922 6.041-34.192 0-55.109-44.674-99.783-99.783-99.783-12.281 0-24.044 2.219-34.909 6.277l0.689-0.226z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["arrow"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":14,"id":30,"name":"arrow","prevSize":32,"code":59652},"setIdx":0,"setId":2,"iconIdx":4},{"icon":{"paths":["M448.963 503.181c138.95 0 251.59-112.641 251.59-251.59s-112.641-251.59-251.59-251.59v-0c-138.95 0-251.59 112.641-251.59 251.59s112.641 251.59 251.59 251.59v0zM448.963 119.488v0c72.958-0 132.103 59.144 132.103 132.103s-59.144 132.103-132.103 132.103c-72.958 0-132.103-59.144-132.103-132.103 0-0.013 0-0.026 0-0.039l-0 0.002c-0-72.938 59.128-132.065 132.065-132.065 0.013 0 0.026 0 0.039 0l-0.002-0z","M448.963 566.069c-167.938 0-448.963 50.013-448.963 217.355v240.576h893.721v-240.576c0-167.305-276.82-217.355-444.758-217.355zM774.233 904.475h-654.931v-121.051c0-40.263 142.671-97.83 329.475-97.83v0c186.804 0 325.27 57.567 325.27 97.83z"],"attrs":[{},{}],"width":894,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["avatar"],"colorPermutations":{"12552552551":[{},{}]}},"attrs":[{},{}],"properties":{"order":15,"id":29,"name":"avatar","prevSize":32,"code":59653},"setIdx":0,"setId":2,"iconIdx":5},{"icon":{"paths":["M908.486 692.817c-1.1-0.834-112.139-84.872-112.139-362.886 0-182.216-147.715-329.931-329.931-329.931s-329.931 147.715-329.931 329.931v0c0 278.014-111.039 362.052-111.191 362.242-15.359 10.347-25.326 27.674-25.326 47.328 0 31.414 25.465 56.881 56.878 56.885l819.14 0c25.031-0.194 46.179-16.601 53.474-39.229l0.112-0.401c1.696-5.184 2.675-11.15 2.675-17.344 0-19.089-9.291-36.008-23.598-46.482l-0.162-0.113zM174.901 682.616c47.923-94.131 76-205.282 76-322.99 0-10.443-0.221-20.835-0.659-31.17l0.050 1.475c0-119.383 96.779-216.162 216.162-216.162s216.162 96.779 216.162 216.162l0 0c-0.387 8.856-0.608 19.244-0.608 29.684 0 117.708 28.062 228.862 77.862 327.136l-1.9-4.135z","M573.853 872.459c-8.181-4.825-18.026-7.675-28.536-7.675-20.904 0-39.175 11.276-49.061 28.077l-0.145 0.266c-6.013 10.266-16.989 17.051-29.55 17.051-6.311 0-12.222-1.713-17.293-4.699l0.16 0.087c-5.181-3.025-9.376-7.22-12.314-12.241l-0.086-0.16c-10.022-17.142-28.338-28.474-49.3-28.474-31.434 0-56.916 25.482-56.916 56.916 0 10.472 2.828 20.283 7.762 28.711l-0.145-0.269c26.074 44.41 73.596 73.753 127.972 73.753s101.897-29.344 127.594-73.059l0.377-0.694c4.808-8.17 7.648-17.998 7.648-28.489 0-20.831-11.197-39.047-27.901-48.958l-0.263-0.144z"],"attrs":[{},{}],"width":932,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["bell"],"colorPermutations":{"12552552551":[{},{}]}},"attrs":[{},{}],"properties":{"order":16,"id":28,"name":"bell","prevSize":32,"code":59654},"setIdx":0,"setId":2,"iconIdx":6},{"icon":{"paths":["M307.2 460.8h-102.4v102.4h102.4zM512 460.8h-102.4v102.4h102.4zM716.8 460.8h-102.4v102.4h102.4zM819.2 102.4h-51.2v-102.4h-102.4v102.4h-409.6v-102.4h-102.4v102.4h-51.2c-56.277 0.024-101.889 45.651-101.889 101.931 0 0.165 0 0.33 0.001 0.495l-0-0.025-0.512 716.8c0 56.554 45.846 102.4 102.4 102.4v0h716.8c56.486-0.169 102.231-45.914 102.4-102.384l0-0.016v-716.8c-0.169-56.486-45.914-102.231-102.384-102.4l-0.016-0zM819.2 921.6h-716.8v-563.2h716.8z"],"attrs":[{}],"width":922,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["calender"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":17,"id":27,"name":"calender","prevSize":32,"code":59655},"setIdx":0,"setId":2,"iconIdx":7},{"icon":{"paths":["M910.222 0h-796.444c-62.838 0-113.778 50.94-113.778 113.778v0 796.444c0 62.838 50.94 113.778 113.778 113.778v0h796.444c62.838 0 113.778-50.94 113.778-113.778v0-796.444c0-62.838-50.94-113.778-113.778-113.778v0zM398.222 796.444l-284.444-284.444 80.213-80.213 204.231 203.662 431.787-431.787 80.213 80.782z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["checkbox-1"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":18,"id":26,"name":"checkbox-1","prevSize":32,"code":59656},"setIdx":0,"setId":2,"iconIdx":8},{"icon":{"paths":["M910.222 113.778v796.444h-796.444v-796.444h796.444zM910.222 0h-796.444c-62.76 0.193-113.584 51.018-113.778 113.759l-0 0.019v796.444c0.193 62.76 51.018 113.584 113.759 113.778l0.019 0h796.444c62.76-0.193 113.584-51.018 113.778-113.759l0-0.019v-796.444c-0.193-62.76-51.018-113.584-113.759-113.778l-0.019-0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["checkbox"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":19,"id":25,"name":"checkbox","prevSize":32,"code":59657},"setIdx":0,"setId":2,"iconIdx":9},{"icon":{"paths":["M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512v0c0 282.77-229.23 512-512 512h-0zM276.821 547.072l279.723 279.723c8.937 8.992 21.312 14.557 34.987 14.557s26.050-5.565 34.984-14.554l0.002-0.002 35.115-35.115c8.992-8.937 14.557-21.312 14.557-34.987s-5.565-26.050-14.554-34.984l-0.002-0.002-209.749-209.749 209.749-209.749c8.992-8.937 14.557-21.312 14.557-34.987s-5.565-26.050-14.554-34.984l-0.002-0.002-35.115-35.115c-8.937-8.992-21.312-14.557-34.987-14.557s-26.050 5.565-34.984 14.554l-0.002 0.002-279.723 279.765c-8.993 8.976-14.557 21.385-14.557 35.093s5.564 26.118 14.556 35.093l0.001 0.001z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["circle-left"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":20,"id":24,"name":"circle-left","prevSize":32,"code":59658},"setIdx":0,"setId":2,"iconIdx":10},{"icon":{"paths":["M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512v0c0 282.77 229.23 512 512 512v0zM747.136 547.115l-279.723 279.723c-8.937 8.992-21.312 14.557-34.987 14.557s-26.050-5.565-34.984-14.554l-0.002-0.002-35.115-35.115c-8.992-8.937-14.557-21.312-14.557-34.987s5.565-26.050 14.554-34.984l0.002-0.002 209.749-209.749-209.792-209.792c-8.992-8.937-14.557-21.312-14.557-34.987s5.565-26.050 14.554-34.984l0.002-0.002 35.115-35.115c8.937-8.992 21.312-14.557 34.987-14.557s26.050 5.565 34.984 14.554l0.002 0.002 279.723 279.723c9.019 8.98 14.6 21.406 14.6 35.136 0 13.709-5.564 26.118-14.556 35.093l-0.001 0.001z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["circle-right"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":21,"id":23,"name":"circle-right","prevSize":32,"code":59659},"setIdx":0,"setId":2,"iconIdx":11},{"icon":{"paths":["M843.123 30.996l-331.098 331.098-331.098-331.098c-19.185-19.146-45.668-30.985-74.916-30.985s-55.731 11.839-74.918 30.987l0.002-0.002c-19.117 19.18-30.937 45.643-30.937 74.868s11.82 55.687 30.94 74.87l-0.003-0.003 331.050 331.098-331.050 331.244c-19.191 19.173-31.063 45.67-31.063 74.94 0 58.504 47.427 105.93 105.93 105.93 29.234 0 55.702-11.842 74.868-30.991l-0.001 0.001 331.098-331.098 331.196 331.147c19.046 18.46 45.049 29.839 73.71 29.839 58.521 0 105.961-47.44 105.961-105.961 0-28.661-11.379-54.663-29.865-73.737l0.027 0.028-331.196-331.196 331.098-331.098c18.46-19.046 29.839-45.049 29.839-73.71 0-58.521-47.44-105.961-105.961-105.961-28.661 0-54.663 11.379-73.737 29.865l0.028-0.027z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["close"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":22,"id":22,"name":"close","prevSize":32,"code":59660},"setIdx":0,"setId":2,"iconIdx":12},{"icon":{"paths":["M895.851 0h-767.872c-70.681 0-127.979 57.298-127.979 127.979v0 575.904c0 70.681 57.298 127.979 127.979 127.979v0h191.968v167.993c-0 0.025-0 0.056-0 0.086 0 13.288 10.772 24.060 24.060 24.060 5.399 0 10.382-1.778 14.397-4.781l-0.063 0.045 249.558-187.403h287.952c70.681 0 127.979-57.298 127.979-127.979v0-575.904c0-70.681-57.298-127.979-127.979-127.979l0 0zM604.699 575.904h-371.821v-127.979h371.821zM791.42 296.697h-558.84v-127.979h558.84z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["comment"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":23,"id":21,"name":"comment","prevSize":32,"code":59661},"setIdx":0,"setId":2,"iconIdx":13},{"icon":{"paths":["M646.741 485.035v-323.371l-161.707-161.664-161.664 161.664v107.819h-323.371v754.517h970.112v-538.965zM215.595 916.224h-107.819v-107.819h107.819zM215.595 700.629h-107.819v-107.776h107.819zM215.595 485.035h-107.819v-107.776h107.819zM538.965 916.181h-107.819v-107.776h107.776zM538.965 700.587h-107.819v-107.733h107.776zM538.965 484.992h-107.819v-107.733h107.776zM538.965 269.397h-107.819v-107.733h107.776zM862.336 916.139h-107.819v-107.733h107.776zM862.336 700.544h-107.819v-107.691h107.776z"],"attrs":[{}],"width":970,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["company"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":24,"id":20,"name":"company","prevSize":32,"code":59662},"setIdx":0,"setId":2,"iconIdx":14},{"icon":{"paths":["M587.199 55.924l-55.924-55.924h-279.618l-55.924 55.924h-195.733v111.847h782.932v-111.847z","M33.107 870.508c1.405 85.070 70.697 153.493 155.97 153.493 0.217 0 0.434-0 0.65-0.001l-0.034 0h403.396c0.182 0.001 0.398 0.001 0.614 0.001 85.338 0 154.671-68.528 155.971-153.557l0.001-0.122v-647.895h-716.569zM144.954 332.112h493.023v538.023c-0.295 24.483-20.211 44.217-44.736 44.217-0.001 0-0.002-0-0.003-0l-403.21 0c-0.101 0.001-0.22 0.001-0.34 0.001-24.499 0-44.399-19.692-44.735-44.112l-0-0.032z","M288.939 834.903c30.886 0 55.924-25.038 55.924-55.924v0-316.901c0-30.886-25.038-55.924-55.924-55.924s-55.924 25.038-55.924 55.924v0 316.901c0 30.886 25.038 55.924 55.924 55.924v0z","M493.993 834.903c30.886 0 55.924-25.038 55.924-55.924v0-316.901c0-30.886-25.038-55.924-55.924-55.924s-55.924 25.038-55.924 55.924v0 316.901c0 30.886 25.038 55.924 55.924 55.924v0z"],"attrs":[{},{},{},{}],"width":783,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["delet"],"colorPermutations":{"12552552551":[{},{},{},{}]}},"attrs":[{},{},{},{}],"properties":{"order":6,"id":18,"name":"delet","prevSize":32,"code":59663},"setIdx":0,"setId":2,"iconIdx":15},{"icon":{"paths":["M563.115 854.229l407.851-408.107c13.086-12.984 21.186-30.975 21.186-50.858 0-19.714-7.963-37.568-20.848-50.521l0.003 0.003-68.139-68.139c-12.998-13.055-30.985-21.133-50.859-21.133-19.725 0-37.592 7.958-50.564 20.838l0.004-0.004-289.536 289.621-289.195-289.195c-13.008-13.118-31.038-21.24-50.965-21.24-19.778 0-37.688 8.001-50.669 20.943l0.002-0.002-0.299 0.299-67.968 67.499c-13.075 12.989-21.168 30.978-21.168 50.859 0 19.71 7.956 37.563 20.831 50.521l-0.004-0.004 408.235 408.32c13.040 13.276 31.18 21.503 51.243 21.503 19.596 0 37.358-7.849 50.315-20.575l-0.011 0.010z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["down"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":7,"id":17,"name":"down","prevSize":32,"code":59664},"setIdx":0,"setId":2,"iconIdx":16},{"icon":{"paths":["M864 0c88.366 0 160 71.634 160 160 0 36.2-12.022 69.593-32.292 96.402l0.292-0.402-64 64-224-224 64-64c26.324-19.976 59.637-32 95.758-32 0.085 0 0.17 0 0.255 0l-0.013-0zM64 736l-64 288 288-64 592.171-592-224.171-224.128zM715.563 363.563l-448 448-55.168-55.125 448-448z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["edit"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":8,"id":16,"name":"edit","prevSize":32,"code":59665},"setIdx":0,"setId":2,"iconIdx":17},{"icon":{"paths":["M1123.235 921.346l-217.634-208.847c5.132 1.805 11.050 2.848 17.211 2.848 15.851 0 30.089-6.902 39.875-17.864l0.046-0.052c37.481-38.161 71.036-80.412 99.866-125.951l1.835-3.103c5.666-8.976 9.029-19.899 9.029-31.606 0-11.056-2.999-21.412-8.227-30.299l0.153 0.28c-7.952-13.359-194.813-327.802-528.499-327.802h-1.312c-35.996 0.005-71.127 3.696-105.040 10.716l3.34-0.578c-18.092 3.787-32.895 15.391-40.954 31.036l-0.156 0.333-212.306-203.798c-10.7-10.287-25.264-16.622-41.308-16.622-32.938 0-59.64 26.702-59.64 59.64 0 16.894 7.024 32.148 18.312 42.999l0.020 0.019 162.768 156.208c-5.287 1.648-9.884 3.809-14.111 6.501l0.235-0.14c-95.97 62.868-175.328 142.911-235.543 236.445l-1.89 3.135c-5.835 9.056-9.303 20.115-9.303 31.985 0 11.035 2.997 21.371 8.222 30.236l-0.152-0.279c7.952 13.359 194.813 327.802 529.175 327.802 107.604-0.9 207.542-32.95 291.456-87.555l-2.1 1.281c1.312-0.835 2.385-1.908 3.618-2.863l210.398 201.929c10.7 10.287 25.264 16.622 41.308 16.622 32.938 0 59.64-26.702 59.64-59.64 0-16.894-7.024-32.148-18.312-42.999l-0.020-0.019zM536.729 298.223c210.716 0 354.679 168.573 405.529 238.546-20.464 28.603-41.631 53.756-64.584 77.15l0.097-0.1c-10.193 10.583-16.471 24.997-16.471 40.878 0 6.315 0.993 12.399 2.831 18.103l-0.116-0.417-385.213-369.747c17.213-2.809 37.053-4.414 57.267-4.414 0.232 0 0.464 0 0.696 0.001l-0.036-0zM480.591 505.758c6.937-5.309 12.58-11.943 16.621-19.556l0.156-0.323 89.972 86.354c-14.804 12.070-33.904 19.382-54.711 19.382-7.266 0-14.323-0.892-21.069-2.571l0.598 0.126c-21.583-3.776-39.081-18.284-47.003-37.713l-0.149-0.414c-0.942-3.344-1.484-7.185-1.484-11.153 0-13.911 6.658-26.266 16.961-34.054l0.107-0.078zM536.729 775.315c-210.716 0-354.4-168.215-405.211-238.546 49.32-68.027 109.037-125.034 177.432-169.904l2.551-1.571c11.947-7.883 20.761-19.68 24.668-33.535l0.101-0.418 78.482 75.301c-2.135 1.142-3.89 2.209-5.584 3.359l0.217-0.139c-39.593 30.204-64.883 77.409-64.883 130.521 0 16.497 2.44 32.424 6.979 47.441l-0.301-1.159c21.213 61.143 72.589 106.713 135.851 119.32l1.154 0.192c13.578 3.209 29.168 5.048 45.187 5.048 51.658 0 98.848-19.131 134.872-50.694l-0.235 0.202c1.923-1.788 3.692-3.67 5.327-5.665l0.080-0.1 67.389 64.686c-58.645 34.055-128.851 54.577-203.762 55.657l-0.314 0.004z"],"attrs":[{}],"width":1142,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["eye-1"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":9,"id":15,"name":"eye-1","prevSize":32,"code":59666},"setIdx":0,"setId":2,"iconIdx":18},{"icon":{"paths":["M1343.806 478.457c-9.762-19.575-244.11-478.457-667.948-478.457s-658.136 458.883-667.948 478.457c-4.994 9.78-7.92 21.332-7.92 33.568s2.926 23.787 8.117 33.994l-0.197-0.427c10.013 19.575 244.11 478.407 667.948 478.407s658.186-458.832 667.948-478.407c4.994-9.78 7.92-21.332 7.92-33.568s-2.926-23.787-8.117-33.994l0.197 0.427zM675.858 873.96c-272.446 0-457.030-266.138-514.553-361.809 57.523-95.671 242.107-361.809 514.553-361.809s457.13 266.288 514.553 361.809c-57.523 95.521-242.157 361.659-514.553 361.659z","M675.858 211.619c-165.896 0-300.381 134.485-300.381 300.381s134.485 300.381 300.381 300.381c165.896 0 300.381-134.485 300.381-300.381v0c-0.199-165.816-134.565-300.182-300.362-300.381l-0.020-0zM675.858 662.191c-82.948 0-150.191-67.243-150.191-150.191s67.243-150.191 150.191-150.191c82.948 0 150.191 67.243 150.191 150.191v0c0 82.948-67.243 150.191-150.191 150.191v0z"],"attrs":[{},{}],"width":1352,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["eye"],"colorPermutations":{"12552552551":[{},{}]}},"attrs":[{},{}],"properties":{"order":25,"id":14,"name":"eye","prevSize":32,"code":59667},"setIdx":0,"setId":2,"iconIdx":19},{"icon":{"paths":["M470.315 379.861v136.192c52.181 11.819 98.603 31.189 147.2 44.587v-136.405c-52.011-11.605-98.773-30.976-147.2-44.416zM916.907 133.888c-67.939 35.792-147.729 58.874-232.376 63.923l-1.608 0.077c-107.008-0.213-195.584-69.76-330.368-69.76-0.457-0.002-0.998-0.003-1.539-0.003-48.265 0-94.476 8.794-137.118 24.867l2.678-0.885c4.705-11.905 7.433-25.695 7.433-40.122 0-61.856-50.144-112-112-112s-112 50.144-112 112c0 37.882 18.807 71.371 47.593 91.64l0.355 0.237v772.267c-0 0.038-0 0.083-0 0.128 0 26.439 21.433 47.872 47.872 47.872 0.045 0 0.090-0 0.135-0l-0.007 0h32c0.038 0 0.083 0 0.128 0 26.439 0 47.872-21.433 47.872-47.872 0-0.045-0-0.090-0-0.135l0 0.007v-188.928c64.268-28.012 139.144-44.31 217.827-44.31 3.851 0 7.693 0.039 11.525 0.117l-0.573-0.009c107.179 0 195.584 69.589 330.368 69.589 92.324-0.765 177.356-31.352 246.099-82.581l-1.107 0.789c16.771-11.705 27.605-30.909 27.605-52.644 0-0.047-0-0.094-0-0.141l0 0.007v-486.144c-0.078-35.287-28.702-63.863-64-63.863-9.72 0-18.935 2.167-27.186 6.044l0.391-0.165zM323.157 651.008c-54.473 5.68-104.346 17.389-151.58 34.589l4.38-1.394v-140.8c42.966-16.959 92.83-29.258 144.754-34.612l2.446-0.204zM911.957 382.208c-42.344 20.263-91.614 36.787-143.125 47.106l-4.075 0.681v141.867c55.26-7.286 105.051-25.69 148.773-52.924l-1.573 0.913v140.8c-41.573 28.653-91.64 48.031-145.739 54.055l-1.461 0.132v-142.976c-14.605 2.234-31.455 3.51-48.603 3.51-35.177 0-69.1-5.37-100.994-15.334l2.396 0.645v134.912c-39.685-15.094-88.92-29.775-139.395-41.183l-7.805-1.483v-136.875c-28.906-6.694-62.098-10.532-96.186-10.532-17.976 0-35.702 1.067-53.12 3.141l2.106-0.204v-140.032c-55.565 9.583-104.997 24.104-151.88 43.532l4.68-1.718v-140.8c42.614-19.83 92.097-35.166 143.91-43.55l3.29-0.439v142.976c14.417-2.165 31.054-3.401 47.98-3.401 35.4 0 69.537 5.408 101.63 15.442l-2.41-0.649v-134.741c39.858 15.224 89.098 29.908 139.605 41.235l7.595 1.431v136.704c26.239 6.45 56.363 10.149 87.35 10.149 21.13 0 41.859-1.72 62.054-5.028l-2.204 0.298v-143.872c55.763-10.757 105.071-26.328 151.746-46.79l-4.546 1.777z"],"attrs":[{}],"width":1008,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["flag"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":26,"id":13,"name":"flag","prevSize":32,"code":59668},"setIdx":0,"setId":2,"iconIdx":20},{"icon":{"paths":["M460.771 358.396h102.293v-102.251h-102.293zM511.917 921.749c-0.012 0-0.027 0-0.041 0-226.23 0-409.625-183.395-409.625-409.625s183.395-409.625 409.625-409.625c226.215 0 409.601 183.372 409.625 409.581l0 0.002c0 226.23-183.395 409.625-409.625 409.625v0zM511.876-0.207c-282.717 0.071-511.876 229.274-511.876 512 0 282.77 229.23 512 512 512 282.697 0 511.882-229.113 512-511.782l0-0.011c0-282.77-229.23-512-512-512v0zM460.854 768.021h102.21v-307.25h-102.21z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["information"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":27,"id":12,"name":"information","prevSize":32,"code":59669},"setIdx":0,"setId":2,"iconIdx":21},{"icon":{"paths":["M22.52 566.594l435.159 434.886c13.85 13.942 33.032 22.572 54.23 22.572s40.38-8.63 54.226-22.567l0.004-0.004 72.291-72.291c13.931-13.855 22.553-33.035 22.553-54.23s-8.622-40.375-22.549-54.227l-0.003-0.003-308.501-308.41 308.365-308.365c13.931-13.855 22.553-33.035 22.553-54.23s-8.622-40.375-22.549-54.227l-0.003-0.003-71.973-72.792c-13.85-13.942-33.032-22.572-54.23-22.572s-40.38 8.63-54.226 22.567l-0.004 0.004-435.023 434.932c-14.154 13.904-22.927 33.246-22.927 54.637 0 21.234 8.643 40.449 22.604 54.319l0.004 0.004z"],"attrs":[{}],"width":661,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["left"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":28,"id":11,"name":"left","prevSize":32,"code":59670},"setIdx":0,"setId":2,"iconIdx":22},{"icon":{"paths":["M558.549 0.469l-465.451-0.469c-51.358 0.145-92.954 41.74-93.099 93.085l-0 0.014v837.803c0.145 51.358 41.74 92.954 93.085 93.099l0.014 0h465.451c51.358-0.145 92.954-41.74 93.099-93.085l0-0.014v-837.803c-0.194-51.199-41.744-92.629-92.97-92.629-0.045 0-0.090 0-0.136 0l0.007-0zM558.549 837.803h-465.451v-651.605h465.451z"],"attrs":[{}],"width":652,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["phone"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":29,"id":10,"name":"phone","prevSize":32,"code":59671},"setIdx":0,"setId":2,"iconIdx":23},{"icon":{"paths":["M384 0c-0.789-0.017-1.719-0.027-2.651-0.027-34.738 0-66.285 13.665-89.558 35.914l0.049-0.046c-22.202 23.224-35.867 54.77-35.867 89.509 0 0.932 0.010 1.862 0.029 2.789l-0.002-0.138c5.836 34.821 18.412 65.879 36.393 93.049l-0.553-0.889c2.672 8.237 4.213 17.715 4.213 27.553 0 2.918-0.136 5.803-0.401 8.652l0.027-0.365h-295.68v768h295.68c0.053-1.37 0.084-2.978 0.084-4.594 0-11.101-1.431-21.868-4.119-32.126l0.196 0.88c-17.428-26.281-30.005-57.34-35.644-90.756l-0.196-1.404c-0.017-0.789-0.027-1.719-0.027-2.651 0-34.738 13.665-66.285 35.914-89.558l-0.046 0.049c23.224-22.202 54.77-35.867 89.509-35.867 0.932 0 1.862 0.010 2.789 0.029l-0.138-0.002c0.789-0.017 1.719-0.027 2.651-0.027 34.738 0 66.285 13.665 89.558 35.914l-0.049-0.046c22.202 23.224 35.867 54.77 35.867 89.509 0 0.932-0.010 1.862-0.029 2.789l0.002-0.138c-5.836 34.821-18.412 65.879-36.393 93.049l0.553-0.889c-2.672 8.237-4.213 17.715-4.213 27.553 0 2.918 0.136 5.803 0.401 8.652l-0.027-0.365h295.68v-295.68c1.37-0.053 2.978-0.084 4.594-0.084 11.101 0 21.868 1.431 32.126 4.119l-0.88-0.196c26.281 17.428 57.34 30.005 90.756 35.644l1.404 0.196c70.692 0 128-57.308 128-128s-57.308-128-128-128v0c-34.821 5.836-65.879 18.412-93.049 36.393l0.889-0.553c-8.237 2.672-17.715 4.213-27.553 4.213-2.918 0-5.803-0.136-8.652-0.401l0.365 0.027v-295.68h-295.68c-0.053-1.37-0.084-2.978-0.084-4.594 0-11.101 1.431-21.868 4.119-32.126l-0.196 0.88c17.428-26.281 30.005-57.34 35.644-90.756l0.196-1.404c0.017-0.789 0.027-1.719 0.027-2.651 0-34.738-13.665-66.285-35.914-89.558l0.046 0.049c-23.224-22.202-54.77-35.867-89.509-35.867-0.932 0-1.862 0.010-2.789 0.029l0.138-0.002z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["puzzle"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":30,"id":9,"name":"puzzle","prevSize":32,"code":59672},"setIdx":0,"setId":2,"iconIdx":24},{"icon":{"paths":["M638.368 566.619l-435.042 434.86c-13.855 13.932-33.037 22.554-54.232 22.554s-40.377-8.622-54.229-22.55l-0.003-0.003-72.295-72.295c-13.932-13.855-22.554-33.037-22.554-54.232s8.622-40.377 22.55-54.229l0.003-0.003 308.378-308.378-308.378-308.378c-13.932-13.855-22.554-33.037-22.554-54.232s8.622-40.377 22.55-54.229l0.003-0.003 71.976-72.795c13.855-13.932 33.037-22.554 54.232-22.554s40.377 8.622 54.229 22.55l0.003 0.003 435.042 434.723c14.1 13.896 22.836 33.203 22.836 54.549 0 21.189-8.607 40.368-22.515 54.232l-0.002 0.002z"],"attrs":[{}],"width":661,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["right"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":31,"id":8,"name":"right","prevSize":32,"code":59673},"setIdx":0,"setId":2,"iconIdx":25},{"icon":{"paths":["M227.579 579.116v227.579l398.211 217.305 398.211-217.305v-227.579l-398.211 217.358zM625.789-0l-625.789 341.316 625.789 341.316 512-279.311v393.1h113.789v-455.105z"],"attrs":[{}],"width":1252,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["school"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":32,"id":7,"name":"school","prevSize":32,"code":59674},"setIdx":0,"setId":2,"iconIdx":26},{"icon":{"paths":["M1009.922 885.314l-199.391-199.391c-8.672-8.647-20.639-13.993-33.854-13.993-0.096 0-0.192 0-0.288 0.001l0.015-0h-32.592c54.858-69.783 87.982-158.908 87.982-255.769 0-229.618-186.142-415.76-415.76-415.76s-415.76 186.142-415.76 415.76c0 229.618 186.142 415.76 415.76 415.76 96.861 0 185.986-33.123 256.666-88.661l-0.897 0.679v32.464c-0 0.081-0.001 0.177-0.001 0.273 0 13.216 5.346 25.182 13.994 33.855l-0.001-0.001 199.391 199.391c8.657 8.711 20.645 14.103 33.893 14.103s25.236-5.392 33.891-14.1l0.002-0.002 56.609-56.609c8.774-8.732 14.204-20.817 14.204-34.171 0-13.184-5.292-25.131-13.869-33.834l0.006 0.006zM415.973 672.016c-141.361 0-255.957-114.596-255.957-255.957s114.596-255.957 255.957-255.957c141.361 0 255.957 114.596 255.957 255.957v0c-0.049 141.325-114.626 255.872-255.957 255.872l-0-0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["search"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":33,"id":6,"name":"search","prevSize":32,"code":59675},"setIdx":0,"setId":2,"iconIdx":27},{"icon":{"paths":["M264.124 1024l-3.988-0.315c-45.874-4.728-81.349-43.172-81.349-89.9 0-9.949 1.608-19.523 4.579-28.476l-0.183 0.638 89.58-260.661-235.092-165.554c-19.618-13.599-33.145-34.797-36.332-59.244l-0.046-0.43c-0.823-4.244-1.294-9.125-1.294-14.115 0-0.018 0-0.036 0-0.054l-0 0.003c0.197-48.36 39.308-87.52 87.63-87.796l0.026-0h289.553l86.747-258.842c12.356-34.779 44.982-59.235 83.32-59.235 37.789 0 70.029 23.761 82.593 57.157l0.201 0.608 87.272 260.311h287.525c0.011-0 0.025-0 0.038-0 47.863 0 86.99 37.407 89.741 84.58l0.011 0.243v3.848l-0.315 3.883c-2.124 22.565-12.304 42.418-27.594 56.944l-0.039 0.036-11.963 10.074-233.098 167.233 89.755 261.011c3.161 8.633 4.99 18.602 4.99 28.997 0 27.516-12.812 52.041-32.795 67.933l-0.177 0.136c-13.364 11.803-30.658 19.438-49.692 20.728l-0.258 0.014-3.183 0.21-3.148-0.175c-18.973-1.079-36.226-7.647-50.416-18.125l0.256 0.181-229.565-163.77-230.369 164.12c-13.682 9.851-30.475 16.214-48.672 17.473l-0.298 0.017zM812.414 940.051v0.28zM282.243 939.876v0zM838.403 920.498v0zM139.39 423.032l258.003 181.889-97.94 285.006 247.929-176.642 247.649 176.502-97.94-284.586 254.015-182.169h-309.246l-94.442-282.243-94.722 282.243zM1004.972 423.032v0zM97.346 393.405l0.56 0.42z"],"attrs":[{}],"width":1095,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["star-1"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":34,"id":5,"name":"star-1","prevSize":32,"code":59676},"setIdx":0,"setId":2,"iconIdx":28},{"icon":{"paths":["M1060.923 354.485h-362.082l-110.034-328.386c-5.769-15.366-20.337-26.102-37.413-26.102s-31.644 10.737-37.322 25.828l-0.091 0.275-110.034 328.386h-364.574c-21.717 0.069-39.304 17.656-39.374 39.367l-0 0.007c-0 0.051-0.001 0.111-0.001 0.172 0 2.3 0.268 4.537 0.775 6.682l-0.039-0.196c1.082 11.588 7.245 21.545 16.211 27.732l0.127 0.083 297.753 209.856-114.363 332.062c-1.356 3.823-2.14 8.232-2.14 12.824 0 12.816 6.104 24.206 15.563 31.422l0.096 0.070c5.913 5.322 13.556 8.829 21.991 9.588l0.147 0.011c9.263-0.701 17.658-3.918 24.649-8.961l-0.142 0.098 290.483-207.038 290.483 207.038c6.807 5.047 15.229 8.284 24.374 8.857l0.132 0.007c8.688-0.56 16.438-4.176 22.272-9.773l-0.012 0.012c9.602-7.187 15.75-18.533 15.75-31.315 0-4.66-0.817-9.13-2.316-13.273l0.086 0.272-114.159-331.898 295.139-211.694 7.148-6.167c7.108-6.72 11.823-15.905 12.772-26.182l0.012-0.163c-1.204-22.063-19.388-39.497-41.643-39.497-0.078 0-0.156 0-0.234 0.001l0.012-0z"],"attrs":[{}],"width":1103,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["star"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":35,"id":4,"name":"star","prevSize":32,"code":59677},"setIdx":0,"setId":2,"iconIdx":29},{"icon":{"paths":["M662.613 361.941c-7.552-20.181 201.344-206.72 79.531-357.888-28.501-35.328-125.227 169.259-262.528 261.845-75.776 51.2-252.075 159.872-252.075 219.989v389.461c0 72.32 279.552 148.864 491.989 148.864 77.867 0 190.677-487.851 190.677-565.333s-240.128-76.459-247.467-96.725zM170.624 367.36c-0.681-0.010-1.486-0.016-2.292-0.016-93.126 0-168.619 75.493-168.619 168.619 0 3.187 0.088 6.354 0.263 9.498l-0.019-0.437v275.797c-0.161 2.71-0.252 5.878-0.252 9.068 0 90.015 72.972 162.987 162.987 162.987 2.79 0 5.564-0.070 8.32-0.209l-0.387 0.016c37.376 0-56.875-32.555-56.875-128.555v-362.667c0-100.565 94.251-134.187 56.875-134.187z"],"attrs":[{}],"width":910,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["thumbs-up"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":10,"id":3,"name":"thumbs-up","prevSize":32,"code":59678},"setIdx":0,"setId":2,"iconIdx":30},{"icon":{"paths":["M511.488 0c-282.55 0.292-511.488 229.41-511.488 512 0 282.77 229.23 512 512 512s512-229.23 512-512l-0 0c0-0.076 0-0.166 0-0.257 0-282.628-229.116-511.744-511.744-511.744-0.27 0-0.54 0-0.81 0.001l0.042-0zM512 921.6c-226.216 0-409.6-183.384-409.6-409.6s183.384-409.6 409.6-409.6c226.216 0 409.6 183.384 409.6 409.6v0c0 226.216-183.384 409.6-409.6 409.6v0zM537.6 256h-76.8v307.2l268.8 161.28 38.4-63.147-230.4-136.533z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["time"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":11,"id":2,"name":"time","prevSize":32,"code":59679},"setIdx":0,"setId":2,"iconIdx":31},{"icon":{"paths":["M563.115 223.232l407.851 408.107c13.137 12.992 21.272 31.018 21.272 50.943 0 19.756-7.997 37.645-20.932 50.605l0.001-0.001-68.139 68.139c-12.998 13.055-30.985 21.133-50.859 21.133-19.725 0-37.592-7.958-50.564-20.838l0.004 0.004-289.536-289.792-289.195 289.195c-12.998 13.055-30.985 21.133-50.859 21.133-19.725 0-37.592-7.958-50.564-20.838l0.004 0.004-0.213-0.299-68.267-67.499c-13.075-12.989-21.168-30.978-21.168-50.859 0-19.71 7.956-37.563 20.831-50.521l-0.004 0.004 408.235-408.32c13.040-13.276 31.18-21.503 51.243-21.503 19.596 0 37.358 7.849 50.315 20.575l-0.011-0.010z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["top"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":12,"id":1,"name":"top","prevSize":32,"code":59680},"setIdx":0,"setId":2,"iconIdx":32},{"icon":{"paths":["M1104.017 128.018h-207.987v-80.017c0-26.51-21.491-48.001-48.001-48.001v0h-544.040c-26.51 0-48.001 21.491-48.001 48.001v0 80.017h-207.987c-26.51 0-48.001 21.491-48.001 48.001v0 111.986c7.076 85.462 54.363 158.548 122.682 200.96l1.112 0.643c61.778 44.226 136.678 74.099 217.854 83.23l2.133 0.195c34.389 59.486 80.159 108.69 134.709 145.998l1.518 0.98v144.002h-96.001c-3.854-0.457-8.318-0.718-12.843-0.718-62.746 0-113.776 50.163-115.172 112.574l-0.002 0.13v24c0 13.255 10.745 24 24 24v0h592.041c13.255 0 24-10.745 24-24v0-24c-1.399-62.54-52.429-112.704-115.175-112.704-4.525 0-8.989 0.261-13.378 0.768l0.535-0.050h-96.001v-144.002c56.068-38.356 101.826-87.64 135.041-145.086l1.137-2.132c83.314-9.166 158.252-38.973 221.451-84.147l-1.416 0.962c69.366-43.121 116.621-116.171 123.729-200.646l0.065-0.957v-111.986c0-26.51-21.491-48.001-48.001-48.001v0zM198.627 385.59c-35.829-20.914-61.682-55.601-70.437-96.621l-0.172-0.964v-32.016h128.402c1.638 61.997 10.873 121.145 26.808 177.479l-1.223-5.061c-31.815-11.002-59.407-25.499-84.329-43.47l0.951 0.653zM1024 288.005c-9.695 41.665-35.309 76.091-69.932 97.202l-0.677 0.383c-24.040 17.319-51.713 31.817-81.346 42.129l-2.271 0.688c14.711-51.273 23.946-110.421 25.564-171.467l0.020-0.952h128.594z"],"attrs":[{}],"width":1152,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["trophy"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":13,"id":0,"name":"trophy","prevSize":32,"code":59681},"setIdx":0,"setId":2,"iconIdx":33}],"height":1024,"metadata":{"name":"icomoon"},"preferences":{"showGlyphs":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"icomoon"},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"classSelector":".icon","name":"icomoon"},"historySize":50,"showCodes":true,"gridSize":16}}
PAMapp/assets/icon/style.css
@@ -1,10 +1,10 @@
@font-face {
  font-family: 'icomoon';
  src:  url('fonts/icomoon.eot?vt1g0j');
  src:  url('fonts/icomoon.eot?vt1g0j#iefix') format('embedded-opentype'),
    url('fonts/icomoon.ttf?vt1g0j') format('truetype'),
    url('fonts/icomoon.woff?vt1g0j') format('woff'),
    url('fonts/icomoon.svg?vt1g0j#icomoon') format('svg');
  src:  url('fonts/icomoon.eot?vrc42b');
  src:  url('fonts/icomoon.eot?vrc42b#iefix') format('embedded-opentype'),
    url('fonts/icomoon.ttf?vrc42b') format('truetype'),
    url('fonts/icomoon.woff?vrc42b') format('woff'),
    url('fonts/icomoon.svg?vrc42b#icomoon') format('svg');
  font-weight: normal;
  font-style: normal;
  font-display: block;
@@ -25,16 +25,7 @@
  -moz-osx-font-smoothing: grayscale;
}
.icon-delet:before {
  content: "\e920";
}
.icon-top:before {
  content: "\e91f";
}
.icon-puzzle:before {
  content: "\e91e";
}
.icon-down:before {
.icon-decrease:before {
  content: "\e900";
}
.icon-add:before {
@@ -58,10 +49,10 @@
.icon-calender:before {
  content: "\e907";
}
.icon-checkbox:before {
.icon-checkbox-1:before {
  content: "\e908";
}
.icon-checkbox-1:before {
.icon-checkbox:before {
  content: "\e909";
}
.icon-circle-left:before {
@@ -79,48 +70,60 @@
.icon-company:before {
  content: "\e90e";
}
.icon-edit:before {
.icon-delet:before {
  content: "\e90f";
}
.icon-eye:before {
.icon-down:before {
  content: "\e910";
}
.icon-eye-1:before {
.icon-edit:before {
  content: "\e911";
}
.icon-flag:before {
.icon-eye-1:before {
  content: "\e912";
}
.icon-information:before {
.icon-eye:before {
  content: "\e913";
}
.icon-left:before {
.icon-flag:before {
  content: "\e914";
}
.icon-phone:before {
.icon-information:before {
  content: "\e915";
}
.icon-right:before {
.icon-left:before {
  content: "\e916";
}
.icon-school:before {
.icon-phone:before {
  content: "\e917";
}
.icon-search:before {
.icon-puzzle:before {
  content: "\e918";
}
.icon-star:before {
.icon-right:before {
  content: "\e919";
}
.icon-star-1:before {
.icon-school:before {
  content: "\e91a";
}
.icon-thumbs-up:before {
.icon-search:before {
  content: "\e91b";
}
.icon-time:before {
.icon-star-1:before {
  content: "\e91c";
}
.icon-trophy:before {
.icon-star:before {
  content: "\e91d";
}
.icon-thumbs-up:before {
  content: "\e91e";
}
.icon-time:before {
  content: "\e91f";
}
.icon-top:before {
  content: "\e920";
}
.icon-trophy:before {
  content: "\e921";
}
PAMapp/assets/scss/_variable.scss
@@ -19,5 +19,5 @@
// DEVICE BREAKPOINT
$DESKTOP_BREAKPOINT: 768px;
$DESKTOP_NAV_BAR: 110px;
$DESKTOP_NAV_BAR: 90px;
$MOB_NAV_BAR: 53px;
PAMapp/assets/scss/vendors/_elementUI.scss
@@ -12,3 +12,4 @@
@import './elementUI/dialog';
@import './elementUI/messageBox';
@import './elementUI/input';
@import './elementUI/tree';
PAMapp/assets/scss/vendors/elementUI/_tree.scss
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,90 @@
.el-tree {
    position: static;
    background: transparent;
    .el-tree-node {
        white-space: pre-wrap;
        word-break: break-all;
        .el-tree-node__content {
            border: solid 2px #CCCCCC;
            padding: 10px 10px 10px 20px;
            border-radius: 10px;
            color: #68737A;
            justify-content: space-between;
            flex-direction: row-reverse;
            margin-bottom: 10px;
            height: auto;
            .el-tree-node__expand-icon {
                @extend .pam-icon;
                @extend .icon--primary;
                &.expanded::before {
                    content: "\e900";
                    display: inline-block;
                    transform: rotate(90deg);
                }
            }
            .el-tree-node__label {
                @extend .mdTxt;
                width: 85%;
                display: block;
                padding-left: 20px;
                line-height: 27px;
                word-wrap: break-word;
                height: auto;
            }
        }
        &.is-expanded > .el-tree-node__content {
            background-color: #F68C96;
            border: solid 2px #F68C96;
            .el-tree-node__label,.el-tree-node__expand-icon {
                color: $PRIMARY_WHITE;
            }
        }
        .el-tree-node__children {
            margin-bottom: 10px;
            .el-tree-node {
                .el-tree-node__content  {
                    flex-direction: row;
                    border: 0px;
                    padding: 0 !important;
                    margin-bottom: 0;
                    .el-tree-node__expand-icon {
                        display: none;
                    }
                    .el-tree-node__label {
                        @extend .p;
                        line-height: 27px;
                        width: 100%;
                        font-weight: lighter;
                        padding-right: 10px;
                        // line-break: loose;
                        // display: flex;
                        // justify-content: space-between;
                        // text-align: justify;
                        // text-align-last: left;
                        // text-justify:inter-ideograph;
                        // word-break: break-all;
                        // &:after{
                        //     display:inline-block;
                        //     content:'';
                        //     overflow:hidden;
                        //     width:100%;
                        //     height: 0;
                        // }
                    }
                }
            }
        }
    }
}
PAMapp/assets/ts/api/appointment.ts
Àɮפw§R°£
PAMapp/assets/ts/api/consultant.ts
Àɮפw§R°£
PAMapp/assets/ts/api/share.ts
Àɮפw§R°£
PAMapp/assets/ts/models/AppointmentDetail.ts
Àɮפw§R°£
PAMapp/assets/ts/models/UserReviewsConsultantsParams.ts
Àɮפw§R°£
PAMapp/assets/ts/models/agentOfStrictQuery.ts
Àɮפw§R°£
PAMapp/assets/ts/models/appointment.model.ts
Àɮפw§R°£
PAMapp/assets/ts/models/appointmentParams.ts
Àɮפw§R°£
PAMapp/assets/ts/models/enum/Role.ts
Àɮפw§R°£
PAMapp/assets/ts/models/fastQueryParams.model.ts
Àɮפw§R°£
PAMapp/assets/ts/models/strictQueryParams.ts
Àɮפw§R°£
PAMapp/assets/ts/services/appointment.service.ts
Àɮפw§R°£
PAMapp/assets/ts/services/my-consultant.service.ts
Àɮפw§R°£
PAMapp/assets/ts/services/pamService.service.ts
Àɮפw§R°£
PAMapp/assets/ts/services/query-consultant.service.ts
Àɮפw§R°£
PAMapp/components/AddAndReservedBtns.vue
@@ -12,7 +12,7 @@
<script lang="ts">
import { Vue, Component, Prop, Emit, Action, State, namespace } from 'nuxt-property-decorator';
import { Consultant } from '~/assets/ts/models/consultant.model';
import { Consultant } from '~/shared/models/consultant.model';
const localStorage = namespace('localStorage');
@Component
PAMapp/components/BackActionBar.vue
@@ -1,22 +1,24 @@
<template>
    <nav class="pam-back-action-bar fix-chrome-click--issue">
        <a @click="pushRouterByLoginRole">
          <i class="icon-left "></i>{{ label }}
          <i class="icon-left "></i>
        </a>
        <div class="label">{{ label }}</div>
    </nav>
</template>
<script lang="ts">
import { namespace } from 'nuxt-property-decorator';
import { Vue, Component,} from 'vue-property-decorator';
import { Role } from '~/assets/ts/models/enum/Role';
import * as _ from 'lodash';
import { Role } from '~/shared/models/enum/role';
const roleStorage = namespace('localStorage');
@Component
export default class UiCarousel extends Vue {
  @roleStorage.Getter currentRole!:string;
  get label(): string {
    if (this.$route.name) {
      const routeName = this.$route.name.split('-')[0];
      let featureLabel = '';
@@ -45,6 +47,7 @@
        case 'notification':
          featureLabel = '通知';
          break;
        case 'userReviewsRecord':
        case 'record':
          featureLabel = '查看紀錄';
          break;
@@ -53,6 +56,9 @@
          break;
        case 'consultantAccountSetting':
          featureLabel = '查看帳號資訊';
          break;
        case 'faq':
          featureLabel = 'F&Q å¸¸è¦‹å•é¡Œ';
          break;
      }
      return featureLabel;
@@ -81,21 +87,28 @@
  width: 100%;
  background-color: $PRIMARY_WHITE;
  z-index: 6;
  i {
    font-size: 20px;
  font-weight: bold;
  i {
    display: block;
    padding-right: 14px;
  }
  a {
    cursor: pointer;
    font-size: 24px;
    font-weight: bold;
    padding: 20px;
    padding: 0 20px;
    width: 26px;
  }
  .label {
    margin: 0 auto;
    transform: translateX(-33px);
  }
}
@include desktop {
  .pam-back-action-bar {
    top: $DESKTOP_NAV_BAR;
    font-size: 24px;
  }
}
</style>
PAMapp/components/Client/ClientCard.vue
@@ -96,10 +96,11 @@
<script lang="ts">
import { Vue, Component, Prop, Action } from 'nuxt-property-decorator';
import appointmentService from '~/assets/ts/services/appointment.service';
import { isMobileDevice } from '~/assets/ts/device';
import { hideReviews } from '~/assets/ts/const/hide-reviews';
import { ClientInfo } from '~/assets/ts/models/client.model';
import appointmentService from '~/shared/services/appointment.service';
import { isMobileDevice } from '~/shared/device';
import { hideReviews } from '~/shared/const/hide-reviews';
import { ClientInfo } from '~/shared/models/client.model';
import myConsultantService from '~/shared/services/my-consultant.service';
@Component({
@@ -198,7 +199,7 @@
    }
    markAppointment() {
        appointmentService.markAsContact(this.client.id).then(data => {
        myConsultantService.markAsContact(this.client.id).then(data => {
            // TODO: è¦æŽ¥å¾Œå°å‚³å›žçš„ updated client è³‡æ–™ - Ben 2021/11/16
            const updatedClient = {...this.client};
            updatedClient.communicateStatus = 'contacted';
PAMapp/components/Client/ClientList.vue
@@ -18,7 +18,7 @@
<script lang='ts'>
import { Vue, Component, Prop } from 'nuxt-property-decorator';
import { ClientInfo } from '~/assets/ts/models/client.model';
import { ClientInfo } from '~/shared/models/client.model';
@Component
export default class ClientList extends Vue {
PAMapp/components/Consultant/ConsultantCard.vue
@@ -82,13 +82,12 @@
                    </div>
                </div>
                <div v-if="agentInfo.contactStatus === 'contacted'
                        && !appointmentDetail.satisfactionScore" class="dialogInfo-btn">
                <div v-if="notScoreAppointmentYet" class="dialogInfo-btn">
                    <el-button type="primary"
                        @click.native="reviewsBtn = true">給予滿意度評分</el-button>
                </div>
                <div v-if="agentInfo.contactStatus === 'reserved'" class="text--center mt-10">
                <div v-if="agentInfo.contactStatus === 'reserved' && !isAppointment" class="text--center mt-10">
                    <el-button @click="isCancelPopup = true">取消預約</el-button>
                    <el-button @click="edit" type="primary">編輯</el-button>
                </div>
@@ -129,14 +128,16 @@
<script lang="ts">
import { Vue, Component, Prop, Action, namespace } from 'nuxt-property-decorator';
import { getAppointmentDetail, UserReviewsConsultantsParams, userReviewsConsultants, cancelAppointment } from '~/assets/ts/api/consultant';
import { Consultant, ConsultantWithAppointmentId } from '~/assets/ts/models/consultant.model';
import { Appointment } from '~/assets/ts/models/appointment.model';
import { isMobileDevice } from '~/assets/ts/device';
import { Role } from '~/assets/ts/models/enum/Role';
import { hideReviews } from '~/assets/ts/const/hide-reviews';
const roleStorage = namespace('localStorage');
import appointmentService from '~/shared/services/appointment.service';
import reviewsService from '~/shared/services/reviews.service';
import { isMobileDevice } from '~/shared/device';
import { hideReviews } from '~/shared/const/hide-reviews';
import { Consultant, ConsultantWithAppointmentId } from '~/shared/models/consultant.model';
import { Appointment } from '~/shared/models/appointment.model';
import { UserReviewsConsultantsParams } from '~/shared/models/reviews.model';
const localStorage = namespace('localStorage');
@Component({
    filters: {
        formatNumber(index: number) {
@@ -158,16 +159,11 @@
})
export default class ConsultantCard extends Vue {
    @Action
    removeFromMyConsultantList!: (agentNo: string) => Promise<boolean>;
    @Action
    storeConsultantList!: any;
    @Prop()
    agentInfo!: Consultant | ConsultantWithAppointmentId;
    @roleStorage.Getter currentRole!:string;
    @localStorage.State('current_role')
    currentRole!: string;
    isVisibleDialog = false;
    reviewsBtn = false;
@@ -178,9 +174,38 @@
    hideReviews = hideReviews;
    isConfirmPopup = false;
    appointmentDetail: any = {
        age               : '',
        agentNo           : '',
        appointmentDate   : '',
        communicateStatus : '',
        consultantReadTime: null,
        consultantViewTime: null,
        contactTime       : '',
        contactType       : '',
        customerId        : 0,
        email             : '',
        gender            : '',
        hopeContactTime   : "",
        id                : 0,
        job               : "",
        lastModifiedDate  : '',
        name              : '',
        otherRequirement  : null,
        phone             : "",
        requirement       : '',
        satisfactionScore : 0,
    };
    get notScoreAppointmentYet(): boolean {
      if (this.agentInfo.contactStatus !== 'contacted') return false;
      const isAppointment = !!this.agentInfo['appointmentStatus'];
      if (!isAppointment) return false;
      return !this.agentInfo['appointmentScore'];
    }
    get isAppointment(): boolean {
      return !!this.agentInfo['appointmentStatus'];;
    }
    get latestReservedAppointment(): Appointment {
@@ -224,29 +249,6 @@
        }
        return time as string;
    }
    appointmentDetail: any = {
        age               : '',
        agentNo           : '',
        appointmentDate   : '',
        communicateStatus : '',
        consultantReadTime: null,
        consultantViewTime: null,
        contactTime       : '',
        contactType       : '',
        customerId        : 0,
        email             : '',
        gender            : '',
        hopeContactTime   : "",
        id                : 0,
        job               : "",
        lastModifiedDate  : '',
        name              : '',
        otherRequirement  : null,
        phone             : "",
        requirement       : '',
        satisfactionScore : 0,
    };
    get avatarFileName() {
        return this.agentInfo.img;
@@ -299,32 +301,38 @@
    get hopeContactTime() {
        const contactList = this.appointmentDetail.hopeContactTime
            .split("'").map(item => item.slice(0, item.length));
        return contactList.filter(item => !!item && item !== ",")
            .split("'").map((item: any) => item.slice(0, item.length));
        return contactList.filter((item: any) => !!item && item !== ",")
    }
    //////////////////////////////////////////////////////////////////////
    @Action
    removeFromMyConsultantList!: (agentNo: string) => Promise<boolean>;
    @Action
    storeConsultantList!: () => void;
    reserveCommunication() {
      const isAppointment = !!this.agentInfo['appointmentStatus'];
        const contactStatus = this.agentInfo.contactStatus;
        if (!contactStatus || contactStatus === 'picked') {
            this.currentRole === Role.USER
                ? this.$router.push(`/questionnaire/${this.agentInfo.agentNo}`)
                : this.$router.push('/login');
        if (!isAppointment && (!contactStatus || contactStatus === 'picked')) {
            this.$router.push(`/questionnaire/${this.agentInfo.agentNo}`);
        } else {
            this.openPopUp();
        }
    }
    openPopUp() {
      const appointmentId = this.agentInfo.contactStatus === 'contacted'
    openPopUp(): void {
      const isAppointment = !!this.agentInfo['appointmentStatus'];
      const appointmentId = isAppointment
                          ? this.agentInfo['appointmentId']
                          : this.latestReservedAppointment.id;
        getAppointmentDetail(appointmentId!).then(res => {
        appointmentService.getAppointmentDetail(appointmentId!).then(res => {
            this.appointmentDetail = {
                ...this.appointmentDetail,
                ...res.data
                ...res,
                satisfactionScore:  this.agentInfo['appointmentScore'],
            };
            this.width = isMobileDevice() ? '80%' : '';
            this.isVisibleDialog = true;
@@ -347,14 +355,14 @@
        }
        this.appointmentDetail.satisfactionScore = this.inputScore;
        userReviewsConsultants(reviewParams).then((res) => {
        reviewsService.userReviewsConsultants(reviewParams).then((res) => {
            this.reviewsBtn = false;
            this.storeConsultantList();
        });
    }
    cancel() {
        cancelAppointment(this.latestReservedAppointment.id).then(res => {
        appointmentService.cancelAppointment(this.latestReservedAppointment.id).then(res => {
            this.storeConsultantList();
            this.isVisibleDialog = false;
            this.isCancelPopup = false;
PAMapp/components/Consultant/ConsultantList.vue
@@ -10,7 +10,7 @@
        </template>
        <template v-if="isUserLogin && agentList.length === 0">
            <div class="emptyRowStyle">
                <div class="smTxt txt">您目前無已聯絡顧問</div>
                <div class="smTxt txt">{{ noDataPlaceholder }}</div>
            </div>
        </template>
        <template v-if="!isUserLogin">
@@ -24,14 +24,14 @@
<script lang="ts">
import { Vue, Component, Prop, namespace } from 'nuxt-property-decorator';
import { Consultant } from '~/assets/ts/models/consultant.model';
import { Role } from '~/assets/ts/models/enum/Role';
import { Consultant } from '~/shared/models/consultant.model';
const roleStorage = namespace('localStorage');
@Component
export default class ConsultantList extends Vue {
    @Prop() agents!: Consultant[];
    @Prop() title! : string;
    @roleStorage.Getter isUserLogin!:boolean;
    get agentList(){
@@ -40,6 +40,12 @@
        )
    }
    get noDataPlaceholder(): string {
      return this.title === 'contactedList'
                          ? '您目前無已聯絡顧問'
                          : '您目前無已選顧問';
    }
}
</script>
PAMapp/components/Consultant/ConsultantSwiper.vue
@@ -29,8 +29,8 @@
<script lang="ts">
import { Vue, Component, Prop } from 'vue-property-decorator';
import { SwiperOptions } from 'swiper';
import { Consultant } from '~/assets/ts/models/consultant.model';
import { hideReviews } from '~/assets/ts/const/hide-reviews';
import { Consultant } from '~/shared/models/consultant.model';
import { hideReviews } from '~/shared/const/hide-reviews';
@Component
export default class UiSwiper extends Vue {
PAMapp/components/NavBar.vue
@@ -34,7 +34,7 @@
<script lang="ts">
  import { Vue, Component } from 'vue-property-decorator';
  import { namespace } from 'nuxt-property-decorator';
  import { Role } from '~/assets/ts/models/enum/Role';
  import { Role } from '~/shared/models/enum/role';
  import * as _ from 'lodash';
  const roleStorage = namespace('localStorage');
@@ -77,6 +77,11 @@
        title: '我的顧問清單',
      },
      {
        authorityOfRoleList: [Role.NOT_LOGIN, Role.USER],
        routeUrl: '/faq',
        title: 'F&Q å¸¸è¦‹å•é¡Œ',
      },
      {
        authorityOfRoleList: [Role.USER, Role.ADMIN],
        routeUrl: '',
        title: '登出',
PAMapp/components/QuickFilter/QuickFilterConsultantList.vue
@@ -82,8 +82,8 @@
<script lang="ts">
import { ElCarousel } from 'element-ui/types/carousel';
import { Vue, Component, Prop } from 'vue-property-decorator';
import { Consultant } from '~/assets/ts/models/consultant.model';
import { hideReviews } from '~/assets/ts/const/hide-reviews';
import { Consultant } from '~/shared/models/consultant.model';
import { hideReviews } from '~/shared/const/hide-reviews';
@Component
export default class QuickFilterConsultantList extends Vue {
PAMapp/components/QuickFilter/QuickFilterSelector.vue
@@ -66,8 +66,8 @@
<script lang="ts">
import { Vue, Component, Prop, Watch, Emit } from 'nuxt-property-decorator';
import { hideReviews } from '~/assets/ts/const/hide-reviews';
import { FastQueryParams, QuestionOption, Selected } from '~/assets/ts/models/quickFilter.model';
import { hideReviews } from '~/shared/const/hide-reviews';
import { FastQueryParams, QuestionOption, Selected } from '~/shared/models/quick-filter.model';
@Component
export default class QuickFilterDrawer extends Vue {
    pickedItem: FastQueryParams = {
PAMapp/components/Ui/UiField.vue
@@ -13,7 +13,7 @@
<script lang="ts">
import { Vue, Component, Prop } from 'vue-property-decorator';
import { isMobileDevice } from '~/assets/ts/device';
import { isMobileDevice } from '~/shared/device';
@Component
export default class UiField extends Vue {
PAMapp/components/Ui/UiPagination.vue
@@ -12,7 +12,7 @@
<script lang="ts">
import { Vue, Component, Prop, Emit, Watch } from 'nuxt-property-decorator';
import { Consultant } from '~/assets/ts/models/consultant.model';
import { Consultant } from '~/shared/models/consultant.model';
@Component
export default class UiPagination extends Vue {
PAMapp/components/popUpFrame.vue
@@ -15,7 +15,7 @@
<script lang="ts">
  import { Vue, Component, Prop,Emit, Watch, PropSync} from 'vue-property-decorator';
  import { isMobileDevice } from '../assets/ts/device';
  import { isMobileDevice } from '~/shared/device';
  @Component
  export default class PopUpFrame extends Vue {
    @PropSync('isOpen',{type:Boolean,default:false}) syncIsOpen!:boolean;
PAMapp/pages/accountSetting/index.vue
@@ -70,8 +70,9 @@
<script lang="ts">
import { Vue,Component } from 'vue-property-decorator'
import { getUserAccountSetting, updateAccountSetting } from '~/assets/ts/api/consultant';
import { UserSetting } from '~/assets/ts/models/account.model';
import { UserSetting } from '~/shared/models/account.model';
import accountSettingService from '~/shared/services/account-setting.service';
@Component
export default class AccountSetting extends Vue {
@@ -139,7 +140,7 @@
                phone: this.phoneValue,
                email: this.emailValue
            }
            updateAccountSetting(editSettingInfo).then((res: any) => {
            accountSettingService.updateAccountSetting(editSettingInfo).then((res: any) => {
                console.log('updateRes:', res);
                this.resetSettingForm();
            });
@@ -153,7 +154,7 @@
        }
        mounted(){
            getUserAccountSetting().then((userInfo: UserSetting)=>{
            accountSettingService.getUserAccountSetting().then((userInfo: UserSetting)=>{
                this._userSetting = {
                    name: userInfo.name || '',
                    phone: userInfo.phone || '',
PAMapp/pages/agentInfo/_agentNo.vue
@@ -190,10 +190,10 @@
import { namespace } from 'nuxt-property-decorator';
import { Vue, Component } from 'vue-property-decorator';
import myConsultantService from '~/assets/ts/services/my-consultant.service';
import { AgentInfo } from '~/assets/ts/models/agent-info.model';
import { hideReviews } from '~/assets/ts/const/hide-reviews';
import { Role } from '~/assets/ts//models/enum/Role';
import myConsultantService from '~/shared/services/my-consultant.service';
import { AgentInfo } from '~/shared/models/agent-info.model';
import { hideReviews } from '~/shared/const/hide-reviews';
import { Role } from '~/shared/models/enum/role';
const roleStorage = namespace('localStorage');
PAMapp/pages/consultantLogin/index.vue
@@ -58,9 +58,9 @@
<script lang="ts">
  import { Vue, Component , namespace } from 'nuxt-property-decorator';
  import { AxiosError } from 'axios';
  import { Role } from '~/assets/ts/models/enum/Role';
  import ErrorMessageBox from '~/assets/ts/errorService';
  import loginService from '~/assets/ts/services/login.service'
  import { Role } from '~/shared/models/enum/role';
  import ErrorMessageBox from '~/shared/errorService';
  import loginService from '~/shared/services/login.service'
  const roleStorage = namespace('localStorage');
  @Component({
PAMapp/pages/faq.vue
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,25 @@
<template>
    <el-tree
        :data="faqList"
        :props="defaultProps"
        icon-class="icon-add"
        class="fix-chrome-click--issue"
    ></el-tree>
</template>
<script lang="ts">
import { Vue, Component } from 'nuxt-property-decorator';
import { faqList } from '~/shared/const/faqList';
@Component
export default class Faq extends Vue {
    faqList = faqList;
    defaultProps = {
        children: 'details',
        label: 'label'
    }
}
</script>
<style lang="scss" scoped></style>
PAMapp/pages/index.vue
@@ -44,7 +44,7 @@
<script lang="ts">
  import { Vue, Component, State, Action, Watch, namespace } from 'nuxt-property-decorator';
  import { Consultant } from '~/assets/ts/models/consultant.model';
  import { Consultant } from '~/shared/models/consultant.model';
  const localStorage = namespace('localStorage');
  @Component({
PAMapp/pages/login/index.vue
@@ -335,14 +335,14 @@
<script lang="ts">
import { namespace } from 'nuxt-property-decorator';
import { Vue, Component, Ref } from 'vue-property-decorator';
import ErrorMessageBox from '~/assets/ts/errorService';
import { OtpErrorCode } from '~/assets/ts/models/enum/otpErrorCode';
import { Role } from '~/assets/ts/models/enum/Role';
import { LoginRequest } from '~/assets/ts/models/loginRequest.model';
import { LoginVerify } from '~/assets/ts/models/loginVerify.model';
import { OtpInfo } from '~/assets/ts/models/otpInfo.model';
import { RegisterInfo } from '~/assets/ts/models/registerInfo';
import loginService from '~/assets/ts/services/login.service';
import ErrorMessageBox from '~/shared/errorService';
import { OtpErrorCode } from '~/shared/models/enum/otpErrorCode';
import { Role } from '~/shared/models/enum/role';
import { LoginRequest } from '~/shared/models/loginRequest.model';
import { LoginVerify } from '~/shared/models/loginVerify.model';
import { OtpInfo } from '~/shared/models/otpInfo.model';
import { RegisterInfo } from '~/shared/models/registerInfo';
import loginService from '~/shared/services/login.service';
const roleStorage = namespace('localStorage');
@@ -415,8 +415,8 @@
    clearInterval(this.autoRedirectInterval);
  }
  //////////////////////////////////////////////////////////
  detectContractReadStatus(event: any): void {
    const scrollTop = Math.round(event.target.scrollTop);
    const height = event.target.scrollHeight - event.target.clientHeight;
@@ -751,10 +751,10 @@
  }
.pam-register-dialog__contract {
  $DEVICE_EXTRA_HEIGHT: 42px;
  $DEVICE_EXTRA_HEIGHT: 80px;
  $ALIGN_PADDING: 60px;
  $TOP_CONTENT_HEIGHT: 186px;
  $BOTTOM_CONTENT_HEIGHT: 131px;
  $TOP_CONTENT_HEIGHT: 211px;
  $BOTTOM_CONTENT_HEIGHT: 141px;
  // text-align:start;
  max-height: calc(100vh - $DEVICE_EXTRA_HEIGHT - $ALIGN_PADDING - $TOP_CONTENT_HEIGHT - $BOTTOM_CONTENT_HEIGHT);
  overflow-y: scroll;
PAMapp/pages/myAppointmentList.vue
@@ -45,7 +45,7 @@
import * as _ from 'lodash';
import { ClientInfo } from '~/assets/ts/models/client.model';
import { ClientInfo } from '~/shared/models/client.model';
@Component({
    layout: 'home',
PAMapp/pages/myAppointmentList/appointmentList.vue
@@ -25,7 +25,7 @@
<script lang="ts">
import { Vue, Component, State, Watch } from 'nuxt-property-decorator';
import { ClientInfo } from '~/assets/ts/models/client.model';
import { ClientInfo } from '~/shared/models/client.model';
@Component
export default class ClientReservedList extends Vue {
PAMapp/pages/myAppointmentList/contactedList.vue
@@ -29,7 +29,7 @@
<script lang="ts">
import { Vue, Component, Watch, State } from 'nuxt-property-decorator';
import { ClientInfo } from '~/assets/ts/models/client.model';
import { ClientInfo } from '~/shared/models/client.model';
@Component
export default class ClientContactedList extends Vue {
PAMapp/pages/myConsultantList.vue
@@ -26,7 +26,7 @@
<script lang='ts'>
import { Vue, Component, Watch, State, Action } from 'nuxt-property-decorator';
import { Consultant, ConsultantWithAppointmentId } from '~/assets/ts/models/consultant.model';
import { Consultant, ConsultantWithAppointmentId } from '~/shared/models/consultant.model';
@Component
export default class myConsultantList extends Vue {
PAMapp/pages/myConsultantList/consultantList.vue
@@ -2,6 +2,7 @@
    <div>
        <ConsultantList
            :agents="pageList"
            :title="'consultantList'"
        ></ConsultantList>
        <UiPagination
@@ -13,7 +14,7 @@
<script lang="ts">
import { Vue, Component, Prop } from 'nuxt-property-decorator';
import { Consultant } from '~/assets/ts/models/consultant.model';
import { Consultant } from '~/shared/models/consultant.model';
@Component
PAMapp/pages/myConsultantList/contactedList.vue
@@ -2,6 +2,7 @@
    <div>
        <ConsultantList
            :agents="pageList"
            :title="'contactedList'"
        ></ConsultantList>
        <UiPagination
@@ -13,7 +14,7 @@
<script lang="ts">
import { Vue, Component, Prop } from 'nuxt-property-decorator' ;
import { Consultant } from '~/assets/ts/models/consultant.model';
import { Consultant } from '~/shared/models/consultant.model';
@Component
PAMapp/pages/questionnaire/_agentNo.vue
@@ -115,8 +115,8 @@
    </PopUpFrame>
    <PopUpFrame :isOpen.sync="sendReserve" @update:isOpen="closeReservePopUp">
        <div class="text--middle  mt-30 sendReserve-txt">預約成功!您預約的保險顧問會</div>
        <div class="text--middle sendReserve-txt">儘速與您聯絡!</div>
        <div class="text--middle  mt-30 sendReserve-txt">預約成功!</div>
        <div class="text--middle sendReserve-txt">您預約的顧問會儘速與您聯絡!</div>
        <div class="text--center mdTxt">
          <el-button type="primary"
            @click="closeReservePopUp">
@@ -140,13 +140,16 @@
<script lang="ts">
import { Vue, Component, State, Action, Watch, namespace } from 'nuxt-property-decorator';
import { addFavoriteConsultant, appointmentDemand, AppointmentParams, AppointmentRequests ,editAppointment } from '~/assets/ts/api/consultant';
import { getRequestQuestionFromStorage, getRequestsFromStorage, removeRequestQuestionFromStorage, setRequestsToStorage } from '~/assets/ts/storageRequests';
import { getRequestsFromStorage, removeRequestQuestionFromStorage, setRequestsToStorage } from '~/shared/storageRequests';
import _ from 'lodash';
import { Consultant } from '~/assets/ts/models/consultant.model';
import { ContactType } from '~/assets/ts/models/enum/ContactType';
import { Gender } from '~/assets/ts/models/enum/Gender';
import { RegisterInfo } from '~/assets/ts/models/registerInfo';
import queryConsultantService from '~/shared/services/query-consultant.service';
import appointmentService from '~/shared/services/appointment.service';
import { Consultant } from '~/shared/models/consultant.model';
import { ContactType } from '~/shared/models/enum/ContactType';
import { Gender } from '~/shared/models/enum/Gender';
import { RegisterInfo } from '~/shared/models/registerInfo';
import { AppointmentParams, AppointmentRequests } from '~/shared/models/appointment.model';
  const roleStorage = namespace('localStorage');
  @Component
@@ -154,6 +157,7 @@
    @State('myConsultantList') myConsultantList!: Consultant[];
    @Action storeConsultantList!: () => Promise<number>;
    @roleStorage.Getter isUserLogin!:boolean;
    @roleStorage.State recommendConsultantItem!:string;
    genderOptions=[
      {
@@ -300,7 +304,7 @@
    private setMyRequest(): void {
      const storageMyRequest = getRequestsFromStorage();
      const storageMyQuestion = getRequestQuestionFromStorage();
      const storageMyRequirement = this.recommendConsultantItem ? JSON.parse(this.recommendConsultantItem).requirements:[];
      if (storageMyRequest) {
        this.myRequest = {
@@ -314,10 +318,10 @@
        };
      }
      if (storageMyQuestion) {
      if (storageMyRequirement) {
        this.myRequest = {
          ...this.myRequest,
          requirement: storageMyQuestion
          requirement: storageMyRequirement
        }
        removeRequestQuestionFromStorage();
      }
@@ -349,7 +353,7 @@
      if (this.isEditBtn) {
        this.sentEditAppointmentDemand();
      } else {
        addFavoriteConsultant([this.$route.params.agentNo]).then(res => this.sentAppointmentDemand());
        queryConsultantService.addFavoriteConsultant([this.$route.params.agentNo]).then(res => this.sentAppointmentDemand());
      }
    }
@@ -362,7 +366,7 @@
          agentNo: this.$route.params.agentNo
        };
        appointmentDemand(data).then(res => {
        queryConsultantService.appointmentDemand(data).then(res => {
            this.sendReserve = true;
            this.myRequest.hopeContactTime = [];
            setRequestsToStorage(this.myRequest);
@@ -377,7 +381,7 @@
          id: this.appointmentId,
          otherRequirement: null
        }
        editAppointment(info).then(res => {
        appointmentService.editAppointment(info).then(res => {
          this.sendReserve = true;
          this.myRequest.hopeContactTime = [];
          setRequestsToStorage(this.myRequest);
PAMapp/pages/quickFilter/index.vue
@@ -66,10 +66,11 @@
<script lang="ts">
import { Vue, Component, namespace } from 'nuxt-property-decorator';
import { Consultant } from '~/assets/ts/models/consultant.model';
import { fastQuery } from '~/assets/ts/api/consultant';
import { questionList } from '~/assets/ts/const/quickFilter-questionList';
import { FastQueryParams, QuestionOption, Selected } from '~/assets/ts/models/quickFilter.model';
import queryConsultantService from '~/shared/services/query-consultant.service';
import { Consultant } from '~/shared/models/consultant.model';
import { questionList } from '~/shared/const/quickFilter-questionList';
import { FastQueryParams, QuestionOption, Selected } from '~/shared/models/quick-filter.model';
const localStorage = namespace('localStorage');
@Component
@@ -168,7 +169,7 @@
            status: ''
        }
        fastQuery(data).then((consultantList) => {
        queryConsultantService.fastQuery(data).then((consultantList) => {
            this.consultantList = consultantList;
            this.storageQuickFilter(JSON.stringify(this.confirmItem))
        })
PAMapp/pages/recommendConsultant/index.vue
@@ -95,8 +95,7 @@
    State
  } from 'nuxt-property-decorator';
  import * as _ from 'lodash';
  import { Seniority } from '~/assets/ts/models/enum/seniority';
  import { setRequestQuestionToStorage } from '~/assets/ts/storageRequests';
  import { Seniority } from '~/shared/models/enum/seniority';
  const localStorage = namespace('localStorage');
@@ -242,8 +241,6 @@
    }
    async makePair() {
      await this.storeStrictQueryList(this.strictQueryDto).then(dataLength => {
        const questions = this.strictQueryDto.requirements.length ? this.strictQueryDto.requirements : [];
        setRequestQuestionToStorage(questions);
        if (dataLength === 0) {
          this.isVisiblePopUp = true;
          return;
PAMapp/pages/recommendConsultant/result.vue
@@ -83,8 +83,8 @@
</template>
<script lang="ts">
import {Vue,Component, State, namespace, Action} from 'nuxt-property-decorator';
import { AgentOfStrictQuery } from '~/assets/ts/api/consultant';
import { hideReviews } from '~/assets/ts/const/hide-reviews';
import { hideReviews } from '~/shared/const/hide-reviews';
import { AgentOfStrictQuery } from '~/shared/models/strict-query.model';
const localStorage = namespace('localStorage');
PAMapp/pages/record/index.vue
@@ -42,7 +42,7 @@
</template>
<script lang="ts">
import { Vue, Component, Action, State, namespace } from 'nuxt-property-decorator';
import { AppointmentLog } from '~/assets/ts/models/appointment.model';
import { AppointmentLog } from '~/shared/models/appointment.model';
const roleStorage = namespace('localStorage');
PAMapp/pages/userReviews/index.vue
@@ -55,7 +55,7 @@
</template>
<script lang="ts">
import { Vue,Component } from 'vue-property-decorator'
import { isMobileDevice } from '~/assets/ts/device';
import { isMobileDevice } from '~/shared/device';
@Component({
PAMapp/pages/userReviewsRecord/index.vue
@@ -42,7 +42,7 @@
</template>
<script lang="ts">
import { Vue, Component, Action, State, namespace } from 'nuxt-property-decorator';
import { AppointmentLog } from '~/assets/ts/models/appointment.model';
import { AppointmentLog } from '~/shared/models/appointment.model';
const roleStorage = namespace('localStorage');
PAMapp/shared/const/faqList.ts
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,43 @@
export const faqList = [
    {
        label: '我如何登入註冊?',
        details: [
            { label: '您可點擊右上角頭像圖示後,點擊「登入|註冊」進行登入或註冊。' }
        ]
    },
    {
        label: '我登入註冊時,為何無法收到驗證碼?',
        details: [
            { label: '【手機登入註冊】' },
            { label: ' (1) è«‹æ‚¨å‘電信業者確認是否有開啟停收企業簡訊&廣告簡訊,確認電信業者端設定可接收後,請於一小時後重開機。' },
            { label: ' (2) è«‹æ‚¨ç¢ºèªæ‰‹æ©Ÿå¯å­˜å…¥ç°¡è¨Šå®¹é‡ç©ºé–“是否已滿,若已滿,請刪除部分簡訊後,手機重新開機。' },
            { label: ' (3) è«‹æ‚¨ç¢ºèªæ˜¯å¦è™•於收訊不穩或收訊不良的場所,若是,請您至收訊良好的場所,手機重開機。'},
            { label: ' (4) æ™ºæ…§åž‹æ‰‹æ©Ÿæœ‰å¤šç¨®éŽæ¿¾ä¾†é›»è»Ÿé«”,比如:whoscall、防毒軟體等,可設定黑名單來電、簡訊,也許曾經被設定到。'},
            { label: '【email登入註冊】'},
            { label: ' (1) å¯èƒ½æ˜¯æ‚¨å¡«å¯«çš„Email帳號無效或輸入時錯誤,請您檢核正確的Email再次登入或註冊。'},
            { label: ' (2) å¯èƒ½æ˜¯æ‚¨çš„Email服務商判斷驗證信為垃圾信,建議您至垃圾郵件匣中讀取,並將它設定為非垃圾郵件。'},
            { label: ' (3) å¯èƒ½æ˜¯æ‚¨çš„Email服務商之安全機制阻擋驗證信,建議您可聯絡您的Email服務商或是使用其他的Email帳號重新註冊。'}
        ]
    },
    {
        label: '我如何進行顧問媒合?',
        details: [
            { label: '(1) æ‚¨å¯æ–¼é¦–頁點擊「快速篩選」、「嚴選配對」按鈕進行顧問媒合。'},
            { label: '(2) å¿«é€Ÿç¯©é¸ï¼šå¯ä»¥é¸æ“‡ä»»ä¸€å€‹æ¢ä»¶ï¼Œå¿«é€Ÿæ‰¾åˆ°ç¬¦åˆæ‚¨éœ€æ±‚的顧問;嚴選配對:輸入問題回答,依照您的需求推薦嚴選顧問。'}
        ]
    },
    {
        label: '我如何預約顧問?',
        details: [
            { label: '依「快速篩選」、「嚴選配對」的媒合結果或查看「推薦顧問清單」後,進入顧問卡片資訊點擊「進行預約」。填寫聯絡時間、想詢問的問題以及個人資料,方可送出預約單。'}
        ]
    },
    {
        label: '我如何取消預約單或編輯預約單?',
        details: [{ label: '您可於顧問清單中點擊「已預約」的顧問,進入預約成功頁面,進行預約單的取消或編輯。'}]
    },
    {
        label: '我進行預約後,顧問會用什麼方式聯繫我?',
        details: [{ label: '顧問會依據保戶登入或註冊時提供的連絡資訊(手機或EMAIL)為主要聯繫您的方式。'}]
    }
]
PAMapp/shared/const/hide-reviews.ts
PAMapp/shared/const/quickFilter-questionList.ts
File was renamed from PAMapp/assets/ts/const/quickFilter-questionList.ts
@@ -1,4 +1,4 @@
import { QuestionOption } from "../models/quickFilter.model";
import { QuestionOption } from "~/shared/models/quick-filter.model";
export const questionList: QuestionOption[] = [
    {
PAMapp/shared/device.ts
PAMapp/shared/errorService.ts
PAMapp/shared/models/ConsultantLoginInfo.ts
PAMapp/shared/models/account.model.ts
PAMapp/shared/models/agent-info.model.ts
PAMapp/shared/models/appointment.model.ts
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,95 @@
export interface AppointmentLog {
    id              : number,
    createdDate     : Date,
    lastModifiedDate: Date,
    customerId      : number,
    agentNo         : string,
    status          : 'UNFILLED' | 'FILLED',
    score           : number,
    agentName       : string,
    customerName    : string,
}
export interface Appointment {
  id                 : number;
  phone?             : string;
  email?             : string;
  contactType        : string;
  gender             : string;
  age                : string;
  job                : string;
  requirement        : string;
  communicateStatus  : string;
  hopeContactTime    : string;
  otherRequirement?  : string;
  appointmentDate    : string;
  lastModifiedDate   : string;
  agentNo            : string;
  customerId         : number;
  name               : string;
  consultantViewTime?: string;
  consultantReadTime?: string;
  satisfactionScore? : number;
};
export interface AppointmentWithConsultantInfo extends Appointment {
  consultantName      : string;
  consultantAvatar    : string;
  consultantExpertList: string[]
  updateTime          : Date | string;
  contactStatus       : string;
}
export interface AppointmentDetail {
  id               : number;
  phone            : string;
  email            : string;
  contactType      : string;
  gender           : string;
  age              : string;
  job              : string;
  requirement      : string;
  communicateStatus: string;
  hopeContactTime  : string;
  otherRequirement : string;
  appointmentDate  : string;
  agentNo          : string;
  customerId       : number;
  name             : string;
}
export interface AppointmentParams {
  phone          : string;
  email          : string;
  contactType    : string;
  gender         : string;
  age            : string;
  job            : string;
  requirement    : string;
  hopeContactTime: string;
  agentNo        : string;
}
export interface EditAppointmentParams {
  id              : number,
  phone           : string,
  email           : string,
  contactType     : string,
  gender          : string,
  age             : string,
  job             : string,
  requirement     : string,
  hopeContactTime : string,
  otherRequirement: null
}
export interface AppointmentRequests {
  phone          : string,
  email          : string,
  contactType    : string,
  gender         : string,
  age            : string,
  job            : string,
  requirement    : string[],
  hopeContactTime: ContactTime[],
  agentNo        : string,
}
export interface ContactTime {
selectWeekOptions : string[],
selectTimesOptions: string[]
}
PAMapp/shared/models/client.model.ts
PAMapp/shared/models/clientInfo.ts
PAMapp/shared/models/consultant.model.ts
PAMapp/shared/models/editAppointmentParams.model.ts
PAMapp/shared/models/enum/ContactType.ts
PAMapp/shared/models/enum/Gender.ts
PAMapp/shared/models/enum/Role.ts
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,5 @@
export enum Role{
    ADMIN     = 'admin',
    USER      = 'user',
    NOT_LOGIN = ''
}
PAMapp/shared/models/enum/otpErrorCode.ts
PAMapp/shared/models/enum/seniority.ts
PAMapp/shared/models/loginRequest.model.ts
PAMapp/shared/models/loginSuccessToken.model.ts
PAMapp/shared/models/loginVerify.model.ts
PAMapp/shared/models/otpInfo.model.ts
PAMapp/shared/models/quick-filter.model.ts
PAMapp/shared/models/registerInfo.ts
PAMapp/shared/models/reviews.model.ts
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,4 @@
export interface UserReviewsConsultantsParams{
  appointmentId: number,
  score        : number,
}
PAMapp/shared/models/strict-query.model.ts
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,24 @@
export interface StrictQueryParams {
  gender          : string;
  avgScore        : number;
  status          : string;    //phase 1 disable
  area            : string;
  requirements    : string[];
  otherRequirement: string;
  seniority       : string;
  popularTags     : string[];
  otherPopularTags: string;
}
export interface AgentOfStrictQuery {
  agentNo      : string;
  name         : string;
  img          : string;
  expertise    : string[];
  avgScore     : number;
  contactStatus: null;
  updateTime   : null;
  seniority    : string;
  new          : boolean;
}
PAMapp/shared/services/account-setting.service.ts
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,17 @@
import { http } from "./httpClient";
import { UserSetting } from "~/shared/models/account.model";
class AccountSettingService{
  //取得使用者帳號資訊
  async getUserAccountSetting() : Promise<UserSetting> {
    return http.get<UserSetting>('/customer/info').then(res => res.data);
  }
  //更新使用者帳號資訊
  async updateAccountSetting(params: any) : Promise<any> {
    return http.put('/customer/info', params ).then(res => res.data);
  }
}
export default new AccountSettingService();
PAMapp/shared/services/appointment.service.ts
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,46 @@
import { http } from "./httpClient";
import { ClientInfo } from "~/shared/models/client.model";
import { AppointmentDetail, EditAppointmentParams } from "~/shared/models/appointment.model";
class AppointmentService {
  // å–得所有預約清單
  async getMyAppointmentList(): Promise<ClientInfo[]> {
    return http.get('/consultant/getMyAppointment').then((res) => {
      const hasNewAppointment = res.data.find((appointment: ClientInfo) => !appointment.consultantViewTime);
      if (hasNewAppointment) {
        this.viewAllAppointment();
      }
      return res.data;
    });
  }
  // é¡§å•ç™»å…¥é¡¯ç¤ºæ–°é ç´„單筆數後觸發
  private viewAllAppointment(): void {
    http.post('/consultant/record/allAppointmentsView').then();
  }
  // è®€å–預約單時觸發,紀錄讀取預約單時間
  recordRead(appointmentId: number): Promise<void> {
    return http.post(`/appointment/recordRead/${appointmentId}`);
  }
  // å–得預約單細節
  async getAppointmentDetail(appointmentId: number):Promise<AppointmentDetail> {
    return http.get(`/appointment/getDetail/${appointmentId}`).then((res) => res.data);
  }
  // å–消預約
  cancelAppointment(appointmentId: number): Promise<void> {
    return http.delete(`/appointment/${appointmentId}`);
  }
  // ç·¨è¼¯é ç´„
  editAppointment(editAppointmentParams: EditAppointmentParams) {
    return http.put('/appointment', editAppointmentParams);
  }
}
export default new AppointmentService();
PAMapp/shared/services/httpClient.ts
PAMapp/shared/services/login.service.ts
PAMapp/shared/services/my-consultant.service.ts
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,42 @@
import { http } from "./httpClient";
import { AgentInfo } from '~/shared/models/agent-info.model';
import { Consultant } from "../models/consultant.model";
class MyConsultantService {
  async getFavoriteConsultantList(): Promise<Consultant[]> {
    return http.get<Consultant[]>('/consultant/favorite').then((res) => {
      const hasNewConsultant = res.data.find((consultant) => !consultant.customerViewTime);
      if (hasNewConsultant) {
        this.viewMyConsultantList();
      };
      return res.data;
    });
  }
  private viewMyConsultantList(): void {
    http.post('/consultant/favorite/view');
  }
  //顧問詳細資訊
  async getConsultantDetail(agentNo:string): Promise<AgentInfo> {
    return http.get('/consultant/detail', {params:{agentNo:agentNo}}).then((res) => res.data);
  }
  // ç§»é™¤é¡§å•
  async deleteConsultant(agentId: string) {
    return http.delete(`/consultant/favorite/${agentId}`);
  }
  // æ¨™è¨˜ç‚ºå·²è¯çµ¡
  markAsContact(appointmentId: number): Promise<void> {
    // TODO: è·Ÿå¾Œç«¯ç¢ºèªï¼Œé€™è£¡çš„ API ä¸æ‡‰è©²å‚³å›ž void, è€Œæ˜¯æ‡‰è©²æ˜¯æ›´æ–°å¾Œçš„資料 - Ben 2021/11/16
    // return http.post('/appointment/markAsContacted/'+appointmentId, undefined, {headers})
    //         .then(res => res.data)
    return http.post(`/appointment/markAsContacted/${appointmentId}`);
  }
}
export default new MyConsultantService();
PAMapp/shared/services/query-consultant.service.ts
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,37 @@
import { http } from "./httpClient";
import { Consultant } from "~/shared/models/consultant.model";
import { FastQueryParams } from "~/shared/models/quick-filter.model";
import { AgentOfStrictQuery, StrictQueryParams } from "~/shared/models/strict-query.model";
import { AppointmentParams } from "~/shared/models/appointment.model";
class QueryConsultantService {
  // æŽ¨è–¦ä¿éšªé¡§å•
  async getRecommendConsultantList(): Promise<Consultant[]> {
    return http.get<Consultant[]>('/consultant/recommend').then((res) => res.data);
  }
  // å¿«é€Ÿç¯©é¸
  async fastQuery(data: FastQueryParams): Promise<Consultant[]> {
    return http.post<Consultant[]>('/consultant/fastQuery', data).then(res => res.data);
  }
  // åš´é¸é…å°
  async strictQuery(data:StrictQueryParams): Promise<AgentOfStrictQuery[]>{
    return http.post('/consultant/strictQuery', data).then((res) => res.data);
  }
  // åŠ å…¥é¡§å•
  async addFavoriteConsultant(agentNoList: string[]) {
    return http.post('/consultant/favorite', { agentNoList });
  }
  // é ç´„前詢問
  async appointmentDemand(data: AppointmentParams) {
    return http.post('/appointment/customer/create', data);
  }
}
export default new QueryConsultantService();
PAMapp/shared/services/reviews.service.ts
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,18 @@
import { http } from "./httpClient";
import { UserReviewsConsultantsParams } from "../models/reviews.model";
import { AppointmentLog } from "../models/appointment.model";
class ReviewsService {
  //客戶進行滿意度評分
  userReviewsConsultants(data: UserReviewsConsultantsParams) {
    return http.post('/satisfaction/create', data );
  }
  //取得所有評分紀錄
  async getMyReviewLog(): Promise<AppointmentLog[]> {
    return http.get('/satisfaction/getMySatisfaction').then(res => res.data);
  }
}
export default new ReviewsService();
PAMapp/shared/storageConsultant.ts
PAMapp/shared/storageRequests.ts
File was renamed from PAMapp/assets/ts/storageRequests.ts
@@ -1,4 +1,4 @@
import { AppointmentRequests } from "./api/consultant";
import { AppointmentRequests } from "./models/appointment.model";
export function getRequestsFromStorage(): AppointmentRequests {
  const requests = localStorage.getItem('myRequests');
PAMapp/store/index.ts
@@ -1,15 +1,17 @@
import { StrictQueryParams } from '~/shared/models/strict-query.model';
import { Module, VuexModule, Mutation, Action } from 'vuex-module-decorators'
import { getMyReviewLog } from '~/assets/ts/api/appointment';
import { recommend, AgentOfStrictQuery, addFavoriteConsultant, deleteConsultant, strictQuery } from '~/assets/ts/api/consultant';
import { getFavoriteFromStorage, setFavoriteToStorage } from '~/assets/ts/storageConsultant';
import { getFavoriteFromStorage, setFavoriteToStorage } from '~/shared/storageConsultant';
import myConsultantService from '~/assets/ts/services/my-consultant.service';
import appointmentService from '~/assets/ts/services/appointment.service';
import myConsultantService from '~/shared/services/my-consultant.service';
import queryConsultantService from '~/shared/services/query-consultant.service';
import appointmentService from '~/shared/services/appointment.service';
import reviewsService from '~/shared/services/reviews.service';
import { Consultant } from '~/assets/ts/models/consultant.model';
import { AppointmentLog } from '~/assets/ts/models/appointment.model';
import { ClientInfo } from '~/assets/ts/models/client.model';
import { Consultant } from '~/shared/models/consultant.model';
import { AppointmentLog } from '~/shared/models/appointment.model';
import { ClientInfo } from '~/shared/models/client.model';
import { AgentOfStrictQuery } from '~/shared/models/strict-query.model';
@Module
export default class Store extends VuexModule {
    recommendList: Consultant[] = [];
@@ -57,7 +59,7 @@
    @Action
    storeRecommendList() {
        recommend().then(data => {
        queryConsultantService.getRecommendConsultantList().then(data => {
            this.context.commit('updateRecommend', data)
        })
    }
@@ -74,7 +76,7 @@
        if (localData?.length) {
            const agentNoList = localData.map(i => i.agentNo)
            await addFavoriteConsultant(agentNoList).then(res => {
            await queryConsultantService.addFavoriteConsultant(agentNoList).then(res => {
                localStorage.removeItem('favoriteConsultant')
            })
        }
@@ -94,7 +96,7 @@
        if (!this.isUserLogin) {
            setFavoriteToStorage(left);
        } else {
            await deleteConsultant(agentNo)
            await myConsultantService.deleteConsultant(agentNo)
        }
        this.context.commit('updateConsultantList', left)
@@ -109,7 +111,7 @@
            if (!found) {
                const newData = [consultantToAdd].concat(this.myConsultantList);
                if (this.isUserLogin) {
                    await addFavoriteConsultant([consultantToAdd.agentNo])
                    await queryConsultantService.addFavoriteConsultant([consultantToAdd.agentNo])
                } else {
                    setFavoriteToStorage(newData);
                }
@@ -134,7 +136,7 @@
    @Action
    storeMyAppointmentReviewLog() {
        getMyReviewLog().then((data) => {
        reviewsService.getMyReviewLog().then((data) => {
            const dataWithLatestDate = data.map((item) => {
                return {
                    ...item,
@@ -154,11 +156,11 @@
    }
    @Action
    async storeStrictQueryList(strictQueryDto) {
        return await strictQuery(strictQueryDto).then(res=>{
    async storeStrictQueryList(strictQueryDto: StrictQueryParams) {
        return await queryConsultantService.strictQuery(strictQueryDto).then(res=>{
            this.context.commit('localStorage/storageRecommendConsultant', JSON.stringify(strictQueryDto));
            this.context.commit('updateStrictQueryList', res.data)
            return res.data.length;
            this.context.commit('updateStrictQueryList', res)
            return res.length;
        });
    }
PAMapp/store/localStorage.ts
@@ -1,6 +1,6 @@
import { Module, Mutation, VuexModule ,Action } from 'vuex-module-decorators';
import { Role } from '~/assets/ts/models/enum/Role';
import { Selected } from '~/assets/ts/models/quickFilter.model';
import { Role } from '~/shared/models/enum/role';
import { Selected } from '~/shared/models/quick-filter.model';
@Module
export default class LocalStorage extends VuexModule {
  id_token = localStorage.getItem('id_token');
pamapi/src/doc/ÅU°ÝAPI/ÄY¿ï°t¹ï.txt
@@ -8,7 +8,7 @@
    "area":"桃園",
    "requirements": ["健康與保障","保單健檢/規劃"],
    "otherRequirement": "長照險",
    "seniority":        // "資深"帶"SENIOR"、"年輕"帶"YOUNG"、"不限"帶"UNLIMITED"
    "seniority": "SENIOR"       // "資深"帶"SENIOR"、"年輕"帶"YOUNG"、"不限"帶"UNLIMITED"
    "popularTags":["防疫","失能","防癌"],
    "otherPopularTags":"旅行險",
}
pamapi/src/doc/ÅU°ÝAPI/§Ö³t¿z¿ï.txt
@@ -5,7 +5,8 @@
    "gender": "female",
    "communicationStyles": [],
    "avgScore": 4,
    "status": "online"
    "status": "online",
    "seniority": "SENIOR"   // "資深"帶"SENIOR"、"年輕"帶"YOUNG"、"不限"帶"UNLIMITED"
}
response body:
pamapi/src/doc/ÅU°ÝAPI/«ü©wÅU°Ý¸Ô²Ó¸ê°T.txt
@@ -20,9 +20,6 @@
        "資產轉移"
    ],
    "concept": "壽險路上沒有捷徑,唯有給客戶信任感、安全感,才是最好的方法。從業以來,我一直秉持著「助人為快樂之本」的信念堅持著,她相信,一個好的業務人員,必須抱持著一顆熱心助人的心,才是永續經營壽險事業的不二法門。",
    "experiences": [
        "台大財金系",
        "美莓有精算師執政"
    ],
    "experiences": "台大財金系,美莓有精算師執政"
    "awards": "入選:2020年伯樂十大最佳業務員 æ“æœ‰è­‰ç…§ï¼šäººèº«ä¿éšªæ¥­å‹™å“¡è­‰ç…§ã€å¤–幣收付保險證照、人身保險代理人證照、財產保險代理人證照"
}
pamapi/src/main/java/com/pollex/pam/config/ApplicationProperties.java
@@ -18,6 +18,8 @@
    private String eServiceLoginUrl;
    private String eServiceLoginFunc;
    private String eServiceLoginSys;
    private SMS sms;
    private Email email;
    private String fileFolderPath;
    public boolean isMockLogin() {
@@ -76,6 +78,81 @@
        this.eServiceLoginSys = eServiceLoginSys;
    }
    public SMS getSms() {
        return sms;
    }
    public void setSms(SMS sms) {
        this.sms = sms;
    }
    public Email getEmail() {
        return email;
    }
    public void setEmail(Email email) {
        this.email = email;
    }
    public static class SMS {
        private String url;
        private String sourceCode;
        private String sender;
        private String smsType;
        public String getUrl() {
            return url;
        }
        public void setUrl(String url) {
            this.url = url;
        }
        public String getSourceCode() {
            return sourceCode;
        }
        public void setSourceCode(String sourceCode) {
            this.sourceCode = sourceCode;
        }
        public String getSender() {
            return sender;
        }
        public void setSender(String sender) {
            this.sender = sender;
        }
        public String getSmsType() {
            return smsType;
        }
        public void setSmsType(String smsType) {
            this.smsType = smsType;
        }
    }
    public static class Email {
        private String url;
        private String functionId;
        public String getUrl() {
            return url;
        }
        public void setUrl(String url) {
            this.url = url;
        }
        public String getFunctionId() {
            return functionId;
        }
        public void setFunctionId(String functionId) {
            this.functionId = functionId;
        }
    }
    public String getFileFolderPath() {
        return fileFolderPath;
    }
@@ -83,6 +160,5 @@
    public void setFileFolderPath(String fileFolderPath) {
        this.fileFolderPath = fileFolderPath;
    }
    
}
pamapi/src/main/java/com/pollex/pam/config/SecurityConfiguration.java
@@ -82,6 +82,7 @@
            .antMatchers("/api/register").permitAll()
            .antMatchers("/api/activate").permitAll()
            .antMatchers("/api/testLogin/**").permitAll()
            .antMatchers("/api/test/sendMsg/**").permitAll()
            .antMatchers("/api/otp/**").permitAll()
            .antMatchers("/api/login/validate/**").permitAll()
            .antMatchers("/api/eService/authenticate").permitAll()
pamapi/src/main/java/com/pollex/pam/security/provider/EServiceAuthenticationProvider.java
@@ -8,6 +8,7 @@
import com.pollex.pam.security.token.EServiceAuthenticationToken;
import com.pollex.pam.service.LoginRecordService;
import com.pollex.pam.service.dto.EServiceResponse;
import com.pollex.pam.service.util.HttpRequestUtil;
import com.pollex.pam.web.rest.errors.EServiceErrorException;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
@@ -21,7 +22,6 @@
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.security.authentication.AuthenticationServiceException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
@@ -105,7 +105,7 @@
    private ResponseEntity<EServiceResponse> loginByEService(String account, String paxxword) throws JsonProcessingException, GeneralSecurityException {
        RestTemplate restTemplate = getTrustAllRestTemplate();
        settingMessageConvertesToSpecifyType(restTemplate, MediaType.ALL);
        settingMessageConvertersToSpecifyType(restTemplate, MediaType.ALL);
        String urlTemplate = UriComponentsBuilder.fromHttpUrl(applicationProperty.geteServiceLoginUrl())
            .queryParam("func", applicationProperty.geteServiceLoginFunc())
@@ -140,7 +140,7 @@
        return new RestTemplate(requestFactory);
    }
    private void settingMessageConvertesToSpecifyType(RestTemplate restTemplate, MediaType mediaType) {
    private void settingMessageConvertersToSpecifyType(RestTemplate restTemplate, MediaType mediaType) {
        List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        converter.setSupportedMediaTypes(Collections.singletonList(mediaType));
pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java
@@ -36,6 +36,15 @@
                    set.add(criteriaBuilder.greaterThanOrEqualTo(root.get("avgScore"), param.getAvgScore().intValue()));
                }
                if(StringUtils.isNotEmpty(param.getSeniority()) && !StringUtils.equals(UNLIMITED, param.getSeniority())) {
                    if(YOUNG.equals(param.getSeniority())) {
                        set.add(criteriaBuilder.lessThanOrEqualTo(root.get("seniorityYear"), 5));
                    }
                    else if(SENIOR.equals(param.getSeniority())) {
                        set.add(criteriaBuilder.greaterThan(root.get("seniorityYear"), 5));
                    }
                }
                Predicate[] predicates = new Predicate[set.size()];
                predicates = set.toArray(predicates);
                return criteriaBuilder.and(predicates);
pamapi/src/main/java/com/pollex/pam/service/SendMsgService.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,107 @@
package com.pollex.pam.service;
import com.pollex.pam.config.ApplicationProperties;
import com.pollex.pam.config.ApplicationProperties.SMS;
import com.pollex.pam.service.dto.*;
import com.pollex.pam.service.util.HttpRequestUtil;
import com.pollex.pam.web.rest.errors.SendEmailFailException;
import com.pollex.pam.web.rest.errors.SendSMSFailException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Base64;
import java.util.Base64.Encoder;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
@Service
public class SendMsgService {
    private static final Logger log = LoggerFactory.getLogger(SendMsgService.class);
    private final Encoder encoder = Base64.getEncoder();
    @Autowired
    ApplicationProperties applicationProperties;
    public void sendMsgBySMS(String toMobile, String content) throws SendSMSFailException{
        SMS smsProperties = applicationProperties.getSms();
        SendSMSRequest sendSMSRequest = new SendSMSRequest();
        sendSMSRequest.setpKey(UUID.randomUUID().toString());
        sendSMSRequest.setSourceCode(smsProperties.getSourceCode());
        sendSMSRequest.setSender(smsProperties.getSender());
        sendSMSRequest.setMsgTypeSet(smsProperties.getSmsType());
        sendSMSRequest.setSendTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:00")));
        sendSMSRequest.setSubject("");
        sendSMSRequest.setActivityId("");
        SMSDetail smsDetail = new SMSDetail();
        smsDetail.setMobile(toMobile);
        smsDetail.setContent(encoder.encodeToString(content.getBytes(StandardCharsets.UTF_8)));
        sendSMSRequest.setDetail(Collections.singletonList(smsDetail));
        try {
            ResponseEntity<SendSMSResponse> responseEntity = HttpRequestUtil.postWithJson(smsProperties.getUrl(), sendSMSRequest, SendSMSResponse.class);
            log.debug("response status code = {}", responseEntity.getStatusCode());
            log.debug("smsResponse = {}", responseEntity.getBody());
            // todo å¯èƒ½éœ€è¦å†è£œä¸Šå¾ŒçºŒéŒ¯èª¤è™•理,但要先測通
        }
        catch (Exception e) {
            log.debug("send sms failed!", e);
            throw new SendSMSFailException();
        }
    }
    public void sendMsgByEmail(String from, String to, String subject, String content, boolean htmlFormat) throws SendEmailFailException{
        sendMsgByEmail(from, to, subject, content, htmlFormat, Collections.emptyList(), Collections.emptyList());
    }
    public void sendMsgByEmail(
        String fromAddress, String toAddress, String subject, String content, boolean htmlFormat, List<String> toCCAddress,
        List<String> attachments) throws SendEmailFailException
    {
        SendMailRequest sendMailRequest = new SendMailRequest();
        sendMailRequest.setSendMailAddresses(Collections.singletonList(toAddress));
        sendMailRequest.setFrom(fromAddress);
        sendMailRequest.setContent(content);
        sendMailRequest.setSubject(subject);
        sendMailRequest.setSendCCMailAddresses(toCCAddress);
        sendMailRequest.setAttachments(attachments);
        sendMailRequest.setHtmlFormat(htmlFormat);
        sendMailRequest.setFunctionId(applicationProperties.getEmail().getFunctionId());
        sendMsgByEmail(sendMailRequest);
    }
    public void sendMsgByEmail(SendMailRequest sendMailRequest) throws SendEmailFailException{
        try {
            ResponseEntity<SendMailResponse> responseEntity =
                HttpRequestUtil.postWithJson( applicationProperties.getEmail().getUrl(), sendMailRequest, SendMailResponse.class);
            SendMailResponse sendMailResponse = responseEntity.getBody();
            log.debug("response status code = {}", responseEntity.getStatusCode());
            log.debug("emailResponse = {}", responseEntity.getBody());
            if(sendMailResponse == null || sendMailResponse.getData() == null || "ADDED".equalsIgnoreCase(sendMailResponse.getData().getMessageStatus())) {
                throw new SendEmailFailException();
            }
        }
        catch (SendEmailFailException e) {
            throw e;
        }
        catch (Exception e) {
            log.debug("send email failed!", e);
            throw new SendEmailFailException();
        }
    }
}
pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantDetailDTO.java
@@ -20,7 +20,7 @@
    private Number evaluation;
    private List<String> expertise;
    private String concept;
    private List<String> experiences;
    private String experiences;
    private String awards;
    public String getName() {
@@ -143,11 +143,11 @@
        this.concept = concept;
    }
    public List<String> getExperiences() {
    public String getExperiences() {
        return experiences;
    }
    public void setExperiences(List<String> experiences) {
    public void setExperiences(String experiences) {
        this.experiences = experiences;
    }
pamapi/src/main/java/com/pollex/pam/service/dto/FastQueryConsultantParam.java
@@ -5,10 +5,12 @@
import java.util.List;
public class FastQueryConsultantParam {
    private GenderEnum gender;
    private List<String> communicationStyles;
    private Number avgScore;
    private String status;
    private String seniority;
    public GenderEnum getGender() {
        return gender;
@@ -41,4 +43,12 @@
    public void setStatus(String status) {
        this.status = status;
    }
    public String getSeniority() {
        return seniority;
    }
    public void setSeniority(String seniority) {
        this.seniority = seniority;
    }
}
pamapi/src/main/java/com/pollex/pam/service/dto/SMSDetail.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,26 @@
package com.pollex.pam.service.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
public class SMSDetail {
    private String mobile;
    private String content;
    @JsonProperty("mobile")
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    @JsonProperty("content")
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
}
pamapi/src/main/java/com/pollex/pam/service/dto/SendMailRequest.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,103 @@
package com.pollex.pam.service.dto;
import java.util.List;
public class SendMailRequest {
    /**
     * æ”¶ä»¶è€…
     */
    private List<String> sendMailAddresses;
    /**
     * å‰¯æœ¬
     */
    private List<String> sendCCMailAddresses;
    /**
     * ä¸»é¡Œ
     */
    private String subject;
    /**
     * å…§æ–‡
     */
    private String content;
    /**
     * å¯„件者
     */
    private String from;
    /**
     * é™„件路徑
     */
    private List<String> attachments;
    /**
     * æ˜¯å¦ html format
     */
    private boolean htmlFormat;
    /**
     * è‡ªå®šç¾©è¨Šæ¯åˆ†é¡ž (因應保誠的要求,先暫時寫死城epos)
     */
    private String functionId;
    public List<String> getSendMailAddresses() {
        return sendMailAddresses;
    }
    public void setSendMailAddresses(List<String> sendMailAddresses) {
        this.sendMailAddresses = sendMailAddresses;
    }
    public List<String> getSendCCMailAddresses() {
        return sendCCMailAddresses;
    }
    public void setSendCCMailAddresses(List<String> sendCCMailAddresses) {
        this.sendCCMailAddresses = sendCCMailAddresses;
    }
    public String getSubject() {
        return subject;
    }
    public void setSubject(String subject) {
        this.subject = subject;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public String getFrom() {
        return from;
    }
    public void setFrom(String from) {
        this.from = from;
    }
    public List<String> getAttachments() {
        return attachments;
    }
    public void setAttachments(List<String> attachments) {
        this.attachments = attachments;
    }
    public boolean isHtmlFormat() {
        return htmlFormat;
    }
    public void setHtmlFormat(boolean htmlFormat) {
        this.htmlFormat = htmlFormat;
    }
    public String getFunctionId() {
        return functionId;
    }
    public void setFunctionId(String functionId) {
        this.functionId = functionId;
    }
}
pamapi/src/main/java/com/pollex/pam/service/dto/SendMailResponse.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,39 @@
package com.pollex.pam.service.dto;
public class SendMailResponse {
    private Data data;
    public Data getData() {
        return data;
    }
    public void setData(Data data) {
        this.data = data;
    }
    public static class Data {
        private String messageStatus;
        public String getMessageStatus() {
            return messageStatus;
        }
        public void setMessageStatus(String messageStatus) {
            this.messageStatus = messageStatus;
        }
        @Override
        public String toString() {
            return "Data{" +
                "messageStatus='" + messageStatus + '\'' +
                '}';
        }
    }
    @Override
    public String toString() {
        return "SendMailResponse{" +
            "data=" + data +
            '}';
    }
}
pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSRequest.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,99 @@
package com.pollex.pam.service.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
public class SendSMSRequest {
    private String pKey;
    private String sourceCode;
    private String sender;
    private String sendTime;
    private String subject;
    private String activityId;
    private String mmsPath;
    private String msgTypeSet;
    private List<SMSDetail> detail;
    @JsonProperty("p_key")
    public String getpKey() {
        return pKey;
    }
    public void setpKey(String pKey) {
        this.pKey = pKey;
    }
    @JsonProperty("source_code")
    public String getSourceCode() {
        return sourceCode;
    }
    public void setSourceCode(String sourceCode) {
        this.sourceCode = sourceCode;
    }
    @JsonProperty("sender")
    public String getSender() {
        return sender;
    }
    public void setSender(String sender) {
        this.sender = sender;
    }
    @JsonProperty("send_time")
    public String getSendTime() {
        return sendTime;
    }
    public void setSendTime(String sendTime) {
        this.sendTime = sendTime;
    }
    @JsonProperty("subject")
    public String getSubject() {
        return subject;
    }
    public void setSubject(String subject) {
        this.subject = subject;
    }
    @JsonProperty("activity_id")
    public String getActivityId() {
        return activityId;
    }
    public void setActivityId(String activityId) {
        this.activityId = activityId;
    }
    @JsonProperty("mms_path")
    public String getMmsPath() {
        return mmsPath;
    }
    public void setMmsPath(String mmsPath) {
        this.mmsPath = mmsPath;
    }
    @JsonProperty("msg_type_set")
    public String getMsgTypeSet() {
        return msgTypeSet;
    }
    public void setMsgTypeSet(String msgTypeSet) {
        this.msgTypeSet = msgTypeSet;
    }
    @JsonProperty("detail")
    public List<SMSDetail> getDetail() {
        return detail;
    }
    public void setDetail(List<SMSDetail> detail) {
        this.detail = detail;
    }
}
pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSResponse.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,60 @@
package com.pollex.pam.service.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
public class SendSMSResponse {
    @JsonProperty("p_key")
    private String pKey;
    @JsonProperty("return_code")
    private String returnCode;
    @JsonProperty("msg_batchNo")
    private String msgBatchNo;
    @JsonProperty("error_msg")
    private String errorMsg;
    public String getpKey() {
        return pKey;
    }
    public void setpKey(String pKey) {
        this.pKey = pKey;
    }
    public String getReturnCode() {
        return returnCode;
    }
    public void setReturnCode(String returnCode) {
        this.returnCode = returnCode;
    }
    public String getMsgBatchNo() {
        return msgBatchNo;
    }
    public void setMsgBatchNo(String msgBatchNo) {
        this.msgBatchNo = msgBatchNo;
    }
    public String getErrorMsg() {
        return errorMsg;
    }
    public void setErrorMsg(String errorMsg) {
        this.errorMsg = errorMsg;
    }
    @Override
    public String toString() {
        return "SendSMSResponse{" +
            "pKey='" + pKey + '\'' +
            ", returnCode='" + returnCode + '\'' +
            ", msgBatchNo='" + msgBatchNo + '\'' +
            ", errorMsg='" + errorMsg + '\'' +
            '}';
    }
}
pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java
@@ -63,7 +63,7 @@
        consultantDetailDTO.setAwards(source.getAward());
        consultantDetailDTO.setImg(source.getPhotoPath());
        consultantDetailDTO.setExpertise(splitStringWithChar(source.getExpertise()));
        consultantDetailDTO.setExperiences(splitStringWithChar(source.getExperience()));
        consultantDetailDTO.setExperiences(source.getExperience());
        // todo æ±ºå®šåŒ¹é…ç¨‹åº¦
        consultantDetailDTO.setSuitability(50);
pamapi/src/main/java/com/pollex/pam/service/util/HttpRequestUtil.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,114 @@
package com.pollex.pam.service.util;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.*;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import javax.net.ssl.SSLContext;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.Map;
import java.util.Set;
public final class HttpRequestUtil {
    private static final Logger log = LoggerFactory.getLogger(HttpRequestUtil.class);
    private HttpRequestUtil() {}
    public static <T> ResponseEntity<T> getWithJson(String url, Class<T> responseType)
        throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException
    {
        return getWithJson(url, responseType, null);
    }
    public static <T> ResponseEntity<T> getWithJson(String url, Class<T> responseType, Map<String, String> addedHeaders)
        throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException
    {
        RestTemplate restTemplate = getTrustAllRestTemplate();
        HttpHeaders headers = new HttpHeaders();
        setHeaders(headers, addedHeaders);
        HttpEntity<String> httpEntity = new HttpEntity<>(headers);
        log.debug("HttpRequestUtil get url: {}", url);
        log.debug("httpEntity = {}", httpEntity);
        return restTemplate.exchange(url, HttpMethod.GET, httpEntity, responseType);
    }
    public static ResponseEntity<String> postWithJson(String url, Object jsonData, Map<String, String> headers)
        throws KeyStoreException, NoSuchAlgorithmException, JsonProcessingException, KeyManagementException
    {
        return postWithJson(url, jsonData, String.class, headers);
    }
    public static ResponseEntity<String> postWithJson(String url, Object jsonData)
        throws KeyStoreException, NoSuchAlgorithmException, JsonProcessingException, KeyManagementException
    {
        return postWithJson(url, jsonData, String.class, null);
    }
    public static <T> ResponseEntity<T> postWithJson(String url, Object jsonData, Class<T> responseType)
        throws KeyStoreException, NoSuchAlgorithmException, JsonProcessingException, KeyManagementException
    {
        return postWithJson(url, jsonData, responseType, null);
    }
    public static <T> ResponseEntity<T> postWithJson(String url, Object jsonData, Class<T> responseType, Map<String, String> addedHeaders)
        throws JsonProcessingException, KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
        String parameters = new ObjectMapper().writeValueAsString(jsonData);
        // é¿å…é•·åº¦éŽé•·é€²è€Œå°Žè‡´log爆掉
        if(parameters.length() < 1000){
            log.debug("parameters : {}",parameters);
        }
        RestTemplate restTemplate = getTrustAllRestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        setHeaders(headers, addedHeaders);
        HttpEntity<String> entity = new HttpEntity<>(parameters, headers);
        log.debug("rest post with json, url = {}", url);
        return restTemplate.exchange(url, HttpMethod.POST, entity, responseType);
    }
    private static void setHeaders(HttpHeaders headers, Map<String, String> addedHeaders) {
        if(addedHeaders != null && addedHeaders.size() > 0) {
            Set<String> keys = addedHeaders.keySet();
            for (String key : keys) {
                String headerValue = addedHeaders.get(key);
                headers.set(key, headerValue);
                log.info("http cust header key: {}", key);
                log.info("http cust header headerValue: {}", headerValue);
            }
        }
    }
    private static RestTemplate getTrustAllRestTemplate() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
        SSLContext sslContext = SSLContexts.custom()
            .loadTrustMaterial(null, (X509Certificate[] x509Certs, String s) -> true)
            .build();
        SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext, new NoopHostnameVerifier());
        CloseableHttpClient httpClient = HttpClients.custom()
            .setSSLSocketFactory(csf)
            .build();
        HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
        requestFactory.setHttpClient(httpClient);
        requestFactory.setConnectTimeout(300000);
        requestFactory.setReadTimeout(300000);
        return new RestTemplate(requestFactory);
    }
}
pamapi/src/main/java/com/pollex/pam/web/rest/TestSendMsgResource.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,33 @@
package com.pollex.pam.web.rest;
import com.pollex.pam.service.SendMsgService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@Deprecated
@RestController
@RequestMapping("/api/test/sendMsg")
public class TestSendMsgResource {
    @Autowired
    SendMsgService sendMsgService;
    @GetMapping("/bySMS")
    public ResponseEntity<Void> bySMS(@RequestParam String toMobile, @RequestParam String content) {
        sendMsgService.sendMsgBySMS(toMobile, content);
        return ResponseEntity.noContent().build();
    }
    @GetMapping("/byEmail")
    public ResponseEntity<Void> byEmail(
        @RequestParam String from,
        @RequestParam String to,
        @RequestParam String subject,
        @RequestParam String content,
        @RequestParam boolean htmlFormat
    ) {
        sendMsgService.sendMsgByEmail(from, to, subject, content, htmlFormat);
        return ResponseEntity.noContent().build();
    }
}
pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendEmailFailException.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,12 @@
package com.pollex.pam.web.rest.errors;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR, reason = "send email failed")
public class SendEmailFailException extends RuntimeException {
    public SendEmailFailException() {}
    public SendEmailFailException(String message) {
        super(message);
    }
}
pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendSMSFailException.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,12 @@
package com.pollex.pam.web.rest.errors;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR, reason = "send email failed")
public class SendSMSFailException extends RuntimeException{
    public SendSMSFailException(){}
    public SendSMSFailException(String message) {
        super(message);
    }
}
pamapi/src/main/resources/config/application-dev.yml
@@ -119,4 +119,12 @@
  e-service-login-url: https://eserviceuat.pcalife.com.tw/sso/chatbotValidate
  e-service-login-func: ValidateUsrLogin
  e-service-login-sys: epos
  sms:
    url: https://localhost:8081/testSMS
    source-code: ePos
    sender: POS
    sms-type: '0017'
  email:
    url: https://localhost:8081/testEmail
    function-id: epos
  file-folder-path: D://pam_file
pamapi/src/main/resources/config/application-sit.yml
@@ -117,4 +117,12 @@
  e-service-login-url: https://eserviceuat.pcalife.com.tw/sso/chatbotValidate
  e-service-login-func: ValidateUsrLogin
  e-service-login-sys: epos
  sms:
    url: https://vtwlifewinbo66.pru.intranet.asia/MesgQueueMgmnt/rest/smsSendMsgResource
    source-code: ePos
    sender: POS
    sms-type: '0017'
  email:
    url: https://vtwlifeopensysuat.pru.intranet.asia/tsgw/mq/mqSendMail
    function-id: epos
  file-folder-path: D://pam_file
pamapi/src/main/resources/config/application-uat.yml
@@ -117,4 +117,12 @@
  e-service-login-url: https://eserviceuat.pcalife.com.tw/sso/chatbotValidate
  e-service-login-func: ValidateUsrLogin
  e-service-login-sys: epos
  sms:
    url: https://vtwlifewinbo66.pru.intranet.asia/MesgQueueMgmnt/rest/smsSendMsgResource
    source-code: ePos
    sender: POS
    sms-type: '0017'
  email:
    url: https://vtwlifeopensysuat.pru.intranet.asia/tsgw/mq/mqSendMail
    function-id: epos
  file-folder-path: D://pam_file