www.monkeysober.com Open in urlscan Pro
104.17.247.119  Public Scan

Submitted URL: http://www.monkeysober.com/products/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?utm_source=stream&utm_medium...
Effective URL: https://www.monkeysober.com/products/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?utm_source=stream&utm_medium...
Submission: On August 07 via api from US — Scanned from DE

Form analysis 4 forms found in the DOM

GET /search

<form action="/search" method="get" class="">
  <div tabindex="-1" class="tw-flex tw-relative header__search">
    <input autocomplete="off" name="q" type="text"
      class="tw-w-full tw-flex-1 tw-h-10 tw-py-0 tw-pl-[14px] tw-pr-13 tw-bg-header-search tw-text-current tw-text-sm tw-leading-none tw-rounded-global  tw-border-none  tw-placeholder-current header__search-input" placeholder="Search...">
    <button type="submit" class="tw-flex tw-items-center tw-px-[14px] tw-m-0 tw-bg-transparent tw-text-current tw-border-none tw-outline-none tw-cursor-pointer tw-h-full tw-absolute tw-right-0 header__search-icon" tabindex="-1"><svg class=""
        width="24" height="24" xmlns="http://www.w3.org/2000/svg">
        <path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
      </svg></button>
    <button type="button" class="tw-hidden tw-justify-center tw-items-center tw-pr-2 tw-pl-6 tw-m-0 tw-bg-transparent tw-text-header-color tw-border-none tw-outline-none tw-cursor-pointer header__search-close "><svg class="" width="14" height="14"
        xmlns="http://www.w3.org/2000/svg">
        <path d="m3 3 8.485 8.485m0-8.485L3 11.485" stroke="currentColor" stroke-width="1.6" stroke-linecap="square"></path>
      </svg></button>
  </div>
</form>

GET /search

<form action="/search" method="get" class="">
  <div tabindex="-1" class="tw-flex tw-relative header__search">
    <input autocomplete="off" name="q" type="text"
      class="tw-w-full tw-flex-1 tw-h-10 tw-py-0 tw-pl-[14px] tw-pr-13 tw-bg-header-search tw-text-current tw-text-sm tw-leading-none tw-rounded-global  tw-border-none  tw-placeholder-current header__search-input" placeholder="Search...">
    <button type="submit" class="tw-flex tw-items-center tw-px-[14px] tw-m-0 tw-bg-transparent tw-text-current tw-border-none tw-outline-none tw-cursor-pointer tw-h-full tw-absolute tw-right-0 header__search-icon" tabindex="-1"><svg class=""
        width="24" height="24" xmlns="http://www.w3.org/2000/svg">
        <path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
      </svg></button>
    <button type="button" class="tw-hidden tw-justify-center tw-items-center tw-pr-2 tw-pl-6 tw-m-0 tw-bg-transparent tw-text-header-color tw-border-none tw-outline-none tw-cursor-pointer header__search-close "><svg class="" width="14" height="14"
        xmlns="http://www.w3.org/2000/svg">
        <path d="m3 3 8.485 8.485m0-8.485L3 11.485" stroke="currentColor" stroke-width="1.6" stroke-linecap="square"></path>
      </svg></button>
  </div>
</form>

GET /search

<form action="/search" method="get" class="">
  <div tabindex="-1" class="tw-flex tw-relative header__search">
    <input autocomplete="off" name="q" type="text"
      class="tw-w-full tw-flex-1 tw-h-10 tw-py-0 tw-pl-[14px] tw-pr-13 tw-bg-header-search tw-text-current tw-text-sm tw-leading-none tw-rounded-global  tw-border-none  tw-placeholder-current header__search-input" placeholder="Search...">
    <button type="submit" class="tw-flex tw-items-center tw-px-[14px] tw-m-0 tw-bg-transparent tw-text-current tw-border-none tw-outline-none tw-cursor-pointer tw-h-full tw-absolute tw-right-0 header__search-icon" tabindex="-1"><svg class=""
        width="24" height="24" xmlns="http://www.w3.org/2000/svg">
        <path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
      </svg></button>
    <button type="button" class="tw-hidden tw-justify-center tw-items-center tw-pr-2 tw-pl-6 tw-m-0 tw-bg-transparent tw-text-header-color tw-border-none tw-outline-none tw-cursor-pointer header__search-close "><svg class="" width="14" height="14"
        xmlns="http://www.w3.org/2000/svg">
        <path d="m3 3 8.485 8.485m0-8.485L3 11.485" stroke="currentColor" stroke-width="1.6" stroke-linecap="square"></path>
      </svg></button>
  </div>
</form>

<form class="product-info product-info-07c125f6-5158-498b-92d3-8a94632cbd40">
  <input type="hidden" name="product_id" value="07c125f6-5158-498b-92d3-8a94632cbd40">
  <input type="hidden" name="variant_id" id="selected_variant_id_07c125f6-5158-498b-92d3-8a94632cbd40" class="selected_variant_id_07c125f6-5158-498b-92d3-8a94632cbd40" value="305165ce-1fdc-46f4-b0a4-efa8b045008d">
  <div class="tw-relative md:tw-pt-3 product-info__body md:tw-bg-product-detail-bg" data-sold-out="Sorry, the goods have been sold out." data-unavailable="This combination does not exist, please try other.">
    <div class="product-info-blocks md:tw-bg-body tw-rounded-[1px] md:tw-p-2">
      <div class="product-info__header tw-mt-2 lg:tw-mt-3  ">
        <h1 class="tw-m-0 md:tw-font-medium type-title-font-family tw-break-words  product-title-transform product-info__header_title">That's What I Do I Fix Stuff And I Know Things T-shirt</h1>
        <div class="shoplazza-reviews-rating-wrap d-inline-flex align-items-center notranslate" role="img" aria-label="5 of 5 star, 5 reviews">
          <span data-grade="5" class="shoplazza-reviews-rating" data-comment_avg_star="5">
            <span class="shoplazza-reviews__rating-active _click_area" style=" color:rgba(206, 176, 106, 1);">
              <svg xmlns="http://www.w3.org/2000/svg" width="14px" height="13px" viewBox="0 0 14 13" fill="none">
                <path fill-rule="evenodd" clip-rule="evenodd"
                  d="M7 10.024L3.54178 12.2422C3.30844 12.3918 3.01281 12.1771 3.08305 11.9089L4.12399 7.93447L0.94575 5.33096C0.731302 5.15529 0.844223 4.80775 1.12097 4.79168L5.22253 4.55352L6.71649 0.726304C6.81729 0.468066 7.18271 0.468067 7.28351 0.726305L8.77747 4.55352L12.879 4.79168C13.1558 4.80775 13.2687 5.15529 13.0542 5.33096L9.87601 7.93447L10.917 11.9089C10.9872 12.1771 10.6916 12.3918 10.4582 12.2422L7 10.024Z"
                  fill="rgba(206, 176, 106, 1)" id="star"></path>
              </svg>
            </span>
            <span class="shoplazza-reviews__rating-active _click_area" style=" color:rgba(206, 176, 106, 1);">
              <svg xmlns="http://www.w3.org/2000/svg" width="14px" height="13px" viewBox="0 0 14 13" fill="none">
                <path fill-rule="evenodd" clip-rule="evenodd"
                  d="M7 10.024L3.54178 12.2422C3.30844 12.3918 3.01281 12.1771 3.08305 11.9089L4.12399 7.93447L0.94575 5.33096C0.731302 5.15529 0.844223 4.80775 1.12097 4.79168L5.22253 4.55352L6.71649 0.726304C6.81729 0.468066 7.18271 0.468067 7.28351 0.726305L8.77747 4.55352L12.879 4.79168C13.1558 4.80775 13.2687 5.15529 13.0542 5.33096L9.87601 7.93447L10.917 11.9089C10.9872 12.1771 10.6916 12.3918 10.4582 12.2422L7 10.024Z"
                  fill="rgba(206, 176, 106, 1)" id="star"></path>
              </svg>
            </span>
            <span class="shoplazza-reviews__rating-active _click_area" style=" color:rgba(206, 176, 106, 1);">
              <svg xmlns="http://www.w3.org/2000/svg" width="14px" height="13px" viewBox="0 0 14 13" fill="none">
                <path fill-rule="evenodd" clip-rule="evenodd"
                  d="M7 10.024L3.54178 12.2422C3.30844 12.3918 3.01281 12.1771 3.08305 11.9089L4.12399 7.93447L0.94575 5.33096C0.731302 5.15529 0.844223 4.80775 1.12097 4.79168L5.22253 4.55352L6.71649 0.726304C6.81729 0.468066 7.18271 0.468067 7.28351 0.726305L8.77747 4.55352L12.879 4.79168C13.1558 4.80775 13.2687 5.15529 13.0542 5.33096L9.87601 7.93447L10.917 11.9089C10.9872 12.1771 10.6916 12.3918 10.4582 12.2422L7 10.024Z"
                  fill="rgba(206, 176, 106, 1)" id="star"></path>
              </svg>
            </span>
            <span class="shoplazza-reviews__rating-active _click_area" style=" color:rgba(206, 176, 106, 1);">
              <svg xmlns="http://www.w3.org/2000/svg" width="14px" height="13px" viewBox="0 0 14 13" fill="none">
                <path fill-rule="evenodd" clip-rule="evenodd"
                  d="M7 10.024L3.54178 12.2422C3.30844 12.3918 3.01281 12.1771 3.08305 11.9089L4.12399 7.93447L0.94575 5.33096C0.731302 5.15529 0.844223 4.80775 1.12097 4.79168L5.22253 4.55352L6.71649 0.726304C6.81729 0.468066 7.18271 0.468067 7.28351 0.726305L8.77747 4.55352L12.879 4.79168C13.1558 4.80775 13.2687 5.15529 13.0542 5.33096L9.87601 7.93447L10.917 11.9089C10.9872 12.1771 10.6916 12.3918 10.4582 12.2422L7 10.024Z"
                  fill="rgba(206, 176, 106, 1)" id="star"></path>
              </svg>
            </span>
            <span class="shoplazza-reviews__rating-active _click_area" style=" color:rgba(206, 176, 106, 1);">
              <svg xmlns="http://www.w3.org/2000/svg" width="14px" height="13px" viewBox="0 0 14 13" fill="none">
                <path fill-rule="evenodd" clip-rule="evenodd"
                  d="M7 10.024L3.54178 12.2422C3.30844 12.3918 3.01281 12.1771 3.08305 11.9089L4.12399 7.93447L0.94575 5.33096C0.731302 5.15529 0.844223 4.80775 1.12097 4.79168L5.22253 4.55352L6.71649 0.726304C6.81729 0.468066 7.18271 0.468067 7.28351 0.726305L8.77747 4.55352L12.879 4.79168C13.1558 4.80775 13.2687 5.15529 13.0542 5.33096L9.87601 7.93447L10.917 11.9089C10.9872 12.1771 10.6916 12.3918 10.4582 12.2422L7 10.024Z"
                  fill="rgba(206, 176, 106, 1)" id="star"></path>
              </svg>
            </span>
          </span>
          <span class="shoplazza-reviews__rating-view notranslate">(5)<span style="color: rgba(32, 32, 32, 0.7);font-size: 14px;line-height: 16px;margin-left: 8px;">View</span></span>
        </div>
      </div>
      <div class="product-info__header_price-wrapper tw-mt-3 lg:tw-mt-4">
        <div class="tw-flex tw-flex-wrap tw-items-center">
          <div class="tw-text-save-color tw-font-semibold 
 tw-mr-2 
 product-info__header_price money">€21.92</div>
          <del class="tw-mr-2   tw-text-compare-at-price-color tw-hidden product-info__header_compare-at-price money">€0.00</del>
          <div class="tw-flex  !tw-hidden   tw-items-center   tw-mr-2   tw-font-semibold tw-text-xs tw-leading-none tw-border tw-border-solid tw-border-save tw-px-1 tw-py-[1px] tw-rounded-[1px] tw-text-save-color product-info__save"> -<span
              class="product-info__header_save-amount money">€0.00-€21.92</span>
          </div>
        </div>
      </div>
      <div class="bootstrap">
        <div class="plugin__wrappers d-flex flex-column">
          <div class="plugin_modals position-relative plugin_modals-rebate" id="Modal837094" style="order: 8">
            <style>
              #Modal837094 {
                --modal_background: linear-gradient(0deg, #ebc19e, #fff3e8 100%);
                --modal_caret_background: #fff2e9;
                --modal_title_color: #B83D07;
                --modal_close_color: #FFFFFF;
                --modal_close_background_color: #F03010;
                --list_border_color: #dddddd;
              }

              @media (max-width: 767.98px) {
                #Modal837094 .coupon_plugin__coupon:last-child {
                  padding-bottom: 0;
                }
              }

              #Modal837094 .modal-footer {
                position: relative;
                margin-top: -30px;
              }

              #Modal837094 .modal-footer::before {
                content: '';
                position: absolute;
                bottom: 0;
                left: 0;
                right: 0;
                height: 150%;
                background-image: url(//img.fantaskycdn.com/oss/operation/e8ebb03dbb710457ca3b4b6a70898ab2.svg);
                background-repeat: no-repeat;
                background-size: 100%;
                pointer-events: none;
              }

              @media (max-width: 767.98px) {
                #Modal837094 .discount-present-item:last-child {
                  padding-bottom: 40px;
                }

                #Modal837094 .plugin_modals__wrapper-list>a:last-child {
                  padding-bottom: 14px;
                }
              }
            </style>
            <!-- 入口 -->
            <div class="plugin_modals__list" data-toggle="modal" data-target="#target_Modal837094" impr="1" imprevt="1" imprsd="true">
              <div class="plugin_modals__list-name">
                <style>
                  a.product_detail_rebate_list {
                    display: inline-flex;
                    gap: 4px;
                    align-items: start;
                    color: #EB391B;
                  }

                  a.product_detail_rebate_list:hover {
                    color: #EB391B;
                  }

                  a.product_detail_rebate_list .money {
                    white-space: nowrap;
                  }

                  .plugin_modals__modal .rebate-icon {
                    display: none;
                  }

                  .rebate-icon {
                    padding-top: 4px;
                  }
                </style>
                <a class="product_detail_rebate_list" impr="1" imprevt="1" href="/promotions/rebate/1f3093c5-f120-4ab9-96e1-6747cca8f15e" imprsd="true">
    <svg xmlns="http://www.w3.org/2000/svg" width="16" height="24" fill="none" class="rebate-icon">
      <g clip-path="url(#a)">
        <path fill="#EB391B" fill-rule="evenodd" d="M9.127 1.275a1.576 1.576 0 0 0-2.255 0l-.693.709a1.576 1.576 0 0 1-1.146.475l-.991-.012a1.576 1.576 0 0 0-1.595 1.595l.011.991a1.576 1.576 0 0 1-.475 1.146l-.708.693a1.576 1.576 0 0 0 0 2.255l.709.693c.308.3.48.716.475 1.146l-.012.992a1.576 1.576 0 0 0 1.595 1.594l.991-.011a1.577 1.577 0 0 1 1.146.475l.693.709a1.575 1.575 0 0 0 2.255 0l.693-.71a1.576 1.576 0 0 1 1.146-.475l.992.012a1.575 1.575 0 0 0 1.594-1.594l-.011-.992a1.577 1.577 0 0 1 .475-1.146l.709-.693a1.575 1.575 0 0 0 0-2.255l-.71-.693a1.576 1.576 0 0 1-.475-1.146l.012-.991a1.576 1.576 0 0 0-1.594-1.595l-.992.011a1.576 1.576 0 0 1-1.146-.475l-.693-.708ZM5.84 6.92a1.08 1.08 0 1 0 0-2.16 1.08 1.08 0 0 0 0 2.16Zm4.32 4.32a1.08 1.08 0 1 0 0-2.161 1.08 1.08 0 0 0 0 2.16Zm.56-5.96a.793.793 0 0 1 0 1.12L6.4 10.72A.792.792 0 0 1 5.28 9.6L9.6 5.28a.792.792 0 0 1 1.12 0Z" clip-rule="evenodd"></path>
      </g>
      <defs>
        <clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"></path></clipPath>
      </defs>
    </svg>
    <div style="flex: 1;word-break: break-word">
      
        <li id="pdr__rule" class="pdr__rule">
          Buy <b>2</b> items and save <b>8%</b> off
        </li>
      
        <li id="pdr__rule" class="pdr__rule">
          Buy <b>3</b> items and save <b>10%</b> off
        </li>
      
        <li id="pdr__rule" class="pdr__rule">
          Buy <b>4</b> items and save <b>14%</b> off
        </li>
      
    </div>
  </a>
              </div>
              <div class="plugin_modals__list-labels text-right"></div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <div class="product-info-blocks lg:tw-mt-4 md:tw-bg-body tw-rounded-[1px] md:tw-p-2 md:tw-mt-3">
      <div class="tw-space-y-3 lg:tw-space-y-4  product-info__variants lg:tw-mt-4" data-soldout="Sold out">
        <div class="product-info__variants-wrapper   product-info__variants_thumbnail  slider-switch product-info__variants_items" data-selected-variant="false">
          <div class="type-title-font-family tw-font-semibold tw-capitalize product-info__variants_title" data-keyword="color-black"> Color<span class="variant_color-label-wrapper ">-<span
                class="type-title-font-family tw-font-semibold variant_color-label">Black</span></span>
          </div>
          <div class="tw-flex tw-flex-wrap product-info__variants_value-wrapper lg:tw-mt-1">
            <div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-body-plus-2 tw-break-words tw-mt-[6px]  tw-mr-[6px] ">
              <input type="radio" class="tw-hidden product-info__variants_radio" name="option1-07c125f6-5158-498b-92d3-8a94632cbd40" id="option1-0-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" value="Black" checked="">
              <label optvalue="Olive" data-bgset="//img.fantaskycdn.com/9f1173a3fe0202ba46eebae68d4a6a97_180.png"
                style="width: 40px; height: 40px; background-image: url(&quot;https://img.fantaskycdn.com/9f1173a3fe0202ba46eebae68d4a6a97_180.png&quot;);" for="option1-0-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" data-variants-value="Black"
                class="tw-inset-0 tw-bg-no-repeat tw-bg-cover tw-bg-center tw-cursor-pointer  tw-rounded-full   product-info__thumbnail lazyloaded" data-options-order="0" data-click="select" data-track="switch_variants" data-type="image">
                <picture style="display: none;">
                  <source data-srcset="//img.fantaskycdn.com/9f1173a3fe0202ba46eebae68d4a6a97_180.png" sizes="40px" srcset="//img.fantaskycdn.com/9f1173a3fe0202ba46eebae68d4a6a97_180.png"><img alt="" class="lazyautosizes lazyloaded" data-sizes="auto"
                    data-parent-fit="cover" sizes="40px">
                </picture>
              </label>
            </div>
            <div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-body-plus-2 tw-break-words tw-mt-[6px]  tw-mr-[6px] ">
              <input type="radio" class="tw-hidden product-info__variants_radio" name="option1-07c125f6-5158-498b-92d3-8a94632cbd40" id="option1-1-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" value="White">
              <label optvalue="Olive" data-bgset="//img.fantaskycdn.com/dd910ef4172ee4fbd9e33bcf1d00e8a7_180.png"
                style="width: 40px; height: 40px; background-image: url(&quot;https://img.fantaskycdn.com/dd910ef4172ee4fbd9e33bcf1d00e8a7_180.png&quot;);" for="option1-1-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" data-variants-value="White"
                class="tw-inset-0 tw-bg-no-repeat tw-bg-cover tw-bg-center tw-cursor-pointer  tw-rounded-full   product-info__thumbnail lazyloaded" data-options-order="1" data-click="select" data-track="switch_variants" data-type="image">
                <picture style="display: none;">
                  <source data-srcset="//img.fantaskycdn.com/dd910ef4172ee4fbd9e33bcf1d00e8a7_180.png" sizes="40px" srcset="//img.fantaskycdn.com/dd910ef4172ee4fbd9e33bcf1d00e8a7_180.png"><img alt="" class="lazyautosizes lazyloaded" data-sizes="auto"
                    data-parent-fit="cover" sizes="40px">
                </picture>
              </label>
            </div>
            <div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-body-plus-2 tw-break-words tw-mt-[6px]  tw-mr-[6px] ">
              <input type="radio" class="tw-hidden product-info__variants_radio" name="option1-07c125f6-5158-498b-92d3-8a94632cbd40" id="option1-2-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" value="Grey">
              <label optvalue="Olive" data-bgset="//img.fantaskycdn.com/3e4605d855184320474fb32f1489c418_180.png"
                style="width: 40px; height: 40px; background-image: url(&quot;https://img.fantaskycdn.com/3e4605d855184320474fb32f1489c418_180.png&quot;);" for="option1-2-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" data-variants-value="Grey"
                class="tw-inset-0 tw-bg-no-repeat tw-bg-cover tw-bg-center tw-cursor-pointer  tw-rounded-full   product-info__thumbnail lazyloaded" data-options-order="2" data-click="select" data-track="switch_variants" data-type="image">
                <picture style="display: none;">
                  <source data-srcset="//img.fantaskycdn.com/3e4605d855184320474fb32f1489c418_180.png" sizes="40px" srcset="//img.fantaskycdn.com/3e4605d855184320474fb32f1489c418_180.png"><img alt="" class="lazyautosizes lazyloaded" data-sizes="auto"
                    data-parent-fit="cover" sizes="40px">
                </picture>
              </label>
            </div>
            <div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-body-plus-2 tw-break-words tw-mt-[6px]  tw-mr-[6px] ">
              <input type="radio" class="tw-hidden product-info__variants_radio" name="option1-07c125f6-5158-498b-92d3-8a94632cbd40" id="option1-3-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" value="Yellow">
              <label optvalue="Olive" data-bgset="//img.fantaskycdn.com/aab7255a4ec7e3f45167a4d8755a15b1_180.png"
                style="width: 40px; height: 40px; background-image: url(&quot;https://img.fantaskycdn.com/aab7255a4ec7e3f45167a4d8755a15b1_180.png&quot;);" for="option1-3-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700"
                data-variants-value="Yellow" class="tw-inset-0 tw-bg-no-repeat tw-bg-cover tw-bg-center tw-cursor-pointer  tw-rounded-full   product-info__thumbnail lazyloaded" data-options-order="3" data-click="select" data-track="switch_variants"
                data-type="image">
                <picture style="display: none;">
                  <source data-srcset="//img.fantaskycdn.com/aab7255a4ec7e3f45167a4d8755a15b1_180.png" sizes="40px" srcset="//img.fantaskycdn.com/aab7255a4ec7e3f45167a4d8755a15b1_180.png"><img alt="" class="lazyautosizes lazyloaded" data-sizes="auto"
                    data-parent-fit="cover" sizes="40px">
                </picture>
              </label>
            </div>
            <div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-body-plus-2 tw-break-words tw-mt-[6px]  tw-mr-[6px] ">
              <input type="radio" class="tw-hidden product-info__variants_radio" name="option1-07c125f6-5158-498b-92d3-8a94632cbd40" id="option1-4-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" value="Olive">
              <label optvalue="Olive" data-bgset="//img.fantaskycdn.com/f6fc2a6f81fa1fde0bcf89fb073e60ff_180.png"
                style="width: 40px; height: 40px; background-image: url(&quot;https://img.fantaskycdn.com/f6fc2a6f81fa1fde0bcf89fb073e60ff_180.png&quot;);" for="option1-4-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" data-variants-value="Olive"
                class="tw-inset-0 tw-bg-no-repeat tw-bg-cover tw-bg-center tw-cursor-pointer  tw-rounded-full   product-info__thumbnail lazyloaded" data-options-order="4" data-click="select" data-track="switch_variants" data-type="image">
                <picture style="display: none;">
                  <source data-srcset="//img.fantaskycdn.com/f6fc2a6f81fa1fde0bcf89fb073e60ff_180.png" sizes="40px" srcset="//img.fantaskycdn.com/f6fc2a6f81fa1fde0bcf89fb073e60ff_180.png"><img alt="" class="lazyautosizes lazyloaded" data-sizes="auto"
                    data-parent-fit="cover" sizes="40px">
                </picture>
              </label>
            </div>
          </div>
          <div class="product-info__variant-tips tw-mt-[6px] tw-pb-[15px] tw-text-[15px] tw-leading-none tw-text-[#F0672C] tw-font-semibold tw-hidden">Please select a color</div>
        </div>
        <div class="product-info__variants-wrapper   slider-switch product-info__variants_items" data-selected-variant="false">
          <div class="type-title-font-family tw-font-semibold tw-capitalize product-info__variants_title" data-keyword="size-s" style="overflow: hidden;"> Size<span class="variant_color-label-wrapper ">-<span
                class="type-title-font-family tw-font-semibold variant_color-label">S</span></span>
            <span onclick="openSizeModal()" class="size_guide_btn  " data-toggle="modal" data-target="#size_guide_modal" data-product_id="07c125f6-5158-498b-92d3-8a94632cbd40">Size Guide</span>
            <script>
              function openSizeModal() {
                document.documentElement.style.overflow = 'hidden'
              }
            </script>
          </div>
          <div class="tw-flex tw-flex-wrap product-info__variants_value-wrapper lg:tw-mt-1">
            <div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-body-plus-2 tw-break-words tw-mt-[6px]  tw-mr-[6px] ">
              <input type="radio" class="tw-hidden product-info__variants_radio" name="option2-07c125f6-5158-498b-92d3-8a94632cbd40" id="option2-0-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" value="S" checked="">
              <label for="option2-0-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700"
                class="tw-flex tw-items-center tw-justify-center tw-min-w-[36px] lg:tw-min-w-[40px] tw-px-3 tw-py-2 lg:tw-py-[10px] tw-cursor-pointer tw-rounded-[1px] product-info__label product-info__thumbnail" data-variants-value="S"
                data-options-order="0" data-click="select" data-track="switch_variants"> S </label>
            </div>
            <div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-body-plus-2 tw-break-words tw-mt-[6px]  tw-mr-[6px] ">
              <input type="radio" class="tw-hidden product-info__variants_radio" name="option2-07c125f6-5158-498b-92d3-8a94632cbd40" id="option2-1-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" value="M">
              <label for="option2-1-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700"
                class="tw-flex tw-items-center tw-justify-center tw-min-w-[36px] lg:tw-min-w-[40px] tw-px-3 tw-py-2 lg:tw-py-[10px] tw-cursor-pointer tw-rounded-[1px] product-info__label product-info__thumbnail" data-variants-value="M"
                data-options-order="1" data-click="select" data-track="switch_variants"> M </label>
            </div>
            <div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-body-plus-2 tw-break-words tw-mt-[6px]  tw-mr-[6px] ">
              <input type="radio" class="tw-hidden product-info__variants_radio" name="option2-07c125f6-5158-498b-92d3-8a94632cbd40" id="option2-2-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" value="L">
              <label for="option2-2-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700"
                class="tw-flex tw-items-center tw-justify-center tw-min-w-[36px] lg:tw-min-w-[40px] tw-px-3 tw-py-2 lg:tw-py-[10px] tw-cursor-pointer tw-rounded-[1px] product-info__label product-info__thumbnail" data-variants-value="L"
                data-options-order="2" data-click="select" data-track="switch_variants"> L </label>
            </div>
            <div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-body-plus-2 tw-break-words tw-mt-[6px]  tw-mr-[6px] ">
              <input type="radio" class="tw-hidden product-info__variants_radio" name="option2-07c125f6-5158-498b-92d3-8a94632cbd40" id="option2-3-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" value="XL">
              <label for="option2-3-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700"
                class="tw-flex tw-items-center tw-justify-center tw-min-w-[36px] lg:tw-min-w-[40px] tw-px-3 tw-py-2 lg:tw-py-[10px] tw-cursor-pointer tw-rounded-[1px] product-info__label product-info__thumbnail" data-variants-value="XL"
                data-options-order="3" data-click="select" data-track="switch_variants"> XL </label>
            </div>
            <div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-body-plus-2 tw-break-words tw-mt-[6px]  tw-mr-[6px] ">
              <input type="radio" class="tw-hidden product-info__variants_radio" name="option2-07c125f6-5158-498b-92d3-8a94632cbd40" id="option2-4-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" value="XXL">
              <label for="option2-4-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700"
                class="tw-flex tw-items-center tw-justify-center tw-min-w-[36px] lg:tw-min-w-[40px] tw-px-3 tw-py-2 lg:tw-py-[10px] tw-cursor-pointer tw-rounded-[1px] product-info__label product-info__thumbnail" data-variants-value="XXL"
                data-options-order="4" data-click="select" data-track="switch_variants"> XXL </label>
            </div>
            <div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-body-plus-2 tw-break-words tw-mt-[6px]  tw-mr-[6px] ">
              <input type="radio" class="tw-hidden product-info__variants_radio" name="option2-07c125f6-5158-498b-92d3-8a94632cbd40" id="option2-5-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" value="3XL">
              <label for="option2-5-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700"
                class="tw-flex tw-items-center tw-justify-center tw-min-w-[36px] lg:tw-min-w-[40px] tw-px-3 tw-py-2 lg:tw-py-[10px] tw-cursor-pointer tw-rounded-[1px] product-info__label product-info__thumbnail" data-variants-value="3XL"
                data-options-order="5" data-click="select" data-track="switch_variants"> 3XL </label>
            </div>
            <div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-body-plus-2 tw-break-words tw-mt-[6px]  tw-mr-[6px] ">
              <input type="radio" class="tw-hidden product-info__variants_radio" name="option2-07c125f6-5158-498b-92d3-8a94632cbd40" id="option2-6-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" value="4XL">
              <label for="option2-6-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700"
                class="tw-flex tw-items-center tw-justify-center tw-min-w-[36px] lg:tw-min-w-[40px] tw-px-3 tw-py-2 lg:tw-py-[10px] tw-cursor-pointer tw-rounded-[1px] product-info__label product-info__thumbnail" data-variants-value="4XL"
                data-options-order="6" data-click="select" data-track="switch_variants"> 4XL </label>
            </div>
            <div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-body-plus-2 tw-break-words tw-mt-[6px]  tw-mr-[6px] ">
              <input type="radio" class="tw-hidden product-info__variants_radio" name="option2-07c125f6-5158-498b-92d3-8a94632cbd40" id="option2-7-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" value="5XL">
              <label for="option2-7-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700"
                class="tw-flex tw-items-center tw-justify-center tw-min-w-[36px] lg:tw-min-w-[40px] tw-px-3 tw-py-2 lg:tw-py-[10px] tw-cursor-pointer tw-rounded-[1px] product-info__label product-info__thumbnail" data-variants-value="5XL"
                data-options-order="7" data-click="select" data-track="switch_variants"> 5XL </label>
            </div>
            <div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-body-plus-2 tw-break-words tw-mt-[6px]  tw-mr-[6px] ">
              <input type="radio" class="tw-hidden product-info__variants_radio" name="option2-07c125f6-5158-498b-92d3-8a94632cbd40" id="option2-8-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700" value="6XL">
              <label for="option2-8-07c125f6-5158-498b-92d3-8a94632cbd40-1539149753700"
                class="tw-flex tw-items-center tw-justify-center tw-min-w-[36px] lg:tw-min-w-[40px] tw-px-3 tw-py-2 lg:tw-py-[10px] tw-cursor-pointer tw-rounded-[1px] product-info__label product-info__thumbnail" data-variants-value="6XL"
                data-options-order="8" data-click="select" data-track="switch_variants"> 6XL </label>
            </div>
          </div>
          <div class="product-info__variant-tips tw-mt-[6px] tw-pb-[15px] tw-text-[15px] tw-leading-none tw-text-[#F0672C] tw-font-semibold tw-hidden">Please select a size</div>
        </div>
      </div>
      <div class="product-info__qty_container tw-mt-3 lg:tw-mt-4">
        <div class="tw-font-semibold type-title-font-family">Quantity</div>
        <div class="product-info__qty tw-flex tw-w-[92px] lg:tw-w-[108px] tw-mt-[6px] lg:tw-mt-[10px] tw-relative tw-justify-between tw-border-solid tw-border tw-border-line tw-rounded-global">
          <button type="button" data-click="decrease" disabled="disabled"
            class="tw-relative tw-p-0 tw-bg-transparent tw-border-none tw-z-10 tw-box-border tw-no-underline tw-flex tw-flex-shrink-0 tw-text-body-color tw-items-center tw-justify-center tw-w-7 tw-h-7 lg:tw-w-9 lg:tw-h-9 tw-text-center tw-text-[#d8d8d8] lg:hover:tw-bg-[#f2f2f2] tw-rounded-global tw-rounded-r-none disabled:tw-cursor-default disabled:tw-bg-[#f9f9f9]"><svg
              class="tw-text-[#888888]" width="13" height="13" xmlns="http://www.w3.org/2000/svg">
              <path d="M1 6h11v1H1z" fill-rule="evenodd" fill="currentColor"></path>
            </svg></button>
          <input
            class="product-info__qty_num tw-absolute tw-box-border tw-px-7 tw-h-[30px] lg:tw-px-9 lg:tw-h-9 tw-w-full tw-text-base tw-flex-grow tw-bg-transparent tw-text-body-color tw-border-none tw-text-center tw-outline-none tw-p-0 tw-appearance-none"
            id="product_quantity_07c125f6-5158-498b-92d3-8a94632cbd40" name="quantity" type="text" value="1">
          <button type="button" data-click="increase"
            class="tw-relative tw-p-0 tw-bg-transparent tw-border-none tw-z-10 tw-box-border tw-no-underline tw-flex-shrink-0 tw-text-body-color tw-flex tw-items-center tw-justify-center tw-w-7 tw-h-7 lg:tw-w-9 lg:tw-h-9 tw-text-center tw-text-[#d8d8d8] lg:hover:tw-bg-[#f2f2f2] tw-rounded-global tw-rounded-l-none disabled:tw-cursor-default disabled:tw-bg-[#f9f9f9]"><svg
              class="tw-text-[#888888]" width="13" height="13" xmlns="http://www.w3.org/2000/svg">
              <path d="M7 1v5h5v1H7v5H6V7H1V6h5V1h1z" fill="currentColor"></path>
            </svg></button>
        </div>
      </div>
      <style id="app-parakeet-style">
        #app-parakeet *,
        #app-parakeet :after,
        #app-parakeet :before,
        .plugin-parakeet *,
        .plugin-parakeet :after,
        .plugin-parakeet :before {
          border: 0 solid #e5e7eb;
          box-sizing: border-box
        }

        #app-parakeet :after,
        #app-parakeet :before,
        .plugin-parakeet :after,
        .plugin-parakeet :before {
          --tw-content: ""
        }

        #app-parakeet html,
        .plugin-parakeet html {
          -webkit-text-size-adjust: 100%;
          font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, Helvetica Neue, Arial, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
          line-height: 1.5;
          tab-size: 4
        }

        #app-parakeet body,
        .plugin-parakeet body {
          line-height: inherit;
          margin: 0
        }

        #app-parakeet hr,
        .plugin-parakeet hr {
          border-top-width: 1px;
          color: inherit;
          height: 0
        }

        #app-parakeet abbr:where([title]),
        .plugin-parakeet abbr:where([title]) {
          -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted
        }

        #app-parakeet h1,
        #app-parakeet h2,
        #app-parakeet h3,
        #app-parakeet h4,
        #app-parakeet h5,
        #app-parakeet h6,
        .plugin-parakeet h1,
        .plugin-parakeet h2,
        .plugin-parakeet h3,
        .plugin-parakeet h4,
        .plugin-parakeet h5,
        .plugin-parakeet h6 {
          font-size: inherit;
          font-weight: inherit
        }

        #app-parakeet a,
        .plugin-parakeet a {
          color: inherit;
          text-decoration: inherit
        }

        #app-parakeet b,
        #app-parakeet strong,
        .plugin-parakeet b,
        .plugin-parakeet strong {
          font-weight: bolder
        }

        #app-parakeet code,
        #app-parakeet kbd,
        #app-parakeet pre,
        #app-parakeet samp,
        .plugin-parakeet code,
        .plugin-parakeet kbd,
        .plugin-parakeet pre,
        .plugin-parakeet samp {
          font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;
          font-size: 1em
        }

        #app-parakeet small,
        .plugin-parakeet small {
          font-size: 80%
        }

        #app-parakeet sub,
        #app-parakeet sup,
        .plugin-parakeet sub,
        .plugin-parakeet sup {
          font-size: 75%;
          line-height: 0;
          position: relative;
          vertical-align: initial
        }

        #app-parakeet sub,
        .plugin-parakeet sub {
          bottom: -.25em
        }

        #app-parakeet sup,
        .plugin-parakeet sup {
          top: -.5em
        }

        #app-parakeet table,
        .plugin-parakeet table {
          border-collapse: collapse;
          border-color: inherit;
          text-indent: 0
        }

        #app-parakeet button,
        #app-parakeet input,
        #app-parakeet optgroup,
        #app-parakeet select,
        #app-parakeet textarea,
        .plugin-parakeet button,
        .plugin-parakeet input,
        .plugin-parakeet optgroup,
        .plugin-parakeet select,
        .plugin-parakeet textarea {
          color: inherit;
          font-family: inherit;
          font-size: 100%;
          font-weight: inherit;
          line-height: inherit;
          margin: 0;
          padding: 0
        }

        #app-parakeet button,
        #app-parakeet select,
        .plugin-parakeet button,
        .plugin-parakeet select {
          text-transform: none
        }

        #app-parakeet [type=button],
        #app-parakeet [type=reset],
        #app-parakeet [type=submit],
        #app-parakeet button,
        .plugin-parakeet [type=button],
        .plugin-parakeet [type=reset],
        .plugin-parakeet [type=submit],
        .plugin-parakeet button {
          -webkit-appearance: button;
          background-color: initial;
          background-image: none
        }

        #app-parakeet :-moz-focusring,
        .plugin-parakeet :-moz-focusring {
          outline: auto
        }

        #app-parakeet :-moz-ui-invalid,
        .plugin-parakeet :-moz-ui-invalid {
          box-shadow: none
        }

        #app-parakeet progress,
        .plugin-parakeet progress {
          vertical-align: initial
        }

        #app-parakeet ::-webkit-inner-spin-button,
        #app-parakeet ::-webkit-outer-spin-button,
        .plugin-parakeet ::-webkit-inner-spin-button,
        .plugin-parakeet ::-webkit-outer-spin-button {
          height: auto
        }

        #app-parakeet [type=search],
        .plugin-parakeet [type=search] {
          -webkit-appearance: textfield;
          outline-offset: -2px
        }

        #app-parakeet ::-webkit-search-decoration,
        .plugin-parakeet ::-webkit-search-decoration {
          -webkit-appearance: none
        }

        #app-parakeet ::-webkit-file-upload-button,
        .plugin-parakeet ::-webkit-file-upload-button {
          -webkit-appearance: button;
          font: inherit
        }

        #app-parakeet summary,
        .plugin-parakeet summary {
          display: list-item
        }

        #app-parakeet blockquote,
        #app-parakeet dd,
        #app-parakeet dl,
        #app-parakeet figure,
        #app-parakeet h1,
        #app-parakeet h2,
        #app-parakeet h3,
        #app-parakeet h4,
        #app-parakeet h5,
        #app-parakeet h6,
        #app-parakeet hr,
        #app-parakeet p,
        #app-parakeet pre,
        .plugin-parakeet blockquote,
        .plugin-parakeet dd,
        .plugin-parakeet dl,
        .plugin-parakeet figure,
        .plugin-parakeet h1,
        .plugin-parakeet h2,
        .plugin-parakeet h3,
        .plugin-parakeet h4,
        .plugin-parakeet h5,
        .plugin-parakeet h6,
        .plugin-parakeet hr,
        .plugin-parakeet p,
        .plugin-parakeet pre {
          margin: 0
        }

        #app-parakeet fieldset,
        .plugin-parakeet fieldset {
          margin: 0;
          padding: 0
        }

        #app-parakeet legend,
        .plugin-parakeet legend {
          padding: 0
        }

        #app-parakeet menu,
        #app-parakeet ol,
        #app-parakeet ul,
        .plugin-parakeet menu,
        .plugin-parakeet ol,
        .plugin-parakeet ul {
          list-style: none;
          margin: 0;
          padding: 0
        }

        #app-parakeet textarea,
        .plugin-parakeet textarea {
          resize: vertical
        }

        #app-parakeet input::-webkit-input-placeholder,
        #app-parakeet textarea::-webkit-input-placeholder,
        .plugin-parakeet input::-webkit-input-placeholder,
        .plugin-parakeet textarea::-webkit-input-placeholder {
          color: #9ca3af;
          opacity: 1
        }

        #app-parakeet input::placeholder,
        #app-parakeet textarea::placeholder,
        .plugin-parakeet input::placeholder,
        .plugin-parakeet textarea::placeholder {
          color: #9ca3af;
          opacity: 1
        }

        #app-parakeet [role=button],
        #app-parakeet button,
        .plugin-parakeet [role=button],
        .plugin-parakeet button {
          cursor: pointer
        }

        #app-parakeet :disabled,
        .plugin-parakeet :disabled {
          cursor: default
        }

        #app-parakeet audio,
        #app-parakeet canvas,
        #app-parakeet embed,
        #app-parakeet iframe,
        #app-parakeet img,
        #app-parakeet object,
        #app-parakeet svg,
        #app-parakeet video,
        .plugin-parakeet audio,
        .plugin-parakeet canvas,
        .plugin-parakeet embed,
        .plugin-parakeet iframe,
        .plugin-parakeet img,
        .plugin-parakeet object,
        .plugin-parakeet svg,
        .plugin-parakeet video {
          display: block;
          vertical-align: middle
        }

        #app-parakeet img,
        #app-parakeet video,
        .plugin-parakeet img,
        .plugin-parakeet video {
          height: auto;
          max-width: 100%
        }

        #app-parakeet *,
        #app-parakeet :after,
        #app-parakeet :before,
        .plugin-parakeet *,
        .plugin-parakeet :after,
        .plugin-parakeet :before {
          --tw-border-spacing-x: 0;
          --tw-border-spacing-y: 0;
          --tw-translate-x: 0;
          --tw-translate-y: 0;
          --tw-rotate: 0;
          --tw-skew-x: 0;
          --tw-skew-y: 0;
          --tw-scale-x: 1;
          --tw-scale-y: 1;
          --tw-pan-x: ;
          --tw-pan-y: ;
          --tw-pinch-zoom: ;
          --tw-scroll-snap-strictness: proximity;
          --tw-ordinal: ;
          --tw-slashed-zero: ;
          --tw-numeric-figure: ;
          --tw-numeric-spacing: ;
          --tw-numeric-fraction: ;
          --tw-ring-inset: ;
          --tw-ring-offset-width: 0px;
          --tw-ring-offset-color: #fff;
          --tw-ring-color: rgba(59, 130, 246, .5);
          --tw-ring-offset-shadow: 0 0 transparent;
          --tw-ring-shadow: 0 0 transparent;
          --tw-shadow: 0 0 transparent;
          --tw-shadow-colored: 0 0 transparent;
          --tw-blur: ;
          --tw-brightness: ;
          --tw-contrast: ;
          --tw-grayscale: ;
          --tw-hue-rotate: ;
          --tw-invert: ;
          --tw-saturate: ;
          --tw-sepia: ;
          --tw-drop-shadow: ;
          --tw-backdrop-blur: ;
          --tw-backdrop-brightness: ;
          --tw-backdrop-contrast: ;
          --tw-backdrop-grayscale: ;
          --tw-backdrop-hue-rotate: ;
          --tw-backdrop-invert: ;
          --tw-backdrop-opacity: ;
          --tw-backdrop-saturate: ;
          --tw-backdrop-sepia:
        }

        #app-parakeet ::-webkit-backdrop,
        .plugin-parakeet ::-webkit-backdrop {
          --tw-border-spacing-x: 0;
          --tw-border-spacing-y: 0;
          --tw-translate-x: 0;
          --tw-translate-y: 0;
          --tw-rotate: 0;
          --tw-skew-x: 0;
          --tw-skew-y: 0;
          --tw-scale-x: 1;
          --tw-scale-y: 1;
          --tw-pan-x: ;
          --tw-pan-y: ;
          --tw-pinch-zoom: ;
          --tw-scroll-snap-strictness: proximity;
          --tw-ordinal: ;
          --tw-slashed-zero: ;
          --tw-numeric-figure: ;
          --tw-numeric-spacing: ;
          --tw-numeric-fraction: ;
          --tw-ring-inset: ;
          --tw-ring-offset-width: 0px;
          --tw-ring-offset-color: #fff;
          --tw-ring-color: rgba(59, 130, 246, .5);
          --tw-ring-offset-shadow: 0 0 transparent;
          --tw-ring-shadow: 0 0 transparent;
          --tw-shadow: 0 0 transparent;
          --tw-shadow-colored: 0 0 transparent;
          --tw-blur: ;
          --tw-brightness: ;
          --tw-contrast: ;
          --tw-grayscale: ;
          --tw-hue-rotate: ;
          --tw-invert: ;
          --tw-saturate: ;
          --tw-sepia: ;
          --tw-drop-shadow: ;
          --tw-backdrop-blur: ;
          --tw-backdrop-brightness: ;
          --tw-backdrop-contrast: ;
          --tw-backdrop-grayscale: ;
          --tw-backdrop-hue-rotate: ;
          --tw-backdrop-invert: ;
          --tw-backdrop-opacity: ;
          --tw-backdrop-saturate: ;
          --tw-backdrop-sepia:
        }

        #app-parakeet ::backdrop,
        .plugin-parakeet ::backdrop {
          --tw-border-spacing-x: 0;
          --tw-border-spacing-y: 0;
          --tw-translate-x: 0;
          --tw-translate-y: 0;
          --tw-rotate: 0;
          --tw-skew-x: 0;
          --tw-skew-y: 0;
          --tw-scale-x: 1;
          --tw-scale-y: 1;
          --tw-pan-x: ;
          --tw-pan-y: ;
          --tw-pinch-zoom: ;
          --tw-scroll-snap-strictness: proximity;
          --tw-ordinal: ;
          --tw-slashed-zero: ;
          --tw-numeric-figure: ;
          --tw-numeric-spacing: ;
          --tw-numeric-fraction: ;
          --tw-ring-inset: ;
          --tw-ring-offset-width: 0px;
          --tw-ring-offset-color: #fff;
          --tw-ring-color: rgba(59, 130, 246, .5);
          --tw-ring-offset-shadow: 0 0 transparent;
          --tw-ring-shadow: 0 0 transparent;
          --tw-shadow: 0 0 transparent;
          --tw-shadow-colored: 0 0 transparent;
          --tw-blur: ;
          --tw-brightness: ;
          --tw-contrast: ;
          --tw-grayscale: ;
          --tw-hue-rotate: ;
          --tw-invert: ;
          --tw-saturate: ;
          --tw-sepia: ;
          --tw-drop-shadow: ;
          --tw-backdrop-blur: ;
          --tw-backdrop-brightness: ;
          --tw-backdrop-contrast: ;
          --tw-backdrop-grayscale: ;
          --tw-backdrop-hue-rotate: ;
          --tw-backdrop-invert: ;
          --tw-backdrop-opacity: ;
          --tw-backdrop-saturate: ;
          --tw-backdrop-sepia:
        }

        #app-parakeet .pk-pointer-events-none,
        .plugin-parakeet .pk-pointer-events-none {
          pointer-events: none
        }

        #app-parakeet .pk-absolute,
        .plugin-parakeet .pk-absolute {
          position: absolute
        }

        #app-parakeet .pk-relative,
        .plugin-parakeet .pk-relative {
          position: relative
        }

        #app-parakeet .pk-top-0,
        .plugin-parakeet .pk-top-0 {
          top: 0
        }

        #app-parakeet .pk-left-0,
        .plugin-parakeet .pk-left-0 {
          left: 0
        }

        #app-parakeet .pk--top-3,
        .plugin-parakeet .pk--top-3 {
          top: -.75rem
        }

        #app-parakeet .pk--right-3,
        .plugin-parakeet .pk--right-3 {
          right: -.75rem
        }

        #app-parakeet .pk-z-\[9999\],
        .plugin-parakeet .pk-z-\[9999\] {
          z-index: 9999
        }

        #app-parakeet .pk-my-6,
        .plugin-parakeet .pk-my-6 {
          margin-bottom: 1.5rem;
          margin-top: 1.5rem
        }

        #app-parakeet .pk-mx-1,
        .plugin-parakeet .pk-mx-1 {
          margin-left: .25rem;
          margin-right: .25rem
        }

        #app-parakeet .pk--mx-4,
        .plugin-parakeet .pk--mx-4 {
          margin-left: -1rem;
          margin-right: -1rem
        }

        #app-parakeet .pk-my-0,
        .plugin-parakeet .pk-my-0 {
          margin-bottom: 0;
          margin-top: 0
        }

        #app-parakeet .pk-ml-\[10px\],
        .plugin-parakeet .pk-ml-\[10px\] {
          margin-left: 10px
        }

        #app-parakeet .pk-mr-\[10px\],
        .plugin-parakeet .pk-mr-\[10px\] {
          margin-right: 10px
        }

        #app-parakeet .pk-mb-4,
        .plugin-parakeet .pk-mb-4 {
          margin-bottom: 1rem
        }

        #app-parakeet .pk-mr-2\.5,
        .plugin-parakeet .pk-mr-2\.5 {
          margin-right: .625rem
        }

        #app-parakeet .pk-mr-2,
        .plugin-parakeet .pk-mr-2 {
          margin-right: .5rem
        }

        #app-parakeet .pk-ml-1\.5,
        .plugin-parakeet .pk-ml-1\.5 {
          margin-left: .375rem
        }

        #app-parakeet .pk-ml-1,
        .plugin-parakeet .pk-ml-1 {
          margin-left: .25rem
        }

        #app-parakeet .pk-mb-3,
        .plugin-parakeet .pk-mb-3 {
          margin-bottom: .75rem
        }

        #app-parakeet .pk-mb-2\.5,
        .plugin-parakeet .pk-mb-2\.5 {
          margin-bottom: .625rem
        }

        #app-parakeet .pk-mb-2,
        .plugin-parakeet .pk-mb-2 {
          margin-bottom: .5rem
        }

        #app-parakeet .pk-mt-2,
        .plugin-parakeet .pk-mt-2 {
          margin-top: .5rem
        }

        #app-parakeet .\!pk-mt-7,
        .plugin-parakeet .\!pk-mt-7 {
          margin-top: 1.75rem !important
        }

        #app-parakeet .pk-ml-2,
        .plugin-parakeet .pk-ml-2 {
          margin-left: .5rem
        }

        #app-parakeet .pk--mt-0\.5,
        .plugin-parakeet .pk--mt-0\.5 {
          margin-top: -.125rem
        }

        #app-parakeet .pk--mb-1\.5,
        .plugin-parakeet .pk--mb-1\.5 {
          margin-bottom: -.375rem
        }

        #app-parakeet .pk--mt-0,
        .plugin-parakeet .pk--mt-0 {
          margin-top: 0
        }

        #app-parakeet .pk--mb-1,
        .plugin-parakeet .pk--mb-1 {
          margin-bottom: -.25rem
        }

        #app-parakeet .\!pk-mb-0,
        .plugin-parakeet .\!pk-mb-0 {
          margin-bottom: 0 !important
        }

        #app-parakeet .pk-ml-3,
        .plugin-parakeet .pk-ml-3 {
          margin-left: .75rem
        }

        #app-parakeet .pk-ml-auto,
        .plugin-parakeet .pk-ml-auto {
          margin-left: auto
        }

        #app-parakeet .pk-mr-4,
        .plugin-parakeet .pk-mr-4 {
          margin-right: 1rem
        }

        #app-parakeet .pk--mt-1\.5,
        .plugin-parakeet .pk--mt-1\.5 {
          margin-top: -.375rem
        }

        #app-parakeet .pk--ml-2,
        .plugin-parakeet .pk--ml-2 {
          margin-left: -.5rem
        }

        #app-parakeet .pk--mt-1,
        .plugin-parakeet .pk--mt-1 {
          margin-top: -.25rem
        }

        #app-parakeet .pk-mt-3,
        .plugin-parakeet .pk-mt-3 {
          margin-top: .75rem
        }

        #app-parakeet .pk-block,
        .plugin-parakeet .pk-block {
          display: block
        }

        #app-parakeet .pk-inline-block,
        .plugin-parakeet .pk-inline-block {
          display: inline-block
        }

        #app-parakeet .pk-flex,
        .plugin-parakeet .pk-flex {
          display: flex
        }

        #app-parakeet .pk-grid,
        .plugin-parakeet .pk-grid {
          display: grid
        }

        #app-parakeet .pk-h-4\.5,
        .plugin-parakeet .pk-h-4\.5 {
          height: 1.125rem
        }

        #app-parakeet .pk-h-4,
        .plugin-parakeet .pk-h-4 {
          height: 1rem
        }

        #app-parakeet .pk-h-11\.5,
        .plugin-parakeet .pk-h-11\.5 {
          height: 2.875rem
        }

        #app-parakeet .pk-h-11,
        .plugin-parakeet .pk-h-11 {
          height: 2.75rem
        }

        #app-parakeet .pk-h-full,
        .plugin-parakeet .pk-h-full {
          height: 100%
        }

        #app-parakeet .pk-h-18,
        .plugin-parakeet .pk-h-18 {
          height: 4.5rem
        }

        #app-parakeet .pk-h-23,
        .plugin-parakeet .pk-h-23 {
          height: 5.75rem
        }

        #app-parakeet .pk-h-20,
        .plugin-parakeet .pk-h-20 {
          height: 5rem
        }

        #app-parakeet .pk-w-4\.5,
        .plugin-parakeet .pk-w-4\.5 {
          width: 1.125rem
        }

        #app-parakeet .pk-w-4,
        .plugin-parakeet .pk-w-4 {
          width: 1rem
        }

        #app-parakeet .pk-w-full,
        .plugin-parakeet .pk-w-full {
          width: 100%
        }

        #app-parakeet .pk-w-11,
        .plugin-parakeet .pk-w-11 {
          width: 2.75rem
        }

        #app-parakeet .pk-w-18,
        .plugin-parakeet .pk-w-18 {
          width: 4.5rem
        }

        #app-parakeet .pk-w-23,
        .plugin-parakeet .pk-w-23 {
          width: 5.75rem
        }

        #app-parakeet .pk-w-20,
        .plugin-parakeet .pk-w-20 {
          width: 5rem
        }

        #app-parakeet .pk-w-fit,
        .plugin-parakeet .pk-w-fit {
          width: -webkit-fit-content;
          width: fit-content
        }

        #app-parakeet .pk-min-w-\[46px\],
        .plugin-parakeet .pk-min-w-\[46px\] {
          min-width: 46px
        }

        #app-parakeet .pk-min-w-0,
        .plugin-parakeet .pk-min-w-0 {
          min-width: 0
        }

        #app-parakeet .pk-max-w-\[50vw\],
        .plugin-parakeet .pk-max-w-\[50vw\] {
          max-width: 50vw
        }

        #app-parakeet .pk-flex-none,
        .plugin-parakeet .pk-flex-none {
          flex: none
        }

        #app-parakeet .pk-flex-1,
        .plugin-parakeet .pk-flex-1 {
          flex: 1 1 0%
        }

        #app-parakeet .pk-cursor-pointer,
        .plugin-parakeet .pk-cursor-pointer {
          cursor: pointer
        }

        #app-parakeet .pk-cursor-text,
        .plugin-parakeet .pk-cursor-text {
          cursor: text
        }

        #app-parakeet .pk-select-none,
        .plugin-parakeet .pk-select-none {
          -webkit-user-select: none;
          user-select: none
        }

        #app-parakeet .pk-appearance-none,
        .plugin-parakeet .pk-appearance-none {
          -webkit-appearance: none;
          appearance: none
        }

        #app-parakeet .pk-grid-flow-col,
        .plugin-parakeet .pk-grid-flow-col {
          grid-auto-flow: column
        }

        #app-parakeet .pk-grid-rows-\[auto\,auto\,auto\,auto\],
        .plugin-parakeet .pk-grid-rows-\[auto\,auto\,auto\,auto\] {
          grid-template-rows: auto auto auto auto
        }

        #app-parakeet .pk-flex-col,
        .plugin-parakeet .pk-flex-col {
          flex-direction: column
        }

        #app-parakeet .pk-flex-wrap,
        .plugin-parakeet .pk-flex-wrap {
          flex-wrap: wrap
        }

        #app-parakeet .pk-items-center,
        .plugin-parakeet .pk-items-center {
          align-items: center
        }

        #app-parakeet .pk-justify-center,
        .plugin-parakeet .pk-justify-center {
          justify-content: center
        }

        #app-parakeet .pk-gap-4,
        .plugin-parakeet .pk-gap-4 {
          gap: 1rem
        }

        #app-parakeet .pk-gap-x-3,
        .plugin-parakeet .pk-gap-x-3 {
          column-gap: .75rem
        }

        #app-parakeet .pk-gap-y-4,
        .plugin-parakeet .pk-gap-y-4 {
          row-gap: 1rem
        }

        #app-parakeet .pk-space-y-4>:not([hidden])~:not([hidden]),
        .plugin-parakeet .pk-space-y-4>:not([hidden])~:not([hidden]) {
          --tw-space-y-reverse: 0;
          margin-bottom: calc(1rem*var(--tw-space-y-reverse));
          margin-top: calc(1rem*(1 - var(--tw-space-y-reverse)))
        }

        #app-parakeet .pk-space-y-5>:not([hidden])~:not([hidden]),
        .plugin-parakeet .pk-space-y-5>:not([hidden])~:not([hidden]) {
          --tw-space-y-reverse: 0;
          margin-bottom: calc(1.25rem*var(--tw-space-y-reverse));
          margin-top: calc(1.25rem*(1 - var(--tw-space-y-reverse)))
        }

        #app-parakeet .pk-self-center,
        .plugin-parakeet .pk-self-center {
          align-self: center
        }

        #app-parakeet .pk-overflow-hidden,
        .plugin-parakeet .pk-overflow-hidden {
          overflow: hidden
        }

        #app-parakeet .pk-truncate,
        .plugin-parakeet .pk-truncate {
          overflow: hidden;
          text-overflow: ellipsis;
          white-space: nowrap
        }

        #app-parakeet .pk-break-words,
        .plugin-parakeet .pk-break-words {
          overflow-wrap: break-word
        }

        #app-parakeet .pk-break-all,
        .plugin-parakeet .pk-break-all {
          word-break: break-all
        }

        #app-parakeet .pk-rounded-full,
        .plugin-parakeet .pk-rounded-full {
          border-radius: 9999px
        }

        #app-parakeet .pk-rounded-md,
        .plugin-parakeet .pk-rounded-md {
          border-radius: .375rem
        }

        #app-parakeet .pk-rounded,
        .plugin-parakeet .pk-rounded {
          border-radius: .25rem
        }

        #app-parakeet .pk-rounded-\[3px\],
        .plugin-parakeet .pk-rounded-\[3px\] {
          border-radius: 3px
        }

        #app-parakeet .pk-border-\[5px\],
        .plugin-parakeet .pk-border-\[5px\] {
          border-width: 5px
        }

        #app-parakeet .pk-border-2,
        .plugin-parakeet .pk-border-2 {
          border-width: 2px
        }

        #app-parakeet .pk-border,
        .plugin-parakeet .pk-border {
          border-width: 1px
        }

        #app-parakeet .pk-border-0,
        .plugin-parakeet .pk-border-0 {
          border-width: 0
        }

        #app-parakeet .pk-border-solid,
        .plugin-parakeet .pk-border-solid {
          border-style: solid
        }

        #app-parakeet .pk-border-dashed,
        .plugin-parakeet .pk-border-dashed {
          border-style: dashed
        }

        #app-parakeet .pk-border-transparent,
        .plugin-parakeet .pk-border-transparent {
          border-color: transparent
        }

        #app-parakeet .pk-border-\[\#333\],
        .plugin-parakeet .pk-border-\[\#333\] {
          --tw-border-opacity: 1;
          border-color: rgba(51, 51, 51, var(--tw-border-opacity))
        }

        #app-parakeet .pk-border-\[\#DB393A\],
        .plugin-parakeet .pk-border-\[\#DB393A\] {
          --tw-border-opacity: 1;
          border-color: rgba(219, 57, 58, var(--tw-border-opacity))
        }

        #app-parakeet .pk-border-\[\#D1D1D1\],
        .plugin-parakeet .pk-border-\[\#D1D1D1\] {
          --tw-border-opacity: 1;
          border-color: rgba(209, 209, 209, var(--tw-border-opacity))
        }

        #app-parakeet .pk-border-\[\#d9d9d9\],
        .plugin-parakeet .pk-border-\[\#d9d9d9\] {
          --tw-border-opacity: 1;
          border-color: rgba(217, 217, 217, var(--tw-border-opacity))
        }

        #app-parakeet .pk-border-t-white,
        .plugin-parakeet .pk-border-t-white {
          --tw-border-opacity: 1;
          border-top-color: rgba(255, 255, 255, var(--tw-border-opacity))
        }

        #app-parakeet .pk-bg-\[\#E6E6E6\]\/40,
        .plugin-parakeet .pk-bg-\[\#E6E6E6\]\/40 {
          background-color: hsla(0, 0%, 90%, .4)
        }

        #app-parakeet .pk-bg-white,
        .plugin-parakeet .pk-bg-white {
          --tw-bg-opacity: 1;
          background-color: rgba(255, 255, 255, var(--tw-bg-opacity))
        }

        #app-parakeet .pk-bg-transparent,
        .plugin-parakeet .pk-bg-transparent {
          background-color: initial
        }

        #app-parakeet .pk-bg-\[\#fdfdfd\],
        .plugin-parakeet .pk-bg-\[\#fdfdfd\] {
          --tw-bg-opacity: 1;
          background-color: rgba(253, 253, 253, var(--tw-bg-opacity))
        }

        #app-parakeet .pk-bg-\[\#F6F6F7\],
        .plugin-parakeet .pk-bg-\[\#F6F6F7\] {
          --tw-bg-opacity: 1;
          background-color: rgba(246, 246, 247, var(--tw-bg-opacity))
        }

        #app-parakeet .pk-object-contain,
        .plugin-parakeet .pk-object-contain {
          object-fit: contain
        }

        #app-parakeet .pk-object-cover,
        .plugin-parakeet .pk-object-cover {
          object-fit: cover
        }

        #app-parakeet .pk-object-center,
        .plugin-parakeet .pk-object-center {
          object-position: center
        }

        #app-parakeet .pk-py-2,
        .plugin-parakeet .pk-py-2 {
          padding-bottom: .5rem;
          padding-top: .5rem
        }

        #app-parakeet .pk-px-3,
        .plugin-parakeet .pk-px-3 {
          padding-left: .75rem;
          padding-right: .75rem
        }

        #app-parakeet .pk-px-5,
        .plugin-parakeet .pk-px-5 {
          padding-left: 1.25rem;
          padding-right: 1.25rem
        }

        #app-parakeet .pk-px-4,
        .plugin-parakeet .pk-px-4 {
          padding-left: 1rem;
          padding-right: 1rem
        }

        #app-parakeet .pk-py-1\.5,
        .plugin-parakeet .pk-py-1\.5 {
          padding-bottom: .375rem;
          padding-top: .375rem
        }

        #app-parakeet .pk-py-1,
        .plugin-parakeet .pk-py-1 {
          padding-bottom: .25rem;
          padding-top: .25rem
        }

        #app-parakeet .pk-py-3\.5,
        .plugin-parakeet .pk-py-3\.5 {
          padding-bottom: .875rem;
          padding-top: .875rem
        }

        #app-parakeet .pk-py-3,
        .plugin-parakeet .pk-py-3 {
          padding-bottom: .75rem;
          padding-top: .75rem
        }

        #app-parakeet .pk-pt-2,
        .plugin-parakeet .pk-pt-2 {
          padding-top: .5rem
        }

        #app-parakeet .pk-pb-1,
        .plugin-parakeet .pk-pb-1 {
          padding-bottom: .25rem
        }

        #app-parakeet .pk-pl-4,
        .plugin-parakeet .pk-pl-4 {
          padding-left: 1rem
        }

        #app-parakeet .pk-pr-10\.5,
        .plugin-parakeet .pk-pr-10\.5 {
          padding-right: 2.625rem
        }

        #app-parakeet .pk-pr-10,
        .plugin-parakeet .pk-pr-10 {
          padding-right: 2.5rem
        }

        #app-parakeet .\!pk-text-\[13px\],
        .plugin-parakeet .\!pk-text-\[13px\] {
          font-size: 13px !important
        }

        #app-parakeet .\!pk-text-\[14px\],
        .plugin-parakeet .\!pk-text-\[14px\] {
          font-size: 14px !important
        }

        #app-parakeet .\!pk-text-\[15px\],
        .plugin-parakeet .\!pk-text-\[15px\] {
          font-size: 15px !important
        }

        #app-parakeet .pk-text-\[14px\],
        .plugin-parakeet .pk-text-\[14px\] {
          font-size: 14px
        }

        #app-parakeet .pk-text-sm,
        .plugin-parakeet .pk-text-sm {
          font-size: .875rem;
          line-height: 1.25rem
        }

        #app-parakeet .pk-text-xs,
        .plugin-parakeet .pk-text-xs {
          font-size: .75rem;
          line-height: 1rem
        }

        #app-parakeet .pk-text-\[15px\],
        .plugin-parakeet .pk-text-\[15px\] {
          font-size: 15px
        }

        #app-parakeet .\!pk-text-\[16px\],
        .plugin-parakeet .\!pk-text-\[16px\] {
          font-size: 16px !important
        }

        #app-parakeet .pk-font-semibold,
        .plugin-parakeet .pk-font-semibold {
          font-weight: 600
        }

        #app-parakeet .pk-font-medium,
        .plugin-parakeet .pk-font-medium {
          font-weight: 500
        }

        #app-parakeet .pk-leading-none,
        .plugin-parakeet .pk-leading-none {
          line-height: 1
        }

        #app-parakeet .pk-leading-5,
        .plugin-parakeet .pk-leading-5 {
          line-height: 1.25rem
        }

        #app-parakeet .pk-leading-\[0px\],
        .plugin-parakeet .pk-leading-\[0px\] {
          line-height: 0px
        }

        #app-parakeet .pk-text-\[\#DB393A\],
        .plugin-parakeet .pk-text-\[\#DB393A\] {
          --tw-text-opacity: 1;
          color: rgba(219, 57, 58, var(--tw-text-opacity))
        }

        #app-parakeet .pk-text-\[\#7A7A7A\],
        .plugin-parakeet .pk-text-\[\#7A7A7A\] {
          --tw-text-opacity: 1;
          color: rgba(122, 122, 122, var(--tw-text-opacity))
        }

        #app-parakeet .pk-text-\[\#d2d5d8\],
        .plugin-parakeet .pk-text-\[\#d2d5d8\] {
          --tw-text-opacity: 1;
          color: rgba(210, 213, 216, var(--tw-text-opacity))
        }

        #app-parakeet .pk-text-\[\#93989D\],
        .plugin-parakeet .pk-text-\[\#93989D\] {
          --tw-text-opacity: 1;
          color: rgba(147, 152, 157, var(--tw-text-opacity))
        }

        #app-parakeet .pk-text-\[\#292929\]\/75,
        .plugin-parakeet .pk-text-\[\#292929\]\/75 {
          color: rgba(41, 41, 41, .75)
        }

        #app-parakeet .pk-text-opacity-80,
        .plugin-parakeet .pk-text-opacity-80 {
          --tw-text-opacity: 0.8
        }

        #app-parakeet .pk-opacity-0,
        .plugin-parakeet .pk-opacity-0 {
          opacity: 0
        }

        #app-parakeet .pk-shadow-\[0px_4px_18px_rgb\(0_0_0_\/_10\%\)\],
        .plugin-parakeet .pk-shadow-\[0px_4px_18px_rgb\(0_0_0_\/_10\%\)\] {
          --tw-shadow: 0px 4px 18px rgba(0, 0, 0, .1);
          --tw-shadow-colored: 0px 4px 18px var(--tw-shadow-color);
          box-shadow: var(--tw-ring-offset-shadow, 0 0 transparent), var(--tw-ring-shadow, 0 0 transparent), var(--tw-shadow)
        }

        #app-parakeet .pk-outline-none,
        .plugin-parakeet .pk-outline-none {
          outline: 2px solid transparent;
          outline-offset: 2px
        }

        #app-parakeet .pk-ring-2,
        .plugin-parakeet .pk-ring-2 {
          --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
          --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
          box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 transparent)
        }

        #app-parakeet .pk-ring-\[\#333\],
        .plugin-parakeet .pk-ring-\[\#333\] {
          --tw-ring-opacity: 1;
          --tw-ring-color: rgba(51, 51, 51, var(--tw-ring-opacity))
        }

        #app-parakeet .pk-ring-offset-2,
        .plugin-parakeet .pk-ring-offset-2 {
          --tw-ring-offset-width: 2px
        }

        #app-parakeet .placeholder\:pk-text-\[color\:\#93989D\]::-webkit-input-placeholder,
        .plugin-parakeet .placeholder\:pk-text-\[color\:\#93989D\]::-webkit-input-placeholder {
          --tw-text-opacity: 1;
          color: rgba(147, 152, 157, var(--tw-text-opacity))
        }

        #app-parakeet .placeholder\:pk-text-\[color\:\#93989D\]::placeholder,
        .plugin-parakeet .placeholder\:pk-text-\[color\:\#93989D\]::placeholder {
          --tw-text-opacity: 1;
          color: rgba(147, 152, 157, var(--tw-text-opacity))
        }

        #app-parakeet .last\:pk-mb-0:last-child,
        .plugin-parakeet .last\:pk-mb-0:last-child {
          margin-bottom: 0
        }

        #app-parakeet .hover\:pk-bg-\[\#f6f6f7\]:hover,
        .plugin-parakeet .hover\:pk-bg-\[\#f6f6f7\]:hover {
          --tw-bg-opacity: 1;
          background-color: rgba(246, 246, 247, var(--tw-bg-opacity))
        }

        #app-parakeet .focus\:pk-border-\[\#333\]:focus,
        .plugin-parakeet .focus\:pk-border-\[\#333\]:focus {
          --tw-border-opacity: 1;
          border-color: rgba(51, 51, 51, var(--tw-border-opacity))
        }

        @media (min-width:768px) {

          #app-parakeet .md\:pk-max-w-\[33vw\],
          .plugin-parakeet .md\:pk-max-w-\[33vw\] {
            max-width: 33vw
          }

          #app-parakeet .md\:pk-text-base,
          .plugin-parakeet .md\:pk-text-base {
            font-size: 1rem;
            line-height: 1.5rem
          }

          #app-parakeet .md\:pk-text-sm,
          .plugin-parakeet .md\:pk-text-sm {
            font-size: .875rem;
            line-height: 1.25rem
          }
        }

        @media (min-width:1024px) {

          #app-parakeet .lg\:pk-px-8,
          .plugin-parakeet .lg\:pk-px-8 {
            padding-left: 2rem;
            padding-right: 2rem
          }
        }

        .TooltipIconLarge-module_large_tooltip__gzcyR {
          align-items: center;
          background: #fff;
          border-radius: 6px;
          box-shadow: 0 4px 36px 0 rgba(51, 51, 51, .08) !important;
          box-sizing: border-box;
          display: flex;
          flex-direction: column;
          flex-wrap: wrap;
          gap: 8px !important;
          padding: 8px !important;
          width: 136px
        }

        .TooltipIconLarge-module_large_tooltip_img__rpH1F {
          border-radius: 3px;
          height: 120px !important;
          width: 120px !important
        }

        @media (max-width:959px) {
          .TooltipIconLarge-module_large_tooltip__gzcyR {
            width: 104px !important
          }

          .TooltipIconLarge-module_large_tooltip_img__rpH1F {
            border-radius: 3px;
            height: 88px !important;
            width: 88px !important
          }
        }

        .Dropdown-module_dropdown-label__8sSmb[\:has\(select\:focus\)] {
          border: 1px solid #333 !important
        }

        .Dropdown-module_dropdown-label__8sSmb:has(select:focus) {
          border: 1px solid #333 !important
        }

        .Text-module_text-label__8sMmT[\:has\(input\:focus\)] {
          border: 1px solid #333
        }

        .Text-module_text-label__8sMmT:has(input:focus) {
          border: 1px solid #333
        }

        .Text-module_text_preview_contaniner__X8vAR {
          display: flex;
          flex-direction: column;
          flex-wrap: wrap;
          gap: 20px;
          margin-top: 20px
        }

        .Text-module_font_color_area__Zch0o,
        .Text-module_font_family_area__BUzEb,
        .Text-module_font_size_area__KmeEO {
          align-items: flex-start;
          display: flex;
          flex-direction: column;
          gap: 12px;
          width: 100%
        }

        .Text-module_preview_item_label__akFsR {
          color: rgba(51, 51, 51, .9);
          font-size: 15px;
          line-height: 130%
        }

        .Text-module_color_block_wrapper__0K3rY {
          align-items: flex-start;
          align-self: stretch;
          display: flex;
          flex-wrap: wrap;
          gap: 4px;
          width: 100%
        }

        .Text-module_color_block__8LhBv {
          align-items: center;
          border-radius: 6px;
          box-sizing: border-box;
          cursor: pointer;
          display: flex;
          height: 52px;
          justify-content: center;
          padding: 0;
          width: 52px
        }

        .Text-module_font_family_select_wrapper__N-f37 {
          border: 1px solid rgba(51, 51, 51, .12) !important;
          border-radius: 4px;
          overflow: hidden;
          position: relative;
          width: 100%
        }

        .Text-module_font_family_select__otjrz {
          -webkit-appearance: none;
          appearance: none;
          background: #fff;
          border: none !important;
          color: #333 !important;
          cursor: pointer;
          font-size: 14px !important;
          font-weight: 500 !important;
          height: 100%;
          line-height: 130% !important;
          overflow: hidden;
          padding: 14px 42px 14px 16px !important;
          text-overflow: ellipsis;
          white-space: nowrap;
          width: 100%
        }

        .Text-module_arrow_down_icon__GZiHO {
          cursor: pointer;
          position: absolute;
          right: 16px;
          top: 16px
        }

        .Text-module_font_size_wrapper__TRp3a {
          -webkit-tap-highlight-color: #fff;
          align-items: center;
          background: #fff;
          border: 1px solid rgba(51, 51, 51, .12) !important;
          border-radius: 4px;
          box-sizing: border-box;
          display: flex;
          gap: 10px;
          height: 44px;
          outline: none;
          padding: 5px 39px 5px 16px;
          position: relative;
          width: 120px
        }

        .Text-module_input_up__huYER {
          cursor: pointer;
          position: absolute;
          right: 5px;
          top: 3px
        }

        .Text-module_input_up__huYER:hover rect {
          fill: #dbdddf
        }

        .Text-module_input_up__huYER:active rect {
          fill: #c9ccd0
        }

        .Text-module_input_down__g1FF8 {
          cursor: pointer;
          position: absolute;
          right: 5px;
          top: 23px
        }

        .Text-module_input_down__g1FF8:active rect {
          fill: #c9ccd0
        }

        .Text-module_font_size_input__fMl0u {
          -webkit-appearance: none !important;
          appearance: none !important;
          font-size: 14px !important;
          font-weight: 500 !important;
          height: 100%;
          line-height: 130% !important;
          outline: none !important;
          width: 100%
        }

        .Checkbox-module_checkbox_img__wHiW3 {
          border-radius: 3px;
          height: 52px !important;
          margin-left: 8px;
          width: 52px
        }

        .Checkbox-module_checkbox_img_default__S0ISH {
          align-items: center;
          background-color: #f5f5f5;
          border-radius: 3px;
          display: flex;
          height: 52px !important;
          justify-content: center;
          margin-left: 8px;
          width: 52px
        }

        .Checkbox-module_checkbox_row__MJZge {
          align-items: stretch !important;
          display: flex !important;
          flex-wrap: wrap !important;
          gap: 12px !important;
          margin-left: 0 !important;
          width: 100% !important
        }

        .Checkbox-module_checkbox_row__MJZge>label {
          background: #fff !important;
          border: 1px solid #e6e6e6 !important;
          border-radius: 6px !important;
          box-sizing: border-box !important;
          display: flex !important;
          flex-direction: column !important;
          flex-wrap: wrap !important;
          margin-bottom: 0 !important;
          min-height: 125px !important;
          padding: 8px 8px 10px !important;
          width: 118px !important
        }

        .Checkbox-module_checkbox_row__MJZge>.Checkbox-module_label_checked__YpN49 {
          background: #fff !important;
          border: 1px solid #333 !important;
          border-radius: 6px !important
        }

        .Checkbox-module_checkbox_row__MJZge>label * {
          margin: 0 !important
        }

        .Checkbox-module_checkbox_row__MJZge>label>svg {
          margin-bottom: 8px !important
        }

        .Checkbox-module_checkbox_row__MJZge>label>span {
          margin-top: 5px !important
        }

        .Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img__wHiW3,
        .Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img_default__S0ISH {
          height: 66px !important;
          object-fit: contain;
          width: 66px !important
        }

        @media (max-width:959px) {
          .Checkbox-module_checkbox_row__MJZge>label {
            min-height: 111px !important;
            width: 106px !important
          }

          .Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img__wHiW3,
          .Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img_default__S0ISH {
            height: 52px !important;
            object-fit: contain;
            width: 52px !important
          }
        }

        .common-module_flex__7RXvG {
          display: flex
        }

        .common-module_flex_center_y__ZWb6u {
          align-items: center;
          display: flex
        }

        .common-module_toast__WjP9V {
          background: rgba(51, 51, 51, .9) !important;
          border-radius: 8px;
          display: inline-block !important;
          max-width: 263px;
          padding: 20px 24px !important;
          right: 50% !important;
          text-align: center;
          transform: translate(50%, 120px);
          width: -webkit-max-content !important;
          width: max-content !important;
          z-index: 10000 !important
        }

        .common-module_toast__WjP9V .rc-notification-notice {
          background: none !important;
          box-shadow: none;
          margin: 0;
          padding: 0
        }

        .common-module_toast__WjP9V .rc-notification-notice-content {
          background: none !important;
          color: #fff;
          font-size: 14px;
          font-weight: 500;
          line-height: 18px;
          padding: 0
        }

        .common-module_app-parakeet-dialog__UWDmu .rc-dialog-body {
          padding: 24px
        }

        .common-module_ap-dialog-title__-GIOw {
          color: #222;
          font-size: 24px;
          font-weight: 600;
          line-height: 130%
        }

        .common-module_ap-dialog-body__5yegi {
          color: #222;
          font-family: inherit;
          font-size: 15px;
          font-weight: 400;
          line-height: 130%;
          margin-top: 16px
        }

        .common-module_app-dialog-footer__qYGkd {
          display: flex;
          justify-content: flex-end;
          margin-top: 40px
        }

        .common-module_ap-button__RhZvx {
          border: 1px solid rgba(51, 51, 51, .12);
          border-radius: 6px;
          cursor: pointer;
          font-family: inherit;
          font-size: 15px;
          min-width: 84px;
          outline: none !important;
          padding: 8px 16px
        }

        .common-module_app-parakeet-dialog--wrapper__YIL3t {
          align-items: center;
          display: flex;
          justify-content: center
        }

        .common-module_ap-button-no__f3AQV {
          background: #fff;
          color: #333
        }

        .common-module_ap-button-ok__-Dglc {
          background: #333;
          color: #fff;
          margin-left: 12px
        }

        .common-module_app-parakeet-dialog__UWDmu .rc-dialog-close {
          opacity: 1 !important;
          padding: 0 !important;
          top: 24px
        }

        .common-module_clone-lower-canvas__8Uh2v {
          pointer-events: none;
          touch-action: none;
          -webkit-user-select: none;
          user-select: none;
          width: 100%
        }

        @media (min-width:768px) {
          .common-module_app-parakeet-dialog__UWDmu {
            width: 580px !important
          }

          .common-module_app-parakeet-dialog__UWDmu .rc-dialog-content {
            border-radius: 8px
          }
        }

        @media (max-width:767px) {
          .common-module_app-parakeet-dialog__UWDmu {
            margin: 0 16px !important;
            width: 100% !important
          }

          .common-module_app-parakeet-dialog__UWDmu .rc-dialog-body {
            padding: 16px
          }

          .common-module_ap-button__RhZvx {
            font-size: 15px
          }

          .common-module_app-parakeet-dialog__UWDmu .rc-dialog-close {
            right: 16px !important;
            top: 16px
          }

          .common-module_toast__WjP9V {
            left: 50% !important;
            top: 50% !important;
            transform: translateY(-50%) translateX(-50%) !important
          }
        }

        .advanced-cropper-line-wrapper--north,
        .advanced-cropper-line-wrapper--south {
          height: 12px;
          width: 100%
        }

        .advanced-cropper-line-wrapper--north {
          cursor: n-resize
        }

        .advanced-cropper-line-wrapper--south {
          cursor: s-resize
        }

        .advanced-cropper-line-wrapper--east,
        .advanced-cropper-line-wrapper--west {
          height: 100%;
          width: 12px
        }

        .advanced-cropper-line-wrapper--east {
          cursor: e-resize
        }

        .advanced-cropper-line-wrapper--west {
          cursor: w-resize
        }

        .advanced-cropper-line-wrapper--disabled {
          cursor: auto
        }

        .advanced-cropper-line-wrapper__content {
          position: absolute
        }

        .advanced-cropper-line-wrapper__content--east,
        .advanced-cropper-line-wrapper__content--west {
          height: 100%
        }

        .advanced-cropper-line-wrapper__content--north,
        .advanced-cropper-line-wrapper__content--south {
          width: 100%
        }

        .advanced-cropper-line-wrapper__content--east {
          left: 50%;
          transform: translateX(-100%)
        }

        .advanced-cropper-line-wrapper__content--west {
          right: 50%;
          transform: translateX(100%)
        }

        .advanced-cropper-line-wrapper__content--north {
          top: 50%
        }

        .advanced-cropper-line-wrapper__content--south {
          bottom: 50%
        }

        .advanced-cropper-handler-wrapper {
          height: 30px;
          position: absolute;
          transform: translate(-50%, -50%);
          width: 30px
        }

        .advanced-cropper-handler-wrapper__draggable {
          align-items: center;
          display: flex;
          height: 100%;
          justify-content: center;
          width: 100%
        }

        .advanced-cropper-handler-wrapper--west-north {
          cursor: nw-resize
        }

        .advanced-cropper-handler-wrapper--north {
          cursor: n-resize
        }

        .advanced-cropper-handler-wrapper--east-north {
          cursor: ne-resize
        }

        .advanced-cropper-handler-wrapper--east {
          cursor: e-resize
        }

        .advanced-cropper-handler-wrapper--east-south {
          cursor: se-resize
        }

        .advanced-cropper-handler-wrapper--south {
          cursor: s-resize
        }

        .advanced-cropper-handler-wrapper--west-south {
          cursor: sw-resize
        }

        .advanced-cropper-handler-wrapper--west {
          cursor: w-resize
        }

        .advanced-cropper-handler-wrapper--disabled {
          cursor: auto
        }

        .advanced-cropper-bounding-box {
          height: 100%;
          position: relative;
          width: 100%
        }

        .advanced-cropper-bounding-box__handler-wrapper {
          position: absolute
        }

        .advanced-cropper-bounding-box__handler-wrapper--east,
        .advanced-cropper-bounding-box__handler-wrapper--west {
          height: 100%;
          top: 50%;
          transform: translateY(-50%)
        }

        .advanced-cropper-bounding-box__handler-wrapper--north,
        .advanced-cropper-bounding-box__handler-wrapper--south {
          left: 50%;
          transform: translateX(-50%);
          width: 100%
        }

        .advanced-cropper-bounding-box__handler-wrapper--west,
        .advanced-cropper-bounding-box__handler-wrapper--west-north,
        .advanced-cropper-bounding-box__handler-wrapper--west-south {
          left: 0
        }

        .advanced-cropper-bounding-box__handler-wrapper--east,
        .advanced-cropper-bounding-box__handler-wrapper--east-north,
        .advanced-cropper-bounding-box__handler-wrapper--east-south {
          left: 100%
        }

        .advanced-cropper-bounding-box__handler-wrapper--east-north,
        .advanced-cropper-bounding-box__handler-wrapper--north,
        .advanced-cropper-bounding-box__handler-wrapper--west-north {
          top: 0
        }

        .advanced-cropper-bounding-box__handler-wrapper--east-south,
        .advanced-cropper-bounding-box__handler-wrapper--south,
        .advanced-cropper-bounding-box__handler-wrapper--west-south {
          top: 100%
        }

        .advanced-cropper-bounding-box__handler {
          position: absolute
        }

        .advanced-cropper-bounding-box__handler--west-north {
          left: 0;
          top: 0
        }

        .advanced-cropper-bounding-box__handler--north {
          left: 50%;
          top: 0
        }

        .advanced-cropper-bounding-box__handler--east-north {
          left: 100%;
          top: 0
        }

        .advanced-cropper-bounding-box__handler--east {
          left: 100%;
          top: 50%
        }

        .advanced-cropper-bounding-box__handler--east-south {
          left: 100%;
          top: 100%
        }

        .advanced-cropper-bounding-box__handler--south {
          left: 50%;
          top: 100%
        }

        .advanced-cropper-bounding-box__handler--west-south {
          left: 0;
          top: 100%
        }

        .advanced-cropper-bounding-box__handler--west {
          left: 0;
          top: 50%
        }

        .advanced-cropper-bounding-box__line {
          position: absolute
        }

        .advanced-cropper-bounding-box__line--north,
        .advanced-cropper-bounding-box__line--south {
          left: 0;
          transform: translateY(-50%)
        }

        .advanced-cropper-bounding-box__line--north {
          top: 0
        }

        .advanced-cropper-bounding-box__line--south {
          top: 100%
        }

        .advanced-cropper-bounding-box__line--east,
        .advanced-cropper-bounding-box__line--west {
          top: 0;
          transform: translateX(-50%)
        }

        .advanced-cropper-bounding-box__line--west {
          left: 0
        }

        .advanced-cropper-bounding-box__line--east {
          left: 100%
        }

        .advanced-cropper-artificial-transition {
          will-change: transform
        }

        .advanced-cropper-background-image {
          max-width: none !important;
          pointer-events: none;
          position: absolute;
          transform-origin: center;
          -webkit-user-select: none;
          user-select: none
        }

        .advanced-cropper-canvas {
          display: none
        }

        .advanced-cropper-source {
          height: 1px;
          opacity: 0;
          position: absolute;
          visibility: hidden;
          width: 1px
        }

        .advanced-cropper-fade {
          display: flex;
          flex-direction: column;
          opacity: 0;
          transition: .5s;
          visibility: hidden
        }

        .advanced-cropper-fade--visible {
          opacity: 1;
          visibility: visible
        }

        .advanced-cropper-wrapper__fade {
          flex-grow: 1;
          min-height: 0
        }

        .advanced-cropper-stencil-grid {
          border-collapse: collapse;
          display: table;
          opacity: 0;
          table-layout: fixed;
          transition: opacity .3s
        }

        .advanced-cropper-stencil-grid--visible {
          opacity: 1
        }

        .advanced-cropper-stencil-grid__row {
          display: table-row
        }

        .advanced-cropper-stencil-grid__cell {
          border: 1px solid;
          display: table-cell;
          height: 1%;
          width: 1%
        }

        .advanced-cropper-stencil-grid__cell--top {
          border-top-color: transparent
        }

        .advanced-cropper-stencil-grid__cell--left {
          border-left-color: transparent
        }

        .advanced-cropper-stencil-grid__cell--right {
          border-right-color: transparent
        }

        .advanced-cropper-stencil-grid__cell--bottom {
          border-bottom-color: transparent
        }

        .advanced-cropper-stencil-overlay {
          -webkit-backface-visibility: hidden;
          box-shadow: 0 0 0 1000px currentColor;
          box-sizing: initial;
          height: 100%;
          pointer-events: none;
          position: absolute;
          width: 100%
        }

        .advanced-cropper-stencil-wrapper {
          will-change: transform
        }

        .advanced-cropper-boundary {
          direction: ltr;
          position: relative;
          -webkit-user-select: none;
          user-select: none
        }

        .advanced-cropper-boundary__content {
          height: 100%;
          left: 0;
          position: absolute;
          top: 0;
          width: 100%
        }

        .advanced-cropper-boundary__stretcher {
          max-height: 100%;
          max-width: 100%;
          pointer-events: none;
          position: relative
        }

        .advanced-cropper-circle-stencil {
          -webkit-backface-visibility: hidden;
          box-sizing: initial;
          height: 100%;
          position: absolute;
          -webkit-transform-style: preserve-3d;
          width: 100%
        }

        .advanced-cropper-circle-stencil__overlay {
          border-radius: 50%;
          overflow: hidden
        }

        .advanced-cropper-circle-stencil__preview {
          border-radius: 50%
        }

        .advanced-cropper-circle-stencil__draggable-area,
        .advanced-cropper-circle-stencil__grid,
        .advanced-cropper-circle-stencil__overlay,
        .advanced-cropper-circle-stencil__preview {
          height: 100%;
          position: absolute;
          width: 100%
        }

        .advanced-cropper-circle-stencil--movable {
          cursor: move
        }

        .advanced-cropper-rectangle-stencil {
          -webkit-backface-visibility: hidden;
          box-sizing: border-box;
          -webkit-transform-style: preserve-3d
        }

        .advanced-cropper-rectangle-stencil,
        .advanced-cropper-rectangle-stencil__draggable-area,
        .advanced-cropper-rectangle-stencil__grid,
        .advanced-cropper-rectangle-stencil__overlay,
        .advanced-cropper-rectangle-stencil__preview {
          height: 100%;
          position: absolute;
          width: 100%
        }

        .advanced-cropper-rectangle-stencil--movable {
          cursor: move
        }

        .advanced-cropper-simple-line {
          background: none;
          border-width: 0
        }

        .advanced-cropper-simple-line--north,
        .advanced-cropper-simple-line--south {
          height: 0;
          width: 100%
        }

        .advanced-cropper-simple-line--east,
        .advanced-cropper-simple-line--west {
          height: 100%;
          width: 0
        }

        .advanced-cropper-simple-line--east {
          border-right-width: 1px
        }

        .advanced-cropper-simple-line--west {
          border-left-width: 1px
        }

        .advanced-cropper-simple-line--south {
          border-bottom-width: 1px
        }

        .advanced-cropper-simple-line--north {
          border-top-width: 1px
        }

        .advanced-cropper-simple-handler {
          display: block
        }

        .advanced-cropper-preview {
          box-sizing: border-box;
          display: flex;
          flex-direction: column;
          overflow: hidden;
          position: relative
        }

        .advanced-cropper-preview__content {
          left: 50%;
          overflow: hidden;
          position: absolute;
          top: 50%;
          transform: translate(-50%, -50%)
        }

        .advanced-cropper-preview__image {
          display: none;
          max-width: none !important;
          pointer-events: none;
          position: absolute;
          transform-origin: center;
          -webkit-user-select: none;
          user-select: none
        }

        .advanced-cropper-preview__image--visible {
          display: block
        }

        .advanced-cropper-preview__boundary {
          flex-grow: 1;
          min-height: 0;
          min-width: 0
        }

        .cropper-preview-wrapper__fade {
          flex-grow: 1;
          min-height: 0;
          width: 100%
        }

        .advanced-cropper {
          background: #000;
          color: #fff;
          display: flex;
          flex-direction: column;
          max-height: 100%;
          overflow: hidden;
          position: relative
        }

        .advanced-cropper__boundary {
          flex-grow: 1;
          min-height: 0;
          min-width: 0
        }

        .advanced-cropper__background-wrapper,
        .advanced-cropper__wrapper {
          bottom: 0;
          left: 0;
          position: absolute;
          right: 0;
          top: 0
        }

        .advanced-cropper__stencil-wrapper {
          position: absolute
        }

        .advanced-cropper * {
          box-sizing: border-box
        }

        .advanced-cropper-simple-handler {
          background: currentColor;
          height: 10px;
          width: 10px
        }

        .advanced-cropper-simple-line {
          border-color: hsla(0, 0%, 100%, .3);
          border-style: solid;
          transition: border .5s
        }

        .advanced-cropper-simple-line--hover {
          border-color: #fff
        }

        .advanced-cropper-circle-stencil__preview {
          border: 2px solid hsla(0, 0%, 100%, .2)
        }

        .advanced-cropper-stencil-overlay {
          color: rgba(0, 0, 0, .5)
        }

        .advanced-cropper-stencil-grid {
          color: hsla(0, 0%, 100%, .4)
        }

        .ImageCropper-module_cropper_container__uvTtt {
          border-radius: 6px 6px 0 0;
          max-height: 544px;
          max-width: 800px;
          min-width: 600px
        }

        .ImageCropper-module_cropper_container__uvTtt * {
          box-sizing: border-box
        }

        .ImageCropper-module_cropper_container__uvTtt .advanced-cropper-simple-line {
          border-color: #599bff
        }

        .ImageCropper-module_cropper_container__uvTtt .advanced-cropper-simple-handler {
          border: 1px solid #599bff
        }

        .ImageCropper-module_cropper_container__uvTtt .advanced-cropper__background-wrapper {
          overflow: hidden
        }

        .ImageCropper-module_cropper_container__uvTtt .advanced-cropper-stencil-overlay {
          box-shadow: 0 0 0 1000px rgba(34, 34, 34, .7)
        }

        .ImageCropper-module_copper_wrapper__Wpn9E {
          border-radius: 6px 6px 0 0;
          max-height: 602px
        }

        .ImageCropper-module_cropper_footer__Rk-w5 {
          align-items: center;
          display: flex;
          height: 56px;
          justify-content: space-between;
          padding: 0 12px
        }

        .ImageCropper-module_footer_button__BdQgl {
          background: #fff;
          border: 1px solid rgba(51, 51, 51, .12);
          border-radius: 6px;
          color: #333;
          cursor: pointer;
          font-family: inherit;
          font-size: 16px;
          font-weight: 500;
          line-height: 130%;
          outline: none !important;
          padding: 8px 16px;
          text-align: center
        }

        .ImageCropper-module_footer_button__BdQgl+.ImageCropper-module_footer_button__BdQgl {
          margin-left: 12px
        }

        .ImageCropper-module_operate_box__QJJAG {
          align-items: center;
          display: flex;
          margin-left: 22px
        }

        .ImageCropper-module_icon__0Sh-o {
          cursor: pointer
        }

        .ImageCropper-module_icon__0Sh-o+.ImageCropper-module_icon__0Sh-o {
          margin-left: 32px;
          margin-right: 28px
        }

        .ImageCropper-module_mock_line__-0jep {
          background: rgba(51, 51, 51, .12);
          border-radius: 3px;
          flex-shrink: 0;
          height: 19px;
          margin-right: 18px;
          width: 2px
        }

        .ImageCropper-module_cropper_type_wrapper__7wTON {
          align-items: center;
          border-radius: 4px;
          box-sizing: border-box;
          cursor: pointer;
          display: flex;
          font-size: 0;
          gap: 10px;
          height: 28px;
          padding: 6px 10px;
          position: relative
        }

        .ImageCropper-module_cropper_type_wrapper__7wTON.ImageCropper-module_active__c3F6n,
        .ImageCropper-module_cropper_type_wrapper__7wTON:hover {
          background: #eee
        }

        .ImageCropper-module_cropper_type_wrapper__7wTON.ImageCropper-module_active__c3F6n .ImageCropper-module_cropper_type_arrow__6-sTm {
          transform: rotate(180deg);
          transition: .2s ease-in
        }

        .ImageCropper-module_cropper_select_list__Q9Msa {
          align-items: flex-start;
          background: #fff;
          border-radius: 6px;
          box-shadow: 0 4px 20px 0 rgba(0, 0, 0, .08);
          box-sizing: border-box;
          display: flex;
          flex-wrap: wrap;
          height: 112px;
          justify-content: space-between;
          left: 50%;
          padding: 6px;
          position: relative;
          position: absolute;
          top: -120px;
          transform: translateX(-50%);
          width: 74px
        }

        .ImageCropper-module_cropper_select_list_arrow__GPSms {
          bottom: -4px;
          left: 50%;
          position: absolute;
          transform: translateX(-50%)
        }

        .ImageCropper-module_shape_icon__d0xAo {
          align-items: center;
          cursor: pointer;
          display: flex;
          height: 28px;
          justify-content: center;
          margin-bottom: 8px;
          width: 28px
        }

        .ImageCropper-module_shape_icon__d0xAo.ImageCropper-module_active__c3F6n {
          background: #e8f1ff;
          border-radius: 4px;
          color: #3e85ee
        }

        @media screen and (max-width:959px) {
          .ImageCropper-module_cropper_container__uvTtt {
            height: auto;
            max-height: 610px;
            min-width: auto
          }

          .ImageCropper-module_cropper_footer__Rk-w5 {
            height: 50px;
            padding: 0 10px
          }

          .ImageCropper-module_operate_box__QJJAG {
            align-items: center;
            margin-left: 0
          }

          .ImageCropper-module_icon__0Sh-o+.ImageCropper-module_icon__0Sh-o {
            margin-left: 36px
          }

          .ImageCropper-module_cropper_footer__Rk-w5 {
            font-size: 15px
          }

          .ImageCropper-module_footer_button__BdQgl {
            line-height: 17px
          }
        }

        .ImageCropper-module_preview_circle__M21xU {
          border: none
        }

        .ImageCropper-module_preview_heart__ePRoZ {
          background: transparent;
          background: url(https://static.staticdj.com/oss/operation/79fbbd3c59b5e444f74d54581b9a0411.svg);
          background-repeat: no-repeat;
          background-size: 100% 100%;
          position: relative
        }

        .ImageCropper-module_preview_star__f2pmG {
          background: transparent;
          background: url(https://static.staticdj.com/oss/operation/76f72c9c2894f11f9efcec04cf8f90e0.svg);
          background-repeat: no-repeat;
          background-size: 100% 100%;
          position: relative
        }

        .ImageCropper-module_overlay_rect_radius__q1iPj {
          border-radius: 28px
        }

        .ImageCropper-module_overlay_ellipse__F-yu5 {
          border-radius: 50%;
          height: 100%;
          left: 50%;
          position: absolute;
          transform: translateX(-50%);
          width: 50%
        }

        .ImageCropper-module_hidden_canvas__l7EU7 {
          display: none
        }

        .ImageCropper-module_ml0__wrtDc {
          margin-left: 0
        }

        .Upload-module_upload_dialog__jV-WW {
          border-radius: 8px;
          left: 50%;
          margin: 0 !important;
          padding: 0 !important;
          position: absolute !important;
          top: 50%;
          transform: translateX(-50%) translateY(-50%);
          width: auto !important
        }

        .Upload-module_upload_dialog__jV-WW .rc-dialog-body {
          display: block;
          padding: 0
        }

        .Upload-module_upload_large__9rjsH {
          border-radius: 8px;
          height: 228px;
          margin-bottom: 6px;
          width: 100%
        }

        .Upload-module_large_content__PoxTi {
          align-items: flex-start;
          display: inline-flex;
          flex-direction: column;
          gap: 8px
        }

        .Upload-module_large_img__Xguu1 {
          align-items: center;
          display: flex;
          flex-direction: column;
          gap: 4px;
          width: 100%
        }

        .Upload-module_large_img__Xguu1 p {
          color: #333;
          font-style: normal;
          font-weight: 600;
          width: 100%
        }

        .Upload-module_large_img__Xguu1 p span {
          color: #477bff;
          font-weight: 600;
          position: relative
        }

        .Upload-module_large_img__Xguu1 p span:after {
          background-color: #477bff;
          bottom: 3px;
          content: "";
          height: 1px;
          left: 0;
          position: absolute;
          width: 100%
        }

        .Upload-module_large_tips__TOH6I {
          align-items: flex-start;
          display: flex;
          flex-direction: column;
          gap: 4px
        }

        .Upload-module_upload_tips__8XVTP {
          align-items: center;
          color: rgba(51, 51, 51, .8);
          display: flex;
          font-size: 13px !important;
          font-style: normal;
          font-weight: 400;
          gap: 6px
        }

        .Upload-module_upload_tips_dot__GLSmQ {
          background-color: #5c5c5c;
          border-radius: 50%;
          display: inline-block;
          height: 3px;
          width: 3px
        }

        .Tab-module_parakeet_comp_tab__Zx-vZ {
          display: flex;
          font-weight: 600;
          margin-bottom: 16px
        }

        .Tab-module_tab_item__tBdan {
          border: none;
          color: rgba(51, 51, 51, .7);
          cursor: pointer;
          flex: 1;
          font-size: 18px;
          height: 35px;
          line-height: 130%;
          position: relative;
          text-align: center
        }

        .Tab-module_tab_item__tBdan:after {
          background-color: hsla(0, 0%, 90%, .6);
          bottom: -2px;
          content: "";
          height: 2px;
          left: 0;
          position: absolute;
          width: 100%
        }

        .Tab-module_tab_item__tBdan:first-child:after {
          border-radius: 2px 0 0 2px
        }

        .Tab-module_tab_item__tBdan:last-child:after {
          border-radius: 0 2px 2px 0
        }

        .Tab-module_tab_item_active__6rfwe {
          color: #333;
          height: 34px
        }

        .Tab-module_tab_item_active__6rfwe:after {
          background-color: #333;
          border-radius: 1px !important;
          bottom: -3px !important;
          content: "";
          height: 3px !important;
          left: 0;
          position: absolute;
          width: 100%
        }

        @media screen and (max-width:959px) {
          .Tab-module_parakeet_comp_tab__Zx-vZ {
            padding: 0 16px
          }

          .eva .parakeet_comp_tab {
            padding: 0
          }

          .hero .parakeet_comp_tab,
          .nova .parakeet_comp_tab,
          .wind .parakeet_comp_tab {
            margin-top: 26px
          }

          .flash .parakeet_comp_tab {
            margin-top: 26px;
            padding: 0 8px
          }

          .flash #app-parakeet {
            padding: 0 10px
          }

          .dj_skin_body .parakeet_comp_tab {
            margin-top: 26px
          }
        }

        .DesignOperator-module_parakeet_comp_tab__Ekj1e {
          display: flex;
          font-weight: 600;
          margin-bottom: 16px
        }

        .DesignOperator-module_tabs__kDJ51 {
          border: none !important;
          border-radius: 0 0 8px 8px
        }

        .DesignOperator-module_app_parakeet_operator__lL4U1 {
          box-sizing: border-box
        }

        .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-nav-list {
          background-color: hsla(0, 0%, 90%, .4);
          display: flex;
          padding: 5px;
          width: 100%
        }

        .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab {
          background: none;
          border-radius: 4px;
          display: flex;
          flex: 1;
          height: 30px;
          justify-content: center
        }

        .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-active {
          background-color: #fff;
          color: #333
        }

        .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-active .rc-tabs-tab-btn {
          color: #333
        }

        .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-btn {
          align-items: center;
          color: rgba(51, 51, 51, .6);
          display: flex;
          font-size: 16px;
          font-weight: 500 !important
        }

        .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-ink-bar {
          display: none
        }

        .DesignOperator-module_tab_item_active__8Mzpg {
          border: none;
          color: #333;
          height: 34px;
          position: relative
        }

        .DesignOperator-module_tab_panel__cumuu {
          background-color: #fdfdfd
        }

        .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-disabled {
          flex: unset;
          margin: 0 18px
        }

        .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:first-child {
          margin-right: 22px
        }

        .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:nth-child(5) {
          margin-left: 22px
        }

        .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-disabled:hover {
          background-color: #fff
        }

        @media screen and (max-width:959px) {
          .DesignOperator-module_tab_panel__cumuu {
            align-items: center;
            display: flex;
            height: auto;
            min-height: 108px
          }

          .DesignOperator-module_tab_panel__cumuu>div {
            width: 100%
          }

          .DesignOperator-module_app_parakeet_operator__lL4U1 .icon-custom {
            scale: .8
          }

          .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:first-of-type {
            flex: unset;
            margin: 0 8px 0 3px
          }

          .DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-nav-list div:nth-last-child(2) {
            flex: unset;
            margin: 0 3px 0 8px
          }
        }

        .SizeOperator-module_input__lSSD5 {
          background: #fff;
          border: 1px solid rgba(51, 51, 51, .12);
          border-radius: 4px;
          display: flex;
          font-size: 14px;
          height: 33px;
          margin-left: 12px;
          outline: none !important;
          padding: 6px 24px 6px 12px
        }

        .SizeOperator-module_suffix__kFdZc {
          position: relative
        }

        .SizeOperator-module_suffix__kFdZc:after {
          color: rgba(51, 51, 51, .4);
          content: "px";
          display: block;
          font-size: 16px;
          font-weight: 400;
          line-height: 16px;
          position: absolute;
          right: 6px;
          top: 6px
        }

        .SizeOperator-module_input_controller__pl-h0 {
          width: 88px
        }

        .SizeOperator-module_label__4U5QN {
          color: #333;
          font-size: 15px;
          font-weight: 400;
          line-height: 130%;
          width: 50px
        }

        .SizeOperator-module_tab_content__SYACz {
          padding: 20px 24px
        }

        .SizeOperator-module_tip__-z7-F {
          color: rgba(51, 51, 51, .5);
          font-size: 15px;
          font-weight: 400;
          line-height: 130%;
          margin-left: 16px;
          text-align: center
        }

        .SizeOperator-module_tab_content_item__yRWHu {
          margin-top: 12px
        }

        @media screen and (max-width:959px) {
          .SizeOperator-module_tip__-z7-F {
            font-size: 14px
          }

          .SizeOperator-module_tab_content__SYACz {
            padding: 0 16px
          }

          .SizeOperator-module_input__lSSD5 {
            margin-left: 8px
          }

          .SizeOperator-module_tip__-z7-F {
            margin-left: 12px
          }

          .SizeOperator-module_label__4U5QN {
            font-size: 14px
          }

          .SizeOperator-module_suffix__kFdZc:after {
            top: 7px
          }
        }

        .RotateOperator-module_operate_rotate__DbNrD {
          display: flex;
          height: 118px;
          padding: 32px 16px 28px
        }

        .RotateOperator-module_slider__RyqmW {
          margin: 32px 33px 0 22px
        }

        .RotateOperator-module_slider__RyqmW .rc-slider-handle {
          box-shadow: 0 0 0 5px #fff !important;
          height: 20px;
          margin-top: -8px;
          opacity: 1;
          position: relative;
          width: 20px;
          z-index: 10
        }

        .RotateOperator-module_slider__RyqmW .rc-slider-handle:after {
          background: #fff;
          border-radius: 4px;
          box-shadow: 0 2px 10px rgba(34, 34, 34, .06);
          color: #292929;
          content: attr(aria-valuenow);
          display: none;
          font-size: 16px;
          font-weight: 400;
          left: 50%;
          line-height: 120%;
          padding: 4px 10px;
          position: absolute;
          top: -37px;
          transform: translateX(-50%)
        }

        .RotateOperator-module_slider__RyqmW .rc-slider-handle-dragging,
        .RotateOperator-module_slider__RyqmW .rc-slider-handle:active {
          box-shadow: 0 0 0 5px #fff !important
        }

        .RotateOperator-module_slider__RyqmW .rc-slider-handle:active:after {
          display: block !important
        }

        .RotateOperator-module_slider__RyqmW .rc-slider-mark {
          top: -34px;
          z-index: 5
        }

        .RotateOperator-module_slider__RyqmW .rc-slider-mark-text {
          color: #333;
          font-size: 15px;
          font-weight: 500;
          line-height: 120%
        }

        .RotateOperator-module_slider__RyqmW .rc-slider-step {
          background: hsla(0, 0%, 90%, .8)
        }

        .RotateOperator-module_slider__RyqmW .rc-slider-dot:nth-child(3) {
          background-color: #333 !important;
          z-index: 3
        }

        @media screen and (max-width:959px) {
          .RotateOperator-module_slider__RyqmW .rc-slider-mark-text {
            font-size: 14px
          }

          .RotateOperator-module_operate_rotate__DbNrD {
            height: 108px;
            padding: 32px 2px 20px
          }

          .RotateOperator-module_slider__RyqmW .rc-slider-mark {
            top: -38px;
            z-index: 5
          }

          .RotateOperator-module_slider__RyqmW {
            margin: 32px 22px 0
          }
        }

        .rc-slider {
          border-radius: 6px;
          height: 14px;
          padding: 5px 0;
          position: relative;
          touch-action: none;
          width: 100%
        }

        .rc-slider,
        .rc-slider * {
          -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
          box-sizing: border-box
        }

        .rc-slider-rail {
          background-color: #e9e9e9;
          width: 100%
        }

        .rc-slider-rail,
        .rc-slider-track {
          border-radius: 6px;
          height: 4px;
          position: absolute
        }

        .rc-slider-track {
          background-color: #abe2fb
        }

        .rc-slider-handle {
          background-color: #fff;
          border: 2px solid #96dbfa;
          border-radius: 50%;
          cursor: pointer;
          cursor: -webkit-grab;
          cursor: grab;
          height: 14px;
          margin-top: -5px;
          opacity: .8;
          position: absolute;
          touch-action: pan-x;
          width: 14px
        }

        .rc-slider-handle-dragging.rc-slider-handle-dragging.rc-slider-handle-dragging {
          border-color: #57c5f7;
          box-shadow: 0 0 0 5px #96dbfa
        }

        .rc-slider-handle:focus {
          box-shadow: none;
          outline: none
        }

        .rc-slider-handle.focus-visible {
          border-color: #2db7f5;
          box-shadow: 0 0 0 3px #96dbfa
        }

        .rc-slider-handle:focus-visible {
          border-color: #2db7f5;
          box-shadow: 0 0 0 3px #96dbfa
        }

        .rc-slider-handle-click-focused:focus {
          border-color: #96dbfa;
          box-shadow: unset
        }

        .rc-slider-handle:hover {
          border-color: #57c5f7
        }

        .rc-slider-handle:active {
          border-color: #57c5f7;
          box-shadow: 0 0 5px #57c5f7;
          cursor: -webkit-grabbing;
          cursor: grabbing
        }

        .rc-slider-mark {
          font-size: 12px;
          left: 0;
          position: absolute;
          top: 18px;
          width: 100%
        }

        .rc-slider-mark-text {
          color: #999;
          cursor: pointer;
          display: inline-block;
          position: absolute;
          text-align: center;
          vertical-align: middle
        }

        .rc-slider-mark-text-active {
          color: #666
        }

        .rc-slider-step {
          background: transparent;
          height: 4px;
          pointer-events: none;
          position: absolute;
          width: 100%
        }

        .rc-slider-dot {
          background-color: #fff;
          border: 2px solid #e9e9e9;
          border-radius: 50%;
          bottom: -2px;
          cursor: pointer;
          height: 8px;
          position: absolute;
          vertical-align: middle;
          width: 8px
        }

        .rc-slider-dot-active {
          border-color: #96dbfa
        }

        .rc-slider-dot-reverse {
          margin-right: -4px
        }

        .rc-slider-disabled {
          background-color: #e9e9e9
        }

        .rc-slider-disabled .rc-slider-track {
          background-color: #ccc
        }

        .rc-slider-disabled .rc-slider-dot,
        .rc-slider-disabled .rc-slider-handle {
          background-color: #fff;
          border-color: #ccc;
          box-shadow: none;
          cursor: not-allowed
        }

        .rc-slider-disabled .rc-slider-dot,
        .rc-slider-disabled .rc-slider-mark-text {
          cursor: not-allowed !important
        }

        .rc-slider-vertical {
          height: 100%;
          padding: 0 5px;
          width: 14px
        }

        .rc-slider-vertical .rc-slider-rail {
          height: 100%;
          width: 4px
        }

        .rc-slider-vertical .rc-slider-track {
          bottom: 0;
          left: 5px;
          width: 4px
        }

        .rc-slider-vertical .rc-slider-handle {
          margin-left: -5px;
          margin-top: 0;
          touch-action: pan-y
        }

        .rc-slider-vertical .rc-slider-mark {
          height: 100%;
          left: 18px;
          top: 0
        }

        .rc-slider-vertical .rc-slider-step {
          height: 100%;
          width: 4px
        }

        .rc-slider-vertical .rc-slider-dot {
          margin-left: -2px
        }

        .rc-slider-tooltip-zoom-down-appear,
        .rc-slider-tooltip-zoom-down-enter {
          animation-duration: .3s;
          animation-fill-mode: both;
          animation-play-state: paused;
          display: block !important
        }

        .rc-slider-tooltip-zoom-down-leave {
          animation-duration: .3s;
          animation-fill-mode: both;
          animation-play-state: paused;
          display: block !important
        }

        .rc-slider-tooltip-zoom-down-appear.rc-slider-tooltip-zoom-down-appear-active,
        .rc-slider-tooltip-zoom-down-enter.rc-slider-tooltip-zoom-down-enter-active {
          animation-name: rcSliderTooltipZoomDownIn;
          animation-play-state: running
        }

        .rc-slider-tooltip-zoom-down-leave.rc-slider-tooltip-zoom-down-leave-active {
          animation-name: rcSliderTooltipZoomDownOut;
          animation-play-state: running
        }

        .rc-slider-tooltip-zoom-down-appear,
        .rc-slider-tooltip-zoom-down-enter {
          animation-timing-function: cubic-bezier(.23, 1, .32, 1);
          transform: scale(0)
        }

        .rc-slider-tooltip-zoom-down-leave {
          animation-timing-function: cubic-bezier(.755, .05, .855, .06)
        }

        @keyframes rcSliderTooltipZoomDownIn {
          0% {
            opacity: 0;
            transform: scale(0);
            transform-origin: 50% 100%
          }

          to {
            transform: scale(1);
            transform-origin: 50% 100%
          }
        }

        @keyframes rcSliderTooltipZoomDownOut {
          0% {
            transform: scale(1);
            transform-origin: 50% 100%
          }

          to {
            opacity: 0;
            transform: scale(0);
            transform-origin: 50% 100%
          }
        }

        .rc-slider-tooltip {
          left: -9999px;
          position: absolute;
          top: -9999px;
          visibility: visible
        }

        .rc-slider-tooltip,
        .rc-slider-tooltip * {
          -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
          box-sizing: border-box
        }

        .rc-slider-tooltip-hidden {
          display: none
        }

        .rc-slider-tooltip-placement-top {
          padding: 4px 0 8px
        }

        .rc-slider-tooltip-inner {
          background-color: #6c6c6c;
          border-radius: 6px;
          box-shadow: 0 0 4px #d9d9d9;
          color: #fff;
          font-size: 12px;
          height: 24px;
          line-height: 1;
          min-width: 24px;
          padding: 6px 2px;
          text-align: center;
          text-decoration: none
        }

        .rc-slider-tooltip-arrow {
          border-color: transparent;
          border-style: solid;
          height: 0;
          position: absolute;
          width: 0
        }

        .rc-slider-tooltip-placement-top .rc-slider-tooltip-arrow {
          border-top-color: #6c6c6c;
          border-width: 4px 4px 0;
          bottom: 4px;
          left: 50%;
          margin-left: -4px
        }

        .OrderOperator-module_operate_order__Dy31o {
          display: flex;
          height: 118px;
          margin: 6px 0
        }

        .OrderOperator-module_img_item__M6EFs {
          align-items: center;
          display: flex;
          flex-direction: column
        }

        .OrderOperator-module_img_item__M6EFs+.OrderOperator-module_img_item__M6EFs {
          margin-left: 20px
        }

        .OrderOperator-module_img__dEUmr {
          border-radius: 4px;
          height: 60px;
          object-fit: cover;
          width: 60px
        }

        .OrderOperator-module_img_item__M6EFs:last-child {
          margin-right: 28px
        }

        .OrderOperator-module_img_item__M6EFs:first-child {
          margin-left: 28px
        }

        .OrderOperator-module_sortable__AqKYO {
          align-items: center;
          display: flex;
          overflow-x: auto
        }

        .OrderOperator-module_icon__P5csN {
          cursor: pointer;
          margin-top: 8px
        }

        .OrderOperator-module_item_drag__6ZxO- {
          background: #fdfdfd;
          border: 1px solid #e6e6e6;
          border-radius: 6px;
          box-shadow: 0 2px 10px rgba(34, 34, 34, .08);
          padding: 0 4px
        }

        .OrderOperator-module_item_drag__6ZxO- .OrderOperator-module_img_item__M6EFs {
          height: 64px;
          width: 64px
        }

        .OrderOperator-module_item_drag__6ZxO- .OrderOperator-module_index__-E8wZ {
          visibility: visible !important
        }

        .OrderOperator-module_index__-E8wZ {
          color: rgba(51, 51, 51, .6);
          font-size: 12px;
          font-weight: 500;
          line-height: 12px;
          margin: 3px 0;
          visibility: hidden
        }

        .OrderOperator-module_index_show__-H0q8 {
          visibility: visible !important
        }

        @media (max-width:959px) {
          .OrderOperator-module_img_item__M6EFs:last-child {
            margin-right: 0
          }

          .OrderOperator-module_sortable__AqKYO {
            padding-right: 20px
          }

          .OrderOperator-module_img_item__M6EFs:first-child {
            margin-left: 20px
          }

          .OrderOperator-module_operate_order__Dy31o {
            height: 108px
          }
        }

        .rc-tabs-dropdown {
          background: #fefefe;
          border: 1px solid #000;
          max-height: 200px;
          overflow: auto;
          position: absolute
        }

        .rc-tabs-dropdown-hidden {
          display: none
        }

        .rc-tabs-dropdown-menu {
          list-style: none;
          margin: 0;
          padding: 0
        }

        .rc-tabs-dropdown-menu-item {
          padding: 4px 8px
        }

        .rc-tabs-dropdown-menu-item-selected {
          background: red
        }

        .rc-tabs-dropdown-menu-item-disabled {
          cursor: not-allowed;
          opacity: .3
        }

        .rc-tabs-content {
          display: flex;
          width: 100%
        }

        .rc-tabs-content-holder {
          flex: auto
        }

        .rc-tabs-content-animated {
          transition: margin .3s
        }

        .rc-tabs-tabpane {
          flex: none;
          width: 100%
        }

        .rc-tabs {
          display: flex
        }

        .rc-tabs-bottom,
        .rc-tabs-top {
          flex-direction: column
        }

        .rc-tabs-bottom .rc-tabs-ink-bar,
        .rc-tabs-top .rc-tabs-ink-bar {
          height: 3px
        }

        .rc-tabs-top .rc-tabs-ink-bar {
          bottom: 0
        }

        .rc-tabs-bottom .rc-tabs-nav {
          order: 1
        }

        .rc-tabs-bottom .rc-tabs-content {
          order: 0
        }

        .rc-tabs-bottom .rc-tabs-ink-bar {
          top: 0
        }

        .rc-tabs-left.rc-tabs-editable .rc-tabs-tab,
        .rc-tabs-right.rc-tabs-editable .rc-tabs-tab {
          padding-right: 32px
        }

        .rc-tabs-left .rc-tabs-nav-wrap,
        .rc-tabs-right .rc-tabs-nav-wrap {
          flex-direction: column
        }

        .rc-tabs-left .rc-tabs-ink-bar,
        .rc-tabs-right .rc-tabs-ink-bar {
          width: 3px
        }

        .rc-tabs-left .rc-tabs-nav,
        .rc-tabs-right .rc-tabs-nav {
          flex-direction: column;
          min-width: 50px
        }

        .rc-tabs-left .rc-tabs-nav-list,
        .rc-tabs-left .rc-tabs-nav-operations,
        .rc-tabs-right .rc-tabs-nav-list,
        .rc-tabs-right .rc-tabs-nav-operations {
          flex: 1 0 auto;
          flex-direction: column
        }

        .rc-tabs-left .rc-tabs-ink-bar {
          right: 0
        }

        .rc-tabs-right .rc-tabs-nav {
          order: 1
        }

        .rc-tabs-right .rc-tabs-content {
          order: 0
        }

        .rc-tabs-right .rc-tabs-ink-bar {
          left: 0
        }

        .rc-tabs-dropdown-rtl,
        .rc-tabs-rtl {
          direction: rtl
        }

        .rc-tabs {
          border: 1px solid gray;
          font-size: 14px;
          overflow: hidden
        }

        .rc-tabs-nav {
          display: flex;
          flex: none;
          position: relative
        }

        .rc-tabs-nav-measure,
        .rc-tabs-nav-wrap {
          display: inline-block;
          display: flex;
          flex: auto;
          overflow: hidden;
          position: relative;
          transform: translate(0);
          white-space: nowrap
        }

        .rc-tabs-nav-measure-ping-left:before,
        .rc-tabs-nav-measure-ping-right:after,
        .rc-tabs-nav-wrap-ping-left:before,
        .rc-tabs-nav-wrap-ping-right:after {
          bottom: 0;
          content: "";
          position: absolute;
          top: 0
        }

        .rc-tabs-nav-measure-ping-left:before,
        .rc-tabs-nav-wrap-ping-left:before {
          border-left: 1px solid red;
          left: 0
        }

        .rc-tabs-nav-measure-ping-right:after,
        .rc-tabs-nav-wrap-ping-right:after {
          border-right: 1px solid red;
          right: 0
        }

        .rc-tabs-nav-measure-ping-bottom:after,
        .rc-tabs-nav-measure-ping-top:before,
        .rc-tabs-nav-wrap-ping-bottom:after,
        .rc-tabs-nav-wrap-ping-top:before {
          content: "";
          left: 0;
          position: absolute;
          right: 0
        }

        .rc-tabs-nav-measure-ping-top:before,
        .rc-tabs-nav-wrap-ping-top:before {
          border-top: 1px solid red;
          top: 0
        }

        .rc-tabs-nav-measure-ping-bottom:after,
        .rc-tabs-nav-wrap-ping-bottom:after {
          border-top: 1px solid red;
          bottom: 0
        }

        .rc-tabs-nav-list {
          display: flex;
          position: relative;
          transition: transform .3s
        }

        .rc-tabs-nav-operations {
          display: flex
        }

        .rc-tabs-nav-operations-hidden {
          pointer-events: none;
          position: absolute;
          visibility: hidden
        }

        .rc-tabs-nav-more {
          background: rgba(255, 0, 0, .1);
          border: 1px solid blue
        }

        .rc-tabs-nav-add {
          background: rgba(0, 255, 0, .1);
          border: 1px solid green
        }

        .rc-tabs-tab {
          align-items: center;
          background: hsla(0, 0%, 100%, .5);
          border: 0;
          cursor: pointer;
          display: flex;
          font-size: 20px;
          font-weight: lighter;
          margin: 0;
          outline: none;
          position: relative
        }

        .rc-tabs-tab-btn,
        .rc-tabs-tab-remove {
          background: transparent;
          border: 0
        }

        .rc-tabs-tab-btn {
          font-weight: inherit;
          line-height: 32px
        }

        .rc-tabs-tab-remove:hover {
          color: red
        }

        .rc-tabs-tab-active {
          font-weight: bolder
        }

        .rc-tabs-ink-bar {
          background: red;
          pointer-events: none;
          position: absolute
        }

        .rc-tabs-ink-bar-animated {
          transition: all .3s
        }

        .rc-tabs-extra-content {
          flex: none
        }

        .DesignUpload-module_design_upload__rei3k {
          display: flex;
          height: 584px
        }

        .DesignUpload-module_pointer__Aud8c {
          cursor: pointer
        }

        .DesignUpload-module_loading__4cg3s {
          transform: scale(.6)
        }

        .Design-module_app_parakeet_design__container__FrvSK * {
          box-sizing: border-box
        }

        .Design-module_app_parakeet_design__container__FrvSK {
          border: 2px solid hsla(0, 0%, 90%, .6);
          border-radius: 8px;
          display: none
        }

        .Design-module_app_parakeet_design__container__FrvSK .canvas-container canvas {
          border-radius: 8px
        }

        .Design-module_show__WZcJY {
          display: block !important
        }

        .Design-module_border_dash__-6wEJ {
          border-style: dashed !important
        }

        .Design-module_hidden__35G87 {
          display: none !important
        }

        .Design-module_upload__d0XVy {
          align-items: center;
          background-color: #fdfdfd;
          border-radius: 8px;
          display: flex;
          justify-content: center
        }

        .Design-module_upload_dialog__fCkjQ {
          border-radius: 8px;
          left: 50%;
          margin: 0 !important;
          padding: 0 !important;
          position: absolute !important;
          top: 50%;
          transform: translateX(-50%) translateY(-50%);
          width: auto !important
        }

        .Design-module_preview_img__B65MY {
          max-height: 100%;
          max-height: 544px;
          max-width: 100%
        }

        .Design-module_footer__YubKC {
          height: 56px
        }

        .Design-module_app_parakeet_design__container__FrvSK .Design-module_upload_dialog__fCkjQ {
          margin: 0 !important
        }

        .Design-module_upload_dialog__fCkjQ .rc-dialog-body {
          padding: 0
        }

        @media screen and (max-width:959px) {
          .Design-module_wrapper__WGJzH {
            padding: 0 16px
          }

          .eva .parakeet-design--wrapper {
            padding: 0
          }

          .flash .parakeet-design--wrapper {
            padding: 0 8px
          }
        }

        .rc-dialog {
          margin: 10px;
          position: relative;
          width: auto
        }

        .rc-dialog-wrap {
          -webkit-overflow-scrolling: touch;
          bottom: 0;
          left: 0;
          outline: 0;
          overflow: auto;
          position: fixed;
          right: 0;
          top: 0;
          z-index: 1050
        }

        .rc-dialog-title {
          font-size: 14px;
          font-weight: 700;
          line-height: 21px;
          margin: 0
        }

        .rc-dialog-content {
          background-clip: padding-box;
          background-color: #fff;
          border: none;
          border-radius: 6px 6px;
          position: relative
        }

        .rc-dialog-close {
          background: transparent;
          border: 0;
          color: #000;
          cursor: pointer;
          filter: alpha(opacity=20);
          font-size: 21px;
          font-weight: 700;
          line-height: 1;
          opacity: .2;
          position: absolute;
          right: 20px;
          text-decoration: none;
          text-shadow: 0 1px 0 #fff;
          top: 12px
        }

        .rc-dialog-close-x:after {
          content: "×"
        }

        .rc-dialog-close:hover {
          filter: alpha(opacity=100);
          opacity: 1;
          text-decoration: none
        }

        .rc-dialog-header {
          background: #fff;
          border-bottom: 1px solid #e9e9e9;
          border-radius: 5px 5px 0 0;
          color: #666;
          padding: 13px 20px 14px
        }

        .rc-dialog-body {
          padding: 20px
        }

        .rc-dialog-footer {
          border-radius: 0 0 5px 5px;
          border-top: 1px solid #e9e9e9;
          padding: 10px 20px;
          text-align: right
        }

        .rc-dialog-zoom-appear,
        .rc-dialog-zoom-enter {
          animation-duration: .3s;
          animation-fill-mode: both;
          animation-play-state: paused;
          animation-timing-function: cubic-bezier(.08, .82, .17, 1);
          opacity: 0
        }

        .rc-dialog-zoom-leave {
          animation-duration: .3s;
          animation-fill-mode: both;
          animation-play-state: paused;
          animation-timing-function: cubic-bezier(.6, .04, .98, .34)
        }

        .rc-dialog-zoom-appear.rc-dialog-zoom-appear-active,
        .rc-dialog-zoom-enter.rc-dialog-zoom-enter-active {
          animation-name: rcDialogZoomIn;
          animation-play-state: running
        }

        .rc-dialog-zoom-leave.rc-dialog-zoom-leave-active {
          animation-name: rcDialogZoomOut;
          animation-play-state: running
        }

        @keyframes rcDialogZoomIn {
          0% {
            opacity: 0;
            transform: scale(0)
          }

          to {
            opacity: 1;
            transform: scale(1)
          }
        }

        @keyframes rcDialogZoomOut {
          0% {
            transform: scale(1)
          }

          to {
            opacity: 0;
            transform: scale(0)
          }
        }

        @media (min-width:768px) {
          .rc-dialog {
            margin: 30px auto;
            width: 600px
          }
        }

        .rc-dialog-mask {
          background-color: #373737;
          background-color: rgba(55, 55, 55, .6);
          bottom: 0;
          filter: alpha(opacity=50);
          height: 100%;
          left: 0;
          position: fixed;
          right: 0;
          top: 0;
          z-index: 1050
        }

        .rc-dialog-mask-hidden {
          display: none
        }

        .rc-dialog-fade-appear,
        .rc-dialog-fade-enter {
          opacity: 0
        }

        .rc-dialog-fade-appear,
        .rc-dialog-fade-enter,
        .rc-dialog-fade-leave {
          animation-duration: .3s;
          animation-fill-mode: both;
          animation-play-state: paused;
          animation-timing-function: cubic-bezier(.55, 0, .55, .2)
        }

        .rc-dialog-fade-appear.rc-dialog-fade-appear-active,
        .rc-dialog-fade-enter.rc-dialog-fade-enter-active {
          animation-name: rcDialogFadeIn;
          animation-play-state: running
        }

        .rc-dialog-fade-leave.rc-dialog-fade-leave-active {
          animation-name: rcDialogFadeOut;
          animation-play-state: running
        }

        @keyframes rcDialogFadeIn {
          0% {
            opacity: 0
          }

          to {
            opacity: 1
          }
        }

        @keyframes rcDialogFadeOut {
          0% {
            opacity: 1
          }

          to {
            opacity: 0
          }
        }

        .rc-notification {
          align-items: flex-end;
          display: flex;
          max-height: 100vh;
          overflow-y: auto;
          padding: 10px;
          position: fixed;
          z-index: 1000
        }

        .rc-notification-top,
        .rc-notification-topLeft,
        .rc-notification-topRight {
          flex-direction: column;
          top: 0
        }

        .rc-notification-topRight {
          right: 0
        }

        .rc-notification-notice {
          background: #fff;
          border: 0 solid transparent;
          border-radius: 3px 3px;
          box-shadow: 0 0 10px rgba(0, 0, 0, .2);
          box-sizing: border-box;
          display: block;
          line-height: 1.5;
          margin: 12px 0;
          position: relative;
          width: auto
        }

        .rc-notification-notice-content {
          padding: 7px 20px 7px 10px
        }

        .rc-notification-notice-closable .rc-notification-notice-content {
          padding-right: 20px
        }

        .rc-notification-notice-close {
          color: #000;
          cursor: pointer;
          filter: alpha(opacity=20);
          font-size: 16px;
          font-weight: 700;
          line-height: 1;
          opacity: .2;
          outline: none;
          position: absolute;
          right: 5px;
          text-decoration: none;
          text-shadow: 0 1px 0 #fff;
          top: 3px
        }

        .rc-notification-notice-close-x:after {
          content: "×"
        }

        .rc-notification-notice-close:hover {
          filter: alpha(opacity=100);
          opacity: 1;
          text-decoration: none
        }

        .rc-notification-fade {
          overflow: hidden;
          transition: all .3s
        }

        .rc-notification-fade-appear-start {
          opacity: 0;
          transform: translateX(100%)
        }

        .rc-notification-fade-appear-active {
          opacity: 1;
          transform: translateX(0)
        }

        .index-module_preview_wrap__wyD3z {
          background-color: #fff;
          height: 100%;
          left: 0;
          pointer-events: auto;
          position: absolute;
          top: 0;
          width: 100%
        }

        .index-module_upload_dialog__zsPoE {
          border-radius: 8px;
          left: 50%;
          margin: 0 !important;
          padding: 0 !important;
          position: absolute !important;
          top: 50%;
          transform: translateX(-50%) translateY(-50%);
          width: auto !important
        }

        .index-module_upload_dialog__zsPoE .rc-dialog-body {
          padding: 0
        }

        .index-module_canvas-container-fixed__KUEdU {
          border-radius: 6px;
          box-shadow: 0 1px 10px 0 rgba(0, 0, 0, .2);
          left: 0;
          pointer-events: none;
          position: fixed !important;
          top: 1px;
          transition: opacity .5s;
          z-index: 1031
        }

        .index-module_canvas-container-fixed__KUEdU .lower-canvas,
        .index-module_canvas-container-fixed__KUEdU .upper-canvas {
          height: 100% !important;
          width: 100% !important
        }
      </style>
      <style>
        @font-face {
          font-family: 'Bakbak One';
          font-style: normal;
          font-weight: 400;
          font-display: swap;
          src: url('https://fonts.gstatic.com/s/bakbakone/v6/zOL54pXAl6RI-p_ardnu-cNkvg.woff2') format('woff2');
        }
      </style>
      <div id="app-parakeet" data-product-id="07c125f6-5158-498b-92d3-8a94632cbd40"></div>
      <script id="app-parakeet-1539149753700">
        window.appparakeet_data = ""
        window.appparakeet_variants = [{
          "id": "305165ce-1fdc-46f4-b0a4-efa8b045008d",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Black-S",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_BLK_S",
          "barcode": "",
          "position": 1,
          "option1": "Black",
          "option2": "S",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/9f1173a3fe0202ba46eebae68d4a6a97.png",
            "path": "9f1173a3fe0202ba46eebae68d4a6a97.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=305165ce-1fdc-46f4-b0a4-efa8b045008d",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Black"
          }, {
            "name": "Size",
            "value": "S"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "08d83245-70ce-44e2-9e97-ae531cd5b3f1",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Black-M",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_BLK_M",
          "barcode": "",
          "position": 2,
          "option1": "Black",
          "option2": "M",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/9f1173a3fe0202ba46eebae68d4a6a97.png",
            "path": "9f1173a3fe0202ba46eebae68d4a6a97.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=08d83245-70ce-44e2-9e97-ae531cd5b3f1",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Black"
          }, {
            "name": "Size",
            "value": "M"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "7a120f88-f5b9-4a34-a4b9-f8606ac90074",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Black-L",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_BLK_L",
          "barcode": "",
          "position": 3,
          "option1": "Black",
          "option2": "L",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/9f1173a3fe0202ba46eebae68d4a6a97.png",
            "path": "9f1173a3fe0202ba46eebae68d4a6a97.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=7a120f88-f5b9-4a34-a4b9-f8606ac90074",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Black"
          }, {
            "name": "Size",
            "value": "L"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "426c0ccd-2b17-4024-b024-2c07c0b73629",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Black-XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_BLK_XL",
          "barcode": "",
          "position": 4,
          "option1": "Black",
          "option2": "XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/9f1173a3fe0202ba46eebae68d4a6a97.png",
            "path": "9f1173a3fe0202ba46eebae68d4a6a97.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=426c0ccd-2b17-4024-b024-2c07c0b73629",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Black"
          }, {
            "name": "Size",
            "value": "XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "65cdae08-13d4-49c7-875f-0f9ccb4f91eb",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Black-XXL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_BLK_XXL",
          "barcode": "",
          "position": 5,
          "option1": "Black",
          "option2": "XXL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/9f1173a3fe0202ba46eebae68d4a6a97.png",
            "path": "9f1173a3fe0202ba46eebae68d4a6a97.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=65cdae08-13d4-49c7-875f-0f9ccb4f91eb",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Black"
          }, {
            "name": "Size",
            "value": "XXL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "26907394-5ed4-42cc-a9af-f0f3da2aede4",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Black-3XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_BLK_3XL",
          "barcode": "",
          "position": 6,
          "option1": "Black",
          "option2": "3XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/9f1173a3fe0202ba46eebae68d4a6a97.png",
            "path": "9f1173a3fe0202ba46eebae68d4a6a97.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=26907394-5ed4-42cc-a9af-f0f3da2aede4",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Black"
          }, {
            "name": "Size",
            "value": "3XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "9e8c8b5b-6c45-47a9-bccb-ea9b5ca154fd",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Black-4XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_BLK_4XL",
          "barcode": "",
          "position": 7,
          "option1": "Black",
          "option2": "4XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/9f1173a3fe0202ba46eebae68d4a6a97.png",
            "path": "9f1173a3fe0202ba46eebae68d4a6a97.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=9e8c8b5b-6c45-47a9-bccb-ea9b5ca154fd",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Black"
          }, {
            "name": "Size",
            "value": "4XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "e41d5674-6184-4039-b41c-8ba1899c166d",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Black-5XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_BLK_5XL",
          "barcode": "",
          "position": 8,
          "option1": "Black",
          "option2": "5XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/9f1173a3fe0202ba46eebae68d4a6a97.png",
            "path": "9f1173a3fe0202ba46eebae68d4a6a97.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=e41d5674-6184-4039-b41c-8ba1899c166d",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Black"
          }, {
            "name": "Size",
            "value": "5XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "96bfec4b-6800-4664-8d33-0df8d281dc08",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Black-6XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_BLK_6XL",
          "barcode": "",
          "position": 9,
          "option1": "Black",
          "option2": "6XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/9f1173a3fe0202ba46eebae68d4a6a97.png",
            "path": "9f1173a3fe0202ba46eebae68d4a6a97.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=96bfec4b-6800-4664-8d33-0df8d281dc08",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Black"
          }, {
            "name": "Size",
            "value": "6XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "5f345cf9-e617-46ad-8868-819211377eb8",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "White-S",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_WHI_S",
          "barcode": "",
          "position": 10,
          "option1": "White",
          "option2": "S",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "path": "dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "width": 750,
            "height": 750,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=5f345cf9-e617-46ad-8868-819211377eb8",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "White"
          }, {
            "name": "Size",
            "value": "S"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "a28316c3-5ceb-4281-a26a-6ca9cc0e95cb",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "White-M",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_WHI_M",
          "barcode": "",
          "position": 11,
          "option1": "White",
          "option2": "M",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "path": "dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "width": 750,
            "height": 750,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=a28316c3-5ceb-4281-a26a-6ca9cc0e95cb",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "White"
          }, {
            "name": "Size",
            "value": "M"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "d555361b-13ac-4431-825c-dd09c2a01591",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "White-L",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_WHI_L",
          "barcode": "",
          "position": 12,
          "option1": "White",
          "option2": "L",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "path": "dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "width": 750,
            "height": 750,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=d555361b-13ac-4431-825c-dd09c2a01591",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "White"
          }, {
            "name": "Size",
            "value": "L"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "b22c5294-b7a9-4327-bc5b-ad3d4111aa85",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "White-XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_WHI_XL",
          "barcode": "",
          "position": 13,
          "option1": "White",
          "option2": "XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "path": "dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "width": 750,
            "height": 750,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=b22c5294-b7a9-4327-bc5b-ad3d4111aa85",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "White"
          }, {
            "name": "Size",
            "value": "XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "a79b3f19-5e5f-4990-90dd-be2925eb54bd",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "White-XXL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_WHI_XXL",
          "barcode": "",
          "position": 14,
          "option1": "White",
          "option2": "XXL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "path": "dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "width": 750,
            "height": 750,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=a79b3f19-5e5f-4990-90dd-be2925eb54bd",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "White"
          }, {
            "name": "Size",
            "value": "XXL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "67db110c-bc1d-491f-8e45-64de679b4f91",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "White-3XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_WHI_3XL",
          "barcode": "",
          "position": 15,
          "option1": "White",
          "option2": "3XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "path": "dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "width": 750,
            "height": 750,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=67db110c-bc1d-491f-8e45-64de679b4f91",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "White"
          }, {
            "name": "Size",
            "value": "3XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "8ee140fa-af58-4cf7-9a7b-c800112e779b",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "White-4XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_WHI_4XL",
          "barcode": "",
          "position": 16,
          "option1": "White",
          "option2": "4XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "path": "dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "width": 750,
            "height": 750,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=8ee140fa-af58-4cf7-9a7b-c800112e779b",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "White"
          }, {
            "name": "Size",
            "value": "4XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "7e214daa-304a-493a-8071-21d75c9ac596",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "White-5XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_WHI_5XL",
          "barcode": "",
          "position": 17,
          "option1": "White",
          "option2": "5XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "path": "dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "width": 750,
            "height": 750,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=7e214daa-304a-493a-8071-21d75c9ac596",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "White"
          }, {
            "name": "Size",
            "value": "5XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "767b9334-b3df-4433-91cb-6b96ea0479eb",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "White-6XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_WHI_6XL",
          "barcode": "",
          "position": 18,
          "option1": "White",
          "option2": "6XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "path": "dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
            "width": 750,
            "height": 750,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=767b9334-b3df-4433-91cb-6b96ea0479eb",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "White"
          }, {
            "name": "Size",
            "value": "6XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "01dccda8-bbf2-4048-9f81-5070ac755cfc",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Grey-S",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_GRY_S",
          "barcode": "",
          "position": 19,
          "option1": "Grey",
          "option2": "S",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/3e4605d855184320474fb32f1489c418.png",
            "path": "3e4605d855184320474fb32f1489c418.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=01dccda8-bbf2-4048-9f81-5070ac755cfc",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Grey"
          }, {
            "name": "Size",
            "value": "S"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "e046758c-08ee-44c8-871f-3b505b9d456e",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Grey-M",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_GRY_M",
          "barcode": "",
          "position": 20,
          "option1": "Grey",
          "option2": "M",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/3e4605d855184320474fb32f1489c418.png",
            "path": "3e4605d855184320474fb32f1489c418.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=e046758c-08ee-44c8-871f-3b505b9d456e",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Grey"
          }, {
            "name": "Size",
            "value": "M"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "fb73bc46-bebe-4c08-bbca-29f00473d79e",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Grey-L",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_GRY_L",
          "barcode": "",
          "position": 21,
          "option1": "Grey",
          "option2": "L",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/3e4605d855184320474fb32f1489c418.png",
            "path": "3e4605d855184320474fb32f1489c418.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=fb73bc46-bebe-4c08-bbca-29f00473d79e",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Grey"
          }, {
            "name": "Size",
            "value": "L"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "f5e2806b-f7b4-4660-b91c-266dfb0910ae",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Grey-XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_GRY_XL",
          "barcode": "",
          "position": 22,
          "option1": "Grey",
          "option2": "XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/3e4605d855184320474fb32f1489c418.png",
            "path": "3e4605d855184320474fb32f1489c418.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=f5e2806b-f7b4-4660-b91c-266dfb0910ae",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Grey"
          }, {
            "name": "Size",
            "value": "XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "eaf4ce56-dbf5-4d56-8b31-46ad165e52aa",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Grey-XXL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_GRY_XXL",
          "barcode": "",
          "position": 23,
          "option1": "Grey",
          "option2": "XXL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/3e4605d855184320474fb32f1489c418.png",
            "path": "3e4605d855184320474fb32f1489c418.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=eaf4ce56-dbf5-4d56-8b31-46ad165e52aa",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Grey"
          }, {
            "name": "Size",
            "value": "XXL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "69f07a6f-3bd4-43f1-88c5-f2e7f86c1327",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Grey-3XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_GRY_3XL",
          "barcode": "",
          "position": 24,
          "option1": "Grey",
          "option2": "3XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/3e4605d855184320474fb32f1489c418.png",
            "path": "3e4605d855184320474fb32f1489c418.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=69f07a6f-3bd4-43f1-88c5-f2e7f86c1327",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Grey"
          }, {
            "name": "Size",
            "value": "3XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "d23be50b-a824-4119-870f-47c95ce63599",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Grey-4XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_GRY_4XL",
          "barcode": "",
          "position": 25,
          "option1": "Grey",
          "option2": "4XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/3e4605d855184320474fb32f1489c418.png",
            "path": "3e4605d855184320474fb32f1489c418.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=d23be50b-a824-4119-870f-47c95ce63599",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Grey"
          }, {
            "name": "Size",
            "value": "4XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "90b5cb4c-9701-43b8-aee3-7173849b697f",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Grey-5XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_GRY_5XL",
          "barcode": "",
          "position": 26,
          "option1": "Grey",
          "option2": "5XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/3e4605d855184320474fb32f1489c418.png",
            "path": "3e4605d855184320474fb32f1489c418.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=90b5cb4c-9701-43b8-aee3-7173849b697f",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Grey"
          }, {
            "name": "Size",
            "value": "5XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "463b9bcb-c9f3-4f53-882b-8db154cc06bc",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Grey-6XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_GRY_6XL",
          "barcode": "",
          "position": 27,
          "option1": "Grey",
          "option2": "6XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/3e4605d855184320474fb32f1489c418.png",
            "path": "3e4605d855184320474fb32f1489c418.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=463b9bcb-c9f3-4f53-882b-8db154cc06bc",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Grey"
          }, {
            "name": "Size",
            "value": "6XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "9628403f-4559-4f76-8cfb-e5d09b330ba0",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Yellow-S",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_YLW_S",
          "barcode": "",
          "position": 28,
          "option1": "Yellow",
          "option2": "S",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/aab7255a4ec7e3f45167a4d8755a15b1.png",
            "path": "aab7255a4ec7e3f45167a4d8755a15b1.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=9628403f-4559-4f76-8cfb-e5d09b330ba0",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Yellow"
          }, {
            "name": "Size",
            "value": "S"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "93ab83b0-2577-4b57-b6bb-6eda34b65b11",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Yellow-M",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_YLW_M",
          "barcode": "",
          "position": 29,
          "option1": "Yellow",
          "option2": "M",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/aab7255a4ec7e3f45167a4d8755a15b1.png",
            "path": "aab7255a4ec7e3f45167a4d8755a15b1.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=93ab83b0-2577-4b57-b6bb-6eda34b65b11",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Yellow"
          }, {
            "name": "Size",
            "value": "M"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "af9e2f8a-b584-4883-bed4-c9d2db4f5e8d",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Yellow-L",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_YLW_L",
          "barcode": "",
          "position": 30,
          "option1": "Yellow",
          "option2": "L",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/aab7255a4ec7e3f45167a4d8755a15b1.png",
            "path": "aab7255a4ec7e3f45167a4d8755a15b1.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=af9e2f8a-b584-4883-bed4-c9d2db4f5e8d",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Yellow"
          }, {
            "name": "Size",
            "value": "L"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "3b0ee52e-27d0-4b93-86cb-eae2b0c7498b",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Yellow-XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_YLW_XL",
          "barcode": "",
          "position": 31,
          "option1": "Yellow",
          "option2": "XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/aab7255a4ec7e3f45167a4d8755a15b1.png",
            "path": "aab7255a4ec7e3f45167a4d8755a15b1.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=3b0ee52e-27d0-4b93-86cb-eae2b0c7498b",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Yellow"
          }, {
            "name": "Size",
            "value": "XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "a97d9547-9a02-4c6d-b9f6-2f4454ed7496",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Yellow-XXL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_YLW_XXL",
          "barcode": "",
          "position": 32,
          "option1": "Yellow",
          "option2": "XXL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/aab7255a4ec7e3f45167a4d8755a15b1.png",
            "path": "aab7255a4ec7e3f45167a4d8755a15b1.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=a97d9547-9a02-4c6d-b9f6-2f4454ed7496",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Yellow"
          }, {
            "name": "Size",
            "value": "XXL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "ba3a8d6d-7bb1-4e83-918d-859073db5949",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Yellow-3XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_YLW_3XL",
          "barcode": "",
          "position": 33,
          "option1": "Yellow",
          "option2": "3XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/aab7255a4ec7e3f45167a4d8755a15b1.png",
            "path": "aab7255a4ec7e3f45167a4d8755a15b1.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=ba3a8d6d-7bb1-4e83-918d-859073db5949",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Yellow"
          }, {
            "name": "Size",
            "value": "3XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "70b57a14-5ea7-4bae-ac87-0558d8190f7e",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Yellow-4XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_YLW_4XL",
          "barcode": "",
          "position": 34,
          "option1": "Yellow",
          "option2": "4XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/aab7255a4ec7e3f45167a4d8755a15b1.png",
            "path": "aab7255a4ec7e3f45167a4d8755a15b1.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=70b57a14-5ea7-4bae-ac87-0558d8190f7e",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Yellow"
          }, {
            "name": "Size",
            "value": "4XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "14e77dea-e791-49e7-9fbf-ca04695a4556",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Yellow-5XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_YLW_5XL",
          "barcode": "",
          "position": 35,
          "option1": "Yellow",
          "option2": "5XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/aab7255a4ec7e3f45167a4d8755a15b1.png",
            "path": "aab7255a4ec7e3f45167a4d8755a15b1.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=14e77dea-e791-49e7-9fbf-ca04695a4556",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Yellow"
          }, {
            "name": "Size",
            "value": "5XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "b07eb955-8d29-487a-b212-5d00d3a66427",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Yellow-6XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_YLW_6XL",
          "barcode": "",
          "position": 36,
          "option1": "Yellow",
          "option2": "6XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/aab7255a4ec7e3f45167a4d8755a15b1.png",
            "path": "aab7255a4ec7e3f45167a4d8755a15b1.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=b07eb955-8d29-487a-b212-5d00d3a66427",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Yellow"
          }, {
            "name": "Size",
            "value": "6XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "e908d40f-139c-4ff7-81fe-2ade10b17af8",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Olive-S",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_OLV_S",
          "barcode": "",
          "position": 37,
          "option1": "Olive",
          "option2": "S",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "path": "f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=e908d40f-139c-4ff7-81fe-2ade10b17af8",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Olive"
          }, {
            "name": "Size",
            "value": "S"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "26fa3a51-1fb6-4183-9535-ad89d9869833",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Olive-M",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_OLV_M",
          "barcode": "",
          "position": 38,
          "option1": "Olive",
          "option2": "M",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "path": "f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=26fa3a51-1fb6-4183-9535-ad89d9869833",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Olive"
          }, {
            "name": "Size",
            "value": "M"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "53311e48-c8e9-4635-98a8-e0c5dc82d8a4",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Olive-L",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_OLV_L",
          "barcode": "",
          "position": 39,
          "option1": "Olive",
          "option2": "L",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "path": "f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=53311e48-c8e9-4635-98a8-e0c5dc82d8a4",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Olive"
          }, {
            "name": "Size",
            "value": "L"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "1bf542ed-362c-49df-ab28-74d9b05463a1",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Olive-XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_OLV_XL",
          "barcode": "",
          "position": 40,
          "option1": "Olive",
          "option2": "XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "path": "f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=1bf542ed-362c-49df-ab28-74d9b05463a1",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Olive"
          }, {
            "name": "Size",
            "value": "XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "afbe31b8-424a-4b37-aaea-73f470844fa5",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Olive-XXL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_OLV_XXL",
          "barcode": "",
          "position": 41,
          "option1": "Olive",
          "option2": "XXL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "path": "f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=afbe31b8-424a-4b37-aaea-73f470844fa5",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Olive"
          }, {
            "name": "Size",
            "value": "XXL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "903acdce-34bc-4c57-8356-5a996b498021",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Olive-3XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_OLV_3XL",
          "barcode": "",
          "position": 42,
          "option1": "Olive",
          "option2": "3XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "path": "f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=903acdce-34bc-4c57-8356-5a996b498021",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Olive"
          }, {
            "name": "Size",
            "value": "3XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "48543087-802b-4888-ba5c-5b8cde7ce870",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Olive-4XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_OLV_4XL",
          "barcode": "",
          "position": 43,
          "option1": "Olive",
          "option2": "4XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "path": "f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=48543087-802b-4888-ba5c-5b8cde7ce870",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Olive"
          }, {
            "name": "Size",
            "value": "4XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "18f403d0-2786-4943-8a7b-116777ac391c",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Olive-5XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_OLV_5XL",
          "barcode": "",
          "position": 44,
          "option1": "Olive",
          "option2": "5XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "path": "f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=18f403d0-2786-4943-8a7b-116777ac391c",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Olive"
          }, {
            "name": "Size",
            "value": "5XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }, {
          "id": "0d15713a-a39d-46a5-94c1-93d6797a827e",
          "product_id": "07c125f6-5158-498b-92d3-8a94632cbd40",
          "title": "Olive-6XL",
          "weight_unit": "g",
          "inventory_quantity": 0,
          "sku": "MS240600763_OLV_6XL",
          "barcode": "",
          "position": 45,
          "option1": "Olive",
          "option2": "6XL",
          "option3": "",
          "note": "",
          "image": {
            "src": "\/\/img.fantaskycdn.com\/f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "path": "f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
            "width": 800,
            "height": 800,
            "alt": "",
            "aspect_ratio": 1
          },
          "wholesale_price": [{
            "price": 23.95,
            "min_quantity": 1
          }],
          "weight": "300",
          "compare_at_price": "0",
          "price": "23.95",
          "retail_price": "0",
          "available": true,
          "url": "\/products\/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp?variant=0d15713a-a39d-46a5-94c1-93d6797a827e",
          "available_quantity": 999999999,
          "options": [{
            "name": "Color",
            "value": "Olive"
          }, {
            "name": "Size",
            "value": "6XL"
          }],
          "off_ratio": 0,
          "flashsale_info": [],
          "sales": 98
        }]
        window.appparakeet_images = [{
          "src": "\/\/img.fantaskycdn.com\/13b421d74fad0bb2ef5f64dd043ebaa0.png",
          "path": "13b421d74fad0bb2ef5f64dd043ebaa0.png",
          "width": 800,
          "height": 800,
          "alt": "",
          "aspect_ratio": 1
        }, {
          "src": "\/\/img.fantaskycdn.com\/210dcc8ec404213990d17d8bd16209f3.png",
          "path": "210dcc8ec404213990d17d8bd16209f3.png",
          "width": 800,
          "height": 800,
          "alt": "",
          "aspect_ratio": 1
        }, {
          "src": "\/\/img.fantaskycdn.com\/c20b1b5a9a2b3bd660006d56db95ed71.png",
          "path": "c20b1b5a9a2b3bd660006d56db95ed71.png",
          "width": 800,
          "height": 800,
          "alt": "",
          "aspect_ratio": 1
        }, {
          "src": "\/\/img.fantaskycdn.com\/f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
          "path": "f6fc2a6f81fa1fde0bcf89fb073e60ff.png",
          "width": 800,
          "height": 800,
          "alt": "",
          "aspect_ratio": 1
        }, {
          "src": "\/\/img.fantaskycdn.com\/aab7255a4ec7e3f45167a4d8755a15b1.png",
          "path": "aab7255a4ec7e3f45167a4d8755a15b1.png",
          "width": 800,
          "height": 800,
          "alt": "",
          "aspect_ratio": 1
        }, {
          "src": "\/\/img.fantaskycdn.com\/dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
          "path": "dd910ef4172ee4fbd9e33bcf1d00e8a7.png",
          "width": 750,
          "height": 750,
          "alt": "",
          "aspect_ratio": 1
        }, {
          "src": "\/\/img.fantaskycdn.com\/3e4605d855184320474fb32f1489c418.png",
          "path": "3e4605d855184320474fb32f1489c418.png",
          "width": 800,
          "height": 800,
          "alt": "",
          "aspect_ratio": 1
        }, {
          "src": "\/\/img.fantaskycdn.com\/9f1173a3fe0202ba46eebae68d4a6a97.png",
          "path": "9f1173a3fe0202ba46eebae68d4a6a97.png",
          "width": 800,
          "height": 800,
          "alt": "",
          "aspect_ratio": 1
        }, {
          "src": "\/\/img.fantaskycdn.com\/f70c1627eaefd62b1dedd151555ae7bb.png",
          "path": "f70c1627eaefd62b1dedd151555ae7bb.png",
          "width": 800,
          "height": 800,
          "alt": "",
          "aspect_ratio": 1
        }, {
          "src": "\/\/img.fantaskycdn.com\/14ab4cbe98db66ef321280368e083428.png",
          "path": "14ab4cbe98db66ef321280368e083428.png",
          "width": 735,
          "height": 735,
          "alt": "",
          "aspect_ratio": 1
        }, {
          "src": "\/\/img.fantaskycdn.com\/ddb38aec5b66da76e894d51e84eceb0f.png",
          "path": "ddb38aec5b66da76e894d51e84eceb0f.png",
          "width": 800,
          "height": 800,
          "alt": "",
          "aspect_ratio": 1
        }, {
          "src": "\/\/img.fantaskycdn.com\/4cb372f7024674bd2933ec211d098ed4.png",
          "path": "4cb372f7024674bd2933ec211d098ed4.png",
          "width": 800,
          "height": 800,
          "alt": "",
          "aspect_ratio": 1
        }, {
          "src": "\/\/img.fantaskycdn.com\/8f8269f668b117fe714bf12ac18eebda.png",
          "path": "8f8269f668b117fe714bf12ac18eebda.png",
          "width": 800,
          "height": 800,
          "alt": "",
          "aspect_ratio": 1
        }, {
          "src": "\/\/img.fantaskycdn.com\/96f7c55a368212f25b6a0d75e534af3d.png",
          "path": "96f7c55a368212f25b6a0d75e534af3d.png",
          "width": 800,
          "height": 800,
          "alt": "",
          "aspect_ratio": 1
        }]
        try {
          setTimeout(() => {
            console.log('/*********** app parakeet start **** 24.5.14 ****************/');
            if (window.appparakeet_data && window.appparakeet_data.length) {
              let addBtn = document.querySelector('[data-track-source=add_to_cart]');
              let buyBtn = document.querySelector('[data-track-source=buy_now]');
              let paypalBtn = document.querySelector('#paypal-express-button-container');
              if (addBtn && !addBtn.getAttribute('disabled')) {
                addBtn.setAttribute('disabled', 'disabled');
              }
              if (buyBtn && !buyBtn.getAttribute('disabled')) {
                buyBtn.setAttribute('disabled', 'disabled');
              }
              if (paypalBtn && !paypalBtn.getAttribute('disabled')) {
                paypalBtn.setAttribute('disabled', 'disabled');
              }
              setTimeout(() => {
                if (addBtn) {
                  addBtn.disabled = null;
                }
                if (buyBtn) {
                  buyBtn.disabled = null;
                }
                if (paypalBtn) {
                  paypalBtn.disabled = null;
                }
                console.log('/***************** app parakeet end ************************/');
              }, 1500);
            }
          }, 50)
        } catch (error) {
          console.log(error);
        }
        //**app-parakeet.js-start**//
        ! function(e, t) {
          "object" == typeof exports && "undefined" != typeof module ? t(require("jsdom"), require("jsdom/lib/jsdom/living/generated/utils"), require("jsdom/lib/jsdom/utils"), require("sortablejs")) : "function" == typeof define && define.amd ?
            define(["jsdom", "jsdom/lib/jsdom/living/generated/utils", "jsdom/lib/jsdom/utils", "sortablejs"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).require$$0, e.require$$1, e.require$$2, e.require$$0$1)
        }(this, (function(e, t, n, r) {
          "use strict";

          function i(e) {
            return e && "object" == typeof e && "default" in e ? e : {
              default: e
            }
          }
          var o = i(e),
            a = i(t),
            s = i(n),
            l = i(r),
            c = e => {
              var t = document.querySelector("#app-parakeet-style");
              t && (t.innerHTML = "".concat(t.innerHTML, "\n    ").concat(e))
            };

          function u(e, t) {
            var n = Object.keys(e);
            if (Object.getOwnPropertySymbols) {
              var r = Object.getOwnPropertySymbols(e);
              t && (r = r.filter((function(t) {
                return Object.getOwnPropertyDescriptor(e, t).enumerable
              }))), n.push.apply(n, r)
            }
            return n
          }

          function h(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = null != arguments[t] ? arguments[t] : {};
              t % 2 ? u(Object(n), !0).forEach((function(t) {
                f(e, t, n[t])
              })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : u(Object(n)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
              }))
            }
            return e
          }

          function p(e, t, n, r, i, o, a) {
            try {
              var s = e[o](a),
                l = s.value
            } catch (e) {
              return void n(e)
            }
            s.done ? t(l) : Promise.resolve(l).then(r, i)
          }

          function d(e) {
            return function() {
              var t = this,
                n = arguments;
              return new Promise((function(r, i) {
                var o = e.apply(t, n);

                function a(e) {
                  p(o, r, i, a, s, "next", e)
                }

                function s(e) {
                  p(o, r, i, a, s, "throw", e)
                }
                a(void 0)
              }))
            }
          }

          function f(e, t, n) {
            return t in e ? Object.defineProperty(e, t, {
              value: n,
              enumerable: !0,
              configurable: !0,
              writable: !0
            }) : e[t] = n, e
          }

          function g(e, t) {
            if (null == e) return {};
            var n, r, i = function(e, t) {
              if (null == e) return {};
              var n, r, i = {},
                o = Object.keys(e);
              for (r = 0; r < o.length; r++) n = o[r], t.indexOf(n) >= 0 || (i[n] = e[n]);
              return i
            }(e, t);
            if (Object.getOwnPropertySymbols) {
              var o = Object.getOwnPropertySymbols(e);
              for (r = 0; r < o.length; r++) n = o[r], t.indexOf(n) >= 0 || Object.prototype.propertyIsEnumerable.call(e, n) && (i[n] = e[n])
            }
            return i
          }
          c(
          '#app-parakeet *,#app-parakeet :after,#app-parakeet :before,.plugin-parakeet *,.plugin-parakeet :after,.plugin-parakeet :before{border:0 solid #e5e7eb;box-sizing:border-box}#app-parakeet :after,#app-parakeet :before,.plugin-parakeet :after,.plugin-parakeet :before{--tw-content:""}#app-parakeet html,.plugin-parakeet html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Helvetica Neue,Arial,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;tab-size:4}#app-parakeet body,.plugin-parakeet body{line-height:inherit;margin:0}#app-parakeet hr,.plugin-parakeet hr{border-top-width:1px;color:inherit;height:0}#app-parakeet abbr:where([title]),.plugin-parakeet abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}#app-parakeet h1,#app-parakeet h2,#app-parakeet h3,#app-parakeet h4,#app-parakeet h5,#app-parakeet h6,.plugin-parakeet h1,.plugin-parakeet h2,.plugin-parakeet h3,.plugin-parakeet h4,.plugin-parakeet h5,.plugin-parakeet h6{font-size:inherit;font-weight:inherit}#app-parakeet a,.plugin-parakeet a{color:inherit;text-decoration:inherit}#app-parakeet b,#app-parakeet strong,.plugin-parakeet b,.plugin-parakeet strong{font-weight:bolder}#app-parakeet code,#app-parakeet kbd,#app-parakeet pre,#app-parakeet samp,.plugin-parakeet code,.plugin-parakeet kbd,.plugin-parakeet pre,.plugin-parakeet samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}#app-parakeet small,.plugin-parakeet small{font-size:80%}#app-parakeet sub,#app-parakeet sup,.plugin-parakeet sub,.plugin-parakeet sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}#app-parakeet sub,.plugin-parakeet sub{bottom:-.25em}#app-parakeet sup,.plugin-parakeet sup{top:-.5em}#app-parakeet table,.plugin-parakeet table{border-collapse:collapse;border-color:inherit;text-indent:0}#app-parakeet button,#app-parakeet input,#app-parakeet optgroup,#app-parakeet select,#app-parakeet textarea,.plugin-parakeet button,.plugin-parakeet input,.plugin-parakeet optgroup,.plugin-parakeet select,.plugin-parakeet textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}#app-parakeet button,#app-parakeet select,.plugin-parakeet button,.plugin-parakeet select{text-transform:none}#app-parakeet [type=button],#app-parakeet [type=reset],#app-parakeet [type=submit],#app-parakeet button,.plugin-parakeet [type=button],.plugin-parakeet [type=reset],.plugin-parakeet [type=submit],.plugin-parakeet button{-webkit-appearance:button;background-color:initial;background-image:none}#app-parakeet :-moz-focusring,.plugin-parakeet :-moz-focusring{outline:auto}#app-parakeet :-moz-ui-invalid,.plugin-parakeet :-moz-ui-invalid{box-shadow:none}#app-parakeet progress,.plugin-parakeet progress{vertical-align:initial}#app-parakeet ::-webkit-inner-spin-button,#app-parakeet ::-webkit-outer-spin-button,.plugin-parakeet ::-webkit-inner-spin-button,.plugin-parakeet ::-webkit-outer-spin-button{height:auto}#app-parakeet [type=search],.plugin-parakeet [type=search]{-webkit-appearance:textfield;outline-offset:-2px}#app-parakeet ::-webkit-search-decoration,.plugin-parakeet ::-webkit-search-decoration{-webkit-appearance:none}#app-parakeet ::-webkit-file-upload-button,.plugin-parakeet ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}#app-parakeet summary,.plugin-parakeet summary{display:list-item}#app-parakeet blockquote,#app-parakeet dd,#app-parakeet dl,#app-parakeet figure,#app-parakeet h1,#app-parakeet h2,#app-parakeet h3,#app-parakeet h4,#app-parakeet h5,#app-parakeet h6,#app-parakeet hr,#app-parakeet p,#app-parakeet pre,.plugin-parakeet blockquote,.plugin-parakeet dd,.plugin-parakeet dl,.plugin-parakeet figure,.plugin-parakeet h1,.plugin-parakeet h2,.plugin-parakeet h3,.plugin-parakeet h4,.plugin-parakeet h5,.plugin-parakeet h6,.plugin-parakeet hr,.plugin-parakeet p,.plugin-parakeet pre{margin:0}#app-parakeet fieldset,.plugin-parakeet fieldset{margin:0;padding:0}#app-parakeet legend,.plugin-parakeet legend{padding:0}#app-parakeet menu,#app-parakeet ol,#app-parakeet ul,.plugin-parakeet menu,.plugin-parakeet ol,.plugin-parakeet ul{list-style:none;margin:0;padding:0}#app-parakeet textarea,.plugin-parakeet textarea{resize:vertical}#app-parakeet input::-webkit-input-placeholder,#app-parakeet textarea::-webkit-input-placeholder,.plugin-parakeet input::-webkit-input-placeholder,.plugin-parakeet textarea::-webkit-input-placeholder{color:#9ca3af;opacity:1}#app-parakeet input::placeholder,#app-parakeet textarea::placeholder,.plugin-parakeet input::placeholder,.plugin-parakeet textarea::placeholder{color:#9ca3af;opacity:1}#app-parakeet [role=button],#app-parakeet button,.plugin-parakeet [role=button],.plugin-parakeet button{cursor:pointer}#app-parakeet :disabled,.plugin-parakeet :disabled{cursor:default}#app-parakeet audio,#app-parakeet canvas,#app-parakeet embed,#app-parakeet iframe,#app-parakeet img,#app-parakeet object,#app-parakeet svg,#app-parakeet video,.plugin-parakeet audio,.plugin-parakeet canvas,.plugin-parakeet embed,.plugin-parakeet iframe,.plugin-parakeet img,.plugin-parakeet object,.plugin-parakeet svg,.plugin-parakeet video{display:block;vertical-align:middle}#app-parakeet img,#app-parakeet video,.plugin-parakeet img,.plugin-parakeet video{height:auto;max-width:100%}#app-parakeet *,#app-parakeet :after,#app-parakeet :before,.plugin-parakeet *,.plugin-parakeet :after,.plugin-parakeet :before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }#app-parakeet ::-webkit-backdrop,.plugin-parakeet ::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }#app-parakeet ::backdrop,.plugin-parakeet ::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }#app-parakeet .pk-pointer-events-none,.plugin-parakeet .pk-pointer-events-none{pointer-events:none}#app-parakeet .pk-absolute,.plugin-parakeet .pk-absolute{position:absolute}#app-parakeet .pk-relative,.plugin-parakeet .pk-relative{position:relative}#app-parakeet .pk-top-0,.plugin-parakeet .pk-top-0{top:0}#app-parakeet .pk-left-0,.plugin-parakeet .pk-left-0{left:0}#app-parakeet .pk--top-3,.plugin-parakeet .pk--top-3{top:-.75rem}#app-parakeet .pk--right-3,.plugin-parakeet .pk--right-3{right:-.75rem}#app-parakeet .pk-z-\\[9999\\],.plugin-parakeet .pk-z-\\[9999\\]{z-index:9999}#app-parakeet .pk-my-6,.plugin-parakeet .pk-my-6{margin-bottom:1.5rem;margin-top:1.5rem}#app-parakeet .pk-mx-1,.plugin-parakeet .pk-mx-1{margin-left:.25rem;margin-right:.25rem}#app-parakeet .pk--mx-4,.plugin-parakeet .pk--mx-4{margin-left:-1rem;margin-right:-1rem}#app-parakeet .pk-my-0,.plugin-parakeet .pk-my-0{margin-bottom:0;margin-top:0}#app-parakeet .pk-ml-\\[10px\\],.plugin-parakeet .pk-ml-\\[10px\\]{margin-left:10px}#app-parakeet .pk-mr-\\[10px\\],.plugin-parakeet .pk-mr-\\[10px\\]{margin-right:10px}#app-parakeet .pk-mb-4,.plugin-parakeet .pk-mb-4{margin-bottom:1rem}#app-parakeet .pk-mr-2\\.5,.plugin-parakeet .pk-mr-2\\.5{margin-right:.625rem}#app-parakeet .pk-mr-2,.plugin-parakeet .pk-mr-2{margin-right:.5rem}#app-parakeet .pk-ml-1\\.5,.plugin-parakeet .pk-ml-1\\.5{margin-left:.375rem}#app-parakeet .pk-ml-1,.plugin-parakeet .pk-ml-1{margin-left:.25rem}#app-parakeet .pk-mb-3,.plugin-parakeet .pk-mb-3{margin-bottom:.75rem}#app-parakeet .pk-mb-2\\.5,.plugin-parakeet .pk-mb-2\\.5{margin-bottom:.625rem}#app-parakeet .pk-mb-2,.plugin-parakeet .pk-mb-2{margin-bottom:.5rem}#app-parakeet .pk-mt-2,.plugin-parakeet .pk-mt-2{margin-top:.5rem}#app-parakeet .\\!pk-mt-7,.plugin-parakeet .\\!pk-mt-7{margin-top:1.75rem!important}#app-parakeet .pk-ml-2,.plugin-parakeet .pk-ml-2{margin-left:.5rem}#app-parakeet .pk--mt-0\\.5,.plugin-parakeet .pk--mt-0\\.5{margin-top:-.125rem}#app-parakeet .pk--mb-1\\.5,.plugin-parakeet .pk--mb-1\\.5{margin-bottom:-.375rem}#app-parakeet .pk--mt-0,.plugin-parakeet .pk--mt-0{margin-top:0}#app-parakeet .pk--mb-1,.plugin-parakeet .pk--mb-1{margin-bottom:-.25rem}#app-parakeet .\\!pk-mb-0,.plugin-parakeet .\\!pk-mb-0{margin-bottom:0!important}#app-parakeet .pk-ml-3,.plugin-parakeet .pk-ml-3{margin-left:.75rem}#app-parakeet .pk-ml-auto,.plugin-parakeet .pk-ml-auto{margin-left:auto}#app-parakeet .pk-mr-4,.plugin-parakeet .pk-mr-4{margin-right:1rem}#app-parakeet .pk--mt-1\\.5,.plugin-parakeet .pk--mt-1\\.5{margin-top:-.375rem}#app-parakeet .pk--ml-2,.plugin-parakeet .pk--ml-2{margin-left:-.5rem}#app-parakeet .pk--mt-1,.plugin-parakeet .pk--mt-1{margin-top:-.25rem}#app-parakeet .pk-mt-3,.plugin-parakeet .pk-mt-3{margin-top:.75rem}#app-parakeet .pk-block,.plugin-parakeet .pk-block{display:block}#app-parakeet .pk-inline-block,.plugin-parakeet .pk-inline-block{display:inline-block}#app-parakeet .pk-flex,.plugin-parakeet .pk-flex{display:flex}#app-parakeet .pk-grid,.plugin-parakeet .pk-grid{display:grid}#app-parakeet .pk-h-4\\.5,.plugin-parakeet .pk-h-4\\.5{height:1.125rem}#app-parakeet .pk-h-4,.plugin-parakeet .pk-h-4{height:1rem}#app-parakeet .pk-h-11\\.5,.plugin-parakeet .pk-h-11\\.5{height:2.875rem}#app-parakeet .pk-h-11,.plugin-parakeet .pk-h-11{height:2.75rem}#app-parakeet .pk-h-full,.plugin-parakeet .pk-h-full{height:100%}#app-parakeet .pk-h-18,.plugin-parakeet .pk-h-18{height:4.5rem}#app-parakeet .pk-h-23,.plugin-parakeet .pk-h-23{height:5.75rem}#app-parakeet .pk-h-20,.plugin-parakeet .pk-h-20{height:5rem}#app-parakeet .pk-w-4\\.5,.plugin-parakeet .pk-w-4\\.5{width:1.125rem}#app-parakeet .pk-w-4,.plugin-parakeet .pk-w-4{width:1rem}#app-parakeet .pk-w-full,.plugin-parakeet .pk-w-full{width:100%}#app-parakeet .pk-w-11,.plugin-parakeet .pk-w-11{width:2.75rem}#app-parakeet .pk-w-18,.plugin-parakeet .pk-w-18{width:4.5rem}#app-parakeet .pk-w-23,.plugin-parakeet .pk-w-23{width:5.75rem}#app-parakeet .pk-w-20,.plugin-parakeet .pk-w-20{width:5rem}#app-parakeet .pk-w-fit,.plugin-parakeet .pk-w-fit{width:-webkit-fit-content;width:fit-content}#app-parakeet .pk-min-w-\\[46px\\],.plugin-parakeet .pk-min-w-\\[46px\\]{min-width:46px}#app-parakeet .pk-min-w-0,.plugin-parakeet .pk-min-w-0{min-width:0}#app-parakeet .pk-max-w-\\[50vw\\],.plugin-parakeet .pk-max-w-\\[50vw\\]{max-width:50vw}#app-parakeet .pk-flex-none,.plugin-parakeet .pk-flex-none{flex:none}#app-parakeet .pk-flex-1,.plugin-parakeet .pk-flex-1{flex:1 1 0%}#app-parakeet .pk-cursor-pointer,.plugin-parakeet .pk-cursor-pointer{cursor:pointer}#app-parakeet .pk-cursor-text,.plugin-parakeet .pk-cursor-text{cursor:text}#app-parakeet .pk-select-none,.plugin-parakeet .pk-select-none{-webkit-user-select:none;user-select:none}#app-parakeet .pk-appearance-none,.plugin-parakeet .pk-appearance-none{-webkit-appearance:none;appearance:none}#app-parakeet .pk-grid-flow-col,.plugin-parakeet .pk-grid-flow-col{grid-auto-flow:column}#app-parakeet .pk-grid-rows-\\[auto\\,auto\\,auto\\,auto\\],.plugin-parakeet .pk-grid-rows-\\[auto\\,auto\\,auto\\,auto\\]{grid-template-rows:auto auto auto auto}#app-parakeet .pk-flex-col,.plugin-parakeet .pk-flex-col{flex-direction:column}#app-parakeet .pk-flex-wrap,.plugin-parakeet .pk-flex-wrap{flex-wrap:wrap}#app-parakeet .pk-items-center,.plugin-parakeet .pk-items-center{align-items:center}#app-parakeet .pk-justify-center,.plugin-parakeet .pk-justify-center{justify-content:center}#app-parakeet .pk-gap-4,.plugin-parakeet .pk-gap-4{gap:1rem}#app-parakeet .pk-gap-x-3,.plugin-parakeet .pk-gap-x-3{column-gap:.75rem}#app-parakeet .pk-gap-y-4,.plugin-parakeet .pk-gap-y-4{row-gap:1rem}#app-parakeet .pk-space-y-4>:not([hidden])~:not([hidden]),.plugin-parakeet .pk-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}#app-parakeet .pk-space-y-5>:not([hidden])~:not([hidden]),.plugin-parakeet .pk-space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.25rem*var(--tw-space-y-reverse));margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)))}#app-parakeet .pk-self-center,.plugin-parakeet .pk-self-center{align-self:center}#app-parakeet .pk-overflow-hidden,.plugin-parakeet .pk-overflow-hidden{overflow:hidden}#app-parakeet .pk-truncate,.plugin-parakeet .pk-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#app-parakeet .pk-break-words,.plugin-parakeet .pk-break-words{overflow-wrap:break-word}#app-parakeet .pk-break-all,.plugin-parakeet .pk-break-all{word-break:break-all}#app-parakeet .pk-rounded-full,.plugin-parakeet .pk-rounded-full{border-radius:9999px}#app-parakeet .pk-rounded-md,.plugin-parakeet .pk-rounded-md{border-radius:.375rem}#app-parakeet .pk-rounded,.plugin-parakeet .pk-rounded{border-radius:.25rem}#app-parakeet .pk-rounded-\\[3px\\],.plugin-parakeet .pk-rounded-\\[3px\\]{border-radius:3px}#app-parakeet .pk-border-\\[5px\\],.plugin-parakeet .pk-border-\\[5px\\]{border-width:5px}#app-parakeet .pk-border-2,.plugin-parakeet .pk-border-2{border-width:2px}#app-parakeet .pk-border,.plugin-parakeet .pk-border{border-width:1px}#app-parakeet .pk-border-0,.plugin-parakeet .pk-border-0{border-width:0}#app-parakeet .pk-border-solid,.plugin-parakeet .pk-border-solid{border-style:solid}#app-parakeet .pk-border-dashed,.plugin-parakeet .pk-border-dashed{border-style:dashed}#app-parakeet .pk-border-transparent,.plugin-parakeet .pk-border-transparent{border-color:transparent}#app-parakeet .pk-border-\\[\\#333\\],.plugin-parakeet .pk-border-\\[\\#333\\]{--tw-border-opacity:1;border-color:rgba(51,51,51,var(--tw-border-opacity))}#app-parakeet .pk-border-\\[\\#DB393A\\],.plugin-parakeet .pk-border-\\[\\#DB393A\\]{--tw-border-opacity:1;border-color:rgba(219,57,58,var(--tw-border-opacity))}#app-parakeet .pk-border-\\[\\#D1D1D1\\],.plugin-parakeet .pk-border-\\[\\#D1D1D1\\]{--tw-border-opacity:1;border-color:rgba(209,209,209,var(--tw-border-opacity))}#app-parakeet .pk-border-\\[\\#d9d9d9\\],.plugin-parakeet .pk-border-\\[\\#d9d9d9\\]{--tw-border-opacity:1;border-color:rgba(217,217,217,var(--tw-border-opacity))}#app-parakeet .pk-border-t-white,.plugin-parakeet .pk-border-t-white{--tw-border-opacity:1;border-top-color:rgba(255,255,255,var(--tw-border-opacity))}#app-parakeet .pk-bg-\\[\\#E6E6E6\\]\\/40,.plugin-parakeet .pk-bg-\\[\\#E6E6E6\\]\\/40{background-color:hsla(0,0%,90%,.4)}#app-parakeet .pk-bg-white,.plugin-parakeet .pk-bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}#app-parakeet .pk-bg-transparent,.plugin-parakeet .pk-bg-transparent{background-color:initial}#app-parakeet .pk-bg-\\[\\#fdfdfd\\],.plugin-parakeet .pk-bg-\\[\\#fdfdfd\\]{--tw-bg-opacity:1;background-color:rgba(253,253,253,var(--tw-bg-opacity))}#app-parakeet .pk-bg-\\[\\#F6F6F7\\],.plugin-parakeet .pk-bg-\\[\\#F6F6F7\\]{--tw-bg-opacity:1;background-color:rgba(246,246,247,var(--tw-bg-opacity))}#app-parakeet .pk-object-contain,.plugin-parakeet .pk-object-contain{object-fit:contain}#app-parakeet .pk-object-cover,.plugin-parakeet .pk-object-cover{object-fit:cover}#app-parakeet .pk-object-center,.plugin-parakeet .pk-object-center{object-position:center}#app-parakeet .pk-py-2,.plugin-parakeet .pk-py-2{padding-bottom:.5rem;padding-top:.5rem}#app-parakeet .pk-px-3,.plugin-parakeet .pk-px-3{padding-left:.75rem;padding-right:.75rem}#app-parakeet .pk-px-5,.plugin-parakeet .pk-px-5{padding-left:1.25rem;padding-right:1.25rem}#app-parakeet .pk-px-4,.plugin-parakeet .pk-px-4{padding-left:1rem;padding-right:1rem}#app-parakeet .pk-py-1\\.5,.plugin-parakeet .pk-py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}#app-parakeet .pk-py-1,.plugin-parakeet .pk-py-1{padding-bottom:.25rem;padding-top:.25rem}#app-parakeet .pk-py-3\\.5,.plugin-parakeet .pk-py-3\\.5{padding-bottom:.875rem;padding-top:.875rem}#app-parakeet .pk-py-3,.plugin-parakeet .pk-py-3{padding-bottom:.75rem;padding-top:.75rem}#app-parakeet .pk-pt-2,.plugin-parakeet .pk-pt-2{padding-top:.5rem}#app-parakeet .pk-pb-1,.plugin-parakeet .pk-pb-1{padding-bottom:.25rem}#app-parakeet .pk-pl-4,.plugin-parakeet .pk-pl-4{padding-left:1rem}#app-parakeet .pk-pr-10\\.5,.plugin-parakeet .pk-pr-10\\.5{padding-right:2.625rem}#app-parakeet .pk-pr-10,.plugin-parakeet .pk-pr-10{padding-right:2.5rem}#app-parakeet .\\!pk-text-\\[13px\\],.plugin-parakeet .\\!pk-text-\\[13px\\]{font-size:13px!important}#app-parakeet .\\!pk-text-\\[14px\\],.plugin-parakeet .\\!pk-text-\\[14px\\]{font-size:14px!important}#app-parakeet .\\!pk-text-\\[15px\\],.plugin-parakeet .\\!pk-text-\\[15px\\]{font-size:15px!important}#app-parakeet .pk-text-\\[14px\\],.plugin-parakeet .pk-text-\\[14px\\]{font-size:14px}#app-parakeet .pk-text-sm,.plugin-parakeet .pk-text-sm{font-size:.875rem;line-height:1.25rem}#app-parakeet .pk-text-xs,.plugin-parakeet .pk-text-xs{font-size:.75rem;line-height:1rem}#app-parakeet .pk-text-\\[15px\\],.plugin-parakeet .pk-text-\\[15px\\]{font-size:15px}#app-parakeet .\\!pk-text-\\[16px\\],.plugin-parakeet .\\!pk-text-\\[16px\\]{font-size:16px!important}#app-parakeet .pk-font-semibold,.plugin-parakeet .pk-font-semibold{font-weight:600}#app-parakeet .pk-font-medium,.plugin-parakeet .pk-font-medium{font-weight:500}#app-parakeet .pk-leading-none,.plugin-parakeet .pk-leading-none{line-height:1}#app-parakeet .pk-leading-5,.plugin-parakeet .pk-leading-5{line-height:1.25rem}#app-parakeet .pk-leading-\\[0px\\],.plugin-parakeet .pk-leading-\\[0px\\]{line-height:0px}#app-parakeet .pk-text-\\[\\#DB393A\\],.plugin-parakeet .pk-text-\\[\\#DB393A\\]{--tw-text-opacity:1;color:rgba(219,57,58,var(--tw-text-opacity))}#app-parakeet .pk-text-\\[\\#7A7A7A\\],.plugin-parakeet .pk-text-\\[\\#7A7A7A\\]{--tw-text-opacity:1;color:rgba(122,122,122,var(--tw-text-opacity))}#app-parakeet .pk-text-\\[\\#d2d5d8\\],.plugin-parakeet .pk-text-\\[\\#d2d5d8\\]{--tw-text-opacity:1;color:rgba(210,213,216,var(--tw-text-opacity))}#app-parakeet .pk-text-\\[\\#93989D\\],.plugin-parakeet .pk-text-\\[\\#93989D\\]{--tw-text-opacity:1;color:rgba(147,152,157,var(--tw-text-opacity))}#app-parakeet .pk-text-\\[\\#292929\\]\\/75,.plugin-parakeet .pk-text-\\[\\#292929\\]\\/75{color:rgba(41,41,41,.75)}#app-parakeet .pk-text-opacity-80,.plugin-parakeet .pk-text-opacity-80{--tw-text-opacity:0.8}#app-parakeet .pk-opacity-0,.plugin-parakeet .pk-opacity-0{opacity:0}#app-parakeet .pk-shadow-\\[0px_4px_18px_rgb\\(0_0_0_\\/_10\\%\\)\\],.plugin-parakeet .pk-shadow-\\[0px_4px_18px_rgb\\(0_0_0_\\/_10\\%\\)\\]{--tw-shadow:0px 4px 18px rgba(0,0,0,.1);--tw-shadow-colored:0px 4px 18px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}#app-parakeet .pk-outline-none,.plugin-parakeet .pk-outline-none{outline:2px solid transparent;outline-offset:2px}#app-parakeet .pk-ring-2,.plugin-parakeet .pk-ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}#app-parakeet .pk-ring-\\[\\#333\\],.plugin-parakeet .pk-ring-\\[\\#333\\]{--tw-ring-opacity:1;--tw-ring-color:rgba(51,51,51,var(--tw-ring-opacity))}#app-parakeet .pk-ring-offset-2,.plugin-parakeet .pk-ring-offset-2{--tw-ring-offset-width:2px}#app-parakeet .placeholder\\:pk-text-\\[color\\:\\#93989D\\]::-webkit-input-placeholder,.plugin-parakeet .placeholder\\:pk-text-\\[color\\:\\#93989D\\]::-webkit-input-placeholder{--tw-text-opacity:1;color:rgba(147,152,157,var(--tw-text-opacity))}#app-parakeet .placeholder\\:pk-text-\\[color\\:\\#93989D\\]::placeholder,.plugin-parakeet .placeholder\\:pk-text-\\[color\\:\\#93989D\\]::placeholder{--tw-text-opacity:1;color:rgba(147,152,157,var(--tw-text-opacity))}#app-parakeet .last\\:pk-mb-0:last-child,.plugin-parakeet .last\\:pk-mb-0:last-child{margin-bottom:0}#app-parakeet .hover\\:pk-bg-\\[\\#f6f6f7\\]:hover,.plugin-parakeet .hover\\:pk-bg-\\[\\#f6f6f7\\]:hover{--tw-bg-opacity:1;background-color:rgba(246,246,247,var(--tw-bg-opacity))}#app-parakeet .focus\\:pk-border-\\[\\#333\\]:focus,.plugin-parakeet .focus\\:pk-border-\\[\\#333\\]:focus{--tw-border-opacity:1;border-color:rgba(51,51,51,var(--tw-border-opacity))}@media (min-width:768px){#app-parakeet .md\\:pk-max-w-\\[33vw\\],.plugin-parakeet .md\\:pk-max-w-\\[33vw\\]{max-width:33vw}#app-parakeet .md\\:pk-text-base,.plugin-parakeet .md\\:pk-text-base{font-size:1rem;line-height:1.5rem}#app-parakeet .md\\:pk-text-sm,.plugin-parakeet .md\\:pk-text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:1024px){#app-parakeet .lg\\:pk-px-8,.plugin-parakeet .lg\\:pk-px-8{padding-left:2rem;padding-right:2rem}}');
          var m = function() {
              return fetch(...arguments).then((e => e.ok ? e : Promise.reject(e)))
            },
            v = () => m("/api/file/signv2").then((e => e.json())),
            _ = (e, t) => m("/api/file/signv2").then((e => e.json())).then((n => {
              var r = n.data,
                i = null == r ? void 0 : r.write_host,
                {
                  policy: o,
                  access_id: a,
                  sign: s,
                  read_host: l
                } = r,
                c = new FormData;
              return c.append("policy", o), c.append("OSSAccessKeyId", a), c.append("success_action_status", 200), c.append("signature", s), c.append("x-oss-forbid-overwrite", !0), c.append("key", t), c.append("file", e), ((e, t, n) => m(e, {
                method: "POST",
                body: t
              }).then((() => n)).catch((e => {
                if (String(e).includes("409")) return n;
                throw new Error
              })))(i, c, l + t)
            })),
            b = e => 0 === e.indexOf("image/"),
            y = e => e.split("/")[1] || "",
            w = function() {
              var e = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "").split("/"),
                t = e[e.length - 1].split(/#|\?/)[0];
              return (/\.[^./\\]*$/.exec(t) || [""])[0]
            },
            x = e => {
              if (e.type && !e.thumbUrl) return b(e.type);
              var t = e.thumbUrl || e.url || "",
                n = w(t);
              return !(!/^data:image\//.test(t) && !/(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i.test(n)) || !/^data:/.test(t) && !n
            },
            k = 200;

          function C(e) {
            return new Promise((t => {
              e.type && b(e.type) ? "gif" !== y(e.type) ? (t => {
                var n = document.createElement("canvas");
                n.width = k, n.height = k, n.style.cssText = "position: fixed; left: 0; top: 0; width: ".concat(k, "px; height: ").concat(k, "px; z-index: 9999; display: none;"), document.body.appendChild(n);
                var r = n.getContext("2d"),
                  i = new Image;
                i.onload = () => {
                  var {
                    width: e,
                    height: o
                  } = i, a = k, s = k, l = 0, c = 0;
                  e > o ? c = -((s = o * (k / e)) - a) / 2 : l = -((a = e * (k / o)) - s) / 2, r.drawImage(i, l, c, a, s);
                  var u = n.toDataURL();
                  document.body.removeChild(n), window.URL.revokeObjectURL(i.src), i.src = null, t(u)
                }, i.src = window.URL.createObjectURL(e)
              })(t) : (t => {
                var n = new FileReader;
                n.onload = () => t(n.result), n.readAsDataURL(e)
              })(t) : t("")
            }))
          }
          var S = e => "".concat(window.SHOP_PARAMS.shop_id, "/").concat((new Date).getTime(), ".").concat(e),
            E = (e, t, n) => {
              for (var r = e.split(","), i = window.atob(r[1]), o = i.length, a = new Uint8Array(o); o--;) a[o] = i.charCodeAt(o);
              return new File([a.buffer], t, {
                type: n || "image/png"
              })
            },
            T = 100,
            O = 1890,
            A = "png",
            P = "uploadSuccessEvent",
            M = "removeSuccessEvent",
            D = "addDesignImageEvent",
            I = "deleteDesignEvent",
            N = "loading",
            R = "success",
            j = "en-us",
            L = 10485760,
            F = "swatch_preview_click",
            B = "upload_preview",
            z = "text_preview",
            H = "upload_img_click",
            U = "clear_active",
            W = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {};

          function V(e) {
            var t = e.default;
            if ("function" == typeof t) {
              var n = function() {
                return t.apply(this, arguments)
              };
              n.prototype = t.prototype
            } else n = {};
            return Object.defineProperty(n, "__esModule", {
              value: !0
            }), Object.keys(e).forEach((function(t) {
              var r = Object.getOwnPropertyDescriptor(e, t);
              Object.defineProperty(n, t, r.get ? r : {
                enumerable: !0,
                get: function() {
                  return e[t]
                }
              })
            })), n
          }
          var X = {};

          function G(e, t) {
            return void 0 === t && (t = 15), +parseFloat(Number(e).toPrecision(t))
          }

          function Y(e) {
            var t = e.toString().split(/[eE]/),
              n = (t[0].split(".")[1] || "").length - +(t[1] || 0);
            return n > 0 ? n : 0
          }

          function q(e) {
            if (-1 === e.toString().indexOf("e")) return Number(e.toString().replace(".", ""));
            var t = Y(e);
            return t > 0 ? G(Number(e) * Math.pow(10, t)) : Number(e)
          }

          function K(e) {
            te && (e > Number.MAX_SAFE_INTEGER || Number.MIN_SAFE_INTEGER)
          }

          function $(e) {
            return function() {
              for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
              var r = t[0];
              return t.slice(1).reduce((function(t, n) {
                return e(t, n)
              }), r)
            }
          }! function(e) {
            var t, n, r, i, l, c, u, h, p, d, f, g, m, v = v || {
              version: "5.3.0"
            };
            if (e.fabric = v, "undefined" != typeof document && "undefined" != typeof window) document instanceof("undefined" != typeof HTMLDocument ? HTMLDocument : Document) ? v.document = document : v.document = document.implementation
              .createHTMLDocument(""), v.window = window;
            else {
              var _ = new o.default.JSDOM(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"), {
                features: {
                  FetchExternalResources: ["img"]
                },
                resources: "usable"
              }).window;
              v.document = _.document, v.jsdomImplForWrapper = a.default.implForWrapper, v.nodeCanvas = s.default.Canvas, v.window = _, DOMParser = v.window.DOMParser
            }

            function b(e, t) {
              var n = e.canvas,
                r = t.targetCanvas,
                i = r.getContext("2d");
              i.translate(0, r.height), i.scale(1, -1);
              var o = n.height - r.height;
              i.drawImage(n, 0, o, r.width, r.height, 0, 0, r.width, r.height)
            }

            function y(e, t) {
              var n = t.targetCanvas.getContext("2d"),
                r = t.destinationWidth,
                i = t.destinationHeight,
                o = r * i * 4,
                a = new Uint8Array(this.imageBuffer, 0, o),
                s = new Uint8ClampedArray(this.imageBuffer, 0, o);
              e.readPixels(0, 0, r, i, e.RGBA, e.UNSIGNED_BYTE, a);
              var l = new ImageData(s, r, i);
              n.putImageData(l, 0, 0)
            }
            v.isTouchSupported = "ontouchstart" in v.window || "ontouchstart" in v.document || v.window && v.window.navigator && v.window.navigator.maxTouchPoints > 0, v.isLikelyNode = "undefined" != typeof Buffer && "undefined" == typeof window,
              v.SHARED_ATTRIBUTES = ["display", "transform", "fill", "fill-opacity", "fill-rule", "opacity", "stroke", "stroke-dasharray", "stroke-linecap", "stroke-dashoffset", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity",
                "stroke-width", "id", "paint-order", "vector-effect", "instantiated_by_use", "clip-path"
              ], v.DPI = 96, v.reNum = "(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)", v.commaWsp = "(?:\\s+,?\\s*|,\\s*)", v.rePathCommand = /([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi, v.reNonWord = /[ \n\.,;!\?\-]/, v
              .fontPaths = {}, v.iMatrix = [1, 0, 0, 1, 0, 0], v.svgNS = "http://www.w3.org/2000/svg", v.perfLimitSizeTotal = 2097152, v.maxCacheSideLimit = 4096, v.minCacheSideLimit = 256, v.charWidthsCache = {}, v.textureSize = 2048, v
              .disableStyleCopyPaste = !1, v.enableGLFiltering = !0, v.devicePixelRatio = v.window.devicePixelRatio || v.window.webkitDevicePixelRatio || v.window.mozDevicePixelRatio || 1, v.browserShadowBlurConstant = 1, v
              .arcToSegmentsCache = {}, v.boundsOfCurveCache = {}, v.cachesBoundsOfCurve = !0, v.forceGLPutImageData = !1, v.initFilterBackend = function() {
                return v.enableGLFiltering && v.isWebglSupported && v.isWebglSupported(v.textureSize) ? new v.WebglFilterBackend({
                  tileSize: v.textureSize
                }) : v.Canvas2dFilterBackend ? new v.Canvas2dFilterBackend : void 0
              }, "undefined" != typeof document && "undefined" != typeof window && (window.fabric = v),
              function() {
                function e(e, t) {
                  if (this.__eventListeners[e]) {
                    var n = this.__eventListeners[e];
                    t ? n[n.indexOf(t)] = !1 : v.util.array.fill(n, !1)
                  }
                }

                function t(e, t) {
                  var n = function() {
                    t.apply(this, arguments), this.off(e, n)
                  }.bind(this);
                  this.on(e, n)
                }
                v.Observable = {
                  fire: function(e, t) {
                    if (!this.__eventListeners) return this;
                    var n = this.__eventListeners[e];
                    if (!n) return this;
                    for (var r = 0, i = n.length; r < i; r++) n[r] && n[r].call(this, t || {});
                    return this.__eventListeners[e] = n.filter((function(e) {
                      return !1 !== e
                    })), this
                  },
                  on: function(e, t) {
                    if (this.__eventListeners || (this.__eventListeners = {}), 1 === arguments.length)
                      for (var n in e) this.on(n, e[n]);
                    else this.__eventListeners[e] || (this.__eventListeners[e] = []), this.__eventListeners[e].push(t);
                    return this
                  },
                  once: function(e, n) {
                    if (1 === arguments.length)
                      for (var r in e) t.call(this, r, e[r]);
                    else t.call(this, e, n);
                    return this
                  },
                  off: function(t, n) {
                    if (!this.__eventListeners) return this;
                    if (0 === arguments.length)
                      for (t in this.__eventListeners) e.call(this, t);
                    else if (1 === arguments.length && "object" == typeof arguments[0])
                      for (var r in t) e.call(this, r, t[r]);
                    else e.call(this, t, n);
                    return this
                  }
                }
              }(), v.Collection = {
                _objects: [],
                add: function() {
                  if (this._objects.push.apply(this._objects, arguments), this._onObjectAdded)
                    for (var e = 0, t = arguments.length; e < t; e++) this._onObjectAdded(arguments[e]);
                  return this.renderOnAddRemove && this.requestRenderAll(), this
                },
                insertAt: function(e, t, n) {
                  var r = this._objects;
                  return n ? r[t] = e : r.splice(t, 0, e), this._onObjectAdded && this._onObjectAdded(e), this.renderOnAddRemove && this.requestRenderAll(), this
                },
                remove: function() {
                  for (var e, t = this._objects, n = !1, r = 0, i = arguments.length; r < i; r++) - 1 !== (e = t.indexOf(arguments[r])) && (n = !0, t.splice(e, 1), this._onObjectRemoved && this._onObjectRemoved(arguments[r]));
                  return this.renderOnAddRemove && n && this.requestRenderAll(), this
                },
                forEachObject: function(e, t) {
                  for (var n = this.getObjects(), r = 0, i = n.length; r < i; r++) e.call(t, n[r], r, n);
                  return this
                },
                getObjects: function(e) {
                  return void 0 === e ? this._objects.concat() : this._objects.filter((function(t) {
                    return t.type === e
                  }))
                },
                item: function(e) {
                  return this._objects[e]
                },
                isEmpty: function() {
                  return 0 === this._objects.length
                },
                size: function() {
                  return this._objects.length
                },
                contains: function(e, t) {
                  return this._objects.indexOf(e) > -1 || !!t && this._objects.some((function(t) {
                    return "function" == typeof t.contains && t.contains(e, !0)
                  }))
                },
                complexity: function() {
                  return this._objects.reduce((function(e, t) {
                    return e += t.complexity ? t.complexity() : 0
                  }), 0)
                }
              }, v.CommonMethods = {
                _setOptions: function(e) {
                  for (var t in e) this.set(t, e[t])
                },
                _initGradient: function(e, t) {
                  !e || !e.colorStops || e instanceof v.Gradient || this.set(t, new v.Gradient(e))
                },
                _initPattern: function(e, t, n) {
                  !e || !e.source || e instanceof v.Pattern ? n && n() : this.set(t, new v.Pattern(e, n))
                },
                _setObject: function(e) {
                  for (var t in e) this._set(t, e[t])
                },
                set: function(e, t) {
                  return "object" == typeof e ? this._setObject(e) : this._set(e, t), this
                },
                _set: function(e, t) {
                  this[e] = t
                },
                toggle: function(e) {
                  var t = this.get(e);
                  return "boolean" == typeof t && this.set(e, !t), this
                },
                get: function(e) {
                  return this[e]
                }
              },
              function(e) {
                var t = Math.sqrt,
                  n = Math.atan2,
                  r = Math.pow,
                  i = Math.PI / 180,
                  o = Math.PI / 2;
                v.util = {
                  cos: function(e) {
                    if (0 === e) return 1;
                    switch (e < 0 && (e = -e), e / o) {
                      case 1:
                      case 3:
                        return 0;
                      case 2:
                        return -1
                    }
                    return Math.cos(e)
                  },
                  sin: function(e) {
                    if (0 === e) return 0;
                    var t = 1;
                    switch (e < 0 && (t = -1), e / o) {
                      case 1:
                        return t;
                      case 2:
                        return 0;
                      case 3:
                        return -t
                    }
                    return Math.sin(e)
                  },
                  removeFromArray: function(e, t) {
                    var n = e.indexOf(t);
                    return -1 !== n && e.splice(n, 1), e
                  },
                  getRandomInt: function(e, t) {
                    return Math.floor(Math.random() * (t - e + 1)) + e
                  },
                  degreesToRadians: function(e) {
                    return e * i
                  },
                  radiansToDegrees: function(e) {
                    return e / i
                  },
                  rotatePoint: function(e, t, n) {
                    var r = new v.Point(e.x - t.x, e.y - t.y),
                      i = v.util.rotateVector(r, n);
                    return new v.Point(i.x, i.y).addEquals(t)
                  },
                  rotateVector: function(e, t) {
                    var n = v.util.sin(t),
                      r = v.util.cos(t);
                    return {
                      x: e.x * r - e.y * n,
                      y: e.x * n + e.y * r
                    }
                  },
                  createVector: function(e, t) {
                    return new v.Point(t.x - e.x, t.y - e.y)
                  },
                  calcAngleBetweenVectors: function(e, t) {
                    return Math.acos((e.x * t.x + e.y * t.y) / (Math.hypot(e.x, e.y) * Math.hypot(t.x, t.y)))
                  },
                  getHatVector: function(e) {
                    return new v.Point(e.x, e.y).multiply(1 / Math.hypot(e.x, e.y))
                  },
                  getBisector: function(e, t, n) {
                    var r = v.util.createVector(e, t),
                      i = v.util.createVector(e, n),
                      o = v.util.calcAngleBetweenVectors(r, i),
                      a = o * (0 === v.util.calcAngleBetweenVectors(v.util.rotateVector(r, o), i) ? 1 : -1) / 2;
                    return {
                      vector: v.util.getHatVector(v.util.rotateVector(r, a)),
                      angle: o
                    }
                  },
                  projectStrokeOnPoints: function(e, t, n) {
                    var r = [],
                      i = t.strokeWidth / 2,
                      o = t.strokeUniform ? new v.Point(1 / t.scaleX, 1 / t.scaleY) : new v.Point(1, 1),
                      a = function(e) {
                        var t = i / Math.hypot(e.x, e.y);
                        return new v.Point(e.x * t * o.x, e.y * t * o.y)
                      };
                    return e.length <= 1 || e.forEach((function(s, l) {
                      var c, u, h = new v.Point(s.x, s.y);
                      0 === l ? (u = e[l + 1], c = n ? a(v.util.createVector(u, h)).addEquals(h) : e[e.length - 1]) : l === e.length - 1 ? (c = e[l - 1], u = n ? a(v.util.createVector(c, h)).addEquals(h) : e[0]) : (c = e[l - 1], u = e[
                        l + 1]);
                      var p, d, f = v.util.getBisector(h, c, u),
                        g = f.vector,
                        m = f.angle;
                      if ("miter" === t.strokeLineJoin && (p = -i / Math.sin(m / 2), d = new v.Point(g.x * p * o.x, g.y * p * o.y), Math.hypot(d.x, d.y) / i <= t.strokeMiterLimit)) return r.push(h.add(d)), void r.push(h.subtract(d));
                      p = -i * Math.SQRT2, d = new v.Point(g.x * p * o.x, g.y * p * o.y), r.push(h.add(d)), r.push(h.subtract(d))
                    })), r
                  },
                  transformPoint: function(e, t, n) {
                    return n ? new v.Point(t[0] * e.x + t[2] * e.y, t[1] * e.x + t[3] * e.y) : new v.Point(t[0] * e.x + t[2] * e.y + t[4], t[1] * e.x + t[3] * e.y + t[5])
                  },
                  makeBoundingBoxFromPoints: function(e, t) {
                    if (t)
                      for (var n = 0; n < e.length; n++) e[n] = v.util.transformPoint(e[n], t);
                    var r = [e[0].x, e[1].x, e[2].x, e[3].x],
                      i = v.util.array.min(r),
                      o = v.util.array.max(r) - i,
                      a = [e[0].y, e[1].y, e[2].y, e[3].y],
                      s = v.util.array.min(a);
                    return {
                      left: i,
                      top: s,
                      width: o,
                      height: v.util.array.max(a) - s
                    }
                  },
                  invertTransform: function(e) {
                    var t = 1 / (e[0] * e[3] - e[1] * e[2]),
                      n = [t * e[3], -t * e[1], -t * e[2], t * e[0]],
                      r = v.util.transformPoint({
                        x: e[4],
                        y: e[5]
                      }, n, !0);
                    return n[4] = -r.x, n[5] = -r.y, n
                  },
                  toFixed: function(e, t) {
                    return parseFloat(Number(e).toFixed(t))
                  },
                  parseUnit: function(e, t) {
                    var n = /\D{0,2}$/.exec(e),
                      r = parseFloat(e);
                    switch (t || (t = v.Text.DEFAULT_SVG_FONT_SIZE), n[0]) {
                      case "mm":
                        return r * v.DPI / 25.4;
                      case "cm":
                        return r * v.DPI / 2.54;
                      case "in":
                        return r * v.DPI;
                      case "pt":
                        return r * v.DPI / 72;
                      case "pc":
                        return r * v.DPI / 72 * 12;
                      case "em":
                        return r * t;
                      default:
                        return r
                    }
                  },
                  falseFunction: function() {
                    return !1
                  },
                  getKlass: function(e, t) {
                    return e = v.util.string.camelize(e.charAt(0).toUpperCase() + e.slice(1)), v.util.resolveNamespace(t)[e]
                  },
                  getSvgAttributes: function(e) {
                    var t = ["instantiated_by_use", "style", "id", "class"];
                    switch (e) {
                      case "linearGradient":
                        t = t.concat(["x1", "y1", "x2", "y2", "gradientUnits", "gradientTransform"]);
                        break;
                      case "radialGradient":
                        t = t.concat(["gradientUnits", "gradientTransform", "cx", "cy", "r", "fx", "fy", "fr"]);
                        break;
                      case "stop":
                        t = t.concat(["offset", "stop-color", "stop-opacity"])
                    }
                    return t
                  },
                  resolveNamespace: function(t) {
                    if (!t) return v;
                    var n, r = t.split("."),
                      i = r.length,
                      o = e || v.window;
                    for (n = 0; n < i; ++n) o = o[r[n]];
                    return o
                  },
                  loadImage: function(e, t, n, r) {
                    if (e) {
                      var i = v.util.createImage(),
                        o = function() {
                          t && t.call(n, i, !1), i = i.onload = i.onerror = null
                        };
                      i.onload = o, i.onerror = function() {
                        v.log("Error loading " + i.src), t && t.call(n, null, !0), i = i.onload = i.onerror = null
                      }, 0 !== e.indexOf("data") && null != r && (i.crossOrigin = r), "data:image/svg" === e.substring(0, 14) && (i.onload = null, v.util.loadImageInDom(i, o)), i.src = e
                    } else t && t.call(n, e)
                  },
                  loadImageInDom: function(e, t) {
                    var n = v.document.createElement("div");
                    n.style.width = n.style.height = "1px", n.style.left = n.style.top = "-100%", n.style.position = "absolute", n.appendChild(e), v.document.querySelector("body").appendChild(n), e.onload = function() {
                      t(), n.parentNode.removeChild(n), n = null
                    }
                  },
                  enlivenObjects: function(e, t, n, r) {
                    var i = [],
                      o = 0,
                      a = (e = e || []).length;

                    function s() {
                      ++o === a && t && t(i.filter((function(e) {
                        return e
                      })))
                    }
                    a ? e.forEach((function(e, t) {
                      e && e.type ? v.util.getKlass(e.type, n).fromObject(e, (function(n, o) {
                        o || (i[t] = n), r && r(e, n, o), s()
                      })) : s()
                    })) : t && t(i)
                  },
                  enlivenObjectEnlivables: function(e, t, n) {
                    var r = v.Object.ENLIVEN_PROPS.filter((function(t) {
                      return !!e[t]
                    }));
                    v.util.enlivenObjects(r.map((function(t) {
                      return e[t]
                    })), (function(e) {
                      var i = {};
                      r.forEach((function(n, r) {
                        i[n] = e[r], t && (t[n] = e[r])
                      })), n && n(i)
                    }))
                  },
                  enlivenPatterns: function(e, t) {
                    function n() {
                      ++i === o && t && t(r)
                    }
                    var r = [],
                      i = 0,
                      o = (e = e || []).length;
                    o ? e.forEach((function(e, t) {
                      e && e.source ? new v.Pattern(e, (function(e) {
                        r[t] = e, n()
                      })) : (r[t] = e, n())
                    })) : t && t(r)
                  },
                  groupSVGElements: function(e, t, n) {
                    var r;
                    return e && 1 === e.length ? (void 0 !== n && (e[0].sourcePath = n), e[0]) : (t && (t.width && t.height ? t.centerPoint = {
                      x: t.width / 2,
                      y: t.height / 2
                    } : (delete t.width, delete t.height)), r = new v.Group(e, t), void 0 !== n && (r.sourcePath = n), r)
                  },
                  populateWithProperties: function(e, t, n) {
                    if (n && Array.isArray(n))
                      for (var r = 0, i = n.length; r < i; r++) n[r] in e && (t[n[r]] = e[n[r]])
                  },
                  createCanvasElement: function() {
                    return v.document.createElement("canvas")
                  },
                  copyCanvasElement: function(e) {
                    var t = v.util.createCanvasElement();
                    return t.width = e.width, t.height = e.height, t.getContext("2d").drawImage(e, 0, 0), t
                  },
                  toDataURL: function(e, t, n) {
                    return e.toDataURL("image/" + t, n)
                  },
                  createImage: function() {
                    return v.document.createElement("img")
                  },
                  multiplyTransformMatrices: function(e, t, n) {
                    return [e[0] * t[0] + e[2] * t[1], e[1] * t[0] + e[3] * t[1], e[0] * t[2] + e[2] * t[3], e[1] * t[2] + e[3] * t[3], n ? 0 : e[0] * t[4] + e[2] * t[5] + e[4], n ? 0 : e[1] * t[4] + e[3] * t[5] + e[5]]
                  },
                  qrDecompose: function(e) {
                    var o = n(e[1], e[0]),
                      a = r(e[0], 2) + r(e[1], 2),
                      s = t(a),
                      l = (e[0] * e[3] - e[2] * e[1]) / s,
                      c = n(e[0] * e[2] + e[1] * e[3], a);
                    return {
                      angle: o / i,
                      scaleX: s,
                      scaleY: l,
                      skewX: c / i,
                      skewY: 0,
                      translateX: e[4],
                      translateY: e[5]
                    }
                  },
                  calcRotateMatrix: function(e) {
                    if (!e.angle) return v.iMatrix.concat();
                    var t = v.util.degreesToRadians(e.angle),
                      n = v.util.cos(t),
                      r = v.util.sin(t);
                    return [n, r, -r, n, 0, 0]
                  },
                  calcDimensionsMatrix: function(e) {
                    var t = void 0 === e.scaleX ? 1 : e.scaleX,
                      n = void 0 === e.scaleY ? 1 : e.scaleY,
                      r = [e.flipX ? -t : t, 0, 0, e.flipY ? -n : n, 0, 0],
                      i = v.util.multiplyTransformMatrices,
                      o = v.util.degreesToRadians;
                    return e.skewX && (r = i(r, [1, 0, Math.tan(o(e.skewX)), 1], !0)), e.skewY && (r = i(r, [1, Math.tan(o(e.skewY)), 0, 1], !0)), r
                  },
                  composeMatrix: function(e) {
                    var t = [1, 0, 0, 1, e.translateX || 0, e.translateY || 0],
                      n = v.util.multiplyTransformMatrices;
                    return e.angle && (t = n(t, v.util.calcRotateMatrix(e))), (1 !== e.scaleX || 1 !== e.scaleY || e.skewX || e.skewY || e.flipX || e.flipY) && (t = n(t, v.util.calcDimensionsMatrix(e))), t
                  },
                  resetObjectTransform: function(e) {
                    e.scaleX = 1, e.scaleY = 1, e.skewX = 0, e.skewY = 0, e.flipX = !1, e.flipY = !1, e.rotate(0)
                  },
                  saveObjectTransform: function(e) {
                    return {
                      scaleX: e.scaleX,
                      scaleY: e.scaleY,
                      skewX: e.skewX,
                      skewY: e.skewY,
                      angle: e.angle,
                      left: e.left,
                      flipX: e.flipX,
                      flipY: e.flipY,
                      top: e.top
                    }
                  },
                  isTransparent: function(e, t, n, r) {
                    r > 0 && (t > r ? t -= r : t = 0, n > r ? n -= r : n = 0);
                    var i, o = !0,
                      a = e.getImageData(t, n, 2 * r || 1, 2 * r || 1),
                      s = a.data.length;
                    for (i = 3; i < s && !1 !== (o = a.data[i] <= 0); i += 4);
                    return a = null, o
                  },
                  parsePreserveAspectRatioAttribute: function(e) {
                    var t, n = "meet",
                      r = e.split(" ");
                    return r && r.length && ("meet" !== (n = r.pop()) && "slice" !== n ? (t = n, n = "meet") : r.length && (t = r.pop())), {
                      meetOrSlice: n,
                      alignX: "none" !== t ? t.slice(1, 4) : "none",
                      alignY: "none" !== t ? t.slice(5, 8) : "none"
                    }
                  },
                  clearFabricFontCache: function(e) {
                    (e = (e || "").toLowerCase()) ? v.charWidthsCache[e] && delete v.charWidthsCache[e]: v.charWidthsCache = {}
                  },
                  limitDimsByArea: function(e, t) {
                    var n = Math.sqrt(t * e),
                      r = Math.floor(t / n);
                    return {
                      x: Math.floor(n),
                      y: r
                    }
                  },
                  capValue: function(e, t, n) {
                    return Math.max(e, Math.min(t, n))
                  },
                  findScaleToFit: function(e, t) {
                    return Math.min(t.width / e.width, t.height / e.height)
                  },
                  findScaleToCover: function(e, t) {
                    return Math.max(t.width / e.width, t.height / e.height)
                  },
                  matrixToSVG: function(e) {
                    return "matrix(" + e.map((function(e) {
                      return v.util.toFixed(e, v.Object.NUM_FRACTION_DIGITS)
                    })).join(" ") + ")"
                  },
                  removeTransformFromObject: function(e, t) {
                    var n = v.util.invertTransform(t),
                      r = v.util.multiplyTransformMatrices(n, e.calcOwnMatrix());
                    v.util.applyTransformToObject(e, r)
                  },
                  addTransformToObject: function(e, t) {
                    v.util.applyTransformToObject(e, v.util.multiplyTransformMatrices(t, e.calcOwnMatrix()))
                  },
                  applyTransformToObject: function(e, t) {
                    var n = v.util.qrDecompose(t),
                      r = new v.Point(n.translateX, n.translateY);
                    e.flipX = !1, e.flipY = !1, e.set("scaleX", n.scaleX), e.set("scaleY", n.scaleY), e.skewX = n.skewX, e.skewY = n.skewY, e.angle = n.angle, e.setPositionByOrigin(r, "center", "center")
                  },
                  sizeAfterTransform: function(e, t, n) {
                    var r = e / 2,
                      i = t / 2,
                      o = [{
                        x: -r,
                        y: -i
                      }, {
                        x: r,
                        y: -i
                      }, {
                        x: -r,
                        y: i
                      }, {
                        x: r,
                        y: i
                      }],
                      a = v.util.calcDimensionsMatrix(n),
                      s = v.util.makeBoundingBoxFromPoints(o, a);
                    return {
                      x: s.width,
                      y: s.height
                    }
                  },
                  mergeClipPaths: function(e, t) {
                    var n = e,
                      r = t;
                    n.inverted && !r.inverted && (n = t, r = e), v.util.applyTransformToObject(r, v.util.multiplyTransformMatrices(v.util.invertTransform(n.calcTransformMatrix()), r.calcTransformMatrix()));
                    var i = n.inverted && r.inverted;
                    return i && (n.inverted = r.inverted = !1), new v.Group([n], {
                      clipPath: r,
                      inverted: i
                    })
                  },
                  hasStyleChanged: function(e, t, n) {
                    return n = n || !1, e.fill !== t.fill || e.stroke !== t.stroke || e.strokeWidth !== t.strokeWidth || e.fontSize !== t.fontSize || e.fontFamily !== t.fontFamily || e.fontWeight !== t.fontWeight || e.fontStyle !== t
                      .fontStyle || e.textBackgroundColor !== t.textBackgroundColor || e.deltaY !== t.deltaY || n && (e.overline !== t.overline || e.underline !== t.underline || e.linethrough !== t.linethrough)
                  },
                  stylesToArray: function(e, t) {
                    e = v.util.object.clone(e, !0);
                    for (var n = t.split("\n"), r = -1, i = {}, o = [], a = 0; a < n.length; a++)
                      if (e[a])
                        for (var s = 0; s < n[a].length; s++) {
                          r++;
                          var l = e[a][s];
                          if (l && Object.keys(l).length > 0) v.util.hasStyleChanged(i, l, !0) ? o.push({
                            start: r,
                            end: r + 1,
                            style: l
                          }) : o[o.length - 1].end++;
                          i = l || {}
                        } else r += n[a].length;
                    return o
                  },
                  stylesFromArray: function(e, t) {
                    if (!Array.isArray(e)) return e;
                    for (var n = t.split("\n"), r = -1, i = 0, o = {}, a = 0; a < n.length; a++)
                      for (var s = 0; s < n[a].length; s++) r++, e[i] && e[i].start <= r && r < e[i].end && (o[a] = o[a] || {}, o[a][s] = Object.assign({}, e[i].style), r === e[i].end - 1 && i++);
                    return o
                  }
                }
              }(e),
              function() {
                var e = Array.prototype.join,
                  t = {
                    m: 2,
                    l: 2,
                    h: 1,
                    v: 1,
                    c: 6,
                    s: 4,
                    q: 4,
                    t: 2,
                    a: 7
                  },
                  n = {
                    m: "l",
                    M: "L"
                  };

                function r(e, t, n, r, i, o, a, s, l, c, u) {
                  var h = v.util.cos(e),
                    p = v.util.sin(e),
                    d = v.util.cos(t),
                    f = v.util.sin(t),
                    g = n * i * d - r * o * f + a,
                    m = r * i * d + n * o * f + s;
                  return ["C", c + l * (-n * i * p - r * o * h), u + l * (-r * i * p + n * o * h), g + l * (n * i * f + r * o * d), m + l * (r * i * f - n * o * d), g, m]
                }

                function i(e, t, n, r) {
                  var i = Math.atan2(t, e),
                    o = Math.atan2(r, n);
                  return o >= i ? o - i : 2 * Math.PI - (i - o)
                }

                function o(e, t, n) {
                  for (var o = n[1], a = n[2], s = n[3], l = n[4], c = n[5], u = function(e, t, n, o, a, s, l) {
                      var c = Math.PI,
                        u = l * c / 180,
                        h = v.util.sin(u),
                        p = v.util.cos(u),
                        d = 0,
                        f = 0,
                        g = -p * e * .5 - h * t * .5,
                        m = -p * t * .5 + h * e * .5,
                        _ = (n = Math.abs(n)) * n,
                        b = (o = Math.abs(o)) * o,
                        y = m * m,
                        w = g * g,
                        x = _ * b - _ * y - b * w,
                        k = 0;
                      if (x < 0) {
                        var C = Math.sqrt(1 - x / (_ * b));
                        n *= C, o *= C
                      } else k = (a === s ? -1 : 1) * Math.sqrt(x / (_ * y + b * w));
                      var S = k * n * m / o,
                        E = -k * o * g / n,
                        T = p * S - h * E + .5 * e,
                        O = h * S + p * E + .5 * t,
                        A = i(1, 0, (g - S) / n, (m - E) / o),
                        P = i((g - S) / n, (m - E) / o, (-g - S) / n, (-m - E) / o);
                      0 === s && P > 0 ? P -= 2 * c : 1 === s && P < 0 && (P += 2 * c);
                      for (var M = Math.ceil(Math.abs(P / c * 2)), D = [], I = P / M, N = 8 / 3 * Math.sin(I / 4) * Math.sin(I / 4) / Math.sin(I / 2), R = A + I, j = 0; j < M; j++) D[j] = r(A, R, p, h, n, o, T, O, N, d, f), d = D[j][5], f = D[
                        j][6], A = R, R += I;
                      return D
                    }(n[6] - e, n[7] - t, o, a, l, c, s), h = 0, p = u.length; h < p; h++) u[h][1] += e, u[h][2] += t, u[h][3] += e, u[h][4] += t, u[h][5] += e, u[h][6] += t;
                  return u
                }

                function a(e, t, n, r) {
                  return Math.sqrt((n - e) * (n - e) + (r - t) * (r - t))
                }

                function s(e, t, n, r, i, o, a, s) {
                  return function(l) {
                    var c = function(e) {
                        return e * e * e
                      }(l),
                      u = function(e) {
                        return 3 * e * e * (1 - e)
                      }(l),
                      h = function(e) {
                        return 3 * e * (1 - e) * (1 - e)
                      }(l),
                      p = function(e) {
                        return (1 - e) * (1 - e) * (1 - e)
                      }(l);
                    return {
                      x: a * c + i * u + n * h + e * p,
                      y: s * c + o * u + r * h + t * p
                    }
                  }
                }

                function l(e, t, n, r, i, o, a, s) {
                  return function(l) {
                    var c = 1 - l,
                      u = 3 * c * c * (n - e) + 6 * c * l * (i - n) + 3 * l * l * (a - i),
                      h = 3 * c * c * (r - t) + 6 * c * l * (o - r) + 3 * l * l * (s - o);
                    return Math.atan2(h, u)
                  }
                }

                function c(e, t, n, r, i, o) {
                  return function(a) {
                    var s = function(e) {
                        return e * e
                      }(a),
                      l = function(e) {
                        return 2 * e * (1 - e)
                      }(a),
                      c = function(e) {
                        return (1 - e) * (1 - e)
                      }(a);
                    return {
                      x: i * s + n * l + e * c,
                      y: o * s + r * l + t * c
                    }
                  }
                }

                function u(e, t, n, r, i, o) {
                  return function(a) {
                    var s = 1 - a,
                      l = 2 * s * (n - e) + 2 * a * (i - n),
                      c = 2 * s * (r - t) + 2 * a * (o - r);
                    return Math.atan2(c, l)
                  }
                }

                function h(e, t, n) {
                  var r, i, o = {
                      x: t,
                      y: n
                    },
                    s = 0;
                  for (i = 1; i <= 100; i += 1) r = e(i / 100), s += a(o.x, o.y, r.x, r.y), o = r;
                  return s
                }

                function p(e, t) {
                  for (var n, r, i, o = 0, s = 0, l = e.iterator, c = {
                      x: e.x,
                      y: e.y
                    }, u = .01, h = e.angleFinder; s < t && u > 1e-4;) n = l(o), i = o, (r = a(c.x, c.y, n.x, n.y)) + s > t ? (o -= u, u /= 2) : (c = n, o += u, s += r);
                  return n.angle = h(i), n
                }

                function d(e) {
                  for (var t, n, r, i, o = 0, p = e.length, d = 0, f = 0, g = 0, m = 0, v = [], _ = 0; _ < p; _++) {
                    switch (r = {
                        x: d,
                        y: f,
                        command: (t = e[_])[0]
                      }, t[0]) {
                      case "M":
                        r.length = 0, g = d = t[1], m = f = t[2];
                        break;
                      case "L":
                        r.length = a(d, f, t[1], t[2]), d = t[1], f = t[2];
                        break;
                      case "C":
                        n = s(d, f, t[1], t[2], t[3], t[4], t[5], t[6]), i = l(d, f, t[1], t[2], t[3], t[4], t[5], t[6]), r.iterator = n, r.angleFinder = i, r.length = h(n, d, f), d = t[5], f = t[6];
                        break;
                      case "Q":
                        n = c(d, f, t[1], t[2], t[3], t[4]), i = u(d, f, t[1], t[2], t[3], t[4]), r.iterator = n, r.angleFinder = i, r.length = h(n, d, f), d = t[3], f = t[4];
                        break;
                      case "Z":
                      case "z":
                        r.destX = g, r.destY = m, r.length = a(d, f, g, m), d = g, f = m
                    }
                    o += r.length, v.push(r)
                  }
                  return v.push({
                    length: o,
                    x: d,
                    y: f
                  }), v
                }
                v.util.joinPath = function(e) {
                  return e.map((function(e) {
                    return e.join(" ")
                  })).join(" ")
                }, v.util.parsePath = function(e) {
                  var r, i, o, a, s, l = [],
                    c = [],
                    u = v.rePathCommand,
                    h = "[-+]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][-+]?\\d+)?\\s*",
                    p = "(" + h + ")" + v.commaWsp,
                    d = "([01])" + v.commaWsp + "?",
                    f = new RegExp(p + "?" + p + "?" + p + d + d + p + "?(" + h + ")", "g");
                  if (!e || !e.match) return l;
                  for (var g, m = 0, _ = (s = e.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi)).length; m < _; m++) {
                    a = (r = s[m]).slice(1).trim(), c.length = 0;
                    var b = r.charAt(0);
                    if (g = [b], "a" === b.toLowerCase())
                      for (var y; y = f.exec(a);)
                        for (var w = 1; w < y.length; w++) c.push(y[w]);
                    else
                      for (; o = u.exec(a);) c.push(o[0]);
                    w = 0;
                    for (var x = c.length; w < x; w++) i = parseFloat(c[w]), isNaN(i) || g.push(i);
                    var k = t[b.toLowerCase()],
                      C = n[b] || b;
                    if (g.length - 1 > k)
                      for (var S = 1, E = g.length; S < E; S += k) l.push([b].concat(g.slice(S, S + k))), b = C;
                    else l.push(g)
                  }
                  return l
                }, v.util.makePathSimpler = function(e) {
                  var t, n, r, i, a, s, l = 0,
                    c = 0,
                    u = e.length,
                    h = 0,
                    p = 0,
                    d = [];
                  for (n = 0; n < u; ++n) {
                    switch (r = !1, (t = e[n].slice(0))[0]) {
                      case "l":
                        t[0] = "L", t[1] += l, t[2] += c;
                      case "L":
                        l = t[1], c = t[2];
                        break;
                      case "h":
                        t[1] += l;
                      case "H":
                        t[0] = "L", t[2] = c, l = t[1];
                        break;
                      case "v":
                        t[1] += c;
                      case "V":
                        t[0] = "L", c = t[1], t[1] = l, t[2] = c;
                        break;
                      case "m":
                        t[0] = "M", t[1] += l, t[2] += c;
                      case "M":
                        l = t[1], c = t[2], h = t[1], p = t[2];
                        break;
                      case "c":
                        t[0] = "C", t[1] += l, t[2] += c, t[3] += l, t[4] += c, t[5] += l, t[6] += c;
                      case "C":
                        a = t[3], s = t[4], l = t[5], c = t[6];
                        break;
                      case "s":
                        t[0] = "S", t[1] += l, t[2] += c, t[3] += l, t[4] += c;
                      case "S":
                        "C" === i ? (a = 2 * l - a, s = 2 * c - s) : (a = l, s = c), l = t[3], c = t[4], t[0] = "C", t[5] = t[3], t[6] = t[4], t[3] = t[1], t[4] = t[2], t[1] = a, t[2] = s, a = t[3], s = t[4];
                        break;
                      case "q":
                        t[0] = "Q", t[1] += l, t[2] += c, t[3] += l, t[4] += c;
                      case "Q":
                        a = t[1], s = t[2], l = t[3], c = t[4];
                        break;
                      case "t":
                        t[0] = "T", t[1] += l, t[2] += c;
                      case "T":
                        "Q" === i ? (a = 2 * l - a, s = 2 * c - s) : (a = l, s = c), t[0] = "Q", l = t[1], c = t[2], t[1] = a, t[2] = s, t[3] = l, t[4] = c;
                        break;
                      case "a":
                        t[0] = "A", t[6] += l, t[7] += c;
                      case "A":
                        r = !0, d = d.concat(o(l, c, t)), l = t[6], c = t[7];
                        break;
                      case "z":
                      case "Z":
                        l = h, c = p
                    }
                    r || d.push(t), i = t[0]
                  }
                  return d
                }, v.util.getSmoothPathFromPoints = function(e, t) {
                  var n, r = [],
                    i = new v.Point(e[0].x, e[0].y),
                    o = new v.Point(e[1].x, e[1].y),
                    a = e.length,
                    s = 1,
                    l = 0,
                    c = a > 2;
                  for (t = t || 0, c && (s = e[2].x < o.x ? -1 : e[2].x === o.x ? 0 : 1, l = e[2].y < o.y ? -1 : e[2].y === o.y ? 0 : 1), r.push(["M", i.x - s * t, i.y - l * t]), n = 1; n < a; n++) {
                    if (!i.eq(o)) {
                      var u = i.midPointFrom(o);
                      r.push(["Q", i.x, i.y, u.x, u.y])
                    }
                    i = e[n], n + 1 < e.length && (o = e[n + 1])
                  }
                  return c && (s = i.x > e[n - 2].x ? 1 : i.x === e[n - 2].x ? 0 : -1, l = i.y > e[n - 2].y ? 1 : i.y === e[n - 2].y ? 0 : -1), r.push(["L", i.x + s * t, i.y + l * t]), r
                }, v.util.getPathSegmentsInfo = d, v.util.getBoundsOfCurve = function(t, n, r, i, o, a, s, l) {
                  var c;
                  if (v.cachesBoundsOfCurve && (c = e.call(arguments), v.boundsOfCurveCache[c])) return v.boundsOfCurveCache[c];
                  var u, h, p, d, f, g, m, _, b = Math.sqrt,
                    y = Math.min,
                    w = Math.max,
                    x = Math.abs,
                    k = [],
                    C = [
                      [],
                      []
                    ];
                  h = 6 * t - 12 * r + 6 * o, u = -3 * t + 9 * r - 9 * o + 3 * s, p = 3 * r - 3 * t;
                  for (var S = 0; S < 2; ++S)
                    if (S > 0 && (h = 6 * n - 12 * i + 6 * a, u = -3 * n + 9 * i - 9 * a + 3 * l, p = 3 * i - 3 * n), x(u) < 1e-12) {
                      if (x(h) < 1e-12) continue;
                      0 < (d = -p / h) && d < 1 && k.push(d)
                    } else(m = h * h - 4 * p * u) < 0 || (0 < (f = (-h + (_ = b(m))) / (2 * u)) && f < 1 && k.push(f), 0 < (g = (-h - _) / (2 * u)) && g < 1 && k.push(g));
                  for (var E, T, O, A = k.length, P = A; A--;) E = (O = 1 - (d = k[A])) * O * O * t + 3 * O * O * d * r + 3 * O * d * d * o + d * d * d * s, C[0][A] = E, T = O * O * O * n + 3 * O * O * d * i + 3 * O * d * d * a + d * d * d * l,
                    C[1][A] = T;
                  C[0][P] = t, C[1][P] = n, C[0][P + 1] = s, C[1][P + 1] = l;
                  var M = [{
                    x: y.apply(null, C[0]),
                    y: y.apply(null, C[1])
                  }, {
                    x: w.apply(null, C[0]),
                    y: w.apply(null, C[1])
                  }];
                  return v.cachesBoundsOfCurve && (v.boundsOfCurveCache[c] = M), M
                }, v.util.getPointOnPath = function(e, t, n) {
                  n || (n = d(e));
                  for (var r = 0; t - n[r].length > 0 && r < n.length - 2;) t -= n[r].length, r++;
                  var i, o = n[r],
                    a = t / o.length,
                    s = o.command,
                    l = e[r];
                  switch (s) {
                    case "M":
                      return {
                        x: o.x, y: o.y, angle: 0
                      };
                    case "Z":
                    case "z":
                      return (i = new v.Point(o.x, o.y).lerp(new v.Point(o.destX, o.destY), a)).angle = Math.atan2(o.destY - o.y, o.destX - o.x), i;
                    case "L":
                      return (i = new v.Point(o.x, o.y).lerp(new v.Point(l[1], l[2]), a)).angle = Math.atan2(l[2] - o.y, l[1] - o.x), i;
                    case "C":
                    case "Q":
                      return p(o, t)
                  }
                }, v.util.transformPath = function(e, t, n) {
                  return n && (t = v.util.multiplyTransformMatrices(t, [1, 0, 0, 1, -n.x, -n.y])), e.map((function(e) {
                    for (var n = e.slice(0), r = {}, i = 1; i < e.length - 1; i += 2) r.x = e[i], r.y = e[i + 1], r = v.util.transformPoint(r, t), n[i] = r.x, n[i + 1] = r.y;
                    return n
                  }))
                }
              }(),
              function() {
                var e = Array.prototype.slice;

                function t(e, t, n) {
                  if (e && 0 !== e.length) {
                    var r = e.length - 1,
                      i = t ? e[r][t] : e[r];
                    if (t)
                      for (; r--;) n(e[r][t], i) && (i = e[r][t]);
                    else
                      for (; r--;) n(e[r], i) && (i = e[r]);
                    return i
                  }
                }
                v.util.array = {
                  fill: function(e, t) {
                    for (var n = e.length; n--;) e[n] = t;
                    return e
                  },
                  invoke: function(t, n) {
                    for (var r = e.call(arguments, 2), i = [], o = 0, a = t.length; o < a; o++) i[o] = r.length ? t[o][n].apply(t[o], r) : t[o][n].call(t[o]);
                    return i
                  },
                  min: function(e, n) {
                    return t(e, n, (function(e, t) {
                      return e < t
                    }))
                  },
                  max: function(e, n) {
                    return t(e, n, (function(e, t) {
                      return e >= t
                    }))
                  }
                }
              }(),
              function() {
                function e(t, n, r) {
                  if (r)
                    if (!v.isLikelyNode && n instanceof Element) t = n;
                    else if (n instanceof Array) {
                    t = [];
                    for (var i = 0, o = n.length; i < o; i++) t[i] = e({}, n[i], r)
                  } else if (n && "object" == typeof n)
                    for (var a in n) "canvas" === a || "group" === a ? t[a] = null : n.hasOwnProperty(a) && (t[a] = e({}, n[a], r));
                  else t = n;
                  else
                    for (var a in n) t[a] = n[a];
                  return t
                }
                v.util.object = {
                  extend: e,
                  clone: function(t, n) {
                    return e({}, t, n)
                  }
                }, v.util.object.extend(v.util, v.Observable)
              }(),
              function() {
                function e(e, t) {
                  var n = e.charCodeAt(t);
                  if (isNaN(n)) return "";
                  if (n < 55296 || n > 57343) return e.charAt(t);
                  if (55296 <= n && n <= 56319) {
                    if (e.length <= t + 1) throw "High surrogate without following low surrogate";
                    var r = e.charCodeAt(t + 1);
                    if (56320 > r || r > 57343) throw "High surrogate without following low surrogate";
                    return e.charAt(t) + e.charAt(t + 1)
                  }
                  if (0 === t) throw "Low surrogate without preceding high surrogate";
                  var i = e.charCodeAt(t - 1);
                  if (55296 > i || i > 56319) throw "Low surrogate without preceding high surrogate";
                  return !1
                }
                v.util.string = {
                  camelize: function(e) {
                    return e.replace(/-+(.)?/g, (function(e, t) {
                      return t ? t.toUpperCase() : ""
                    }))
                  },
                  capitalize: function(e, t) {
                    return e.charAt(0).toUpperCase() + (t ? e.slice(1) : e.slice(1).toLowerCase())
                  },
                  escapeXml: function(e) {
                    return e.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/'/g, "&apos;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
                  },
                  graphemeSplit: function(t) {
                    var n, r = 0,
                      i = [];
                    for (r = 0; r < t.length; r++) !1 !== (n = e(t, r)) && i.push(n);
                    return i
                  }
                }
              }(),
              function() {
                var e = Array.prototype.slice,
                  t = function() {},
                  n = function() {
                    for (var e in {
                        toString: 1
                      })
                      if ("toString" === e) return !1;
                    return !0
                  }(),
                  r = function(e, t, r) {
                    for (var i in t) i in e.prototype && "function" == typeof e.prototype[i] && (t[i] + "").indexOf("callSuper") > -1 ? e.prototype[i] = function(e) {
                      return function() {
                        var n = this.constructor.superclass;
                        this.constructor.superclass = r;
                        var i = t[e].apply(this, arguments);
                        if (this.constructor.superclass = n, "initialize" !== e) return i
                      }
                    }(i) : e.prototype[i] = t[i], n && (t.toString !== Object.prototype.toString && (e.prototype.toString = t.toString), t.valueOf !== Object.prototype.valueOf && (e.prototype.valueOf = t.valueOf))
                  };

                function i() {}

                function o(t) {
                  for (var n = null, r = this; r.constructor.superclass;) {
                    var i = r.constructor.superclass.prototype[t];
                    if (r[t] !== i) {
                      n = i;
                      break
                    }
                    r = r.constructor.superclass.prototype
                  }
                  if (n) return arguments.length > 1 ? n.apply(this, e.call(arguments, 1)) : n.call(this)
                }
                v.util.createClass = function() {
                  var n = null,
                    a = e.call(arguments, 0);

                  function s() {
                    this.initialize.apply(this, arguments)
                  }
                  "function" == typeof a[0] && (n = a.shift()), s.superclass = n, s.subclasses = [], n && (i.prototype = n.prototype, s.prototype = new i, n.subclasses.push(s));
                  for (var l = 0, c = a.length; l < c; l++) r(s, a[l], n);
                  return s.prototype.initialize || (s.prototype.initialize = t), s.prototype.constructor = s, s.prototype.callSuper = o, s
                }
              }(), t = !!v.document.createElement("div").attachEvent, n = ["touchstart", "touchmove", "touchend"], v.util.addListener = function(e, n, r, i) {
                e && e.addEventListener(n, r, !t && i)
              }, v.util.removeListener = function(e, n, r, i) {
                e && e.removeEventListener(n, r, !t && i)
              }, v.util.getPointer = function(e) {
                var t = e.target,
                  n = v.util.getScrollLeftTop(t),
                  r = function(e) {
                    var t = e.changedTouches;
                    return t && t[0] ? t[0] : e
                  }(e);
                return {
                  x: r.clientX + n.left,
                  y: r.clientY + n.top
                }
              }, v.util.isTouchEvent = function(e) {
                return n.indexOf(e.type) > -1 || "touch" === e.pointerType
              }, r = v.document.createElement("div"), i = "string" == typeof r.style.opacity, l = "string" == typeof r.style.filter, c = /alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/, u = function(e) {
                return e
              }, i ? u = function(e, t) {
                return e.style.opacity = t, e
              } : l && (u = function(e, t) {
                var n = e.style;
                return e.currentStyle && !e.currentStyle.hasLayout && (n.zoom = 1), c.test(n.filter) ? (t = t >= .9999 ? "" : "alpha(opacity=" + 100 * t + ")", n.filter = n.filter.replace(c, t)) : n.filter += " alpha(opacity=" + 100 * t + ")",
                  e
              }), v.util.setStyle = function(e, t) {
                var n = e.style;
                if (!n) return e;
                if ("string" == typeof t) return e.style.cssText += ";" + t, t.indexOf("opacity") > -1 ? u(e, t.match(/opacity:\s*(\d?\.?\d*)/)[1]) : e;
                for (var r in t)
                  if ("opacity" === r) u(e, t[r]);
                  else {
                    var i = "float" === r || "cssFloat" === r ? void 0 === n.styleFloat ? "cssFloat" : "styleFloat" : r;
                    n.setProperty(i, t[r])
                  } return e
              },
              function() {
                var e = Array.prototype.slice;
                var t, n, r = function(t) {
                  return e.call(t, 0)
                };
                try {
                  t = r(v.document.childNodes) instanceof Array
                } catch (e) {}

                function i(e, t) {
                  var n = v.document.createElement(e);
                  for (var r in t) "class" === r ? n.className = t[r] : "for" === r ? n.htmlFor = t[r] : n.setAttribute(r, t[r]);
                  return n
                }

                function o(e) {
                  for (var t = 0, n = 0, r = v.document.documentElement, i = v.document.body || {
                      scrollLeft: 0,
                      scrollTop: 0
                    }; e && (e.parentNode || e.host) && ((e = e.parentNode || e.host) === v.document ? (t = i.scrollLeft || r.scrollLeft || 0, n = i.scrollTop || r.scrollTop || 0) : (t += e.scrollLeft || 0, n += e.scrollTop || 0), 1 !== e
                      .nodeType || "fixed" !== e.style.position););
                  return {
                    left: t,
                    top: n
                  }
                }
                t || (r = function(e) {
                    for (var t = new Array(e.length), n = e.length; n--;) t[n] = e[n];
                    return t
                  }), n = v.document.defaultView && v.document.defaultView.getComputedStyle ? function(e, t) {
                    var n = v.document.defaultView.getComputedStyle(e, null);
                    return n ? n[t] : void 0
                  } : function(e, t) {
                    var n = e.style[t];
                    return !n && e.currentStyle && (n = e.currentStyle[t]), n
                  },
                  function() {
                    var e = v.document.documentElement.style,
                      t = "userSelect" in e ? "userSelect" : "MozUserSelect" in e ? "MozUserSelect" : "WebkitUserSelect" in e ? "WebkitUserSelect" : "KhtmlUserSelect" in e ? "KhtmlUserSelect" : "";
                    v.util.makeElementUnselectable = function(e) {
                      return void 0 !== e.onselectstart && (e.onselectstart = v.util.falseFunction), t ? e.style[t] = "none" : "string" == typeof e.unselectable && (e.unselectable = "on"), e
                    }, v.util.makeElementSelectable = function(e) {
                      return void 0 !== e.onselectstart && (e.onselectstart = null), t ? e.style[t] = "" : "string" == typeof e.unselectable && (e.unselectable = ""), e
                    }
                  }(), v.util.setImageSmoothing = function(e, t) {
                    e.imageSmoothingEnabled = e.imageSmoothingEnabled || e.webkitImageSmoothingEnabled || e.mozImageSmoothingEnabled || e.msImageSmoothingEnabled || e.oImageSmoothingEnabled, e.imageSmoothingEnabled = t
                  }, v.util.getById = function(e) {
                    return "string" == typeof e ? v.document.getElementById(e) : e
                  }, v.util.toArray = r, v.util.addClass = function(e, t) {
                    e && -1 === (" " + e.className + " ").indexOf(" " + t + " ") && (e.className += (e.className ? " " : "") + t)
                  }, v.util.makeElement = i, v.util.wrapElement = function(e, t, n) {
                    return "string" == typeof t && (t = i(t, n)), e.parentNode && e.parentNode.replaceChild(t, e), t.appendChild(e), t
                  }, v.util.getScrollLeftTop = o, v.util.getElementOffset = function(e) {
                    var t, r, i = e && e.ownerDocument,
                      a = {
                        left: 0,
                        top: 0
                      },
                      s = {
                        left: 0,
                        top: 0
                      },
                      l = {
                        borderLeftWidth: "left",
                        borderTopWidth: "top",
                        paddingLeft: "left",
                        paddingTop: "top"
                      };
                    if (!i) return s;
                    for (var c in l) s[l[c]] += parseInt(n(e, c), 10) || 0;
                    return t = i.documentElement, void 0 !== e.getBoundingClientRect && (a = e.getBoundingClientRect()), r = o(e), {
                      left: a.left + r.left - (t.clientLeft || 0) + s.left,
                      top: a.top + r.top - (t.clientTop || 0) + s.top
                    }
                  }, v.util.getNodeCanvas = function(e) {
                    var t = v.jsdomImplForWrapper(e);
                    return t._canvas || t._image
                  }, v.util.cleanUpJsdomNode = function(e) {
                    if (v.isLikelyNode) {
                      var t = v.jsdomImplForWrapper(e);
                      t && (t._image = null, t._canvas = null, t._currentSrc = null, t._attributes = null, t._classList = null)
                    }
                  }
              }(),
              function() {
                function e() {}
                v.util.request = function(t, n) {
                  n || (n = {});
                  var r = n.method ? n.method.toUpperCase() : "GET",
                    i = n.onComplete || function() {},
                    o = new v.window.XMLHttpRequest,
                    a = n.body || n.parameters;
                  return o.onreadystatechange = function() {
                    4 === o.readyState && (i(o), o.onreadystatechange = e)
                  }, "GET" === r && (a = null, "string" == typeof n.parameters && (t = function(e, t) {
                    return e + (/\?/.test(e) ? "&" : "?") + t
                  }(t, n.parameters))), o.open(r, t, !0), "POST" !== r && "PUT" !== r || o.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), o.send(a), o
                }
              }(), v.log = console.log, v.warn = console.warn,
              function() {
                var e = v.util.object.extend,
                  t = v.util.object.clone,
                  n = [];

                function r() {
                  return !1
                }

                function i(e, t, n, r) {
                  return -n * Math.cos(e / r * (Math.PI / 2)) + n + t
                }
                v.util.object.extend(n, {
                  cancelAll: function() {
                    var e = this.splice(0);
                    return e.forEach((function(e) {
                      e.cancel()
                    })), e
                  },
                  cancelByCanvas: function(e) {
                    if (!e) return [];
                    var t = this.filter((function(t) {
                      return "object" == typeof t.target && t.target.canvas === e
                    }));
                    return t.forEach((function(e) {
                      e.cancel()
                    })), t
                  },
                  cancelByTarget: function(e) {
                    var t = this.findAnimationsByTarget(e);
                    return t.forEach((function(e) {
                      e.cancel()
                    })), t
                  },
                  findAnimationIndex: function(e) {
                    return this.indexOf(this.findAnimation(e))
                  },
                  findAnimation: function(e) {
                    return this.find((function(t) {
                      return t.cancel === e
                    }))
                  },
                  findAnimationsByTarget: function(e) {
                    return e ? this.filter((function(t) {
                      return t.target === e
                    })) : []
                  }
                });
                var o = v.window.requestAnimationFrame || v.window.webkitRequestAnimationFrame || v.window.mozRequestAnimationFrame || v.window.oRequestAnimationFrame || v.window.msRequestAnimationFrame || function(e) {
                    return v.window.setTimeout(e, 1e3 / 60)
                  },
                  a = v.window.cancelAnimationFrame || v.window.clearTimeout;

                function s() {
                  return o.apply(v.window, arguments)
                }
                v.util.animate = function(n) {
                  n || (n = {});
                  var o, a = !1,
                    l = function() {
                      var e = v.runningAnimations.indexOf(o);
                      return e > -1 && v.runningAnimations.splice(e, 1)[0]
                    };
                  return o = e(t(n), {
                    cancel: function() {
                      return a = !0, l()
                    },
                    currentValue: "startValue" in n ? n.startValue : 0,
                    completionRate: 0,
                    durationRate: 0
                  }), v.runningAnimations.push(o), s((function(e) {
                    var t, c = e || +new Date,
                      u = n.duration || 500,
                      h = c + u,
                      p = n.onChange || r,
                      d = n.abort || r,
                      f = n.onComplete || r,
                      g = n.easing || i,
                      m = "startValue" in n && n.startValue.length > 0,
                      v = "startValue" in n ? n.startValue : 0,
                      _ = "endValue" in n ? n.endValue : 100,
                      b = n.byValue || (m ? v.map((function(e, t) {
                        return _[t] - v[t]
                      })) : _ - v);
                    n.onStart && n.onStart(),
                      function e(n) {
                        var r = (t = n || +new Date) > h ? u : t - c,
                          i = r / u,
                          y = m ? v.map((function(e, t) {
                            return g(r, v[t], b[t], u)
                          })) : g(r, v, b, u),
                          w = m ? Math.abs((y[0] - v[0]) / b[0]) : Math.abs((y - v) / b);
                        if (o.currentValue = m ? y.slice() : y, o.completionRate = w, o.durationRate = i, !a) {
                          if (!d(y, w, i)) return t > h ? (o.currentValue = m ? _.slice() : _, o.completionRate = 1, o.durationRate = 1, p(m ? _.slice() : _, 1, 1), f(_, 1, 1), void l()) : (p(y, w, i), void s(e));
                          l()
                        }
                      }(c)
                  })), o.cancel
                }, v.util.requestAnimFrame = s, v.util.cancelAnimFrame = function() {
                  return a.apply(v.window, arguments)
                }, v.runningAnimations = n
              }(),
              function() {
                function e(e, t, n) {
                  var r = "rgba(" + parseInt(e[0] + n * (t[0] - e[0]), 10) + "," + parseInt(e[1] + n * (t[1] - e[1]), 10) + "," + parseInt(e[2] + n * (t[2] - e[2]), 10);
                  return r += "," + (e && t ? parseFloat(e[3] + n * (t[3] - e[3])) : 1), r += ")"
                }
                v.util.animateColor = function(t, n, r, i) {
                  var o = new v.Color(t).getSource(),
                    a = new v.Color(n).getSource(),
                    s = i.onComplete,
                    l = i.onChange;
                  return i = i || {}, v.util.animate(v.util.object.extend(i, {
                    duration: r || 500,
                    startValue: o,
                    endValue: a,
                    byValue: a,
                    easing: function(t, n, r, o) {
                      return e(n, r, i.colorEasing ? i.colorEasing(t, o) : 1 - Math.cos(t / o * (Math.PI / 2)))
                    },
                    onComplete: function(t, n, r) {
                      if (s) return s(e(a, a, 0), n, r)
                    },
                    onChange: function(t, n, r) {
                      if (l) {
                        if (Array.isArray(t)) return l(e(t, t, 0), n, r);
                        l(t, n, r)
                      }
                    }
                  }))
                }
              }(),
              function() {
                function e(e, t, n, r) {
                  return e < Math.abs(t) ? (e = t, r = n / 4) : r = 0 === t && 0 === e ? n / (2 * Math.PI) * Math.asin(1) : n / (2 * Math.PI) * Math.asin(t / e), {
                    a: e,
                    c: t,
                    p: n,
                    s: r
                  }
                }

                function t(e, t, n) {
                  return e.a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * n - e.s) * (2 * Math.PI) / e.p)
                }

                function n(e, t, n, i) {
                  return n - r(i - e, 0, n, i) + t
                }

                function r(e, t, n, r) {
                  return (e /= r) < 1 / 2.75 ? n * (7.5625 * e * e) + t : e < 2 / 2.75 ? n * (7.5625 * (e -= 1.5 / 2.75) * e + .75) + t : e < 2.5 / 2.75 ? n * (7.5625 * (e -= 2.25 / 2.75) * e + .9375) + t : n * (7.5625 * (e -= 2.625 / 2.75) * e +
                    .984375) + t
                }
                v.util.ease = {
                  easeInQuad: function(e, t, n, r) {
                    return n * (e /= r) * e + t
                  },
                  easeOutQuad: function(e, t, n, r) {
                    return -n * (e /= r) * (e - 2) + t
                  },
                  easeInOutQuad: function(e, t, n, r) {
                    return (e /= r / 2) < 1 ? n / 2 * e * e + t : -n / 2 * (--e * (e - 2) - 1) + t
                  },
                  easeInCubic: function(e, t, n, r) {
                    return n * (e /= r) * e * e + t
                  },
                  easeOutCubic: function(e, t, n, r) {
                    return n * ((e = e / r - 1) * e * e + 1) + t
                  },
                  easeInOutCubic: function(e, t, n, r) {
                    return (e /= r / 2) < 1 ? n / 2 * e * e * e + t : n / 2 * ((e -= 2) * e * e + 2) + t
                  },
                  easeInQuart: function(e, t, n, r) {
                    return n * (e /= r) * e * e * e + t
                  },
                  easeOutQuart: function(e, t, n, r) {
                    return -n * ((e = e / r - 1) * e * e * e - 1) + t
                  },
                  easeInOutQuart: function(e, t, n, r) {
                    return (e /= r / 2) < 1 ? n / 2 * e * e * e * e + t : -n / 2 * ((e -= 2) * e * e * e - 2) + t
                  },
                  easeInQuint: function(e, t, n, r) {
                    return n * (e /= r) * e * e * e * e + t
                  },
                  easeOutQuint: function(e, t, n, r) {
                    return n * ((e = e / r - 1) * e * e * e * e + 1) + t
                  },
                  easeInOutQuint: function(e, t, n, r) {
                    return (e /= r / 2) < 1 ? n / 2 * e * e * e * e * e + t : n / 2 * ((e -= 2) * e * e * e * e + 2) + t
                  },
                  easeInSine: function(e, t, n, r) {
                    return -n * Math.cos(e / r * (Math.PI / 2)) + n + t
                  },
                  easeOutSine: function(e, t, n, r) {
                    return n * Math.sin(e / r * (Math.PI / 2)) + t
                  },
                  easeInOutSine: function(e, t, n, r) {
                    return -n / 2 * (Math.cos(Math.PI * e / r) - 1) + t
                  },
                  easeInExpo: function(e, t, n, r) {
                    return 0 === e ? t : n * Math.pow(2, 10 * (e / r - 1)) + t
                  },
                  easeOutExpo: function(e, t, n, r) {
                    return e === r ? t + n : n * (1 - Math.pow(2, -10 * e / r)) + t
                  },
                  easeInOutExpo: function(e, t, n, r) {
                    return 0 === e ? t : e === r ? t + n : (e /= r / 2) < 1 ? n / 2 * Math.pow(2, 10 * (e - 1)) + t : n / 2 * (2 - Math.pow(2, -10 * --e)) + t
                  },
                  easeInCirc: function(e, t, n, r) {
                    return -n * (Math.sqrt(1 - (e /= r) * e) - 1) + t
                  },
                  easeOutCirc: function(e, t, n, r) {
                    return n * Math.sqrt(1 - (e = e / r - 1) * e) + t
                  },
                  easeInOutCirc: function(e, t, n, r) {
                    return (e /= r / 2) < 1 ? -n / 2 * (Math.sqrt(1 - e * e) - 1) + t : n / 2 * (Math.sqrt(1 - (e -= 2) * e) + 1) + t
                  },
                  easeInElastic: function(n, r, i, o) {
                    var a = 0;
                    return 0 === n ? r : 1 === (n /= o) ? r + i : (a || (a = .3 * o), -t(e(i, i, a, 1.70158), n, o) + r)
                  },
                  easeOutElastic: function(t, n, r, i) {
                    var o = 0;
                    if (0 === t) return n;
                    if (1 === (t /= i)) return n + r;
                    o || (o = .3 * i);
                    var a = e(r, r, o, 1.70158);
                    return a.a * Math.pow(2, -10 * t) * Math.sin((t * i - a.s) * (2 * Math.PI) / a.p) + a.c + n
                  },
                  easeInOutElastic: function(n, r, i, o) {
                    var a = 0;
                    if (0 === n) return r;
                    if (2 === (n /= o / 2)) return r + i;
                    a || (a = o * (.3 * 1.5));
                    var s = e(i, i, a, 1.70158);
                    return n < 1 ? -.5 * t(s, n, o) + r : s.a * Math.pow(2, -10 * (n -= 1)) * Math.sin((n * o - s.s) * (2 * Math.PI) / s.p) * .5 + s.c + r
                  },
                  easeInBack: function(e, t, n, r, i) {
                    return void 0 === i && (i = 1.70158), n * (e /= r) * e * ((i + 1) * e - i) + t
                  },
                  easeOutBack: function(e, t, n, r, i) {
                    return void 0 === i && (i = 1.70158), n * ((e = e / r - 1) * e * ((i + 1) * e + i) + 1) + t
                  },
                  easeInOutBack: function(e, t, n, r, i) {
                    return void 0 === i && (i = 1.70158), (e /= r / 2) < 1 ? n / 2 * (e * e * ((1 + (i *= 1.525)) * e - i)) + t : n / 2 * ((e -= 2) * e * ((1 + (i *= 1.525)) * e + i) + 2) + t
                  },
                  easeInBounce: n,
                  easeOutBounce: r,
                  easeInOutBounce: function(e, t, i, o) {
                    return e < o / 2 ? .5 * n(2 * e, 0, i, o) + t : .5 * r(2 * e - o, 0, i, o) + .5 * i + t
                  }
                }
              }(),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.util.object.extend,
                  r = t.util.object.clone,
                  i = t.util.toFixed,
                  o = t.util.parseUnit,
                  a = t.util.multiplyTransformMatrices,
                  s = {
                    cx: "left",
                    x: "left",
                    r: "radius",
                    cy: "top",
                    y: "top",
                    display: "visible",
                    visibility: "visible",
                    transform: "transformMatrix",
                    "fill-opacity": "fillOpacity",
                    "fill-rule": "fillRule",
                    "font-family": "fontFamily",
                    "font-size": "fontSize",
                    "font-style": "fontStyle",
                    "font-weight": "fontWeight",
                    "letter-spacing": "charSpacing",
                    "paint-order": "paintFirst",
                    "stroke-dasharray": "strokeDashArray",
                    "stroke-dashoffset": "strokeDashOffset",
                    "stroke-linecap": "strokeLineCap",
                    "stroke-linejoin": "strokeLineJoin",
                    "stroke-miterlimit": "strokeMiterLimit",
                    "stroke-opacity": "strokeOpacity",
                    "stroke-width": "strokeWidth",
                    "text-decoration": "textDecoration",
                    "text-anchor": "textAnchor",
                    opacity: "opacity",
                    "clip-path": "clipPath",
                    "clip-rule": "clipRule",
                    "vector-effect": "strokeUniform",
                    "image-rendering": "imageSmoothing"
                  },
                  l = {
                    stroke: "strokeOpacity",
                    fill: "fillOpacity"
                  },
                  c = "font-size",
                  u = "clip-path";

                function h(e) {
                  return e in s ? s[e] : e
                }

                function p(e, n, r, i) {
                  var s, l = Array.isArray(n);
                  if ("fill" !== e && "stroke" !== e || "none" !== n) {
                    if ("strokeUniform" === e) return "non-scaling-stroke" === n;
                    if ("strokeDashArray" === e) n = "none" === n ? null : n.replace(/,/g, " ").split(/\s+/).map(parseFloat);
                    else if ("transformMatrix" === e) n = r && r.transformMatrix ? a(r.transformMatrix, t.parseTransformAttribute(n)) : t.parseTransformAttribute(n);
                    else if ("visible" === e) n = "none" !== n && "hidden" !== n, r && !1 === r.visible && (n = !1);
                    else if ("opacity" === e) n = parseFloat(n), r && void 0 !== r.opacity && (n *= r.opacity);
                    else if ("textAnchor" === e) n = "start" === n ? "left" : "end" === n ? "right" : "center";
                    else if ("charSpacing" === e) s = o(n, i) / i * 1e3;
                    else if ("paintFirst" === e) {
                      var c = n.indexOf("fill"),
                        u = n.indexOf("stroke");
                      n = "fill";
                      (c > -1 && u > -1 && u < c || -1 === c && u > -1) && (n = "stroke")
                    } else {
                      if ("href" === e || "xlink:href" === e || "font" === e) return n;
                      if ("imageSmoothing" === e) return "optimizeQuality" === n;
                      s = l ? n.map(o) : o(n, i)
                    }
                  } else n = "";
                  return !l && isNaN(s) ? n : s
                }

                function d(e) {
                  return new RegExp("^(" + e.join("|") + ")\\b", "i")
                }

                function f(e, t) {
                  var n, r, i, o, a = [];
                  for (i = 0, o = t.length; i < o; i++) n = t[i], r = e.getElementsByTagName(n), a = a.concat(Array.prototype.slice.call(r));
                  return a
                }

                function g(e, t) {
                  var n, r = !0;
                  return (n = m(e, t.pop())) && t.length && (r = function(e, t) {
                    var n, r = !0;
                    for (; e.parentNode && 1 === e.parentNode.nodeType && t.length;) r && (n = t.pop()), r = m(e = e.parentNode, n);
                    return 0 === t.length
                  }(e, t)), n && r && 0 === t.length
                }

                function m(e, t) {
                  var n, r, i = e.nodeName,
                    o = e.getAttribute("class"),
                    a = e.getAttribute("id");
                  if (n = new RegExp("^" + i, "i"), t = t.replace(n, ""), a && t.length && (n = new RegExp("#" + a + "(?![a-zA-Z\\-]+)", "i"), t = t.replace(n, "")), o && t.length)
                    for (r = (o = o.split(" ")).length; r--;) n = new RegExp("\\." + o[r] + "(?![a-zA-Z\\-]+)", "i"), t = t.replace(n, "");
                  return 0 === t.length
                }

                function v(e, t) {
                  var n;
                  if (e.getElementById && (n = e.getElementById(t)), n) return n;
                  var r, i, o, a = e.getElementsByTagName("*");
                  for (i = 0, o = a.length; i < o; i++)
                    if (t === (r = a[i]).getAttribute("id")) return r
                }
                t.svgValidTagNamesRegEx = d(["path", "circle", "polygon", "polyline", "ellipse", "rect", "line", "image", "text"]), t.svgViewBoxElementsRegEx = d(["symbol", "image", "marker", "pattern", "view", "svg"]), t
                  .svgInvalidAncestorsRegEx = d(["pattern", "defs", "symbol", "metadata", "clipPath", "mask", "desc"]), t.svgValidParentsRegEx = d(["symbol", "g", "a", "svg", "clipPath", "defs"]), t.cssRules = {}, t.gradientDefs = {}, t
                  .clipPaths = {}, t.parseTransformAttribute = function() {
                    function e(e, n, r) {
                      e[r] = Math.tan(t.util.degreesToRadians(n[0]))
                    }
                    var n = t.iMatrix,
                      r = t.reNum,
                      i = t.commaWsp,
                      o = "(?:" + ("(?:(matrix)\\s*\\(\\s*(" + r + ")" + i + "(" + r + ")" + i + "(" + r + ")" + i + "(" + r + ")" + i + "(" + r + ")" + i + "(" + r + ")\\s*\\))") + "|" + ("(?:(translate)\\s*\\(\\s*(" + r + ")(?:" + i + "(" + r +
                        "))?\\s*\\))") + "|" + ("(?:(scale)\\s*\\(\\s*(" + r + ")(?:" + i + "(" + r + "))?\\s*\\))") + "|" + ("(?:(rotate)\\s*\\(\\s*(" + r + ")(?:" + i + "(" + r + ")" + i + "(" + r + "))?\\s*\\))") + "|" + (
                        "(?:(skewX)\\s*\\(\\s*(" + r + ")\\s*\\))") + "|" + ("(?:(skewY)\\s*\\(\\s*(" + r + ")\\s*\\))") + ")",
                      a = new RegExp("^\\s*(?:" + ("(?:" + o + "(?:" + i + "*" + o + ")*)") + "?)\\s*$"),
                      s = new RegExp(o, "g");
                    return function(r) {
                      var i = n.concat(),
                        l = [];
                      if (!r || r && !a.test(r)) return i;
                      r.replace(s, (function(r) {
                        var a = new RegExp(o).exec(r).filter((function(e) {
                            return !!e
                          })),
                          s = a[1],
                          c = a.slice(2).map(parseFloat);
                        switch (s) {
                          case "translate":
                            ! function(e, t) {
                              e[4] = t[0], 2 === t.length && (e[5] = t[1])
                            }(i, c);
                            break;
                          case "rotate":
                            c[0] = t.util.degreesToRadians(c[0]),
                              function(e, n) {
                                var r = t.util.cos(n[0]),
                                  i = t.util.sin(n[0]),
                                  o = 0,
                                  a = 0;
                                3 === n.length && (o = n[1], a = n[2]), e[0] = r, e[1] = i, e[2] = -i, e[3] = r, e[4] = o - (r * o - i * a), e[5] = a - (i * o + r * a)
                              }(i, c);
                            break;
                          case "scale":
                            ! function(e, t) {
                              var n = t[0],
                                r = 2 === t.length ? t[1] : t[0];
                              e[0] = n, e[3] = r
                            }(i, c);
                            break;
                          case "skewX":
                            e(i, c, 2);
                            break;
                          case "skewY":
                            e(i, c, 1);
                            break;
                          case "matrix":
                            i = c
                        }
                        l.push(i.concat()), i = n.concat()
                      }));
                      for (var c = l[0]; l.length > 1;) l.shift(), c = t.util.multiplyTransformMatrices(c, l[0]);
                      return c
                    }
                  }();
                var _ = new RegExp("^\\s*(" + t.reNum + "+)\\s*,?\\s*(" + t.reNum + "+)\\s*,?\\s*(" + t.reNum + "+)\\s*,?\\s*(" + t.reNum + "+)\\s*$");

                function b(e) {
                  if (!t.svgViewBoxElementsRegEx.test(e.nodeName)) return {};
                  var n, r, i, a, s, l, c = e.getAttribute("viewBox"),
                    u = 1,
                    h = 1,
                    p = e.getAttribute("width"),
                    d = e.getAttribute("height"),
                    f = e.getAttribute("x") || 0,
                    g = e.getAttribute("y") || 0,
                    m = e.getAttribute("preserveAspectRatio") || "",
                    v = !c || !(c = c.match(_)),
                    b = !p || !d || "100%" === p || "100%" === d,
                    y = v && b,
                    w = {},
                    x = "",
                    k = 0,
                    C = 0;
                  if (w.width = 0, w.height = 0, w.toBeParsed = y, v && (f || g) && e.parentNode && "#document" !== e.parentNode.nodeName && (x = " translate(" + o(f) + " " + o(g) + ") ", s = (e.getAttribute("transform") || "") + x, e
                      .setAttribute("transform", s), e.removeAttribute("x"), e.removeAttribute("y")), y) return w;
                  if (v) return w.width = o(p), w.height = o(d), w;
                  if (n = -parseFloat(c[1]), r = -parseFloat(c[2]), i = parseFloat(c[3]), a = parseFloat(c[4]), w.minX = n, w.minY = r, w.viewBoxWidth = i, w.viewBoxHeight = a, b ? (w.width = i, w.height = a) : (w.width = o(p), w.height = o(d),
                      u = w.width / i, h = w.height / a), "none" !== (m = t.util.parsePreserveAspectRatioAttribute(m)).alignX && ("meet" === m.meetOrSlice && (h = u = u > h ? h : u), "slice" === m.meetOrSlice && (h = u = u > h ? u : h), k = w
                      .width - i * u, C = w.height - a * u, "Mid" === m.alignX && (k /= 2), "Mid" === m.alignY && (C /= 2), "Min" === m.alignX && (k = 0), "Min" === m.alignY && (C = 0)), 1 === u && 1 === h && 0 === n && 0 === r && 0 === f &&
                    0 === g) return w;
                  if ((f || g) && "#document" !== e.parentNode.nodeName && (x = " translate(" + o(f) + " " + o(g) + ") "), s = x + " matrix(" + u + " 0 0 " + h + " " + (n * u + k) + " " + (r * h + C) + ") ", "svg" === e.nodeName) {
                    for (l = e.ownerDocument.createElementNS(t.svgNS, "g"); e.firstChild;) l.appendChild(e.firstChild);
                    e.appendChild(l)
                  } else(l = e).removeAttribute("x"), l.removeAttribute("y"), s = l.getAttribute("transform") + s;
                  return l.setAttribute("transform", s), w
                }

                function y(e, t) {
                  var n = "xlink:href",
                    r = v(e, t.getAttribute(n).slice(1));
                  if (r && r.getAttribute(n) && y(e, r), ["gradientTransform", "x1", "x2", "y1", "y2", "gradientUnits", "cx", "cy", "r", "fx", "fy"].forEach((function(e) {
                      r && !t.hasAttribute(e) && r.hasAttribute(e) && t.setAttribute(e, r.getAttribute(e))
                    })), !t.children.length)
                    for (var i = r.cloneNode(!0); i.firstChild;) t.appendChild(i.firstChild);
                  t.removeAttribute(n)
                }
                t.parseSVGDocument = function(e, n, i, o) {
                  if (e) {
                    ! function(e) {
                      for (var n = f(e, ["use", "svg:use"]), r = 0; n.length && r < n.length;) {
                        var i = n[r],
                          o = i.getAttribute("xlink:href") || i.getAttribute("href");
                        if (null === o) return;
                        var a, s, l, c, u = o.slice(1),
                          h = i.getAttribute("x") || 0,
                          p = i.getAttribute("y") || 0,
                          d = v(e, u).cloneNode(!0),
                          g = (d.getAttribute("transform") || "") + " translate(" + h + ", " + p + ")",
                          m = n.length,
                          _ = t.svgNS;
                        if (b(d), /^svg$/i.test(d.nodeName)) {
                          var y = d.ownerDocument.createElementNS(_, "g");
                          for (s = 0, c = (l = d.attributes).length; s < c; s++) a = l.item(s), y.setAttributeNS(_, a.nodeName, a.nodeValue);
                          for (; d.firstChild;) y.appendChild(d.firstChild);
                          d = y
                        }
                        for (s = 0, c = (l = i.attributes).length; s < c; s++) "x" !== (a = l.item(s)).nodeName && "y" !== a.nodeName && "xlink:href" !== a.nodeName && "href" !== a.nodeName && ("transform" === a.nodeName ? g = a.nodeValue +
                          " " + g : d.setAttribute(a.nodeName, a.nodeValue));
                        d.setAttribute("transform", g), d.setAttribute("instantiated_by_use", "1"), d.removeAttribute("id"), i.parentNode.replaceChild(d, i), n.length === m && r++
                      }
                    }(e);
                    var a, s, l = t.Object.__uid++,
                      c = b(e),
                      u = t.util.toArray(e.getElementsByTagName("*"));
                    if (c.crossOrigin = o && o.crossOrigin, c.svgUid = l, 0 === u.length && t.isLikelyNode) {
                      var h = [];
                      for (a = 0, s = (u = e.selectNodes('//*[name(.)!="svg"]')).length; a < s; a++) h[a] = u[a];
                      u = h
                    }
                    var p = u.filter((function(e) {
                      return b(e), t.svgValidTagNamesRegEx.test(e.nodeName.replace("svg:", "")) && ! function(e, t) {
                        for (; e && (e = e.parentNode);)
                          if (e.nodeName && t.test(e.nodeName.replace("svg:", "")) && !e.getAttribute("instantiated_by_use")) return !0;
                        return !1
                      }(e, t.svgInvalidAncestorsRegEx)
                    }));
                    if (!p || p && !p.length) n && n([], {});
                    else {
                      var d = {};
                      u.filter((function(e) {
                        return "clipPath" === e.nodeName.replace("svg:", "")
                      })).forEach((function(e) {
                        var n = e.getAttribute("id");
                        d[n] = t.util.toArray(e.getElementsByTagName("*")).filter((function(e) {
                          return t.svgValidTagNamesRegEx.test(e.nodeName.replace("svg:", ""))
                        }))
                      })), t.gradientDefs[l] = t.getGradientDefs(e), t.cssRules[l] = t.getCSSRules(e), t.clipPaths[l] = d, t.parseElements(p, (function(e, r) {
                        n && (n(e, c, r, u), delete t.gradientDefs[l], delete t.cssRules[l], delete t.clipPaths[l])
                      }), r(c), i, o)
                    }
                  }
                };
                var w = new RegExp("(normal|italic)?\\s*(normal|small-caps)?\\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*(" + t.reNum + "(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|" + t.reNum + "))?\\s+(.*)");
                n(t, {
                  parseFontDeclaration: function(e, t) {
                    var n = e.match(w);
                    if (n) {
                      var r = n[1],
                        i = n[3],
                        a = n[4],
                        s = n[5],
                        l = n[6];
                      r && (t.fontStyle = r), i && (t.fontWeight = isNaN(parseFloat(i)) ? i : parseFloat(i)), a && (t.fontSize = o(a)), l && (t.fontFamily = l), s && (t.lineHeight = "normal" === s ? 1 : s)
                    }
                  },
                  getGradientDefs: function(e) {
                    var t, n = f(e, ["linearGradient", "radialGradient", "svg:linearGradient", "svg:radialGradient"]),
                      r = 0,
                      i = {};
                    for (r = n.length; r--;)(t = n[r]).getAttribute("xlink:href") && y(e, t), i[t.getAttribute("id")] = t;
                    return i
                  },
                  parseAttributes: function(e, r, a) {
                    if (e) {
                      var s, d, f, m = {};
                      void 0 === a && (a = e.getAttribute("svgUid")), e.parentNode && t.svgValidParentsRegEx.test(e.parentNode.nodeName) && (m = t.parseAttributes(e.parentNode, r, a));
                      var v = r.reduce((function(t, n) {
                          return (s = e.getAttribute(n)) && (t[n] = s), t
                        }), {}),
                        _ = n(function(e, n) {
                          var r = {};
                          for (var i in t.cssRules[n])
                            if (g(e, i.split(" ")))
                              for (var o in t.cssRules[n][i]) r[o] = t.cssRules[n][i][o];
                          return r
                        }(e, a), t.parseStyleAttribute(e));
                      v = n(v, _), _[u] && e.setAttribute(u, _[u]), d = f = m.fontSize || t.Text.DEFAULT_SVG_FONT_SIZE, v[c] && (v[c] = d = o(v[c], f));
                      var b, y, w = {};
                      for (var x in v) y = p(b = h(x), v[x], m, d), w[b] = y;
                      w && w.font && t.parseFontDeclaration(w.font, w);
                      var k = n(m, w);
                      return t.svgValidParentsRegEx.test(e.nodeName) ? k : function(e) {
                        for (var n in l)
                          if (void 0 !== e[l[n]] && "" !== e[n]) {
                            if (void 0 === e[n]) {
                              if (!t.Object.prototype[n]) continue;
                              e[n] = t.Object.prototype[n]
                            }
                            if (0 !== e[n].indexOf("url(")) {
                              var r = new t.Color(e[n]);
                              e[n] = r.setAlpha(i(r.getAlpha() * e[l[n]], 2)).toRgba()
                            }
                          } return e
                      }(k)
                    }
                  },
                  parseElements: function(e, n, r, i, o) {
                    new t.ElementsParser(e, n, r, i, o).parse()
                  },
                  parseStyleAttribute: function(e) {
                    var t = {},
                      n = e.getAttribute("style");
                    return n ? ("string" == typeof n ? function(e, t) {
                      var n, r;
                      e.replace(/;\s*$/, "").split(";").forEach((function(e) {
                        var i = e.split(":");
                        n = i[0].trim().toLowerCase(), r = i[1].trim(), t[n] = r
                      }))
                    }(n, t) : function(e, t) {
                      var n, r;
                      for (var i in e) void 0 !== e[i] && (n = i.toLowerCase(), r = e[i], t[n] = r)
                    }(n, t), t) : t
                  },
                  parsePointsAttribute: function(e) {
                    if (!e) return null;
                    var t, n, r = [];
                    for (t = 0, n = (e = (e = e.replace(/,/g, " ").trim()).split(/\s+/)).length; t < n; t += 2) r.push({
                      x: parseFloat(e[t]),
                      y: parseFloat(e[t + 1])
                    });
                    return r
                  },
                  getCSSRules: function(e) {
                    var n, r, i = e.getElementsByTagName("style"),
                      o = {};
                    for (n = 0, r = i.length; n < r; n++) {
                      var a = i[n].textContent;
                      "" !== (a = a.replace(/\/\*[\s\S]*?\*\//g, "")).trim() && a.split("}").filter((function(e) {
                        return e.trim()
                      })).forEach((function(e) {
                        var i = e.split("{"),
                          a = {},
                          s = i[1].trim().split(";").filter((function(e) {
                            return e.trim()
                          }));
                        for (n = 0, r = s.length; n < r; n++) {
                          var l = s[n].split(":"),
                            c = l[0].trim(),
                            u = l[1].trim();
                          a[c] = u
                        }(e = i[0].trim()).split(",").forEach((function(e) {
                          "" !== (e = e.replace(/^svg/i, "").trim()) && (o[e] ? t.util.object.extend(o[e], a) : o[e] = t.util.object.clone(a))
                        }))
                      }))
                    }
                    return o
                  },
                  loadSVGFromURL: function(e, n, r, i) {
                    e = e.replace(/^\n\s*/, "").trim(), new t.util.request(e, {
                      method: "get",
                      onComplete: function(e) {
                        var o = e.responseXML;
                        if (!o || !o.documentElement) return n && n(null), !1;
                        t.parseSVGDocument(o.documentElement, (function(e, t, r, i) {
                          n && n(e, t, r, i)
                        }), r, i)
                      }
                    })
                  },
                  loadSVGFromString: function(e, n, r, i) {
                    var o = (new t.window.DOMParser).parseFromString(e.trim(), "text/xml");
                    t.parseSVGDocument(o.documentElement, (function(e, t, r, i) {
                      n(e, t, r, i)
                    }), r, i)
                  }
                })
              }(e), v.ElementsParser = function(e, t, n, r, i, o) {
                this.elements = e, this.callback = t, this.options = n, this.reviver = r, this.svgUid = n && n.svgUid || 0, this.parsingOptions = i, this.regexUrl = /^url\(['"]?#([^'"]+)['"]?\)/g, this.doc = o
              }, (h = v.ElementsParser.prototype).parse = function() {
                this.instances = new Array(this.elements.length), this.numElements = this.elements.length, this.createObjects()
              }, h.createObjects = function() {
                var e = this;
                this.elements.forEach((function(t, n) {
                  t.setAttribute("svgUid", e.svgUid), e.createObject(t, n)
                }))
              }, h.findTag = function(e) {
                return v[v.util.string.capitalize(e.tagName.replace("svg:", ""))]
              }, h.createObject = function(e, t) {
                var n = this.findTag(e);
                if (n && n.fromElement) try {
                  n.fromElement(e, this.createCallback(t, e), this.options)
                } catch (e) {
                  v.log(e)
                } else this.checkIfDone()
              }, h.createCallback = function(e, t) {
                var n = this;
                return function(r) {
                  var i;
                  n.resolveGradient(r, t, "fill"), n.resolveGradient(r, t, "stroke"), r instanceof v.Image && r._originalElement && (i = r.parsePreserveAspectRatioAttribute(t)), r._removeTransformMatrix(i), n.resolveClipPath(r, t), n.reviver &&
                    n.reviver(t, r), n.instances[e] = r, n.checkIfDone()
                }
              }, h.extractPropertyDefinition = function(e, t, n) {
                var r = e[t],
                  i = this.regexUrl;
                if (i.test(r)) {
                  i.lastIndex = 0;
                  var o = i.exec(r)[1];
                  return i.lastIndex = 0, v[n][this.svgUid][o]
                }
              }, h.resolveGradient = function(e, t, n) {
                var r = this.extractPropertyDefinition(e, n, "gradientDefs");
                if (r) {
                  var i = t.getAttribute(n + "-opacity"),
                    o = v.Gradient.fromElement(r, e, i, this.options);
                  e.set(n, o)
                }
              }, h.createClipPathCallback = function(e, t) {
                return function(e) {
                  e._removeTransformMatrix(), e.fillRule = e.clipRule, t.push(e)
                }
              }, h.resolveClipPath = function(e, t) {
                var n, r, i, o, a = this.extractPropertyDefinition(e, "clipPath", "clipPaths");
                if (a) {
                  i = [], r = v.util.invertTransform(e.calcTransformMatrix());
                  for (var s = a[0].parentNode, l = t; l.parentNode && l.getAttribute("clip-path") !== e.clipPath;) l = l.parentNode;
                  l.parentNode.appendChild(s);
                  for (var c = 0; c < a.length; c++) n = a[c], this.findTag(n).fromElement(n, this.createClipPathCallback(e, i), this.options);
                  a = 1 === i.length ? i[0] : new v.Group(i), o = v.util.multiplyTransformMatrices(r, a.calcTransformMatrix()), a.clipPath && this.resolveClipPath(a, l);
                  var u = v.util.qrDecompose(o);
                  a.flipX = !1, a.flipY = !1, a.set("scaleX", u.scaleX), a.set("scaleY", u.scaleY), a.angle = u.angle, a.skewX = u.skewX, a.skewY = 0, a.setPositionByOrigin({
                    x: u.translateX,
                    y: u.translateY
                  }, "center", "center"), e.clipPath = a
                } else delete e.clipPath
              }, h.checkIfDone = function() {
                0 == --this.numElements && (this.instances = this.instances.filter((function(e) {
                  return null != e
                })), this.callback(this.instances, this.elements))
              },
              function(e) {
                var t = e.fabric || (e.fabric = {});

                function n(e, t) {
                  this.x = e, this.y = t
                }
                t.Point ? t.warn("fabric.Point is already defined") : (t.Point = n, n.prototype = {
                  type: "point",
                  constructor: n,
                  add: function(e) {
                    return new n(this.x + e.x, this.y + e.y)
                  },
                  addEquals: function(e) {
                    return this.x += e.x, this.y += e.y, this
                  },
                  scalarAdd: function(e) {
                    return new n(this.x + e, this.y + e)
                  },
                  scalarAddEquals: function(e) {
                    return this.x += e, this.y += e, this
                  },
                  subtract: function(e) {
                    return new n(this.x - e.x, this.y - e.y)
                  },
                  subtractEquals: function(e) {
                    return this.x -= e.x, this.y -= e.y, this
                  },
                  scalarSubtract: function(e) {
                    return new n(this.x - e, this.y - e)
                  },
                  scalarSubtractEquals: function(e) {
                    return this.x -= e, this.y -= e, this
                  },
                  multiply: function(e) {
                    return new n(this.x * e, this.y * e)
                  },
                  multiplyEquals: function(e) {
                    return this.x *= e, this.y *= e, this
                  },
                  divide: function(e) {
                    return new n(this.x / e, this.y / e)
                  },
                  divideEquals: function(e) {
                    return this.x /= e, this.y /= e, this
                  },
                  eq: function(e) {
                    return this.x === e.x && this.y === e.y
                  },
                  lt: function(e) {
                    return this.x < e.x && this.y < e.y
                  },
                  lte: function(e) {
                    return this.x <= e.x && this.y <= e.y
                  },
                  gt: function(e) {
                    return this.x > e.x && this.y > e.y
                  },
                  gte: function(e) {
                    return this.x >= e.x && this.y >= e.y
                  },
                  lerp: function(e, t) {
                    return void 0 === t && (t = .5), t = Math.max(Math.min(1, t), 0), new n(this.x + (e.x - this.x) * t, this.y + (e.y - this.y) * t)
                  },
                  distanceFrom: function(e) {
                    var t = this.x - e.x,
                      n = this.y - e.y;
                    return Math.sqrt(t * t + n * n)
                  },
                  midPointFrom: function(e) {
                    return this.lerp(e)
                  },
                  min: function(e) {
                    return new n(Math.min(this.x, e.x), Math.min(this.y, e.y))
                  },
                  max: function(e) {
                    return new n(Math.max(this.x, e.x), Math.max(this.y, e.y))
                  },
                  toString: function() {
                    return this.x + "," + this.y
                  },
                  setXY: function(e, t) {
                    return this.x = e, this.y = t, this
                  },
                  setX: function(e) {
                    return this.x = e, this
                  },
                  setY: function(e) {
                    return this.y = e, this
                  },
                  setFromPoint: function(e) {
                    return this.x = e.x, this.y = e.y, this
                  },
                  swap: function(e) {
                    var t = this.x,
                      n = this.y;
                    this.x = e.x, this.y = e.y, e.x = t, e.y = n
                  },
                  clone: function() {
                    return new n(this.x, this.y)
                  }
                })
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {});

                function n(e) {
                  this.status = e, this.points = []
                }
                t.Intersection ? t.warn("fabric.Intersection is already defined") : (t.Intersection = n, t.Intersection.prototype = {
                  constructor: n,
                  appendPoint: function(e) {
                    return this.points.push(e), this
                  },
                  appendPoints: function(e) {
                    return this.points = this.points.concat(e), this
                  }
                }, t.Intersection.intersectLineLine = function(e, r, i, o) {
                  var a, s = (o.x - i.x) * (e.y - i.y) - (o.y - i.y) * (e.x - i.x),
                    l = (r.x - e.x) * (e.y - i.y) - (r.y - e.y) * (e.x - i.x),
                    c = (o.y - i.y) * (r.x - e.x) - (o.x - i.x) * (r.y - e.y);
                  if (0 !== c) {
                    var u = s / c,
                      h = l / c;
                    0 <= u && u <= 1 && 0 <= h && h <= 1 ? (a = new n("Intersection")).appendPoint(new t.Point(e.x + u * (r.x - e.x), e.y + u * (r.y - e.y))) : a = new n
                  } else a = new n(0 === s || 0 === l ? "Coincident" : "Parallel");
                  return a
                }, t.Intersection.intersectLinePolygon = function(e, t, r) {
                  var i, o, a, s, l = new n,
                    c = r.length;
                  for (s = 0; s < c; s++) i = r[s], o = r[(s + 1) % c], a = n.intersectLineLine(e, t, i, o), l.appendPoints(a.points);
                  return l.points.length > 0 && (l.status = "Intersection"), l
                }, t.Intersection.intersectPolygonPolygon = function(e, t) {
                  var r, i = new n,
                    o = e.length;
                  for (r = 0; r < o; r++) {
                    var a = e[r],
                      s = e[(r + 1) % o],
                      l = n.intersectLinePolygon(a, s, t);
                    i.appendPoints(l.points)
                  }
                  return i.points.length > 0 && (i.status = "Intersection"), i
                }, t.Intersection.intersectPolygonRectangle = function(e, r, i) {
                  var o = r.min(i),
                    a = r.max(i),
                    s = new t.Point(a.x, o.y),
                    l = new t.Point(o.x, a.y),
                    c = n.intersectLinePolygon(o, s, e),
                    u = n.intersectLinePolygon(s, a, e),
                    h = n.intersectLinePolygon(a, l, e),
                    p = n.intersectLinePolygon(l, o, e),
                    d = new n;
                  return d.appendPoints(c.points), d.appendPoints(u.points), d.appendPoints(h.points), d.appendPoints(p.points), d.points.length > 0 && (d.status = "Intersection"), d
                })
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {});

                function n(e) {
                  e ? this._tryParsingColor(e) : this.setSource([0, 0, 0, 1])
                }

                function r(e, t, n) {
                  return n < 0 && (n += 1), n > 1 && (n -= 1), n < 1 / 6 ? e + 6 * (t - e) * n : n < .5 ? t : n < 2 / 3 ? e + (t - e) * (2 / 3 - n) * 6 : e
                }
                t.Color ? t.warn("fabric.Color is already defined.") : (t.Color = n, t.Color.prototype = {
                    _tryParsingColor: function(e) {
                      var t;
                      e in n.colorNameMap && (e = n.colorNameMap[e]), "transparent" === e && (t = [255, 255, 255, 0]), t || (t = n.sourceFromHex(e)), t || (t = n.sourceFromRgb(e)), t || (t = n.sourceFromHsl(e)), t || (t = [0, 0, 0, 1]), t &&
                        this.setSource(t)
                    },
                    _rgbToHsl: function(e, n, r) {
                      e /= 255, n /= 255, r /= 255;
                      var i, o, a, s = t.util.array.max([e, n, r]),
                        l = t.util.array.min([e, n, r]);
                      if (a = (s + l) / 2, s === l) i = o = 0;
                      else {
                        var c = s - l;
                        switch (o = a > .5 ? c / (2 - s - l) : c / (s + l), s) {
                          case e:
                            i = (n - r) / c + (n < r ? 6 : 0);
                            break;
                          case n:
                            i = (r - e) / c + 2;
                            break;
                          case r:
                            i = (e - n) / c + 4
                        }
                        i /= 6
                      }
                      return [Math.round(360 * i), Math.round(100 * o), Math.round(100 * a)]
                    },
                    getSource: function() {
                      return this._source
                    },
                    setSource: function(e) {
                      this._source = e
                    },
                    toRgb: function() {
                      var e = this.getSource();
                      return "rgb(" + e[0] + "," + e[1] + "," + e[2] + ")"
                    },
                    toRgba: function() {
                      var e = this.getSource();
                      return "rgba(" + e[0] + "," + e[1] + "," + e[2] + "," + e[3] + ")"
                    },
                    toHsl: function() {
                      var e = this.getSource(),
                        t = this._rgbToHsl(e[0], e[1], e[2]);
                      return "hsl(" + t[0] + "," + t[1] + "%," + t[2] + "%)"
                    },
                    toHsla: function() {
                      var e = this.getSource(),
                        t = this._rgbToHsl(e[0], e[1], e[2]);
                      return "hsla(" + t[0] + "," + t[1] + "%," + t[2] + "%," + e[3] + ")"
                    },
                    toHex: function() {
                      var e, t, n, r = this.getSource();
                      return e = 1 === (e = r[0].toString(16)).length ? "0" + e : e, t = 1 === (t = r[1].toString(16)).length ? "0" + t : t, n = 1 === (n = r[2].toString(16)).length ? "0" + n : n, e.toUpperCase() + t.toUpperCase() + n
                        .toUpperCase()
                    },
                    toHexa: function() {
                      var e, t = this.getSource();
                      return e = 1 === (e = (e = Math.round(255 * t[3])).toString(16)).length ? "0" + e : e, this.toHex() + e.toUpperCase()
                    },
                    getAlpha: function() {
                      return this.getSource()[3]
                    },
                    setAlpha: function(e) {
                      var t = this.getSource();
                      return t[3] = e, this.setSource(t), this
                    },
                    toGrayscale: function() {
                      var e = this.getSource(),
                        t = parseInt((.3 * e[0] + .59 * e[1] + .11 * e[2]).toFixed(0), 10),
                        n = e[3];
                      return this.setSource([t, t, t, n]), this
                    },
                    toBlackWhite: function(e) {
                      var t = this.getSource(),
                        n = (.3 * t[0] + .59 * t[1] + .11 * t[2]).toFixed(0),
                        r = t[3];
                      return e = e || 127, n = Number(n) < Number(e) ? 0 : 255, this.setSource([n, n, n, r]), this
                    },
                    overlayWith: function(e) {
                      e instanceof n || (e = new n(e));
                      var t, r = [],
                        i = this.getAlpha(),
                        o = this.getSource(),
                        a = e.getSource();
                      for (t = 0; t < 3; t++) r.push(Math.round(.5 * o[t] + .5 * a[t]));
                      return r[3] = i, this.setSource(r), this
                    }
                  }, t.Color.reRGBa = /^rgba?\(\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*(?:\s*,\s*((?:\d*\.?\d+)?)\s*)?\)$/i, t.Color.reHSLa =
                  /^hsla?\(\s*(\d{1,3})\s*,\s*(\d{1,3}\%)\s*,\s*(\d{1,3}\%)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/i, t.Color.reHex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i, t.Color.colorNameMap = {
                    aliceblue: "#F0F8FF",
                    antiquewhite: "#FAEBD7",
                    aqua: "#00FFFF",
                    aquamarine: "#7FFFD4",
                    azure: "#F0FFFF",
                    beige: "#F5F5DC",
                    bisque: "#FFE4C4",
                    black: "#000000",
                    blanchedalmond: "#FFEBCD",
                    blue: "#0000FF",
                    blueviolet: "#8A2BE2",
                    brown: "#A52A2A",
                    burlywood: "#DEB887",
                    cadetblue: "#5F9EA0",
                    chartreuse: "#7FFF00",
                    chocolate: "#D2691E",
                    coral: "#FF7F50",
                    cornflowerblue: "#6495ED",
                    cornsilk: "#FFF8DC",
                    crimson: "#DC143C",
                    cyan: "#00FFFF",
                    darkblue: "#00008B",
                    darkcyan: "#008B8B",
                    darkgoldenrod: "#B8860B",
                    darkgray: "#A9A9A9",
                    darkgrey: "#A9A9A9",
                    darkgreen: "#006400",
                    darkkhaki: "#BDB76B",
                    darkmagenta: "#8B008B",
                    darkolivegreen: "#556B2F",
                    darkorange: "#FF8C00",
                    darkorchid: "#9932CC",
                    darkred: "#8B0000",
                    darksalmon: "#E9967A",
                    darkseagreen: "#8FBC8F",
                    darkslateblue: "#483D8B",
                    darkslategray: "#2F4F4F",
                    darkslategrey: "#2F4F4F",
                    darkturquoise: "#00CED1",
                    darkviolet: "#9400D3",
                    deeppink: "#FF1493",
                    deepskyblue: "#00BFFF",
                    dimgray: "#696969",
                    dimgrey: "#696969",
                    dodgerblue: "#1E90FF",
                    firebrick: "#B22222",
                    floralwhite: "#FFFAF0",
                    forestgreen: "#228B22",
                    fuchsia: "#FF00FF",
                    gainsboro: "#DCDCDC",
                    ghostwhite: "#F8F8FF",
                    gold: "#FFD700",
                    goldenrod: "#DAA520",
                    gray: "#808080",
                    grey: "#808080",
                    green: "#008000",
                    greenyellow: "#ADFF2F",
                    honeydew: "#F0FFF0",
                    hotpink: "#FF69B4",
                    indianred: "#CD5C5C",
                    indigo: "#4B0082",
                    ivory: "#FFFFF0",
                    khaki: "#F0E68C",
                    lavender: "#E6E6FA",
                    lavenderblush: "#FFF0F5",
                    lawngreen: "#7CFC00",
                    lemonchiffon: "#FFFACD",
                    lightblue: "#ADD8E6",
                    lightcoral: "#F08080",
                    lightcyan: "#E0FFFF",
                    lightgoldenrodyellow: "#FAFAD2",
                    lightgray: "#D3D3D3",
                    lightgrey: "#D3D3D3",
                    lightgreen: "#90EE90",
                    lightpink: "#FFB6C1",
                    lightsalmon: "#FFA07A",
                    lightseagreen: "#20B2AA",
                    lightskyblue: "#87CEFA",
                    lightslategray: "#778899",
                    lightslategrey: "#778899",
                    lightsteelblue: "#B0C4DE",
                    lightyellow: "#FFFFE0",
                    lime: "#00FF00",
                    limegreen: "#32CD32",
                    linen: "#FAF0E6",
                    magenta: "#FF00FF",
                    maroon: "#800000",
                    mediumaquamarine: "#66CDAA",
                    mediumblue: "#0000CD",
                    mediumorchid: "#BA55D3",
                    mediumpurple: "#9370DB",
                    mediumseagreen: "#3CB371",
                    mediumslateblue: "#7B68EE",
                    mediumspringgreen: "#00FA9A",
                    mediumturquoise: "#48D1CC",
                    mediumvioletred: "#C71585",
                    midnightblue: "#191970",
                    mintcream: "#F5FFFA",
                    mistyrose: "#FFE4E1",
                    moccasin: "#FFE4B5",
                    navajowhite: "#FFDEAD",
                    navy: "#000080",
                    oldlace: "#FDF5E6",
                    olive: "#808000",
                    olivedrab: "#6B8E23",
                    orange: "#FFA500",
                    orangered: "#FF4500",
                    orchid: "#DA70D6",
                    palegoldenrod: "#EEE8AA",
                    palegreen: "#98FB98",
                    paleturquoise: "#AFEEEE",
                    palevioletred: "#DB7093",
                    papayawhip: "#FFEFD5",
                    peachpuff: "#FFDAB9",
                    peru: "#CD853F",
                    pink: "#FFC0CB",
                    plum: "#DDA0DD",
                    powderblue: "#B0E0E6",
                    purple: "#800080",
                    rebeccapurple: "#663399",
                    red: "#FF0000",
                    rosybrown: "#BC8F8F",
                    royalblue: "#4169E1",
                    saddlebrown: "#8B4513",
                    salmon: "#FA8072",
                    sandybrown: "#F4A460",
                    seagreen: "#2E8B57",
                    seashell: "#FFF5EE",
                    sienna: "#A0522D",
                    silver: "#C0C0C0",
                    skyblue: "#87CEEB",
                    slateblue: "#6A5ACD",
                    slategray: "#708090",
                    slategrey: "#708090",
                    snow: "#FFFAFA",
                    springgreen: "#00FF7F",
                    steelblue: "#4682B4",
                    tan: "#D2B48C",
                    teal: "#008080",
                    thistle: "#D8BFD8",
                    tomato: "#FF6347",
                    turquoise: "#40E0D0",
                    violet: "#EE82EE",
                    wheat: "#F5DEB3",
                    white: "#FFFFFF",
                    whitesmoke: "#F5F5F5",
                    yellow: "#FFFF00",
                    yellowgreen: "#9ACD32"
                  }, t.Color.fromRgb = function(e) {
                    return n.fromSource(n.sourceFromRgb(e))
                  }, t.Color.sourceFromRgb = function(e) {
                    var t = e.match(n.reRGBa);
                    if (t) {
                      var r = parseInt(t[1], 10) / (/%$/.test(t[1]) ? 100 : 1) * (/%$/.test(t[1]) ? 255 : 1),
                        i = parseInt(t[2], 10) / (/%$/.test(t[2]) ? 100 : 1) * (/%$/.test(t[2]) ? 255 : 1),
                        o = parseInt(t[3], 10) / (/%$/.test(t[3]) ? 100 : 1) * (/%$/.test(t[3]) ? 255 : 1);
                      return [parseInt(r, 10), parseInt(i, 10), parseInt(o, 10), t[4] ? parseFloat(t[4]) : 1]
                    }
                  }, t.Color.fromRgba = n.fromRgb, t.Color.fromHsl = function(e) {
                    return n.fromSource(n.sourceFromHsl(e))
                  }, t.Color.sourceFromHsl = function(e) {
                    var t = e.match(n.reHSLa);
                    if (t) {
                      var i, o, a, s = (parseFloat(t[1]) % 360 + 360) % 360 / 360,
                        l = parseFloat(t[2]) / (/%$/.test(t[2]) ? 100 : 1),
                        c = parseFloat(t[3]) / (/%$/.test(t[3]) ? 100 : 1);
                      if (0 === l) i = o = a = c;
                      else {
                        var u = c <= .5 ? c * (l + 1) : c + l - c * l,
                          h = 2 * c - u;
                        i = r(h, u, s + 1 / 3), o = r(h, u, s), a = r(h, u, s - 1 / 3)
                      }
                      return [Math.round(255 * i), Math.round(255 * o), Math.round(255 * a), t[4] ? parseFloat(t[4]) : 1]
                    }
                  }, t.Color.fromHsla = n.fromHsl, t.Color.fromHex = function(e) {
                    return n.fromSource(n.sourceFromHex(e))
                  }, t.Color.sourceFromHex = function(e) {
                    if (e.match(n.reHex)) {
                      var t = e.slice(e.indexOf("#") + 1),
                        r = 3 === t.length || 4 === t.length,
                        i = 8 === t.length || 4 === t.length,
                        o = r ? t.charAt(0) + t.charAt(0) : t.substring(0, 2),
                        a = r ? t.charAt(1) + t.charAt(1) : t.substring(2, 4),
                        s = r ? t.charAt(2) + t.charAt(2) : t.substring(4, 6),
                        l = i ? r ? t.charAt(3) + t.charAt(3) : t.substring(6, 8) : "FF";
                      return [parseInt(o, 16), parseInt(a, 16), parseInt(s, 16), parseFloat((parseInt(l, 16) / 255).toFixed(2))]
                    }
                  }, t.Color.fromSource = function(e) {
                    var t = new n;
                    return t.setSource(e), t
                  })
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = ["e", "se", "s", "sw", "w", "nw", "n", "ne", "e"],
                  r = ["ns", "nesw", "ew", "nwse"],
                  i = {},
                  o = "left",
                  a = "top",
                  s = "right",
                  l = "bottom",
                  c = "center",
                  u = {
                    top: l,
                    bottom: a,
                    left: s,
                    right: o,
                    center: c
                  },
                  h = t.util.radiansToDegrees,
                  p = Math.sign || function(e) {
                    return (e > 0) - (e < 0) || +e
                  };

                function d(e, t) {
                  var n = e.angle + h(Math.atan2(t.y, t.x)) + 360;
                  return Math.round(n % 360 / 45)
                }

                function f(e, n) {
                  var r = n.transform.target,
                    i = r.canvas,
                    o = t.util.object.clone(n);
                  o.target = r, i && i.fire("object:" + e, o), r.fire(e, n)
                }

                function g(e, t) {
                  var n = t.canvas,
                    r = e[n.uniScaleKey];
                  return n.uniformScaling && !r || !n.uniformScaling && r
                }

                function m(e) {
                  return e.originX === c && e.originY === c
                }

                function v(e, t, n) {
                  var r = e.lockScalingX,
                    i = e.lockScalingY;
                  return !(!r || !i) || (!(t || !r && !i || !n) || (!(!r || "x" !== t) || !(!i || "y" !== t)))
                }

                function _(e, t, n, r) {
                  return {
                    e: e,
                    transform: t,
                    pointer: {
                      x: n,
                      y: r
                    }
                  }
                }

                function b(e) {
                  return function(t, n, r, i) {
                    var o = n.target,
                      a = o.getCenterPoint(),
                      s = o.translateToOriginPoint(a, n.originX, n.originY),
                      l = e(t, n, r, i);
                    return o.setPositionByOrigin(s, n.originX, n.originY), l
                  }
                }

                function y(e, t) {
                  return function(n, r, i, o) {
                    var a = t(n, r, i, o);
                    return a && f(e, _(n, r, i, o)), a
                  }
                }

                function w(e, n, r, i, o) {
                  var a = e.target,
                    s = a.controls[e.corner],
                    l = a.canvas.getZoom(),
                    c = a.padding / l,
                    u = a.toLocalPoint(new t.Point(i, o), n, r);
                  return u.x >= c && (u.x -= c), u.x <= -c && (u.x += c), u.y >= c && (u.y -= c), u.y <= c && (u.y += c), u.x -= s.offsetX, u.y -= s.offsetY, u
                }

                function x(e) {
                  return e.flipX !== e.flipY
                }

                function k(e, t, n, r, i) {
                  if (0 !== e[t]) {
                    var o = i / e._getTransformedDimensions()[r] * e[n];
                    e.set(n, o)
                  }
                }

                function C(e, t, n, r) {
                  var i, c = t.target,
                    u = c._getTransformedDimensions(0, c.skewY),
                    p = w(t, t.originX, t.originY, n, r),
                    d = Math.abs(2 * p.x) - u.x,
                    f = c.skewX;
                  d < 2 ? i = 0 : (i = h(Math.atan2(d / c.scaleX, u.y / c.scaleY)), t.originX === o && t.originY === l && (i = -i), t.originX === s && t.originY === a && (i = -i), x(c) && (i = -i));
                  var g = f !== i;
                  if (g) {
                    var m = c._getTransformedDimensions().y;
                    c.set("skewX", i), k(c, "skewY", "scaleY", "y", m)
                  }
                  return g
                }

                function S(e, t, n, r) {
                  var i, c = t.target,
                    u = c._getTransformedDimensions(c.skewX, 0),
                    p = w(t, t.originX, t.originY, n, r),
                    d = Math.abs(2 * p.y) - u.y,
                    f = c.skewY;
                  d < 2 ? i = 0 : (i = h(Math.atan2(d / c.scaleY, u.x / c.scaleX)), t.originX === o && t.originY === l && (i = -i), t.originX === s && t.originY === a && (i = -i), x(c) && (i = -i));
                  var g = f !== i;
                  if (g) {
                    var m = c._getTransformedDimensions().x;
                    c.set("skewY", i), k(c, "skewX", "scaleX", "x", m)
                  }
                  return g
                }

                function E(e, t, n, r, i) {
                  i = i || {};
                  var o, a, s, l, c, h, d = t.target,
                    f = d.lockScalingX,
                    _ = d.lockScalingY,
                    b = i.by,
                    y = g(e, d),
                    x = v(d, b, y),
                    k = t.gestureScale;
                  if (x) return !1;
                  if (k) a = t.scaleX * k, s = t.scaleY * k;
                  else {
                    if (o = w(t, t.originX, t.originY, n, r), c = "y" !== b ? p(o.x) : 1, h = "x" !== b ? p(o.y) : 1, t.signX || (t.signX = c), t.signY || (t.signY = h), d.lockScalingFlip && (t.signX !== c || t.signY !== h)) return !1;
                    if (l = d._getTransformedDimensions(), y && !b) {
                      var C = Math.abs(o.x) + Math.abs(o.y),
                        S = t.original,
                        E = C / (Math.abs(l.x * S.scaleX / d.scaleX) + Math.abs(l.y * S.scaleY / d.scaleY));
                      a = S.scaleX * E, s = S.scaleY * E
                    } else a = Math.abs(o.x * d.scaleX / l.x), s = Math.abs(o.y * d.scaleY / l.y);
                    m(t) && (a *= 2, s *= 2), t.signX !== c && "y" !== b && (t.originX = u[t.originX], a *= -1, t.signX = c), t.signY !== h && "x" !== b && (t.originY = u[t.originY], s *= -1, t.signY = h)
                  }
                  var T = d.scaleX,
                    O = d.scaleY;
                  return b ? ("x" === b && d.set("scaleX", a), "y" === b && d.set("scaleY", s)) : (!f && d.set("scaleX", a), !_ && d.set("scaleY", s)), T !== d.scaleX || O !== d.scaleY
                }
                i.scaleCursorStyleHandler = function(e, t, r) {
                  var i = g(e, r),
                    o = "";
                  if (0 !== t.x && 0 === t.y ? o = "x" : 0 === t.x && 0 !== t.y && (o = "y"), v(r, o, i)) return "not-allowed";
                  var a = d(r, t);
                  return n[a] + "-resize"
                }, i.skewCursorStyleHandler = function(e, t, n) {
                  var i = "not-allowed";
                  if (0 !== t.x && n.lockSkewingY) return i;
                  if (0 !== t.y && n.lockSkewingX) return i;
                  var o = d(n, t) % 4;
                  return r[o] + "-resize"
                }, i.scaleSkewCursorStyleHandler = function(e, t, n) {
                  return e[n.canvas.altActionKey] ? i.skewCursorStyleHandler(e, t, n) : i.scaleCursorStyleHandler(e, t, n)
                }, i.rotationWithSnapping = y("rotating", b((function(e, t, n, r) {
                  var i = t,
                    o = i.target,
                    a = o.translateToOriginPoint(o.getCenterPoint(), i.originX, i.originY);
                  if (o.lockRotation) return !1;
                  var s, l = Math.atan2(i.ey - a.y, i.ex - a.x),
                    c = Math.atan2(r - a.y, n - a.x),
                    u = h(c - l + i.theta);
                  if (o.snapAngle > 0) {
                    var p = o.snapAngle,
                      d = o.snapThreshold || p,
                      f = Math.ceil(u / p) * p,
                      g = Math.floor(u / p) * p;
                    Math.abs(u - g) < d ? u = g : Math.abs(u - f) < d && (u = f)
                  }
                  return u < 0 && (u = 360 + u), u %= 360, s = o.angle !== u, o.angle = u, s
                }))), i.scalingEqually = y("scaling", b((function(e, t, n, r) {
                  return E(e, t, n, r)
                }))), i.scalingX = y("scaling", b((function(e, t, n, r) {
                  return E(e, t, n, r, {
                    by: "x"
                  })
                }))), i.scalingY = y("scaling", b((function(e, t, n, r) {
                  return E(e, t, n, r, {
                    by: "y"
                  })
                }))), i.scalingYOrSkewingX = function(e, t, n, r) {
                  return e[t.target.canvas.altActionKey] ? i.skewHandlerX(e, t, n, r) : i.scalingY(e, t, n, r)
                }, i.scalingXOrSkewingY = function(e, t, n, r) {
                  return e[t.target.canvas.altActionKey] ? i.skewHandlerY(e, t, n, r) : i.scalingX(e, t, n, r)
                }, i.changeWidth = y("resizing", b((function(e, t, n, r) {
                  var i = t.target,
                    o = w(t, t.originX, t.originY, n, r),
                    a = i.strokeWidth / (i.strokeUniform ? i.scaleX : 1),
                    s = m(t) ? 2 : 1,
                    l = i.width,
                    c = Math.abs(o.x * s / i.scaleX) - a;
                  return i.set("width", Math.max(c, 0)), l !== c
                }))), i.skewHandlerX = function(e, t, n, r) {
                  var i, l = t.target,
                    u = l.skewX,
                    h = t.originY;
                  return !l.lockSkewingX && (0 === u ? i = w(t, c, c, n, r).x > 0 ? o : s : (u > 0 && (i = h === a ? o : s), u < 0 && (i = h === a ? s : o), x(l) && (i = i === o ? s : o)), t.originX = i, y("skewing", b(C))(e, t, n, r))
                }, i.skewHandlerY = function(e, t, n, r) {
                  var i, s = t.target,
                    u = s.skewY,
                    h = t.originX;
                  return !s.lockSkewingY && (0 === u ? i = w(t, c, c, n, r).y > 0 ? a : l : (u > 0 && (i = h === o ? a : l), u < 0 && (i = h === o ? l : a), x(s) && (i = i === a ? l : a)), t.originY = i, y("skewing", b(S))(e, t, n, r))
                }, i.dragHandler = function(e, t, n, r) {
                  var i = t.target,
                    o = n - t.offsetX,
                    a = r - t.offsetY,
                    s = !i.get("lockMovementX") && i.left !== o,
                    l = !i.get("lockMovementY") && i.top !== a;
                  return s && i.set("left", o), l && i.set("top", a), (s || l) && f("moving", _(e, t, n, r)), s || l
                }, i.scaleOrSkewActionName = function(e, t, n) {
                  var r = e[n.canvas.altActionKey];
                  return 0 === t.x ? r ? "skewX" : "scaleY" : 0 === t.y ? r ? "skewY" : "scaleX" : void 0
                }, i.rotationStyleHandler = function(e, t, n) {
                  return n.lockRotation ? "not-allowed" : t.cursorStyle
                }, i.fireEvent = f, i.wrapWithFixedAnchor = b, i.wrapWithFireEvent = y, i.getLocalPoint = w, t.controlsUtils = i
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.util.degreesToRadians,
                  r = t.controlsUtils;
                r.renderCircleControl = function(e, t, n, r, i) {
                  r = r || {};
                  var o, a = this.sizeX || r.cornerSize || i.cornerSize,
                    s = this.sizeY || r.cornerSize || i.cornerSize,
                    l = void 0 !== r.transparentCorners ? r.transparentCorners : i.transparentCorners,
                    c = l ? "stroke" : "fill",
                    u = !l && (r.cornerStrokeColor || i.cornerStrokeColor),
                    h = t,
                    p = n;
                  e.save(), e.fillStyle = r.cornerColor || i.cornerColor, e.strokeStyle = r.cornerStrokeColor || i.cornerStrokeColor, a > s ? (o = a, e.scale(1, s / a), p = n * a / s) : s > a ? (o = s, e.scale(a / s, 1), h = t * s / a) : o = a,
                    e.lineWidth = 1, e.beginPath(), e.arc(h, p, o / 2, 0, 2 * Math.PI, !1), e[c](), u && e.stroke(), e.restore()
                }, r.renderSquareControl = function(e, t, r, i, o) {
                  i = i || {};
                  var a = this.sizeX || i.cornerSize || o.cornerSize,
                    s = this.sizeY || i.cornerSize || o.cornerSize,
                    l = void 0 !== i.transparentCorners ? i.transparentCorners : o.transparentCorners,
                    c = l ? "stroke" : "fill",
                    u = !l && (i.cornerStrokeColor || o.cornerStrokeColor),
                    h = a / 2,
                    p = s / 2;
                  e.save(), e.fillStyle = i.cornerColor || o.cornerColor, e.strokeStyle = i.cornerStrokeColor || o.cornerStrokeColor, e.lineWidth = 1, e.translate(t, r), e.rotate(n(o.angle)), e[c + "Rect"](-h, -p, a, s), u && e.strokeRect(-h, -
                    p, a, s), e.restore()
                }
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {});
                t.Control = function(e) {
                  for (var t in e) this[t] = e[t]
                }, t.Control.prototype = {
                  visible: !0,
                  actionName: "scale",
                  angle: 0,
                  x: 0,
                  y: 0,
                  offsetX: 0,
                  offsetY: 0,
                  sizeX: null,
                  sizeY: null,
                  touchSizeX: null,
                  touchSizeY: null,
                  cursorStyle: "crosshair",
                  withConnection: !1,
                  actionHandler: function() {},
                  mouseDownHandler: function() {},
                  mouseUpHandler: function() {},
                  getActionHandler: function() {
                    return this.actionHandler
                  },
                  getMouseDownHandler: function() {
                    return this.mouseDownHandler
                  },
                  getMouseUpHandler: function() {
                    return this.mouseUpHandler
                  },
                  cursorStyleHandler: function(e, t) {
                    return t.cursorStyle
                  },
                  getActionName: function(e, t) {
                    return t.actionName
                  },
                  getVisibility: function(e, t) {
                    var n = e._controlsVisibility;
                    return n && void 0 !== n[t] ? n[t] : this.visible
                  },
                  setVisibility: function(e) {
                    this.visible = e
                  },
                  positionHandler: function(e, n) {
                    return t.util.transformPoint({
                      x: this.x * e.x + this.offsetX,
                      y: this.y * e.y + this.offsetY
                    }, n)
                  },
                  calcCornerCoords: function(e, n, r, i, o) {
                    var a, s, l, c, u = o ? this.touchSizeX : this.sizeX,
                      h = o ? this.touchSizeY : this.sizeY;
                    if (u && h && u !== h) {
                      var p = Math.atan2(h, u),
                        d = Math.sqrt(u * u + h * h) / 2,
                        f = p - t.util.degreesToRadians(e),
                        g = Math.PI / 2 - p - t.util.degreesToRadians(e);
                      a = d * t.util.cos(f), s = d * t.util.sin(f), l = d * t.util.cos(g), c = d * t.util.sin(g)
                    } else {
                      d = .7071067812 * (u && h ? u : n);
                      f = t.util.degreesToRadians(45 - e);
                      a = l = d * t.util.cos(f), s = c = d * t.util.sin(f)
                    }
                    return {
                      tl: {
                        x: r - c,
                        y: i - l
                      },
                      tr: {
                        x: r + a,
                        y: i - s
                      },
                      bl: {
                        x: r - a,
                        y: i + s
                      },
                      br: {
                        x: r + c,
                        y: i + l
                      }
                    }
                  },
                  render: function(e, n, r, i, o) {
                    if ("circle" === ((i = i || {}).cornerStyle || o.cornerStyle)) t.controlsUtils.renderCircleControl.call(this, e, n, r, i, o);
                    else t.controlsUtils.renderSquareControl.call(this, e, n, r, i, o)
                  }
                }
              }(e),
              function() {
                function e(e, t) {
                  var n, r, i, o, a = e.getAttribute("style"),
                    s = e.getAttribute("offset") || 0;
                  if (s = (s = parseFloat(s) / (/%$/.test(s) ? 100 : 1)) < 0 ? 0 : s > 1 ? 1 : s, a) {
                    var l = a.split(/\s*;\s*/);
                    for ("" === l[l.length - 1] && l.pop(), o = l.length; o--;) {
                      var c = l[o].split(/\s*:\s*/),
                        u = c[0].trim(),
                        h = c[1].trim();
                      "stop-color" === u ? n = h : "stop-opacity" === u && (i = h)
                    }
                  }
                  return n || (n = e.getAttribute("stop-color") || "rgb(0,0,0)"), i || (i = e.getAttribute("stop-opacity")), r = (n = new v.Color(n)).getAlpha(), i = isNaN(parseFloat(i)) ? 1 : parseFloat(i), i *= r * t, {
                    offset: s,
                    color: n.toRgb(),
                    opacity: i
                  }
                }
                var t = v.util.object.clone;
                v.Gradient = v.util.createClass({
                  offsetX: 0,
                  offsetY: 0,
                  gradientTransform: null,
                  gradientUnits: "pixels",
                  type: "linear",
                  initialize: function(e) {
                    e || (e = {}), e.coords || (e.coords = {});
                    var t, n = this;
                    Object.keys(e).forEach((function(t) {
                      n[t] = e[t]
                    })), this.id ? this.id += "_" + v.Object.__uid++ : this.id = v.Object.__uid++, t = {
                      x1: e.coords.x1 || 0,
                      y1: e.coords.y1 || 0,
                      x2: e.coords.x2 || 0,
                      y2: e.coords.y2 || 0
                    }, "radial" === this.type && (t.r1 = e.coords.r1 || 0, t.r2 = e.coords.r2 || 0), this.coords = t, this.colorStops = e.colorStops.slice()
                  },
                  addColorStop: function(e) {
                    for (var t in e) {
                      var n = new v.Color(e[t]);
                      this.colorStops.push({
                        offset: parseFloat(t),
                        color: n.toRgb(),
                        opacity: n.getAlpha()
                      })
                    }
                    return this
                  },
                  toObject: function(e) {
                    var t = {
                      type: this.type,
                      coords: this.coords,
                      colorStops: this.colorStops,
                      offsetX: this.offsetX,
                      offsetY: this.offsetY,
                      gradientUnits: this.gradientUnits,
                      gradientTransform: this.gradientTransform ? this.gradientTransform.concat() : this.gradientTransform
                    };
                    return v.util.populateWithProperties(this, t, e), t
                  },
                  toSVG: function(e, n) {
                    var r, i, o, a, s = t(this.coords, !0),
                      l = (n = n || {}, t(this.colorStops, !0)),
                      c = s.r1 > s.r2,
                      u = this.gradientTransform ? this.gradientTransform.concat() : v.iMatrix.concat(),
                      h = -this.offsetX,
                      p = -this.offsetY,
                      d = !!n.additionalTransform,
                      f = "pixels" === this.gradientUnits ? "userSpaceOnUse" : "objectBoundingBox";
                    if (l.sort((function(e, t) {
                        return e.offset - t.offset
                      })), "objectBoundingBox" === f ? (h /= e.width, p /= e.height) : (h += e.width / 2, p += e.height / 2), "path" === e.type && "percentage" !== this.gradientUnits && (h -= e.pathOffset.x, p -= e.pathOffset.y), u[4] -= h,
                      u[5] -= p, a = 'id="SVGID_' + this.id + '" gradientUnits="' + f + '"', a += ' gradientTransform="' + (d ? n.additionalTransform + " " : "") + v.util.matrixToSVG(u) + '" ', "linear" === this.type ? o = [
                        "<linearGradient ", a, ' x1="', s.x1, '" y1="', s.y1, '" x2="', s.x2, '" y2="', s.y2, '">\n'
                      ] : "radial" === this.type && (o = ["<radialGradient ", a, ' cx="', c ? s.x1 : s.x2, '" cy="', c ? s.y1 : s.y2, '" r="', c ? s.r1 : s.r2, '" fx="', c ? s.x2 : s.x1, '" fy="', c ? s.y2 : s.y1, '">\n']), "radial" ===
                      this.type) {
                      if (c)
                        for ((l = l.concat()).reverse(), r = 0, i = l.length; r < i; r++) l[r].offset = 1 - l[r].offset;
                      var g = Math.min(s.r1, s.r2);
                      if (g > 0) {
                        var m = g / Math.max(s.r1, s.r2);
                        for (r = 0, i = l.length; r < i; r++) l[r].offset += m * (1 - l[r].offset)
                      }
                    }
                    for (r = 0, i = l.length; r < i; r++) {
                      var _ = l[r];
                      o.push("<stop ", 'offset="', 100 * _.offset + "%", '" style="stop-color:', _.color, void 0 !== _.opacity ? ";stop-opacity: " + _.opacity : ";", '"/>\n')
                    }
                    return o.push("linear" === this.type ? "</linearGradient>\n" : "</radialGradient>\n"), o.join("")
                  },
                  toLive: function(e) {
                    var t, n, r, i = v.util.object.clone(this.coords);
                    if (this.type) {
                      for ("linear" === this.type ? t = e.createLinearGradient(i.x1, i.y1, i.x2, i.y2) : "radial" === this.type && (t = e.createRadialGradient(i.x1, i.y1, i.r1, i.x2, i.y2, i.r2)), n = 0, r = this.colorStops.length; n <
                        r; n++) {
                        var o = this.colorStops[n].color,
                          a = this.colorStops[n].opacity,
                          s = this.colorStops[n].offset;
                        void 0 !== a && (o = new v.Color(o).setAlpha(a).toRgba()), t.addColorStop(s, o)
                      }
                      return t
                    }
                  }
                }), v.util.object.extend(v.Gradient, {
                  fromElement: function(t, n, r, i) {
                    var o = parseFloat(r) / (/%$/.test(r) ? 100 : 1);
                    o = o < 0 ? 0 : o > 1 ? 1 : o, isNaN(o) && (o = 1);
                    var a, s, l, c, u = t.getElementsByTagName("stop"),
                      h = "userSpaceOnUse" === t.getAttribute("gradientUnits") ? "pixels" : "percentage",
                      p = t.getAttribute("gradientTransform") || "",
                      d = [],
                      f = 0,
                      g = 0;
                    for ("linearGradient" === t.nodeName || "LINEARGRADIENT" === t.nodeName ? (a = "linear", s = function(e) {
                        return {
                          x1: e.getAttribute("x1") || 0,
                          y1: e.getAttribute("y1") || 0,
                          x2: e.getAttribute("x2") || "100%",
                          y2: e.getAttribute("y2") || 0
                        }
                      }(t)) : (a = "radial", s = function(e) {
                        return {
                          x1: e.getAttribute("fx") || e.getAttribute("cx") || "50%",
                          y1: e.getAttribute("fy") || e.getAttribute("cy") || "50%",
                          r1: 0,
                          x2: e.getAttribute("cx") || "50%",
                          y2: e.getAttribute("cy") || "50%",
                          r2: e.getAttribute("r") || "50%"
                        }
                      }(t)), l = u.length; l--;) d.push(e(u[l], o));
                    return c = v.parseTransformAttribute(p),
                      function(e, t, n, r) {
                        var i, o;
                        Object.keys(t).forEach((function(e) {
                          "Infinity" === (i = t[e]) ? o = 1: "-Infinity" === i ? o = 0 : (o = parseFloat(t[e], 10), "string" == typeof i && /^(\d+\.\d+)%|(\d+)%$/.test(i) && (o *= .01, "pixels" === r && ("x1" !== e && "x2" !== e &&
                            "r2" !== e || (o *= n.viewBoxWidth || n.width), "y1" !== e && "y2" !== e || (o *= n.viewBoxHeight || n.height)))), t[e] = o
                        }))
                      }(0, s, i, h), "pixels" === h && (f = -n.left, g = -n.top), new v.Gradient({
                        id: t.getAttribute("id"),
                        type: a,
                        coords: s,
                        colorStops: d,
                        gradientUnits: h,
                        gradientTransform: c,
                        offsetX: f,
                        offsetY: g
                      })
                  }
                })
              }(), p = v.util.toFixed, v.Pattern = v.util.createClass({
                repeat: "repeat",
                offsetX: 0,
                offsetY: 0,
                crossOrigin: "",
                patternTransform: null,
                initialize: function(e, t) {
                  if (e || (e = {}), this.id = v.Object.__uid++, this.setOptions(e), !e.source || e.source && "string" != typeof e.source) t && t(this);
                  else {
                    var n = this;
                    this.source = v.util.createImage(), v.util.loadImage(e.source, (function(e, r) {
                      n.source = e, t && t(n, r)
                    }), null, this.crossOrigin)
                  }
                },
                toObject: function(e) {
                  var t, n, r = v.Object.NUM_FRACTION_DIGITS;
                  return "string" == typeof this.source.src ? t = this.source.src : "object" == typeof this.source && this.source.toDataURL && (t = this.source.toDataURL()), n = {
                    type: "pattern",
                    source: t,
                    repeat: this.repeat,
                    crossOrigin: this.crossOrigin,
                    offsetX: p(this.offsetX, r),
                    offsetY: p(this.offsetY, r),
                    patternTransform: this.patternTransform ? this.patternTransform.concat() : null
                  }, v.util.populateWithProperties(this, n, e), n
                },
                toSVG: function(e) {
                  var t = "function" == typeof this.source ? this.source() : this.source,
                    n = t.width / e.width,
                    r = t.height / e.height,
                    i = this.offsetX / e.width,
                    o = this.offsetY / e.height,
                    a = "";
                  return "repeat-x" !== this.repeat && "no-repeat" !== this.repeat || (r = 1, o && (r += Math.abs(o))), "repeat-y" !== this.repeat && "no-repeat" !== this.repeat || (n = 1, i && (n += Math.abs(i))), t.src ? a = t.src : t
                    .toDataURL && (a = t.toDataURL()), '<pattern id="SVGID_' + this.id + '" x="' + i + '" y="' + o + '" width="' + n + '" height="' + r + '">\n<image x="0" y="0" width="' + t.width + '" height="' + t.height +
                    '" xlink:href="' + a + '"></image>\n</pattern>\n'
                },
                setOptions: function(e) {
                  for (var t in e) this[t] = e[t]
                },
                toLive: function(e) {
                  var t = this.source;
                  if (!t) return "";
                  if (void 0 !== t.src) {
                    if (!t.complete) return "";
                    if (0 === t.naturalWidth || 0 === t.naturalHeight) return ""
                  }
                  return e.createPattern(t, this.repeat)
                }
              }),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.util.toFixed;
                t.Shadow ? t.warn("fabric.Shadow is already defined.") : (t.Shadow = t.util.createClass({
                  color: "rgb(0,0,0)",
                  blur: 0,
                  offsetX: 0,
                  offsetY: 0,
                  affectStroke: !1,
                  includeDefaultValues: !0,
                  nonScaling: !1,
                  initialize: function(e) {
                    for (var n in "string" == typeof e && (e = this._parseShadow(e)), e) this[n] = e[n];
                    this.id = t.Object.__uid++
                  },
                  _parseShadow: function(e) {
                    var n = e.trim(),
                      r = t.Shadow.reOffsetsAndBlur.exec(n) || [];
                    return {
                      color: (n.replace(t.Shadow.reOffsetsAndBlur, "") || "rgb(0,0,0)").trim(),
                      offsetX: parseFloat(r[1], 10) || 0,
                      offsetY: parseFloat(r[2], 10) || 0,
                      blur: parseFloat(r[3], 10) || 0
                    }
                  },
                  toString: function() {
                    return [this.offsetX, this.offsetY, this.blur, this.color].join("px ")
                  },
                  toSVG: function(e) {
                    var r = 40,
                      i = 40,
                      o = t.Object.NUM_FRACTION_DIGITS,
                      a = t.util.rotateVector({
                        x: this.offsetX,
                        y: this.offsetY
                      }, t.util.degreesToRadians(-e.angle)),
                      s = new t.Color(this.color);
                    return e.width && e.height && (r = 100 * n((Math.abs(a.x) + this.blur) / e.width, o) + 20, i = 100 * n((Math.abs(a.y) + this.blur) / e.height, o) + 20), e.flipX && (a.x *= -1), e.flipY && (a.y *= -1),
                      '<filter id="SVGID_' + this.id + '" y="-' + i + '%" height="' + (100 + 2 * i) + '%" x="-' + r + '%" width="' + (100 + 2 * r) + '%" >\n\t<feGaussianBlur in="SourceAlpha" stdDeviation="' + n(this.blur ? this.blur / 2 :
                        0, o) + '"></feGaussianBlur>\n\t<feOffset dx="' + n(a.x, o) + '" dy="' + n(a.y, o) + '" result="oBlur" ></feOffset>\n\t<feFlood flood-color="' + s.toRgb() + '" flood-opacity="' + s.getAlpha() +
                      '"/>\n\t<feComposite in2="oBlur" operator="in" />\n\t<feMerge>\n\t\t<feMergeNode></feMergeNode>\n\t\t<feMergeNode in="SourceGraphic"></feMergeNode>\n\t</feMerge>\n</filter>\n'
                  },
                  toObject: function() {
                    if (this.includeDefaultValues) return {
                      color: this.color,
                      blur: this.blur,
                      offsetX: this.offsetX,
                      offsetY: this.offsetY,
                      affectStroke: this.affectStroke,
                      nonScaling: this.nonScaling
                    };
                    var e = {},
                      n = t.Shadow.prototype;
                    return ["color", "blur", "offsetX", "offsetY", "affectStroke", "nonScaling"].forEach((function(t) {
                      this[t] !== n[t] && (e[t] = this[t])
                    }), this), e
                  }
                }), t.Shadow.reOffsetsAndBlur = /(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/)
              }(e),
              function() {
                if (v.StaticCanvas) v.warn("fabric.StaticCanvas is already defined.");
                else {
                  var e = v.util.object.extend,
                    t = v.util.getElementOffset,
                    n = v.util.removeFromArray,
                    r = v.util.toFixed,
                    i = v.util.transformPoint,
                    o = v.util.invertTransform,
                    a = v.util.getNodeCanvas,
                    s = v.util.createCanvasElement,
                    l = new Error("Could not initialize `canvas` element");
                  v.StaticCanvas = v.util.createClass(v.CommonMethods, {
                    initialize: function(e, t) {
                      t || (t = {}), this.renderAndResetBound = this.renderAndReset.bind(this), this.requestRenderAllBound = this.requestRenderAll.bind(this), this._initStatic(e, t)
                    },
                    backgroundColor: "",
                    backgroundImage: null,
                    overlayColor: "",
                    overlayImage: null,
                    includeDefaultValues: !0,
                    stateful: !1,
                    renderOnAddRemove: !0,
                    controlsAboveOverlay: !1,
                    allowTouchScrolling: !1,
                    imageSmoothingEnabled: !0,
                    viewportTransform: v.iMatrix.concat(),
                    backgroundVpt: !0,
                    overlayVpt: !0,
                    enableRetinaScaling: !0,
                    vptCoords: {},
                    skipOffscreen: !0,
                    clipPath: void 0,
                    _initStatic: function(e, t) {
                      var n = this.requestRenderAllBound;
                      this._objects = [], this._createLowerCanvas(e), this._initOptions(t), this.interactive || this._initRetinaScaling(), t.overlayImage && this.setOverlayImage(t.overlayImage, n), t.backgroundImage && this
                        .setBackgroundImage(t.backgroundImage, n), t.backgroundColor && this.setBackgroundColor(t.backgroundColor, n), t.overlayColor && this.setOverlayColor(t.overlayColor, n), this.calcOffset()
                    },
                    _isRetinaScaling: function() {
                      return v.devicePixelRatio > 1 && this.enableRetinaScaling
                    },
                    getRetinaScaling: function() {
                      return this._isRetinaScaling() ? Math.max(1, v.devicePixelRatio) : 1
                    },
                    _initRetinaScaling: function() {
                      if (this._isRetinaScaling()) {
                        var e = v.devicePixelRatio;
                        this.__initRetinaScaling(e, this.lowerCanvasEl, this.contextContainer), this.upperCanvasEl && this.__initRetinaScaling(e, this.upperCanvasEl, this.contextTop)
                      }
                    },
                    __initRetinaScaling: function(e, t, n) {
                      t.setAttribute("width", this.width * e), t.setAttribute("height", this.height * e), n.scale(e, e)
                    },
                    calcOffset: function() {
                      return this._offset = t(this.lowerCanvasEl), this
                    },
                    setOverlayImage: function(e, t, n) {
                      return this.__setBgOverlayImage("overlayImage", e, t, n)
                    },
                    setBackgroundImage: function(e, t, n) {
                      return this.__setBgOverlayImage("backgroundImage", e, t, n)
                    },
                    setOverlayColor: function(e, t) {
                      return this.__setBgOverlayColor("overlayColor", e, t)
                    },
                    setBackgroundColor: function(e, t) {
                      return this.__setBgOverlayColor("backgroundColor", e, t)
                    },
                    __setBgOverlayImage: function(e, t, n, r) {
                      return "string" == typeof t ? v.util.loadImage(t, (function(t, i) {
                        if (t) {
                          var o = new v.Image(t, r);
                          this[e] = o, o.canvas = this
                        }
                        n && n(t, i)
                      }), this, r && r.crossOrigin) : (r && t.setOptions(r), this[e] = t, t && (t.canvas = this), n && n(t, !1)), this
                    },
                    __setBgOverlayColor: function(e, t, n) {
                      return this[e] = t, this._initGradient(t, e), this._initPattern(t, e, n), this
                    },
                    _createCanvasElement: function() {
                      var e = s();
                      if (!e) throw l;
                      if (e.style || (e.style = {}), void 0 === e.getContext) throw l;
                      return e
                    },
                    _initOptions: function(e) {
                      var t = this.lowerCanvasEl;
                      this._setOptions(e), this.width = this.width || parseInt(t.width, 10) || 0, this.height = this.height || parseInt(t.height, 10) || 0, this.lowerCanvasEl.style && (t.width = this.width, t.height = this.height, t.style
                        .width = this.width + "px", t.style.height = this.height + "px", this.viewportTransform = this.viewportTransform.slice())
                    },
                    _createLowerCanvas: function(e) {
                      e && e.getContext ? this.lowerCanvasEl = e : this.lowerCanvasEl = v.util.getById(e) || this._createCanvasElement(), v.util.addClass(this.lowerCanvasEl, "lower-canvas"), this._originalCanvasStyle = this.lowerCanvasEl
                        .style, this.interactive && this._applyCanvasStyle(this.lowerCanvasEl), this.contextContainer = this.lowerCanvasEl.getContext("2d")
                    },
                    getWidth: function() {
                      return this.width
                    },
                    getHeight: function() {
                      return this.height
                    },
                    setWidth: function(e, t) {
                      return this.setDimensions({
                        width: e
                      }, t)
                    },
                    setHeight: function(e, t) {
                      return this.setDimensions({
                        height: e
                      }, t)
                    },
                    setDimensions: function(e, t) {
                      var n;
                      for (var r in t = t || {}, e) n = e[r], t.cssOnly || (this._setBackstoreDimension(r, e[r]), n += "px", this.hasLostContext = !0), t.backstoreOnly || this._setCssDimension(r, n);
                      return this._isCurrentlyDrawing && this.freeDrawingBrush && this.freeDrawingBrush._setBrushStyles(this.contextTop), this._initRetinaScaling(), this.calcOffset(), t.cssOnly || this.requestRenderAll(), this
                    },
                    _setBackstoreDimension: function(e, t) {
                      return this.lowerCanvasEl[e] = t, this.upperCanvasEl && (this.upperCanvasEl[e] = t), this.cacheCanvasEl && (this.cacheCanvasEl[e] = t), this[e] = t, this
                    },
                    _setCssDimension: function(e, t) {
                      return this.lowerCanvasEl.style[e] = t, this.upperCanvasEl && (this.upperCanvasEl.style[e] = t), this.wrapperEl && (this.wrapperEl.style[e] = t), this
                    },
                    getZoom: function() {
                      return this.viewportTransform[0]
                    },
                    setViewportTransform: function(e) {
                      var t, n, r, i = this._activeObject,
                        o = this.backgroundImage,
                        a = this.overlayImage;
                      for (this.viewportTransform = e, n = 0, r = this._objects.length; n < r; n++)(t = this._objects[n]).group || t.setCoords(!0);
                      return i && i.setCoords(), o && o.setCoords(!0), a && a.setCoords(!0), this.calcViewportBoundaries(), this.renderOnAddRemove && this.requestRenderAll(), this
                    },
                    zoomToPoint: function(e, t) {
                      var n = e,
                        r = this.viewportTransform.slice(0);
                      e = i(e, o(this.viewportTransform)), r[0] = t, r[3] = t;
                      var a = i(e, r);
                      return r[4] += n.x - a.x, r[5] += n.y - a.y, this.setViewportTransform(r)
                    },
                    setZoom: function(e) {
                      return this.zoomToPoint(new v.Point(0, 0), e), this
                    },
                    absolutePan: function(e) {
                      var t = this.viewportTransform.slice(0);
                      return t[4] = -e.x, t[5] = -e.y, this.setViewportTransform(t)
                    },
                    relativePan: function(e) {
                      return this.absolutePan(new v.Point(-e.x - this.viewportTransform[4], -e.y - this.viewportTransform[5]))
                    },
                    getElement: function() {
                      return this.lowerCanvasEl
                    },
                    _onObjectAdded: function(e) {
                      this.stateful && e.setupState(), e._set("canvas", this), e.setCoords(), this.fire("object:added", {
                        target: e
                      }), e.fire("added")
                    },
                    _onObjectRemoved: function(e) {
                      this.fire("object:removed", {
                        target: e
                      }), e.fire("removed"), delete e.canvas
                    },
                    clearContext: function(e) {
                      return e.clearRect(0, 0, this.width, this.height), this
                    },
                    getContext: function() {
                      return this.contextContainer
                    },
                    clear: function() {
                      return this.remove.apply(this, this.getObjects()), this.backgroundImage = null, this.overlayImage = null, this.backgroundColor = "", this.overlayColor = "", this._hasITextHandlers && (this.off("mouse:up", this
                        ._mouseUpITextHandler), this._iTextInstances = null, this._hasITextHandlers = !1), this.clearContext(this.contextContainer), this.fire("canvas:cleared"), this.renderOnAddRemove && this.requestRenderAll(), this
                    },
                    renderAll: function() {
                      var e = this.contextContainer;
                      return this.renderCanvas(e, this._objects), this
                    },
                    renderAndReset: function() {
                      this.isRendering = 0, this.renderAll()
                    },
                    requestRenderAll: function() {
                      return this.isRendering || (this.isRendering = v.util.requestAnimFrame(this.renderAndResetBound)), this
                    },
                    calcViewportBoundaries: function() {
                      var e = {},
                        t = this.width,
                        n = this.height,
                        r = o(this.viewportTransform);
                      return e.tl = i({
                        x: 0,
                        y: 0
                      }, r), e.br = i({
                        x: t,
                        y: n
                      }, r), e.tr = new v.Point(e.br.x, e.tl.y), e.bl = new v.Point(e.tl.x, e.br.y), this.vptCoords = e, e
                    },
                    cancelRequestedRender: function() {
                      this.isRendering && (v.util.cancelAnimFrame(this.isRendering), this.isRendering = 0)
                    },
                    renderCanvas: function(e, t) {
                      var n = this.viewportTransform,
                        r = this.clipPath;
                      this.cancelRequestedRender(), this.calcViewportBoundaries(), this.clearContext(e), v.util.setImageSmoothing(e, this.imageSmoothingEnabled), this.fire("before:render", {
                        ctx: e
                      }), this._renderBackground(e), e.save(), e.transform(n[0], n[1], n[2], n[3], n[4], n[5]), this._renderObjects(e, t), e.restore(), !this.controlsAboveOverlay && this.interactive && this.drawControls(e), r && (r
                        .canvas = this, r.shouldCache(), r._transformDone = !0, r.renderCache({
                          forClipping: !0
                        }), this.drawClipPathOnCanvas(e)), this._renderOverlay(e), this.controlsAboveOverlay && this.interactive && this.drawControls(e), this.fire("after:render", {
                        ctx: e
                      })
                    },
                    drawClipPathOnCanvas: function(e) {
                      var t = this.viewportTransform,
                        n = this.clipPath;
                      e.save(), e.transform(t[0], t[1], t[2], t[3], t[4], t[5]), e.globalCompositeOperation = "destination-in", n.transform(e), e.scale(1 / n.zoomX, 1 / n.zoomY), e.drawImage(n._cacheCanvas, -n.cacheTranslationX, -n
                        .cacheTranslationY), e.restore()
                    },
                    _renderObjects: function(e, t) {
                      var n, r;
                      for (n = 0, r = t.length; n < r; ++n) t[n] && t[n].render(e)
                    },
                    _renderBackgroundOrOverlay: function(e, t) {
                      var n = this[t + "Color"],
                        r = this[t + "Image"],
                        i = this.viewportTransform,
                        o = this[t + "Vpt"];
                      if (n || r) {
                        if (n) {
                          e.save(), e.beginPath(), e.moveTo(0, 0), e.lineTo(this.width, 0), e.lineTo(this.width, this.height), e.lineTo(0, this.height), e.closePath(), e.fillStyle = n.toLive ? n.toLive(e, this) : n, o && e.transform(i[0],
                            i[1], i[2], i[3], i[4], i[5]), e.transform(1, 0, 0, 1, n.offsetX || 0, n.offsetY || 0);
                          var a = n.gradientTransform || n.patternTransform;
                          a && e.transform(a[0], a[1], a[2], a[3], a[4], a[5]), e.fill(), e.restore()
                        }
                        r && (e.save(), o && e.transform(i[0], i[1], i[2], i[3], i[4], i[5]), r.render(e), e.restore())
                      }
                    },
                    _renderBackground: function(e) {
                      this._renderBackgroundOrOverlay(e, "background")
                    },
                    _renderOverlay: function(e) {
                      this._renderBackgroundOrOverlay(e, "overlay")
                    },
                    getCenter: function() {
                      return {
                        top: this.height / 2,
                        left: this.width / 2
                      }
                    },
                    getCenterPoint: function() {
                      return new v.Point(this.width / 2, this.height / 2)
                    },
                    centerObjectH: function(e) {
                      return this._centerObject(e, new v.Point(this.getCenterPoint().x, e.getCenterPoint().y))
                    },
                    centerObjectV: function(e) {
                      return this._centerObject(e, new v.Point(e.getCenterPoint().x, this.getCenterPoint().y))
                    },
                    centerObject: function(e) {
                      var t = this.getCenterPoint();
                      return this._centerObject(e, t)
                    },
                    viewportCenterObject: function(e) {
                      var t = this.getVpCenter();
                      return this._centerObject(e, t)
                    },
                    viewportCenterObjectH: function(e) {
                      var t = this.getVpCenter();
                      return this._centerObject(e, new v.Point(t.x, e.getCenterPoint().y)), this
                    },
                    viewportCenterObjectV: function(e) {
                      var t = this.getVpCenter();
                      return this._centerObject(e, new v.Point(e.getCenterPoint().x, t.y))
                    },
                    getVpCenter: function() {
                      var e = this.getCenterPoint(),
                        t = o(this.viewportTransform);
                      return i(e, t)
                    },
                    _centerObject: function(e, t) {
                      return e.setPositionByOrigin(t, "center", "center"), e.setCoords(), this.renderOnAddRemove && this.requestRenderAll(), this
                    },
                    toDatalessJSON: function(e) {
                      return this.toDatalessObject(e)
                    },
                    toObject: function(e) {
                      return this._toObjectMethod("toObject", e)
                    },
                    toDatalessObject: function(e) {
                      return this._toObjectMethod("toDatalessObject", e)
                    },
                    _toObjectMethod: function(t, n) {
                      var r = this.clipPath,
                        i = {
                          version: v.version,
                          objects: this._toObjects(t, n)
                        };
                      return r && !r.excludeFromExport && (i.clipPath = this._toObject(this.clipPath, t, n)), e(i, this.__serializeBgOverlay(t, n)), v.util.populateWithProperties(this, i, n), i
                    },
                    _toObjects: function(e, t) {
                      return this._objects.filter((function(e) {
                        return !e.excludeFromExport
                      })).map((function(n) {
                        return this._toObject(n, e, t)
                      }), this)
                    },
                    _toObject: function(e, t, n) {
                      var r;
                      this.includeDefaultValues || (r = e.includeDefaultValues, e.includeDefaultValues = !1);
                      var i = e[t](n);
                      return this.includeDefaultValues || (e.includeDefaultValues = r), i
                    },
                    __serializeBgOverlay: function(e, t) {
                      var n = {},
                        r = this.backgroundImage,
                        i = this.overlayImage,
                        o = this.backgroundColor,
                        a = this.overlayColor;
                      return o && o.toObject ? o.excludeFromExport || (n.background = o.toObject(t)) : o && (n.background = o), a && a.toObject ? a.excludeFromExport || (n.overlay = a.toObject(t)) : a && (n.overlay = a), r && !r
                        .excludeFromExport && (n.backgroundImage = this._toObject(r, e, t)), i && !i.excludeFromExport && (n.overlayImage = this._toObject(i, e, t)), n
                    },
                    svgViewportTransformation: !0,
                    toSVG: function(e, t) {
                      e || (e = {}), e.reviver = t;
                      var n = [];
                      return this._setSVGPreamble(n, e), this._setSVGHeader(n, e), this.clipPath && n.push('<g clip-path="url(#' + this.clipPath.clipPathId + ')" >\n'), this._setSVGBgOverlayColor(n, "background"), this
                        ._setSVGBgOverlayImage(n, "backgroundImage", t), this._setSVGObjects(n, t), this.clipPath && n.push("</g>\n"), this._setSVGBgOverlayColor(n, "overlay"), this._setSVGBgOverlayImage(n, "overlayImage", t), n.push(
                          "</svg>"), n.join("")
                    },
                    _setSVGPreamble: function(e, t) {
                      t.suppressPreamble || e.push('<?xml version="1.0" encoding="', t.encoding || "UTF-8", '" standalone="no" ?>\n', '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" ',
                        '"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')
                    },
                    _setSVGHeader: function(e, t) {
                      var n, i = t.width || this.width,
                        o = t.height || this.height,
                        a = 'viewBox="0 0 ' + this.width + " " + this.height + '" ',
                        s = v.Object.NUM_FRACTION_DIGITS;
                      t.viewBox ? a = 'viewBox="' + t.viewBox.x + " " + t.viewBox.y + " " + t.viewBox.width + " " + t.viewBox.height + '" ' : this.svgViewportTransformation && (n = this.viewportTransform, a = 'viewBox="' + r(-n[4] / n[0],
                        s) + " " + r(-n[5] / n[3], s) + " " + r(this.width / n[0], s) + " " + r(this.height / n[3], s) + '" '), e.push("<svg ", 'xmlns="http://www.w3.org/2000/svg" ', 'xmlns:xlink="http://www.w3.org/1999/xlink" ',
                        'version="1.1" ', 'width="', i, '" ', 'height="', o, '" ', a, 'xml:space="preserve">\n', "<desc>Created with Fabric.js ", v.version, "</desc>\n", "<defs>\n", this.createSVGFontFacesMarkup(), this
                        .createSVGRefElementsMarkup(), this.createSVGClipPathMarkup(t), "</defs>\n")
                    },
                    createSVGClipPathMarkup: function(e) {
                      var t = this.clipPath;
                      return t ? (t.clipPathId = "CLIPPATH_" + v.Object.__uid++, '<clipPath id="' + t.clipPathId + '" >\n' + this.clipPath.toClipPathSVG(e.reviver) + "</clipPath>\n") : ""
                    },
                    createSVGRefElementsMarkup: function() {
                      var e = this;
                      return ["background", "overlay"].map((function(t) {
                        var n = e[t + "Color"];
                        if (n && n.toLive) {
                          var r = e[t + "Vpt"],
                            i = e.viewportTransform,
                            o = {
                              width: e.width / (r ? i[0] : 1),
                              height: e.height / (r ? i[3] : 1)
                            };
                          return n.toSVG(o, {
                            additionalTransform: r ? v.util.matrixToSVG(i) : ""
                          })
                        }
                      })).join("")
                    },
                    createSVGFontFacesMarkup: function() {
                      var e, t, n, r, i, o, a, s, l = "",
                        c = {},
                        u = v.fontPaths,
                        h = [];
                      for (this._objects.forEach((function e(t) {
                          h.push(t), t._objects && t._objects.forEach(e)
                        })), a = 0, s = h.length; a < s; a++)
                        if (t = (e = h[a]).fontFamily, -1 !== e.type.indexOf("text") && !c[t] && u[t] && (c[t] = !0, e.styles))
                          for (i in n = e.styles)
                            for (o in r = n[i]) !c[t = r[o].fontFamily] && u[t] && (c[t] = !0);
                      for (var p in c) l += ["\t\t@font-face {\n", "\t\t\tfont-family: '", p, "';\n", "\t\t\tsrc: url('", u[p], "');\n", "\t\t}\n"].join("");
                      return l && (l = ['\t<style type="text/css">', "<![CDATA[\n", l, "]]>", "</style>\n"].join("")), l
                    },
                    _setSVGObjects: function(e, t) {
                      var n, r, i, o = this._objects;
                      for (r = 0, i = o.length; r < i; r++)(n = o[r]).excludeFromExport || this._setSVGObject(e, n, t)
                    },
                    _setSVGObject: function(e, t, n) {
                      e.push(t.toSVG(n))
                    },
                    _setSVGBgOverlayImage: function(e, t, n) {
                      this[t] && !this[t].excludeFromExport && this[t].toSVG && e.push(this[t].toSVG(n))
                    },
                    _setSVGBgOverlayColor: function(e, t) {
                      var n = this[t + "Color"],
                        r = this.viewportTransform,
                        i = this.width,
                        o = this.height;
                      if (n)
                        if (n.toLive) {
                          var a = n.repeat,
                            s = v.util.invertTransform(r),
                            l = this[t + "Vpt"] ? v.util.matrixToSVG(s) : "";
                          e.push('<rect transform="' + l + " translate(", i / 2, ",", o / 2, ')"', ' x="', n.offsetX - i / 2, '" y="', n.offsetY - o / 2, '" ', 'width="', "repeat-y" === a || "no-repeat" === a ? n.source.width : i,
                            '" height="', "repeat-x" === a || "no-repeat" === a ? n.source.height : o, '" fill="url(#SVGID_' + n.id + ')"', "></rect>\n")
                        } else e.push('<rect x="0" y="0" width="100%" height="100%" ', 'fill="', n, '"', "></rect>\n")
                    },
                    sendToBack: function(e) {
                      if (!e) return this;
                      var t, r, i, o = this._activeObject;
                      if (e === o && "activeSelection" === e.type)
                        for (t = (i = o._objects).length; t--;) r = i[t], n(this._objects, r), this._objects.unshift(r);
                      else n(this._objects, e), this._objects.unshift(e);
                      return this.renderOnAddRemove && this.requestRenderAll(), this
                    },
                    bringToFront: function(e) {
                      if (!e) return this;
                      var t, r, i, o = this._activeObject;
                      if (e === o && "activeSelection" === e.type)
                        for (i = o._objects, t = 0; t < i.length; t++) r = i[t], n(this._objects, r), this._objects.push(r);
                      else n(this._objects, e), this._objects.push(e);
                      return this.renderOnAddRemove && this.requestRenderAll(), this
                    },
                    sendBackwards: function(e, t) {
                      if (!e) return this;
                      var r, i, o, a, s, l = this._activeObject,
                        c = 0;
                      if (e === l && "activeSelection" === e.type)
                        for (s = l._objects, r = 0; r < s.length; r++) i = s[r], (o = this._objects.indexOf(i)) > 0 + c && (a = o - 1, n(this._objects, i), this._objects.splice(a, 0, i)), c++;
                      else 0 !== (o = this._objects.indexOf(e)) && (a = this._findNewLowerIndex(e, o, t), n(this._objects, e), this._objects.splice(a, 0, e));
                      return this.renderOnAddRemove && this.requestRenderAll(), this
                    },
                    _findNewLowerIndex: function(e, t, n) {
                      var r, i;
                      if (n)
                        for (r = t, i = t - 1; i >= 0; --i) {
                          if (e.intersectsWithObject(this._objects[i]) || e.isContainedWithinObject(this._objects[i]) || this._objects[i].isContainedWithinObject(e)) {
                            r = i;
                            break
                          }
                        } else r = t - 1;
                      return r
                    },
                    bringForward: function(e, t) {
                      if (!e) return this;
                      var r, i, o, a, s, l = this._activeObject,
                        c = 0;
                      if (e === l && "activeSelection" === e.type)
                        for (r = (s = l._objects).length; r--;) i = s[r], (o = this._objects.indexOf(i)) < this._objects.length - 1 - c && (a = o + 1, n(this._objects, i), this._objects.splice(a, 0, i)), c++;
                      else(o = this._objects.indexOf(e)) !== this._objects.length - 1 && (a = this._findNewUpperIndex(e, o, t), n(this._objects, e), this._objects.splice(a, 0, e));
                      return this.renderOnAddRemove && this.requestRenderAll(), this
                    },
                    _findNewUpperIndex: function(e, t, n) {
                      var r, i, o;
                      if (n)
                        for (r = t, i = t + 1, o = this._objects.length; i < o; ++i) {
                          if (e.intersectsWithObject(this._objects[i]) || e.isContainedWithinObject(this._objects[i]) || this._objects[i].isContainedWithinObject(e)) {
                            r = i;
                            break
                          }
                        } else r = t + 1;
                      return r
                    },
                    moveTo: function(e, t) {
                      return n(this._objects, e), this._objects.splice(t, 0, e), this.renderOnAddRemove && this.requestRenderAll()
                    },
                    dispose: function() {
                      return this.isRendering && (v.util.cancelAnimFrame(this.isRendering), this.isRendering = 0), this.forEachObject((function(e) {
                          e.dispose && e.dispose()
                        })), this._objects = [], this.backgroundImage && this.backgroundImage.dispose && this.backgroundImage.dispose(), this.backgroundImage = null, this.overlayImage && this.overlayImage.dispose && this.overlayImage
                        .dispose(), this.overlayImage = null, this._iTextInstances = null, this.contextContainer = null, this.lowerCanvasEl.classList.remove("lower-canvas"), v.util.setStyle(this.lowerCanvasEl, this._originalCanvasStyle),
                        delete this._originalCanvasStyle, this.lowerCanvasEl.setAttribute("width", this.width), this.lowerCanvasEl.setAttribute("height", this.height), v.util.cleanUpJsdomNode(this.lowerCanvasEl), this.lowerCanvasEl =
                        void 0, this
                    },
                    toString: function() {
                      return "#<fabric.Canvas (" + this.complexity() + "): { objects: " + this._objects.length + " }>"
                    }
                  }), e(v.StaticCanvas.prototype, v.Observable), e(v.StaticCanvas.prototype, v.Collection), e(v.StaticCanvas.prototype, v.DataURLExporter), e(v.StaticCanvas, {
                    EMPTY_JSON: '{"objects": [], "background": "white"}',
                    supports: function(e) {
                      var t = s();
                      if (!t || !t.getContext) return null;
                      var n = t.getContext("2d");
                      return n && "setLineDash" === e ? void 0 !== n.setLineDash : null
                    }
                  }), v.StaticCanvas.prototype.toJSON = v.StaticCanvas.prototype.toObject, v.isLikelyNode && (v.StaticCanvas.prototype.createPNGStream = function() {
                    var e = a(this.lowerCanvasEl);
                    return e && e.createPNGStream()
                  }, v.StaticCanvas.prototype.createJPEGStream = function(e) {
                    var t = a(this.lowerCanvasEl);
                    return t && t.createJPEGStream(e)
                  })
                }
              }(), v.BaseBrush = v.util.createClass({
                color: "rgb(0, 0, 0)",
                width: 1,
                shadow: null,
                strokeLineCap: "round",
                strokeLineJoin: "round",
                strokeMiterLimit: 10,
                strokeDashArray: null,
                limitedToCanvasSize: !1,
                _setBrushStyles: function(e) {
                  e.strokeStyle = this.color, e.lineWidth = this.width, e.lineCap = this.strokeLineCap, e.miterLimit = this.strokeMiterLimit, e.lineJoin = this.strokeLineJoin, e.setLineDash(this.strokeDashArray || [])
                },
                _saveAndTransform: function(e) {
                  var t = this.canvas.viewportTransform;
                  e.save(), e.transform(t[0], t[1], t[2], t[3], t[4], t[5])
                },
                _setShadow: function() {
                  if (this.shadow) {
                    var e = this.canvas,
                      t = this.shadow,
                      n = e.contextTop,
                      r = e.getZoom();
                    e && e._isRetinaScaling() && (r *= v.devicePixelRatio), n.shadowColor = t.color, n.shadowBlur = t.blur * r, n.shadowOffsetX = t.offsetX * r, n.shadowOffsetY = t.offsetY * r
                  }
                },
                needsFullRender: function() {
                  return new v.Color(this.color).getAlpha() < 1 || !!this.shadow
                },
                _resetShadow: function() {
                  var e = this.canvas.contextTop;
                  e.shadowColor = "", e.shadowBlur = e.shadowOffsetX = e.shadowOffsetY = 0
                },
                _isOutSideCanvas: function(e) {
                  return e.x < 0 || e.x > this.canvas.getWidth() || e.y < 0 || e.y > this.canvas.getHeight()
                }
              }), v.PencilBrush = v.util.createClass(v.BaseBrush, {
                decimate: .4,
                drawStraightLine: !1,
                straightLineKey: "shiftKey",
                initialize: function(e) {
                  this.canvas = e, this._points = []
                },
                needsFullRender: function() {
                  return this.callSuper("needsFullRender") || this._hasStraightLine
                },
                _drawSegment: function(e, t, n) {
                  var r = t.midPointFrom(n);
                  return e.quadraticCurveTo(t.x, t.y, r.x, r.y), r
                },
                onMouseDown: function(e, t) {
                  this.canvas._isMainEvent(t.e) && (this.drawStraightLine = t.e[this.straightLineKey], this._prepareForDrawing(e), this._captureDrawingPath(e), this._render())
                },
                onMouseMove: function(e, t) {
                  if (this.canvas._isMainEvent(t.e) && (this.drawStraightLine = t.e[this.straightLineKey], (!0 !== this.limitedToCanvasSize || !this._isOutSideCanvas(e)) && this._captureDrawingPath(e) && this._points.length > 1))
                    if (this.needsFullRender()) this.canvas.clearContext(this.canvas.contextTop), this._render();
                    else {
                      var n = this._points,
                        r = n.length,
                        i = this.canvas.contextTop;
                      this._saveAndTransform(i), this.oldEnd && (i.beginPath(), i.moveTo(this.oldEnd.x, this.oldEnd.y)), this.oldEnd = this._drawSegment(i, n[r - 2], n[r - 1], !0), i.stroke(), i.restore()
                    }
                },
                onMouseUp: function(e) {
                  return !this.canvas._isMainEvent(e.e) || (this.drawStraightLine = !1, this.oldEnd = void 0, this._finalizeAndAddPath(), !1)
                },
                _prepareForDrawing: function(e) {
                  var t = new v.Point(e.x, e.y);
                  this._reset(), this._addPoint(t), this.canvas.contextTop.moveTo(t.x, t.y)
                },
                _addPoint: function(e) {
                  return !(this._points.length > 1 && e.eq(this._points[this._points.length - 1]) || (this.drawStraightLine && this._points.length > 1 && (this._hasStraightLine = !0, this._points.pop()), this._points.push(e), 0))
                },
                _reset: function() {
                  this._points = [], this._setBrushStyles(this.canvas.contextTop), this._setShadow(), this._hasStraightLine = !1
                },
                _captureDrawingPath: function(e) {
                  var t = new v.Point(e.x, e.y);
                  return this._addPoint(t)
                },
                _render: function(e) {
                  var t, n, r = this._points[0],
                    i = this._points[1];
                  if (e = e || this.canvas.contextTop, this._saveAndTransform(e), e.beginPath(), 2 === this._points.length && r.x === i.x && r.y === i.y) {
                    var o = this.width / 1e3;
                    r = new v.Point(r.x, r.y), i = new v.Point(i.x, i.y), r.x -= o, i.x += o
                  }
                  for (e.moveTo(r.x, r.y), t = 1, n = this._points.length; t < n; t++) this._drawSegment(e, r, i), r = this._points[t], i = this._points[t + 1];
                  e.lineTo(r.x, r.y), e.stroke(), e.restore()
                },
                convertPointsToSVGPath: function(e) {
                  var t = this.width / 1e3;
                  return v.util.getSmoothPathFromPoints(e, t)
                },
                _isEmptySVGPath: function(e) {
                  return "M 0 0 Q 0 0 0 0 L 0 0" === v.util.joinPath(e)
                },
                createPath: function(e) {
                  var t = new v.Path(e, {
                    fill: null,
                    stroke: this.color,
                    strokeWidth: this.width,
                    strokeLineCap: this.strokeLineCap,
                    strokeMiterLimit: this.strokeMiterLimit,
                    strokeLineJoin: this.strokeLineJoin,
                    strokeDashArray: this.strokeDashArray
                  });
                  return this.shadow && (this.shadow.affectStroke = !0, t.shadow = new v.Shadow(this.shadow)), t
                },
                decimatePoints: function(e, t) {
                  if (e.length <= 2) return e;
                  var n, r = this.canvas.getZoom(),
                    i = Math.pow(t / r, 2),
                    o = e.length - 1,
                    a = e[0],
                    s = [a];
                  for (n = 1; n < o - 1; n++) Math.pow(a.x - e[n].x, 2) + Math.pow(a.y - e[n].y, 2) >= i && (a = e[n], s.push(a));
                  return s.push(e[o]), s
                },
                _finalizeAndAddPath: function() {
                  this.canvas.contextTop.closePath(), this.decimate && (this._points = this.decimatePoints(this._points, this.decimate));
                  var e = this.convertPointsToSVGPath(this._points);
                  if (this._isEmptySVGPath(e)) this.canvas.requestRenderAll();
                  else {
                    var t = this.createPath(e);
                    this.canvas.clearContext(this.canvas.contextTop), this.canvas.fire("before:path:created", {
                      path: t
                    }), this.canvas.add(t), this.canvas.requestRenderAll(), t.setCoords(), this._resetShadow(), this.canvas.fire("path:created", {
                      path: t
                    })
                  }
                }
              }), v.CircleBrush = v.util.createClass(v.BaseBrush, {
                width: 10,
                initialize: function(e) {
                  this.canvas = e, this.points = []
                },
                drawDot: function(e) {
                  var t = this.addPoint(e),
                    n = this.canvas.contextTop;
                  this._saveAndTransform(n), this.dot(n, t), n.restore()
                },
                dot: function(e, t) {
                  e.fillStyle = t.fill, e.beginPath(), e.arc(t.x, t.y, t.radius, 0, 2 * Math.PI, !1), e.closePath(), e.fill()
                },
                onMouseDown: function(e) {
                  this.points.length = 0, this.canvas.clearContext(this.canvas.contextTop), this._setShadow(), this.drawDot(e)
                },
                _render: function() {
                  var e, t, n = this.canvas.contextTop,
                    r = this.points;
                  for (this._saveAndTransform(n), e = 0, t = r.length; e < t; e++) this.dot(n, r[e]);
                  n.restore()
                },
                onMouseMove: function(e) {
                  !0 === this.limitedToCanvasSize && this._isOutSideCanvas(e) || (this.needsFullRender() ? (this.canvas.clearContext(this.canvas.contextTop), this.addPoint(e), this._render()) : this.drawDot(e))
                },
                onMouseUp: function() {
                  var e, t, n = this.canvas.renderOnAddRemove;
                  this.canvas.renderOnAddRemove = !1;
                  var r = [];
                  for (e = 0, t = this.points.length; e < t; e++) {
                    var i = this.points[e],
                      o = new v.Circle({
                        radius: i.radius,
                        left: i.x,
                        top: i.y,
                        originX: "center",
                        originY: "center",
                        fill: i.fill
                      });
                    this.shadow && (o.shadow = new v.Shadow(this.shadow)), r.push(o)
                  }
                  var a = new v.Group(r);
                  a.canvas = this.canvas, this.canvas.fire("before:path:created", {
                    path: a
                  }), this.canvas.add(a), this.canvas.fire("path:created", {
                    path: a
                  }), this.canvas.clearContext(this.canvas.contextTop), this._resetShadow(), this.canvas.renderOnAddRemove = n, this.canvas.requestRenderAll()
                },
                addPoint: function(e) {
                  var t = new v.Point(e.x, e.y),
                    n = v.util.getRandomInt(Math.max(0, this.width - 20), this.width + 20) / 2,
                    r = new v.Color(this.color).setAlpha(v.util.getRandomInt(0, 100) / 100).toRgba();
                  return t.radius = n, t.fill = r, this.points.push(t), t
                }
              }), v.SprayBrush = v.util.createClass(v.BaseBrush, {
                width: 10,
                density: 20,
                dotWidth: 1,
                dotWidthVariance: 1,
                randomOpacity: !1,
                optimizeOverlapping: !0,
                initialize: function(e) {
                  this.canvas = e, this.sprayChunks = []
                },
                onMouseDown: function(e) {
                  this.sprayChunks.length = 0, this.canvas.clearContext(this.canvas.contextTop), this._setShadow(), this.addSprayChunk(e), this.render(this.sprayChunkPoints)
                },
                onMouseMove: function(e) {
                  !0 === this.limitedToCanvasSize && this._isOutSideCanvas(e) || (this.addSprayChunk(e), this.render(this.sprayChunkPoints))
                },
                onMouseUp: function() {
                  var e = this.canvas.renderOnAddRemove;
                  this.canvas.renderOnAddRemove = !1;
                  for (var t = [], n = 0, r = this.sprayChunks.length; n < r; n++)
                    for (var i = this.sprayChunks[n], o = 0, a = i.length; o < a; o++) {
                      var s = new v.Rect({
                        width: i[o].width,
                        height: i[o].width,
                        left: i[o].x + 1,
                        top: i[o].y + 1,
                        originX: "center",
                        originY: "center",
                        fill: this.color
                      });
                      t.push(s)
                    }
                  this.optimizeOverlapping && (t = this._getOptimizedRects(t));
                  var l = new v.Group(t);
                  this.shadow && l.set("shadow", new v.Shadow(this.shadow)), this.canvas.fire("before:path:created", {
                    path: l
                  }), this.canvas.add(l), this.canvas.fire("path:created", {
                    path: l
                  }), this.canvas.clearContext(this.canvas.contextTop), this._resetShadow(), this.canvas.renderOnAddRemove = e, this.canvas.requestRenderAll()
                },
                _getOptimizedRects: function(e) {
                  var t, n, r, i = {};
                  for (n = 0, r = e.length; n < r; n++) i[t = e[n].left + "" + e[n].top] || (i[t] = e[n]);
                  var o = [];
                  for (t in i) o.push(i[t]);
                  return o
                },
                render: function(e) {
                  var t, n, r = this.canvas.contextTop;
                  for (r.fillStyle = this.color, this._saveAndTransform(r), t = 0, n = e.length; t < n; t++) {
                    var i = e[t];
                    void 0 !== i.opacity && (r.globalAlpha = i.opacity), r.fillRect(i.x, i.y, i.width, i.width)
                  }
                  r.restore()
                },
                _render: function() {
                  var e, t, n = this.canvas.contextTop;
                  for (n.fillStyle = this.color, this._saveAndTransform(n), e = 0, t = this.sprayChunks.length; e < t; e++) this.render(this.sprayChunks[e]);
                  n.restore()
                },
                addSprayChunk: function(e) {
                  this.sprayChunkPoints = [];
                  var t, n, r, i, o = this.width / 2;
                  for (i = 0; i < this.density; i++) {
                    t = v.util.getRandomInt(e.x - o, e.x + o), n = v.util.getRandomInt(e.y - o, e.y + o), r = this.dotWidthVariance ? v.util.getRandomInt(Math.max(1, this.dotWidth - this.dotWidthVariance), this.dotWidth + this
                      .dotWidthVariance) : this.dotWidth;
                    var a = new v.Point(t, n);
                    a.width = r, this.randomOpacity && (a.opacity = v.util.getRandomInt(0, 100) / 100), this.sprayChunkPoints.push(a)
                  }
                  this.sprayChunks.push(this.sprayChunkPoints)
                }
              }), v.PatternBrush = v.util.createClass(v.PencilBrush, {
                getPatternSrc: function() {
                  var e = v.util.createCanvasElement(),
                    t = e.getContext("2d");
                  return e.width = e.height = 25, t.fillStyle = this.color, t.beginPath(), t.arc(10, 10, 10, 0, 2 * Math.PI, !1), t.closePath(), t.fill(), e
                },
                getPatternSrcFunction: function() {
                  return String(this.getPatternSrc).replace("this.color", '"' + this.color + '"')
                },
                getPattern: function(e) {
                  return e.createPattern(this.source || this.getPatternSrc(), "repeat")
                },
                _setBrushStyles: function(e) {
                  this.callSuper("_setBrushStyles", e), e.strokeStyle = this.getPattern(e)
                },
                createPath: function(e) {
                  var t = this.callSuper("createPath", e),
                    n = t._getLeftTopCoords().scalarAdd(t.strokeWidth / 2);
                  return t.stroke = new v.Pattern({
                    source: this.source || this.getPatternSrcFunction(),
                    offsetX: -n.x,
                    offsetY: -n.y
                  }), t
                }
              }),
              function() {
                var e = v.util.getPointer,
                  t = v.util.degreesToRadians,
                  n = v.util.isTouchEvent;
                for (var r in v.Canvas = v.util.createClass(v.StaticCanvas, {
                    initialize: function(e, t) {
                      t || (t = {}), this.renderAndResetBound = this.renderAndReset.bind(this), this.requestRenderAllBound = this.requestRenderAll.bind(this), this._initStatic(e, t), this._initInteractive(), this._createCacheCanvas()
                    },
                    uniformScaling: !0,
                    uniScaleKey: "shiftKey",
                    centeredScaling: !1,
                    centeredRotation: !1,
                    centeredKey: "altKey",
                    altActionKey: "shiftKey",
                    interactive: !0,
                    selection: !0,
                    selectionKey: "shiftKey",
                    altSelectionKey: null,
                    selectionColor: "rgba(100, 100, 255, 0.3)",
                    selectionDashArray: [],
                    selectionBorderColor: "rgba(255, 255, 255, 0.3)",
                    selectionLineWidth: 1,
                    selectionFullyContained: !1,
                    hoverCursor: "move",
                    moveCursor: "move",
                    defaultCursor: "default",
                    freeDrawingCursor: "crosshair",
                    notAllowedCursor: "not-allowed",
                    containerClass: "canvas-container",
                    perPixelTargetFind: !1,
                    targetFindTolerance: 0,
                    skipTargetFind: !1,
                    isDrawingMode: !1,
                    preserveObjectStacking: !1,
                    snapAngle: 0,
                    snapThreshold: null,
                    stopContextMenu: !1,
                    fireRightClick: !1,
                    fireMiddleClick: !1,
                    targets: [],
                    enablePointerEvents: !1,
                    _hoveredTarget: null,
                    _hoveredTargets: [],
                    _initInteractive: function() {
                      this._currentTransform = null, this._groupSelector = null, this._initWrapperElement(), this._createUpperCanvas(), this._initEventListeners(), this._initRetinaScaling(), this.freeDrawingBrush = v.PencilBrush && new v
                        .PencilBrush(this), this.calcOffset()
                    },
                    _chooseObjectsToRender: function() {
                      var e, t, n, r = this.getActiveObjects();
                      if (r.length > 0 && !this.preserveObjectStacking) {
                        t = [], n = [];
                        for (var i = 0, o = this._objects.length; i < o; i++) e = this._objects[i], -1 === r.indexOf(e) ? t.push(e) : n.push(e);
                        r.length > 1 && (this._activeObject._objects = n), t.push.apply(t, n)
                      } else t = this._objects;
                      return t
                    },
                    renderAll: function() {
                      !this.contextTopDirty || this._groupSelector || this.isDrawingMode || (this.clearContext(this.contextTop), this.contextTopDirty = !1), this.hasLostContext && (this.renderTopLayer(this.contextTop), this
                        .hasLostContext = !1);
                      var e = this.contextContainer;
                      return this.renderCanvas(e, this._chooseObjectsToRender()), this
                    },
                    renderTopLayer: function(e) {
                      e.save(), this.isDrawingMode && this._isCurrentlyDrawing && (this.freeDrawingBrush && this.freeDrawingBrush._render(), this.contextTopDirty = !0), this.selection && this._groupSelector && (this._drawSelection(e), this
                        .contextTopDirty = !0), e.restore()
                    },
                    renderTop: function() {
                      var e = this.contextTop;
                      return this.clearContext(e), this.renderTopLayer(e), this.fire("after:render"), this
                    },
                    _normalizePointer: function(e, t) {
                      var n = e.calcTransformMatrix(),
                        r = v.util.invertTransform(n),
                        i = this.restorePointerVpt(t);
                      return v.util.transformPoint(i, r)
                    },
                    isTargetTransparent: function(e, t, n) {
                      if (e.shouldCache() && e._cacheCanvas && e !== this._activeObject) {
                        var r = this._normalizePointer(e, {
                            x: t,
                            y: n
                          }),
                          i = Math.max(e.cacheTranslationX + r.x * e.zoomX, 0),
                          o = Math.max(e.cacheTranslationY + r.y * e.zoomY, 0);
                        return v.util.isTransparent(e._cacheContext, Math.round(i), Math.round(o), this.targetFindTolerance)
                      }
                      var a = this.contextCache,
                        s = e.selectionBackgroundColor,
                        l = this.viewportTransform;
                      return e.selectionBackgroundColor = "", this.clearContext(a), a.save(), a.transform(l[0], l[1], l[2], l[3], l[4], l[5]), e.render(a), a.restore(), e.selectionBackgroundColor = s, v.util.isTransparent(a, t, n, this
                        .targetFindTolerance)
                    },
                    _isSelectionKeyPressed: function(e) {
                      return Array.isArray(this.selectionKey) ? !!this.selectionKey.find((function(t) {
                        return !0 === e[t]
                      })) : e[this.selectionKey]
                    },
                    _shouldClearSelection: function(e, t) {
                      var n = this.getActiveObjects(),
                        r = this._activeObject;
                      return !t || t && r && n.length > 1 && -1 === n.indexOf(t) && r !== t && !this._isSelectionKeyPressed(e) || t && !t.evented || t && !t.selectable && r && r !== t
                    },
                    _shouldCenterTransform: function(e, t, n) {
                      var r;
                      if (e) return "scale" === t || "scaleX" === t || "scaleY" === t || "resizing" === t ? r = this.centeredScaling || e.centeredScaling : "rotate" === t && (r = this.centeredRotation || e.centeredRotation), r ? !n : n
                    },
                    _getOriginFromCorner: function(e, t) {
                      var n = {
                        x: e.originX,
                        y: e.originY
                      };
                      return "ml" === t || "tl" === t || "bl" === t ? n.x = "right" : "mr" !== t && "tr" !== t && "br" !== t || (n.x = "left"), "tl" === t || "mt" === t || "tr" === t ? n.y = "bottom" : "bl" !== t && "mb" !== t && "br" !==
                        t || (n.y = "top"), n
                    },
                    _getActionFromCorner: function(e, t, n, r) {
                      if (!t || !e) return "drag";
                      var i = r.controls[t];
                      return i.getActionName(n, i, r)
                    },
                    _setupCurrentTransform: function(e, n, r) {
                      if (n) {
                        var i = this.getPointer(e),
                          o = n.__corner,
                          a = n.controls[o],
                          s = r && o ? a.getActionHandler(e, n, a) : v.controlsUtils.dragHandler,
                          l = this._getActionFromCorner(r, o, e, n),
                          c = this._getOriginFromCorner(n, o),
                          u = e[this.centeredKey],
                          h = {
                            target: n,
                            action: l,
                            actionHandler: s,
                            corner: o,
                            scaleX: n.scaleX,
                            scaleY: n.scaleY,
                            skewX: n.skewX,
                            skewY: n.skewY,
                            offsetX: i.x - n.left,
                            offsetY: i.y - n.top,
                            originX: c.x,
                            originY: c.y,
                            ex: i.x,
                            ey: i.y,
                            lastX: i.x,
                            lastY: i.y,
                            theta: t(n.angle),
                            width: n.width * n.scaleX,
                            shiftKey: e.shiftKey,
                            altKey: u,
                            original: v.util.saveObjectTransform(n)
                          };
                        this._shouldCenterTransform(n, l, u) && (h.originX = "center", h.originY = "center"), h.original.originX = c.x, h.original.originY = c.y, this._currentTransform = h, this._beforeTransform(e)
                      }
                    },
                    setCursor: function(e) {
                      this.upperCanvasEl.style.cursor = e
                    },
                    _drawSelection: function(e) {
                      var t = this._groupSelector,
                        n = new v.Point(t.ex, t.ey),
                        r = v.util.transformPoint(n, this.viewportTransform),
                        i = new v.Point(t.ex + t.left, t.ey + t.top),
                        o = v.util.transformPoint(i, this.viewportTransform),
                        a = Math.min(r.x, o.x),
                        s = Math.min(r.y, o.y),
                        l = Math.max(r.x, o.x),
                        c = Math.max(r.y, o.y),
                        u = this.selectionLineWidth / 2;
                      this.selectionColor && (e.fillStyle = this.selectionColor, e.fillRect(a, s, l - a, c - s)), this.selectionLineWidth && this.selectionBorderColor && (e.lineWidth = this.selectionLineWidth, e.strokeStyle = this
                        .selectionBorderColor, a += u, s += u, l -= u, c -= u, v.Object.prototype._setLineDash.call(this, e, this.selectionDashArray), e.strokeRect(a, s, l - a, c - s))
                    },
                    findTarget: function(e, t) {
                      if (!this.skipTargetFind) {
                        var r, i, o = this.getPointer(e, !0),
                          a = this._activeObject,
                          s = this.getActiveObjects(),
                          l = n(e),
                          c = s.length > 1 && !t || 1 === s.length;
                        if (this.targets = [], c && a._findTargetCorner(o, l)) return a;
                        if (s.length > 1 && !t && a === this._searchPossibleTargets([a], o)) return a;
                        if (1 === s.length && a === this._searchPossibleTargets([a], o)) {
                          if (!this.preserveObjectStacking) return a;
                          r = a, i = this.targets, this.targets = []
                        }
                        var u = this._searchPossibleTargets(this._objects, o);
                        return e[this.altSelectionKey] && u && r && u !== r && (u = r, this.targets = i), u
                      }
                    },
                    _checkTarget: function(e, t, n) {
                      if (t && t.visible && t.evented && t.containsPoint(e)) {
                        if (!this.perPixelTargetFind && !t.perPixelTargetFind || t.isEditing) return !0;
                        if (!this.isTargetTransparent(t, n.x, n.y)) return !0
                      }
                    },
                    _searchPossibleTargets: function(e, t) {
                      for (var n, r, i = e.length; i--;) {
                        var o = e[i],
                          a = o.group ? this._normalizePointer(o.group, t) : t;
                        if (this._checkTarget(a, o, t)) {
                          (n = e[i]).subTargetCheck && n instanceof v.Group && (r = this._searchPossibleTargets(n._objects, t)) && this.targets.push(r);
                          break
                        }
                      }
                      return n
                    },
                    restorePointerVpt: function(e) {
                      return v.util.transformPoint(e, v.util.invertTransform(this.viewportTransform))
                    },
                    getPointer: function(t, n) {
                      if (this._absolutePointer && !n) return this._absolutePointer;
                      if (this._pointer && n) return this._pointer;
                      var r, i = e(t),
                        o = this.upperCanvasEl,
                        a = o.getBoundingClientRect(),
                        s = a.width || 0,
                        l = a.height || 0;
                      s && l || ("top" in a && "bottom" in a && (l = Math.abs(a.top - a.bottom)), "right" in a && "left" in a && (s = Math.abs(a.right - a.left))), this.calcOffset(), i.x = i.x - this._offset.left, i.y = i.y - this._offset
                        .top, n || (i = this.restorePointerVpt(i));
                      var c = this.getRetinaScaling();
                      return 1 !== c && (i.x /= c, i.y /= c), r = 0 === s || 0 === l ? {
                        width: 1,
                        height: 1
                      } : {
                        width: o.width / s,
                        height: o.height / l
                      }, {
                        x: i.x * r.width,
                        y: i.y * r.height
                      }
                    },
                    _createUpperCanvas: function() {
                      var e = this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/, ""),
                        t = this.lowerCanvasEl,
                        n = this.upperCanvasEl;
                      n ? n.className = "" : (n = this._createCanvasElement(), this.upperCanvasEl = n), v.util.addClass(n, "upper-canvas " + e), this.wrapperEl.appendChild(n), this._copyCanvasStyle(t, n), this._applyCanvasStyle(n), this
                        .contextTop = n.getContext("2d")
                    },
                    getTopContext: function() {
                      return this.contextTop
                    },
                    _createCacheCanvas: function() {
                      this.cacheCanvasEl = this._createCanvasElement(), this.cacheCanvasEl.setAttribute("width", this.width), this.cacheCanvasEl.setAttribute("height", this.height), this.contextCache = this.cacheCanvasEl.getContext("2d")
                    },
                    _initWrapperElement: function() {
                      this.wrapperEl = v.util.wrapElement(this.lowerCanvasEl, "div", {
                        class: this.containerClass
                      }), v.util.setStyle(this.wrapperEl, {
                        width: this.width + "px",
                        height: this.height + "px",
                        position: "relative"
                      }), v.util.makeElementUnselectable(this.wrapperEl)
                    },
                    _applyCanvasStyle: function(e) {
                      var t = this.width || e.width,
                        n = this.height || e.height;
                      v.util.setStyle(e, {
                        position: "absolute",
                        width: t + "px",
                        height: n + "px",
                        left: 0,
                        top: 0,
                        "touch-action": this.allowTouchScrolling ? "manipulation" : "none",
                        "-ms-touch-action": this.allowTouchScrolling ? "manipulation" : "none"
                      }), e.width = t, e.height = n, v.util.makeElementUnselectable(e)
                    },
                    _copyCanvasStyle: function(e, t) {
                      t.style.cssText = e.style.cssText
                    },
                    getSelectionContext: function() {
                      return this.contextTop
                    },
                    getSelectionElement: function() {
                      return this.upperCanvasEl
                    },
                    getActiveObject: function() {
                      return this._activeObject
                    },
                    getActiveObjects: function() {
                      var e = this._activeObject;
                      return e ? "activeSelection" === e.type && e._objects ? e._objects.slice(0) : [e] : []
                    },
                    _onObjectRemoved: function(e) {
                      e === this._activeObject && (this.fire("before:selection:cleared", {
                        target: e
                      }), this._discardActiveObject(), this.fire("selection:cleared", {
                        target: e
                      }), e.fire("deselected")), e === this._hoveredTarget && (this._hoveredTarget = null, this._hoveredTargets = []), this.callSuper("_onObjectRemoved", e)
                    },
                    _fireSelectionEvents: function(e, t) {
                      var n = !1,
                        r = this.getActiveObjects(),
                        i = [],
                        o = [];
                      e.forEach((function(e) {
                        -1 === r.indexOf(e) && (n = !0, e.fire("deselected", {
                          e: t,
                          target: e
                        }), o.push(e))
                      })), r.forEach((function(r) {
                        -1 === e.indexOf(r) && (n = !0, r.fire("selected", {
                          e: t,
                          target: r
                        }), i.push(r))
                      })), e.length > 0 && r.length > 0 ? n && this.fire("selection:updated", {
                        e: t,
                        selected: i,
                        deselected: o
                      }) : r.length > 0 ? this.fire("selection:created", {
                        e: t,
                        selected: i
                      }) : e.length > 0 && this.fire("selection:cleared", {
                        e: t,
                        deselected: o
                      })
                    },
                    setActiveObject: function(e, t) {
                      var n = this.getActiveObjects();
                      return this._setActiveObject(e, t), this._fireSelectionEvents(n, t), this
                    },
                    _setActiveObject: function(e, t) {
                      return this._activeObject !== e && (!!this._discardActiveObject(t, e) && (!e.onSelect({
                        e: t
                      }) && (this._activeObject = e, !0)))
                    },
                    _discardActiveObject: function(e, t) {
                      var n = this._activeObject;
                      if (n) {
                        if (n.onDeselect({
                            e: e,
                            object: t
                          })) return !1;
                        this._activeObject = null
                      }
                      return !0
                    },
                    discardActiveObject: function(e) {
                      var t = this.getActiveObjects(),
                        n = this.getActiveObject();
                      return t.length && this.fire("before:selection:cleared", {
                        target: n,
                        e: e
                      }), this._discardActiveObject(e), this._fireSelectionEvents(t, e), this
                    },
                    dispose: function() {
                      var e = this.wrapperEl;
                      return this.removeListeners(), e.removeChild(this.upperCanvasEl), e.removeChild(this.lowerCanvasEl), this.contextCache = null, this.contextTop = null, ["upperCanvasEl", "cacheCanvasEl"].forEach(function(e) {
                        v.util.cleanUpJsdomNode(this[e]), this[e] = void 0
                      }.bind(this)), e.parentNode && e.parentNode.replaceChild(this.lowerCanvasEl, this.wrapperEl), delete this.wrapperEl, v.StaticCanvas.prototype.dispose.call(this), this
                    },
                    clear: function() {
                      return this.discardActiveObject(), this.clearContext(this.contextTop), this.callSuper("clear")
                    },
                    drawControls: function(e) {
                      var t = this._activeObject;
                      t && t._renderControls(e)
                    },
                    _toObject: function(e, t, n) {
                      var r = this._realizeGroupTransformOnObject(e),
                        i = this.callSuper("_toObject", e, t, n);
                      return this._unwindGroupTransformOnObject(e, r), i
                    },
                    _realizeGroupTransformOnObject: function(e) {
                      if (e.group && "activeSelection" === e.group.type && this._activeObject === e.group) {
                        var t = {};
                        return ["angle", "flipX", "flipY", "left", "scaleX", "scaleY", "skewX", "skewY", "top"].forEach((function(n) {
                          t[n] = e[n]
                        })), v.util.addTransformToObject(e, this._activeObject.calcOwnMatrix()), t
                      }
                      return null
                    },
                    _unwindGroupTransformOnObject: function(e, t) {
                      t && e.set(t)
                    },
                    _setSVGObject: function(e, t, n) {
                      var r = this._realizeGroupTransformOnObject(t);
                      this.callSuper("_setSVGObject", e, t, n), this._unwindGroupTransformOnObject(t, r)
                    },
                    setViewportTransform: function(e) {
                      this.renderOnAddRemove && this._activeObject && this._activeObject.isEditing && this._activeObject.clearContextTop(), v.StaticCanvas.prototype.setViewportTransform.call(this, e)
                    }
                  }), v.StaticCanvas) "prototype" !== r && (v.Canvas[r] = v.StaticCanvas[r])
              }(),
              function() {
                var e = v.util.addListener,
                  t = v.util.removeListener,
                  n = {
                    passive: !1
                  };

                function r(e, t) {
                  return e.button && e.button === t - 1
                }
                v.util.object.extend(v.Canvas.prototype, {
                  mainTouchId: null,
                  _initEventListeners: function() {
                    this.removeListeners(), this._bindEvents(), this.addOrRemove(e, "add")
                  },
                  _getEventPrefix: function() {
                    return this.enablePointerEvents ? "pointer" : "mouse"
                  },
                  addOrRemove: function(e, t) {
                    var r = this.upperCanvasEl,
                      i = this._getEventPrefix();
                    e(v.window, "resize", this._onResize), e(r, i + "down", this._onMouseDown), e(r, i + "move", this._onMouseMove, n), e(r, i + "out", this._onMouseOut), e(r, i + "enter", this._onMouseEnter), e(r, "wheel", this
                      ._onMouseWheel), e(r, "contextmenu", this._onContextMenu), e(r, "dblclick", this._onDoubleClick), e(r, "dragover", this._onDragOver), e(r, "dragenter", this._onDragEnter), e(r, "dragleave", this._onDragLeave), e(r,
                      "drop", this._onDrop), this.enablePointerEvents || e(r, "touchstart", this._onTouchStart, n), "undefined" != typeof eventjs && t in eventjs && (eventjs[t](r, "gesture", this._onGesture), eventjs[t](r, "drag", this
                      ._onDrag), eventjs[t](r, "orientation", this._onOrientationChange), eventjs[t](r, "shake", this._onShake), eventjs[t](r, "longpress", this._onLongPress))
                  },
                  removeListeners: function() {
                    this.addOrRemove(t, "remove");
                    var e = this._getEventPrefix();
                    t(v.document, e + "up", this._onMouseUp), t(v.document, "touchend", this._onTouchEnd, n), t(v.document, e + "move", this._onMouseMove, n), t(v.document, "touchmove", this._onMouseMove, n)
                  },
                  _bindEvents: function() {
                    this.eventsBound || (this._onMouseDown = this._onMouseDown.bind(this), this._onTouchStart = this._onTouchStart.bind(this), this._onMouseMove = this._onMouseMove.bind(this), this._onMouseUp = this._onMouseUp.bind(this),
                      this._onTouchEnd = this._onTouchEnd.bind(this), this._onResize = this._onResize.bind(this), this._onGesture = this._onGesture.bind(this), this._onDrag = this._onDrag.bind(this), this._onShake = this._onShake.bind(
                        this), this._onLongPress = this._onLongPress.bind(this), this._onOrientationChange = this._onOrientationChange.bind(this), this._onMouseWheel = this._onMouseWheel.bind(this), this._onMouseOut = this._onMouseOut
                      .bind(this), this._onMouseEnter = this._onMouseEnter.bind(this), this._onContextMenu = this._onContextMenu.bind(this), this._onDoubleClick = this._onDoubleClick.bind(this), this._onDragOver = this._onDragOver.bind(
                        this), this._onDragEnter = this._simpleEventHandler.bind(this, "dragenter"), this._onDragLeave = this._simpleEventHandler.bind(this, "dragleave"), this._onDrop = this._onDrop.bind(this), this.eventsBound = !0)
                  },
                  _onGesture: function(e, t) {
                    this.__onTransformGesture && this.__onTransformGesture(e, t)
                  },
                  _onDrag: function(e, t) {
                    this.__onDrag && this.__onDrag(e, t)
                  },
                  _onMouseWheel: function(e) {
                    this.__onMouseWheel(e)
                  },
                  _onMouseOut: function(e) {
                    var t = this._hoveredTarget;
                    this.fire("mouse:out", {
                      target: t,
                      e: e
                    }), this._hoveredTarget = null, t && t.fire("mouseout", {
                      e: e
                    });
                    var n = this;
                    this._hoveredTargets.forEach((function(r) {
                      n.fire("mouse:out", {
                        target: t,
                        e: e
                      }), r && t.fire("mouseout", {
                        e: e
                      })
                    })), this._hoveredTargets = []
                  },
                  _onMouseEnter: function(e) {
                    this._currentTransform || this.findTarget(e) || (this.fire("mouse:over", {
                      target: null,
                      e: e
                    }), this._hoveredTarget = null, this._hoveredTargets = [])
                  },
                  _onOrientationChange: function(e, t) {
                    this.__onOrientationChange && this.__onOrientationChange(e, t)
                  },
                  _onShake: function(e, t) {
                    this.__onShake && this.__onShake(e, t)
                  },
                  _onLongPress: function(e, t) {
                    this.__onLongPress && this.__onLongPress(e, t)
                  },
                  _onDragOver: function(e) {
                    e.preventDefault();
                    var t = this._simpleEventHandler("dragover", e);
                    this._fireEnterLeaveEvents(t, e)
                  },
                  _onDrop: function(e) {
                    return this._simpleEventHandler("drop:before", e), this._simpleEventHandler("drop", e)
                  },
                  _onContextMenu: function(e) {
                    return this.stopContextMenu && (e.stopPropagation(), e.preventDefault()), !1
                  },
                  _onDoubleClick: function(e) {
                    this._cacheTransformEventData(e), this._handleEvent(e, "dblclick"), this._resetTransformEventData(e)
                  },
                  getPointerId: function(e) {
                    var t = e.changedTouches;
                    return t ? t[0] && t[0].identifier : this.enablePointerEvents ? e.pointerId : -1
                  },
                  _isMainEvent: function(e) {
                    return !0 === e.isPrimary || !1 !== e.isPrimary && ("touchend" === e.type && 0 === e.touches.length || (!e.changedTouches || e.changedTouches[0].identifier === this.mainTouchId))
                  },
                  _onTouchStart: function(r) {
                    r.preventDefault(), null === this.mainTouchId && (this.mainTouchId = this.getPointerId(r)), this.__onMouseDown(r), this._resetTransformEventData();
                    var i = this.upperCanvasEl,
                      o = this._getEventPrefix();
                    e(v.document, "touchend", this._onTouchEnd, n), e(v.document, "touchmove", this._onMouseMove, n), t(i, o + "down", this._onMouseDown)
                  },
                  _onMouseDown: function(r) {
                    this.__onMouseDown(r), this._resetTransformEventData();
                    var i = this.upperCanvasEl,
                      o = this._getEventPrefix();
                    t(i, o + "move", this._onMouseMove, n), e(v.document, o + "up", this._onMouseUp), e(v.document, o + "move", this._onMouseMove, n)
                  },
                  _onTouchEnd: function(r) {
                    if (!(r.touches.length > 0)) {
                      this.__onMouseUp(r), this._resetTransformEventData(), this.mainTouchId = null;
                      var i = this._getEventPrefix();
                      t(v.document, "touchend", this._onTouchEnd, n), t(v.document, "touchmove", this._onMouseMove, n);
                      var o = this;
                      this._willAddMouseDown && clearTimeout(this._willAddMouseDown), this._willAddMouseDown = setTimeout((function() {
                        e(o.upperCanvasEl, i + "down", o._onMouseDown), o._willAddMouseDown = 0
                      }), 400)
                    }
                  },
                  _onMouseUp: function(r) {
                    this.__onMouseUp(r), this._resetTransformEventData();
                    var i = this.upperCanvasEl,
                      o = this._getEventPrefix();
                    this._isMainEvent(r) && (t(v.document, o + "up", this._onMouseUp), t(v.document, o + "move", this._onMouseMove, n), e(i, o + "move", this._onMouseMove, n))
                  },
                  _onMouseMove: function(e) {
                    !this.allowTouchScrolling && e.preventDefault && e.preventDefault(), this.__onMouseMove(e)
                  },
                  _onResize: function() {
                    this.calcOffset()
                  },
                  _shouldRender: function(e) {
                    var t = this._activeObject;
                    return !!(!!t != !!e || t && e && t !== e) || (t && t.isEditing, !1)
                  },
                  __onMouseUp: function(e) {
                    var t, n = this._currentTransform,
                      i = this._groupSelector,
                      o = !1,
                      a = !i || 0 === i.left && 0 === i.top;
                    if (this._cacheTransformEventData(e), t = this._target, this._handleEvent(e, "up:before"), r(e, 3)) this.fireRightClick && this._handleEvent(e, "up", 3, a);
                    else {
                      if (r(e, 2)) return this.fireMiddleClick && this._handleEvent(e, "up", 2, a), void this._resetTransformEventData();
                      if (this.isDrawingMode && this._isCurrentlyDrawing) this._onMouseUpInDrawingMode(e);
                      else if (this._isMainEvent(e)) {
                        if (n && (this._finalizeCurrentTransform(e), o = n.actionPerformed), !a) {
                          var s = t === this._activeObject;
                          this._maybeGroupObjects(e), o || (o = this._shouldRender(t) || !s && t === this._activeObject)
                        }
                        var l, c;
                        if (t) {
                          if (l = t._findTargetCorner(this.getPointer(e, !0), v.util.isTouchEvent(e)), t.selectable && t !== this._activeObject && "up" === t.activeOn) this.setActiveObject(t, e), o = !0;
                          else {
                            var u = t.controls[l],
                              h = u && u.getMouseUpHandler(e, t, u);
                            h && h(e, n, (c = this.getPointer(e)).x, c.y)
                          }
                          t.isMoving = !1
                        }
                        if (n && (n.target !== t || n.corner !== l)) {
                          var p = n.target && n.target.controls[n.corner],
                            d = p && p.getMouseUpHandler(e, t, u);
                          c = c || this.getPointer(e), d && d(e, n, c.x, c.y)
                        }
                        this._setCursorFromEvent(e, t), this._handleEvent(e, "up", 1, a), this._groupSelector = null, this._currentTransform = null, t && (t.__corner = 0), o ? this.requestRenderAll() : a || this.renderTop()
                      }
                    }
                  },
                  _simpleEventHandler: function(e, t) {
                    var n = this.findTarget(t),
                      r = this.targets,
                      i = {
                        e: t,
                        target: n,
                        subTargets: r
                      };
                    if (this.fire(e, i), n && n.fire(e, i), !r) return n;
                    for (var o = 0; o < r.length; o++) r[o].fire(e, i);
                    return n
                  },
                  _handleEvent: function(e, t, n, r) {
                    var i = this._target,
                      o = this.targets || [],
                      a = {
                        e: e,
                        target: i,
                        subTargets: o,
                        button: n || 1,
                        isClick: r || !1,
                        pointer: this._pointer,
                        absolutePointer: this._absolutePointer,
                        transform: this._currentTransform
                      };
                    "up" === t && (a.currentTarget = this.findTarget(e), a.currentSubTargets = this.targets), this.fire("mouse:" + t, a), i && i.fire("mouse" + t, a);
                    for (var s = 0; s < o.length; s++) o[s].fire("mouse" + t, a)
                  },
                  _finalizeCurrentTransform: function(e) {
                    var t = this._currentTransform,
                      n = t.target,
                      r = {
                        e: e,
                        target: n,
                        transform: t,
                        action: t.action
                      };
                    n._scaling && (n._scaling = !1), n.setCoords(), (t.actionPerformed || this.stateful && n.hasStateChanged()) && this._fire("modified", r)
                  },
                  _onMouseDownInDrawingMode: function(e) {
                    this._isCurrentlyDrawing = !0, this.getActiveObject() && this.discardActiveObject(e).requestRenderAll();
                    var t = this.getPointer(e);
                    this.freeDrawingBrush.onMouseDown(t, {
                      e: e,
                      pointer: t
                    }), this._handleEvent(e, "down")
                  },
                  _onMouseMoveInDrawingMode: function(e) {
                    if (this._isCurrentlyDrawing) {
                      var t = this.getPointer(e);
                      this.freeDrawingBrush.onMouseMove(t, {
                        e: e,
                        pointer: t
                      })
                    }
                    this.setCursor(this.freeDrawingCursor), this._handleEvent(e, "move")
                  },
                  _onMouseUpInDrawingMode: function(e) {
                    var t = this.getPointer(e);
                    this._isCurrentlyDrawing = this.freeDrawingBrush.onMouseUp({
                      e: e,
                      pointer: t
                    }), this._handleEvent(e, "up")
                  },
                  __onMouseDown: function(e) {
                    this._cacheTransformEventData(e), this._handleEvent(e, "down:before");
                    var t = this._target;
                    if (r(e, 3)) this.fireRightClick && this._handleEvent(e, "down", 3);
                    else if (r(e, 2)) this.fireMiddleClick && this._handleEvent(e, "down", 2);
                    else if (this.isDrawingMode) this._onMouseDownInDrawingMode(e);
                    else if (this._isMainEvent(e) && !this._currentTransform) {
                      var n = this._pointer;
                      this._previousPointer = n;
                      var i = this._shouldRender(t),
                        o = this._shouldGroup(e, t);
                      if (this._shouldClearSelection(e, t) ? this.discardActiveObject(e) : o && (this._handleGrouping(e, t), t = this._activeObject), !this.selection || t && (t.selectable || t.isEditing || t === this._activeObject) || (this
                          ._groupSelector = {
                            ex: this._absolutePointer.x,
                            ey: this._absolutePointer.y,
                            top: 0,
                            left: 0
                          }), t) {
                        var a = t === this._activeObject;
                        t.selectable && "down" === t.activeOn && this.setActiveObject(t, e);
                        var s = t._findTargetCorner(this.getPointer(e, !0), v.util.isTouchEvent(e));
                        if (t.__corner = s, t === this._activeObject && (s || !o)) {
                          this._setupCurrentTransform(e, t, a);
                          var l = t.controls[s],
                            c = (n = this.getPointer(e), l && l.getMouseDownHandler(e, t, l));
                          c && c(e, this._currentTransform, n.x, n.y)
                        }
                      }
                      this._handleEvent(e, "down"), (i || o) && this.requestRenderAll()
                    }
                  },
                  _resetTransformEventData: function() {
                    this._target = null, this._pointer = null, this._absolutePointer = null
                  },
                  _cacheTransformEventData: function(e) {
                    this._resetTransformEventData(), this._pointer = this.getPointer(e, !0), this._absolutePointer = this.restorePointerVpt(this._pointer), this._target = this._currentTransform ? this._currentTransform.target : this
                      .findTarget(e) || null
                  },
                  _beforeTransform: function(e) {
                    var t = this._currentTransform;
                    this.stateful && t.target.saveState(), this.fire("before:transform", {
                      e: e,
                      transform: t
                    })
                  },
                  __onMouseMove: function(e) {
                    var t, n;
                    if (this._handleEvent(e, "move:before"), this._cacheTransformEventData(e), this.isDrawingMode) this._onMouseMoveInDrawingMode(e);
                    else if (this._isMainEvent(e)) {
                      var r = this._groupSelector;
                      r ? (n = this._absolutePointer, r.left = n.x - r.ex, r.top = n.y - r.ey, this.renderTop()) : this._currentTransform ? this._transformObject(e) : (t = this.findTarget(e) || null, this._setCursorFromEvent(e, t), this
                        ._fireOverOutEvents(t, e)), this._handleEvent(e, "move"), this._resetTransformEventData()
                    }
                  },
                  _fireOverOutEvents: function(e, t) {
                    var n = this._hoveredTarget,
                      r = this._hoveredTargets,
                      i = this.targets,
                      o = Math.max(r.length, i.length);
                    this.fireSyntheticInOutEvents(e, t, {
                      oldTarget: n,
                      evtOut: "mouseout",
                      canvasEvtOut: "mouse:out",
                      evtIn: "mouseover",
                      canvasEvtIn: "mouse:over"
                    });
                    for (var a = 0; a < o; a++) this.fireSyntheticInOutEvents(i[a], t, {
                      oldTarget: r[a],
                      evtOut: "mouseout",
                      evtIn: "mouseover"
                    });
                    this._hoveredTarget = e, this._hoveredTargets = this.targets.concat()
                  },
                  _fireEnterLeaveEvents: function(e, t) {
                    var n = this._draggedoverTarget,
                      r = this._hoveredTargets,
                      i = this.targets,
                      o = Math.max(r.length, i.length);
                    this.fireSyntheticInOutEvents(e, t, {
                      oldTarget: n,
                      evtOut: "dragleave",
                      evtIn: "dragenter"
                    });
                    for (var a = 0; a < o; a++) this.fireSyntheticInOutEvents(i[a], t, {
                      oldTarget: r[a],
                      evtOut: "dragleave",
                      evtIn: "dragenter"
                    });
                    this._draggedoverTarget = e
                  },
                  fireSyntheticInOutEvents: function(e, t, n) {
                    var r, i, o, a = n.oldTarget,
                      s = a !== e,
                      l = n.canvasEvtIn,
                      c = n.canvasEvtOut;
                    s && (r = {
                      e: t,
                      target: e,
                      previousTarget: a
                    }, i = {
                      e: t,
                      target: a,
                      nextTarget: e
                    }), o = e && s, a && s && (c && this.fire(c, i), a.fire(n.evtOut, i)), o && (l && this.fire(l, r), e.fire(n.evtIn, r))
                  },
                  __onMouseWheel: function(e) {
                    this._cacheTransformEventData(e), this._handleEvent(e, "wheel"), this._resetTransformEventData()
                  },
                  _transformObject: function(e) {
                    var t = this.getPointer(e),
                      n = this._currentTransform;
                    n.reset = !1, n.shiftKey = e.shiftKey, n.altKey = e[this.centeredKey], this._performTransformAction(e, n, t), n.actionPerformed && this.requestRenderAll()
                  },
                  _performTransformAction: function(e, t, n) {
                    var r = n.x,
                      i = n.y,
                      o = t.action,
                      a = !1,
                      s = t.actionHandler;
                    s && (a = s(e, t, r, i)), "drag" === o && a && (t.target.isMoving = !0, this.setCursor(t.target.moveCursor || this.moveCursor)), t.actionPerformed = t.actionPerformed || a
                  },
                  _fire: v.controlsUtils.fireEvent,
                  _setCursorFromEvent: function(e, t) {
                    if (!t) return this.setCursor(this.defaultCursor), !1;
                    var n = t.hoverCursor || this.hoverCursor,
                      r = this._activeObject && "activeSelection" === this._activeObject.type ? this._activeObject : null,
                      i = (!r || !r.contains(t)) && t._findTargetCorner(this.getPointer(e, !0));
                    i ? this.setCursor(this.getCornerCursor(i, t, e)) : (t.subTargetCheck && this.targets.concat().reverse().map((function(e) {
                      n = e.hoverCursor || n
                    })), this.setCursor(n))
                  },
                  getCornerCursor: function(e, t, n) {
                    var r = t.controls[e];
                    return r.cursorStyleHandler(n, r, t)
                  }
                })
              }(),
              function() {
                var e = Math.min,
                  t = Math.max;
                v.util.object.extend(v.Canvas.prototype, {
                  _shouldGroup: function(e, t) {
                    var n = this._activeObject;
                    return n && this._isSelectionKeyPressed(e) && t && t.selectable && this.selection && (n !== t || "activeSelection" === n.type) && !t.onSelect({
                      e: e
                    })
                  },
                  _handleGrouping: function(e, t) {
                    var n = this._activeObject;
                    n.__corner || (t !== n || (t = this.findTarget(e, !0)) && t.selectable) && (n && "activeSelection" === n.type ? this._updateActiveSelection(t, e) : this._createActiveSelection(t, e))
                  },
                  _updateActiveSelection: function(e, t) {
                    var n = this._activeObject,
                      r = n._objects.slice(0);
                    n.contains(e) ? (n.removeWithUpdate(e), this._hoveredTarget = e, this._hoveredTargets = this.targets.concat(), 1 === n.size() && this._setActiveObject(n.item(0), t)) : (n.addWithUpdate(e), this._hoveredTarget = n, this
                      ._hoveredTargets = this.targets.concat()), this._fireSelectionEvents(r, t)
                  },
                  _createActiveSelection: function(e, t) {
                    var n = this.getActiveObjects(),
                      r = this._createGroup(e);
                    this._hoveredTarget = r, this._setActiveObject(r, t), this._fireSelectionEvents(n, t)
                  },
                  _createGroup: function(e) {
                    var t = this._objects,
                      n = t.indexOf(this._activeObject) < t.indexOf(e) ? [this._activeObject, e] : [e, this._activeObject];
                    return this._activeObject.isEditing && this._activeObject.exitEditing(), new v.ActiveSelection(n, {
                      canvas: this
                    })
                  },
                  _groupSelectedObjects: function(e) {
                    var t, n = this._collectObjects(e);
                    1 === n.length ? this.setActiveObject(n[0], e) : n.length > 1 && (t = new v.ActiveSelection(n.reverse(), {
                      canvas: this
                    }), this.setActiveObject(t, e))
                  },
                  _collectObjects: function(n) {
                    for (var r, i = [], o = this._groupSelector.ex, a = this._groupSelector.ey, s = o + this._groupSelector.left, l = a + this._groupSelector.top, c = new v.Point(e(o, s), e(a, l)), u = new v.Point(t(o, s), t(a, l)), h = !
                        this.selectionFullyContained, p = o === s && a === l, d = this._objects.length; d-- && !((r = this._objects[d]) && r.selectable && r.visible && (h && r.intersectsWithRect(c, u, !0) || r.isContainedWithinRect(c, u, !
                        0) || h && r.containsPoint(c, null, !0) || h && r.containsPoint(u, null, !0)) && (i.push(r), p)););
                    return i.length > 1 && (i = i.filter((function(e) {
                      return !e.onSelect({
                        e: n
                      })
                    }))), i
                  },
                  _maybeGroupObjects: function(e) {
                    this.selection && this._groupSelector && this._groupSelectedObjects(e), this.setCursor(this.defaultCursor), this._groupSelector = null
                  }
                })
              }(), v.util.object.extend(v.StaticCanvas.prototype, {
                toDataURL: function(e) {
                  e || (e = {});
                  var t = e.format || "png",
                    n = e.quality || 1,
                    r = (e.multiplier || 1) * (e.enableRetinaScaling ? this.getRetinaScaling() : 1),
                    i = this.toCanvasElement(r, e);
                  return v.util.toDataURL(i, t, n)
                },
                toCanvasElement: function(e, t) {
                  e = e || 1;
                  var n = ((t = t || {}).width || this.width) * e,
                    r = (t.height || this.height) * e,
                    i = this.getZoom(),
                    o = this.width,
                    a = this.height,
                    s = i * e,
                    l = this.viewportTransform,
                    c = (l[4] - (t.left || 0)) * e,
                    u = (l[5] - (t.top || 0)) * e,
                    h = this.interactive,
                    p = [s, 0, 0, s, c, u],
                    d = this.enableRetinaScaling,
                    f = v.util.createCanvasElement(),
                    g = this.contextTop;
                  return f.width = n, f.height = r, this.contextTop = null, this.enableRetinaScaling = !1, this.interactive = !1, this.viewportTransform = p, this.width = n, this.height = r, this.calcViewportBoundaries(), this.renderCanvas(f
                    .getContext("2d"), this._objects), this.viewportTransform = l, this.width = o, this.height = a, this.calcViewportBoundaries(), this.interactive = h, this.enableRetinaScaling = d, this.contextTop = g, f
                }
              }), v.util.object.extend(v.StaticCanvas.prototype, {
                loadFromJSON: function(e, t, n) {
                  if (e) {
                    var r = "string" == typeof e ? JSON.parse(e) : v.util.object.clone(e),
                      i = this,
                      o = r.clipPath,
                      a = this.renderOnAddRemove;
                    return this.renderOnAddRemove = !1, delete r.clipPath, this._enlivenObjects(r.objects, (function(e) {
                      i.clear(), i._setBgOverlay(r, (function() {
                        o ? i._enlivenObjects([o], (function(n) {
                          i.clipPath = n[0], i.__setupCanvas.call(i, r, e, a, t)
                        })) : i.__setupCanvas.call(i, r, e, a, t)
                      }))
                    }), n), this
                  }
                },
                __setupCanvas: function(e, t, n, r) {
                  var i = this;
                  t.forEach((function(e, t) {
                    i.insertAt(e, t)
                  })), this.renderOnAddRemove = n, delete e.objects, delete e.backgroundImage, delete e.overlayImage, delete e.background, delete e.overlay, this._setOptions(e), this.renderAll(), r && r()
                },
                _setBgOverlay: function(e, t) {
                  var n = {
                    backgroundColor: !1,
                    overlayColor: !1,
                    backgroundImage: !1,
                    overlayImage: !1
                  };
                  if (e.backgroundImage || e.overlayImage || e.background || e.overlay) {
                    var r = function() {
                      n.backgroundImage && n.overlayImage && n.backgroundColor && n.overlayColor && t && t()
                    };
                    this.__setBgOverlay("backgroundImage", e.backgroundImage, n, r), this.__setBgOverlay("overlayImage", e.overlayImage, n, r), this.__setBgOverlay("backgroundColor", e.background, n, r), this.__setBgOverlay("overlayColor", e
                      .overlay, n, r)
                  } else t && t()
                },
                __setBgOverlay: function(e, t, n, r) {
                  var i = this;
                  if (!t) return n[e] = !0, void(r && r());
                  "backgroundImage" === e || "overlayImage" === e ? v.util.enlivenObjects([t], (function(t) {
                    i[e] = t[0], n[e] = !0, r && r()
                  })) : this["set" + v.util.string.capitalize(e, !0)](t, (function() {
                    n[e] = !0, r && r()
                  }))
                },
                _enlivenObjects: function(e, t, n) {
                  e && 0 !== e.length ? v.util.enlivenObjects(e, (function(e) {
                    t && t(e)
                  }), null, n) : t && t([])
                },
                _toDataURL: function(e, t) {
                  this.clone((function(n) {
                    t(n.toDataURL(e))
                  }))
                },
                _toDataURLWithMultiplier: function(e, t, n) {
                  this.clone((function(r) {
                    n(r.toDataURLWithMultiplier(e, t))
                  }))
                },
                clone: function(e, t) {
                  var n = JSON.stringify(this.toJSON(t));
                  this.cloneWithoutData((function(t) {
                    t.loadFromJSON(n, (function() {
                      e && e(t)
                    }))
                  }))
                },
                cloneWithoutData: function(e) {
                  var t = v.util.createCanvasElement();
                  t.width = this.width, t.height = this.height;
                  var n = new v.Canvas(t);
                  this.backgroundImage ? (n.setBackgroundImage(this.backgroundImage.src, (function() {
                    n.renderAll(), e && e(n)
                  })), n.backgroundImageOpacity = this.backgroundImageOpacity, n.backgroundImageStretch = this.backgroundImageStretch) : e && e(n)
                }
              }),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.util.object.extend,
                  r = t.util.object.clone,
                  i = t.util.toFixed,
                  o = t.util.string.capitalize,
                  a = t.util.degreesToRadians,
                  s = !t.isLikelyNode;
                t.Object || (t.Object = t.util.createClass(t.CommonMethods, {
                  type: "object",
                  originX: "left",
                  originY: "top",
                  top: 0,
                  left: 0,
                  width: 0,
                  height: 0,
                  scaleX: 1,
                  scaleY: 1,
                  flipX: !1,
                  flipY: !1,
                  opacity: 1,
                  angle: 0,
                  skewX: 0,
                  skewY: 0,
                  cornerSize: 13,
                  touchCornerSize: 24,
                  transparentCorners: !0,
                  hoverCursor: null,
                  moveCursor: null,
                  padding: 0,
                  borderColor: "rgb(178,204,255)",
                  borderDashArray: null,
                  cornerColor: "rgb(178,204,255)",
                  cornerStrokeColor: null,
                  cornerStyle: "rect",
                  cornerDashArray: null,
                  centeredScaling: !1,
                  centeredRotation: !0,
                  fill: "rgb(0,0,0)",
                  fillRule: "nonzero",
                  globalCompositeOperation: "source-over",
                  backgroundColor: "",
                  selectionBackgroundColor: "",
                  stroke: null,
                  strokeWidth: 1,
                  strokeDashArray: null,
                  strokeDashOffset: 0,
                  strokeLineCap: "butt",
                  strokeLineJoin: "miter",
                  strokeMiterLimit: 4,
                  shadow: null,
                  borderOpacityWhenMoving: .4,
                  borderScaleFactor: 1,
                  minScaleLimit: 0,
                  selectable: !0,
                  evented: !0,
                  visible: !0,
                  hasControls: !0,
                  hasBorders: !0,
                  perPixelTargetFind: !1,
                  includeDefaultValues: !0,
                  lockMovementX: !1,
                  lockMovementY: !1,
                  lockRotation: !1,
                  lockScalingX: !1,
                  lockScalingY: !1,
                  lockSkewingX: !1,
                  lockSkewingY: !1,
                  lockScalingFlip: !1,
                  excludeFromExport: !1,
                  objectCaching: s,
                  statefullCache: !1,
                  noScaleCache: !0,
                  strokeUniform: !1,
                  dirty: !0,
                  __corner: 0,
                  paintFirst: "fill",
                  activeOn: "down",
                  stateProperties: "top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform"
                    .split(" "),
                  cacheProperties: "fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),
                  colorProperties: "fill stroke backgroundColor".split(" "),
                  clipPath: void 0,
                  inverted: !1,
                  absolutePositioned: !1,
                  initialize: function(e) {
                    e && this.setOptions(e)
                  },
                  _createCacheCanvas: function() {
                    this._cacheProperties = {}, this._cacheCanvas = t.util.createCanvasElement(), this._cacheContext = this._cacheCanvas.getContext("2d"), this._updateCacheCanvas(), this.dirty = !0
                  },
                  _limitCacheSize: function(e) {
                    var n = t.perfLimitSizeTotal,
                      r = e.width,
                      i = e.height,
                      o = t.maxCacheSideLimit,
                      a = t.minCacheSideLimit;
                    if (r <= o && i <= o && r * i <= n) return r < a && (e.width = a), i < a && (e.height = a), e;
                    var s = r / i,
                      l = t.util.limitDimsByArea(s, n),
                      c = t.util.capValue,
                      u = c(a, l.x, o),
                      h = c(a, l.y, o);
                    return r > u && (e.zoomX /= r / u, e.width = u, e.capped = !0), i > h && (e.zoomY /= i / h, e.height = h, e.capped = !0), e
                  },
                  _getCacheCanvasDimensions: function() {
                    var e = this.getTotalObjectScaling(),
                      t = this._getTransformedDimensions(0, 0),
                      n = t.x * e.scaleX / this.scaleX,
                      r = t.y * e.scaleY / this.scaleY;
                    return {
                      width: n + 2,
                      height: r + 2,
                      zoomX: e.scaleX,
                      zoomY: e.scaleY,
                      x: n,
                      y: r
                    }
                  },
                  _updateCacheCanvas: function() {
                    var e = this.canvas;
                    if (this.noScaleCache && e && e._currentTransform) {
                      var n = e._currentTransform.target,
                        r = e._currentTransform.action;
                      if (this === n && r.slice && "scale" === r.slice(0, 5)) return !1
                    }
                    var i, o, a = this._cacheCanvas,
                      s = this._limitCacheSize(this._getCacheCanvasDimensions()),
                      l = t.minCacheSideLimit,
                      c = s.width,
                      u = s.height,
                      h = s.zoomX,
                      p = s.zoomY,
                      d = c !== this.cacheWidth || u !== this.cacheHeight,
                      f = this.zoomX !== h || this.zoomY !== p,
                      g = d || f,
                      m = 0,
                      v = 0,
                      _ = !1;
                    if (d) {
                      var b = this._cacheCanvas.width,
                        y = this._cacheCanvas.height,
                        w = c > b || u > y;
                      _ = w || (c < .9 * b || u < .9 * y) && b > l && y > l, w && !s.capped && (c > l || u > l) && (m = .1 * c, v = .1 * u)
                    }
                    return this instanceof t.Text && this.path && (g = !0, _ = !0, m += this.getHeightOfLine(0) * this.zoomX, v += this.getHeightOfLine(0) * this.zoomY), !!g && (_ ? (a.width = Math.ceil(c + m), a.height = Math.ceil(u +
                        v)) : (this._cacheContext.setTransform(1, 0, 0, 1, 0, 0), this._cacheContext.clearRect(0, 0, a.width, a.height)), i = s.x / 2, o = s.y / 2, this.cacheTranslationX = Math.round(a.width / 2 - i) + i, this
                      .cacheTranslationY = Math.round(a.height / 2 - o) + o, this.cacheWidth = c, this.cacheHeight = u, this._cacheContext.translate(this.cacheTranslationX, this.cacheTranslationY), this._cacheContext.scale(h, p), this
                      .zoomX = h, this.zoomY = p, !0)
                  },
                  setOptions: function(e) {
                    this._setOptions(e), this._initGradient(e.fill, "fill"), this._initGradient(e.stroke, "stroke"), this._initPattern(e.fill, "fill"), this._initPattern(e.stroke, "stroke")
                  },
                  transform: function(e) {
                    var t = this.group && !this.group._transformDone || this.group && this.canvas && e === this.canvas.contextTop,
                      n = this.calcTransformMatrix(!t);
                    e.transform(n[0], n[1], n[2], n[3], n[4], n[5])
                  },
                  toObject: function(e) {
                    var n = t.Object.NUM_FRACTION_DIGITS,
                      r = {
                        type: this.type,
                        version: t.version,
                        originX: this.originX,
                        originY: this.originY,
                        left: i(this.left, n),
                        top: i(this.top, n),
                        width: i(this.width, n),
                        height: i(this.height, n),
                        fill: this.fill && this.fill.toObject ? this.fill.toObject() : this.fill,
                        stroke: this.stroke && this.stroke.toObject ? this.stroke.toObject() : this.stroke,
                        strokeWidth: i(this.strokeWidth, n),
                        strokeDashArray: this.strokeDashArray ? this.strokeDashArray.concat() : this.strokeDashArray,
                        strokeLineCap: this.strokeLineCap,
                        strokeDashOffset: this.strokeDashOffset,
                        strokeLineJoin: this.strokeLineJoin,
                        strokeUniform: this.strokeUniform,
                        strokeMiterLimit: i(this.strokeMiterLimit, n),
                        scaleX: i(this.scaleX, n),
                        scaleY: i(this.scaleY, n),
                        angle: i(this.angle, n),
                        flipX: this.flipX,
                        flipY: this.flipY,
                        opacity: i(this.opacity, n),
                        shadow: this.shadow && this.shadow.toObject ? this.shadow.toObject() : this.shadow,
                        visible: this.visible,
                        backgroundColor: this.backgroundColor,
                        fillRule: this.fillRule,
                        paintFirst: this.paintFirst,
                        globalCompositeOperation: this.globalCompositeOperation,
                        skewX: i(this.skewX, n),
                        skewY: i(this.skewY, n)
                      };
                    return this.clipPath && !this.clipPath.excludeFromExport && (r.clipPath = this.clipPath.toObject(e), r.clipPath.inverted = this.clipPath.inverted, r.clipPath.absolutePositioned = this.clipPath.absolutePositioned), t
                      .util.populateWithProperties(this, r, e), this.includeDefaultValues || (r = this._removeDefaultValues(r)), r
                  },
                  toDatalessObject: function(e) {
                    return this.toObject(e)
                  },
                  _removeDefaultValues: function(e) {
                    var n = t.util.getKlass(e.type).prototype;
                    return n.stateProperties.forEach((function(t) {
                      "left" !== t && "top" !== t && (e[t] === n[t] && delete e[t], Array.isArray(e[t]) && Array.isArray(n[t]) && 0 === e[t].length && 0 === n[t].length && delete e[t])
                    })), e
                  },
                  toString: function() {
                    return "#<fabric." + o(this.type) + ">"
                  },
                  getObjectScaling: function() {
                    if (!this.group) return {
                      scaleX: this.scaleX,
                      scaleY: this.scaleY
                    };
                    var e = t.util.qrDecompose(this.calcTransformMatrix());
                    return {
                      scaleX: Math.abs(e.scaleX),
                      scaleY: Math.abs(e.scaleY)
                    }
                  },
                  getTotalObjectScaling: function() {
                    var e = this.getObjectScaling(),
                      t = e.scaleX,
                      n = e.scaleY;
                    if (this.canvas) {
                      var r = this.canvas.getZoom(),
                        i = this.canvas.getRetinaScaling();
                      t *= r * i, n *= r * i
                    }
                    return {
                      scaleX: t,
                      scaleY: n
                    }
                  },
                  getObjectOpacity: function() {
                    var e = this.opacity;
                    return this.group && (e *= this.group.getObjectOpacity()), e
                  },
                  _set: function(e, n) {
                    var r = "scaleX" === e || "scaleY" === e,
                      i = this[e] !== n,
                      o = !1;
                    return r && (n = this._constrainScale(n)), "scaleX" === e && n < 0 ? (this.flipX = !this.flipX, n *= -1) : "scaleY" === e && n < 0 ? (this.flipY = !this.flipY, n *= -1) : "shadow" !== e || !n || n instanceof t.Shadow ?
                      "dirty" === e && this.group && this.group.set("dirty", n) : n = new t.Shadow(n), this[e] = n, i && (o = this.group && this.group.isOnACache(), this.cacheProperties.indexOf(e) > -1 ? (this.dirty = !0, o && this.group
                        .set("dirty", !0)) : o && this.stateProperties.indexOf(e) > -1 && this.group.set("dirty", !0)), this
                  },
                  setOnGroup: function() {},
                  getViewportTransform: function() {
                    return this.canvas && this.canvas.viewportTransform ? this.canvas.viewportTransform : t.iMatrix.concat()
                  },
                  isNotVisible: function() {
                    return 0 === this.opacity || !this.width && !this.height && 0 === this.strokeWidth || !this.visible
                  },
                  render: function(e) {
                    this.isNotVisible() || this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen() || (e.save(), this._setupCompositeOperation(e), this.drawSelectionBackground(e), this.transform(e), this._setOpacity(
                      e), this._setShadow(e, this), this.shouldCache() ? (this.renderCache(), this.drawCacheOnCanvas(e)) : (this._removeCacheCanvas(), this.dirty = !1, this.drawObject(e), this.objectCaching && this.statefullCache &&
                      this.saveState({
                        propertySet: "cacheProperties"
                      })), e.restore())
                  },
                  renderCache: function(e) {
                    e = e || {}, this._cacheCanvas && this._cacheContext || this._createCacheCanvas(), this.isCacheDirty() && (this.statefullCache && this.saveState({
                      propertySet: "cacheProperties"
                    }), this.drawObject(this._cacheContext, e.forClipping), this.dirty = !1)
                  },
                  _removeCacheCanvas: function() {
                    this._cacheCanvas = null, this._cacheContext = null, this.cacheWidth = 0, this.cacheHeight = 0
                  },
                  hasStroke: function() {
                    return this.stroke && "transparent" !== this.stroke && 0 !== this.strokeWidth
                  },
                  hasFill: function() {
                    return this.fill && "transparent" !== this.fill
                  },
                  needsItsOwnCache: function() {
                    return !("stroke" !== this.paintFirst || !this.hasFill() || !this.hasStroke() || "object" != typeof this.shadow) || !!this.clipPath
                  },
                  shouldCache: function() {
                    return this.ownCaching = this.needsItsOwnCache() || this.objectCaching && (!this.group || !this.group.isOnACache()), this.ownCaching
                  },
                  willDrawShadow: function() {
                    return !!this.shadow && (0 !== this.shadow.offsetX || 0 !== this.shadow.offsetY)
                  },
                  drawClipPathOnCache: function(e, n) {
                    if (e.save(), n.inverted ? e.globalCompositeOperation = "destination-out" : e.globalCompositeOperation = "destination-in", n.absolutePositioned) {
                      var r = t.util.invertTransform(this.calcTransformMatrix());
                      e.transform(r[0], r[1], r[2], r[3], r[4], r[5])
                    }
                    n.transform(e), e.scale(1 / n.zoomX, 1 / n.zoomY), e.drawImage(n._cacheCanvas, -n.cacheTranslationX, -n.cacheTranslationY), e.restore()
                  },
                  drawObject: function(e, t) {
                    var n = this.fill,
                      r = this.stroke;
                    t ? (this.fill = "black", this.stroke = "", this._setClippingProperties(e)) : this._renderBackground(e), this._render(e), this._drawClipPath(e, this.clipPath), this.fill = n, this.stroke = r
                  },
                  _drawClipPath: function(e, t) {
                    t && (t.canvas = this.canvas, t.shouldCache(), t._transformDone = !0, t.renderCache({
                      forClipping: !0
                    }), this.drawClipPathOnCache(e, t))
                  },
                  drawCacheOnCanvas: function(e) {
                    e.scale(1 / this.zoomX, 1 / this.zoomY), e.drawImage(this._cacheCanvas, -this.cacheTranslationX, -this.cacheTranslationY)
                  },
                  isCacheDirty: function(e) {
                    if (this.isNotVisible()) return !1;
                    if (this._cacheCanvas && this._cacheContext && !e && this._updateCacheCanvas()) return !0;
                    if (this.dirty || this.clipPath && this.clipPath.absolutePositioned || this.statefullCache && this.hasStateChanged("cacheProperties")) {
                      if (this._cacheCanvas && this._cacheContext && !e) {
                        var t = this.cacheWidth / this.zoomX,
                          n = this.cacheHeight / this.zoomY;
                        this._cacheContext.clearRect(-t / 2, -n / 2, t, n)
                      }
                      return !0
                    }
                    return !1
                  },
                  _renderBackground: function(e) {
                    if (this.backgroundColor) {
                      var t = this._getNonTransformedDimensions();
                      e.fillStyle = this.backgroundColor, e.fillRect(-t.x / 2, -t.y / 2, t.x, t.y), this._removeShadow(e)
                    }
                  },
                  _setOpacity: function(e) {
                    this.group && !this.group._transformDone ? e.globalAlpha = this.getObjectOpacity() : e.globalAlpha *= this.opacity
                  },
                  _setStrokeStyles: function(e, t) {
                    var n = t.stroke;
                    n && (e.lineWidth = t.strokeWidth, e.lineCap = t.strokeLineCap, e.lineDashOffset = t.strokeDashOffset, e.lineJoin = t.strokeLineJoin, e.miterLimit = t.strokeMiterLimit, n.toLive ? "percentage" === n.gradientUnits || n
                      .gradientTransform || n.patternTransform ? this._applyPatternForTransformedGradient(e, n) : (e.strokeStyle = n.toLive(e, this), this._applyPatternGradientTransform(e, n)) : e.strokeStyle = t.stroke)
                  },
                  _setFillStyles: function(e, t) {
                    var n = t.fill;
                    n && (n.toLive ? (e.fillStyle = n.toLive(e, this), this._applyPatternGradientTransform(e, t.fill)) : e.fillStyle = n)
                  },
                  _setClippingProperties: function(e) {
                    e.globalAlpha = 1, e.strokeStyle = "transparent", e.fillStyle = "#000000"
                  },
                  _setLineDash: function(e, t) {
                    t && 0 !== t.length && (1 & t.length && t.push.apply(t, t), e.setLineDash(t))
                  },
                  _renderControls: function(e, n) {
                    var r, i, o, s = this.getViewportTransform(),
                      l = this.calcTransformMatrix();
                    i = void 0 !== (n = n || {}).hasBorders ? n.hasBorders : this.hasBorders, o = void 0 !== n.hasControls ? n.hasControls : this.hasControls, l = t.util.multiplyTransformMatrices(s, l), r = t.util.qrDecompose(l), e
                    .save(), e.translate(r.translateX, r.translateY), e.lineWidth = 1 * this.borderScaleFactor, this.group || (e.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1), this.flipX && (r.angle -= 180), e.rotate(a(
                        this.group ? r.angle : this.angle)), n.forActiveSelection || this.group ? i && this.drawBordersInGroup(e, r, n) : i && this.drawBorders(e, n), o && this.drawControls(e, n), e.restore()
                  },
                  _setShadow: function(e) {
                    if (this.shadow) {
                      var n, r = this.shadow,
                        i = this.canvas,
                        o = i && i.viewportTransform[0] || 1,
                        a = i && i.viewportTransform[3] || 1;
                      n = r.nonScaling ? {
                        scaleX: 1,
                        scaleY: 1
                      } : this.getObjectScaling(), i && i._isRetinaScaling() && (o *= t.devicePixelRatio, a *= t.devicePixelRatio), e.shadowColor = r.color, e.shadowBlur = r.blur * t.browserShadowBlurConstant * (o + a) * (n.scaleX + n
                        .scaleY) / 4, e.shadowOffsetX = r.offsetX * o * n.scaleX, e.shadowOffsetY = r.offsetY * a * n.scaleY
                    }
                  },
                  _removeShadow: function(e) {
                    this.shadow && (e.shadowColor = "", e.shadowBlur = e.shadowOffsetX = e.shadowOffsetY = 0)
                  },
                  _applyPatternGradientTransform: function(e, t) {
                    if (!t || !t.toLive) return {
                      offsetX: 0,
                      offsetY: 0
                    };
                    var n = t.gradientTransform || t.patternTransform,
                      r = -this.width / 2 + t.offsetX || 0,
                      i = -this.height / 2 + t.offsetY || 0;
                    return "percentage" === t.gradientUnits ? e.transform(this.width, 0, 0, this.height, r, i) : e.transform(1, 0, 0, 1, r, i), n && e.transform(n[0], n[1], n[2], n[3], n[4], n[5]), {
                      offsetX: r,
                      offsetY: i
                    }
                  },
                  _renderPaintInOrder: function(e) {
                    "stroke" === this.paintFirst ? (this._renderStroke(e), this._renderFill(e)) : (this._renderFill(e), this._renderStroke(e))
                  },
                  _render: function() {},
                  _renderFill: function(e) {
                    this.fill && (e.save(), this._setFillStyles(e, this), "evenodd" === this.fillRule ? e.fill("evenodd") : e.fill(), e.restore())
                  },
                  _renderStroke: function(e) {
                    if (this.stroke && 0 !== this.strokeWidth) {
                      if (this.shadow && !this.shadow.affectStroke && this._removeShadow(e), e.save(), this.strokeUniform && this.group) {
                        var t = this.getObjectScaling();
                        e.scale(1 / t.scaleX, 1 / t.scaleY)
                      } else this.strokeUniform && e.scale(1 / this.scaleX, 1 / this.scaleY);
                      this._setLineDash(e, this.strokeDashArray), this._setStrokeStyles(e, this), e.stroke(), e.restore()
                    }
                  },
                  _applyPatternForTransformedGradient: function(e, n) {
                    var r, i = this._limitCacheSize(this._getCacheCanvasDimensions()),
                      o = t.util.createCanvasElement(),
                      a = this.canvas.getRetinaScaling(),
                      s = i.x / this.scaleX / a,
                      l = i.y / this.scaleY / a;
                    o.width = s, o.height = l, (r = o.getContext("2d")).beginPath(), r.moveTo(0, 0), r.lineTo(s, 0), r.lineTo(s, l), r.lineTo(0, l), r.closePath(), r.translate(s / 2, l / 2), r.scale(i.zoomX / this.scaleX / a, i.zoomY /
                      this.scaleY / a), this._applyPatternGradientTransform(r, n), r.fillStyle = n.toLive(e), r.fill(), e.translate(-this.width / 2 - this.strokeWidth / 2, -this.height / 2 - this.strokeWidth / 2), e.scale(a * this
                      .scaleX / i.zoomX, a * this.scaleY / i.zoomY), e.strokeStyle = r.createPattern(o, "no-repeat")
                  },
                  _findCenterFromElement: function() {
                    return {
                      x: this.left + this.width / 2,
                      y: this.top + this.height / 2
                    }
                  },
                  _assignTransformMatrixProps: function() {
                    if (this.transformMatrix) {
                      var e = t.util.qrDecompose(this.transformMatrix);
                      this.flipX = !1, this.flipY = !1, this.set("scaleX", e.scaleX), this.set("scaleY", e.scaleY), this.angle = e.angle, this.skewX = e.skewX, this.skewY = 0
                    }
                  },
                  _removeTransformMatrix: function(e) {
                    var n = this._findCenterFromElement();
                    this.transformMatrix && (this._assignTransformMatrixProps(), n = t.util.transformPoint(n, this.transformMatrix)), this.transformMatrix = null, e && (this.scaleX *= e.scaleX, this.scaleY *= e.scaleY, this.cropX = e
                      .cropX, this.cropY = e.cropY, n.x += e.offsetLeft, n.y += e.offsetTop, this.width = e.width, this.height = e.height), this.setPositionByOrigin(n, "center", "center")
                  },
                  clone: function(e, n) {
                    var r = this.toObject(n);
                    this.constructor.fromObject ? this.constructor.fromObject(r, e) : t.Object._fromObject("Object", r, e)
                  },
                  cloneAsImage: function(e, n) {
                    var r = this.toCanvasElement(n);
                    return e && e(new t.Image(r)), this
                  },
                  toCanvasElement: function(e) {
                    e || (e = {});
                    var n = t.util,
                      r = n.saveObjectTransform(this),
                      i = this.group,
                      o = this.shadow,
                      a = Math.abs,
                      s = (e.multiplier || 1) * (e.enableRetinaScaling ? t.devicePixelRatio : 1);
                    delete this.group, e.withoutTransform && n.resetObjectTransform(this), e.withoutShadow && (this.shadow = null);
                    var l, c, u, h, p = t.util.createCanvasElement(),
                      d = this.getBoundingRect(!0, !0),
                      f = this.shadow,
                      g = {
                        x: 0,
                        y: 0
                      };
                    f && (c = f.blur, l = f.nonScaling ? {
                        scaleX: 1,
                        scaleY: 1
                      } : this.getObjectScaling(), g.x = 2 * Math.round(a(f.offsetX) + c) * a(l.scaleX), g.y = 2 * Math.round(a(f.offsetY) + c) * a(l.scaleY)), u = d.width + g.x, h = d.height + g.y, p.width = Math.ceil(u), p.height = Math
                      .ceil(h);
                    var m = new t.StaticCanvas(p, {
                      enableRetinaScaling: !1,
                      renderOnAddRemove: !1,
                      skipOffscreen: !1
                    });
                    "jpeg" === e.format && (m.backgroundColor = "#fff"), this.setPositionByOrigin(new t.Point(m.width / 2, m.height / 2), "center", "center");
                    var v = this.canvas;
                    m.add(this);
                    var _ = m.toCanvasElement(s || 1, e);
                    return this.shadow = o, this.set("canvas", v), i && (this.group = i), this.set(r).setCoords(), m._objects = [], m.dispose(), m = null, _
                  },
                  toDataURL: function(e) {
                    return e || (e = {}), t.util.toDataURL(this.toCanvasElement(e), e.format || "png", e.quality || 1)
                  },
                  isType: function(e) {
                    return arguments.length > 1 ? Array.from(arguments).includes(this.type) : this.type === e
                  },
                  complexity: function() {
                    return 1
                  },
                  toJSON: function(e) {
                    return this.toObject(e)
                  },
                  rotate: function(e) {
                    var t = ("center" !== this.originX || "center" !== this.originY) && this.centeredRotation;
                    return t && this._setOriginToCenter(), this.set("angle", e), t && this._resetOrigin(), this
                  },
                  centerH: function() {
                    return this.canvas && this.canvas.centerObjectH(this), this
                  },
                  viewportCenterH: function() {
                    return this.canvas && this.canvas.viewportCenterObjectH(this), this
                  },
                  centerV: function() {
                    return this.canvas && this.canvas.centerObjectV(this), this
                  },
                  viewportCenterV: function() {
                    return this.canvas && this.canvas.viewportCenterObjectV(this), this
                  },
                  center: function() {
                    return this.canvas && this.canvas.centerObject(this), this
                  },
                  viewportCenter: function() {
                    return this.canvas && this.canvas.viewportCenterObject(this), this
                  },
                  getLocalPointer: function(e, n) {
                    n = n || this.canvas.getPointer(e);
                    var r = new t.Point(n.x, n.y),
                      i = this._getLeftTopCoords();
                    return this.angle && (r = t.util.rotatePoint(r, i, a(-this.angle))), {
                      x: r.x - i.x,
                      y: r.y - i.y
                    }
                  },
                  _setupCompositeOperation: function(e) {
                    this.globalCompositeOperation && (e.globalCompositeOperation = this.globalCompositeOperation)
                  },
                  dispose: function() {
                    t.runningAnimations && t.runningAnimations.cancelByTarget(this)
                  }
                }), t.util.createAccessors && t.util.createAccessors(t.Object), n(t.Object.prototype, t.Observable), t.Object.NUM_FRACTION_DIGITS = 2, t.Object.ENLIVEN_PROPS = ["clipPath"], t.Object._fromObject = function(e, n, i, o) {
                  var a = t[e];
                  n = r(n, !0), t.util.enlivenPatterns([n.fill, n.stroke], (function(e) {
                    void 0 !== e[0] && (n.fill = e[0]), void 0 !== e[1] && (n.stroke = e[1]), t.util.enlivenObjectEnlivables(n, n, (function() {
                      var e = o ? new a(n[o], n) : new a(n);
                      i && i(e)
                    }))
                  }))
                }, t.Object.__uid = 0)
              }(e), d = v.util.degreesToRadians, f = {
                left: -.5,
                center: 0,
                right: .5
              }, g = {
                top: -.5,
                center: 0,
                bottom: .5
              }, v.util.object.extend(v.Object.prototype, {
                translateToGivenOrigin: function(e, t, n, r, i) {
                  var o, a, s, l = e.x,
                    c = e.y;
                  return "string" == typeof t ? t = f[t] : t -= .5, "string" == typeof r ? r = f[r] : r -= .5, "string" == typeof n ? n = g[n] : n -= .5, "string" == typeof i ? i = g[i] : i -= .5, a = i - n, ((o = r - t) || a) && (s = this
                    ._getTransformedDimensions(), l = e.x + o * s.x, c = e.y + a * s.y), new v.Point(l, c)
                },
                translateToCenterPoint: function(e, t, n) {
                  var r = this.translateToGivenOrigin(e, t, n, "center", "center");
                  return this.angle ? v.util.rotatePoint(r, e, d(this.angle)) : r
                },
                translateToOriginPoint: function(e, t, n) {
                  var r = this.translateToGivenOrigin(e, "center", "center", t, n);
                  return this.angle ? v.util.rotatePoint(r, e, d(this.angle)) : r
                },
                getCenterPoint: function() {
                  var e = new v.Point(this.left, this.top);
                  return this.translateToCenterPoint(e, this.originX, this.originY)
                },
                getPointByOrigin: function(e, t) {
                  var n = this.getCenterPoint();
                  return this.translateToOriginPoint(n, e, t)
                },
                toLocalPoint: function(e, t, n) {
                  var r, i, o = this.getCenterPoint();
                  return r = void 0 !== t && void 0 !== n ? this.translateToGivenOrigin(o, "center", "center", t, n) : new v.Point(this.left, this.top), i = new v.Point(e.x, e.y), this.angle && (i = v.util.rotatePoint(i, o, -d(this.angle))),
                    i.subtractEquals(r)
                },
                setPositionByOrigin: function(e, t, n) {
                  var r = this.translateToCenterPoint(e, t, n),
                    i = this.translateToOriginPoint(r, this.originX, this.originY);
                  this.set("left", i.x), this.set("top", i.y)
                },
                adjustPosition: function(e) {
                  var t, n, r = d(this.angle),
                    i = this.getScaledWidth(),
                    o = v.util.cos(r) * i,
                    a = v.util.sin(r) * i;
                  t = "string" == typeof this.originX ? f[this.originX] : this.originX - .5, n = "string" == typeof e ? f[e] : e - .5, this.left += o * (n - t), this.top += a * (n - t), this.setCoords(), this.originX = e
                },
                _setOriginToCenter: function() {
                  this._originalOriginX = this.originX, this._originalOriginY = this.originY;
                  var e = this.getCenterPoint();
                  this.originX = "center", this.originY = "center", this.left = e.x, this.top = e.y
                },
                _resetOrigin: function() {
                  var e = this.translateToOriginPoint(this.getCenterPoint(), this._originalOriginX, this._originalOriginY);
                  this.originX = this._originalOriginX, this.originY = this._originalOriginY, this.left = e.x, this.top = e.y, this._originalOriginX = null, this._originalOriginY = null
                },
                _getLeftTopCoords: function() {
                  return this.translateToOriginPoint(this.getCenterPoint(), "left", "top")
                }
              }),
              function() {
                var e = v.util,
                  t = e.degreesToRadians,
                  n = e.multiplyTransformMatrices,
                  r = e.transformPoint;
                e.object.extend(v.Object.prototype, {
                  oCoords: null,
                  aCoords: null,
                  lineCoords: null,
                  ownMatrixCache: null,
                  matrixCache: null,
                  controls: {},
                  _getCoords: function(e, t) {
                    return t ? e ? this.calcACoords() : this.calcLineCoords() : (this.aCoords && this.lineCoords || this.setCoords(!0), e ? this.aCoords : this.lineCoords)
                  },
                  getCoords: function(e, t) {
                    return n = this._getCoords(e, t), [new v.Point(n.tl.x, n.tl.y), new v.Point(n.tr.x, n.tr.y), new v.Point(n.br.x, n.br.y), new v.Point(n.bl.x, n.bl.y)];
                    var n
                  },
                  intersectsWithRect: function(e, t, n, r) {
                    var i = this.getCoords(n, r);
                    return "Intersection" === v.Intersection.intersectPolygonRectangle(i, e, t).status
                  },
                  intersectsWithObject: function(e, t, n) {
                    return "Intersection" === v.Intersection.intersectPolygonPolygon(this.getCoords(t, n), e.getCoords(t, n)).status || e.isContainedWithinObject(this, t, n) || this.isContainedWithinObject(e, t, n)
                  },
                  isContainedWithinObject: function(e, t, n) {
                    for (var r = this.getCoords(t, n), i = t ? e.aCoords : e.lineCoords, o = 0, a = e._getImageLines(i); o < 4; o++)
                      if (!e.containsPoint(r[o], a)) return !1;
                    return !0
                  },
                  isContainedWithinRect: function(e, t, n, r) {
                    var i = this.getBoundingRect(n, r);
                    return i.left >= e.x && i.left + i.width <= t.x && i.top >= e.y && i.top + i.height <= t.y
                  },
                  containsPoint: function(e, t, n, r) {
                    var i = this._getCoords(n, r),
                      o = (t = t || this._getImageLines(i), this._findCrossPoints(e, t));
                    return 0 !== o && o % 2 == 1
                  },
                  isOnScreen: function(e) {
                    if (!this.canvas) return !1;
                    var t = this.canvas.vptCoords.tl,
                      n = this.canvas.vptCoords.br;
                    return !!this.getCoords(!0, e).some((function(e) {
                      return e.x <= n.x && e.x >= t.x && e.y <= n.y && e.y >= t.y
                    })) || (!!this.intersectsWithRect(t, n, !0, e) || this._containsCenterOfCanvas(t, n, e))
                  },
                  _containsCenterOfCanvas: function(e, t, n) {
                    var r = {
                      x: (e.x + t.x) / 2,
                      y: (e.y + t.y) / 2
                    };
                    return !!this.containsPoint(r, null, !0, n)
                  },
                  isPartiallyOnScreen: function(e) {
                    if (!this.canvas) return !1;
                    var t = this.canvas.vptCoords.tl,
                      n = this.canvas.vptCoords.br;
                    return !!this.intersectsWithRect(t, n, !0, e) || this.getCoords(!0, e).every((function(e) {
                      return (e.x >= n.x || e.x <= t.x) && (e.y >= n.y || e.y <= t.y)
                    })) && this._containsCenterOfCanvas(t, n, e)
                  },
                  _getImageLines: function(e) {
                    return {
                      topline: {
                        o: e.tl,
                        d: e.tr
                      },
                      rightline: {
                        o: e.tr,
                        d: e.br
                      },
                      bottomline: {
                        o: e.br,
                        d: e.bl
                      },
                      leftline: {
                        o: e.bl,
                        d: e.tl
                      }
                    }
                  },
                  _findCrossPoints: function(e, t) {
                    var n, r, i, o = 0;
                    for (var a in t)
                      if (!((i = t[a]).o.y < e.y && i.d.y < e.y || i.o.y >= e.y && i.d.y >= e.y || (i.o.x === i.d.x && i.o.x >= e.x ? r = i.o.x : (0, n = (i.d.y - i.o.y) / (i.d.x - i.o.x), r = -(e.y - 0 * e.x - (i.o.y - n * i.o.x)) / (0 -
                          n)), r >= e.x && (o += 1), 2 !== o))) break;
                    return o
                  },
                  getBoundingRect: function(t, n) {
                    var r = this.getCoords(t, n);
                    return e.makeBoundingBoxFromPoints(r)
                  },
                  getScaledWidth: function() {
                    return this._getTransformedDimensions().x
                  },
                  getScaledHeight: function() {
                    return this._getTransformedDimensions().y
                  },
                  _constrainScale: function(e) {
                    return Math.abs(e) < this.minScaleLimit ? e < 0 ? -this.minScaleLimit : this.minScaleLimit : 0 === e ? 1e-4 : e
                  },
                  scale: function(e) {
                    return this._set("scaleX", e), this._set("scaleY", e), this.setCoords()
                  },
                  scaleToWidth: function(e, t) {
                    var n = this.getBoundingRect(t).width / this.getScaledWidth();
                    return this.scale(e / this.width / n)
                  },
                  scaleToHeight: function(e, t) {
                    var n = this.getBoundingRect(t).height / this.getScaledHeight();
                    return this.scale(e / this.height / n)
                  },
                  calcLineCoords: function() {
                    var n = this.getViewportTransform(),
                      i = this.padding,
                      o = t(this.angle),
                      a = e.cos(o) * i,
                      s = e.sin(o) * i,
                      l = a + s,
                      c = a - s,
                      u = this.calcACoords(),
                      h = {
                        tl: r(u.tl, n),
                        tr: r(u.tr, n),
                        bl: r(u.bl, n),
                        br: r(u.br, n)
                      };
                    return i && (h.tl.x -= c, h.tl.y -= l, h.tr.x += l, h.tr.y -= c, h.bl.x -= l, h.bl.y += c, h.br.x += c, h.br.y += l), h
                  },
                  calcOCoords: function() {
                    var e = this._calcRotateMatrix(),
                      t = this._calcTranslateMatrix(),
                      r = this.getViewportTransform(),
                      i = n(r, t),
                      o = n(i, e),
                      a = (o = n(o, [1 / r[0], 0, 0, 1 / r[3], 0, 0]), this._calculateCurrentDimensions()),
                      s = {};
                    return this.forEachControl((function(e, t, n) {
                      s[t] = e.positionHandler(a, o, n)
                    })), s
                  },
                  calcACoords: function() {
                    var e = this._calcRotateMatrix(),
                      t = this._calcTranslateMatrix(),
                      i = n(t, e),
                      o = this._getTransformedDimensions(),
                      a = o.x / 2,
                      s = o.y / 2;
                    return {
                      tl: r({
                        x: -a,
                        y: -s
                      }, i),
                      tr: r({
                        x: a,
                        y: -s
                      }, i),
                      bl: r({
                        x: -a,
                        y: s
                      }, i),
                      br: r({
                        x: a,
                        y: s
                      }, i)
                    }
                  },
                  setCoords: function(e) {
                    return this.aCoords = this.calcACoords(), this.lineCoords = this.group ? this.aCoords : this.calcLineCoords(), e || (this.oCoords = this.calcOCoords(), this._setCornerCoords && this._setCornerCoords()), this
                  },
                  _calcRotateMatrix: function() {
                    return e.calcRotateMatrix(this)
                  },
                  _calcTranslateMatrix: function() {
                    var e = this.getCenterPoint();
                    return [1, 0, 0, 1, e.x, e.y]
                  },
                  transformMatrixKey: function(e) {
                    var t = "_",
                      n = "";
                    return !e && this.group && (n = this.group.transformMatrixKey(e) + t), n + this.top + t + this.left + t + this.scaleX + t + this.scaleY + t + this.skewX + t + this.skewY + t + this.angle + t + this.originX + t + this
                      .originY + t + this.width + t + this.height + t + this.strokeWidth + this.flipX + this.flipY
                  },
                  calcTransformMatrix: function(e) {
                    var t = this.calcOwnMatrix();
                    if (e || !this.group) return t;
                    var r = this.transformMatrixKey(e),
                      i = this.matrixCache || (this.matrixCache = {});
                    return i.key === r ? i.value : (this.group && (t = n(this.group.calcTransformMatrix(!1), t)), i.key = r, i.value = t, t)
                  },
                  calcOwnMatrix: function() {
                    var t = this.transformMatrixKey(!0),
                      n = this.ownMatrixCache || (this.ownMatrixCache = {});
                    if (n.key === t) return n.value;
                    var r = this._calcTranslateMatrix(),
                      i = {
                        angle: this.angle,
                        translateX: r[4],
                        translateY: r[5],
                        scaleX: this.scaleX,
                        scaleY: this.scaleY,
                        skewX: this.skewX,
                        skewY: this.skewY,
                        flipX: this.flipX,
                        flipY: this.flipY
                      };
                    return n.key = t, n.value = e.composeMatrix(i), n.value
                  },
                  _getNonTransformedDimensions: function() {
                    var e = this.strokeWidth;
                    return {
                      x: this.width + e,
                      y: this.height + e
                    }
                  },
                  _getTransformedDimensions: function(t, n) {
                    void 0 === t && (t = this.skewX), void 0 === n && (n = this.skewY);
                    var r, i, o, a = 0 === t && 0 === n;
                    if (this.strokeUniform ? (i = this.width, o = this.height) : (i = (r = this._getNonTransformedDimensions()).x, o = r.y), a) return this._finalizeDimensions(i * this.scaleX, o * this.scaleY);
                    var s = e.sizeAfterTransform(i, o, {
                      scaleX: this.scaleX,
                      scaleY: this.scaleY,
                      skewX: t,
                      skewY: n
                    });
                    return this._finalizeDimensions(s.x, s.y)
                  },
                  _finalizeDimensions: function(e, t) {
                    return this.strokeUniform ? {
                      x: e + this.strokeWidth,
                      y: t + this.strokeWidth
                    } : {
                      x: e,
                      y: t
                    }
                  },
                  _calculateCurrentDimensions: function() {
                    var e = this.getViewportTransform(),
                      t = this._getTransformedDimensions();
                    return r(t, e, !0).scalarAdd(2 * this.padding)
                  }
                })
              }(), v.util.object.extend(v.Object.prototype, {
                sendToBack: function() {
                  return this.group ? v.StaticCanvas.prototype.sendToBack.call(this.group, this) : this.canvas && this.canvas.sendToBack(this), this
                },
                bringToFront: function() {
                  return this.group ? v.StaticCanvas.prototype.bringToFront.call(this.group, this) : this.canvas && this.canvas.bringToFront(this), this
                },
                sendBackwards: function(e) {
                  return this.group ? v.StaticCanvas.prototype.sendBackwards.call(this.group, this, e) : this.canvas && this.canvas.sendBackwards(this, e), this
                },
                bringForward: function(e) {
                  return this.group ? v.StaticCanvas.prototype.bringForward.call(this.group, this, e) : this.canvas && this.canvas.bringForward(this, e), this
                },
                moveTo: function(e) {
                  return this.group && "activeSelection" !== this.group.type ? v.StaticCanvas.prototype.moveTo.call(this.group, this, e) : this.canvas && this.canvas.moveTo(this, e), this
                }
              }),
              function() {
                function e(e, t) {
                  if (t) {
                    if (t.toLive) return e + ": url(#SVGID_" + t.id + "); ";
                    var n = new v.Color(t),
                      r = e + ": " + n.toRgb() + "; ",
                      i = n.getAlpha();
                    return 1 !== i && (r += e + "-opacity: " + i.toString() + "; "), r
                  }
                  return e + ": none; "
                }
                var t = v.util.toFixed;
                v.util.object.extend(v.Object.prototype, {
                  getSvgStyles: function(t) {
                    var n = this.fillRule ? this.fillRule : "nonzero",
                      r = this.strokeWidth ? this.strokeWidth : "0",
                      i = this.strokeDashArray ? this.strokeDashArray.join(" ") : "none",
                      o = this.strokeDashOffset ? this.strokeDashOffset : "0",
                      a = this.strokeLineCap ? this.strokeLineCap : "butt",
                      s = this.strokeLineJoin ? this.strokeLineJoin : "miter",
                      l = this.strokeMiterLimit ? this.strokeMiterLimit : "4",
                      c = void 0 !== this.opacity ? this.opacity : "1",
                      u = this.visible ? "" : " visibility: hidden;",
                      h = t ? "" : this.getSvgFilter(),
                      p = e("fill", this.fill);
                    return [e("stroke", this.stroke), "stroke-width: ", r, "; ", "stroke-dasharray: ", i, "; ", "stroke-linecap: ", a, "; ", "stroke-dashoffset: ", o, "; ", "stroke-linejoin: ", s, "; ", "stroke-miterlimit: ", l, "; ", p,
                      "fill-rule: ", n, "; ", "opacity: ", c, ";", h, u
                    ].join("")
                  },
                  getSvgSpanStyles: function(t, n) {
                    var r = "; ",
                      i = t.fontFamily ? "font-family: " + (-1 === t.fontFamily.indexOf("'") && -1 === t.fontFamily.indexOf('"') ? "'" + t.fontFamily + "'" : t.fontFamily) + r : "",
                      o = t.strokeWidth ? "stroke-width: " + t.strokeWidth + r : "",
                      a = (i = i, t.fontSize ? "font-size: " + t.fontSize + "px" + r : ""),
                      s = t.fontStyle ? "font-style: " + t.fontStyle + r : "",
                      l = t.fontWeight ? "font-weight: " + t.fontWeight + r : "",
                      c = t.fill ? e("fill", t.fill) : "",
                      u = t.stroke ? e("stroke", t.stroke) : "",
                      h = this.getSvgTextDecoration(t);
                    return h && (h = "text-decoration: " + h + r), [u, o, i, a, s, l, h, c, t.deltaY ? "baseline-shift: " + -t.deltaY + "; " : "", n ? "white-space: pre; " : ""].join("")
                  },
                  getSvgTextDecoration: function(e) {
                    return ["overline", "underline", "line-through"].filter((function(t) {
                      return e[t.replace("-", "")]
                    })).join(" ")
                  },
                  getSvgFilter: function() {
                    return this.shadow ? "filter: url(#SVGID_" + this.shadow.id + ");" : ""
                  },
                  getSvgCommons: function() {
                    return [this.id ? 'id="' + this.id + '" ' : "", this.clipPath ? 'clip-path="url(#' + this.clipPath.clipPathId + ')" ' : ""].join("")
                  },
                  getSvgTransform: function(e, t) {
                    var n = e ? this.calcTransformMatrix() : this.calcOwnMatrix();
                    return 'transform="' + v.util.matrixToSVG(n) + (t || "") + '" '
                  },
                  _setSVGBg: function(e) {
                    if (this.backgroundColor) {
                      var n = v.Object.NUM_FRACTION_DIGITS;
                      e.push("\t\t<rect ", this._getFillAttributes(this.backgroundColor), ' x="', t(-this.width / 2, n), '" y="', t(-this.height / 2, n), '" width="', t(this.width, n), '" height="', t(this.height, n), '"></rect>\n')
                    }
                  },
                  toSVG: function(e) {
                    return this._createBaseSVGMarkup(this._toSVG(e), {
                      reviver: e
                    })
                  },
                  toClipPathSVG: function(e) {
                    return "\t" + this._createBaseClipPathSVGMarkup(this._toSVG(e), {
                      reviver: e
                    })
                  },
                  _createBaseClipPathSVGMarkup: function(e, t) {
                    var n = (t = t || {}).reviver,
                      r = t.additionalTransform || "",
                      i = [this.getSvgTransform(!0, r), this.getSvgCommons()].join(""),
                      o = e.indexOf("COMMON_PARTS");
                    return e[o] = i, n ? n(e.join("")) : e.join("")
                  },
                  _createBaseSVGMarkup: function(e, t) {
                    var n, r, i = (t = t || {}).noStyle,
                      o = t.reviver,
                      a = i ? "" : 'style="' + this.getSvgStyles() + '" ',
                      s = t.withShadow ? 'style="' + this.getSvgFilter() + '" ' : "",
                      l = this.clipPath,
                      c = this.strokeUniform ? 'vector-effect="non-scaling-stroke" ' : "",
                      u = l && l.absolutePositioned,
                      h = this.stroke,
                      p = this.fill,
                      d = this.shadow,
                      f = [],
                      g = e.indexOf("COMMON_PARTS"),
                      m = t.additionalTransform;
                    return l && (l.clipPathId = "CLIPPATH_" + v.Object.__uid++, r = '<clipPath id="' + l.clipPathId + '" >\n' + l.toClipPathSVG(o) + "</clipPath>\n"), u && f.push("<g ", s, this.getSvgCommons(), " >\n"), f.push("<g ", this
                        .getSvgTransform(!1), u ? "" : s + this.getSvgCommons(), " >\n"), n = [a, c, i ? "" : this.addPaintOrder(), " ", m ? 'transform="' + m + '" ' : ""].join(""), e[g] = n, p && p.toLive && f.push(p.toSVG(this)), h && h
                      .toLive && f.push(h.toSVG(this)), d && f.push(d.toSVG(this)), l && f.push(r), f.push(e.join("")), f.push("</g>\n"), u && f.push("</g>\n"), o ? o(f.join("")) : f.join("")
                  },
                  addPaintOrder: function() {
                    return "fill" !== this.paintFirst ? ' paint-order="' + this.paintFirst + '" ' : ""
                  }
                })
              }(),
              function() {
                var e = v.util.object.extend,
                  t = "stateProperties";

                function n(t, n, r) {
                  var i = {};
                  r.forEach((function(e) {
                    i[e] = t[e]
                  })), e(t[n], i, !0)
                }

                function r(e, t, n) {
                  if (e === t) return !0;
                  if (Array.isArray(e)) {
                    if (!Array.isArray(t) || e.length !== t.length) return !1;
                    for (var i = 0, o = e.length; i < o; i++)
                      if (!r(e[i], t[i])) return !1;
                    return !0
                  }
                  if (e && "object" == typeof e) {
                    var a, s = Object.keys(e);
                    if (!t || "object" != typeof t || !n && s.length !== Object.keys(t).length) return !1;
                    for (i = 0, o = s.length; i < o; i++)
                      if ("canvas" !== (a = s[i]) && "group" !== a && !r(e[a], t[a])) return !1;
                    return !0
                  }
                }
                v.util.object.extend(v.Object.prototype, {
                  hasStateChanged: function(e) {
                    var n = "_" + (e = e || t);
                    return Object.keys(this[n]).length < this[e].length || !r(this[n], this, !0)
                  },
                  saveState: function(e) {
                    var r = e && e.propertySet || t,
                      i = "_" + r;
                    return this[i] ? (n(this, i, this[r]), e && e.stateProperties && n(this, i, e.stateProperties), this) : this.setupState(e)
                  },
                  setupState: function(e) {
                    var n = (e = e || {}).propertySet || t;
                    return e.propertySet = n, this["_" + n] = {}, this.saveState(e), this
                  }
                })
              }(),
              function() {
                var e = v.util.degreesToRadians;
                v.util.object.extend(v.Object.prototype, {
                  _findTargetCorner: function(e, t) {
                    if (!this.hasControls || this.group || !this.canvas || this.canvas._activeObject !== this) return !1;
                    var n, r, i, o = e.x,
                      a = e.y,
                      s = Object.keys(this.oCoords),
                      l = s.length - 1;
                    for (this.__corner = 0; l >= 0; l--)
                      if (i = s[l], this.isControlVisible(i) && (r = this._getImageLines(t ? this.oCoords[i].touchCorner : this.oCoords[i].corner), 0 !== (n = this._findCrossPoints({
                          x: o,
                          y: a
                        }, r)) && n % 2 == 1)) return this.__corner = i, i;
                    return !1
                  },
                  forEachControl: function(e) {
                    for (var t in this.controls) e(this.controls[t], t, this)
                  },
                  _setCornerCoords: function() {
                    var e = this.oCoords;
                    for (var t in e) {
                      var n = this.controls[t];
                      e[t].corner = n.calcCornerCoords(this.angle, this.cornerSize, e[t].x, e[t].y, !1), e[t].touchCorner = n.calcCornerCoords(this.angle, this.touchCornerSize, e[t].x, e[t].y, !0)
                    }
                  },
                  drawSelectionBackground: function(t) {
                    if (!this.selectionBackgroundColor || this.canvas && !this.canvas.interactive || this.canvas && this.canvas._activeObject !== this) return this;
                    t.save();
                    var n = this.getCenterPoint(),
                      r = this._calculateCurrentDimensions(),
                      i = this.canvas.viewportTransform;
                    return t.translate(n.x, n.y), t.scale(1 / i[0], 1 / i[3]), t.rotate(e(this.angle)), t.fillStyle = this.selectionBackgroundColor, t.fillRect(-r.x / 2, -r.y / 2, r.x, r.y), t.restore(), this
                  },
                  drawBorders: function(e, t) {
                    t = t || {};
                    var n = this._calculateCurrentDimensions(),
                      r = this.borderScaleFactor,
                      i = n.x + r,
                      o = n.y + r,
                      a = void 0 !== t.hasControls ? t.hasControls : this.hasControls,
                      s = !1;
                    return e.save(), e.strokeStyle = t.borderColor || this.borderColor, this._setLineDash(e, t.borderDashArray || this.borderDashArray), e.strokeRect(-i / 2, -o / 2, i, o), a && (e.beginPath(), this.forEachControl((function(
                      t, n, r) {
                      t.withConnection && t.getVisibility(r, n) && (s = !0, e.moveTo(t.x * i, t.y * o), e.lineTo(t.x * i + t.offsetX, t.y * o + t.offsetY))
                    })), s && e.stroke()), e.restore(), this
                  },
                  drawBordersInGroup: function(e, t, n) {
                    n = n || {};
                    var r = v.util.sizeAfterTransform(this.width, this.height, t),
                      i = this.strokeWidth,
                      o = this.strokeUniform,
                      a = this.borderScaleFactor,
                      s = r.x + i * (o ? this.canvas.getZoom() : t.scaleX) + a,
                      l = r.y + i * (o ? this.canvas.getZoom() : t.scaleY) + a;
                    return e.save(), this._setLineDash(e, n.borderDashArray || this.borderDashArray), e.strokeStyle = n.borderColor || this.borderColor, e.strokeRect(-s / 2, -l / 2, s, l), e.restore(), this
                  },
                  drawControls: function(e, t) {
                    t = t || {}, e.save();
                    var n, r, i = this.canvas.getRetinaScaling();
                    return e.setTransform(i, 0, 0, i, 0, 0), e.strokeStyle = e.fillStyle = t.cornerColor || this.cornerColor, this.transparentCorners || (e.strokeStyle = t.cornerStrokeColor || this.cornerStrokeColor), this._setLineDash(e, t
                      .cornerDashArray || this.cornerDashArray), this.setCoords(), this.group && (n = this.group.calcTransformMatrix()), this.forEachControl((function(i, o, a) {
                      r = a.oCoords[o], i.getVisibility(a, o) && (n && (r = v.util.transformPoint(r, n)), i.render(e, r.x, r.y, t, a))
                    })), e.restore(), this
                  },
                  isControlVisible: function(e) {
                    return this.controls[e] && this.controls[e].getVisibility(this, e)
                  },
                  setControlVisible: function(e, t) {
                    return this._controlsVisibility || (this._controlsVisibility = {}), this._controlsVisibility[e] = t, this
                  },
                  setControlsVisibility: function(e) {
                    for (var t in e || (e = {}), e) this.setControlVisible(t, e[t]);
                    return this
                  },
                  onDeselect: function() {},
                  onSelect: function() {}
                })
              }(), v.util.object.extend(v.StaticCanvas.prototype, {
                FX_DURATION: 500,
                fxCenterObjectH: function(e, t) {
                  var n = function() {},
                    r = (t = t || {}).onComplete || n,
                    i = t.onChange || n,
                    o = this;
                  return v.util.animate({
                    target: this,
                    startValue: e.left,
                    endValue: this.getCenterPoint().x,
                    duration: this.FX_DURATION,
                    onChange: function(t) {
                      e.set("left", t), o.requestRenderAll(), i()
                    },
                    onComplete: function() {
                      e.setCoords(), r()
                    }
                  })
                },
                fxCenterObjectV: function(e, t) {
                  var n = function() {},
                    r = (t = t || {}).onComplete || n,
                    i = t.onChange || n,
                    o = this;
                  return v.util.animate({
                    target: this,
                    startValue: e.top,
                    endValue: this.getCenterPoint().y,
                    duration: this.FX_DURATION,
                    onChange: function(t) {
                      e.set("top", t), o.requestRenderAll(), i()
                    },
                    onComplete: function() {
                      e.setCoords(), r()
                    }
                  })
                },
                fxRemove: function(e, t) {
                  var n = function() {},
                    r = (t = t || {}).onComplete || n,
                    i = t.onChange || n,
                    o = this;
                  return v.util.animate({
                    target: this,
                    startValue: e.opacity,
                    endValue: 0,
                    duration: this.FX_DURATION,
                    onChange: function(t) {
                      e.set("opacity", t), o.requestRenderAll(), i()
                    },
                    onComplete: function() {
                      o.remove(e), r()
                    }
                  })
                }
              }), v.util.object.extend(v.Object.prototype, {
                animate: function() {
                  if (arguments[0] && "object" == typeof arguments[0]) {
                    var e, t, n = [],
                      r = [];
                    for (e in arguments[0]) n.push(e);
                    for (var i = 0, o = n.length; i < o; i++) e = n[i], t = i !== o - 1, r.push(this._animate(e, arguments[0][e], arguments[1], t));
                    return r
                  }
                  return this._animate.apply(this, arguments)
                },
                _animate: function(e, t, n, r) {
                  var i, o = this;
                  t = t.toString(), n = n ? v.util.object.clone(n) : {}, ~e.indexOf(".") && (i = e.split("."));
                  var a = o.colorProperties.indexOf(e) > -1 || i && o.colorProperties.indexOf(i[1]) > -1,
                    s = i ? this.get(i[0])[i[1]] : this.get(e);
                  "from" in n || (n.from = s), a || (t = ~t.indexOf("=") ? s + parseFloat(t.replace("=", "")) : parseFloat(t));
                  var l = {
                    target: this,
                    startValue: n.from,
                    endValue: t,
                    byValue: n.by,
                    easing: n.easing,
                    duration: n.duration,
                    abort: n.abort && function(e, t, r) {
                      return n.abort.call(o, e, t, r)
                    },
                    onChange: function(t, a, s) {
                      i ? o[i[0]][i[1]] = t : o.set(e, t), r || n.onChange && n.onChange(t, a, s)
                    },
                    onComplete: function(e, t, i) {
                      r || (o.setCoords(), n.onComplete && n.onComplete(e, t, i))
                    }
                  };
                  return a ? v.util.animateColor(l.startValue, l.endValue, l.duration, l) : v.util.animate(l)
                }
              }),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.util.object.extend,
                  r = t.util.object.clone,
                  i = {
                    x1: 1,
                    x2: 1,
                    y1: 1,
                    y2: 1
                  };

                function o(e, t) {
                  var n = e.origin,
                    r = e.axis1,
                    i = e.axis2,
                    o = e.dimension,
                    a = t.nearest,
                    s = t.center,
                    l = t.farthest;
                  return function() {
                    switch (this.get(n)) {
                      case a:
                        return Math.min(this.get(r), this.get(i));
                      case s:
                        return Math.min(this.get(r), this.get(i)) + .5 * this.get(o);
                      case l:
                        return Math.max(this.get(r), this.get(i))
                    }
                  }
                }
                t.Line ? t.warn("fabric.Line is already defined") : (t.Line = t.util.createClass(t.Object, {
                  type: "line",
                  x1: 0,
                  y1: 0,
                  x2: 0,
                  y2: 0,
                  cacheProperties: t.Object.prototype.cacheProperties.concat("x1", "x2", "y1", "y2"),
                  initialize: function(e, t) {
                    e || (e = [0, 0, 0, 0]), this.callSuper("initialize", t), this.set("x1", e[0]), this.set("y1", e[1]), this.set("x2", e[2]), this.set("y2", e[3]), this._setWidthHeight(t)
                  },
                  _setWidthHeight: function(e) {
                    e || (e = {}), this.width = Math.abs(this.x2 - this.x1), this.height = Math.abs(this.y2 - this.y1), this.left = "left" in e ? e.left : this._getLeftToOriginX(), this.top = "top" in e ? e.top : this._getTopToOriginY()
                  },
                  _set: function(e, t) {
                    return this.callSuper("_set", e, t), void 0 !== i[e] && this._setWidthHeight(), this
                  },
                  _getLeftToOriginX: o({
                    origin: "originX",
                    axis1: "x1",
                    axis2: "x2",
                    dimension: "width"
                  }, {
                    nearest: "left",
                    center: "center",
                    farthest: "right"
                  }),
                  _getTopToOriginY: o({
                    origin: "originY",
                    axis1: "y1",
                    axis2: "y2",
                    dimension: "height"
                  }, {
                    nearest: "top",
                    center: "center",
                    farthest: "bottom"
                  }),
                  _render: function(e) {
                    e.beginPath();
                    var t = this.calcLinePoints();
                    e.moveTo(t.x1, t.y1), e.lineTo(t.x2, t.y2), e.lineWidth = this.strokeWidth;
                    var n = e.strokeStyle;
                    e.strokeStyle = this.stroke || e.fillStyle, this.stroke && this._renderStroke(e), e.strokeStyle = n
                  },
                  _findCenterFromElement: function() {
                    return {
                      x: (this.x1 + this.x2) / 2,
                      y: (this.y1 + this.y2) / 2
                    }
                  },
                  toObject: function(e) {
                    return n(this.callSuper("toObject", e), this.calcLinePoints())
                  },
                  _getNonTransformedDimensions: function() {
                    var e = this.callSuper("_getNonTransformedDimensions");
                    return "butt" === this.strokeLineCap && (0 === this.width && (e.y -= this.strokeWidth), 0 === this.height && (e.x -= this.strokeWidth)), e
                  },
                  calcLinePoints: function() {
                    var e = this.x1 <= this.x2 ? -1 : 1,
                      t = this.y1 <= this.y2 ? -1 : 1,
                      n = e * this.width * .5,
                      r = t * this.height * .5;
                    return {
                      x1: n,
                      x2: e * this.width * -.5,
                      y1: r,
                      y2: t * this.height * -.5
                    }
                  },
                  _toSVG: function() {
                    var e = this.calcLinePoints();
                    return ["<line ", "COMMON_PARTS", 'x1="', e.x1, '" y1="', e.y1, '" x2="', e.x2, '" y2="', e.y2, '" />\n']
                  }
                }), t.Line.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")), t.Line.fromElement = function(e, r, i) {
                  i = i || {};
                  var o = t.parseAttributes(e, t.Line.ATTRIBUTE_NAMES),
                    a = [o.x1 || 0, o.y1 || 0, o.x2 || 0, o.y2 || 0];
                  r(new t.Line(a, n(o, i)))
                }, t.Line.fromObject = function(e, n) {
                  var i = r(e, !0);
                  i.points = [e.x1, e.y1, e.x2, e.y2], t.Object._fromObject("Line", i, (function(e) {
                    delete e.points, n && n(e)
                  }), "points")
                })
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.util.degreesToRadians;
                t.Circle ? t.warn("fabric.Circle is already defined.") : (t.Circle = t.util.createClass(t.Object, {
                  type: "circle",
                  radius: 0,
                  startAngle: 0,
                  endAngle: 360,
                  cacheProperties: t.Object.prototype.cacheProperties.concat("radius", "startAngle", "endAngle"),
                  _set: function(e, t) {
                    return this.callSuper("_set", e, t), "radius" === e && this.setRadius(t), this
                  },
                  toObject: function(e) {
                    return this.callSuper("toObject", ["radius", "startAngle", "endAngle"].concat(e))
                  },
                  _toSVG: function() {
                    var e, r = (this.endAngle - this.startAngle) % 360;
                    if (0 === r) e = ["<circle ", "COMMON_PARTS", 'cx="0" cy="0" ', 'r="', this.radius, '" />\n'];
                    else {
                      var i = n(this.startAngle),
                        o = n(this.endAngle),
                        a = this.radius;
                      e = ['<path d="M ' + t.util.cos(i) * a + " " + t.util.sin(i) * a, " A " + a + " " + a, " 0 ", +(r > 180 ? "1" : "0") + " 1", " " + t.util.cos(o) * a + " " + t.util.sin(o) * a, '" ', "COMMON_PARTS", " />\n"]
                    }
                    return e
                  },
                  _render: function(e) {
                    e.beginPath(), e.arc(0, 0, this.radius, n(this.startAngle), n(this.endAngle), !1), this._renderPaintInOrder(e)
                  },
                  getRadiusX: function() {
                    return this.get("radius") * this.get("scaleX")
                  },
                  getRadiusY: function() {
                    return this.get("radius") * this.get("scaleY")
                  },
                  setRadius: function(e) {
                    return this.radius = e, this.set("width", 2 * e).set("height", 2 * e)
                  }
                }), t.Circle.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")), t.Circle.fromElement = function(e, n) {
                  var r = t.parseAttributes(e, t.Circle.ATTRIBUTE_NAMES);
                  if (! function(e) {
                      return "radius" in e && e.radius >= 0
                    }(r)) throw new Error("value of `r` attribute is required and can not be negative");
                  r.left = (r.left || 0) - r.radius, r.top = (r.top || 0) - r.radius, n(new t.Circle(r))
                }, t.Circle.fromObject = function(e, n) {
                  t.Object._fromObject("Circle", e, n)
                })
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {});
                t.Triangle ? t.warn("fabric.Triangle is already defined") : (t.Triangle = t.util.createClass(t.Object, {
                  type: "triangle",
                  width: 100,
                  height: 100,
                  _render: function(e) {
                    var t = this.width / 2,
                      n = this.height / 2;
                    e.beginPath(), e.moveTo(-t, n), e.lineTo(0, -n), e.lineTo(t, n), e.closePath(), this._renderPaintInOrder(e)
                  },
                  _toSVG: function() {
                    var e = this.width / 2,
                      t = this.height / 2;
                    return ["<polygon ", "COMMON_PARTS", 'points="', [-e + " " + t, "0 " + -t, e + " " + t].join(","), '" />']
                  }
                }), t.Triangle.fromObject = function(e, n) {
                  return t.Object._fromObject("Triangle", e, n)
                })
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = 2 * Math.PI;
                t.Ellipse ? t.warn("fabric.Ellipse is already defined.") : (t.Ellipse = t.util.createClass(t.Object, {
                  type: "ellipse",
                  rx: 0,
                  ry: 0,
                  cacheProperties: t.Object.prototype.cacheProperties.concat("rx", "ry"),
                  initialize: function(e) {
                    this.callSuper("initialize", e), this.set("rx", e && e.rx || 0), this.set("ry", e && e.ry || 0)
                  },
                  _set: function(e, t) {
                    switch (this.callSuper("_set", e, t), e) {
                      case "rx":
                        this.rx = t, this.set("width", 2 * t);
                        break;
                      case "ry":
                        this.ry = t, this.set("height", 2 * t)
                    }
                    return this
                  },
                  getRx: function() {
                    return this.get("rx") * this.get("scaleX")
                  },
                  getRy: function() {
                    return this.get("ry") * this.get("scaleY")
                  },
                  toObject: function(e) {
                    return this.callSuper("toObject", ["rx", "ry"].concat(e))
                  },
                  _toSVG: function() {
                    return ["<ellipse ", "COMMON_PARTS", 'cx="0" cy="0" ', 'rx="', this.rx, '" ry="', this.ry, '" />\n']
                  },
                  _render: function(e) {
                    e.beginPath(), e.save(), e.transform(1, 0, 0, this.ry / this.rx, 0, 0), e.arc(0, 0, this.rx, 0, n, !1), e.restore(), this._renderPaintInOrder(e)
                  }
                }), t.Ellipse.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")), t.Ellipse.fromElement = function(e, n) {
                  var r = t.parseAttributes(e, t.Ellipse.ATTRIBUTE_NAMES);
                  r.left = (r.left || 0) - r.rx, r.top = (r.top || 0) - r.ry, n(new t.Ellipse(r))
                }, t.Ellipse.fromObject = function(e, n) {
                  t.Object._fromObject("Ellipse", e, n)
                })
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.util.object.extend;
                t.Rect ? t.warn("fabric.Rect is already defined") : (t.Rect = t.util.createClass(t.Object, {
                  stateProperties: t.Object.prototype.stateProperties.concat("rx", "ry"),
                  type: "rect",
                  rx: 0,
                  ry: 0,
                  cacheProperties: t.Object.prototype.cacheProperties.concat("rx", "ry"),
                  initialize: function(e) {
                    this.callSuper("initialize", e), this._initRxRy()
                  },
                  _initRxRy: function() {
                    this.rx && !this.ry ? this.ry = this.rx : this.ry && !this.rx && (this.rx = this.ry)
                  },
                  _render: function(e) {
                    var t = this.rx ? Math.min(this.rx, this.width / 2) : 0,
                      n = this.ry ? Math.min(this.ry, this.height / 2) : 0,
                      r = this.width,
                      i = this.height,
                      o = -this.width / 2,
                      a = -this.height / 2,
                      s = 0 !== t || 0 !== n,
                      l = .4477152502;
                    e.beginPath(), e.moveTo(o + t, a), e.lineTo(o + r - t, a), s && e.bezierCurveTo(o + r - l * t, a, o + r, a + l * n, o + r, a + n), e.lineTo(o + r, a + i - n), s && e.bezierCurveTo(o + r, a + i - l * n, o + r - l * t,
                      a + i, o + r - t, a + i), e.lineTo(o + t, a + i), s && e.bezierCurveTo(o + l * t, a + i, o, a + i - l * n, o, a + i - n), e.lineTo(o, a + n), s && e.bezierCurveTo(o, a + l * n, o + l * t, a, o + t, a), e
                    .closePath(), this._renderPaintInOrder(e)
                  },
                  toObject: function(e) {
                    return this.callSuper("toObject", ["rx", "ry"].concat(e))
                  },
                  _toSVG: function() {
                    return ["<rect ", "COMMON_PARTS", 'x="', -this.width / 2, '" y="', -this.height / 2, '" rx="', this.rx, '" ry="', this.ry, '" width="', this.width, '" height="', this.height, '" />\n']
                  }
                }), t.Rect.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")), t.Rect.fromElement = function(e, r, i) {
                  if (!e) return r(null);
                  i = i || {};
                  var o = t.parseAttributes(e, t.Rect.ATTRIBUTE_NAMES);
                  o.left = o.left || 0, o.top = o.top || 0, o.height = o.height || 0, o.width = o.width || 0;
                  var a = new t.Rect(n(i ? t.util.object.clone(i) : {}, o));
                  a.visible = a.visible && a.width > 0 && a.height > 0, r(a)
                }, t.Rect.fromObject = function(e, n) {
                  return t.Object._fromObject("Rect", e, n)
                })
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.util.object.extend,
                  r = t.util.array.min,
                  i = t.util.array.max,
                  o = t.util.toFixed,
                  a = t.util.projectStrokeOnPoints;
                t.Polyline ? t.warn("fabric.Polyline is already defined") : (t.Polyline = t.util.createClass(t.Object, {
                  type: "polyline",
                  points: null,
                  exactBoundingBox: !1,
                  cacheProperties: t.Object.prototype.cacheProperties.concat("points"),
                  initialize: function(e, t) {
                    t = t || {}, this.points = e || [], this.callSuper("initialize", t), this._setPositionDimensions(t)
                  },
                  _projectStrokeOnPoints: function() {
                    return a(this.points, this, !0)
                  },
                  _setPositionDimensions: function(e) {
                    var t, n = this._calcDimensions(e),
                      r = this.exactBoundingBox ? this.strokeWidth : 0;
                    this.width = n.width - r, this.height = n.height - r, e.fromSVG || (t = this.translateToGivenOrigin({
                      x: n.left - this.strokeWidth / 2 + r / 2,
                      y: n.top - this.strokeWidth / 2 + r / 2
                    }, "left", "top", this.originX, this.originY)), void 0 === e.left && (this.left = e.fromSVG ? n.left : t.x), void 0 === e.top && (this.top = e.fromSVG ? n.top : t.y), this.pathOffset = {
                      x: n.left + this.width / 2 + r / 2,
                      y: n.top + this.height / 2 + r / 2
                    }
                  },
                  _calcDimensions: function() {
                    var e = this.exactBoundingBox ? this._projectStrokeOnPoints() : this.points,
                      t = r(e, "x") || 0,
                      n = r(e, "y") || 0;
                    return {
                      left: t,
                      top: n,
                      width: (i(e, "x") || 0) - t,
                      height: (i(e, "y") || 0) - n
                    }
                  },
                  toObject: function(e) {
                    return n(this.callSuper("toObject", e), {
                      points: this.points.concat()
                    })
                  },
                  _toSVG: function() {
                    for (var e = [], n = this.pathOffset.x, r = this.pathOffset.y, i = t.Object.NUM_FRACTION_DIGITS, a = 0, s = this.points.length; a < s; a++) e.push(o(this.points[a].x - n, i), ",", o(this.points[a].y - r, i), " ");
                    return ["<" + this.type + " ", "COMMON_PARTS", 'points="', e.join(""), '" />\n']
                  },
                  commonRender: function(e) {
                    var t, n = this.points.length,
                      r = this.pathOffset.x,
                      i = this.pathOffset.y;
                    if (!n || isNaN(this.points[n - 1].y)) return !1;
                    e.beginPath(), e.moveTo(this.points[0].x - r, this.points[0].y - i);
                    for (var o = 0; o < n; o++) t = this.points[o], e.lineTo(t.x - r, t.y - i);
                    return !0
                  },
                  _render: function(e) {
                    this.commonRender(e) && this._renderPaintInOrder(e)
                  },
                  complexity: function() {
                    return this.get("points").length
                  }
                }), t.Polyline.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat(), t.Polyline.fromElementGenerator = function(e) {
                  return function(r, i, o) {
                    if (!r) return i(null);
                    o || (o = {});
                    var a = t.parsePointsAttribute(r.getAttribute("points")),
                      s = t.parseAttributes(r, t[e].ATTRIBUTE_NAMES);
                    s.fromSVG = !0, i(new t[e](a, n(s, o)))
                  }
                }, t.Polyline.fromElement = t.Polyline.fromElementGenerator("Polyline"), t.Polyline.fromObject = function(e, n) {
                  return t.Object._fromObject("Polyline", e, n, "points")
                })
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.util.projectStrokeOnPoints;
                t.Polygon ? t.warn("fabric.Polygon is already defined") : (t.Polygon = t.util.createClass(t.Polyline, {
                  type: "polygon",
                  _projectStrokeOnPoints: function() {
                    return n(this.points, this)
                  },
                  _render: function(e) {
                    this.commonRender(e) && (e.closePath(), this._renderPaintInOrder(e))
                  }
                }), t.Polygon.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat(), t.Polygon.fromElement = t.Polyline.fromElementGenerator("Polygon"), t.Polygon.fromObject = function(e, n) {
                  t.Object._fromObject("Polygon", e, n, "points")
                })
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.util.array.min,
                  r = t.util.array.max,
                  i = t.util.object.extend,
                  o = t.util.object.clone,
                  a = t.util.toFixed;
                t.Path ? t.warn("fabric.Path is already defined") : (t.Path = t.util.createClass(t.Object, {
                  type: "path",
                  path: null,
                  cacheProperties: t.Object.prototype.cacheProperties.concat("path", "fillRule"),
                  stateProperties: t.Object.prototype.stateProperties.concat("path"),
                  initialize: function(e, t) {
                    delete(t = o(t || {})).path, this.callSuper("initialize", t), this._setPath(e || [], t)
                  },
                  _setPath: function(e, n) {
                    this.path = t.util.makePathSimpler(Array.isArray(e) ? e : t.util.parsePath(e)), t.Polyline.prototype._setPositionDimensions.call(this, n || {})
                  },
                  _renderPathCommands: function(e) {
                    var t, n = 0,
                      r = 0,
                      i = 0,
                      o = 0,
                      a = 0,
                      s = 0,
                      l = -this.pathOffset.x,
                      c = -this.pathOffset.y;
                    e.beginPath();
                    for (var u = 0, h = this.path.length; u < h; ++u) switch ((t = this.path[u])[0]) {
                      case "L":
                        i = t[1], o = t[2], e.lineTo(i + l, o + c);
                        break;
                      case "M":
                        n = i = t[1], r = o = t[2], e.moveTo(i + l, o + c);
                        break;
                      case "C":
                        i = t[5], o = t[6], a = t[3], s = t[4], e.bezierCurveTo(t[1] + l, t[2] + c, a + l, s + c, i + l, o + c);
                        break;
                      case "Q":
                        e.quadraticCurveTo(t[1] + l, t[2] + c, t[3] + l, t[4] + c), i = t[3], o = t[4], a = t[1], s = t[2];
                        break;
                      case "z":
                      case "Z":
                        i = n, o = r, e.closePath()
                    }
                  },
                  _render: function(e) {
                    this._renderPathCommands(e), this._renderPaintInOrder(e)
                  },
                  toString: function() {
                    return "#<fabric.Path (" + this.complexity() + '): { "top": ' + this.top + ', "left": ' + this.left + " }>"
                  },
                  toObject: function(e) {
                    return i(this.callSuper("toObject", e), {
                      path: this.path.map((function(e) {
                        return e.slice()
                      }))
                    })
                  },
                  toDatalessObject: function(e) {
                    var t = this.toObject(["sourcePath"].concat(e));
                    return t.sourcePath && delete t.path, t
                  },
                  _toSVG: function() {
                    return ["<path ", "COMMON_PARTS", 'd="', t.util.joinPath(this.path), '" stroke-linecap="round" ', "/>\n"]
                  },
                  _getOffsetTransform: function() {
                    var e = t.Object.NUM_FRACTION_DIGITS;
                    return " translate(" + a(-this.pathOffset.x, e) + ", " + a(-this.pathOffset.y, e) + ")"
                  },
                  toClipPathSVG: function(e) {
                    var t = this._getOffsetTransform();
                    return "\t" + this._createBaseClipPathSVGMarkup(this._toSVG(), {
                      reviver: e,
                      additionalTransform: t
                    })
                  },
                  toSVG: function(e) {
                    var t = this._getOffsetTransform();
                    return this._createBaseSVGMarkup(this._toSVG(), {
                      reviver: e,
                      additionalTransform: t
                    })
                  },
                  complexity: function() {
                    return this.path.length
                  },
                  _calcDimensions: function() {
                    for (var e, i, o = [], a = [], s = 0, l = 0, c = 0, u = 0, h = 0, p = this.path.length; h < p; ++h) {
                      switch ((e = this.path[h])[0]) {
                        case "L":
                          c = e[1], u = e[2], i = [];
                          break;
                        case "M":
                          s = c = e[1], l = u = e[2], i = [];
                          break;
                        case "C":
                          i = t.util.getBoundsOfCurve(c, u, e[1], e[2], e[3], e[4], e[5], e[6]), c = e[5], u = e[6];
                          break;
                        case "Q":
                          i = t.util.getBoundsOfCurve(c, u, e[1], e[2], e[1], e[2], e[3], e[4]), c = e[3], u = e[4];
                          break;
                        case "z":
                        case "Z":
                          c = s, u = l
                      }
                      i.forEach((function(e) {
                        o.push(e.x), a.push(e.y)
                      })), o.push(c), a.push(u)
                    }
                    var d = n(o) || 0,
                      f = n(a) || 0;
                    return {
                      left: d,
                      top: f,
                      width: (r(o) || 0) - d,
                      height: (r(a) || 0) - f
                    }
                  }
                }), t.Path.fromObject = function(e, n) {
                  if ("string" == typeof e.sourcePath) {
                    var r = e.sourcePath;
                    t.loadSVGFromURL(r, (function(r) {
                      var i = r[0];
                      i.setOptions(e), e.clipPath ? t.util.enlivenObjects([e.clipPath], (function(e) {
                        i.clipPath = e[0], n && n(i)
                      })) : n && n(i)
                    }))
                  } else t.Object._fromObject("Path", e, n, "path")
                }, t.Path.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat(["d"]), t.Path.fromElement = function(e, n, r) {
                  var o = t.parseAttributes(e, t.Path.ATTRIBUTE_NAMES);
                  o.fromSVG = !0, n(new t.Path(o.d, i(o, r)))
                })
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.util.array.min,
                  r = t.util.array.max;
                t.Group || (t.Group = t.util.createClass(t.Object, t.Collection, {
                  type: "group",
                  strokeWidth: 0,
                  subTargetCheck: !1,
                  cacheProperties: [],
                  useSetOnGroup: !1,
                  initialize: function(e, t, n) {
                    t = t || {}, this._objects = [], n && this.callSuper("initialize", t), this._objects = e || [];
                    for (var r = this._objects.length; r--;) this._objects[r].group = this;
                    if (n) this._updateObjectsACoords();
                    else {
                      var i = t && t.centerPoint;
                      void 0 !== t.originX && (this.originX = t.originX), void 0 !== t.originY && (this.originY = t.originY), i || this._calcBounds(), this._updateObjectsCoords(i), delete t.centerPoint, this.callSuper("initialize", t)
                    }
                    this.setCoords()
                  },
                  _updateObjectsACoords: function() {
                    for (var e = this._objects.length; e--;) this._objects[e].setCoords(true)
                  },
                  _updateObjectsCoords: function(e) {
                    e = e || this.getCenterPoint();
                    for (var t = this._objects.length; t--;) this._updateObjectCoords(this._objects[t], e)
                  },
                  _updateObjectCoords: function(e, t) {
                    var n = e.left,
                      r = e.top;
                    e.set({
                      left: n - t.x,
                      top: r - t.y
                    }), e.group = this, e.setCoords(!0)
                  },
                  toString: function() {
                    return "#<fabric.Group: (" + this.complexity() + ")>"
                  },
                  addWithUpdate: function(e) {
                    var n = !!this.group;
                    return this._restoreObjectsState(), t.util.resetObjectTransform(this), e && (n && t.util.removeTransformFromObject(e, this.group.calcTransformMatrix()), this._objects.push(e), e.group = this, e._set("canvas", this
                      .canvas)), this._calcBounds(), this._updateObjectsCoords(), this.dirty = !0, n ? this.group.addWithUpdate() : this.setCoords(), this
                  },
                  removeWithUpdate: function(e) {
                    return this._restoreObjectsState(), t.util.resetObjectTransform(this), this.remove(e), this._calcBounds(), this._updateObjectsCoords(), this.setCoords(), this.dirty = !0, this
                  },
                  _onObjectAdded: function(e) {
                    this.dirty = !0, e.group = this, e._set("canvas", this.canvas)
                  },
                  _onObjectRemoved: function(e) {
                    this.dirty = !0, delete e.group
                  },
                  _set: function(e, n) {
                    var r = this._objects.length;
                    if (this.useSetOnGroup)
                      for (; r--;) this._objects[r].setOnGroup(e, n);
                    if ("canvas" === e)
                      for (; r--;) this._objects[r]._set(e, n);
                    t.Object.prototype._set.call(this, e, n)
                  },
                  toObject: function(e) {
                    var n = this.includeDefaultValues,
                      r = this._objects.filter((function(e) {
                        return !e.excludeFromExport
                      })).map((function(t) {
                        var r = t.includeDefaultValues;
                        t.includeDefaultValues = n;
                        var i = t.toObject(e);
                        return t.includeDefaultValues = r, i
                      })),
                      i = t.Object.prototype.toObject.call(this, e);
                    return i.objects = r, i
                  },
                  toDatalessObject: function(e) {
                    var n, r = this.sourcePath;
                    if (r) n = r;
                    else {
                      var i = this.includeDefaultValues;
                      n = this._objects.map((function(t) {
                        var n = t.includeDefaultValues;
                        t.includeDefaultValues = i;
                        var r = t.toDatalessObject(e);
                        return t.includeDefaultValues = n, r
                      }))
                    }
                    var o = t.Object.prototype.toDatalessObject.call(this, e);
                    return o.objects = n, o
                  },
                  render: function(e) {
                    this._transformDone = !0, this.callSuper("render", e), this._transformDone = !1
                  },
                  shouldCache: function() {
                    var e = t.Object.prototype.shouldCache.call(this);
                    if (e)
                      for (var n = 0, r = this._objects.length; n < r; n++)
                        if (this._objects[n].willDrawShadow()) return this.ownCaching = !1, !1;
                    return e
                  },
                  willDrawShadow: function() {
                    if (t.Object.prototype.willDrawShadow.call(this)) return !0;
                    for (var e = 0, n = this._objects.length; e < n; e++)
                      if (this._objects[e].willDrawShadow()) return !0;
                    return !1
                  },
                  isOnACache: function() {
                    return this.ownCaching || this.group && this.group.isOnACache()
                  },
                  drawObject: function(e) {
                    for (var t = 0, n = this._objects.length; t < n; t++) this._objects[t].render(e);
                    this._drawClipPath(e, this.clipPath)
                  },
                  isCacheDirty: function(e) {
                    if (this.callSuper("isCacheDirty", e)) return !0;
                    if (!this.statefullCache) return !1;
                    for (var t = 0, n = this._objects.length; t < n; t++)
                      if (this._objects[t].isCacheDirty(!0)) {
                        if (this._cacheCanvas) {
                          var r = this.cacheWidth / this.zoomX,
                            i = this.cacheHeight / this.zoomY;
                          this._cacheContext.clearRect(-r / 2, -i / 2, r, i)
                        }
                        return !0
                      } return !1
                  },
                  _restoreObjectsState: function() {
                    var e = this.calcOwnMatrix();
                    return this._objects.forEach((function(n) {
                      t.util.addTransformToObject(n, e), delete n.group, n.setCoords()
                    })), this
                  },
                  destroy: function() {
                    return this._objects.forEach((function(e) {
                      e.set("dirty", !0)
                    })), this._restoreObjectsState()
                  },
                  dispose: function() {
                    this.callSuper("dispose"), this.forEachObject((function(e) {
                      e.dispose && e.dispose()
                    })), this._objects = []
                  },
                  toActiveSelection: function() {
                    if (this.canvas) {
                      var e = this._objects,
                        n = this.canvas;
                      this._objects = [];
                      var r = this.toObject();
                      delete r.objects;
                      var i = new t.ActiveSelection([]);
                      return i.set(r), i.type = "activeSelection", n.remove(this), e.forEach((function(e) {
                        e.group = i, e.dirty = !0, n.add(e)
                      })), i.canvas = n, i._objects = e, n._activeObject = i, i.setCoords(), i
                    }
                  },
                  ungroupOnCanvas: function() {
                    return this._restoreObjectsState()
                  },
                  setObjectsCoords: function() {
                    return this.forEachObject((function(e) {
                      e.setCoords(true)
                    })), this
                  },
                  _calcBounds: function(e) {
                    for (var t, n, r, i, o = [], a = [], s = ["tr", "br", "bl", "tl"], l = 0, c = this._objects.length, u = s.length; l < c; ++l) {
                      for (r = (t = this._objects[l]).calcACoords(), i = 0; i < u; i++) n = s[i], o.push(r[n].x), a.push(r[n].y);
                      t.aCoords = r
                    }
                    this._getBounds(o, a, e)
                  },
                  _getBounds: function(e, i, o) {
                    var a = new t.Point(n(e), n(i)),
                      s = new t.Point(r(e), r(i)),
                      l = a.y || 0,
                      c = a.x || 0,
                      u = s.x - a.x || 0,
                      h = s.y - a.y || 0;
                    this.width = u, this.height = h, o || this.setPositionByOrigin({
                      x: c,
                      y: l
                    }, "left", "top")
                  },
                  _toSVG: function(e) {
                    for (var t = ["<g ", "COMMON_PARTS", " >\n"], n = 0, r = this._objects.length; n < r; n++) t.push("\t\t", this._objects[n].toSVG(e));
                    return t.push("</g>\n"), t
                  },
                  getSvgStyles: function() {
                    var e = void 0 !== this.opacity && 1 !== this.opacity ? "opacity: " + this.opacity + ";" : "",
                      t = this.visible ? "" : " visibility: hidden;";
                    return [e, this.getSvgFilter(), t].join("")
                  },
                  toClipPathSVG: function(e) {
                    for (var t = [], n = 0, r = this._objects.length; n < r; n++) t.push("\t", this._objects[n].toClipPathSVG(e));
                    return this._createBaseClipPathSVGMarkup(t, {
                      reviver: e
                    })
                  }
                }), t.Group.fromObject = function(e, n) {
                  var r = e.objects,
                    i = t.util.object.clone(e, !0);
                  delete i.objects, "string" != typeof r ? t.util.enlivenObjects(r, (function(r) {
                    t.util.enlivenObjectEnlivables(e, i, (function() {
                      n && n(new t.Group(r, i, !0))
                    }))
                  })) : t.loadSVGFromURL(r, (function(o) {
                    var a = t.util.groupSVGElements(o, e, r),
                      s = i.clipPath;
                    delete i.clipPath, a.set(i), s ? t.util.enlivenObjects([s], (function(e) {
                      a.clipPath = e[0], n && n(a)
                    })) : n && n(a)
                  }))
                })
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {});
                t.ActiveSelection || (t.ActiveSelection = t.util.createClass(t.Group, {
                  type: "activeSelection",
                  initialize: function(e, n) {
                    n = n || {}, this._objects = e || [];
                    for (var r = this._objects.length; r--;) this._objects[r].group = this;
                    n.originX && (this.originX = n.originX), n.originY && (this.originY = n.originY), this._calcBounds(), this._updateObjectsCoords(), t.Object.prototype.initialize.call(this, n), this.setCoords()
                  },
                  toGroup: function() {
                    var e = this._objects.concat();
                    this._objects = [];
                    var n = t.Object.prototype.toObject.call(this),
                      r = new t.Group([]);
                    if (delete n.type, r.set(n), e.forEach((function(e) {
                        e.canvas.remove(e), e.group = r
                      })), r._objects = e, !this.canvas) return r;
                    var i = this.canvas;
                    return i.add(r), i._activeObject = r, r.setCoords(), r
                  },
                  onDeselect: function() {
                    return this.destroy(), !1
                  },
                  toString: function() {
                    return "#<fabric.ActiveSelection: (" + this.complexity() + ")>"
                  },
                  shouldCache: function() {
                    return !1
                  },
                  isOnACache: function() {
                    return !1
                  },
                  _renderControls: function(e, t, n) {
                    e.save(), e.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1, this.callSuper("_renderControls", e, t), void 0 === (n = n || {}).hasControls && (n.hasControls = !1), n.forActiveSelection = !0;
                    for (var r = 0, i = this._objects.length; r < i; r++) this._objects[r]._renderControls(e, n);
                    e.restore()
                  }
                }), t.ActiveSelection.fromObject = function(e, n) {
                  t.util.enlivenObjects(e.objects, (function(r) {
                    delete e.objects, n && n(new t.ActiveSelection(r, e, !0))
                  }))
                })
              }(e),
              function(e) {
                var t = v.util.object.extend;
                e.fabric || (e.fabric = {}), e.fabric.Image ? v.warn("fabric.Image is already defined.") : (v.Image = v.util.createClass(v.Object, {
                  type: "image",
                  strokeWidth: 0,
                  srcFromAttribute: !1,
                  _lastScaleX: 1,
                  _lastScaleY: 1,
                  _filterScalingX: 1,
                  _filterScalingY: 1,
                  minimumScaleTrigger: .5,
                  stateProperties: v.Object.prototype.stateProperties.concat("cropX", "cropY"),
                  cacheProperties: v.Object.prototype.cacheProperties.concat("cropX", "cropY"),
                  cacheKey: "",
                  cropX: 0,
                  cropY: 0,
                  imageSmoothing: !0,
                  initialize: function(e, t) {
                    t || (t = {}), this.filters = [], this.cacheKey = "texture" + v.Object.__uid++, this.callSuper("initialize", t), this._initElement(e, t)
                  },
                  getElement: function() {
                    return this._element || {}
                  },
                  setElement: function(e, t) {
                    return this.removeTexture(this.cacheKey), this.removeTexture(this.cacheKey + "_filtered"), this._element = e, this._originalElement = e, this._initConfig(t), 0 !== this.filters.length && this.applyFilters(), this
                      .resizeFilter && this.applyResizeFilters(), this
                  },
                  removeTexture: function(e) {
                    var t = v.filterBackend;
                    t && t.evictCachesForKey && t.evictCachesForKey(e)
                  },
                  dispose: function() {
                    this.callSuper("dispose"), this.removeTexture(this.cacheKey), this.removeTexture(this.cacheKey + "_filtered"), this._cacheContext = void 0, ["_originalElement", "_element", "_filteredEl", "_cacheCanvas"].forEach(
                      function(e) {
                        v.util.cleanUpJsdomNode(this[e]), this[e] = void 0
                      }.bind(this))
                  },
                  getCrossOrigin: function() {
                    return this._originalElement && (this._originalElement.crossOrigin || null)
                  },
                  getOriginalSize: function() {
                    var e = this.getElement();
                    return {
                      width: e.naturalWidth || e.width,
                      height: e.naturalHeight || e.height
                    }
                  },
                  _stroke: function(e) {
                    if (this.stroke && 0 !== this.strokeWidth) {
                      var t = this.width / 2,
                        n = this.height / 2;
                      e.beginPath(), e.moveTo(-t, -n), e.lineTo(t, -n), e.lineTo(t, n), e.lineTo(-t, n), e.lineTo(-t, -n), e.closePath()
                    }
                  },
                  toObject: function(e) {
                    var n = [];
                    this.filters.forEach((function(e) {
                      e && n.push(e.toObject())
                    }));
                    var r = t(this.callSuper("toObject", ["cropX", "cropY"].concat(e)), {
                      src: this.getSrc(),
                      crossOrigin: this.getCrossOrigin(),
                      filters: n
                    });
                    return this.resizeFilter && (r.resizeFilter = this.resizeFilter.toObject()), r
                  },
                  hasCrop: function() {
                    return this.cropX || this.cropY || this.width < this._element.width || this.height < this._element.height
                  },
                  _toSVG: function() {
                    var e, t = [],
                      n = [],
                      r = this._element,
                      i = -this.width / 2,
                      o = -this.height / 2,
                      a = "",
                      s = "";
                    if (!r) return [];
                    if (this.hasCrop()) {
                      var l = v.Object.__uid++;
                      t.push('<clipPath id="imageCrop_' + l + '">\n', '\t<rect x="' + i + '" y="' + o + '" width="' + this.width + '" height="' + this.height + '" />\n', "</clipPath>\n"), a = ' clip-path="url(#imageCrop_' + l + ')" '
                    }
                    if (this.imageSmoothing || (s = '" image-rendering="optimizeSpeed'), n.push("\t<image ", "COMMON_PARTS", 'xlink:href="', this.getSvgSrc(!0), '" x="', i - this.cropX, '" y="', o - this.cropY, '" width="', r.width || r
                        .naturalWidth, '" height="', r.height || r.height, s, '"', a, "></image>\n"), this.stroke || this.strokeDashArray) {
                      var c = this.fill;
                      this.fill = null, e = ["\t<rect ", 'x="', i, '" y="', o, '" width="', this.width, '" height="', this.height, '" style="', this.getSvgStyles(), '"/>\n'], this.fill = c
                    }
                    return t = "fill" !== this.paintFirst ? t.concat(e, n) : t.concat(n, e)
                  },
                  getSrc: function(e) {
                    var t = e ? this._element : this._originalElement;
                    return t ? t.toDataURL ? t.toDataURL() : this.srcFromAttribute ? t.getAttribute("src") : t.src : this.src || ""
                  },
                  setSrc: function(e, t, n) {
                    return v.util.loadImage(e, (function(e, r) {
                      this.setElement(e, n), this._setWidthHeight(), t && t(this, r)
                    }), this, n && n.crossOrigin), this
                  },
                  toString: function() {
                    return '#<fabric.Image: { src: "' + this.getSrc() + '" }>'
                  },
                  applyResizeFilters: function() {
                    var e = this.resizeFilter,
                      t = this.minimumScaleTrigger,
                      n = this.getTotalObjectScaling(),
                      r = n.scaleX,
                      i = n.scaleY,
                      o = this._filteredEl || this._originalElement;
                    if (this.group && this.set("dirty", !0), !e || r > t && i > t) return this._element = o, this._filterScalingX = 1, this._filterScalingY = 1, this._lastScaleX = r, void(this._lastScaleY = i);
                    v.filterBackend || (v.filterBackend = v.initFilterBackend());
                    var a = v.util.createCanvasElement(),
                      s = this._filteredEl ? this.cacheKey + "_filtered" : this.cacheKey,
                      l = o.width,
                      c = o.height;
                    a.width = l, a.height = c, this._element = a, this._lastScaleX = e.scaleX = r, this._lastScaleY = e.scaleY = i, v.filterBackend.applyFilters([e], o, l, c, this._element, s), this._filterScalingX = a.width / this
                      ._originalElement.width, this._filterScalingY = a.height / this._originalElement.height
                  },
                  applyFilters: function(e) {
                    if (e = (e = e || this.filters || []).filter((function(e) {
                        return e && !e.isNeutralState()
                      })), this.set("dirty", !0), this.removeTexture(this.cacheKey + "_filtered"), 0 === e.length) return this._element = this._originalElement, this._filteredEl = null, this._filterScalingX = 1, this._filterScalingY = 1,
                      this;
                    var t = this._originalElement,
                      n = t.naturalWidth || t.width,
                      r = t.naturalHeight || t.height;
                    if (this._element === this._originalElement) {
                      var i = v.util.createCanvasElement();
                      i.width = n, i.height = r, this._element = i, this._filteredEl = i
                    } else this._element = this._filteredEl, this._filteredEl.getContext("2d").clearRect(0, 0, n, r), this._lastScaleX = 1, this._lastScaleY = 1;
                    return v.filterBackend || (v.filterBackend = v.initFilterBackend()), v.filterBackend.applyFilters(e, this._originalElement, n, r, this._element, this.cacheKey), this._originalElement.width === this._element.width &&
                      this._originalElement.height === this._element.height || (this._filterScalingX = this._element.width / this._originalElement.width, this._filterScalingY = this._element.height / this._originalElement.height), this
                  },
                  _render: function(e) {
                    v.util.setImageSmoothing(e, this.imageSmoothing), !0 !== this.isMoving && this.resizeFilter && this._needsResize() && this.applyResizeFilters(), this._stroke(e), this._renderPaintInOrder(e)
                  },
                  drawCacheOnCanvas: function(e) {
                    v.util.setImageSmoothing(e, this.imageSmoothing), v.Object.prototype.drawCacheOnCanvas.call(this, e)
                  },
                  shouldCache: function() {
                    return this.needsItsOwnCache()
                  },
                  _renderFill: function(e) {
                    var t = this._element;
                    if (t) {
                      var n = this._filterScalingX,
                        r = this._filterScalingY,
                        i = this.width,
                        o = this.height,
                        a = Math.min,
                        s = Math.max,
                        l = s(this.cropX, 0),
                        c = s(this.cropY, 0),
                        u = t.naturalWidth || t.width,
                        h = t.naturalHeight || t.height,
                        p = l * n,
                        d = c * r,
                        f = a(i * n, u - p),
                        g = a(o * r, h - d),
                        m = -i / 2,
                        v = -o / 2,
                        _ = a(i, u / n - l),
                        b = a(o, h / r - c);
                      t && e.drawImage(t, p, d, f, g, m, v, _, b)
                    }
                  },
                  _needsResize: function() {
                    var e = this.getTotalObjectScaling();
                    return e.scaleX !== this._lastScaleX || e.scaleY !== this._lastScaleY
                  },
                  _resetWidthHeight: function() {
                    this.set(this.getOriginalSize())
                  },
                  _initElement: function(e, t) {
                    this.setElement(v.util.getById(e), t), v.util.addClass(this.getElement(), v.Image.CSS_CANVAS)
                  },
                  _initConfig: function(e) {
                    e || (e = {}), this.setOptions(e), this._setWidthHeight(e)
                  },
                  _initFilters: function(e, t) {
                    e && e.length ? v.util.enlivenObjects(e, (function(e) {
                      t && t(e)
                    }), "fabric.Image.filters") : t && t()
                  },
                  _setWidthHeight: function(e) {
                    e || (e = {});
                    var t = this.getElement();
                    this.width = e.width || t.naturalWidth || t.width || 0, this.height = e.height || t.naturalHeight || t.height || 0
                  },
                  parsePreserveAspectRatioAttribute: function() {
                    var e, t = v.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio || ""),
                      n = this._element.width,
                      r = this._element.height,
                      i = 1,
                      o = 1,
                      a = 0,
                      s = 0,
                      l = 0,
                      c = 0,
                      u = this.width,
                      h = this.height,
                      p = {
                        width: u,
                        height: h
                      };
                    return !t || "none" === t.alignX && "none" === t.alignY ? (i = u / n, o = h / r) : ("meet" === t.meetOrSlice && (e = (u - n * (i = o = v.util.findScaleToFit(this._element, p))) / 2, "Min" === t.alignX && (a = -e),
                      "Max" === t.alignX && (a = e), e = (h - r * o) / 2, "Min" === t.alignY && (s = -e), "Max" === t.alignY && (s = e)), "slice" === t.meetOrSlice && (e = n - u / (i = o = v.util.findScaleToCover(this._element, p)),
                      "Mid" === t.alignX && (l = e / 2), "Max" === t.alignX && (l = e), e = r - h / o, "Mid" === t.alignY && (c = e / 2), "Max" === t.alignY && (c = e), n = u / i, r = h / o)), {
                      width: n,
                      height: r,
                      scaleX: i,
                      scaleY: o,
                      offsetLeft: a,
                      offsetTop: s,
                      cropX: l,
                      cropY: c
                    }
                  }
                }), v.Image.CSS_CANVAS = "canvas-img", v.Image.prototype.getSvgSrc = v.Image.prototype.getSrc, v.Image.fromObject = function(e, t) {
                  var n = v.util.object.clone(e);
                  v.util.loadImage(n.src, (function(e, r) {
                    r ? t && t(null, !0) : v.Image.prototype._initFilters.call(n, n.filters, (function(r) {
                      n.filters = r || [], v.Image.prototype._initFilters.call(n, [n.resizeFilter], (function(r) {
                        n.resizeFilter = r[0], v.util.enlivenObjectEnlivables(n, n, (function() {
                          var r = new v.Image(e, n);
                          t(r, !1)
                        }))
                      }))
                    }))
                  }), null, n.crossOrigin)
                }, v.Image.fromURL = function(e, t, n) {
                  v.util.loadImage(e, (function(e, r) {
                    t && t(new v.Image(e, n), r)
                  }), null, n && n.crossOrigin)
                }, v.Image.ATTRIBUTE_NAMES = v.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")), v.Image.fromElement = function(e, n, r) {
                  var i = v.parseAttributes(e, v.Image.ATTRIBUTE_NAMES);
                  v.Image.fromURL(i["xlink:href"], n, t(r ? v.util.object.clone(r) : {}, i))
                })
              }(e), v.util.object.extend(v.Object.prototype, {
                _getAngleValueForStraighten: function() {
                  var e = this.angle % 360;
                  return e > 0 ? 90 * Math.round((e - 1) / 90) : 90 * Math.round(e / 90)
                },
                straighten: function() {
                  return this.rotate(this._getAngleValueForStraighten())
                },
                fxStraighten: function(e) {
                  var t = function() {},
                    n = (e = e || {}).onComplete || t,
                    r = e.onChange || t,
                    i = this;
                  return v.util.animate({
                    target: this,
                    startValue: this.get("angle"),
                    endValue: this._getAngleValueForStraighten(),
                    duration: this.FX_DURATION,
                    onChange: function(e) {
                      i.rotate(e), r()
                    },
                    onComplete: function() {
                      i.setCoords(), n()
                    }
                  })
                }
              }), v.util.object.extend(v.StaticCanvas.prototype, {
                straightenObject: function(e) {
                  return e.straighten(), this.requestRenderAll(), this
                },
                fxStraightenObject: function(e) {
                  return e.fxStraighten({
                    onChange: this.requestRenderAllBound
                  })
                }
              }),
              function() {
                function e(e, t) {
                  var n = "precision " + t + " float;\nvoid main(){}",
                    r = e.createShader(e.FRAGMENT_SHADER);
                  return e.shaderSource(r, n), e.compileShader(r), !!e.getShaderParameter(r, e.COMPILE_STATUS)
                }

                function t(e) {
                  e && e.tileSize && (this.tileSize = e.tileSize), this.setupGLContext(this.tileSize, this.tileSize), this.captureGPUInfo()
                }
                v.isWebglSupported = function(t) {
                  if (v.isLikelyNode) return !1;
                  t = t || v.WebglFilterBackend.prototype.tileSize;
                  var n = document.createElement("canvas"),
                    r = n.getContext("webgl") || n.getContext("experimental-webgl"),
                    i = !1;
                  if (r) {
                    v.maxTextureSize = r.getParameter(r.MAX_TEXTURE_SIZE), i = v.maxTextureSize >= t;
                    for (var o = ["highp", "mediump", "lowp"], a = 0; a < 3; a++)
                      if (e(r, o[a])) {
                        v.webGlPrecision = o[a];
                        break
                      }
                  }
                  return this.isSupported = i, i
                }, v.WebglFilterBackend = t, t.prototype = {
                  tileSize: 2048,
                  resources: {},
                  setupGLContext: function(e, t) {
                    this.dispose(), this.createWebGLCanvas(e, t), this.aPosition = new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]), this.chooseFastestCopyGLTo2DMethod(e, t)
                  },
                  chooseFastestCopyGLTo2DMethod: function(e, t) {
                    var n, r = void 0 !== window.performance;
                    try {
                      new ImageData(1, 1), n = !0
                    } catch (e) {
                      n = !1
                    }
                    var i = "undefined" != typeof ArrayBuffer,
                      o = "undefined" != typeof Uint8ClampedArray;
                    if (r && n && i && o) {
                      var a = v.util.createCanvasElement(),
                        s = new ArrayBuffer(e * t * 4);
                      if (v.forceGLPutImageData) return this.imageBuffer = s, void(this.copyGLTo2D = y);
                      var l, c, u = {
                        imageBuffer: s,
                        destinationWidth: e,
                        destinationHeight: t,
                        targetCanvas: a
                      };
                      a.width = e, a.height = t, l = window.performance.now(), b.call(u, this.gl, u), c = window.performance.now() - l, l = window.performance.now(), y.call(u, this.gl, u), c > window.performance.now() - l ? (this
                        .imageBuffer = s, this.copyGLTo2D = y) : this.copyGLTo2D = b
                    }
                  },
                  createWebGLCanvas: function(e, t) {
                    var n = v.util.createCanvasElement();
                    n.width = e, n.height = t;
                    var r = {
                        alpha: !0,
                        premultipliedAlpha: !1,
                        depth: !1,
                        stencil: !1,
                        antialias: !1
                      },
                      i = n.getContext("webgl", r);
                    i || (i = n.getContext("experimental-webgl", r)), i && (i.clearColor(0, 0, 0, 0), this.canvas = n, this.gl = i)
                  },
                  applyFilters: function(e, t, n, r, i, o) {
                    var a, s = this.gl;
                    o && (a = this.getCachedTexture(o, t));
                    var l = {
                        originalWidth: t.width || t.originalWidth,
                        originalHeight: t.height || t.originalHeight,
                        sourceWidth: n,
                        sourceHeight: r,
                        destinationWidth: n,
                        destinationHeight: r,
                        context: s,
                        sourceTexture: this.createTexture(s, n, r, !a && t),
                        targetTexture: this.createTexture(s, n, r),
                        originalTexture: a || this.createTexture(s, n, r, !a && t),
                        passes: e.length,
                        webgl: !0,
                        aPosition: this.aPosition,
                        programCache: this.programCache,
                        pass: 0,
                        filterBackend: this,
                        targetCanvas: i
                      },
                      c = s.createFramebuffer();
                    return s.bindFramebuffer(s.FRAMEBUFFER, c), e.forEach((function(e) {
                        e && e.applyTo(l)
                      })),
                      function(e) {
                        var t = e.targetCanvas,
                          n = t.width,
                          r = t.height,
                          i = e.destinationWidth,
                          o = e.destinationHeight;
                        n === i && r === o || (t.width = i, t.height = o)
                      }(l), this.copyGLTo2D(s, l), s.bindTexture(s.TEXTURE_2D, null), s.deleteTexture(l.sourceTexture), s.deleteTexture(l.targetTexture), s.deleteFramebuffer(c), i.getContext("2d").setTransform(1, 0, 0, 1, 0, 0), l
                  },
                  dispose: function() {
                    this.canvas && (this.canvas = null, this.gl = null), this.clearWebGLCaches()
                  },
                  clearWebGLCaches: function() {
                    this.programCache = {}, this.textureCache = {}
                  },
                  createTexture: function(e, t, n, r, i) {
                    var o = e.createTexture();
                    return e.bindTexture(e.TEXTURE_2D, o), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MAG_FILTER, i || e.NEAREST), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, i || e.NEAREST), e.texParameteri(e.TEXTURE_2D, e
                      .TEXTURE_WRAP_S, e.CLAMP_TO_EDGE), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE), r ? e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, e.RGBA, e.UNSIGNED_BYTE, r) : e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, t, n,
                      0, e.RGBA, e.UNSIGNED_BYTE, null), o
                  },
                  getCachedTexture: function(e, t) {
                    if (this.textureCache[e]) return this.textureCache[e];
                    var n = this.createTexture(this.gl, t.width, t.height, t);
                    return this.textureCache[e] = n, n
                  },
                  evictCachesForKey: function(e) {
                    this.textureCache[e] && (this.gl.deleteTexture(this.textureCache[e]), delete this.textureCache[e])
                  },
                  copyGLTo2D: b,
                  captureGPUInfo: function() {
                    if (this.gpuInfo) return this.gpuInfo;
                    var e = this.gl,
                      t = {
                        renderer: "",
                        vendor: ""
                      };
                    if (!e) return t;
                    var n = e.getExtension("WEBGL_debug_renderer_info");
                    if (n) {
                      var r = e.getParameter(n.UNMASKED_RENDERER_WEBGL),
                        i = e.getParameter(n.UNMASKED_VENDOR_WEBGL);
                      r && (t.renderer = r.toLowerCase()), i && (t.vendor = i.toLowerCase())
                    }
                    return this.gpuInfo = t, t
                  }
                }
              }(),
              function() {
                var e = function() {};

                function t() {}
                v.Canvas2dFilterBackend = t, t.prototype = {
                  evictCachesForKey: e,
                  dispose: e,
                  clearWebGLCaches: e,
                  resources: {},
                  applyFilters: function(e, t, n, r, i) {
                    var o = i.getContext("2d");
                    o.drawImage(t, 0, 0, n, r);
                    var a = {
                      sourceWidth: n,
                      sourceHeight: r,
                      imageData: o.getImageData(0, 0, n, r),
                      originalEl: t,
                      originalImageData: o.getImageData(0, 0, n, r),
                      canvasEl: i,
                      ctx: o,
                      filterBackend: this
                    };
                    return e.forEach((function(e) {
                      e.applyTo(a)
                    })), a.imageData.width === n && a.imageData.height === r || (i.width = a.imageData.width, i.height = a.imageData.height), o.putImageData(a.imageData, 0, 0), a
                  }
                }
              }(), v.Image = v.Image || {}, v.Image.filters = v.Image.filters || {}, v.Image.filters.BaseFilter = v.util.createClass({
                type: "BaseFilter",
                vertexSource: "attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",
                fragmentSource: "precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",
                initialize: function(e) {
                  e && this.setOptions(e)
                },
                setOptions: function(e) {
                  for (var t in e) this[t] = e[t]
                },
                createProgram: function(e, t, n) {
                  t = t || this.fragmentSource, n = n || this.vertexSource, "highp" !== v.webGlPrecision && (t = t.replace(/precision highp float/g, "precision " + v.webGlPrecision + " float"));
                  var r = e.createShader(e.VERTEX_SHADER);
                  if (e.shaderSource(r, n), e.compileShader(r), !e.getShaderParameter(r, e.COMPILE_STATUS)) throw new Error("Vertex shader compile error for " + this.type + ": " + e.getShaderInfoLog(r));
                  var i = e.createShader(e.FRAGMENT_SHADER);
                  if (e.shaderSource(i, t), e.compileShader(i), !e.getShaderParameter(i, e.COMPILE_STATUS)) throw new Error("Fragment shader compile error for " + this.type + ": " + e.getShaderInfoLog(i));
                  var o = e.createProgram();
                  if (e.attachShader(o, r), e.attachShader(o, i), e.linkProgram(o), !e.getProgramParameter(o, e.LINK_STATUS)) throw new Error('Shader link error for "${this.type}" ' + e.getProgramInfoLog(o));
                  var a = this.getAttributeLocations(e, o),
                    s = this.getUniformLocations(e, o) || {};
                  return s.uStepW = e.getUniformLocation(o, "uStepW"), s.uStepH = e.getUniformLocation(o, "uStepH"), {
                    program: o,
                    attributeLocations: a,
                    uniformLocations: s
                  }
                },
                getAttributeLocations: function(e, t) {
                  return {
                    aPosition: e.getAttribLocation(t, "aPosition")
                  }
                },
                getUniformLocations: function() {
                  return {}
                },
                sendAttributeData: function(e, t, n) {
                  var r = t.aPosition,
                    i = e.createBuffer();
                  e.bindBuffer(e.ARRAY_BUFFER, i), e.enableVertexAttribArray(r), e.vertexAttribPointer(r, 2, e.FLOAT, !1, 0, 0), e.bufferData(e.ARRAY_BUFFER, n, e.STATIC_DRAW)
                },
                _setupFrameBuffer: function(e) {
                  var t, n, r = e.context;
                  e.passes > 1 ? (t = e.destinationWidth, n = e.destinationHeight, e.sourceWidth === t && e.sourceHeight === n || (r.deleteTexture(e.targetTexture), e.targetTexture = e.filterBackend.createTexture(r, t, n)), r
                    .framebufferTexture2D(r.FRAMEBUFFER, r.COLOR_ATTACHMENT0, r.TEXTURE_2D, e.targetTexture, 0)) : (r.bindFramebuffer(r.FRAMEBUFFER, null), r.finish())
                },
                _swapTextures: function(e) {
                  e.passes--, e.pass++;
                  var t = e.targetTexture;
                  e.targetTexture = e.sourceTexture, e.sourceTexture = t
                },
                isNeutralState: function() {
                  var e = this.mainParameter,
                    t = v.Image.filters[this.type].prototype;
                  if (e) {
                    if (Array.isArray(t[e])) {
                      for (var n = t[e].length; n--;)
                        if (this[e][n] !== t[e][n]) return !1;
                      return !0
                    }
                    return t[e] === this[e]
                  }
                  return !1
                },
                applyTo: function(e) {
                  e.webgl ? (this._setupFrameBuffer(e), this.applyToWebGL(e), this._swapTextures(e)) : this.applyTo2d(e)
                },
                retrieveShader: function(e) {
                  return e.programCache.hasOwnProperty(this.type) || (e.programCache[this.type] = this.createProgram(e.context)), e.programCache[this.type]
                },
                applyToWebGL: function(e) {
                  var t = e.context,
                    n = this.retrieveShader(e);
                  0 === e.pass && e.originalTexture ? t.bindTexture(t.TEXTURE_2D, e.originalTexture) : t.bindTexture(t.TEXTURE_2D, e.sourceTexture), t.useProgram(n.program), this.sendAttributeData(t, n.attributeLocations, e.aPosition), t
                    .uniform1f(n.uniformLocations.uStepW, 1 / e.sourceWidth), t.uniform1f(n.uniformLocations.uStepH, 1 / e.sourceHeight), this.sendUniformData(t, n.uniformLocations), t.viewport(0, 0, e.destinationWidth, e.destinationHeight),
                    t.drawArrays(t.TRIANGLE_STRIP, 0, 4)
                },
                bindAdditionalTexture: function(e, t, n) {
                  e.activeTexture(n), e.bindTexture(e.TEXTURE_2D, t), e.activeTexture(e.TEXTURE0)
                },
                unbindAdditionalTexture: function(e, t) {
                  e.activeTexture(t), e.bindTexture(e.TEXTURE_2D, null), e.activeTexture(e.TEXTURE0)
                },
                getMainParameter: function() {
                  return this[this.mainParameter]
                },
                setMainParameter: function(e) {
                  this[this.mainParameter] = e
                },
                sendUniformData: function() {},
                createHelpLayer: function(e) {
                  if (!e.helpLayer) {
                    var t = document.createElement("canvas");
                    t.width = e.sourceWidth, t.height = e.sourceHeight, e.helpLayer = t
                  }
                },
                toObject: function() {
                  var e = {
                      type: this.type
                    },
                    t = this.mainParameter;
                  return t && (e[t] = this[t]), e
                },
                toJSON: function() {
                  return this.toObject()
                }
              }), v.Image.filters.BaseFilter.fromObject = function(e, t) {
                var n = new v.Image.filters[e.type](e);
                return t && t(n), n
              },
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.Image.filters,
                  r = t.util.createClass;
                n.ColorMatrix = r(n.BaseFilter, {
                  type: "ColorMatrix",
                  fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",
                  matrix: [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0],
                  mainParameter: "matrix",
                  colorsOnly: !0,
                  initialize: function(e) {
                    this.callSuper("initialize", e), this.matrix = this.matrix.slice(0)
                  },
                  applyTo2d: function(e) {
                    var t, n, r, i, o, a = e.imageData.data,
                      s = a.length,
                      l = this.matrix,
                      c = this.colorsOnly;
                    for (o = 0; o < s; o += 4) t = a[o], n = a[o + 1], r = a[o + 2], c ? (a[o] = t * l[0] + n * l[1] + r * l[2] + 255 * l[4], a[o + 1] = t * l[5] + n * l[6] + r * l[7] + 255 * l[9], a[o + 2] = t * l[10] + n * l[11] + r * l[
                      12] + 255 * l[14]) : (i = a[o + 3], a[o] = t * l[0] + n * l[1] + r * l[2] + i * l[3] + 255 * l[4], a[o + 1] = t * l[5] + n * l[6] + r * l[7] + i * l[8] + 255 * l[9], a[o + 2] = t * l[10] + n * l[11] + r * l[12] + i *
                      l[13] + 255 * l[14], a[o + 3] = t * l[15] + n * l[16] + r * l[17] + i * l[18] + 255 * l[19])
                  },
                  getUniformLocations: function(e, t) {
                    return {
                      uColorMatrix: e.getUniformLocation(t, "uColorMatrix"),
                      uConstants: e.getUniformLocation(t, "uConstants")
                    }
                  },
                  sendUniformData: function(e, t) {
                    var n = this.matrix,
                      r = [n[0], n[1], n[2], n[3], n[5], n[6], n[7], n[8], n[10], n[11], n[12], n[13], n[15], n[16], n[17], n[18]],
                      i = [n[4], n[9], n[14], n[19]];
                    e.uniformMatrix4fv(t.uColorMatrix, !1, r), e.uniform4fv(t.uConstants, i)
                  }
                }), t.Image.filters.ColorMatrix.fromObject = t.Image.filters.BaseFilter.fromObject
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.Image.filters,
                  r = t.util.createClass;
                n.Brightness = r(n.BaseFilter, {
                  type: "Brightness",
                  fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uBrightness;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor.rgb += uBrightness;\ngl_FragColor = color;\n}",
                  brightness: 0,
                  mainParameter: "brightness",
                  applyTo2d: function(e) {
                    if (0 !== this.brightness) {
                      var t, n = e.imageData.data,
                        r = n.length,
                        i = Math.round(255 * this.brightness);
                      for (t = 0; t < r; t += 4) n[t] = n[t] + i, n[t + 1] = n[t + 1] + i, n[t + 2] = n[t + 2] + i
                    }
                  },
                  getUniformLocations: function(e, t) {
                    return {
                      uBrightness: e.getUniformLocation(t, "uBrightness")
                    }
                  },
                  sendUniformData: function(e, t) {
                    e.uniform1f(t.uBrightness, this.brightness)
                  }
                }), t.Image.filters.Brightness.fromObject = t.Image.filters.BaseFilter.fromObject
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.util.object.extend,
                  r = t.Image.filters,
                  i = t.util.createClass;
                r.Convolute = i(r.BaseFilter, {
                  type: "Convolute",
                  opaque: !1,
                  matrix: [0, 0, 0, 0, 1, 0, 0, 0, 0],
                  fragmentSource: {
                    Convolute_3_1: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[9];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 3.0; h+=1.0) {\nfor (float w = 0.0; w < 3.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 1), uStepH * (h - 1));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 3.0 + w)];\n}\n}\ngl_FragColor = color;\n}",
                    Convolute_3_0: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[9];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 3.0; h+=1.0) {\nfor (float w = 0.0; w < 3.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 1.0), uStepH * (h - 1.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 3.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}",
                    Convolute_5_1: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[25];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 5.0; h+=1.0) {\nfor (float w = 0.0; w < 5.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 5.0 + w)];\n}\n}\ngl_FragColor = color;\n}",
                    Convolute_5_0: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[25];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 5.0; h+=1.0) {\nfor (float w = 0.0; w < 5.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 5.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}",
                    Convolute_7_1: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[49];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 7.0; h+=1.0) {\nfor (float w = 0.0; w < 7.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 7.0 + w)];\n}\n}\ngl_FragColor = color;\n}",
                    Convolute_7_0: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[49];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 7.0; h+=1.0) {\nfor (float w = 0.0; w < 7.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 7.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}",
                    Convolute_9_1: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[81];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 0);\nfor (float h = 0.0; h < 9.0; h+=1.0) {\nfor (float w = 0.0; w < 9.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\ncolor += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 9.0 + w)];\n}\n}\ngl_FragColor = color;\n}",
                    Convolute_9_0: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uMatrix[81];\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = vec4(0, 0, 0, 1);\nfor (float h = 0.0; h < 9.0; h+=1.0) {\nfor (float w = 0.0; w < 9.0; w+=1.0) {\nvec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\ncolor.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 9.0 + w)];\n}\n}\nfloat alpha = texture2D(uTexture, vTexCoord).a;\ngl_FragColor = color;\ngl_FragColor.a = alpha;\n}"
                  },
                  retrieveShader: function(e) {
                    var t = Math.sqrt(this.matrix.length),
                      n = this.type + "_" + t + "_" + (this.opaque ? 1 : 0),
                      r = this.fragmentSource[n];
                    return e.programCache.hasOwnProperty(n) || (e.programCache[n] = this.createProgram(e.context, r)), e.programCache[n]
                  },
                  applyTo2d: function(e) {
                    var t, n, r, i, o, a, s, l, c, u, h, p, d, f = e.imageData,
                      g = f.data,
                      m = this.matrix,
                      v = Math.round(Math.sqrt(m.length)),
                      _ = Math.floor(v / 2),
                      b = f.width,
                      y = f.height,
                      w = e.ctx.createImageData(b, y),
                      x = w.data,
                      k = this.opaque ? 1 : 0;
                    for (h = 0; h < y; h++)
                      for (u = 0; u < b; u++) {
                        for (o = 4 * (h * b + u), t = 0, n = 0, r = 0, i = 0, d = 0; d < v; d++)
                          for (p = 0; p < v; p++) a = u + p - _, (s = h + d - _) < 0 || s >= y || a < 0 || a >= b || (l = 4 * (s * b + a), c = m[d * v + p], t += g[l] * c, n += g[l + 1] * c, r += g[l + 2] * c, k || (i += g[l + 3] * c));
                        x[o] = t, x[o + 1] = n, x[o + 2] = r, x[o + 3] = k ? g[o + 3] : i
                      }
                    e.imageData = w
                  },
                  getUniformLocations: function(e, t) {
                    return {
                      uMatrix: e.getUniformLocation(t, "uMatrix"),
                      uOpaque: e.getUniformLocation(t, "uOpaque"),
                      uHalfSize: e.getUniformLocation(t, "uHalfSize"),
                      uSize: e.getUniformLocation(t, "uSize")
                    }
                  },
                  sendUniformData: function(e, t) {
                    e.uniform1fv(t.uMatrix, this.matrix)
                  },
                  toObject: function() {
                    return n(this.callSuper("toObject"), {
                      opaque: this.opaque,
                      matrix: this.matrix
                    })
                  }
                }), t.Image.filters.Convolute.fromObject = t.Image.filters.BaseFilter.fromObject
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.Image.filters,
                  r = t.util.createClass;
                n.Grayscale = r(n.BaseFilter, {
                  type: "Grayscale",
                  fragmentSource: {
                    average: "precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",
                    lightness: "precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",
                    luminosity: "precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"
                  },
                  mode: "average",
                  mainParameter: "mode",
                  applyTo2d: function(e) {
                    var t, n, r = e.imageData.data,
                      i = r.length,
                      o = this.mode;
                    for (t = 0; t < i; t += 4) "average" === o ? n = (r[t] + r[t + 1] + r[t + 2]) / 3 : "lightness" === o ? n = (Math.min(r[t], r[t + 1], r[t + 2]) + Math.max(r[t], r[t + 1], r[t + 2])) / 2 : "luminosity" === o && (n = .21 *
                      r[t] + .72 * r[t + 1] + .07 * r[t + 2]), r[t] = n, r[t + 1] = n, r[t + 2] = n
                  },
                  retrieveShader: function(e) {
                    var t = this.type + "_" + this.mode;
                    if (!e.programCache.hasOwnProperty(t)) {
                      var n = this.fragmentSource[this.mode];
                      e.programCache[t] = this.createProgram(e.context, n)
                    }
                    return e.programCache[t]
                  },
                  getUniformLocations: function(e, t) {
                    return {
                      uMode: e.getUniformLocation(t, "uMode")
                    }
                  },
                  sendUniformData: function(e, t) {
                    e.uniform1i(t.uMode, 1)
                  },
                  isNeutralState: function() {
                    return !1
                  }
                }), t.Image.filters.Grayscale.fromObject = t.Image.filters.BaseFilter.fromObject
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.Image.filters,
                  r = t.util.createClass;
                n.Invert = r(n.BaseFilter, {
                  type: "Invert",
                  fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform int uInvert;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nif (uInvert == 1) {\ngl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,color.a);\n} else {\ngl_FragColor = color;\n}\n}",
                  invert: !0,
                  mainParameter: "invert",
                  applyTo2d: function(e) {
                    var t, n = e.imageData.data,
                      r = n.length;
                    for (t = 0; t < r; t += 4) n[t] = 255 - n[t], n[t + 1] = 255 - n[t + 1], n[t + 2] = 255 - n[t + 2]
                  },
                  isNeutralState: function() {
                    return !this.invert
                  },
                  getUniformLocations: function(e, t) {
                    return {
                      uInvert: e.getUniformLocation(t, "uInvert")
                    }
                  },
                  sendUniformData: function(e, t) {
                    e.uniform1i(t.uInvert, this.invert)
                  }
                }), t.Image.filters.Invert.fromObject = t.Image.filters.BaseFilter.fromObject
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.util.object.extend,
                  r = t.Image.filters,
                  i = t.util.createClass;
                r.Noise = i(r.BaseFilter, {
                  type: "Noise",
                  fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uStepH;\nuniform float uNoise;\nuniform float uSeed;\nvarying vec2 vTexCoord;\nfloat rand(vec2 co, float seed, float vScale) {\nreturn fract(sin(dot(co.xy * vScale ,vec2(12.9898 , 78.233))) * 43758.5453 * (seed + 0.01) / 2.0);\n}\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor.rgb += (0.5 - rand(vTexCoord, uSeed, 0.1 / uStepH)) * uNoise;\ngl_FragColor = color;\n}",
                  mainParameter: "noise",
                  noise: 0,
                  applyTo2d: function(e) {
                    if (0 !== this.noise) {
                      var t, n, r = e.imageData.data,
                        i = r.length,
                        o = this.noise;
                      for (t = 0, i = r.length; t < i; t += 4) n = (.5 - Math.random()) * o, r[t] += n, r[t + 1] += n, r[t + 2] += n
                    }
                  },
                  getUniformLocations: function(e, t) {
                    return {
                      uNoise: e.getUniformLocation(t, "uNoise"),
                      uSeed: e.getUniformLocation(t, "uSeed")
                    }
                  },
                  sendUniformData: function(e, t) {
                    e.uniform1f(t.uNoise, this.noise / 255), e.uniform1f(t.uSeed, Math.random())
                  },
                  toObject: function() {
                    return n(this.callSuper("toObject"), {
                      noise: this.noise
                    })
                  }
                }), t.Image.filters.Noise.fromObject = t.Image.filters.BaseFilter.fromObject
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.Image.filters,
                  r = t.util.createClass;
                n.Pixelate = r(n.BaseFilter, {
                  type: "Pixelate",
                  blocksize: 4,
                  mainParameter: "blocksize",
                  fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uBlocksize;\nuniform float uStepW;\nuniform float uStepH;\nvarying vec2 vTexCoord;\nvoid main() {\nfloat blockW = uBlocksize * uStepW;\nfloat blockH = uBlocksize * uStepW;\nint posX = int(vTexCoord.x / blockW);\nint posY = int(vTexCoord.y / blockH);\nfloat fposX = float(posX);\nfloat fposY = float(posY);\nvec2 squareCoords = vec2(fposX * blockW, fposY * blockH);\nvec4 color = texture2D(uTexture, squareCoords);\ngl_FragColor = color;\n}",
                  applyTo2d: function(e) {
                    var t, n, r, i, o, a, s, l, c, u, h, p = e.imageData,
                      d = p.data,
                      f = p.height,
                      g = p.width;
                    for (n = 0; n < f; n += this.blocksize)
                      for (r = 0; r < g; r += this.blocksize)
                        for (i = d[t = 4 * n * g + 4 * r], o = d[t + 1], a = d[t + 2], s = d[t + 3], u = Math.min(n + this.blocksize, f), h = Math.min(r + this.blocksize, g), l = n; l < u; l++)
                          for (c = r; c < h; c++) d[t = 4 * l * g + 4 * c] = i, d[t + 1] = o, d[t + 2] = a, d[t + 3] = s
                  },
                  isNeutralState: function() {
                    return 1 === this.blocksize
                  },
                  getUniformLocations: function(e, t) {
                    return {
                      uBlocksize: e.getUniformLocation(t, "uBlocksize"),
                      uStepW: e.getUniformLocation(t, "uStepW"),
                      uStepH: e.getUniformLocation(t, "uStepH")
                    }
                  },
                  sendUniformData: function(e, t) {
                    e.uniform1f(t.uBlocksize, this.blocksize)
                  }
                }), t.Image.filters.Pixelate.fromObject = t.Image.filters.BaseFilter.fromObject
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.util.object.extend,
                  r = t.Image.filters,
                  i = t.util.createClass;
                r.RemoveColor = i(r.BaseFilter, {
                  type: "RemoveColor",
                  color: "#FFFFFF",
                  fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform vec4 uLow;\nuniform vec4 uHigh;\nvarying vec2 vTexCoord;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\nif(all(greaterThan(gl_FragColor.rgb,uLow.rgb)) && all(greaterThan(uHigh.rgb,gl_FragColor.rgb))) {\ngl_FragColor.a = 0.0;\n}\n}",
                  distance: .02,
                  useAlpha: !1,
                  applyTo2d: function(e) {
                    var n, r, i, o, a = e.imageData.data,
                      s = 255 * this.distance,
                      l = new t.Color(this.color).getSource(),
                      c = [l[0] - s, l[1] - s, l[2] - s],
                      u = [l[0] + s, l[1] + s, l[2] + s];
                    for (n = 0; n < a.length; n += 4) r = a[n], i = a[n + 1], o = a[n + 2], r > c[0] && i > c[1] && o > c[2] && r < u[0] && i < u[1] && o < u[2] && (a[n + 3] = 0)
                  },
                  getUniformLocations: function(e, t) {
                    return {
                      uLow: e.getUniformLocation(t, "uLow"),
                      uHigh: e.getUniformLocation(t, "uHigh")
                    }
                  },
                  sendUniformData: function(e, n) {
                    var r = new t.Color(this.color).getSource(),
                      i = parseFloat(this.distance),
                      o = [0 + r[0] / 255 - i, 0 + r[1] / 255 - i, 0 + r[2] / 255 - i, 1],
                      a = [r[0] / 255 + i, r[1] / 255 + i, r[2] / 255 + i, 1];
                    e.uniform4fv(n.uLow, o), e.uniform4fv(n.uHigh, a)
                  },
                  toObject: function() {
                    return n(this.callSuper("toObject"), {
                      color: this.color,
                      distance: this.distance
                    })
                  }
                }), t.Image.filters.RemoveColor.fromObject = t.Image.filters.BaseFilter.fromObject
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.Image.filters,
                  r = t.util.createClass,
                  i = {
                    Brownie: [.5997, .34553, -.27082, 0, .186, -.0377, .86095, .15059, 0, -.1449, .24113, -.07441, .44972, 0, -.02965, 0, 0, 0, 1, 0],
                    Vintage: [.62793, .32021, -.03965, 0, .03784, .02578, .64411, .03259, 0, .02926, .0466, -.08512, .52416, 0, .02023, 0, 0, 0, 1, 0],
                    Kodachrome: [1.12855, -.39673, -.03992, 0, .24991, -.16404, 1.08352, -.05498, 0, .09698, -.16786, -.56034, 1.60148, 0, .13972, 0, 0, 0, 1, 0],
                    Technicolor: [1.91252, -.85453, -.09155, 0, .04624, -.30878, 1.76589, -.10601, 0, -.27589, -.2311, -.75018, 1.84759, 0, .12137, 0, 0, 0, 1, 0],
                    Polaroid: [1.438, -.062, -.062, 0, 0, -.122, 1.378, -.122, 0, 0, -.016, -.016, 1.483, 0, 0, 0, 0, 0, 1, 0],
                    Sepia: [.393, .769, .189, 0, 0, .349, .686, .168, 0, 0, .272, .534, .131, 0, 0, 0, 0, 0, 1, 0],
                    BlackWhite: [1.5, 1.5, 1.5, 0, -1, 1.5, 1.5, 1.5, 0, -1, 1.5, 1.5, 1.5, 0, -1, 0, 0, 0, 1, 0]
                  };
                for (var o in i) n[o] = r(n.ColorMatrix, {
                  type: o,
                  matrix: i[o],
                  mainParameter: !1,
                  colorsOnly: !0
                }), t.Image.filters[o].fromObject = t.Image.filters.BaseFilter.fromObject
              }(e),
              function(e) {
                var t = e.fabric,
                  n = t.Image.filters,
                  r = t.util.createClass;
                n.BlendColor = r(n.BaseFilter, {
                  type: "BlendColor",
                  color: "#F95C63",
                  mode: "multiply",
                  alpha: 1,
                  fragmentSource: {
                    multiply: "gl_FragColor.rgb *= uColor.rgb;\n",
                    screen: "gl_FragColor.rgb = 1.0 - (1.0 - gl_FragColor.rgb) * (1.0 - uColor.rgb);\n",
                    add: "gl_FragColor.rgb += uColor.rgb;\n",
                    diff: "gl_FragColor.rgb = abs(gl_FragColor.rgb - uColor.rgb);\n",
                    subtract: "gl_FragColor.rgb -= uColor.rgb;\n",
                    lighten: "gl_FragColor.rgb = max(gl_FragColor.rgb, uColor.rgb);\n",
                    darken: "gl_FragColor.rgb = min(gl_FragColor.rgb, uColor.rgb);\n",
                    exclusion: "gl_FragColor.rgb += uColor.rgb - 2.0 * (uColor.rgb * gl_FragColor.rgb);\n",
                    overlay: "if (uColor.r < 0.5) {\ngl_FragColor.r *= 2.0 * uColor.r;\n} else {\ngl_FragColor.r = 1.0 - 2.0 * (1.0 - gl_FragColor.r) * (1.0 - uColor.r);\n}\nif (uColor.g < 0.5) {\ngl_FragColor.g *= 2.0 * uColor.g;\n} else {\ngl_FragColor.g = 1.0 - 2.0 * (1.0 - gl_FragColor.g) * (1.0 - uColor.g);\n}\nif (uColor.b < 0.5) {\ngl_FragColor.b *= 2.0 * uColor.b;\n} else {\ngl_FragColor.b = 1.0 - 2.0 * (1.0 - gl_FragColor.b) * (1.0 - uColor.b);\n}\n",
                    tint: "gl_FragColor.rgb *= (1.0 - uColor.a);\ngl_FragColor.rgb += uColor.rgb;\n"
                  },
                  buildSource: function(e) {
                    return "precision highp float;\nuniform sampler2D uTexture;\nuniform vec4 uColor;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ngl_FragColor = color;\nif (color.a > 0.0) {\n" +
                      this.fragmentSource[e] + "}\n}"
                  },
                  retrieveShader: function(e) {
                    var t, n = this.type + "_" + this.mode;
                    return e.programCache.hasOwnProperty(n) || (t = this.buildSource(this.mode), e.programCache[n] = this.createProgram(e.context, t)), e.programCache[n]
                  },
                  applyTo2d: function(e) {
                    var n, r, i, o, a, s, l, c = e.imageData.data,
                      u = c.length,
                      h = 1 - this.alpha;
                    n = (l = new t.Color(this.color).getSource())[0] * this.alpha, r = l[1] * this.alpha, i = l[2] * this.alpha;
                    for (var p = 0; p < u; p += 4) switch (o = c[p], a = c[p + 1], s = c[p + 2], this.mode) {
                      case "multiply":
                        c[p] = o * n / 255, c[p + 1] = a * r / 255, c[p + 2] = s * i / 255;
                        break;
                      case "screen":
                        c[p] = 255 - (255 - o) * (255 - n) / 255, c[p + 1] = 255 - (255 - a) * (255 - r) / 255, c[p + 2] = 255 - (255 - s) * (255 - i) / 255;
                        break;
                      case "add":
                        c[p] = o + n, c[p + 1] = a + r, c[p + 2] = s + i;
                        break;
                      case "diff":
                      case "difference":
                        c[p] = Math.abs(o - n), c[p + 1] = Math.abs(a - r), c[p + 2] = Math.abs(s - i);
                        break;
                      case "subtract":
                        c[p] = o - n, c[p + 1] = a - r, c[p + 2] = s - i;
                        break;
                      case "darken":
                        c[p] = Math.min(o, n), c[p + 1] = Math.min(a, r), c[p + 2] = Math.min(s, i);
                        break;
                      case "lighten":
                        c[p] = Math.max(o, n), c[p + 1] = Math.max(a, r), c[p + 2] = Math.max(s, i);
                        break;
                      case "overlay":
                        c[p] = n < 128 ? 2 * o * n / 255 : 255 - 2 * (255 - o) * (255 - n) / 255, c[p + 1] = r < 128 ? 2 * a * r / 255 : 255 - 2 * (255 - a) * (255 - r) / 255, c[p + 2] = i < 128 ? 2 * s * i / 255 : 255 - 2 * (255 - s) * (
                          255 - i) / 255;
                        break;
                      case "exclusion":
                        c[p] = n + o - 2 * n * o / 255, c[p + 1] = r + a - 2 * r * a / 255, c[p + 2] = i + s - 2 * i * s / 255;
                        break;
                      case "tint":
                        c[p] = n + o * h, c[p + 1] = r + a * h, c[p + 2] = i + s * h
                    }
                  },
                  getUniformLocations: function(e, t) {
                    return {
                      uColor: e.getUniformLocation(t, "uColor")
                    }
                  },
                  sendUniformData: function(e, n) {
                    var r = new t.Color(this.color).getSource();
                    r[0] = this.alpha * r[0] / 255, r[1] = this.alpha * r[1] / 255, r[2] = this.alpha * r[2] / 255, r[3] = this.alpha, e.uniform4fv(n.uColor, r)
                  },
                  toObject: function() {
                    return {
                      type: this.type,
                      color: this.color,
                      mode: this.mode,
                      alpha: this.alpha
                    }
                  }
                }), t.Image.filters.BlendColor.fromObject = t.Image.filters.BaseFilter.fromObject
              }(e),
              function(e) {
                var t = e.fabric,
                  n = t.Image.filters,
                  r = t.util.createClass;
                n.BlendImage = r(n.BaseFilter, {
                  type: "BlendImage",
                  image: null,
                  mode: "multiply",
                  alpha: 1,
                  vertexSource: "attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvarying vec2 vTexCoord2;\nuniform mat3 uTransformMatrix;\nvoid main() {\nvTexCoord = aPosition;\nvTexCoord2 = (uTransformMatrix * vec3(aPosition, 1.0)).xy;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",
                  fragmentSource: {
                    multiply: "precision highp float;\nuniform sampler2D uTexture;\nuniform sampler2D uImage;\nuniform vec4 uColor;\nvarying vec2 vTexCoord;\nvarying vec2 vTexCoord2;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec4 color2 = texture2D(uImage, vTexCoord2);\ncolor.rgba *= color2.rgba;\ngl_FragColor = color;\n}",
                    mask: "precision highp float;\nuniform sampler2D uTexture;\nuniform sampler2D uImage;\nuniform vec4 uColor;\nvarying vec2 vTexCoord;\nvarying vec2 vTexCoord2;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec4 color2 = texture2D(uImage, vTexCoord2);\ncolor.a = color2.a;\ngl_FragColor = color;\n}"
                  },
                  retrieveShader: function(e) {
                    var t = this.type + "_" + this.mode,
                      n = this.fragmentSource[this.mode];
                    return e.programCache.hasOwnProperty(t) || (e.programCache[t] = this.createProgram(e.context, n)), e.programCache[t]
                  },
                  applyToWebGL: function(e) {
                    var t = e.context,
                      n = this.createTexture(e.filterBackend, this.image);
                    this.bindAdditionalTexture(t, n, t.TEXTURE1), this.callSuper("applyToWebGL", e), this.unbindAdditionalTexture(t, t.TEXTURE1)
                  },
                  createTexture: function(e, t) {
                    return e.getCachedTexture(t.cacheKey, t._element)
                  },
                  calculateMatrix: function() {
                    var e = this.image,
                      t = e._element.width,
                      n = e._element.height;
                    return [1 / e.scaleX, 0, 0, 0, 1 / e.scaleY, 0, -e.left / t, -e.top / n, 1]
                  },
                  applyTo2d: function(e) {
                    var n, r, i, o, a, s, l, c, u, h, p, d = e.imageData,
                      f = e.filterBackend.resources,
                      g = d.data,
                      m = g.length,
                      v = d.width,
                      _ = d.height,
                      b = this.image;
                    f.blendImage || (f.blendImage = t.util.createCanvasElement()), h = (u = f.blendImage).getContext("2d"), u.width !== v || u.height !== _ ? (u.width = v, u.height = _) : h.clearRect(0, 0, v, _), h.setTransform(b.scaleX, 0,
                      0, b.scaleY, b.left, b.top), h.drawImage(b._element, 0, 0, v, _), p = h.getImageData(0, 0, v, _).data;
                    for (var y = 0; y < m; y += 4) switch (a = g[y], s = g[y + 1], l = g[y + 2], c = g[y + 3], n = p[y], r = p[y + 1], i = p[y + 2], o = p[y + 3], this.mode) {
                      case "multiply":
                        g[y] = a * n / 255, g[y + 1] = s * r / 255, g[y + 2] = l * i / 255, g[y + 3] = c * o / 255;
                        break;
                      case "mask":
                        g[y + 3] = o
                    }
                  },
                  getUniformLocations: function(e, t) {
                    return {
                      uTransformMatrix: e.getUniformLocation(t, "uTransformMatrix"),
                      uImage: e.getUniformLocation(t, "uImage")
                    }
                  },
                  sendUniformData: function(e, t) {
                    var n = this.calculateMatrix();
                    e.uniform1i(t.uImage, 1), e.uniformMatrix3fv(t.uTransformMatrix, !1, n)
                  },
                  toObject: function() {
                    return {
                      type: this.type,
                      image: this.image && this.image.toObject(),
                      mode: this.mode,
                      alpha: this.alpha
                    }
                  }
                }), t.Image.filters.BlendImage.fromObject = function(e, n) {
                  t.Image.fromObject(e.image, (function(r) {
                    var i = t.util.object.clone(e);
                    i.image = r, n(new t.Image.filters.BlendImage(i))
                  }))
                }
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = Math.pow,
                  r = Math.floor,
                  i = Math.sqrt,
                  o = Math.abs,
                  a = Math.round,
                  s = Math.sin,
                  l = Math.ceil,
                  c = t.Image.filters,
                  u = t.util.createClass;
                c.Resize = u(c.BaseFilter, {
                  type: "Resize",
                  resizeType: "hermite",
                  scaleX: 1,
                  scaleY: 1,
                  lanczosLobes: 3,
                  getUniformLocations: function(e, t) {
                    return {
                      uDelta: e.getUniformLocation(t, "uDelta"),
                      uTaps: e.getUniformLocation(t, "uTaps")
                    }
                  },
                  sendUniformData: function(e, t) {
                    e.uniform2fv(t.uDelta, this.horizontal ? [1 / this.width, 0] : [0, 1 / this.height]), e.uniform1fv(t.uTaps, this.taps)
                  },
                  retrieveShader: function(e) {
                    var t = this.getFilterWindow(),
                      n = this.type + "_" + t;
                    if (!e.programCache.hasOwnProperty(n)) {
                      var r = this.generateShader(t);
                      e.programCache[n] = this.createProgram(e.context, r)
                    }
                    return e.programCache[n]
                  },
                  getFilterWindow: function() {
                    var e = this.tempScale;
                    return Math.ceil(this.lanczosLobes / e)
                  },
                  getTaps: function() {
                    for (var e = this.lanczosCreate(this.lanczosLobes), t = this.tempScale, n = this.getFilterWindow(), r = new Array(n), i = 1; i <= n; i++) r[i - 1] = e(i * t);
                    return r
                  },
                  generateShader: function(e) {
                    for (var t = new Array(e), n = this.fragmentSourceTOP, r = 1; r <= e; r++) t[r - 1] = r + ".0 * uDelta";
                    return n += "uniform float uTaps[" + e + "];\n", n += "void main() {\n", n += "  vec4 color = texture2D(uTexture, vTexCoord);\n", n += "  float sum = 1.0;\n", t.forEach((function(e, t) {
                      n += "  color += texture2D(uTexture, vTexCoord + " + e + ") * uTaps[" + t + "];\n", n += "  color += texture2D(uTexture, vTexCoord - " + e + ") * uTaps[" + t + "];\n", n += "  sum += 2.0 * uTaps[" + t + "];\n"
                    })), n += "  gl_FragColor = color / sum;\n", n += "}"
                  },
                  fragmentSourceTOP: "precision highp float;\nuniform sampler2D uTexture;\nuniform vec2 uDelta;\nvarying vec2 vTexCoord;\n",
                  applyTo: function(e) {
                    e.webgl ? (e.passes++, this.width = e.sourceWidth, this.horizontal = !0, this.dW = Math.round(this.width * this.scaleX), this.dH = e.sourceHeight, this.tempScale = this.dW / this.width, this.taps = this.getTaps(), e
                      .destinationWidth = this.dW, this._setupFrameBuffer(e), this.applyToWebGL(e), this._swapTextures(e), e.sourceWidth = e.destinationWidth, this.height = e.sourceHeight, this.horizontal = !1, this.dH = Math.round(this
                        .height * this.scaleY), this.tempScale = this.dH / this.height, this.taps = this.getTaps(), e.destinationHeight = this.dH, this._setupFrameBuffer(e), this.applyToWebGL(e), this._swapTextures(e), e.sourceHeight = e
                      .destinationHeight) : this.applyTo2d(e)
                  },
                  isNeutralState: function() {
                    return 1 === this.scaleX && 1 === this.scaleY
                  },
                  lanczosCreate: function(e) {
                    return function(t) {
                      if (t >= e || t <= -e) return 0;
                      if (t < 1.1920929e-7 && t > -1.1920929e-7) return 1;
                      var n = (t *= Math.PI) / e;
                      return s(t) / t * s(n) / n
                    }
                  },
                  applyTo2d: function(e) {
                    var t = e.imageData,
                      n = this.scaleX,
                      r = this.scaleY;
                    this.rcpScaleX = 1 / n, this.rcpScaleY = 1 / r;
                    var i, o = t.width,
                      s = t.height,
                      l = a(o * n),
                      c = a(s * r);
                    "sliceHack" === this.resizeType ? i = this.sliceByTwo(e, o, s, l, c) : "hermite" === this.resizeType ? i = this.hermiteFastResize(e, o, s, l, c) : "bilinear" === this.resizeType ? i = this.bilinearFiltering(e, o, s, l,
                      c) : "lanczos" === this.resizeType && (i = this.lanczosResize(e, o, s, l, c)), e.imageData = i
                  },
                  sliceByTwo: function(e, n, i, o, a) {
                    var s, l, c = e.imageData,
                      u = .5,
                      h = !1,
                      p = !1,
                      d = n * u,
                      f = i * u,
                      g = t.filterBackend.resources,
                      m = 0,
                      v = 0,
                      _ = n,
                      b = 0;
                    for (g.sliceByTwo || (g.sliceByTwo = document.createElement("canvas")), ((s = g.sliceByTwo).width < 1.5 * n || s.height < i) && (s.width = 1.5 * n, s.height = i), (l = s.getContext("2d")).clearRect(0, 0, 1.5 * n, i), l
                      .putImageData(c, 0, 0), o = r(o), a = r(a); !h || !p;) n = d, i = f, o < r(d * u) ? d = r(d * u) : (d = o, h = !0), a < r(f * u) ? f = r(f * u) : (f = a, p = !0), l.drawImage(s, m, v, n, i, _, b, d, f), m = _, v = b,
                      b += f;
                    return l.getImageData(m, v, o, a)
                  },
                  lanczosResize: function(e, t, a, s, c) {
                    var u = e.imageData.data,
                      h = e.ctx.createImageData(s, c),
                      p = h.data,
                      d = this.lanczosCreate(this.lanczosLobes),
                      f = this.rcpScaleX,
                      g = this.rcpScaleY,
                      m = 2 / this.rcpScaleX,
                      v = 2 / this.rcpScaleY,
                      _ = l(f * this.lanczosLobes / 2),
                      b = l(g * this.lanczosLobes / 2),
                      y = {},
                      w = {},
                      x = {};
                    return function e(l) {
                      var k, C, S, E, T, O, A, P, M, D, I;
                      for (w.x = (l + .5) * f, x.x = r(w.x), k = 0; k < c; k++) {
                        for (w.y = (k + .5) * g, x.y = r(w.y), T = 0, O = 0, A = 0, P = 0, M = 0, C = x.x - _; C <= x.x + _; C++)
                          if (!(C < 0 || C >= t)) {
                            D = r(1e3 * o(C - w.x)), y[D] || (y[D] = {});
                            for (var N = x.y - b; N <= x.y + b; N++) N < 0 || N >= a || (I = r(1e3 * o(N - w.y)), y[D][I] || (y[D][I] = d(i(n(D * m, 2) + n(I * v, 2)) / 1e3)), (S = y[D][I]) > 0 && (T += S, O += S * u[E = 4 * (N * t + C)],
                              A += S * u[E + 1], P += S * u[E + 2], M += S * u[E + 3]))
                          } p[E = 4 * (k * s + l)] = O / T, p[E + 1] = A / T, p[E + 2] = P / T, p[E + 3] = M / T
                      }
                      return ++l < s ? e(l) : h
                    }(0)
                  },
                  bilinearFiltering: function(e, t, n, i, o) {
                    var a, s, l, c, u, h, p, d, f, g = 0,
                      m = this.rcpScaleX,
                      v = this.rcpScaleY,
                      _ = 4 * (t - 1),
                      b = e.imageData.data,
                      y = e.ctx.createImageData(i, o),
                      w = y.data;
                    for (l = 0; l < o; l++)
                      for (c = 0; c < i; c++)
                        for (u = m * c - (a = r(m * c)), h = v * l - (s = r(v * l)), f = 4 * (s * t + a), p = 0; p < 4; p++) d = b[f + p] * (1 - u) * (1 - h) + b[f + 4 + p] * u * (1 - h) + b[f + _ + p] * h * (1 - u) + b[f + _ + 4 + p] * u *
                          h, w[g++] = d;
                    return y
                  },
                  hermiteFastResize: function(e, t, n, a, s) {
                    for (var c = this.rcpScaleX, u = this.rcpScaleY, h = l(c / 2), p = l(u / 2), d = e.imageData.data, f = e.ctx.createImageData(a, s), g = f.data, m = 0; m < s; m++)
                      for (var v = 0; v < a; v++) {
                        for (var _ = 4 * (v + m * a), b = 0, y = 0, w = 0, x = 0, k = 0, C = 0, S = 0, E = (m + .5) * u, T = r(m * u); T < (m + 1) * u; T++)
                          for (var O = o(E - (T + .5)) / p, A = (v + .5) * c, P = O * O, M = r(v * c); M < (v + 1) * c; M++) {
                            var D = o(A - (M + .5)) / h,
                              I = i(P + D * D);
                            I > 1 && I < -1 || (b = 2 * I * I * I - 3 * I * I + 1) > 0 && (S += b * d[(D = 4 * (M + T * t)) + 3], w += b, d[D + 3] < 255 && (b = b * d[D + 3] / 250), x += b * d[D], k += b * d[D + 1], C += b * d[D + 2], y +=
                              b)
                          }
                        g[_] = x / y, g[_ + 1] = k / y, g[_ + 2] = C / y, g[_ + 3] = S / w
                      }
                    return f
                  },
                  toObject: function() {
                    return {
                      type: this.type,
                      scaleX: this.scaleX,
                      scaleY: this.scaleY,
                      resizeType: this.resizeType,
                      lanczosLobes: this.lanczosLobes
                    }
                  }
                }), t.Image.filters.Resize.fromObject = t.Image.filters.BaseFilter.fromObject
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.Image.filters,
                  r = t.util.createClass;
                n.Contrast = r(n.BaseFilter, {
                  type: "Contrast",
                  fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",
                  contrast: 0,
                  mainParameter: "contrast",
                  applyTo2d: function(e) {
                    if (0 !== this.contrast) {
                      var t, n = e.imageData.data,
                        r = n.length,
                        i = Math.floor(255 * this.contrast),
                        o = 259 * (i + 255) / (255 * (259 - i));
                      for (t = 0; t < r; t += 4) n[t] = o * (n[t] - 128) + 128, n[t + 1] = o * (n[t + 1] - 128) + 128, n[t + 2] = o * (n[t + 2] - 128) + 128
                    }
                  },
                  getUniformLocations: function(e, t) {
                    return {
                      uContrast: e.getUniformLocation(t, "uContrast")
                    }
                  },
                  sendUniformData: function(e, t) {
                    e.uniform1f(t.uContrast, this.contrast)
                  }
                }), t.Image.filters.Contrast.fromObject = t.Image.filters.BaseFilter.fromObject
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.Image.filters,
                  r = t.util.createClass;
                n.Saturation = r(n.BaseFilter, {
                  type: "Saturation",
                  fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uSaturation;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat rgMax = max(color.r, color.g);\nfloat rgbMax = max(rgMax, color.b);\ncolor.r += rgbMax != color.r ? (rgbMax - color.r) * uSaturation : 0.00;\ncolor.g += rgbMax != color.g ? (rgbMax - color.g) * uSaturation : 0.00;\ncolor.b += rgbMax != color.b ? (rgbMax - color.b) * uSaturation : 0.00;\ngl_FragColor = color;\n}",
                  saturation: 0,
                  mainParameter: "saturation",
                  applyTo2d: function(e) {
                    if (0 !== this.saturation) {
                      var t, n, r = e.imageData.data,
                        i = r.length,
                        o = -this.saturation;
                      for (t = 0; t < i; t += 4) n = Math.max(r[t], r[t + 1], r[t + 2]), r[t] += n !== r[t] ? (n - r[t]) * o : 0, r[t + 1] += n !== r[t + 1] ? (n - r[t + 1]) * o : 0, r[t + 2] += n !== r[t + 2] ? (n - r[t + 2]) * o : 0
                    }
                  },
                  getUniformLocations: function(e, t) {
                    return {
                      uSaturation: e.getUniformLocation(t, "uSaturation")
                    }
                  },
                  sendUniformData: function(e, t) {
                    e.uniform1f(t.uSaturation, -this.saturation)
                  }
                }), t.Image.filters.Saturation.fromObject = t.Image.filters.BaseFilter.fromObject
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.Image.filters,
                  r = t.util.createClass;
                n.Vibrance = r(n.BaseFilter, {
                  type: "Vibrance",
                  fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform float uVibrance;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat max = max(color.r, max(color.g, color.b));\nfloat avg = (color.r + color.g + color.b) / 3.0;\nfloat amt = (abs(max - avg) * 2.0) * uVibrance;\ncolor.r += max != color.r ? (max - color.r) * amt : 0.00;\ncolor.g += max != color.g ? (max - color.g) * amt : 0.00;\ncolor.b += max != color.b ? (max - color.b) * amt : 0.00;\ngl_FragColor = color;\n}",
                  vibrance: 0,
                  mainParameter: "vibrance",
                  applyTo2d: function(e) {
                    if (0 !== this.vibrance) {
                      var t, n, r, i, o = e.imageData.data,
                        a = o.length,
                        s = -this.vibrance;
                      for (t = 0; t < a; t += 4) n = Math.max(o[t], o[t + 1], o[t + 2]), r = (o[t] + o[t + 1] + o[t + 2]) / 3, i = 2 * Math.abs(n - r) / 255 * s, o[t] += n !== o[t] ? (n - o[t]) * i : 0, o[t + 1] += n !== o[t + 1] ? (n - o[
                        t + 1]) * i : 0, o[t + 2] += n !== o[t + 2] ? (n - o[t + 2]) * i : 0
                    }
                  },
                  getUniformLocations: function(e, t) {
                    return {
                      uVibrance: e.getUniformLocation(t, "uVibrance")
                    }
                  },
                  sendUniformData: function(e, t) {
                    e.uniform1f(t.uVibrance, -this.vibrance)
                  }
                }), t.Image.filters.Vibrance.fromObject = t.Image.filters.BaseFilter.fromObject
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.Image.filters,
                  r = t.util.createClass;
                n.Blur = r(n.BaseFilter, {
                  type: "Blur",
                  fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform vec2 uDelta;\nvarying vec2 vTexCoord;\nconst float nSamples = 15.0;\nvec3 v3offset = vec3(12.9898, 78.233, 151.7182);\nfloat random(vec3 scale) {\nreturn fract(sin(dot(gl_FragCoord.xyz, scale)) * 43758.5453);\n}\nvoid main() {\nvec4 color = vec4(0.0);\nfloat total = 0.0;\nfloat offset = random(v3offset);\nfor (float t = -nSamples; t <= nSamples; t++) {\nfloat percent = (t + offset - 0.5) / nSamples;\nfloat weight = 1.0 - abs(percent);\ncolor += texture2D(uTexture, vTexCoord + uDelta * percent) * weight;\ntotal += weight;\n}\ngl_FragColor = color / total;\n}",
                  blur: 0,
                  mainParameter: "blur",
                  applyTo: function(e) {
                    e.webgl ? (this.aspectRatio = e.sourceWidth / e.sourceHeight, e.passes++, this._setupFrameBuffer(e), this.horizontal = !0, this.applyToWebGL(e), this._swapTextures(e), this._setupFrameBuffer(e), this.horizontal = !1,
                      this.applyToWebGL(e), this._swapTextures(e)) : this.applyTo2d(e)
                  },
                  applyTo2d: function(e) {
                    e.imageData = this.simpleBlur(e)
                  },
                  simpleBlur: function(e) {
                    var n, r, i = e.filterBackend.resources,
                      o = e.imageData.width,
                      a = e.imageData.height;
                    i.blurLayer1 || (i.blurLayer1 = t.util.createCanvasElement(), i.blurLayer2 = t.util.createCanvasElement()), n = i.blurLayer1, r = i.blurLayer2, n.width === o && n.height === a || (r.width = n.width = o, r.height = n
                      .height = a);
                    var s, l, c, u, h = n.getContext("2d"),
                      p = r.getContext("2d"),
                      d = 15,
                      f = .06 * this.blur * .5;
                    for (h.putImageData(e.imageData, 0, 0), p.clearRect(0, 0, o, a), u = -15; u <= d; u++) c = f * (l = u / d) * o + (s = (Math.random() - .5) / 4), p.globalAlpha = 1 - Math.abs(l), p.drawImage(n, c, s), h.drawImage(r, 0,
                      0), p.globalAlpha = 1, p.clearRect(0, 0, r.width, r.height);
                    for (u = -15; u <= d; u++) c = f * (l = u / d) * a + (s = (Math.random() - .5) / 4), p.globalAlpha = 1 - Math.abs(l), p.drawImage(n, s, c), h.drawImage(r, 0, 0), p.globalAlpha = 1, p.clearRect(0, 0, r.width, r.height);
                    e.ctx.drawImage(n, 0, 0);
                    var g = e.ctx.getImageData(0, 0, n.width, n.height);
                    return h.globalAlpha = 1, h.clearRect(0, 0, n.width, n.height), g
                  },
                  getUniformLocations: function(e, t) {
                    return {
                      delta: e.getUniformLocation(t, "uDelta")
                    }
                  },
                  sendUniformData: function(e, t) {
                    var n = this.chooseRightDelta();
                    e.uniform2fv(t.delta, n)
                  },
                  chooseRightDelta: function() {
                    var e, t = 1,
                      n = [0, 0];
                    return this.horizontal ? this.aspectRatio > 1 && (t = 1 / this.aspectRatio) : this.aspectRatio < 1 && (t = this.aspectRatio), e = t * this.blur * .12, this.horizontal ? n[0] = e : n[1] = e, n
                  }
                }), n.Blur.fromObject = t.Image.filters.BaseFilter.fromObject
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.Image.filters,
                  r = t.util.createClass;
                n.Gamma = r(n.BaseFilter, {
                  type: "Gamma",
                  fragmentSource: "precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",
                  gamma: [1, 1, 1],
                  mainParameter: "gamma",
                  initialize: function(e) {
                    this.gamma = [1, 1, 1], n.BaseFilter.prototype.initialize.call(this, e)
                  },
                  applyTo2d: function(e) {
                    var t, n = e.imageData.data,
                      r = this.gamma,
                      i = n.length,
                      o = 1 / r[0],
                      a = 1 / r[1],
                      s = 1 / r[2];
                    for (this.rVals || (this.rVals = new Uint8Array(256), this.gVals = new Uint8Array(256), this.bVals = new Uint8Array(256)), t = 0, i = 256; t < i; t++) this.rVals[t] = 255 * Math.pow(t / 255, o), this.gVals[t] = 255 *
                      Math.pow(t / 255, a), this.bVals[t] = 255 * Math.pow(t / 255, s);
                    for (t = 0, i = n.length; t < i; t += 4) n[t] = this.rVals[n[t]], n[t + 1] = this.gVals[n[t + 1]], n[t + 2] = this.bVals[n[t + 2]]
                  },
                  getUniformLocations: function(e, t) {
                    return {
                      uGamma: e.getUniformLocation(t, "uGamma")
                    }
                  },
                  sendUniformData: function(e, t) {
                    e.uniform3fv(t.uGamma, this.gamma)
                  }
                }), t.Image.filters.Gamma.fromObject = t.Image.filters.BaseFilter.fromObject
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.Image.filters,
                  r = t.util.createClass;
                n.Composed = r(n.BaseFilter, {
                  type: "Composed",
                  subFilters: [],
                  initialize: function(e) {
                    this.callSuper("initialize", e), this.subFilters = this.subFilters.slice(0)
                  },
                  applyTo: function(e) {
                    e.passes += this.subFilters.length - 1, this.subFilters.forEach((function(t) {
                      t.applyTo(e)
                    }))
                  },
                  toObject: function() {
                    return t.util.object.extend(this.callSuper("toObject"), {
                      subFilters: this.subFilters.map((function(e) {
                        return e.toObject()
                      }))
                    })
                  },
                  isNeutralState: function() {
                    return !this.subFilters.some((function(e) {
                      return !e.isNeutralState()
                    }))
                  }
                }), t.Image.filters.Composed.fromObject = function(e, n) {
                  var r = (e.subFilters || []).map((function(e) {
                      return new t.Image.filters[e.type](e)
                    })),
                    i = new t.Image.filters.Composed({
                      subFilters: r
                    });
                  return n && n(i), i
                }
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.Image.filters,
                  r = t.util.createClass;
                n.HueRotation = r(n.ColorMatrix, {
                  type: "HueRotation",
                  rotation: 0,
                  mainParameter: "rotation",
                  calculateMatrix: function() {
                    var e = this.rotation * Math.PI,
                      n = t.util.cos(e),
                      r = t.util.sin(e),
                      i = 1 / 3,
                      o = Math.sqrt(i) * r,
                      a = 1 - n;
                    this.matrix = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0], this.matrix[0] = n + a / 3, this.matrix[1] = i * a - o, this.matrix[2] = i * a + o, this.matrix[5] = i * a + o, this.matrix[6] = n + i * a, this
                      .matrix[7] = i * a - o, this.matrix[10] = i * a - o, this.matrix[11] = i * a + o, this.matrix[12] = n + i * a
                  },
                  isNeutralState: function(e) {
                    return this.calculateMatrix(), n.BaseFilter.prototype.isNeutralState.call(this, e)
                  },
                  applyTo: function(e) {
                    this.calculateMatrix(), n.BaseFilter.prototype.applyTo.call(this, e)
                  }
                }), t.Image.filters.HueRotation.fromObject = t.Image.filters.BaseFilter.fromObject
              }(e),
              function(e) {
                var t = e.fabric || (e.fabric = {}),
                  n = t.util.object.clone;
                if (t.Text) t.warn("fabric.Text is already defined");
                else {
                  var r = "fontFamily fontWeight fontSize text underline overline linethrough textAlign fontStyle lineHeight textBackgroundColor charSpacing styles direction path pathStartOffset pathSide pathAlign".split(" ");
                  t.Text = t.util.createClass(t.Object, {
                      _dimensionAffectingProps: ["fontSize", "fontWeight", "fontFamily", "fontStyle", "lineHeight", "text", "charSpacing", "textAlign", "styles", "path", "pathStartOffset", "pathSide", "pathAlign"],
                      _reNewline: /\r?\n/,
                      _reSpacesAndTabs: /[ \t\r]/g,
                      _reSpaceAndTab: /[ \t\r]/,
                      _reWords: /\S+/g,
                      type: "text",
                      fontSize: 40,
                      fontWeight: "normal",
                      fontFamily: "Times New Roman",
                      underline: !1,
                      overline: !1,
                      linethrough: !1,
                      textAlign: "left",
                      fontStyle: "normal",
                      lineHeight: 1.16,
                      superscript: {
                        size: .6,
                        baseline: -.35
                      },
                      subscript: {
                        size: .6,
                        baseline: .11
                      },
                      textBackgroundColor: "",
                      stateProperties: t.Object.prototype.stateProperties.concat(r),
                      cacheProperties: t.Object.prototype.cacheProperties.concat(r),
                      stroke: null,
                      shadow: null,
                      path: null,
                      pathStartOffset: 0,
                      pathSide: "left",
                      pathAlign: "baseline",
                      _fontSizeFraction: .222,
                      offsets: {
                        underline: .1,
                        linethrough: -.315,
                        overline: -.88
                      },
                      _fontSizeMult: 1.13,
                      charSpacing: 0,
                      styles: null,
                      _measuringContext: null,
                      deltaY: 0,
                      direction: "ltr",
                      _styleProperties: ["stroke", "strokeWidth", "fill", "fontFamily", "fontSize", "fontWeight", "fontStyle", "underline", "overline", "linethrough", "deltaY", "textBackgroundColor"],
                      __charBounds: [],
                      CACHE_FONT_SIZE: 400,
                      MIN_TEXT_WIDTH: 2,
                      initialize: function(e, t) {
                        this.styles = t && t.styles || {}, this.text = e, this.__skipDimension = !0, this.callSuper("initialize", t), this.path && this.setPathInfo(), this.__skipDimension = !1, this.initDimensions(), this.setCoords(), this
                          .setupState({
                            propertySet: "_dimensionAffectingProps"
                          })
                      },
                      setPathInfo: function() {
                        var e = this.path;
                        e && (e.segmentsInfo = t.util.getPathSegmentsInfo(e.path))
                      },
                      getMeasuringContext: function() {
                        return t._measuringContext || (t._measuringContext = this.canvas && this.canvas.contextCache || t.util.createCanvasElement().getContext("2d")), t._measuringContext
                      },
                      _splitText: function() {
                        var e = this._splitTextIntoLines(this.text);
                        return this.textLines = e.lines, this._textLines = e.graphemeLines, this._unwrappedTextLines = e._unwrappedLines, this._text = e.graphemeText, e
                      },
                      initDimensions: function() {
                        this.__skipDimension || (this._splitText(), this._clearCache(), this.path ? (this.width = this.path.width, this.height = this.path.height) : (this.width = this.calcTextWidth() || this.cursorWidth || this
                          .MIN_TEXT_WIDTH, this.height = this.calcTextHeight()), -1 !== this.textAlign.indexOf("justify") && this.enlargeSpaces(), this.saveState({
                          propertySet: "_dimensionAffectingProps"
                        }))
                      },
                      enlargeSpaces: function() {
                        for (var e, t, n, r, i, o, a, s = 0, l = this._textLines.length; s < l; s++)
                          if (("justify" === this.textAlign || s !== l - 1 && !this.isEndOfWrapping(s)) && (r = 0, i = this._textLines[s], (t = this.getLineWidth(s)) < this.width && (a = this.textLines[s].match(this._reSpacesAndTabs)))) {
                            n = a.length, e = (this.width - t) / n;
                            for (var c = 0, u = i.length; c <= u; c++) o = this.__charBounds[s][c], this._reSpaceAndTab.test(i[c]) ? (o.width += e, o.kernedWidth += e, o.left += r, r += e) : o.left += r
                          }
                      },
                      isEndOfWrapping: function(e) {
                        return e === this._textLines.length - 1
                      },
                      missingNewlineOffset: function() {
                        return 1
                      },
                      toString: function() {
                        return "#<fabric.Text (" + this.complexity() + '): { "text": "' + this.text + '", "fontFamily": "' + this.fontFamily + '" }>'
                      },
                      _getCacheCanvasDimensions: function() {
                        var e = this.callSuper("_getCacheCanvasDimensions"),
                          t = this.fontSize;
                        return e.width += t * e.zoomX, e.height += t * e.zoomY, e
                      },
                      _render: function(e) {
                        var t = this.path;
                        t && !t.isNotVisible() && t._render(e), this._setTextStyles(e), this._renderTextLinesBackground(e), this._renderTextDecoration(e, "underline"), this._renderText(e), this._renderTextDecoration(e, "overline"), this
                          ._renderTextDecoration(e, "linethrough")
                      },
                      _renderText: function(e) {
                        "stroke" === this.paintFirst ? (this._renderTextStroke(e), this._renderTextFill(e)) : (this._renderTextFill(e), this._renderTextStroke(e))
                      },
                      _setTextStyles: function(e, t, n) {
                        if (e.textBaseline = "alphabetical", this.path) switch (this.pathAlign) {
                          case "center":
                            e.textBaseline = "middle";
                            break;
                          case "ascender":
                            e.textBaseline = "top";
                            break;
                          case "descender":
                            e.textBaseline = "bottom"
                        }
                        e.font = this._getFontDeclaration(t, n)
                      },
                      calcTextWidth: function() {
                        for (var e = this.getLineWidth(0), t = 1, n = this._textLines.length; t < n; t++) {
                          var r = this.getLineWidth(t);
                          r > e && (e = r)
                        }
                        return e
                      },
                      _renderTextLine: function(e, t, n, r, i, o) {
                        this._renderChars(e, t, n, r, i, o)
                      },
                      _renderTextLinesBackground: function(e) {
                        if (this.textBackgroundColor || this.styleHas("textBackgroundColor")) {
                          for (var t, n, r, i, o, a, s, l = e.fillStyle, c = this._getLeftOffset(), u = this._getTopOffset(), h = 0, p = 0, d = this.path, f = 0, g = this._textLines.length; f < g; f++)
                            if (t = this.getHeightOfLine(f), this.textBackgroundColor || this.styleHas("textBackgroundColor", f)) {
                              r = this._textLines[f], n = this._getLineLeftOffset(f), p = 0, h = 0, i = this.getValueOfPropertyAt(f, 0, "textBackgroundColor");
                              for (var m = 0, v = r.length; m < v; m++) o = this.__charBounds[f][m], a = this.getValueOfPropertyAt(f, m, "textBackgroundColor"), d ? (e.save(), e.translate(o.renderLeft, o.renderTop), e.rotate(o.angle), e
                                .fillStyle = a, a && e.fillRect(-o.width / 2, -t / this.lineHeight * (1 - this._fontSizeFraction), o.width, t / this.lineHeight), e.restore()) : a !== i ? (s = c + n + h, "rtl" === this.direction && (s = this
                                .width - s - p), e.fillStyle = i, i && e.fillRect(s, u, p, t / this.lineHeight), h = o.left, p = o.width, i = a) : p += o.kernedWidth;
                              a && !d && (s = c + n + h, "rtl" === this.direction && (s = this.width - s - p), e.fillStyle = a, e.fillRect(s, u, p, t / this.lineHeight)), u += t
                            } else u += t;
                          e.fillStyle = l, this._removeShadow(e)
                        }
                      },
                      getFontCache: function(e) {
                        var n = e.fontFamily.toLowerCase();
                        t.charWidthsCache[n] || (t.charWidthsCache[n] = {});
                        var r = t.charWidthsCache[n],
                          i = e.fontStyle.toLowerCase() + "_" + (e.fontWeight + "").toLowerCase();
                        return r[i] || (r[i] = {}), r[i]
                      },
                      _measureChar: function(e, t, n, r) {
                        var i, o, a, s, l = this.getFontCache(t),
                          c = n + e,
                          u = this._getFontDeclaration(t) === this._getFontDeclaration(r),
                          h = t.fontSize / this.CACHE_FONT_SIZE;
                        if (n && void 0 !== l[n] && (a = l[n]), void 0 !== l[e] && (s = i = l[e]), u && void 0 !== l[c] && (s = (o = l[c]) - a), void 0 === i || void 0 === a || void 0 === o) {
                          var p = this.getMeasuringContext();
                          this._setTextStyles(p, t, !0)
                        }
                        return void 0 === i && (s = i = p.measureText(e).width, l[e] = i), void 0 === a && u && n && (a = p.measureText(n).width, l[n] = a), u && void 0 === o && (o = p.measureText(c).width, l[c] = o, s = o - a), {
                          width: i * h,
                          kernedWidth: s * h
                        }
                      },
                      getHeightOfChar: function(e, t) {
                        return this.getValueOfPropertyAt(e, t, "fontSize")
                      },
                      measureLine: function(e) {
                        var t = this._measureLine(e);
                        return 0 !== this.charSpacing && (t.width -= this._getWidthOfCharSpacing()), t.width < 0 && (t.width = 0), t
                      },
                      _measureLine: function(e) {
                        var n, r, i, o, a, s, l = 0,
                          c = this._textLines[e],
                          u = new Array(c.length),
                          h = 0,
                          p = this.path,
                          d = "right" === this.pathSide;
                        for (this.__charBounds[e] = u, n = 0; n < c.length; n++) r = c[n], o = this._getGraphemeBox(r, e, n, i), u[n] = o, l += o.kernedWidth, i = r;
                        if (u[n] = {
                            left: o ? o.left + o.width : 0,
                            width: 0,
                            kernedWidth: 0,
                            height: this.fontSize
                          }, p) {
                          switch (s = p.segmentsInfo[p.segmentsInfo.length - 1].length, (a = t.util.getPointOnPath(p.path, 0, p.segmentsInfo)).x += p.pathOffset.x, a.y += p.pathOffset.y, this.textAlign) {
                            case "left":
                              h = d ? s - l : 0;
                              break;
                            case "center":
                              h = (s - l) / 2;
                              break;
                            case "right":
                              h = d ? 0 : s - l
                          }
                          for (h += this.pathStartOffset * (d ? -1 : 1), n = d ? c.length - 1 : 0; d ? n >= 0 : n < c.length; d ? n-- : n++) o = u[n], h > s ? h %= s : h < 0 && (h += s), this._setGraphemeOnPath(h, o, a), h += o.kernedWidth
                        }
                        return {
                          width: l,
                          numOfSpaces: 0
                        }
                      },
                      _setGraphemeOnPath: function(e, n, r) {
                        var i = e + n.kernedWidth / 2,
                          o = this.path,
                          a = t.util.getPointOnPath(o.path, i, o.segmentsInfo);
                        n.renderLeft = a.x - r.x, n.renderTop = a.y - r.y, n.angle = a.angle + ("right" === this.pathSide ? Math.PI : 0)
                      },
                      _getGraphemeBox: function(e, t, n, r, i) {
                        var o, a = this.getCompleteStyleDeclaration(t, n),
                          s = r ? this.getCompleteStyleDeclaration(t, n - 1) : {},
                          l = this._measureChar(e, a, r, s),
                          c = l.kernedWidth,
                          u = l.width;
                        0 !== this.charSpacing && (u += o = this._getWidthOfCharSpacing(), c += o);
                        var h = {
                          width: u,
                          left: 0,
                          height: a.fontSize,
                          kernedWidth: c,
                          deltaY: a.deltaY
                        };
                        if (n > 0 && !i) {
                          var p = this.__charBounds[t][n - 1];
                          h.left = p.left + p.width + l.kernedWidth - l.width
                        }
                        return h
                      },
                      getHeightOfLine: function(e) {
                        if (this.__lineHeights[e]) return this.__lineHeights[e];
                        for (var t = this._textLines[e], n = this.getHeightOfChar(e, 0), r = 1, i = t.length; r < i; r++) n = Math.max(this.getHeightOfChar(e, r), n);
                        return this.__lineHeights[e] = n * this.lineHeight * this._fontSizeMult
                      },
                      calcTextHeight: function() {
                        for (var e, t = 0, n = 0, r = this._textLines.length; n < r; n++) e = this.getHeightOfLine(n), t += n === r - 1 ? e / this.lineHeight : e;
                        return t
                      },
                      _getLeftOffset: function() {
                        return "ltr" === this.direction ? -this.width / 2 : this.width / 2
                      },
                      _getTopOffset: function() {
                        return -this.height / 2
                      },
                      _renderTextCommon: function(e, t) {
                        e.save();
                        for (var n = 0, r = this._getLeftOffset(), i = this._getTopOffset(), o = 0, a = this._textLines.length; o < a; o++) {
                          var s = this.getHeightOfLine(o),
                            l = s / this.lineHeight,
                            c = this._getLineLeftOffset(o);
                          this._renderTextLine(t, e, this._textLines[o], r + c, i + n + l, o), n += s
                        }
                        e.restore()
                      },
                      _renderTextFill: function(e) {
                        (this.fill || this.styleHas("fill")) && this._renderTextCommon(e, "fillText")
                      },
                      _renderTextStroke: function(e) {
                        (this.stroke && 0 !== this.strokeWidth || !this.isEmptyStyles()) && (this.shadow && !this.shadow.affectStroke && this._removeShadow(e), e.save(), this._setLineDash(e, this.strokeDashArray), e.beginPath(), this
                          ._renderTextCommon(e, "strokeText"), e.closePath(), e.restore())
                      },
                      _renderChars: function(e, n, r, i, o, a) {
                        var s, l, c, u, h, p = this.getHeightOfLine(a),
                          d = -1 !== this.textAlign.indexOf("justify"),
                          f = "",
                          g = 0,
                          m = this.path,
                          v = !d && 0 === this.charSpacing && this.isEmptyStyles(a) && !m,
                          _ = "ltr" === this.direction,
                          b = "ltr" === this.direction ? 1 : -1,
                          y = n.canvas.getAttribute("dir");
                        if (n.save(), y !== this.direction && (n.canvas.setAttribute("dir", _ ? "ltr" : "rtl"), n.direction = _ ? "ltr" : "rtl", n.textAlign = _ ? "left" : "right"), o -= p * this._fontSizeFraction / this.lineHeight, v)
                        return this._renderChar(e, n, a, 0, r.join(""), i, o, p), void n.restore();
                        for (var w = 0, x = r.length - 1; w <= x; w++) u = w === x || this.charSpacing || m, f += r[w], c = this.__charBounds[a][w], 0 === g ? (i += b * (c.kernedWidth - c.width), g += c.width) : g += c.kernedWidth, d && !u &&
                          this._reSpaceAndTab.test(r[w]) && (u = !0), u || (s = s || this.getCompleteStyleDeclaration(a, w), l = this.getCompleteStyleDeclaration(a, w + 1), u = t.util.hasStyleChanged(s, l, !1)), u && (m ? (n.save(), n
                            .translate(c.renderLeft, c.renderTop), n.rotate(c.angle), this._renderChar(e, n, a, w, f, -g / 2, 0, p), n.restore()) : (h = i, this._renderChar(e, n, a, w, f, h, o, p)), f = "", s = l, i += b * g, g = 0);
                        n.restore()
                      },
                      _applyPatternGradientTransformText: function(e) {
                        var n, r = t.util.createCanvasElement(),
                          i = this.width + this.strokeWidth,
                          o = this.height + this.strokeWidth;
                        return r.width = i, r.height = o, (n = r.getContext("2d")).beginPath(), n.moveTo(0, 0), n.lineTo(i, 0), n.lineTo(i, o), n.lineTo(0, o), n.closePath(), n.translate(i / 2, o / 2), n.fillStyle = e.toLive(n), this
                          ._applyPatternGradientTransform(n, e), n.fill(), n.createPattern(r, "no-repeat")
                      },
                      handleFiller: function(e, t, n) {
                        var r, i;
                        return n.toLive ? "percentage" === n.gradientUnits || n.gradientTransform || n.patternTransform ? (r = -this.width / 2, i = -this.height / 2, e.translate(r, i), e[t] = this._applyPatternGradientTransformText(n), {
                          offsetX: r,
                          offsetY: i
                        }) : (e[t] = n.toLive(e, this), this._applyPatternGradientTransform(e, n)) : (e[t] = n, {
                          offsetX: 0,
                          offsetY: 0
                        })
                      },
                      _setStrokeStyles: function(e, t) {
                        return e.lineWidth = t.strokeWidth, e.lineCap = this.strokeLineCap, e.lineDashOffset = this.strokeDashOffset, e.lineJoin = this.strokeLineJoin, e.miterLimit = this.strokeMiterLimit, this.handleFiller(e, "strokeStyle",
                          t.stroke)
                      },
                      _setFillStyles: function(e, t) {
                        return this.handleFiller(e, "fillStyle", t.fill)
                      },
                      _renderChar: function(e, t, n, r, i, o, a) {
                        var s, l, c = this._getStyleDeclaration(n, r),
                          u = this.getCompleteStyleDeclaration(n, r),
                          h = "fillText" === e && u.fill,
                          p = "strokeText" === e && u.stroke && u.strokeWidth;
                        (p || h) && (t.save(), h && (s = this._setFillStyles(t, u)), p && (l = this._setStrokeStyles(t, u)), t.font = this._getFontDeclaration(u), c && c.textBackgroundColor && this._removeShadow(t), c && c.deltaY && (a += c
                          .deltaY), h && t.fillText(i, o - s.offsetX, a - s.offsetY), p && t.strokeText(i, o - l.offsetX, a - l.offsetY), t.restore())
                      },
                      setSuperscript: function(e, t) {
                        return this._setScript(e, t, this.superscript)
                      },
                      setSubscript: function(e, t) {
                        return this._setScript(e, t, this.subscript)
                      },
                      _setScript: function(e, t, n) {
                        var r = this.get2DCursorLocation(e, !0),
                          i = this.getValueOfPropertyAt(r.lineIndex, r.charIndex, "fontSize"),
                          o = this.getValueOfPropertyAt(r.lineIndex, r.charIndex, "deltaY"),
                          a = {
                            fontSize: i * n.size,
                            deltaY: o + i * n.baseline
                          };
                        return this.setSelectionStyles(a, e, t), this
                      },
                      _getLineLeftOffset: function(e) {
                        var t = this.getLineWidth(e),
                          n = this.width - t,
                          r = this.textAlign,
                          i = this.direction,
                          o = 0,
                          a = this.isEndOfWrapping(e);
                        return "justify" === r || "justify-center" === r && !a || "justify-right" === r && !a || "justify-left" === r && !a ? 0 : ("center" === r && (o = n / 2), "right" === r && (o = n), "justify-center" === r && (o = n / 2),
                          "justify-right" === r && (o = n), "rtl" === i && (o -= n), o)
                      },
                      _clearCache: function() {
                        this.__lineWidths = [], this.__lineHeights = [], this.__charBounds = []
                      },
                      _shouldClearDimensionCache: function() {
                        var e = this._forceClearCache;
                        return e || (e = this.hasStateChanged("_dimensionAffectingProps")), e && (this.dirty = !0, this._forceClearCache = !1), e
                      },
                      getLineWidth: function(e) {
                        if (void 0 !== this.__lineWidths[e]) return this.__lineWidths[e];
                        var t = this.measureLine(e).width;
                        return this.__lineWidths[e] = t, t
                      },
                      _getWidthOfCharSpacing: function() {
                        return 0 !== this.charSpacing ? this.fontSize * this.charSpacing / 1e3 : 0
                      },
                      getValueOfPropertyAt: function(e, t, n) {
                        var r = this._getStyleDeclaration(e, t);
                        return r && void 0 !== r[n] ? r[n] : this[n]
                      },
                      _renderTextDecoration: function(e, t) {
                        if (this[t] || this.styleHas(t)) {
                          for (var n, r, i, o, a, s, l, c, u, h, p, d, f, g, m, v, _ = this._getLeftOffset(), b = this._getTopOffset(), y = this.path, w = this._getWidthOfCharSpacing(), x = this.offsets[t], k = 0, C = this._textLines
                            .length; k < C; k++)
                            if (n = this.getHeightOfLine(k), this[t] || this.styleHas(t, k)) {
                              l = this._textLines[k], g = n / this.lineHeight, o = this._getLineLeftOffset(k), h = 0, p = 0, c = this.getValueOfPropertyAt(k, 0, t), v = this.getValueOfPropertyAt(k, 0, "fill"), u = b + g * (1 - this
                                ._fontSizeFraction), r = this.getHeightOfChar(k, 0), a = this.getValueOfPropertyAt(k, 0, "deltaY");
                              for (var S = 0, E = l.length; S < E; S++)
                                if (d = this.__charBounds[k][S], f = this.getValueOfPropertyAt(k, S, t), m = this.getValueOfPropertyAt(k, S, "fill"), i = this.getHeightOfChar(k, S), s = this.getValueOfPropertyAt(k, S, "deltaY"), y && f && m)
                                  e.save(), e.fillStyle = v, e.translate(d.renderLeft, d.renderTop), e.rotate(d.angle), e.fillRect(-d.kernedWidth / 2, x * i + s, d.kernedWidth, this.fontSize / 15), e.restore();
                                else if ((f !== c || m !== v || i !== r || s !== a) && p > 0) {
                                var T = _ + o + h;
                                "rtl" === this.direction && (T = this.width - T - p), c && v && (e.fillStyle = v, e.fillRect(T, u + x * r + a, p, this.fontSize / 15)), h = d.left, p = d.width, c = f, v = m, r = i, a = s
                              } else p += d.kernedWidth;
                              T = _ + o + h;
                              "rtl" === this.direction && (T = this.width - T - p), e.fillStyle = m, f && m && e.fillRect(T, u + x * r + a, p - w, this.fontSize / 15), b += n
                            } else b += n;
                          this._removeShadow(e)
                        }
                      },
                      _getFontDeclaration: function(e, n) {
                        var r = e || this,
                          i = this.fontFamily,
                          o = t.Text.genericFonts.indexOf(i.toLowerCase()) > -1,
                          a = void 0 === i || i.indexOf("'") > -1 || i.indexOf(",") > -1 || i.indexOf('"') > -1 || o ? r.fontFamily : '"' + r.fontFamily + '"';
                        return [t.isLikelyNode ? r.fontWeight : r.fontStyle, t.isLikelyNode ? r.fontStyle : r.fontWeight, n ? this.CACHE_FONT_SIZE + "px" : r.fontSize + "px", a].join(" ")
                      },
                      render: function(e) {
                        this.visible && (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen() || (this._shouldClearDimensionCache() && this.initDimensions(), this.callSuper("render", e)))
                      },
                      _splitTextIntoLines: function(e) {
                        for (var n = e.split(this._reNewline), r = new Array(n.length), i = ["\n"], o = [], a = 0; a < n.length; a++) r[a] = t.util.string.graphemeSplit(n[a]), o = o.concat(r[a], i);
                        return o.pop(), {
                          _unwrappedLines: r,
                          lines: n,
                          graphemeText: o,
                          graphemeLines: r
                        }
                      },
                      toObject: function(e) {
                        var n = r.concat(e),
                          i = this.callSuper("toObject", n);
                        return i.styles = t.util.stylesToArray(this.styles, this.text), i.path && (i.path = this.path.toObject()), i
                      },
                      set: function(e, t) {
                        this.callSuper("set", e, t);
                        var n = !1,
                          r = !1;
                        if ("object" == typeof e)
                          for (var i in e) "path" === i && this.setPathInfo(), n = n || -1 !== this._dimensionAffectingProps.indexOf(i), r = r || "path" === i;
                        else n = -1 !== this._dimensionAffectingProps.indexOf(e), r = "path" === e;
                        return r && this.setPathInfo(), n && (this.initDimensions(), this.setCoords()), this
                      },
                      complexity: function() {
                        return 1
                      }
                    }), t.Text.ATTRIBUTE_NAMES = t.SHARED_ATTRIBUTES.concat("x y dx dy font-family font-style font-weight font-size letter-spacing text-decoration text-anchor".split(" ")), t.Text.DEFAULT_SVG_FONT_SIZE = 16, t.Text.fromElement =
                    function(e, r, i) {
                      if (!e) return r(null);
                      var o = t.parseAttributes(e, t.Text.ATTRIBUTE_NAMES),
                        a = o.textAnchor || "left";
                      if ((i = t.util.object.extend(i ? n(i) : {}, o)).top = i.top || 0, i.left = i.left || 0, o.textDecoration) {
                        var s = o.textDecoration; - 1 !== s.indexOf("underline") && (i.underline = !0), -1 !== s.indexOf("overline") && (i.overline = !0), -1 !== s.indexOf("line-through") && (i.linethrough = !0), delete i.textDecoration
                      }
                      "dx" in o && (i.left += o.dx), "dy" in o && (i.top += o.dy), "fontSize" in i || (i.fontSize = t.Text.DEFAULT_SVG_FONT_SIZE);
                      var l = "";
                      "textContent" in e ? l = e.textContent : "firstChild" in e && null !== e.firstChild && "data" in e.firstChild && null !== e.firstChild.data && (l = e.firstChild.data), l = l.replace(/^\s+|\s+$|\n+/g, "").replace(/\s+/g,
                      " ");
                      var c = i.strokeWidth;
                      i.strokeWidth = 0;
                      var u = new t.Text(l, i),
                        h = u.getScaledHeight() / u.height,
                        p = ((u.height + u.strokeWidth) * u.lineHeight - u.height) * h,
                        d = u.getScaledHeight() + p,
                        f = 0;
                      "center" === a && (f = u.getScaledWidth() / 2), "right" === a && (f = u.getScaledWidth()), u.set({
                        left: u.left - f,
                        top: u.top - (d - u.fontSize * (.07 + u._fontSizeFraction)) / u.lineHeight,
                        strokeWidth: void 0 !== c ? c : 1
                      }), r(u)
                    }, t.Text.fromObject = function(e, r) {
                      var i = n(e),
                        o = e.path;
                      return delete i.path, t.Object._fromObject("Text", i, (function(n) {
                        n.styles = t.util.stylesFromArray(e.styles, e.text), o ? t.Object._fromObject("Path", o, (function(e) {
                          n.set("path", e), r(n)
                        }), "path") : r(n)
                      }), "text")
                    }, t.Text.genericFonts = ["sans-serif", "serif", "cursive", "fantasy", "monospace"], t.util.createAccessors && t.util.createAccessors(t.Text)
                }
              }(e), v.util.object.extend(v.Text.prototype, {
                isEmptyStyles: function(e) {
                  if (!this.styles) return !0;
                  if (void 0 !== e && !this.styles[e]) return !0;
                  var t = void 0 === e ? this.styles : {
                    line: this.styles[e]
                  };
                  for (var n in t)
                    for (var r in t[n])
                      for (var i in t[n][r]) return !1;
                  return !0
                },
                styleHas: function(e, t) {
                  if (!this.styles || !e || "" === e) return !1;
                  if (void 0 !== t && !this.styles[t]) return !1;
                  var n = void 0 === t ? this.styles : {
                    0: this.styles[t]
                  };
                  for (var r in n)
                    for (var i in n[r])
                      if (void 0 !== n[r][i][e]) return !0;
                  return !1
                },
                cleanStyle: function(e) {
                  if (!this.styles || !e || "" === e) return !1;
                  var t, n, r = this.styles,
                    i = 0,
                    o = !0,
                    a = 0;
                  for (var s in r) {
                    for (var l in t = 0, r[s]) {
                      var c;
                      i++, (c = r[s][l]).hasOwnProperty(e) ? (n ? c[e] !== n && (o = !1) : n = c[e], c[e] === this[e] && delete c[e]) : o = !1, 0 !== Object.keys(c).length ? t++ : delete r[s][l]
                    }
                    0 === t && delete r[s]
                  }
                  for (var u = 0; u < this._textLines.length; u++) a += this._textLines[u].length;
                  o && i === a && (this[e] = n, this.removeStyle(e))
                },
                removeStyle: function(e) {
                  if (this.styles && e && "" !== e) {
                    var t, n, r, i = this.styles;
                    for (n in i) {
                      for (r in t = i[n]) delete t[r][e], 0 === Object.keys(t[r]).length && delete t[r];
                      0 === Object.keys(t).length && delete i[n]
                    }
                  }
                },
                _extendStyles: function(e, t) {
                  var n = this.get2DCursorLocation(e);
                  this._getLineStyle(n.lineIndex) || this._setLineStyle(n.lineIndex), this._getStyleDeclaration(n.lineIndex, n.charIndex) || this._setStyleDeclaration(n.lineIndex, n.charIndex, {}), v.util.object.extend(this
                    ._getStyleDeclaration(n.lineIndex, n.charIndex), t)
                },
                get2DCursorLocation: function(e, t) {
                  void 0 === e && (e = this.selectionStart);
                  for (var n = t ? this._unwrappedTextLines : this._textLines, r = n.length, i = 0; i < r; i++) {
                    if (e <= n[i].length) return {
                      lineIndex: i,
                      charIndex: e
                    };
                    e -= n[i].length + this.missingNewlineOffset(i)
                  }
                  return {
                    lineIndex: i - 1,
                    charIndex: n[i - 1].length < e ? n[i - 1].length : e
                  }
                },
                getSelectionStyles: function(e, t, n) {
                  void 0 === e && (e = this.selectionStart || 0), void 0 === t && (t = this.selectionEnd || e);
                  for (var r = [], i = e; i < t; i++) r.push(this.getStyleAtPosition(i, n));
                  return r
                },
                getStyleAtPosition: function(e, t) {
                  var n = this.get2DCursorLocation(e);
                  return (t ? this.getCompleteStyleDeclaration(n.lineIndex, n.charIndex) : this._getStyleDeclaration(n.lineIndex, n.charIndex)) || {}
                },
                setSelectionStyles: function(e, t, n) {
                  void 0 === t && (t = this.selectionStart || 0), void 0 === n && (n = this.selectionEnd || t);
                  for (var r = t; r < n; r++) this._extendStyles(r, e);
                  return this._forceClearCache = !0, this
                },
                _getStyleDeclaration: function(e, t) {
                  var n = this.styles && this.styles[e];
                  return n ? n[t] : null
                },
                getCompleteStyleDeclaration: function(e, t) {
                  for (var n, r = this._getStyleDeclaration(e, t) || {}, i = {}, o = 0; o < this._styleProperties.length; o++) i[n = this._styleProperties[o]] = void 0 === r[n] ? this[n] : r[n];
                  return i
                },
                _setStyleDeclaration: function(e, t, n) {
                  this.styles[e][t] = n
                },
                _deleteStyleDeclaration: function(e, t) {
                  delete this.styles[e][t]
                },
                _getLineStyle: function(e) {
                  return !!this.styles[e]
                },
                _setLineStyle: function(e) {
                  this.styles[e] = {}
                },
                _deleteLineStyle: function(e) {
                  delete this.styles[e]
                }
              }),
              function() {
                function e(e) {
                  e.textDecoration && (e.textDecoration.indexOf("underline") > -1 && (e.underline = !0), e.textDecoration.indexOf("line-through") > -1 && (e.linethrough = !0), e.textDecoration.indexOf("overline") > -1 && (e.overline = !0),
                    delete e.textDecoration)
                }
                v.IText = v.util.createClass(v.Text, v.Observable, {
                  type: "i-text",
                  selectionStart: 0,
                  selectionEnd: 0,
                  selectionColor: "rgba(17,119,255,0.3)",
                  isEditing: !1,
                  editable: !0,
                  editingBorderColor: "rgba(102,153,255,0.25)",
                  cursorWidth: 2,
                  cursorColor: "",
                  cursorDelay: 1e3,
                  cursorDuration: 600,
                  caching: !0,
                  hiddenTextareaContainer: null,
                  _reSpace: /\s|\n/,
                  _currentCursorOpacity: 0,
                  _selectionDirection: null,
                  _abortCursorAnimation: !1,
                  __widthOfSpace: [],
                  inCompositionMode: !1,
                  initialize: function(e, t) {
                    this.callSuper("initialize", e, t), this.initBehavior()
                  },
                  setSelectionStart: function(e) {
                    e = Math.max(e, 0), this._updateAndFire("selectionStart", e)
                  },
                  setSelectionEnd: function(e) {
                    e = Math.min(e, this.text.length), this._updateAndFire("selectionEnd", e)
                  },
                  _updateAndFire: function(e, t) {
                    this[e] !== t && (this._fireSelectionChanged(), this[e] = t), this._updateTextarea()
                  },
                  _fireSelectionChanged: function() {
                    this.fire("selection:changed"), this.canvas && this.canvas.fire("text:selection:changed", {
                      target: this
                    })
                  },
                  initDimensions: function() {
                    this.isEditing && this.initDelayedCursor(), this.clearContextTop(), this.callSuper("initDimensions")
                  },
                  render: function(e) {
                    this.clearContextTop(), this.callSuper("render", e), this.cursorOffsetCache = {}, this.renderCursorOrSelection()
                  },
                  _render: function(e) {
                    this.callSuper("_render", e)
                  },
                  clearContextTop: function(e) {
                    if (this.isEditing && this.canvas && this.canvas.contextTop) {
                      var t = this.canvas.contextTop,
                        n = this.canvas.viewportTransform;
                      t.save(), t.transform(n[0], n[1], n[2], n[3], n[4], n[5]), this.transform(t), this._clearTextArea(t), e || t.restore()
                    }
                  },
                  renderCursorOrSelection: function() {
                    if (this.isEditing && this.canvas && this.canvas.contextTop) {
                      var e = this._getCursorBoundaries(),
                        t = this.canvas.contextTop;
                      this.clearContextTop(!0), this.selectionStart === this.selectionEnd ? this.renderCursor(e, t) : this.renderSelection(e, t), t.restore()
                    }
                  },
                  _clearTextArea: function(e) {
                    var t = this.width + 4,
                      n = this.height + 4;
                    e.clearRect(-t / 2, -n / 2, t, n)
                  },
                  _getCursorBoundaries: function(e) {
                    void 0 === e && (e = this.selectionStart);
                    var t = this._getLeftOffset(),
                      n = this._getTopOffset(),
                      r = this._getCursorBoundariesOffsets(e);
                    return {
                      left: t,
                      top: n,
                      leftOffset: r.left,
                      topOffset: r.top
                    }
                  },
                  _getCursorBoundariesOffsets: function(e) {
                    if (this.cursorOffsetCache && "top" in this.cursorOffsetCache) return this.cursorOffsetCache;
                    var t, n, r, i, o = 0,
                      a = 0,
                      s = this.get2DCursorLocation(e);
                    r = s.charIndex, n = s.lineIndex;
                    for (var l = 0; l < n; l++) o += this.getHeightOfLine(l);
                    t = this._getLineLeftOffset(n);
                    var c = this.__charBounds[n][r];
                    return c && (a = c.left), 0 !== this.charSpacing && r === this._textLines[n].length && (a -= this._getWidthOfCharSpacing()), i = {
                      top: o,
                      left: t + (a > 0 ? a : 0)
                    }, "rtl" === this.direction && (i.left *= -1), this.cursorOffsetCache = i, this.cursorOffsetCache
                  },
                  renderCursor: function(e, t) {
                    var n = this.get2DCursorLocation(),
                      r = n.lineIndex,
                      i = n.charIndex > 0 ? n.charIndex - 1 : 0,
                      o = this.getValueOfPropertyAt(r, i, "fontSize"),
                      a = this.scaleX * this.canvas.getZoom(),
                      s = this.cursorWidth / a,
                      l = e.topOffset,
                      c = this.getValueOfPropertyAt(r, i, "deltaY");
                    l += (1 - this._fontSizeFraction) * this.getHeightOfLine(r) / this.lineHeight - o * (1 - this._fontSizeFraction), this.inCompositionMode && this.renderSelection(e, t), t.fillStyle = this.cursorColor || this
                      .getValueOfPropertyAt(r, i, "fill"), t.globalAlpha = this.__isMousedown ? 1 : this._currentCursorOpacity, t.fillRect(e.left + e.leftOffset - s / 2, l + e.top + c, s, o)
                  },
                  renderSelection: function(e, t) {
                    for (var n = this.inCompositionMode ? this.hiddenTextarea.selectionStart : this.selectionStart, r = this.inCompositionMode ? this.hiddenTextarea.selectionEnd : this.selectionEnd, i = -1 !== this.textAlign.indexOf(
                        "justify"), o = this.get2DCursorLocation(n), a = this.get2DCursorLocation(r), s = o.lineIndex, l = a.lineIndex, c = o.charIndex < 0 ? 0 : o.charIndex, u = a.charIndex < 0 ? 0 : a.charIndex, h = s; h <= l; h++) {
                      var p, d = this._getLineLeftOffset(h) || 0,
                        f = this.getHeightOfLine(h),
                        g = 0,
                        m = 0;
                      if (h === s && (g = this.__charBounds[s][c].left), h >= s && h < l) m = i && !this.isEndOfWrapping(h) ? this.width : this.getLineWidth(h) || 5;
                      else if (h === l)
                        if (0 === u) m = this.__charBounds[l][u].left;
                        else {
                          var v = this._getWidthOfCharSpacing();
                          m = this.__charBounds[l][u - 1].left + this.__charBounds[l][u - 1].width - v
                        } p = f, (this.lineHeight < 1 || h === l && this.lineHeight > 1) && (f /= this.lineHeight);
                      var _ = e.left + d + g,
                        b = m - g,
                        y = f,
                        w = 0;
                      this.inCompositionMode ? (t.fillStyle = this.compositionColor || "black", y = 1, w = f) : t.fillStyle = this.selectionColor, "rtl" === this.direction && (_ = this.width - _ - b), t.fillRect(_, e.top + e.topOffset + w,
                        b, y), e.topOffset += p
                    }
                  },
                  getCurrentCharFontSize: function() {
                    var e = this._getCurrentCharIndex();
                    return this.getValueOfPropertyAt(e.l, e.c, "fontSize")
                  },
                  getCurrentCharColor: function() {
                    var e = this._getCurrentCharIndex();
                    return this.getValueOfPropertyAt(e.l, e.c, "fill")
                  },
                  _getCurrentCharIndex: function() {
                    var e = this.get2DCursorLocation(this.selectionStart, !0),
                      t = e.charIndex > 0 ? e.charIndex - 1 : 0;
                    return {
                      l: e.lineIndex,
                      c: t
                    }
                  }
                }), v.IText.fromObject = function(t, n) {
                  var r = v.util.stylesFromArray(t.styles, t.text),
                    i = Object.assign({}, t, {
                      styles: r
                    });
                  if (e(i), i.styles)
                    for (var o in i.styles)
                      for (var a in i.styles[o]) e(i.styles[o][a]);
                  v.Object._fromObject("IText", i, n, "text")
                }
              }(), m = v.util.object.clone, v.util.object.extend(v.IText.prototype, {
                initBehavior: function() {
                  this.initAddedHandler(), this.initRemovedHandler(), this.initCursorSelectionHandlers(), this.initDoubleClickSimulation(), this.mouseMoveHandler = this.mouseMoveHandler.bind(this)
                },
                onDeselect: function() {
                  this.isEditing && this.exitEditing(), this.selected = !1
                },
                initAddedHandler: function() {
                  var e = this;
                  this.on("added", (function() {
                    var t = e.canvas;
                    t && (t._hasITextHandlers || (t._hasITextHandlers = !0, e._initCanvasHandlers(t)), t._iTextInstances = t._iTextInstances || [], t._iTextInstances.push(e))
                  }))
                },
                initRemovedHandler: function() {
                  var e = this;
                  this.on("removed", (function() {
                    var t = e.canvas;
                    t && (t._iTextInstances = t._iTextInstances || [], v.util.removeFromArray(t._iTextInstances, e), 0 === t._iTextInstances.length && (t._hasITextHandlers = !1, e._removeCanvasHandlers(t)))
                  }))
                },
                _initCanvasHandlers: function(e) {
                  e._mouseUpITextHandler = function() {
                    e._iTextInstances && e._iTextInstances.forEach((function(e) {
                      e.__isMousedown = !1
                    }))
                  }, e.on("mouse:up", e._mouseUpITextHandler)
                },
                _removeCanvasHandlers: function(e) {
                  e.off("mouse:up", e._mouseUpITextHandler)
                },
                _tick: function() {
                  this._currentTickState = this._animateCursor(this, 1, this.cursorDuration, "_onTickComplete")
                },
                _animateCursor: function(e, t, n, r) {
                  var i;
                  return i = {
                    isAborted: !1,
                    abort: function() {
                      this.isAborted = !0
                    }
                  }, e.animate("_currentCursorOpacity", t, {
                    duration: n,
                    onComplete: function() {
                      i.isAborted || e[r]()
                    },
                    onChange: function() {
                      e.canvas && e.selectionStart === e.selectionEnd && e.renderCursorOrSelection()
                    },
                    abort: function() {
                      return i.isAborted
                    }
                  }), i
                },
                _onTickComplete: function() {
                  var e = this;
                  this._cursorTimeout1 && clearTimeout(this._cursorTimeout1), this._cursorTimeout1 = setTimeout((function() {
                    e._currentTickCompleteState = e._animateCursor(e, 0, this.cursorDuration / 2, "_tick")
                  }), 100)
                },
                initDelayedCursor: function(e) {
                  var t = this,
                    n = e ? 0 : this.cursorDelay;
                  this.abortCursorAnimation(), this._currentCursorOpacity = 1, this._cursorTimeout2 = setTimeout((function() {
                    t._tick()
                  }), n)
                },
                abortCursorAnimation: function() {
                  var e = this._currentTickState || this._currentTickCompleteState,
                    t = this.canvas;
                  this._currentTickState && this._currentTickState.abort(), this._currentTickCompleteState && this._currentTickCompleteState.abort(), clearTimeout(this._cursorTimeout1), clearTimeout(this._cursorTimeout2), this
                    ._currentCursorOpacity = 0, e && t && t.clearContext(t.contextTop || t.contextContainer)
                },
                selectAll: function() {
                  return this.selectionStart = 0, this.selectionEnd = this._text.length, this._fireSelectionChanged(), this._updateTextarea(), this
                },
                getSelectedText: function() {
                  return this._text.slice(this.selectionStart, this.selectionEnd).join("")
                },
                findWordBoundaryLeft: function(e) {
                  var t = 0,
                    n = e - 1;
                  if (this._reSpace.test(this._text[n]))
                    for (; this._reSpace.test(this._text[n]);) t++, n--;
                  for (;
                    /\S/.test(this._text[n]) && n > -1;) t++, n--;
                  return e - t
                },
                findWordBoundaryRight: function(e) {
                  var t = 0,
                    n = e;
                  if (this._reSpace.test(this._text[n]))
                    for (; this._reSpace.test(this._text[n]);) t++, n++;
                  for (;
                    /\S/.test(this._text[n]) && n < this._text.length;) t++, n++;
                  return e + t
                },
                findLineBoundaryLeft: function(e) {
                  for (var t = 0, n = e - 1; !/\n/.test(this._text[n]) && n > -1;) t++, n--;
                  return e - t
                },
                findLineBoundaryRight: function(e) {
                  for (var t = 0, n = e; !/\n/.test(this._text[n]) && n < this._text.length;) t++, n++;
                  return e + t
                },
                searchWordBoundary: function(e, t) {
                  for (var n = this._text, r = this._reSpace.test(n[e]) ? e - 1 : e, i = n[r], o = v.reNonWord; !o.test(i) && r > 0 && r < n.length;) i = n[r += t];
                  return o.test(i) && (r += 1 === t ? 0 : 1), r
                },
                selectWord: function(e) {
                  e = e || this.selectionStart;
                  var t = this.searchWordBoundary(e, -1),
                    n = this.searchWordBoundary(e, 1);
                  this.selectionStart = t, this.selectionEnd = n, this._fireSelectionChanged(), this._updateTextarea(), this.renderCursorOrSelection()
                },
                selectLine: function(e) {
                  e = e || this.selectionStart;
                  var t = this.findLineBoundaryLeft(e),
                    n = this.findLineBoundaryRight(e);
                  return this.selectionStart = t, this.selectionEnd = n, this._fireSelectionChanged(), this._updateTextarea(), this
                },
                enterEditing: function(e) {
                  if (!this.isEditing && this.editable) return this.canvas && (this.canvas.calcOffset(), this.exitEditingOnOthers(this.canvas)), this.isEditing = !0, this.initHiddenTextarea(e), this.hiddenTextarea.focus(), this.hiddenTextarea
                    .value = this.text, this._updateTextarea(), this._saveEditingProps(), this._setEditingProps(), this._textBeforeEdit = this.text, this._tick(), this.fire("editing:entered"), this._fireSelectionChanged(), this.canvas ? (
                      this.canvas.fire("text:editing:entered", {
                        target: this
                      }), this.initMouseMoveHandler(), this.canvas.requestRenderAll(), this) : this
                },
                exitEditingOnOthers: function(e) {
                  e._iTextInstances && e._iTextInstances.forEach((function(e) {
                    e.selected = !1, e.isEditing && e.exitEditing()
                  }))
                },
                initMouseMoveHandler: function() {
                  this.canvas.on("mouse:move", this.mouseMoveHandler)
                },
                mouseMoveHandler: function(e) {
                  if (this.__isMousedown && this.isEditing) {
                    document.activeElement !== this.hiddenTextarea && this.hiddenTextarea.focus();
                    var t = this.getSelectionStartFromPointer(e.e),
                      n = this.selectionStart,
                      r = this.selectionEnd;
                    (t === this.__selectionStartOnMouseDown && n !== r || n !== t && r !== t) && (t > this.__selectionStartOnMouseDown ? (this.selectionStart = this.__selectionStartOnMouseDown, this.selectionEnd = t) : (this.selectionStart =
                      t, this.selectionEnd = this.__selectionStartOnMouseDown), this.selectionStart === n && this.selectionEnd === r || (this.restartCursorIfNeeded(), this._fireSelectionChanged(), this._updateTextarea(), this
                      .renderCursorOrSelection()))
                  }
                },
                _setEditingProps: function() {
                  this.hoverCursor = "text", this.canvas && (this.canvas.defaultCursor = this.canvas.moveCursor = "text"), this.borderColor = this.editingBorderColor, this.hasControls = this.selectable = !1, this.lockMovementX = this
                    .lockMovementY = !0
                },
                fromStringToGraphemeSelection: function(e, t, n) {
                  var r = n.slice(0, e),
                    i = v.util.string.graphemeSplit(r).length;
                  if (e === t) return {
                    selectionStart: i,
                    selectionEnd: i
                  };
                  var o = n.slice(e, t);
                  return {
                    selectionStart: i,
                    selectionEnd: i + v.util.string.graphemeSplit(o).length
                  }
                },
                fromGraphemeToStringSelection: function(e, t, n) {
                  var r = n.slice(0, e).join("").length;
                  return e === t ? {
                    selectionStart: r,
                    selectionEnd: r
                  } : {
                    selectionStart: r,
                    selectionEnd: r + n.slice(e, t).join("").length
                  }
                },
                _updateTextarea: function() {
                  if (this.cursorOffsetCache = {}, this.hiddenTextarea) {
                    if (!this.inCompositionMode) {
                      var e = this.fromGraphemeToStringSelection(this.selectionStart, this.selectionEnd, this._text);
                      this.hiddenTextarea.selectionStart = e.selectionStart, this.hiddenTextarea.selectionEnd = e.selectionEnd
                    }
                    this.updateTextareaPosition()
                  }
                },
                updateFromTextArea: function() {
                  if (this.hiddenTextarea) {
                    this.cursorOffsetCache = {}, this.text = this.hiddenTextarea.value, this._shouldClearDimensionCache() && (this.initDimensions(), this.setCoords());
                    var e = this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart, this.hiddenTextarea.selectionEnd, this.hiddenTextarea.value);
                    this.selectionEnd = this.selectionStart = e.selectionEnd, this.inCompositionMode || (this.selectionStart = e.selectionStart), this.updateTextareaPosition()
                  }
                },
                updateTextareaPosition: function() {
                  if (this.selectionStart === this.selectionEnd) {
                    var e = this._calcTextareaPosition();
                    this.hiddenTextarea.style.left = e.left, this.hiddenTextarea.style.top = e.top
                  }
                },
                _calcTextareaPosition: function() {
                  if (!this.canvas) return {
                    x: 1,
                    y: 1
                  };
                  var e = this.inCompositionMode ? this.compositionStart : this.selectionStart,
                    t = this._getCursorBoundaries(e),
                    n = this.get2DCursorLocation(e),
                    r = n.lineIndex,
                    i = n.charIndex,
                    o = this.getValueOfPropertyAt(r, i, "fontSize") * this.lineHeight,
                    a = t.leftOffset,
                    s = this.calcTransformMatrix(),
                    l = {
                      x: t.left + a,
                      y: t.top + t.topOffset + o
                    },
                    c = this.canvas.getRetinaScaling(),
                    u = this.canvas.upperCanvasEl,
                    h = u.width / c,
                    p = u.height / c,
                    d = h - o,
                    f = p - o,
                    g = u.clientWidth / h,
                    m = u.clientHeight / p;
                  return l = v.util.transformPoint(l, s), (l = v.util.transformPoint(l, this.canvas.viewportTransform)).x *= g, l.y *= m, l.x < 0 && (l.x = 0), l.x > d && (l.x = d), l.y < 0 && (l.y = 0), l.y > f && (l.y = f), l.x += this
                    .canvas._offset.left, l.y += this.canvas._offset.top, {
                      left: l.x + "px",
                      top: l.y + "px",
                      fontSize: o + "px",
                      charHeight: o
                    }
                },
                _saveEditingProps: function() {
                  this._savedProps = {
                    hasControls: this.hasControls,
                    borderColor: this.borderColor,
                    lockMovementX: this.lockMovementX,
                    lockMovementY: this.lockMovementY,
                    hoverCursor: this.hoverCursor,
                    selectable: this.selectable,
                    defaultCursor: this.canvas && this.canvas.defaultCursor,
                    moveCursor: this.canvas && this.canvas.moveCursor
                  }
                },
                _restoreEditingProps: function() {
                  this._savedProps && (this.hoverCursor = this._savedProps.hoverCursor, this.hasControls = this._savedProps.hasControls, this.borderColor = this._savedProps.borderColor, this.selectable = this._savedProps.selectable, this
                    .lockMovementX = this._savedProps.lockMovementX, this.lockMovementY = this._savedProps.lockMovementY, this.canvas && (this.canvas.defaultCursor = this._savedProps.defaultCursor, this.canvas.moveCursor = this._savedProps
                      .moveCursor))
                },
                exitEditing: function() {
                  var e = this._textBeforeEdit !== this.text,
                    t = this.hiddenTextarea;
                  return this.selected = !1, this.isEditing = !1, this.selectionEnd = this.selectionStart, t && (t.blur && t.blur(), t.parentNode && t.parentNode.removeChild(t)), this.hiddenTextarea = null, this.abortCursorAnimation(), this
                    ._restoreEditingProps(), this._currentCursorOpacity = 0, this._shouldClearDimensionCache() && (this.initDimensions(), this.setCoords()), this.fire("editing:exited"), e && this.fire("modified"), this.canvas && (this.canvas
                      .off("mouse:move", this.mouseMoveHandler), this.canvas.fire("text:editing:exited", {
                        target: this
                      }), e && this.canvas.fire("object:modified", {
                        target: this
                      })), this
                },
                _removeExtraneousStyles: function() {
                  for (var e in this.styles) this._textLines[e] || delete this.styles[e]
                },
                removeStyleFromTo: function(e, t) {
                  var n, r, i = this.get2DCursorLocation(e, !0),
                    o = this.get2DCursorLocation(t, !0),
                    a = i.lineIndex,
                    s = i.charIndex,
                    l = o.lineIndex,
                    c = o.charIndex;
                  if (a !== l) {
                    if (this.styles[a])
                      for (n = s; n < this._unwrappedTextLines[a].length; n++) delete this.styles[a][n];
                    if (this.styles[l])
                      for (n = c; n < this._unwrappedTextLines[l].length; n++)(r = this.styles[l][n]) && (this.styles[a] || (this.styles[a] = {}), this.styles[a][s + n - c] = r);
                    for (n = a + 1; n <= l; n++) delete this.styles[n];
                    this.shiftLineStyles(l, a - l)
                  } else if (this.styles[a]) {
                    r = this.styles[a];
                    var u, h, p = c - s;
                    for (n = s; n < c; n++) delete r[n];
                    for (h in this.styles[a])(u = parseInt(h, 10)) >= c && (r[u - p] = r[h], delete r[h])
                  }
                },
                shiftLineStyles: function(e, t) {
                  var n = m(this.styles);
                  for (var r in this.styles) {
                    var i = parseInt(r, 10);
                    i > e && (this.styles[i + t] = n[i], n[i - t] || delete this.styles[i])
                  }
                },
                restartCursorIfNeeded: function() {
                  this._currentTickState && !this._currentTickState.isAborted && this._currentTickCompleteState && !this._currentTickCompleteState.isAborted || this.initDelayedCursor()
                },
                insertNewlineStyleObject: function(e, t, n, r) {
                  var i, o = {},
                    a = !1,
                    s = this._unwrappedTextLines[e].length === t;
                  for (var l in n || (n = 1), this.shiftLineStyles(e, n), this.styles[e] && (i = this.styles[e][0 === t ? t : t - 1]), this.styles[e]) {
                    var c = parseInt(l, 10);
                    c >= t && (a = !0, o[c - t] = this.styles[e][l], s && 0 === t || delete this.styles[e][l])
                  }
                  var u = !1;
                  for (a && !s && (this.styles[e + n] = o, u = !0), u && n--; n > 0;) r && r[n - 1] ? this.styles[e + n] = {
                    0: m(r[n - 1])
                  } : i ? this.styles[e + n] = {
                    0: m(i)
                  } : delete this.styles[e + n], n--;
                  this._forceClearCache = !0
                },
                insertCharStyleObject: function(e, t, n, r) {
                  this.styles || (this.styles = {});
                  var i = this.styles[e],
                    o = i ? m(i) : {};
                  for (var a in n || (n = 1), o) {
                    var s = parseInt(a, 10);
                    s >= t && (i[s + n] = o[s], o[s - n] || delete i[s])
                  }
                  if (this._forceClearCache = !0, r)
                    for (; n--;) Object.keys(r[n]).length && (this.styles[e] || (this.styles[e] = {}), this.styles[e][t + n] = m(r[n]));
                  else if (i)
                    for (var l = i[t ? t - 1 : 1]; l && n--;) this.styles[e][t + n] = m(l)
                },
                insertNewStyleBlock: function(e, t, n) {
                  for (var r = this.get2DCursorLocation(t, !0), i = [0], o = 0, a = 0; a < e.length; a++) "\n" === e[a] ? i[++o] = 0 : i[o]++;
                  for (i[0] > 0 && (this.insertCharStyleObject(r.lineIndex, r.charIndex, i[0], n), n = n && n.slice(i[0] + 1)), o && this.insertNewlineStyleObject(r.lineIndex, r.charIndex + i[0], o), a = 1; a < o; a++) i[a] > 0 ? this
                    .insertCharStyleObject(r.lineIndex + a, 0, i[a], n) : n && this.styles[r.lineIndex + a] && n[0] && (this.styles[r.lineIndex + a][0] = n[0]), n = n && n.slice(i[a] + 1);
                  i[a] > 0 && this.insertCharStyleObject(r.lineIndex + a, 0, i[a], n)
                },
                setSelectionStartEndWithShift: function(e, t, n) {
                  n <= e ? (t === e ? this._selectionDirection = "left" : "right" === this._selectionDirection && (this._selectionDirection = "left", this.selectionEnd = e), this.selectionStart = n) : n > e && n < t ? "right" === this
                    ._selectionDirection ? this.selectionEnd = n : this.selectionStart = n : (t === e ? this._selectionDirection = "right" : "left" === this._selectionDirection && (this._selectionDirection = "right", this.selectionStart = t),
                      this.selectionEnd = n)
                },
                setSelectionInBoundaries: function() {
                  var e = this.text.length;
                  this.selectionStart > e ? this.selectionStart = e : this.selectionStart < 0 && (this.selectionStart = 0), this.selectionEnd > e ? this.selectionEnd = e : this.selectionEnd < 0 && (this.selectionEnd = 0)
                }
              }), v.util.object.extend(v.IText.prototype, {
                initDoubleClickSimulation: function() {
                  this.__lastClickTime = +new Date, this.__lastLastClickTime = +new Date, this.__lastPointer = {}, this.on("mousedown", this.onMouseDown)
                },
                onMouseDown: function(e) {
                  if (this.canvas) {
                    this.__newClickTime = +new Date;
                    var t = e.pointer;
                    this.isTripleClick(t) && (this.fire("tripleclick", e), this._stopEvent(e.e)), this.__lastLastClickTime = this.__lastClickTime, this.__lastClickTime = this.__newClickTime, this.__lastPointer = t, this.__lastIsEditing = this
                      .isEditing, this.__lastSelected = this.selected
                  }
                },
                isTripleClick: function(e) {
                  return this.__newClickTime - this.__lastClickTime < 500 && this.__lastClickTime - this.__lastLastClickTime < 500 && this.__lastPointer.x === e.x && this.__lastPointer.y === e.y
                },
                _stopEvent: function(e) {
                  e.preventDefault && e.preventDefault(), e.stopPropagation && e.stopPropagation()
                },
                initCursorSelectionHandlers: function() {
                  this.initMousedownHandler(), this.initMouseupHandler(), this.initClicks()
                },
                doubleClickHandler: function(e) {
                  this.isEditing && this.selectWord(this.getSelectionStartFromPointer(e.e))
                },
                tripleClickHandler: function(e) {
                  this.isEditing && this.selectLine(this.getSelectionStartFromPointer(e.e))
                },
                initClicks: function() {
                  this.on("mousedblclick", this.doubleClickHandler), this.on("tripleclick", this.tripleClickHandler)
                },
                _mouseDownHandler: function(e) {
                  !this.canvas || !this.editable || e.e.button && 1 !== e.e.button || (this.__isMousedown = !0, this.selected && (this.inCompositionMode = !1, this.setCursorByClick(e.e)), this.isEditing && (this.__selectionStartOnMouseDown =
                    this.selectionStart, this.selectionStart === this.selectionEnd && this.abortCursorAnimation(), this.renderCursorOrSelection()))
                },
                _mouseDownHandlerBefore: function(e) {
                  !this.canvas || !this.editable || e.e.button && 1 !== e.e.button || (this.selected = this === this.canvas._activeObject)
                },
                initMousedownHandler: function() {
                  this.on("mousedown", this._mouseDownHandler), this.on("mousedown:before", this._mouseDownHandlerBefore)
                },
                initMouseupHandler: function() {
                  this.on("mouseup", this.mouseUpHandler)
                },
                mouseUpHandler: function(e) {
                  if (this.__isMousedown = !1, !(!this.editable || this.group || e.transform && e.transform.actionPerformed || e.e.button && 1 !== e.e.button)) {
                    if (this.canvas) {
                      var t = this.canvas._activeObject;
                      if (t && t !== this) return
                    }
                    this.__lastSelected && !this.__corner ? (this.selected = !1, this.__lastSelected = !1, this.enterEditing(e.e), this.selectionStart === this.selectionEnd ? this.initDelayedCursor(!0) : this.renderCursorOrSelection()) : this
                      .selected = !0
                  }
                },
                setCursorByClick: function(e) {
                  var t = this.getSelectionStartFromPointer(e),
                    n = this.selectionStart,
                    r = this.selectionEnd;
                  e.shiftKey ? this.setSelectionStartEndWithShift(n, r, t) : (this.selectionStart = t, this.selectionEnd = t), this.isEditing && (this._fireSelectionChanged(), this._updateTextarea())
                },
                getSelectionStartFromPointer: function(e) {
                  for (var t, n = this.getLocalPointer(e), r = 0, i = 0, o = 0, a = 0, s = 0, l = 0, c = this._textLines.length; l < c && o <= n.y; l++) o += this.getHeightOfLine(l) * this.scaleY, s = l, l > 0 && (a += this._textLines[l - 1]
                    .length + this.missingNewlineOffset(l - 1));
                  i = this._getLineLeftOffset(s) * this.scaleX, t = this._textLines[s], "rtl" === this.direction && (n.x = this.width * this.scaleX - n.x + i);
                  for (var u = 0, h = t.length; u < h && (r = i, (i += this.__charBounds[s][u].kernedWidth * this.scaleX) <= n.x); u++) a++;
                  return this._getNewSelectionStartFromOffset(n, r, i, a, h)
                },
                _getNewSelectionStartFromOffset: function(e, t, n, r, i) {
                  var o = e.x - t,
                    a = n - e.x,
                    s = r + (a > o || a < 0 ? 0 : 1);
                  return this.flipX && (s = i - s), s > this._text.length && (s = this._text.length), s
                }
              }), v.util.object.extend(v.IText.prototype, {
                initHiddenTextarea: function() {
                  this.hiddenTextarea = v.document.createElement("textarea"), this.hiddenTextarea.setAttribute("autocapitalize", "off"), this.hiddenTextarea.setAttribute("autocorrect", "off"), this.hiddenTextarea.setAttribute("autocomplete",
                    "off"), this.hiddenTextarea.setAttribute("spellcheck", "false"), this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea", ""), this.hiddenTextarea.setAttribute("wrap", "off");
                  var e = this._calcTextareaPosition();
                  this.hiddenTextarea.style.cssText = "position: absolute; top: " + e.top + "; left: " + e.left + "; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; padding-top: " + e.fontSize + ";", this
                    .hiddenTextareaContainer ? this.hiddenTextareaContainer.appendChild(this.hiddenTextarea) : v.document.body.appendChild(this.hiddenTextarea), v.util.addListener(this.hiddenTextarea, "keydown", this.onKeyDown.bind(this)), v
                    .util.addListener(this.hiddenTextarea, "keyup", this.onKeyUp.bind(this)), v.util.addListener(this.hiddenTextarea, "input", this.onInput.bind(this)), v.util.addListener(this.hiddenTextarea, "copy", this.copy.bind(this)), v
                    .util.addListener(this.hiddenTextarea, "cut", this.copy.bind(this)), v.util.addListener(this.hiddenTextarea, "paste", this.paste.bind(this)), v.util.addListener(this.hiddenTextarea, "compositionstart", this
                      .onCompositionStart.bind(this)), v.util.addListener(this.hiddenTextarea, "compositionupdate", this.onCompositionUpdate.bind(this)), v.util.addListener(this.hiddenTextarea, "compositionend", this.onCompositionEnd.bind(
                      this)), !this._clickHandlerInitialized && this.canvas && (v.util.addListener(this.canvas.upperCanvasEl, "click", this.onClick.bind(this)), this._clickHandlerInitialized = !0)
                },
                keysMap: {
                  9: "exitEditing",
                  27: "exitEditing",
                  33: "moveCursorUp",
                  34: "moveCursorDown",
                  35: "moveCursorRight",
                  36: "moveCursorLeft",
                  37: "moveCursorLeft",
                  38: "moveCursorUp",
                  39: "moveCursorRight",
                  40: "moveCursorDown"
                },
                keysMapRtl: {
                  9: "exitEditing",
                  27: "exitEditing",
                  33: "moveCursorUp",
                  34: "moveCursorDown",
                  35: "moveCursorLeft",
                  36: "moveCursorRight",
                  37: "moveCursorRight",
                  38: "moveCursorUp",
                  39: "moveCursorLeft",
                  40: "moveCursorDown"
                },
                ctrlKeysMapUp: {
                  67: "copy",
                  88: "cut"
                },
                ctrlKeysMapDown: {
                  65: "selectAll"
                },
                onClick: function() {
                  this.hiddenTextarea && this.hiddenTextarea.focus()
                },
                onKeyDown: function(e) {
                  if (this.isEditing) {
                    var t = "rtl" === this.direction ? this.keysMapRtl : this.keysMap;
                    if (e.keyCode in t) this[t[e.keyCode]](e);
                    else {
                      if (!(e.keyCode in this.ctrlKeysMapDown) || !e.ctrlKey && !e.metaKey) return;
                      this[this.ctrlKeysMapDown[e.keyCode]](e)
                    }
                    e.stopImmediatePropagation(), e.preventDefault(), e.keyCode >= 33 && e.keyCode <= 40 ? (this.inCompositionMode = !1, this.clearContextTop(), this.renderCursorOrSelection()) : this.canvas && this.canvas.requestRenderAll()
                  }
                },
                onKeyUp: function(e) {
                  !this.isEditing || this._copyDone || this.inCompositionMode ? this._copyDone = !1 : e.keyCode in this.ctrlKeysMapUp && (e.ctrlKey || e.metaKey) && (this[this.ctrlKeysMapUp[e.keyCode]](e), e.stopImmediatePropagation(), e
                    .preventDefault(), this.canvas && this.canvas.requestRenderAll())
                },
                onInput: function(e) {
                  var t = this.fromPaste;
                  if (this.fromPaste = !1, e && e.stopPropagation(), this.isEditing) {
                    var n, r, i, o, a, s = this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,
                      l = this._text.length,
                      c = s.length,
                      u = c - l,
                      h = this.selectionStart,
                      p = this.selectionEnd,
                      d = h !== p;
                    if ("" === this.hiddenTextarea.value) return this.styles = {}, this.updateFromTextArea(), this.fire("changed"), void(this.canvas && (this.canvas.fire("text:changed", {
                      target: this
                    }), this.canvas.requestRenderAll()));
                    var f = this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart, this.hiddenTextarea.selectionEnd, this.hiddenTextarea.value),
                      g = h > f.selectionStart;
                    d ? (n = this._text.slice(h, p), u += p - h) : c < l && (n = g ? this._text.slice(p + u, p) : this._text.slice(h, h - u)), r = s.slice(f.selectionEnd - u, f.selectionEnd), n && n.length && (r.length && (i = this
                      .getSelectionStyles(h, h + 1, !1), i = r.map((function() {
                        return i[0]
                      }))), d ? (o = h, a = p) : g ? (o = p - n.length, a = p) : (o = p, a = p + n.length), this.removeStyleFromTo(o, a)), r.length && (t && r.join("") === v.copiedText && !v.disableStyleCopyPaste && (i = v.copiedTextStyle),
                      this.insertNewStyleBlock(r, h, i)), this.updateFromTextArea(), this.fire("changed"), this.canvas && (this.canvas.fire("text:changed", {
                      target: this
                    }), this.canvas.requestRenderAll())
                  }
                },
                onCompositionStart: function() {
                  this.inCompositionMode = !0
                },
                onCompositionEnd: function() {
                  this.inCompositionMode = !1
                },
                onCompositionUpdate: function(e) {
                  this.compositionStart = e.target.selectionStart, this.compositionEnd = e.target.selectionEnd, this.updateTextareaPosition()
                },
                copy: function() {
                  this.selectionStart !== this.selectionEnd && (v.copiedText = this.getSelectedText(), v.disableStyleCopyPaste ? v.copiedTextStyle = null : v.copiedTextStyle = this.getSelectionStyles(this.selectionStart, this.selectionEnd, !
                    0), this._copyDone = !0)
                },
                paste: function() {
                  this.fromPaste = !0
                },
                _getClipboardData: function(e) {
                  return e && e.clipboardData || v.window.clipboardData
                },
                _getWidthBeforeCursor: function(e, t) {
                  var n, r = this._getLineLeftOffset(e);
                  return t > 0 && (r += (n = this.__charBounds[e][t - 1]).left + n.width), r
                },
                getDownCursorOffset: function(e, t) {
                  var n = this._getSelectionForOffset(e, t),
                    r = this.get2DCursorLocation(n),
                    i = r.lineIndex;
                  if (i === this._textLines.length - 1 || e.metaKey || 34 === e.keyCode) return this._text.length - n;
                  var o = r.charIndex,
                    a = this._getWidthBeforeCursor(i, o),
                    s = this._getIndexOnLine(i + 1, a);
                  return this._textLines[i].slice(o).length + s + 1 + this.missingNewlineOffset(i)
                },
                _getSelectionForOffset: function(e, t) {
                  return e.shiftKey && this.selectionStart !== this.selectionEnd && t ? this.selectionEnd : this.selectionStart
                },
                getUpCursorOffset: function(e, t) {
                  var n = this._getSelectionForOffset(e, t),
                    r = this.get2DCursorLocation(n),
                    i = r.lineIndex;
                  if (0 === i || e.metaKey || 33 === e.keyCode) return -n;
                  var o = r.charIndex,
                    a = this._getWidthBeforeCursor(i, o),
                    s = this._getIndexOnLine(i - 1, a),
                    l = this._textLines[i].slice(0, o),
                    c = this.missingNewlineOffset(i - 1);
                  return -this._textLines[i - 1].length + s - l.length + (1 - c)
                },
                _getIndexOnLine: function(e, t) {
                  for (var n, r, i = this._textLines[e], o = this._getLineLeftOffset(e), a = 0, s = 0, l = i.length; s < l; s++)
                    if ((o += n = this.__charBounds[e][s].width) > t) {
                      r = !0;
                      var c = o - n,
                        u = o,
                        h = Math.abs(c - t);
                      a = Math.abs(u - t) < h ? s : s - 1;
                      break
                    } return r || (a = i.length - 1), a
                },
                moveCursorDown: function(e) {
                  this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length || this._moveCursorUpOrDown("Down", e)
                },
                moveCursorUp: function(e) {
                  0 === this.selectionStart && 0 === this.selectionEnd || this._moveCursorUpOrDown("Up", e)
                },
                _moveCursorUpOrDown: function(e, t) {
                  var n = this["get" + e + "CursorOffset"](t, "right" === this._selectionDirection);
                  t.shiftKey ? this.moveCursorWithShift(n) : this.moveCursorWithoutShift(n), 0 !== n && (this.setSelectionInBoundaries(), this.abortCursorAnimation(), this._currentCursorOpacity = 1, this.initDelayedCursor(), this
                    ._fireSelectionChanged(), this._updateTextarea())
                },
                moveCursorWithShift: function(e) {
                  var t = "left" === this._selectionDirection ? this.selectionStart + e : this.selectionEnd + e;
                  return this.setSelectionStartEndWithShift(this.selectionStart, this.selectionEnd, t), 0 !== e
                },
                moveCursorWithoutShift: function(e) {
                  return e < 0 ? (this.selectionStart += e, this.selectionEnd = this.selectionStart) : (this.selectionEnd += e, this.selectionStart = this.selectionEnd), 0 !== e
                },
                moveCursorLeft: function(e) {
                  0 === this.selectionStart && 0 === this.selectionEnd || this._moveCursorLeftOrRight("Left", e)
                },
                _move: function(e, t, n) {
                  var r;
                  if (e.altKey) r = this["findWordBoundary" + n](this[t]);
                  else {
                    if (!e.metaKey && 35 !== e.keyCode && 36 !== e.keyCode) return this[t] += "Left" === n ? -1 : 1, !0;
                    r = this["findLineBoundary" + n](this[t])
                  }
                  if (void 0 !== r && this[t] !== r) return this[t] = r, !0
                },
                _moveLeft: function(e, t) {
                  return this._move(e, t, "Left")
                },
                _moveRight: function(e, t) {
                  return this._move(e, t, "Right")
                },
                moveCursorLeftWithoutShift: function(e) {
                  var t = !0;
                  return this._selectionDirection = "left", this.selectionEnd === this.selectionStart && 0 !== this.selectionStart && (t = this._moveLeft(e, "selectionStart")), this.selectionEnd = this.selectionStart, t
                },
                moveCursorLeftWithShift: function(e) {
                  return "right" === this._selectionDirection && this.selectionStart !== this.selectionEnd ? this._moveLeft(e, "selectionEnd") : 0 !== this.selectionStart ? (this._selectionDirection = "left", this._moveLeft(e,
                    "selectionStart")) : void 0
                },
                moveCursorRight: function(e) {
                  this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length || this._moveCursorLeftOrRight("Right", e)
                },
                _moveCursorLeftOrRight: function(e, t) {
                  var n = "moveCursor" + e + "With";
                  this._currentCursorOpacity = 1, t.shiftKey ? n += "Shift" : n += "outShift", this[n](t) && (this.abortCursorAnimation(), this.initDelayedCursor(), this._fireSelectionChanged(), this._updateTextarea())
                },
                moveCursorRightWithShift: function(e) {
                  return "left" === this._selectionDirection && this.selectionStart !== this.selectionEnd ? this._moveRight(e, "selectionStart") : this.selectionEnd !== this._text.length ? (this._selectionDirection = "right", this._moveRight(
                    e, "selectionEnd")) : void 0
                },
                moveCursorRightWithoutShift: function(e) {
                  var t = !0;
                  return this._selectionDirection = "right", this.selectionStart === this.selectionEnd ? (t = this._moveRight(e, "selectionStart"), this.selectionEnd = this.selectionStart) : this.selectionStart = this.selectionEnd, t
                },
                removeChars: function(e, t) {
                  void 0 === t && (t = e + 1), this.removeStyleFromTo(e, t), this._text.splice(e, t - e), this.text = this._text.join(""), this.set("dirty", !0), this._shouldClearDimensionCache() && (this.initDimensions(), this.setCoords()),
                    this._removeExtraneousStyles()
                },
                insertChars: function(e, t, n, r) {
                  void 0 === r && (r = n), r > n && this.removeStyleFromTo(n, r);
                  var i = v.util.string.graphemeSplit(e);
                  this.insertNewStyleBlock(i, n, t), this._text = [].concat(this._text.slice(0, n), i, this._text.slice(r)), this.text = this._text.join(""), this.set("dirty", !0), this._shouldClearDimensionCache() && (this.initDimensions(),
                    this.setCoords()), this._removeExtraneousStyles()
                }
              }),
              function() {
                var e = v.util.toFixed,
                  t = /  +/g;
                v.util.object.extend(v.Text.prototype, {
                  _toSVG: function() {
                    var e = this._getSVGLeftTopOffsets(),
                      t = this._getSVGTextAndBg(e.textTop, e.textLeft);
                    return this._wrapSVGTextAndBg(t)
                  },
                  toSVG: function(e) {
                    return this._createBaseSVGMarkup(this._toSVG(), {
                      reviver: e,
                      noStyle: !0,
                      withShadow: !0
                    })
                  },
                  _getSVGLeftTopOffsets: function() {
                    return {
                      textLeft: -this.width / 2,
                      textTop: -this.height / 2,
                      lineTop: this.getHeightOfLine(0)
                    }
                  },
                  _wrapSVGTextAndBg: function(e) {
                    var t = this.getSvgTextDecoration(this);
                    return [e.textBgRects.join(""), '\t\t<text xml:space="preserve" ', this.fontFamily ? 'font-family="' + this.fontFamily.replace(/"/g, "'") + '" ' : "", this.fontSize ? 'font-size="' + this.fontSize + '" ' : "", this
                      .fontStyle ? 'font-style="' + this.fontStyle + '" ' : "", this.fontWeight ? 'font-weight="' + this.fontWeight + '" ' : "", t ? 'text-decoration="' + t + '" ' : "", 'style="', this.getSvgStyles(!0), '"', this
                      .addPaintOrder(), " >", e.textSpans.join(""), "</text>\n"
                    ]
                  },
                  _getSVGTextAndBg: function(e, t) {
                    var n, r = [],
                      i = [],
                      o = e;
                    this._setSVGBg(i);
                    for (var a = 0, s = this._textLines.length; a < s; a++) n = this._getLineLeftOffset(a), (this.textBackgroundColor || this.styleHas("textBackgroundColor", a)) && this._setSVGTextLineBg(i, a, t + n, o), this
                      ._setSVGTextLineText(r, a, t + n, o), o += this.getHeightOfLine(a);
                    return {
                      textSpans: r,
                      textBgRects: i
                    }
                  },
                  _createTextCharSpan: function(n, r, i, o) {
                    var a = n !== n.trim() || n.match(t),
                      s = this.getSvgSpanStyles(r, a),
                      l = s ? 'style="' + s + '"' : "",
                      c = r.deltaY,
                      u = "",
                      h = v.Object.NUM_FRACTION_DIGITS;
                    return c && (u = ' dy="' + e(c, h) + '" '), ['<tspan x="', e(i, h), '" y="', e(o, h), '" ', u, l, ">", v.util.string.escapeXml(n), "</tspan>"].join("")
                  },
                  _setSVGTextLineText: function(e, t, n, r) {
                    var i, o, a, s, l, c = this.getHeightOfLine(t),
                      u = -1 !== this.textAlign.indexOf("justify"),
                      h = "",
                      p = 0,
                      d = this._textLines[t];
                    r += c * (1 - this._fontSizeFraction) / this.lineHeight;
                    for (var f = 0, g = d.length - 1; f <= g; f++) l = f === g || this.charSpacing, h += d[f], a = this.__charBounds[t][f], 0 === p ? (n += a.kernedWidth - a.width, p += a.width) : p += a.kernedWidth, u && !l && this
                      ._reSpaceAndTab.test(d[f]) && (l = !0), l || (i = i || this.getCompleteStyleDeclaration(t, f), o = this.getCompleteStyleDeclaration(t, f + 1), l = v.util.hasStyleChanged(i, o, !0)), l && (s = this._getStyleDeclaration(
                        t, f) || {}, e.push(this._createTextCharSpan(h, s, n, r)), h = "", i = o, n += p, p = 0)
                  },
                  _pushTextBgRect: function(t, n, r, i, o, a) {
                    var s = v.Object.NUM_FRACTION_DIGITS;
                    t.push("\t\t<rect ", this._getFillAttributes(n), ' x="', e(r, s), '" y="', e(i, s), '" width="', e(o, s), '" height="', e(a, s), '"></rect>\n')
                  },
                  _setSVGTextLineBg: function(e, t, n, r) {
                    for (var i, o, a = this._textLines[t], s = this.getHeightOfLine(t) / this.lineHeight, l = 0, c = 0, u = this.getValueOfPropertyAt(t, 0, "textBackgroundColor"), h = 0, p = a.length; h < p; h++) i = this.__charBounds[t][
                      h], (o = this.getValueOfPropertyAt(t, h, "textBackgroundColor")) !== u ? (u && this._pushTextBgRect(e, u, n + c, r, l, s), c = i.left, l = i.width, u = o) : l += i.kernedWidth;
                    o && this._pushTextBgRect(e, o, n + c, r, l, s)
                  },
                  _getFillAttributes: function(e) {
                    var t = e && "string" == typeof e ? new v.Color(e) : "";
                    return t && t.getSource() && 1 !== t.getAlpha() ? 'opacity="' + t.getAlpha() + '" fill="' + t.setAlpha(1).toRgb() + '"' : 'fill="' + e + '"'
                  },
                  _getSVGLineTopOffset: function(e) {
                    for (var t, n = 0, r = 0; r < e; r++) n += this.getHeightOfLine(r);
                    return t = this.getHeightOfLine(r), {
                      lineTop: n,
                      offset: (this._fontSizeMult - this._fontSizeFraction) * t / (this.lineHeight * this._fontSizeMult)
                    }
                  },
                  getSvgStyles: function(e) {
                    return v.Object.prototype.getSvgStyles.call(this, e) + " white-space: pre;"
                  }
                })
              }(),
              function(e) {
                var t = e.fabric || (e.fabric = {});
                t.Textbox = t.util.createClass(t.IText, t.Observable, {
                  type: "textbox",
                  minWidth: 20,
                  dynamicMinWidth: 2,
                  __cachedLines: null,
                  lockScalingFlip: !0,
                  noScaleCache: !1,
                  _dimensionAffectingProps: t.Text.prototype._dimensionAffectingProps.concat("width"),
                  _wordJoiners: /[ \t\r]/,
                  splitByGrapheme: !1,
                  initDimensions: function() {
                    this.__skipDimension || (this.isEditing && this.initDelayedCursor(), this.clearContextTop(), this._clearCache(), this.dynamicMinWidth = 0, this._styleMap = this._generateStyleMap(this._splitText()), this
                      .dynamicMinWidth > this.width && this._set("width", this.dynamicMinWidth), -1 !== this.textAlign.indexOf("justify") && this.enlargeSpaces(), this.height = this.calcTextHeight(), this.saveState({
                        propertySet: "_dimensionAffectingProps"
                      }))
                  },
                  _generateStyleMap: function(e) {
                    for (var t = 0, n = 0, r = 0, i = {}, o = 0; o < e.graphemeLines.length; o++) "\n" === e.graphemeText[r] && o > 0 ? (n = 0, r++, t++) : !this.splitByGrapheme && this._reSpaceAndTab.test(e.graphemeText[r]) && o > 0 && (
                      n++, r++), i[o] = {
                      line: t,
                      offset: n
                    }, r += e.graphemeLines[o].length, n += e.graphemeLines[o].length;
                    return i
                  },
                  styleHas: function(e, n) {
                    if (this._styleMap && !this.isWrapping) {
                      var r = this._styleMap[n];
                      r && (n = r.line)
                    }
                    return t.Text.prototype.styleHas.call(this, e, n)
                  },
                  isEmptyStyles: function(e) {
                    if (!this.styles) return !0;
                    var t, n, r = 0,
                      i = !1,
                      o = this._styleMap[e],
                      a = this._styleMap[e + 1];
                    for (var s in o && (e = o.line, r = o.offset), a && (i = a.line === e, t = a.offset), n = void 0 === e ? this.styles : {
                        line: this.styles[e]
                      })
                      for (var l in n[s])
                        if (l >= r && (!i || l < t))
                          for (var c in n[s][l]) return !1;
                    return !0
                  },
                  _getStyleDeclaration: function(e, t) {
                    if (this._styleMap && !this.isWrapping) {
                      var n = this._styleMap[e];
                      if (!n) return null;
                      e = n.line, t = n.offset + t
                    }
                    return this.callSuper("_getStyleDeclaration", e, t)
                  },
                  _setStyleDeclaration: function(e, t, n) {
                    var r = this._styleMap[e];
                    e = r.line, t = r.offset + t, this.styles[e][t] = n
                  },
                  _deleteStyleDeclaration: function(e, t) {
                    var n = this._styleMap[e];
                    e = n.line, t = n.offset + t, delete this.styles[e][t]
                  },
                  _getLineStyle: function(e) {
                    var t = this._styleMap[e];
                    return !!this.styles[t.line]
                  },
                  _setLineStyle: function(e) {
                    var t = this._styleMap[e];
                    this.styles[t.line] = {}
                  },
                  _wrapText: function(e, t) {
                    var n, r = [];
                    for (this.isWrapping = !0, n = 0; n < e.length; n++) r = r.concat(this._wrapLine(e[n], n, t));
                    return this.isWrapping = !1, r
                  },
                  _measureWord: function(e, t, n) {
                    var r, i = 0;
                    n = n || 0;
                    for (var o = 0, a = e.length; o < a; o++) {
                      i += this._getGraphemeBox(e[o], t, o + n, r, true).kernedWidth, r = e[o]
                    }
                    return i
                  },
                  _wrapLine: function(e, n, r, i) {
                    var o = 0,
                      a = this.splitByGrapheme,
                      s = [],
                      l = [],
                      c = a ? t.util.string.graphemeSplit(e) : e.split(this._wordJoiners),
                      u = "",
                      h = 0,
                      p = a ? "" : " ",
                      d = 0,
                      f = 0,
                      g = 0,
                      m = !0,
                      v = this._getWidthOfCharSpacing();
                    i = i || 0;
                    0 === c.length && c.push([]), r -= i;
                    for (var _ = 0; _ < c.length; _++) u = a ? c[_] : t.util.string.graphemeSplit(c[_]), d = this._measureWord(u, n, h), h += u.length, (o += f + d - v) > r && !m ? (s.push(l), l = [], o = d, m = !0) : o += v, m || a || l
                      .push(p), l = l.concat(u), f = a ? 0 : this._measureWord([p], n, h), h++, m = !1, d > g && (g = d);
                    return _ && s.push(l), g + i > this.dynamicMinWidth && (this.dynamicMinWidth = g - v + i), s
                  },
                  isEndOfWrapping: function(e) {
                    return !this._styleMap[e + 1] || this._styleMap[e + 1].line !== this._styleMap[e].line
                  },
                  missingNewlineOffset: function(e) {
                    return this.splitByGrapheme ? this.isEndOfWrapping(e) ? 1 : 0 : 1
                  },
                  _splitTextIntoLines: function(e) {
                    for (var n = t.Text.prototype._splitTextIntoLines.call(this, e), r = this._wrapText(n.lines, this.width), i = new Array(r.length), o = 0; o < r.length; o++) i[o] = r[o].join("");
                    return n.lines = i, n.graphemeLines = r, n
                  },
                  getMinWidth: function() {
                    return Math.max(this.minWidth, this.dynamicMinWidth)
                  },
                  _removeExtraneousStyles: function() {
                    var e = {};
                    for (var t in this._styleMap) this._textLines[t] && (e[this._styleMap[t].line] = 1);
                    for (var t in this.styles) e[t] || delete this.styles[t]
                  },
                  toObject: function(e) {
                    return this.callSuper("toObject", ["minWidth", "splitByGrapheme"].concat(e))
                  }
                }), t.Textbox.fromObject = function(e, n) {
                  var r = t.util.stylesFromArray(e.styles, e.text),
                    i = Object.assign({}, e, {
                      styles: r
                    });
                  return t.Object._fromObject("Textbox", i, n, "text")
                }
              }(e),
              function() {
                var e = v.controlsUtils,
                  t = e.scaleSkewCursorStyleHandler,
                  n = e.scaleCursorStyleHandler,
                  r = e.scalingEqually,
                  i = e.scalingYOrSkewingX,
                  o = e.scalingXOrSkewingY,
                  a = e.scaleOrSkewActionName,
                  s = v.Object.prototype.controls;
                if (s.ml = new v.Control({
                    x: -.5,
                    y: 0,
                    cursorStyleHandler: t,
                    actionHandler: o,
                    getActionName: a
                  }), s.mr = new v.Control({
                    x: .5,
                    y: 0,
                    cursorStyleHandler: t,
                    actionHandler: o,
                    getActionName: a
                  }), s.mb = new v.Control({
                    x: 0,
                    y: .5,
                    cursorStyleHandler: t,
                    actionHandler: i,
                    getActionName: a
                  }), s.mt = new v.Control({
                    x: 0,
                    y: -.5,
                    cursorStyleHandler: t,
                    actionHandler: i,
                    getActionName: a
                  }), s.tl = new v.Control({
                    x: -.5,
                    y: -.5,
                    cursorStyleHandler: n,
                    actionHandler: r
                  }), s.tr = new v.Control({
                    x: .5,
                    y: -.5,
                    cursorStyleHandler: n,
                    actionHandler: r
                  }), s.bl = new v.Control({
                    x: -.5,
                    y: .5,
                    cursorStyleHandler: n,
                    actionHandler: r
                  }), s.br = new v.Control({
                    x: .5,
                    y: .5,
                    cursorStyleHandler: n,
                    actionHandler: r
                  }), s.mtr = new v.Control({
                    x: 0,
                    y: -.5,
                    actionHandler: e.rotationWithSnapping,
                    cursorStyleHandler: e.rotationStyleHandler,
                    offsetY: -40,
                    withConnection: !0,
                    actionName: "rotate"
                  }), v.Textbox) {
                  var l = v.Textbox.prototype.controls = {};
                  l.mtr = s.mtr, l.tr = s.tr, l.br = s.br, l.tl = s.tl, l.bl = s.bl, l.mt = s.mt, l.mb = s.mb, l.mr = new v.Control({
                    x: .5,
                    y: 0,
                    actionHandler: e.changeWidth,
                    cursorStyleHandler: t,
                    actionName: "resizing"
                  }), l.ml = new v.Control({
                    x: -.5,
                    y: 0,
                    actionHandler: e.changeWidth,
                    cursorStyleHandler: t,
                    actionName: "resizing"
                  })
                }
              }()
          }(X);
          var Z = $((function(e, t) {
              var n = q(e),
                r = q(t),
                i = Y(e) + Y(t),
                o = n * r;
              return K(o), o / Math.pow(10, i)
            })),
            J = $((function(e, t) {
              var n = Math.pow(10, Math.max(Y(e), Y(t)));
              return (Z(e, n) + Z(t, n)) / n
            })),
            Q = $((function(e, t) {
              var n = Math.pow(10, Math.max(Y(e), Y(t)));
              return (Z(e, n) - Z(t, n)) / n
            })),
            ee = $((function(e, t) {
              var n = q(e),
                r = q(t);
              return K(n), K(r), Z(n / r, G(Math.pow(10, Y(t) - Y(e))))
            }));
          var te = !0;
          var ne = {
              strip: G,
              plus: J,
              minus: Q,
              times: Z,
              divide: ee,
              round: function(e, t) {
                var n = Math.pow(10, t),
                  r = ee(Math.round(Math.abs(Z(e, n))), n);
                return e < 0 && 0 !== r && (r = Z(r, -1)), r
              },
              digitLength: Y,
              float2Fixed: q,
              enableBoundaryChecking: function(e) {
                void 0 === e && (e = !0), te = e
              }
            },
            re = {
              exports: {}
            };
          ! function(e, t) {
            (function() {
              var n, r = "Expected a function",
                i = "__lodash_hash_undefined__",
                o = "__lodash_placeholder__",
                a = 16,
                s = 32,
                l = 64,
                c = 128,
                u = 256,
                h = 1 / 0,
                p = 9007199254740991,
                d = NaN,
                f = 4294967295,
                g = [
                  ["ary", c],
                  ["bind", 1],
                  ["bindKey", 2],
                  ["curry", 8],
                  ["curryRight", a],
                  ["flip", 512],
                  ["partial", s],
                  ["partialRight", l],
                  ["rearg", u]
                ],
                m = "[object Arguments]",
                v = "[object Array]",
                _ = "[object Boolean]",
                b = "[object Date]",
                y = "[object Error]",
                w = "[object Function]",
                x = "[object GeneratorFunction]",
                k = "[object Map]",
                C = "[object Number]",
                S = "[object Object]",
                E = "[object Promise]",
                T = "[object RegExp]",
                O = "[object Set]",
                A = "[object String]",
                P = "[object Symbol]",
                M = "[object WeakMap]",
                D = "[object ArrayBuffer]",
                I = "[object DataView]",
                N = "[object Float32Array]",
                R = "[object Float64Array]",
                j = "[object Int8Array]",
                L = "[object Int16Array]",
                F = "[object Int32Array]",
                B = "[object Uint8Array]",
                z = "[object Uint8ClampedArray]",
                H = "[object Uint16Array]",
                U = "[object Uint32Array]",
                V = /\b__p \+= '';/g,
                X = /\b(__p \+=) '' \+/g,
                G = /(__e\(.*?\)|\b__t\)) \+\n'';/g,
                Y = /&(?:amp|lt|gt|quot|#39);/g,
                q = /[&<>"']/g,
                K = RegExp(Y.source),
                $ = RegExp(q.source),
                Z = /<%-([\s\S]+?)%>/g,
                J = /<%([\s\S]+?)%>/g,
                Q = /<%=([\s\S]+?)%>/g,
                ee = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
                te = /^\w*$/,
                ne = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
                re = /[\\^$.*+?()[\]{}|]/g,
                ie = RegExp(re.source),
                oe = /^\s+/,
                ae = /\s/,
                se = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
                le = /\{\n\/\* \[wrapped with (.+)\] \*/,
                ce = /,? & /,
                ue = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,
                he = /[()=,{}\[\]\/\s]/,
                pe = /\\(\\)?/g,
                de = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,
                fe = /\w*$/,
                ge = /^[-+]0x[0-9a-f]+$/i,
                me = /^0b[01]+$/i,
                ve = /^\[object .+?Constructor\]$/,
                _e = /^0o[0-7]+$/i,
                be = /^(?:0|[1-9]\d*)$/,
                ye = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,
                we = /($^)/,
                xe = /['\n\r\u2028\u2029\\]/g,
                ke = "\\ud800-\\udfff",
                Ce = "\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",
                Se = "\\u2700-\\u27bf",
                Ee = "a-z\\xdf-\\xf6\\xf8-\\xff",
                Te = "A-Z\\xc0-\\xd6\\xd8-\\xde",
                Oe = "\\ufe0e\\ufe0f",
                Ae =
                "\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",
                Pe = "['’]",
                Me = "[" + ke + "]",
                De = "[" + Ae + "]",
                Ie = "[" + Ce + "]",
                Ne = "\\d+",
                Re = "[" + Se + "]",
                je = "[" + Ee + "]",
                Le = "[^" + ke + Ae + Ne + Se + Ee + Te + "]",
                Fe = "\\ud83c[\\udffb-\\udfff]",
                Be = "[^" + ke + "]",
                ze = "(?:\\ud83c[\\udde6-\\uddff]){2}",
                He = "[\\ud800-\\udbff][\\udc00-\\udfff]",
                Ue = "[" + Te + "]",
                We = "\\u200d",
                Ve = "(?:" + je + "|" + Le + ")",
                Xe = "(?:" + Ue + "|" + Le + ")",
                Ge = "(?:['’](?:d|ll|m|re|s|t|ve))?",
                Ye = "(?:['’](?:D|LL|M|RE|S|T|VE))?",
                qe = "(?:" + Ie + "|" + Fe + ")" + "?",
                Ke = "[" + Oe + "]?",
                $e = Ke + qe + ("(?:" + We + "(?:" + [Be, ze, He].join("|") + ")" + Ke + qe + ")*"),
                Ze = "(?:" + [Re, ze, He].join("|") + ")" + $e,
                Je = "(?:" + [Be + Ie + "?", Ie, ze, He, Me].join("|") + ")",
                Qe = RegExp(Pe, "g"),
                et = RegExp(Ie, "g"),
                tt = RegExp(Fe + "(?=" + Fe + ")|" + Je + $e, "g"),
                nt = RegExp([Ue + "?" + je + "+" + Ge + "(?=" + [De, Ue, "$"].join("|") + ")", Xe + "+" + Ye + "(?=" + [De, Ue + Ve, "$"].join("|") + ")", Ue + "?" + Ve + "+" + Ge, Ue + "+" + Ye,
                  "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", Ne, Ze
                ].join("|"), "g"),
                rt = RegExp("[" + We + ke + Ce + Oe + "]"),
                it = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,
                ot = ["Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError",
                  "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout"
                ],
                at = -1,
                st = {};
              st[N] = st[R] = st[j] = st[L] = st[F] = st[B] = st[z] = st[H] = st[U] = !0, st[m] = st[v] = st[D] = st[_] = st[I] = st[b] = st[y] = st[w] = st[k] = st[C] = st[S] = st[T] = st[O] = st[A] = st[M] = !1;
              var lt = {};
              lt[m] = lt[v] = lt[D] = lt[I] = lt[_] = lt[b] = lt[N] = lt[R] = lt[j] = lt[L] = lt[F] = lt[k] = lt[C] = lt[S] = lt[T] = lt[O] = lt[A] = lt[P] = lt[B] = lt[z] = lt[H] = lt[U] = !0, lt[y] = lt[w] = lt[M] = !1;
              var ct = {
                  "\\": "\\",
                  "'": "'",
                  "\n": "n",
                  "\r": "r",
                  "\u2028": "u2028",
                  "\u2029": "u2029"
                },
                ut = parseFloat,
                ht = parseInt,
                pt = "object" == typeof W && W && W.Object === Object && W,
                dt = "object" == typeof self && self && self.Object === Object && self,
                ft = pt || dt || Function("return this")(),
                gt = t && !t.nodeType && t,
                mt = gt && e && !e.nodeType && e,
                vt = mt && mt.exports === gt,
                _t = vt && pt.process,
                bt = function() {
                  try {
                    var e = mt && mt.require && mt.require("util").types;
                    return e || _t && _t.binding && _t.binding("util")
                  } catch (e) {}
                }(),
                yt = bt && bt.isArrayBuffer,
                wt = bt && bt.isDate,
                xt = bt && bt.isMap,
                kt = bt && bt.isRegExp,
                Ct = bt && bt.isSet,
                St = bt && bt.isTypedArray;

              function Et(e, t, n) {
                switch (n.length) {
                  case 0:
                    return e.call(t);
                  case 1:
                    return e.call(t, n[0]);
                  case 2:
                    return e.call(t, n[0], n[1]);
                  case 3:
                    return e.call(t, n[0], n[1], n[2])
                }
                return e.apply(t, n)
              }

              function Tt(e, t, n, r) {
                for (var i = -1, o = null == e ? 0 : e.length; ++i < o;) {
                  var a = e[i];
                  t(r, a, n(a), e)
                }
                return r
              }

              function Ot(e, t) {
                for (var n = -1, r = null == e ? 0 : e.length; ++n < r && !1 !== t(e[n], n, e););
                return e
              }

              function At(e, t) {
                for (var n = null == e ? 0 : e.length; n-- && !1 !== t(e[n], n, e););
                return e
              }

              function Pt(e, t) {
                for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
                  if (!t(e[n], n, e)) return !1;
                return !0
              }

              function Mt(e, t) {
                for (var n = -1, r = null == e ? 0 : e.length, i = 0, o = []; ++n < r;) {
                  var a = e[n];
                  t(a, n, e) && (o[i++] = a)
                }
                return o
              }

              function Dt(e, t) {
                return !!(null == e ? 0 : e.length) && Ut(e, t, 0) > -1
              }

              function It(e, t, n) {
                for (var r = -1, i = null == e ? 0 : e.length; ++r < i;)
                  if (n(t, e[r])) return !0;
                return !1
              }

              function Nt(e, t) {
                for (var n = -1, r = null == e ? 0 : e.length, i = Array(r); ++n < r;) i[n] = t(e[n], n, e);
                return i
              }

              function Rt(e, t) {
                for (var n = -1, r = t.length, i = e.length; ++n < r;) e[i + n] = t[n];
                return e
              }

              function jt(e, t, n, r) {
                var i = -1,
                  o = null == e ? 0 : e.length;
                for (r && o && (n = e[++i]); ++i < o;) n = t(n, e[i], i, e);
                return n
              }

              function Lt(e, t, n, r) {
                var i = null == e ? 0 : e.length;
                for (r && i && (n = e[--i]); i--;) n = t(n, e[i], i, e);
                return n
              }

              function Ft(e, t) {
                for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
                  if (t(e[n], n, e)) return !0;
                return !1
              }
              var Bt = Gt("length");

              function zt(e, t, n) {
                var r;
                return n(e, (function(e, n, i) {
                  if (t(e, n, i)) return r = n, !1
                })), r
              }

              function Ht(e, t, n, r) {
                for (var i = e.length, o = n + (r ? 1 : -1); r ? o-- : ++o < i;)
                  if (t(e[o], o, e)) return o;
                return -1
              }

              function Ut(e, t, n) {
                return t == t ? function(e, t, n) {
                  var r = n - 1,
                    i = e.length;
                  for (; ++r < i;)
                    if (e[r] === t) return r;
                  return -1
                }(e, t, n) : Ht(e, Vt, n)
              }

              function Wt(e, t, n, r) {
                for (var i = n - 1, o = e.length; ++i < o;)
                  if (r(e[i], t)) return i;
                return -1
              }

              function Vt(e) {
                return e != e
              }

              function Xt(e, t) {
                var n = null == e ? 0 : e.length;
                return n ? Kt(e, t) / n : d
              }

              function Gt(e) {
                return function(t) {
                  return null == t ? n : t[e]
                }
              }

              function Yt(e) {
                return function(t) {
                  return null == e ? n : e[t]
                }
              }

              function qt(e, t, n, r, i) {
                return i(e, (function(e, i, o) {
                  n = r ? (r = !1, e) : t(n, e, i, o)
                })), n
              }

              function Kt(e, t) {
                for (var r, i = -1, o = e.length; ++i < o;) {
                  var a = t(e[i]);
                  a !== n && (r = r === n ? a : r + a)
                }
                return r
              }

              function $t(e, t) {
                for (var n = -1, r = Array(e); ++n < e;) r[n] = t(n);
                return r
              }

              function Zt(e) {
                return e ? e.slice(0, gn(e) + 1).replace(oe, "") : e
              }

              function Jt(e) {
                return function(t) {
                  return e(t)
                }
              }

              function Qt(e, t) {
                return Nt(t, (function(t) {
                  return e[t]
                }))
              }

              function en(e, t) {
                return e.has(t)
              }

              function tn(e, t) {
                for (var n = -1, r = e.length; ++n < r && Ut(t, e[n], 0) > -1;);
                return n
              }

              function nn(e, t) {
                for (var n = e.length; n-- && Ut(t, e[n], 0) > -1;);
                return n
              }
              var rn = Yt({
                  "À": "A",
                  "Á": "A",
                  "Â": "A",
                  "Ã": "A",
                  "Ä": "A",
                  "Å": "A",
                  "à": "a",
                  "á": "a",
                  "â": "a",
                  "ã": "a",
                  "ä": "a",
                  "å": "a",
                  "Ç": "C",
                  "ç": "c",
                  "Ð": "D",
                  "ð": "d",
                  "È": "E",
                  "É": "E",
                  "Ê": "E",
                  "Ë": "E",
                  "è": "e",
                  "é": "e",
                  "ê": "e",
                  "ë": "e",
                  "Ì": "I",
                  "Í": "I",
                  "Î": "I",
                  "Ï": "I",
                  "ì": "i",
                  "í": "i",
                  "î": "i",
                  "ï": "i",
                  "Ñ": "N",
                  "ñ": "n",
                  "Ò": "O",
                  "Ó": "O",
                  "Ô": "O",
                  "Õ": "O",
                  "Ö": "O",
                  "Ø": "O",
                  "ò": "o",
                  "ó": "o",
                  "ô": "o",
                  "õ": "o",
                  "ö": "o",
                  "ø": "o",
                  "Ù": "U",
                  "Ú": "U",
                  "Û": "U",
                  "Ü": "U",
                  "ù": "u",
                  "ú": "u",
                  "û": "u",
                  "ü": "u",
                  "Ý": "Y",
                  "ý": "y",
                  "ÿ": "y",
                  "Æ": "Ae",
                  "æ": "ae",
                  "Þ": "Th",
                  "þ": "th",
                  "ß": "ss",
                  "Ā": "A",
                  "Ă": "A",
                  "Ą": "A",
                  "ā": "a",
                  "ă": "a",
                  "ą": "a",
                  "Ć": "C",
                  "Ĉ": "C",
                  "Ċ": "C",
                  "Č": "C",
                  "ć": "c",
                  "ĉ": "c",
                  "ċ": "c",
                  "č": "c",
                  "Ď": "D",
                  "Đ": "D",
                  "ď": "d",
                  "đ": "d",
                  "Ē": "E",
                  "Ĕ": "E",
                  "Ė": "E",
                  "Ę": "E",
                  "Ě": "E",
                  "ē": "e",
                  "ĕ": "e",
                  "ė": "e",
                  "ę": "e",
                  "ě": "e",
                  "Ĝ": "G",
                  "Ğ": "G",
                  "Ġ": "G",
                  "Ģ": "G",
                  "ĝ": "g",
                  "ğ": "g",
                  "ġ": "g",
                  "ģ": "g",
                  "Ĥ": "H",
                  "Ħ": "H",
                  "ĥ": "h",
                  "ħ": "h",
                  "Ĩ": "I",
                  "Ī": "I",
                  "Ĭ": "I",
                  "Į": "I",
                  "İ": "I",
                  "ĩ": "i",
                  "ī": "i",
                  "ĭ": "i",
                  "į": "i",
                  "ı": "i",
                  "Ĵ": "J",
                  "ĵ": "j",
                  "Ķ": "K",
                  "ķ": "k",
                  "ĸ": "k",
                  "Ĺ": "L",
                  "Ļ": "L",
                  "Ľ": "L",
                  "Ŀ": "L",
                  "Ł": "L",
                  "ĺ": "l",
                  "ļ": "l",
                  "ľ": "l",
                  "ŀ": "l",
                  "ł": "l",
                  "Ń": "N",
                  "Ņ": "N",
                  "Ň": "N",
                  "Ŋ": "N",
                  "ń": "n",
                  "ņ": "n",
                  "ň": "n",
                  "ŋ": "n",
                  "Ō": "O",
                  "Ŏ": "O",
                  "Ő": "O",
                  "ō": "o",
                  "ŏ": "o",
                  "ő": "o",
                  "Ŕ": "R",
                  "Ŗ": "R",
                  "Ř": "R",
                  "ŕ": "r",
                  "ŗ": "r",
                  "ř": "r",
                  "Ś": "S",
                  "Ŝ": "S",
                  "Ş": "S",
                  "Š": "S",
                  "ś": "s",
                  "ŝ": "s",
                  "ş": "s",
                  "š": "s",
                  "Ţ": "T",
                  "Ť": "T",
                  "Ŧ": "T",
                  "ţ": "t",
                  "ť": "t",
                  "ŧ": "t",
                  "Ũ": "U",
                  "Ū": "U",
                  "Ŭ": "U",
                  "Ů": "U",
                  "Ű": "U",
                  "Ų": "U",
                  "ũ": "u",
                  "ū": "u",
                  "ŭ": "u",
                  "ů": "u",
                  "ű": "u",
                  "ų": "u",
                  "Ŵ": "W",
                  "ŵ": "w",
                  "Ŷ": "Y",
                  "ŷ": "y",
                  "Ÿ": "Y",
                  "Ź": "Z",
                  "Ż": "Z",
                  "Ž": "Z",
                  "ź": "z",
                  "ż": "z",
                  "ž": "z",
                  "IJ": "IJ",
                  "ij": "ij",
                  "Œ": "Oe",
                  "œ": "oe",
                  "ʼn": "'n",
                  "ſ": "s"
                }),
                on = Yt({
                  "&": "&amp;",
                  "<": "&lt;",
                  ">": "&gt;",
                  '"': "&quot;",
                  "'": "&#39;"
                });

              function an(e) {
                return "\\" + ct[e]
              }

              function sn(e) {
                return rt.test(e)
              }

              function ln(e) {
                var t = -1,
                  n = Array(e.size);
                return e.forEach((function(e, r) {
                  n[++t] = [r, e]
                })), n
              }

              function cn(e, t) {
                return function(n) {
                  return e(t(n))
                }
              }

              function un(e, t) {
                for (var n = -1, r = e.length, i = 0, a = []; ++n < r;) {
                  var s = e[n];
                  s !== t && s !== o || (e[n] = o, a[i++] = n)
                }
                return a
              }

              function hn(e) {
                var t = -1,
                  n = Array(e.size);
                return e.forEach((function(e) {
                  n[++t] = e
                })), n
              }

              function pn(e) {
                var t = -1,
                  n = Array(e.size);
                return e.forEach((function(e) {
                  n[++t] = [e, e]
                })), n
              }

              function dn(e) {
                return sn(e) ? function(e) {
                  var t = tt.lastIndex = 0;
                  for (; tt.test(e);) ++t;
                  return t
                }(e) : Bt(e)
              }

              function fn(e) {
                return sn(e) ? function(e) {
                  return e.match(tt) || []
                }(e) : function(e) {
                  return e.split("")
                }(e)
              }

              function gn(e) {
                for (var t = e.length; t-- && ae.test(e.charAt(t)););
                return t
              }
              var mn = Yt({
                "&amp;": "&",
                "&lt;": "<",
                "&gt;": ">",
                "&quot;": '"',
                "&#39;": "'"
              });
              var vn = function e(t) {
                var W = (t = null == t ? ft : vn.defaults(ft.Object(), t, vn.pick(ft, ot))).Array,
                  ae = t.Date,
                  ke = t.Error,
                  Ce = t.Function,
                  Se = t.Math,
                  Ee = t.Object,
                  Te = t.RegExp,
                  Oe = t.String,
                  Ae = t.TypeError,
                  Pe = W.prototype,
                  Me = Ce.prototype,
                  De = Ee.prototype,
                  Ie = t["__core-js_shared__"],
                  Ne = Me.toString,
                  Re = De.hasOwnProperty,
                  je = 0,
                  Le = function() {
                    var e = /[^.]+$/.exec(Ie && Ie.keys && Ie.keys.IE_PROTO || "");
                    return e ? "Symbol(src)_1." + e : ""
                  }(),
                  Fe = De.toString,
                  Be = Ne.call(Ee),
                  ze = ft._,
                  He = Te("^" + Ne.call(Re).replace(re, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"),
                  Ue = vt ? t.Buffer : n,
                  We = t.Symbol,
                  Ve = t.Uint8Array,
                  Xe = Ue ? Ue.allocUnsafe : n,
                  Ge = cn(Ee.getPrototypeOf, Ee),
                  Ye = Ee.create,
                  qe = De.propertyIsEnumerable,
                  Ke = Pe.splice,
                  $e = We ? We.isConcatSpreadable : n,
                  Ze = We ? We.iterator : n,
                  Je = We ? We.toStringTag : n,
                  tt = function() {
                    try {
                      var e = ho(Ee, "defineProperty");
                      return e({}, "", {}), e
                    } catch (e) {}
                  }(),
                  rt = t.clearTimeout !== ft.clearTimeout && t.clearTimeout,
                  ct = ae && ae.now !== ft.Date.now && ae.now,
                  pt = t.setTimeout !== ft.setTimeout && t.setTimeout,
                  dt = Se.ceil,
                  gt = Se.floor,
                  mt = Ee.getOwnPropertySymbols,
                  _t = Ue ? Ue.isBuffer : n,
                  bt = t.isFinite,
                  Bt = Pe.join,
                  Yt = cn(Ee.keys, Ee),
                  _n = Se.max,
                  bn = Se.min,
                  yn = ae.now,
                  wn = t.parseInt,
                  xn = Se.random,
                  kn = Pe.reverse,
                  Cn = ho(t, "DataView"),
                  Sn = ho(t, "Map"),
                  En = ho(t, "Promise"),
                  Tn = ho(t, "Set"),
                  On = ho(t, "WeakMap"),
                  An = ho(Ee, "create"),
                  Pn = On && new On,
                  Mn = {},
                  Dn = Fo(Cn),
                  In = Fo(Sn),
                  Nn = Fo(En),
                  Rn = Fo(Tn),
                  jn = Fo(On),
                  Ln = We ? We.prototype : n,
                  Fn = Ln ? Ln.valueOf : n,
                  Bn = Ln ? Ln.toString : n;

                function zn(e) {
                  if (ts(e) && !Va(e) && !(e instanceof Vn)) {
                    if (e instanceof Wn) return e;
                    if (Re.call(e, "__wrapped__")) return Bo(e)
                  }
                  return new Wn(e)
                }
                var Hn = function() {
                  function e() {}
                  return function(t) {
                    if (!es(t)) return {};
                    if (Ye) return Ye(t);
                    e.prototype = t;
                    var r = new e;
                    return e.prototype = n, r
                  }
                }();

                function Un() {}

                function Wn(e, t) {
                  this.__wrapped__ = e, this.__actions__ = [], this.__chain__ = !!t, this.__index__ = 0, this.__values__ = n
                }

                function Vn(e) {
                  this.__wrapped__ = e, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = f, this.__views__ = []
                }

                function Xn(e) {
                  var t = -1,
                    n = null == e ? 0 : e.length;
                  for (this.clear(); ++t < n;) {
                    var r = e[t];
                    this.set(r[0], r[1])
                  }
                }

                function Gn(e) {
                  var t = -1,
                    n = null == e ? 0 : e.length;
                  for (this.clear(); ++t < n;) {
                    var r = e[t];
                    this.set(r[0], r[1])
                  }
                }

                function Yn(e) {
                  var t = -1,
                    n = null == e ? 0 : e.length;
                  for (this.clear(); ++t < n;) {
                    var r = e[t];
                    this.set(r[0], r[1])
                  }
                }

                function qn(e) {
                  var t = -1,
                    n = null == e ? 0 : e.length;
                  for (this.__data__ = new Yn; ++t < n;) this.add(e[t])
                }

                function Kn(e) {
                  var t = this.__data__ = new Gn(e);
                  this.size = t.size
                }

                function $n(e, t) {
                  var n = Va(e),
                    r = !n && Wa(e),
                    i = !n && !r && qa(e),
                    o = !n && !r && !i && cs(e),
                    a = n || r || i || o,
                    s = a ? $t(e.length, Oe) : [],
                    l = s.length;
                  for (var c in e) !t && !Re.call(e, c) || a && ("length" == c || i && ("offset" == c || "parent" == c) || o && ("buffer" == c || "byteLength" == c || "byteOffset" == c) || bo(c, l)) || s.push(c);
                  return s
                }

                function Zn(e) {
                  var t = e.length;
                  return t ? e[qr(0, t - 1)] : n
                }

                function Jn(e, t) {
                  return Ro(Ai(e), sr(t, 0, e.length))
                }

                function Qn(e) {
                  return Ro(Ai(e))
                }

                function er(e, t, r) {
                  (r !== n && !za(e[t], r) || r === n && !(t in e)) && or(e, t, r)
                }

                function tr(e, t, r) {
                  var i = e[t];
                  Re.call(e, t) && za(i, r) && (r !== n || t in e) || or(e, t, r)
                }

                function nr(e, t) {
                  for (var n = e.length; n--;)
                    if (za(e[n][0], t)) return n;
                  return -1
                }

                function rr(e, t, n, r) {
                  return pr(e, (function(e, i, o) {
                    t(r, e, n(e), o)
                  })), r
                }

                function ir(e, t) {
                  return e && Pi(t, Ms(t), e)
                }

                function or(e, t, n) {
                  "__proto__" == t && tt ? tt(e, t, {
                    configurable: !0,
                    enumerable: !0,
                    value: n,
                    writable: !0
                  }) : e[t] = n
                }

                function ar(e, t) {
                  for (var r = -1, i = t.length, o = W(i), a = null == e; ++r < i;) o[r] = a ? n : Es(e, t[r]);
                  return o
                }

                function sr(e, t, r) {
                  return e == e && (r !== n && (e = e <= r ? e : r), t !== n && (e = e >= t ? e : t)), e
                }

                function lr(e, t, r, i, o, a) {
                  var s, l = 1 & t,
                    c = 2 & t,
                    u = 4 & t;
                  if (r && (s = o ? r(e, i, o, a) : r(e)), s !== n) return s;
                  if (!es(e)) return e;
                  var h = Va(e);
                  if (h) {
                    if (s = function(e) {
                        var t = e.length,
                          n = new e.constructor(t);
                        t && "string" == typeof e[0] && Re.call(e, "index") && (n.index = e.index, n.input = e.input);
                        return n
                      }(e), !l) return Ai(e, s)
                  } else {
                    var p = go(e),
                      d = p == w || p == x;
                    if (qa(e)) return ki(e, l);
                    if (p == S || p == m || d && !o) {
                      if (s = c || d ? {} : vo(e), !l) return c ? function(e, t) {
                        return Pi(e, fo(e), t)
                      }(e, function(e, t) {
                        return e && Pi(t, Ds(t), e)
                      }(s, e)) : function(e, t) {
                        return Pi(e, po(e), t)
                      }(e, ir(s, e))
                    } else {
                      if (!lt[p]) return o ? e : {};
                      s = function(e, t, n) {
                        var r = e.constructor;
                        switch (t) {
                          case D:
                            return Ci(e);
                          case _:
                          case b:
                            return new r(+e);
                          case I:
                            return function(e, t) {
                              var n = t ? Ci(e.buffer) : e.buffer;
                              return new e.constructor(n, e.byteOffset, e.byteLength)
                            }(e, n);
                          case N:
                          case R:
                          case j:
                          case L:
                          case F:
                          case B:
                          case z:
                          case H:
                          case U:
                            return Si(e, n);
                          case k:
                            return new r;
                          case C:
                          case A:
                            return new r(e);
                          case T:
                            return function(e) {
                              var t = new e.constructor(e.source, fe.exec(e));
                              return t.lastIndex = e.lastIndex, t
                            }(e);
                          case O:
                            return new r;
                          case P:
                            return i = e, Fn ? Ee(Fn.call(i)) : {}
                        }
                        var i
                      }(e, p, l)
                    }
                  }
                  a || (a = new Kn);
                  var f = a.get(e);
                  if (f) return f;
                  a.set(e, s), as(e) ? e.forEach((function(n) {
                    s.add(lr(n, t, r, n, e, a))
                  })) : ns(e) && e.forEach((function(n, i) {
                    s.set(i, lr(n, t, r, i, e, a))
                  }));
                  var g = h ? n : (u ? c ? io : ro : c ? Ds : Ms)(e);
                  return Ot(g || e, (function(n, i) {
                    g && (n = e[i = n]), tr(s, i, lr(n, t, r, i, e, a))
                  })), s
                }

                function cr(e, t, r) {
                  var i = r.length;
                  if (null == e) return !i;
                  for (e = Ee(e); i--;) {
                    var o = r[i],
                      a = t[o],
                      s = e[o];
                    if (s === n && !(o in e) || !a(s)) return !1
                  }
                  return !0
                }

                function ur(e, t, i) {
                  if ("function" != typeof e) throw new Ae(r);
                  return Mo((function() {
                    e.apply(n, i)
                  }), t)
                }

                function hr(e, t, n, r) {
                  var i = -1,
                    o = Dt,
                    a = !0,
                    s = e.length,
                    l = [],
                    c = t.length;
                  if (!s) return l;
                  n && (t = Nt(t, Jt(n))), r ? (o = It, a = !1) : t.length >= 200 && (o = en, a = !1, t = new qn(t));
                  e: for (; ++i < s;) {
                    var u = e[i],
                      h = null == n ? u : n(u);
                    if (u = r || 0 !== u ? u : 0, a && h == h) {
                      for (var p = c; p--;)
                        if (t[p] === h) continue e;
                      l.push(u)
                    } else o(t, h, r) || l.push(u)
                  }
                  return l
                }
                zn.templateSettings = {
                  escape: Z,
                  evaluate: J,
                  interpolate: Q,
                  variable: "",
                  imports: {
                    _: zn
                  }
                }, zn.prototype = Un.prototype, zn.prototype.constructor = zn, Wn.prototype = Hn(Un.prototype), Wn.prototype.constructor = Wn, Vn.prototype = Hn(Un.prototype), Vn.prototype.constructor = Vn, Xn.prototype.clear = function() {
                  this.__data__ = An ? An(null) : {}, this.size = 0
                }, Xn.prototype.delete = function(e) {
                  var t = this.has(e) && delete this.__data__[e];
                  return this.size -= t ? 1 : 0, t
                }, Xn.prototype.get = function(e) {
                  var t = this.__data__;
                  if (An) {
                    var r = t[e];
                    return r === i ? n : r
                  }
                  return Re.call(t, e) ? t[e] : n
                }, Xn.prototype.has = function(e) {
                  var t = this.__data__;
                  return An ? t[e] !== n : Re.call(t, e)
                }, Xn.prototype.set = function(e, t) {
                  var r = this.__data__;
                  return this.size += this.has(e) ? 0 : 1, r[e] = An && t === n ? i : t, this
                }, Gn.prototype.clear = function() {
                  this.__data__ = [], this.size = 0
                }, Gn.prototype.delete = function(e) {
                  var t = this.__data__,
                    n = nr(t, e);
                  return !(n < 0) && (n == t.length - 1 ? t.pop() : Ke.call(t, n, 1), --this.size, !0)
                }, Gn.prototype.get = function(e) {
                  var t = this.__data__,
                    r = nr(t, e);
                  return r < 0 ? n : t[r][1]
                }, Gn.prototype.has = function(e) {
                  return nr(this.__data__, e) > -1
                }, Gn.prototype.set = function(e, t) {
                  var n = this.__data__,
                    r = nr(n, e);
                  return r < 0 ? (++this.size, n.push([e, t])) : n[r][1] = t, this
                }, Yn.prototype.clear = function() {
                  this.size = 0, this.__data__ = {
                    hash: new Xn,
                    map: new(Sn || Gn),
                    string: new Xn
                  }
                }, Yn.prototype.delete = function(e) {
                  var t = co(this, e).delete(e);
                  return this.size -= t ? 1 : 0, t
                }, Yn.prototype.get = function(e) {
                  return co(this, e).get(e)
                }, Yn.prototype.has = function(e) {
                  return co(this, e).has(e)
                }, Yn.prototype.set = function(e, t) {
                  var n = co(this, e),
                    r = n.size;
                  return n.set(e, t), this.size += n.size == r ? 0 : 1, this
                }, qn.prototype.add = qn.prototype.push = function(e) {
                  return this.__data__.set(e, i), this
                }, qn.prototype.has = function(e) {
                  return this.__data__.has(e)
                }, Kn.prototype.clear = function() {
                  this.__data__ = new Gn, this.size = 0
                }, Kn.prototype.delete = function(e) {
                  var t = this.__data__,
                    n = t.delete(e);
                  return this.size = t.size, n
                }, Kn.prototype.get = function(e) {
                  return this.__data__.get(e)
                }, Kn.prototype.has = function(e) {
                  return this.__data__.has(e)
                }, Kn.prototype.set = function(e, t) {
                  var n = this.__data__;
                  if (n instanceof Gn) {
                    var r = n.__data__;
                    if (!Sn || r.length < 199) return r.push([e, t]), this.size = ++n.size, this;
                    n = this.__data__ = new Yn(r)
                  }
                  return n.set(e, t), this.size = n.size, this
                };
                var pr = Ii(yr),
                  dr = Ii(wr, !0);

                function fr(e, t) {
                  var n = !0;
                  return pr(e, (function(e, r, i) {
                    return n = !!t(e, r, i)
                  })), n
                }

                function gr(e, t, r) {
                  for (var i = -1, o = e.length; ++i < o;) {
                    var a = e[i],
                      s = t(a);
                    if (null != s && (l === n ? s == s && !ls(s) : r(s, l))) var l = s,
                      c = a
                  }
                  return c
                }

                function mr(e, t) {
                  var n = [];
                  return pr(e, (function(e, r, i) {
                    t(e, r, i) && n.push(e)
                  })), n
                }

                function vr(e, t, n, r, i) {
                  var o = -1,
                    a = e.length;
                  for (n || (n = _o), i || (i = []); ++o < a;) {
                    var s = e[o];
                    t > 0 && n(s) ? t > 1 ? vr(s, t - 1, n, r, i) : Rt(i, s) : r || (i[i.length] = s)
                  }
                  return i
                }
                var _r = Ni(),
                  br = Ni(!0);

                function yr(e, t) {
                  return e && _r(e, t, Ms)
                }

                function wr(e, t) {
                  return e && br(e, t, Ms)
                }

                function xr(e, t) {
                  return Mt(t, (function(t) {
                    return Za(e[t])
                  }))
                }

                function kr(e, t) {
                  for (var r = 0, i = (t = bi(t, e)).length; null != e && r < i;) e = e[Lo(t[r++])];
                  return r && r == i ? e : n
                }

                function Cr(e, t, n) {
                  var r = t(e);
                  return Va(e) ? r : Rt(r, n(e))
                }

                function Sr(e) {
                  return null == e ? e === n ? "[object Undefined]" : "[object Null]" : Je && Je in Ee(e) ? function(e) {
                    var t = Re.call(e, Je),
                      r = e[Je];
                    try {
                      e[Je] = n;
                      var i = !0
                    } catch (e) {}
                    var o = Fe.call(e);
                    i && (t ? e[Je] = r : delete e[Je]);
                    return o
                  }(e) : function(e) {
                    return Fe.call(e)
                  }(e)
                }

                function Er(e, t) {
                  return e > t
                }

                function Tr(e, t) {
                  return null != e && Re.call(e, t)
                }

                function Or(e, t) {
                  return null != e && t in Ee(e)
                }

                function Ar(e, t, r) {
                  for (var i = r ? It : Dt, o = e[0].length, a = e.length, s = a, l = W(a), c = 1 / 0, u = []; s--;) {
                    var h = e[s];
                    s && t && (h = Nt(h, Jt(t))), c = bn(h.length, c), l[s] = !r && (t || o >= 120 && h.length >= 120) ? new qn(s && h) : n
                  }
                  h = e[0];
                  var p = -1,
                    d = l[0];
                  e: for (; ++p < o && u.length < c;) {
                    var f = h[p],
                      g = t ? t(f) : f;
                    if (f = r || 0 !== f ? f : 0, !(d ? en(d, g) : i(u, g, r))) {
                      for (s = a; --s;) {
                        var m = l[s];
                        if (!(m ? en(m, g) : i(e[s], g, r))) continue e
                      }
                      d && d.push(g), u.push(f)
                    }
                  }
                  return u
                }

                function Pr(e, t, r) {
                  var i = null == (e = Oo(e, t = bi(t, e))) ? e : e[Lo($o(t))];
                  return null == i ? n : Et(i, e, r)
                }

                function Mr(e) {
                  return ts(e) && Sr(e) == m
                }

                function Dr(e, t, r, i, o) {
                  return e === t || (null == e || null == t || !ts(e) && !ts(t) ? e != e && t != t : function(e, t, r, i, o, a) {
                    var s = Va(e),
                      l = Va(t),
                      c = s ? v : go(e),
                      u = l ? v : go(t),
                      h = (c = c == m ? S : c) == S,
                      p = (u = u == m ? S : u) == S,
                      d = c == u;
                    if (d && qa(e)) {
                      if (!qa(t)) return !1;
                      s = !0, h = !1
                    }
                    if (d && !h) return a || (a = new Kn), s || cs(e) ? to(e, t, r, i, o, a) : function(e, t, n, r, i, o, a) {
                      switch (n) {
                        case I:
                          if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset) return !1;
                          e = e.buffer, t = t.buffer;
                        case D:
                          return !(e.byteLength != t.byteLength || !o(new Ve(e), new Ve(t)));
                        case _:
                        case b:
                        case C:
                          return za(+e, +t);
                        case y:
                          return e.name == t.name && e.message == t.message;
                        case T:
                        case A:
                          return e == t + "";
                        case k:
                          var s = ln;
                        case O:
                          var l = 1 & r;
                          if (s || (s = hn), e.size != t.size && !l) return !1;
                          var c = a.get(e);
                          if (c) return c == t;
                          r |= 2, a.set(e, t);
                          var u = to(s(e), s(t), r, i, o, a);
                          return a.delete(e), u;
                        case P:
                          if (Fn) return Fn.call(e) == Fn.call(t)
                      }
                      return !1
                    }(e, t, c, r, i, o, a);
                    if (!(1 & r)) {
                      var f = h && Re.call(e, "__wrapped__"),
                        g = p && Re.call(t, "__wrapped__");
                      if (f || g) {
                        var w = f ? e.value() : e,
                          x = g ? t.value() : t;
                        return a || (a = new Kn), o(w, x, r, i, a)
                      }
                    }
                    if (!d) return !1;
                    return a || (a = new Kn),
                      function(e, t, r, i, o, a) {
                        var s = 1 & r,
                          l = ro(e),
                          c = l.length,
                          u = ro(t),
                          h = u.length;
                        if (c != h && !s) return !1;
                        var p = c;
                        for (; p--;) {
                          var d = l[p];
                          if (!(s ? d in t : Re.call(t, d))) return !1
                        }
                        var f = a.get(e),
                          g = a.get(t);
                        if (f && g) return f == t && g == e;
                        var m = !0;
                        a.set(e, t), a.set(t, e);
                        var v = s;
                        for (; ++p < c;) {
                          var _ = e[d = l[p]],
                            b = t[d];
                          if (i) var y = s ? i(b, _, d, t, e, a) : i(_, b, d, e, t, a);
                          if (!(y === n ? _ === b || o(_, b, r, i, a) : y)) {
                            m = !1;
                            break
                          }
                          v || (v = "constructor" == d)
                        }
                        if (m && !v) {
                          var w = e.constructor,
                            x = t.constructor;
                          w == x || !("constructor" in e) || !("constructor" in t) || "function" == typeof w && w instanceof w && "function" == typeof x && x instanceof x || (m = !1)
                        }
                        return a.delete(e), a.delete(t), m
                      }(e, t, r, i, o, a)
                  }(e, t, r, i, Dr, o))
                }

                function Ir(e, t, r, i) {
                  var o = r.length,
                    a = o,
                    s = !i;
                  if (null == e) return !a;
                  for (e = Ee(e); o--;) {
                    var l = r[o];
                    if (s && l[2] ? l[1] !== e[l[0]] : !(l[0] in e)) return !1
                  }
                  for (; ++o < a;) {
                    var c = (l = r[o])[0],
                      u = e[c],
                      h = l[1];
                    if (s && l[2]) {
                      if (u === n && !(c in e)) return !1
                    } else {
                      var p = new Kn;
                      if (i) var d = i(u, h, c, e, t, p);
                      if (!(d === n ? Dr(h, u, 3, i, p) : d)) return !1
                    }
                  }
                  return !0
                }

                function Nr(e) {
                  return !(!es(e) || (t = e, Le && Le in t)) && (Za(e) ? He : ve).test(Fo(e));
                  var t
                }

                function Rr(e) {
                  return "function" == typeof e ? e : null == e ? rl : "object" == typeof e ? Va(e) ? Hr(e[0], e[1]) : zr(e) : pl(e)
                }

                function jr(e) {
                  if (!Co(e)) return Yt(e);
                  var t = [];
                  for (var n in Ee(e)) Re.call(e, n) && "constructor" != n && t.push(n);
                  return t
                }

                function Lr(e) {
                  if (!es(e)) return function(e) {
                    var t = [];
                    if (null != e)
                      for (var n in Ee(e)) t.push(n);
                    return t
                  }(e);
                  var t = Co(e),
                    n = [];
                  for (var r in e)("constructor" != r || !t && Re.call(e, r)) && n.push(r);
                  return n
                }

                function Fr(e, t) {
                  return e < t
                }

                function Br(e, t) {
                  var n = -1,
                    r = Ga(e) ? W(e.length) : [];
                  return pr(e, (function(e, i, o) {
                    r[++n] = t(e, i, o)
                  })), r
                }

                function zr(e) {
                  var t = uo(e);
                  return 1 == t.length && t[0][2] ? Eo(t[0][0], t[0][1]) : function(n) {
                    return n === e || Ir(n, e, t)
                  }
                }

                function Hr(e, t) {
                  return wo(e) && So(t) ? Eo(Lo(e), t) : function(r) {
                    var i = Es(r, e);
                    return i === n && i === t ? Ts(r, e) : Dr(t, i, 3)
                  }
                }

                function Ur(e, t, r, i, o) {
                  e !== t && _r(t, (function(a, s) {
                    if (o || (o = new Kn), es(a)) ! function(e, t, r, i, o, a, s) {
                      var l = Ao(e, r),
                        c = Ao(t, r),
                        u = s.get(c);
                      if (u) return void er(e, r, u);
                      var h = a ? a(l, c, r + "", e, t, s) : n,
                        p = h === n;
                      if (p) {
                        var d = Va(c),
                          f = !d && qa(c),
                          g = !d && !f && cs(c);
                        h = c, d || f || g ? Va(l) ? h = l : Ya(l) ? h = Ai(l) : f ? (p = !1, h = ki(c, !0)) : g ? (p = !1, h = Si(c, !0)) : h = [] : is(c) || Wa(c) ? (h = l, Wa(l) ? h = vs(l) : es(l) && !Za(l) || (h = vo(c))) : p = !
                          1
                      }
                      p && (s.set(c, h), o(h, c, i, a, s), s.delete(c));
                      er(e, r, h)
                    }(e, t, s, r, Ur, i, o);
                    else {
                      var l = i ? i(Ao(e, s), a, s + "", e, t, o) : n;
                      l === n && (l = a), er(e, s, l)
                    }
                  }), Ds)
                }

                function Wr(e, t) {
                  var r = e.length;
                  if (r) return bo(t += t < 0 ? r : 0, r) ? e[t] : n
                }

                function Vr(e, t, n) {
                  t = t.length ? Nt(t, (function(e) {
                    return Va(e) ? function(t) {
                      return kr(t, 1 === e.length ? e[0] : e)
                    } : e
                  })) : [rl];
                  var r = -1;
                  t = Nt(t, Jt(lo()));
                  var i = Br(e, (function(e, n, i) {
                    var o = Nt(t, (function(t) {
                      return t(e)
                    }));
                    return {
                      criteria: o,
                      index: ++r,
                      value: e
                    }
                  }));
                  return function(e, t) {
                    var n = e.length;
                    for (e.sort(t); n--;) e[n] = e[n].value;
                    return e
                  }(i, (function(e, t) {
                    return function(e, t, n) {
                      var r = -1,
                        i = e.criteria,
                        o = t.criteria,
                        a = i.length,
                        s = n.length;
                      for (; ++r < a;) {
                        var l = Ei(i[r], o[r]);
                        if (l) return r >= s ? l : l * ("desc" == n[r] ? -1 : 1)
                      }
                      return e.index - t.index
                    }(e, t, n)
                  }))
                }

                function Xr(e, t, n) {
                  for (var r = -1, i = t.length, o = {}; ++r < i;) {
                    var a = t[r],
                      s = kr(e, a);
                    n(s, a) && Qr(o, bi(a, e), s)
                  }
                  return o
                }

                function Gr(e, t, n, r) {
                  var i = r ? Wt : Ut,
                    o = -1,
                    a = t.length,
                    s = e;
                  for (e === t && (t = Ai(t)), n && (s = Nt(e, Jt(n))); ++o < a;)
                    for (var l = 0, c = t[o], u = n ? n(c) : c;
                      (l = i(s, u, l, r)) > -1;) s !== e && Ke.call(s, l, 1), Ke.call(e, l, 1);
                  return e
                }

                function Yr(e, t) {
                  for (var n = e ? t.length : 0, r = n - 1; n--;) {
                    var i = t[n];
                    if (n == r || i !== o) {
                      var o = i;
                      bo(i) ? Ke.call(e, i, 1) : hi(e, i)
                    }
                  }
                  return e
                }

                function qr(e, t) {
                  return e + gt(xn() * (t - e + 1))
                }

                function Kr(e, t) {
                  var n = "";
                  if (!e || t < 1 || t > p) return n;
                  do {
                    t % 2 && (n += e), (t = gt(t / 2)) && (e += e)
                  } while (t);
                  return n
                }

                function $r(e, t) {
                  return Do(To(e, t, rl), e + "")
                }

                function Zr(e) {
                  return Zn(zs(e))
                }

                function Jr(e, t) {
                  var n = zs(e);
                  return Ro(n, sr(t, 0, n.length))
                }

                function Qr(e, t, r, i) {
                  if (!es(e)) return e;
                  for (var o = -1, a = (t = bi(t, e)).length, s = a - 1, l = e; null != l && ++o < a;) {
                    var c = Lo(t[o]),
                      u = r;
                    if ("__proto__" === c || "constructor" === c || "prototype" === c) return e;
                    if (o != s) {
                      var h = l[c];
                      (u = i ? i(h, c, l) : n) === n && (u = es(h) ? h : bo(t[o + 1]) ? [] : {})
                    }
                    tr(l, c, u), l = l[c]
                  }
                  return e
                }
                var ei = Pn ? function(e, t) {
                    return Pn.set(e, t), e
                  } : rl,
                  ti = tt ? function(e, t) {
                    return tt(e, "toString", {
                      configurable: !0,
                      enumerable: !1,
                      value: el(t),
                      writable: !0
                    })
                  } : rl;

                function ni(e) {
                  return Ro(zs(e))
                }

                function ri(e, t, n) {
                  var r = -1,
                    i = e.length;
                  t < 0 && (t = -t > i ? 0 : i + t), (n = n > i ? i : n) < 0 && (n += i), i = t > n ? 0 : n - t >>> 0, t >>>= 0;
                  for (var o = W(i); ++r < i;) o[r] = e[r + t];
                  return o
                }

                function ii(e, t) {
                  var n;
                  return pr(e, (function(e, r, i) {
                    return !(n = t(e, r, i))
                  })), !!n
                }

                function oi(e, t, n) {
                  var r = 0,
                    i = null == e ? r : e.length;
                  if ("number" == typeof t && t == t && i <= 2147483647) {
                    for (; r < i;) {
                      var o = r + i >>> 1,
                        a = e[o];
                      null !== a && !ls(a) && (n ? a <= t : a < t) ? r = o + 1 : i = o
                    }
                    return i
                  }
                  return ai(e, t, rl, n)
                }

                function ai(e, t, r, i) {
                  var o = 0,
                    a = null == e ? 0 : e.length;
                  if (0 === a) return 0;
                  for (var s = (t = r(t)) != t, l = null === t, c = ls(t), u = t === n; o < a;) {
                    var h = gt((o + a) / 2),
                      p = r(e[h]),
                      d = p !== n,
                      f = null === p,
                      g = p == p,
                      m = ls(p);
                    if (s) var v = i || g;
                    else v = u ? g && (i || d) : l ? g && d && (i || !f) : c ? g && d && !f && (i || !m) : !f && !m && (i ? p <= t : p < t);
                    v ? o = h + 1 : a = h
                  }
                  return bn(a, 4294967294)
                }

                function si(e, t) {
                  for (var n = -1, r = e.length, i = 0, o = []; ++n < r;) {
                    var a = e[n],
                      s = t ? t(a) : a;
                    if (!n || !za(s, l)) {
                      var l = s;
                      o[i++] = 0 === a ? 0 : a
                    }
                  }
                  return o
                }

                function li(e) {
                  return "number" == typeof e ? e : ls(e) ? d : +e
                }

                function ci(e) {
                  if ("string" == typeof e) return e;
                  if (Va(e)) return Nt(e, ci) + "";
                  if (ls(e)) return Bn ? Bn.call(e) : "";
                  var t = e + "";
                  return "0" == t && 1 / e == -1 / 0 ? "-0" : t
                }

                function ui(e, t, n) {
                  var r = -1,
                    i = Dt,
                    o = e.length,
                    a = !0,
                    s = [],
                    l = s;
                  if (n) a = !1, i = It;
                  else if (o >= 200) {
                    var c = t ? null : Ki(e);
                    if (c) return hn(c);
                    a = !1, i = en, l = new qn
                  } else l = t ? [] : s;
                  e: for (; ++r < o;) {
                    var u = e[r],
                      h = t ? t(u) : u;
                    if (u = n || 0 !== u ? u : 0, a && h == h) {
                      for (var p = l.length; p--;)
                        if (l[p] === h) continue e;
                      t && l.push(h), s.push(u)
                    } else i(l, h, n) || (l !== s && l.push(h), s.push(u))
                  }
                  return s
                }

                function hi(e, t) {
                  return null == (e = Oo(e, t = bi(t, e))) || delete e[Lo($o(t))]
                }

                function pi(e, t, n, r) {
                  return Qr(e, t, n(kr(e, t)), r)
                }

                function di(e, t, n, r) {
                  for (var i = e.length, o = r ? i : -1;
                    (r ? o-- : ++o < i) && t(e[o], o, e););
                  return n ? ri(e, r ? 0 : o, r ? o + 1 : i) : ri(e, r ? o + 1 : 0, r ? i : o)
                }

                function fi(e, t) {
                  var n = e;
                  return n instanceof Vn && (n = n.value()), jt(t, (function(e, t) {
                    return t.func.apply(t.thisArg, Rt([e], t.args))
                  }), n)
                }

                function gi(e, t, n) {
                  var r = e.length;
                  if (r < 2) return r ? ui(e[0]) : [];
                  for (var i = -1, o = W(r); ++i < r;)
                    for (var a = e[i], s = -1; ++s < r;) s != i && (o[i] = hr(o[i] || a, e[s], t, n));
                  return ui(vr(o, 1), t, n)
                }

                function mi(e, t, r) {
                  for (var i = -1, o = e.length, a = t.length, s = {}; ++i < o;) {
                    var l = i < a ? t[i] : n;
                    r(s, e[i], l)
                  }
                  return s
                }

                function vi(e) {
                  return Ya(e) ? e : []
                }

                function _i(e) {
                  return "function" == typeof e ? e : rl
                }

                function bi(e, t) {
                  return Va(e) ? e : wo(e, t) ? [e] : jo(_s(e))
                }
                var yi = $r;

                function wi(e, t, r) {
                  var i = e.length;
                  return r = r === n ? i : r, !t && r >= i ? e : ri(e, t, r)
                }
                var xi = rt || function(e) {
                  return ft.clearTimeout(e)
                };

                function ki(e, t) {
                  if (t) return e.slice();
                  var n = e.length,
                    r = Xe ? Xe(n) : new e.constructor(n);
                  return e.copy(r), r
                }

                function Ci(e) {
                  var t = new e.constructor(e.byteLength);
                  return new Ve(t).set(new Ve(e)), t
                }

                function Si(e, t) {
                  var n = t ? Ci(e.buffer) : e.buffer;
                  return new e.constructor(n, e.byteOffset, e.length)
                }

                function Ei(e, t) {
                  if (e !== t) {
                    var r = e !== n,
                      i = null === e,
                      o = e == e,
                      a = ls(e),
                      s = t !== n,
                      l = null === t,
                      c = t == t,
                      u = ls(t);
                    if (!l && !u && !a && e > t || a && s && c && !l && !u || i && s && c || !r && c || !o) return 1;
                    if (!i && !a && !u && e < t || u && r && o && !i && !a || l && r && o || !s && o || !c) return -1
                  }
                  return 0
                }

                function Ti(e, t, n, r) {
                  for (var i = -1, o = e.length, a = n.length, s = -1, l = t.length, c = _n(o - a, 0), u = W(l + c), h = !r; ++s < l;) u[s] = t[s];
                  for (; ++i < a;)(h || i < o) && (u[n[i]] = e[i]);
                  for (; c--;) u[s++] = e[i++];
                  return u
                }

                function Oi(e, t, n, r) {
                  for (var i = -1, o = e.length, a = -1, s = n.length, l = -1, c = t.length, u = _n(o - s, 0), h = W(u + c), p = !r; ++i < u;) h[i] = e[i];
                  for (var d = i; ++l < c;) h[d + l] = t[l];
                  for (; ++a < s;)(p || i < o) && (h[d + n[a]] = e[i++]);
                  return h
                }

                function Ai(e, t) {
                  var n = -1,
                    r = e.length;
                  for (t || (t = W(r)); ++n < r;) t[n] = e[n];
                  return t
                }

                function Pi(e, t, r, i) {
                  var o = !r;
                  r || (r = {});
                  for (var a = -1, s = t.length; ++a < s;) {
                    var l = t[a],
                      c = i ? i(r[l], e[l], l, r, e) : n;
                    c === n && (c = e[l]), o ? or(r, l, c) : tr(r, l, c)
                  }
                  return r
                }

                function Mi(e, t) {
                  return function(n, r) {
                    var i = Va(n) ? Tt : rr,
                      o = t ? t() : {};
                    return i(n, e, lo(r, 2), o)
                  }
                }

                function Di(e) {
                  return $r((function(t, r) {
                    var i = -1,
                      o = r.length,
                      a = o > 1 ? r[o - 1] : n,
                      s = o > 2 ? r[2] : n;
                    for (a = e.length > 3 && "function" == typeof a ? (o--, a) : n, s && yo(r[0], r[1], s) && (a = o < 3 ? n : a, o = 1), t = Ee(t); ++i < o;) {
                      var l = r[i];
                      l && e(t, l, i, a)
                    }
                    return t
                  }))
                }

                function Ii(e, t) {
                  return function(n, r) {
                    if (null == n) return n;
                    if (!Ga(n)) return e(n, r);
                    for (var i = n.length, o = t ? i : -1, a = Ee(n);
                      (t ? o-- : ++o < i) && !1 !== r(a[o], o, a););
                    return n
                  }
                }

                function Ni(e) {
                  return function(t, n, r) {
                    for (var i = -1, o = Ee(t), a = r(t), s = a.length; s--;) {
                      var l = a[e ? s : ++i];
                      if (!1 === n(o[l], l, o)) break
                    }
                    return t
                  }
                }

                function Ri(e) {
                  return function(t) {
                    var r = sn(t = _s(t)) ? fn(t) : n,
                      i = r ? r[0] : t.charAt(0),
                      o = r ? wi(r, 1).join("") : t.slice(1);
                    return i[e]() + o
                  }
                }

                function ji(e) {
                  return function(t) {
                    return jt(Zs(Ws(t).replace(Qe, "")), e, "")
                  }
                }

                function Li(e) {
                  return function() {
                    var t = arguments;
                    switch (t.length) {
                      case 0:
                        return new e;
                      case 1:
                        return new e(t[0]);
                      case 2:
                        return new e(t[0], t[1]);
                      case 3:
                        return new e(t[0], t[1], t[2]);
                      case 4:
                        return new e(t[0], t[1], t[2], t[3]);
                      case 5:
                        return new e(t[0], t[1], t[2], t[3], t[4]);
                      case 6:
                        return new e(t[0], t[1], t[2], t[3], t[4], t[5]);
                      case 7:
                        return new e(t[0], t[1], t[2], t[3], t[4], t[5], t[6])
                    }
                    var n = Hn(e.prototype),
                      r = e.apply(n, t);
                    return es(r) ? r : n
                  }
                }

                function Fi(e) {
                  return function(t, r, i) {
                    var o = Ee(t);
                    if (!Ga(t)) {
                      var a = lo(r, 3);
                      t = Ms(t), r = function(e) {
                        return a(o[e], e, o)
                      }
                    }
                    var s = e(t, r, i);
                    return s > -1 ? o[a ? t[s] : s] : n
                  }
                }

                function Bi(e) {
                  return no((function(t) {
                    var i = t.length,
                      o = i,
                      a = Wn.prototype.thru;
                    for (e && t.reverse(); o--;) {
                      var s = t[o];
                      if ("function" != typeof s) throw new Ae(r);
                      if (a && !l && "wrapper" == ao(s)) var l = new Wn([], !0)
                    }
                    for (o = l ? o : i; ++o < i;) {
                      var c = ao(s = t[o]),
                        u = "wrapper" == c ? oo(s) : n;
                      l = u && xo(u[0]) && 424 == u[1] && !u[4].length && 1 == u[9] ? l[ao(u[0])].apply(l, u[3]) : 1 == s.length && xo(s) ? l[c]() : l.thru(s)
                    }
                    return function() {
                      var e = arguments,
                        n = e[0];
                      if (l && 1 == e.length && Va(n)) return l.plant(n).value();
                      for (var r = 0, o = i ? t[r].apply(this, e) : n; ++r < i;) o = t[r].call(this, o);
                      return o
                    }
                  }))
                }

                function zi(e, t, r, i, o, a, s, l, u, h) {
                  var p = t & c,
                    d = 1 & t,
                    f = 2 & t,
                    g = 24 & t,
                    m = 512 & t,
                    v = f ? n : Li(e);
                  return function c() {
                    for (var _ = arguments.length, b = W(_), y = _; y--;) b[y] = arguments[y];
                    if (g) var w = so(c),
                      x = function(e, t) {
                        for (var n = e.length, r = 0; n--;) e[n] === t && ++r;
                        return r
                      }(b, w);
                    if (i && (b = Ti(b, i, o, g)), a && (b = Oi(b, a, s, g)), _ -= x, g && _ < h) {
                      var k = un(b, w);
                      return Yi(e, t, zi, c.placeholder, r, b, k, l, u, h - _)
                    }
                    var C = d ? r : this,
                      S = f ? C[e] : e;
                    return _ = b.length, l ? b = function(e, t) {
                      var r = e.length,
                        i = bn(t.length, r),
                        o = Ai(e);
                      for (; i--;) {
                        var a = t[i];
                        e[i] = bo(a, r) ? o[a] : n
                      }
                      return e
                    }(b, l) : m && _ > 1 && b.reverse(), p && u < _ && (b.length = u), this && this !== ft && this instanceof c && (S = v || Li(S)), S.apply(C, b)
                  }
                }

                function Hi(e, t) {
                  return function(n, r) {
                    return function(e, t, n, r) {
                      return yr(e, (function(e, i, o) {
                        t(r, n(e), i, o)
                      })), r
                    }(n, e, t(r), {})
                  }
                }

                function Ui(e, t) {
                  return function(r, i) {
                    var o;
                    if (r === n && i === n) return t;
                    if (r !== n && (o = r), i !== n) {
                      if (o === n) return i;
                      "string" == typeof r || "string" == typeof i ? (r = ci(r), i = ci(i)) : (r = li(r), i = li(i)), o = e(r, i)
                    }
                    return o
                  }
                }

                function Wi(e) {
                  return no((function(t) {
                    return t = Nt(t, Jt(lo())), $r((function(n) {
                      var r = this;
                      return e(t, (function(e) {
                        return Et(e, r, n)
                      }))
                    }))
                  }))
                }

                function Vi(e, t) {
                  var r = (t = t === n ? " " : ci(t)).length;
                  if (r < 2) return r ? Kr(t, e) : t;
                  var i = Kr(t, dt(e / dn(t)));
                  return sn(t) ? wi(fn(i), 0, e).join("") : i.slice(0, e)
                }

                function Xi(e) {
                  return function(t, r, i) {
                    return i && "number" != typeof i && yo(t, r, i) && (r = i = n), t = ds(t), r === n ? (r = t, t = 0) : r = ds(r),
                      function(e, t, n, r) {
                        for (var i = -1, o = _n(dt((t - e) / (n || 1)), 0), a = W(o); o--;) a[r ? o : ++i] = e, e += n;
                        return a
                      }(t, r, i = i === n ? t < r ? 1 : -1 : ds(i), e)
                  }
                }

                function Gi(e) {
                  return function(t, n) {
                    return "string" == typeof t && "string" == typeof n || (t = ms(t), n = ms(n)), e(t, n)
                  }
                }

                function Yi(e, t, r, i, o, a, c, u, h, p) {
                  var d = 8 & t;
                  t |= d ? s : l, 4 & (t &= ~(d ? l : s)) || (t &= -4);
                  var f = [e, t, o, d ? a : n, d ? c : n, d ? n : a, d ? n : c, u, h, p],
                    g = r.apply(n, f);
                  return xo(e) && Po(g, f), g.placeholder = i, Io(g, e, t)
                }

                function qi(e) {
                  var t = Se[e];
                  return function(e, n) {
                    if (e = ms(e), (n = null == n ? 0 : bn(fs(n), 292)) && bt(e)) {
                      var r = (_s(e) + "e").split("e");
                      return +((r = (_s(t(r[0] + "e" + (+r[1] + n))) + "e").split("e"))[0] + "e" + (+r[1] - n))
                    }
                    return t(e)
                  }
                }
                var Ki = Tn && 1 / hn(new Tn([, -0]))[1] == h ? function(e) {
                  return new Tn(e)
                } : ll;

                function $i(e) {
                  return function(t) {
                    var n = go(t);
                    return n == k ? ln(t) : n == O ? pn(t) : function(e, t) {
                      return Nt(t, (function(t) {
                        return [t, e[t]]
                      }))
                    }(t, e(t))
                  }
                }

                function Zi(e, t, i, h, p, d, f, g) {
                  var m = 2 & t;
                  if (!m && "function" != typeof e) throw new Ae(r);
                  var v = h ? h.length : 0;
                  if (v || (t &= -97, h = p = n), f = f === n ? f : _n(fs(f), 0), g = g === n ? g : fs(g), v -= p ? p.length : 0, t & l) {
                    var _ = h,
                      b = p;
                    h = p = n
                  }
                  var y = m ? n : oo(e),
                    w = [e, t, i, h, p, _, b, d, f, g];
                  if (y && function(e, t) {
                      var n = e[1],
                        r = t[1],
                        i = n | r,
                        a = i < 131,
                        s = r == c && 8 == n || r == c && n == u && e[7].length <= t[8] || 384 == r && t[7].length <= t[8] && 8 == n;
                      if (!a && !s) return e;
                      1 & r && (e[2] = t[2], i |= 1 & n ? 0 : 4);
                      var l = t[3];
                      if (l) {
                        var h = e[3];
                        e[3] = h ? Ti(h, l, t[4]) : l, e[4] = h ? un(e[3], o) : t[4]
                      }(l = t[5]) && (h = e[5], e[5] = h ? Oi(h, l, t[6]) : l, e[6] = h ? un(e[5], o) : t[6]);
                      (l = t[7]) && (e[7] = l);
                      r & c && (e[8] = null == e[8] ? t[8] : bn(e[8], t[8]));
                      null == e[9] && (e[9] = t[9]);
                      e[0] = t[0], e[1] = i
                    }(w, y), e = w[0], t = w[1], i = w[2], h = w[3], p = w[4], !(g = w[9] = w[9] === n ? m ? 0 : e.length : _n(w[9] - v, 0)) && 24 & t && (t &= -25), t && 1 != t) x = 8 == t || t == a ? function(e, t, r) {
                    var i = Li(e);
                    return function o() {
                      for (var a = arguments.length, s = W(a), l = a, c = so(o); l--;) s[l] = arguments[l];
                      var u = a < 3 && s[0] !== c && s[a - 1] !== c ? [] : un(s, c);
                      return (a -= u.length) < r ? Yi(e, t, zi, o.placeholder, n, s, u, n, n, r - a) : Et(this && this !== ft && this instanceof o ? i : e, this, s)
                    }
                  }(e, t, g) : t != s && 33 != t || p.length ? zi.apply(n, w) : function(e, t, n, r) {
                    var i = 1 & t,
                      o = Li(e);
                    return function t() {
                      for (var a = -1, s = arguments.length, l = -1, c = r.length, u = W(c + s), h = this && this !== ft && this instanceof t ? o : e; ++l < c;) u[l] = r[l];
                      for (; s--;) u[l++] = arguments[++a];
                      return Et(h, i ? n : this, u)
                    }
                  }(e, t, i, h);
                  else var x = function(e, t, n) {
                    var r = 1 & t,
                      i = Li(e);
                    return function t() {
                      return (this && this !== ft && this instanceof t ? i : e).apply(r ? n : this, arguments)
                    }
                  }(e, t, i);
                  return Io((y ? ei : Po)(x, w), e, t)
                }

                function Ji(e, t, r, i) {
                  return e === n || za(e, De[r]) && !Re.call(i, r) ? t : e
                }

                function Qi(e, t, r, i, o, a) {
                  return es(e) && es(t) && (a.set(t, e), Ur(e, t, n, Qi, a), a.delete(t)), e
                }

                function eo(e) {
                  return is(e) ? n : e
                }

                function to(e, t, r, i, o, a) {
                  var s = 1 & r,
                    l = e.length,
                    c = t.length;
                  if (l != c && !(s && c > l)) return !1;
                  var u = a.get(e),
                    h = a.get(t);
                  if (u && h) return u == t && h == e;
                  var p = -1,
                    d = !0,
                    f = 2 & r ? new qn : n;
                  for (a.set(e, t), a.set(t, e); ++p < l;) {
                    var g = e[p],
                      m = t[p];
                    if (i) var v = s ? i(m, g, p, t, e, a) : i(g, m, p, e, t, a);
                    if (v !== n) {
                      if (v) continue;
                      d = !1;
                      break
                    }
                    if (f) {
                      if (!Ft(t, (function(e, t) {
                          if (!en(f, t) && (g === e || o(g, e, r, i, a))) return f.push(t)
                        }))) {
                        d = !1;
                        break
                      }
                    } else if (g !== m && !o(g, m, r, i, a)) {
                      d = !1;
                      break
                    }
                  }
                  return a.delete(e), a.delete(t), d
                }

                function no(e) {
                  return Do(To(e, n, Xo), e + "")
                }

                function ro(e) {
                  return Cr(e, Ms, po)
                }

                function io(e) {
                  return Cr(e, Ds, fo)
                }
                var oo = Pn ? function(e) {
                  return Pn.get(e)
                } : ll;

                function ao(e) {
                  for (var t = e.name + "", n = Mn[t], r = Re.call(Mn, t) ? n.length : 0; r--;) {
                    var i = n[r],
                      o = i.func;
                    if (null == o || o == e) return i.name
                  }
                  return t
                }

                function so(e) {
                  return (Re.call(zn, "placeholder") ? zn : e).placeholder
                }

                function lo() {
                  var e = zn.iteratee || il;
                  return e = e === il ? Rr : e, arguments.length ? e(arguments[0], arguments[1]) : e
                }

                function co(e, t) {
                  var n, r, i = e.__data__;
                  return ("string" == (r = typeof(n = t)) || "number" == r || "symbol" == r || "boolean" == r ? "__proto__" !== n : null === n) ? i["string" == typeof t ? "string" : "hash"] : i.map
                }

                function uo(e) {
                  for (var t = Ms(e), n = t.length; n--;) {
                    var r = t[n],
                      i = e[r];
                    t[n] = [r, i, So(i)]
                  }
                  return t
                }

                function ho(e, t) {
                  var r = function(e, t) {
                    return null == e ? n : e[t]
                  }(e, t);
                  return Nr(r) ? r : n
                }
                var po = mt ? function(e) {
                    return null == e ? [] : (e = Ee(e), Mt(mt(e), (function(t) {
                      return qe.call(e, t)
                    })))
                  } : gl,
                  fo = mt ? function(e) {
                    for (var t = []; e;) Rt(t, po(e)), e = Ge(e);
                    return t
                  } : gl,
                  go = Sr;

                function mo(e, t, n) {
                  for (var r = -1, i = (t = bi(t, e)).length, o = !1; ++r < i;) {
                    var a = Lo(t[r]);
                    if (!(o = null != e && n(e, a))) break;
                    e = e[a]
                  }
                  return o || ++r != i ? o : !!(i = null == e ? 0 : e.length) && Qa(i) && bo(a, i) && (Va(e) || Wa(e))
                }

                function vo(e) {
                  return "function" != typeof e.constructor || Co(e) ? {} : Hn(Ge(e))
                }

                function _o(e) {
                  return Va(e) || Wa(e) || !!($e && e && e[$e])
                }

                function bo(e, t) {
                  var n = typeof e;
                  return !!(t = null == t ? p : t) && ("number" == n || "symbol" != n && be.test(e)) && e > -1 && e % 1 == 0 && e < t
                }

                function yo(e, t, n) {
                  if (!es(n)) return !1;
                  var r = typeof t;
                  return !!("number" == r ? Ga(n) && bo(t, n.length) : "string" == r && t in n) && za(n[t], e)
                }

                function wo(e, t) {
                  if (Va(e)) return !1;
                  var n = typeof e;
                  return !("number" != n && "symbol" != n && "boolean" != n && null != e && !ls(e)) || (te.test(e) || !ee.test(e) || null != t && e in Ee(t))
                }

                function xo(e) {
                  var t = ao(e),
                    n = zn[t];
                  if ("function" != typeof n || !(t in Vn.prototype)) return !1;
                  if (e === n) return !0;
                  var r = oo(n);
                  return !!r && e === r[0]
                }(Cn && go(new Cn(new ArrayBuffer(1))) != I || Sn && go(new Sn) != k || En && go(En.resolve()) != E || Tn && go(new Tn) != O || On && go(new On) != M) && (go = function(e) {
                  var t = Sr(e),
                    r = t == S ? e.constructor : n,
                    i = r ? Fo(r) : "";
                  if (i) switch (i) {
                    case Dn:
                      return I;
                    case In:
                      return k;
                    case Nn:
                      return E;
                    case Rn:
                      return O;
                    case jn:
                      return M
                  }
                  return t
                });
                var ko = Ie ? Za : ml;

                function Co(e) {
                  var t = e && e.constructor;
                  return e === ("function" == typeof t && t.prototype || De)
                }

                function So(e) {
                  return e == e && !es(e)
                }

                function Eo(e, t) {
                  return function(r) {
                    return null != r && (r[e] === t && (t !== n || e in Ee(r)))
                  }
                }

                function To(e, t, r) {
                  return t = _n(t === n ? e.length - 1 : t, 0),
                    function() {
                      for (var n = arguments, i = -1, o = _n(n.length - t, 0), a = W(o); ++i < o;) a[i] = n[t + i];
                      i = -1;
                      for (var s = W(t + 1); ++i < t;) s[i] = n[i];
                      return s[t] = r(a), Et(e, this, s)
                    }
                }

                function Oo(e, t) {
                  return t.length < 2 ? e : kr(e, ri(t, 0, -1))
                }

                function Ao(e, t) {
                  if (("constructor" !== t || "function" != typeof e[t]) && "__proto__" != t) return e[t]
                }
                var Po = No(ei),
                  Mo = pt || function(e, t) {
                    return ft.setTimeout(e, t)
                  },
                  Do = No(ti);

                function Io(e, t, n) {
                  var r = t + "";
                  return Do(e, function(e, t) {
                    var n = t.length;
                    if (!n) return e;
                    var r = n - 1;
                    return t[r] = (n > 1 ? "& " : "") + t[r], t = t.join(n > 2 ? ", " : " "), e.replace(se, "{\n/* [wrapped with " + t + "] */\n")
                  }(r, function(e, t) {
                    return Ot(g, (function(n) {
                      var r = "_." + n[0];
                      t & n[1] && !Dt(e, r) && e.push(r)
                    })), e.sort()
                  }(function(e) {
                    var t = e.match(le);
                    return t ? t[1].split(ce) : []
                  }(r), n)))
                }

                function No(e) {
                  var t = 0,
                    r = 0;
                  return function() {
                    var i = yn(),
                      o = 16 - (i - r);
                    if (r = i, o > 0) {
                      if (++t >= 800) return arguments[0]
                    } else t = 0;
                    return e.apply(n, arguments)
                  }
                }

                function Ro(e, t) {
                  var r = -1,
                    i = e.length,
                    o = i - 1;
                  for (t = t === n ? i : t; ++r < t;) {
                    var a = qr(r, o),
                      s = e[a];
                    e[a] = e[r], e[r] = s
                  }
                  return e.length = t, e
                }
                var jo = function(e) {
                  var t = Na(e, (function(e) {
                      return 500 === n.size && n.clear(), e
                    })),
                    n = t.cache;
                  return t
                }((function(e) {
                  var t = [];
                  return 46 === e.charCodeAt(0) && t.push(""), e.replace(ne, (function(e, n, r, i) {
                    t.push(r ? i.replace(pe, "$1") : n || e)
                  })), t
                }));

                function Lo(e) {
                  if ("string" == typeof e || ls(e)) return e;
                  var t = e + "";
                  return "0" == t && 1 / e == -1 / 0 ? "-0" : t
                }

                function Fo(e) {
                  if (null != e) {
                    try {
                      return Ne.call(e)
                    } catch (e) {}
                    try {
                      return e + ""
                    } catch (e) {}
                  }
                  return ""
                }

                function Bo(e) {
                  if (e instanceof Vn) return e.clone();
                  var t = new Wn(e.__wrapped__, e.__chain__);
                  return t.__actions__ = Ai(e.__actions__), t.__index__ = e.__index__, t.__values__ = e.__values__, t
                }
                var zo = $r((function(e, t) {
                    return Ya(e) ? hr(e, vr(t, 1, Ya, !0)) : []
                  })),
                  Ho = $r((function(e, t) {
                    var r = $o(t);
                    return Ya(r) && (r = n), Ya(e) ? hr(e, vr(t, 1, Ya, !0), lo(r, 2)) : []
                  })),
                  Uo = $r((function(e, t) {
                    var r = $o(t);
                    return Ya(r) && (r = n), Ya(e) ? hr(e, vr(t, 1, Ya, !0), n, r) : []
                  }));

                function Wo(e, t, n) {
                  var r = null == e ? 0 : e.length;
                  if (!r) return -1;
                  var i = null == n ? 0 : fs(n);
                  return i < 0 && (i = _n(r + i, 0)), Ht(e, lo(t, 3), i)
                }

                function Vo(e, t, r) {
                  var i = null == e ? 0 : e.length;
                  if (!i) return -1;
                  var o = i - 1;
                  return r !== n && (o = fs(r), o = r < 0 ? _n(i + o, 0) : bn(o, i - 1)), Ht(e, lo(t, 3), o, !0)
                }

                function Xo(e) {
                  return (null == e ? 0 : e.length) ? vr(e, 1) : []
                }

                function Go(e) {
                  return e && e.length ? e[0] : n
                }
                var Yo = $r((function(e) {
                    var t = Nt(e, vi);
                    return t.length && t[0] === e[0] ? Ar(t) : []
                  })),
                  qo = $r((function(e) {
                    var t = $o(e),
                      r = Nt(e, vi);
                    return t === $o(r) ? t = n : r.pop(), r.length && r[0] === e[0] ? Ar(r, lo(t, 2)) : []
                  })),
                  Ko = $r((function(e) {
                    var t = $o(e),
                      r = Nt(e, vi);
                    return (t = "function" == typeof t ? t : n) && r.pop(), r.length && r[0] === e[0] ? Ar(r, n, t) : []
                  }));

                function $o(e) {
                  var t = null == e ? 0 : e.length;
                  return t ? e[t - 1] : n
                }
                var Zo = $r(Jo);

                function Jo(e, t) {
                  return e && e.length && t && t.length ? Gr(e, t) : e
                }
                var Qo = no((function(e, t) {
                  var n = null == e ? 0 : e.length,
                    r = ar(e, t);
                  return Yr(e, Nt(t, (function(e) {
                    return bo(e, n) ? +e : e
                  })).sort(Ei)), r
                }));

                function ea(e) {
                  return null == e ? e : kn.call(e)
                }
                var ta = $r((function(e) {
                    return ui(vr(e, 1, Ya, !0))
                  })),
                  na = $r((function(e) {
                    var t = $o(e);
                    return Ya(t) && (t = n), ui(vr(e, 1, Ya, !0), lo(t, 2))
                  })),
                  ra = $r((function(e) {
                    var t = $o(e);
                    return t = "function" == typeof t ? t : n, ui(vr(e, 1, Ya, !0), n, t)
                  }));

                function ia(e) {
                  if (!e || !e.length) return [];
                  var t = 0;
                  return e = Mt(e, (function(e) {
                    if (Ya(e)) return t = _n(e.length, t), !0
                  })), $t(t, (function(t) {
                    return Nt(e, Gt(t))
                  }))
                }

                function oa(e, t) {
                  if (!e || !e.length) return [];
                  var r = ia(e);
                  return null == t ? r : Nt(r, (function(e) {
                    return Et(t, n, e)
                  }))
                }
                var aa = $r((function(e, t) {
                    return Ya(e) ? hr(e, t) : []
                  })),
                  sa = $r((function(e) {
                    return gi(Mt(e, Ya))
                  })),
                  la = $r((function(e) {
                    var t = $o(e);
                    return Ya(t) && (t = n), gi(Mt(e, Ya), lo(t, 2))
                  })),
                  ca = $r((function(e) {
                    var t = $o(e);
                    return t = "function" == typeof t ? t : n, gi(Mt(e, Ya), n, t)
                  })),
                  ua = $r(ia);
                var ha = $r((function(e) {
                  var t = e.length,
                    r = t > 1 ? e[t - 1] : n;
                  return r = "function" == typeof r ? (e.pop(), r) : n, oa(e, r)
                }));

                function pa(e) {
                  var t = zn(e);
                  return t.__chain__ = !0, t
                }

                function da(e, t) {
                  return t(e)
                }
                var fa = no((function(e) {
                  var t = e.length,
                    r = t ? e[0] : 0,
                    i = this.__wrapped__,
                    o = function(t) {
                      return ar(t, e)
                    };
                  return !(t > 1 || this.__actions__.length) && i instanceof Vn && bo(r) ? ((i = i.slice(r, +r + (t ? 1 : 0))).__actions__.push({
                    func: da,
                    args: [o],
                    thisArg: n
                  }), new Wn(i, this.__chain__).thru((function(e) {
                    return t && !e.length && e.push(n), e
                  }))) : this.thru(o)
                }));
                var ga = Mi((function(e, t, n) {
                  Re.call(e, n) ? ++e[n] : or(e, n, 1)
                }));
                var ma = Fi(Wo),
                  va = Fi(Vo);

                function _a(e, t) {
                  return (Va(e) ? Ot : pr)(e, lo(t, 3))
                }

                function ba(e, t) {
                  return (Va(e) ? At : dr)(e, lo(t, 3))
                }
                var ya = Mi((function(e, t, n) {
                  Re.call(e, n) ? e[n].push(t) : or(e, n, [t])
                }));
                var wa = $r((function(e, t, n) {
                    var r = -1,
                      i = "function" == typeof t,
                      o = Ga(e) ? W(e.length) : [];
                    return pr(e, (function(e) {
                      o[++r] = i ? Et(t, e, n) : Pr(e, t, n)
                    })), o
                  })),
                  xa = Mi((function(e, t, n) {
                    or(e, n, t)
                  }));

                function ka(e, t) {
                  return (Va(e) ? Nt : Br)(e, lo(t, 3))
                }
                var Ca = Mi((function(e, t, n) {
                  e[n ? 0 : 1].push(t)
                }), (function() {
                  return [
                    [],
                    []
                  ]
                }));
                var Sa = $r((function(e, t) {
                    if (null == e) return [];
                    var n = t.length;
                    return n > 1 && yo(e, t[0], t[1]) ? t = [] : n > 2 && yo(t[0], t[1], t[2]) && (t = [t[0]]), Vr(e, vr(t, 1), [])
                  })),
                  Ea = ct || function() {
                    return ft.Date.now()
                  };

                function Ta(e, t, r) {
                  return t = r ? n : t, t = e && null == t ? e.length : t, Zi(e, c, n, n, n, n, t)
                }

                function Oa(e, t) {
                  var i;
                  if ("function" != typeof t) throw new Ae(r);
                  return e = fs(e),
                    function() {
                      return --e > 0 && (i = t.apply(this, arguments)), e <= 1 && (t = n), i
                    }
                }
                var Aa = $r((function(e, t, n) {
                    var r = 1;
                    if (n.length) {
                      var i = un(n, so(Aa));
                      r |= s
                    }
                    return Zi(e, r, t, n, i)
                  })),
                  Pa = $r((function(e, t, n) {
                    var r = 3;
                    if (n.length) {
                      var i = un(n, so(Pa));
                      r |= s
                    }
                    return Zi(t, r, e, n, i)
                  }));

                function Ma(e, t, i) {
                  var o, a, s, l, c, u, h = 0,
                    p = !1,
                    d = !1,
                    f = !0;
                  if ("function" != typeof e) throw new Ae(r);

                  function g(t) {
                    var r = o,
                      i = a;
                    return o = a = n, h = t, l = e.apply(i, r)
                  }

                  function m(e) {
                    var r = e - u;
                    return u === n || r >= t || r < 0 || d && e - h >= s
                  }

                  function v() {
                    var e = Ea();
                    if (m(e)) return _(e);
                    c = Mo(v, function(e) {
                      var n = t - (e - u);
                      return d ? bn(n, s - (e - h)) : n
                    }(e))
                  }

                  function _(e) {
                    return c = n, f && o ? g(e) : (o = a = n, l)
                  }

                  function b() {
                    var e = Ea(),
                      r = m(e);
                    if (o = arguments, a = this, u = e, r) {
                      if (c === n) return function(e) {
                        return h = e, c = Mo(v, t), p ? g(e) : l
                      }(u);
                      if (d) return xi(c), c = Mo(v, t), g(u)
                    }
                    return c === n && (c = Mo(v, t)), l
                  }
                  return t = ms(t) || 0, es(i) && (p = !!i.leading, s = (d = "maxWait" in i) ? _n(ms(i.maxWait) || 0, t) : s, f = "trailing" in i ? !!i.trailing : f), b.cancel = function() {
                    c !== n && xi(c), h = 0, o = u = a = c = n
                  }, b.flush = function() {
                    return c === n ? l : _(Ea())
                  }, b
                }
                var Da = $r((function(e, t) {
                    return ur(e, 1, t)
                  })),
                  Ia = $r((function(e, t, n) {
                    return ur(e, ms(t) || 0, n)
                  }));

                function Na(e, t) {
                  if ("function" != typeof e || null != t && "function" != typeof t) throw new Ae(r);
                  var n = function() {
                    var r = arguments,
                      i = t ? t.apply(this, r) : r[0],
                      o = n.cache;
                    if (o.has(i)) return o.get(i);
                    var a = e.apply(this, r);
                    return n.cache = o.set(i, a) || o, a
                  };
                  return n.cache = new(Na.Cache || Yn), n
                }

                function Ra(e) {
                  if ("function" != typeof e) throw new Ae(r);
                  return function() {
                    var t = arguments;
                    switch (t.length) {
                      case 0:
                        return !e.call(this);
                      case 1:
                        return !e.call(this, t[0]);
                      case 2:
                        return !e.call(this, t[0], t[1]);
                      case 3:
                        return !e.call(this, t[0], t[1], t[2])
                    }
                    return !e.apply(this, t)
                  }
                }
                Na.Cache = Yn;
                var ja = yi((function(e, t) {
                    var n = (t = 1 == t.length && Va(t[0]) ? Nt(t[0], Jt(lo())) : Nt(vr(t, 1), Jt(lo()))).length;
                    return $r((function(r) {
                      for (var i = -1, o = bn(r.length, n); ++i < o;) r[i] = t[i].call(this, r[i]);
                      return Et(e, this, r)
                    }))
                  })),
                  La = $r((function(e, t) {
                    var r = un(t, so(La));
                    return Zi(e, s, n, t, r)
                  })),
                  Fa = $r((function(e, t) {
                    var r = un(t, so(Fa));
                    return Zi(e, l, n, t, r)
                  })),
                  Ba = no((function(e, t) {
                    return Zi(e, u, n, n, n, t)
                  }));

                function za(e, t) {
                  return e === t || e != e && t != t
                }
                var Ha = Gi(Er),
                  Ua = Gi((function(e, t) {
                    return e >= t
                  })),
                  Wa = Mr(function() {
                    return arguments
                  }()) ? Mr : function(e) {
                    return ts(e) && Re.call(e, "callee") && !qe.call(e, "callee")
                  },
                  Va = W.isArray,
                  Xa = yt ? Jt(yt) : function(e) {
                    return ts(e) && Sr(e) == D
                  };

                function Ga(e) {
                  return null != e && Qa(e.length) && !Za(e)
                }

                function Ya(e) {
                  return ts(e) && Ga(e)
                }
                var qa = _t || ml,
                  Ka = wt ? Jt(wt) : function(e) {
                    return ts(e) && Sr(e) == b
                  };

                function $a(e) {
                  if (!ts(e)) return !1;
                  var t = Sr(e);
                  return t == y || "[object DOMException]" == t || "string" == typeof e.message && "string" == typeof e.name && !is(e)
                }

                function Za(e) {
                  if (!es(e)) return !1;
                  var t = Sr(e);
                  return t == w || t == x || "[object AsyncFunction]" == t || "[object Proxy]" == t
                }

                function Ja(e) {
                  return "number" == typeof e && e == fs(e)
                }

                function Qa(e) {
                  return "number" == typeof e && e > -1 && e % 1 == 0 && e <= p
                }

                function es(e) {
                  var t = typeof e;
                  return null != e && ("object" == t || "function" == t)
                }

                function ts(e) {
                  return null != e && "object" == typeof e
                }
                var ns = xt ? Jt(xt) : function(e) {
                  return ts(e) && go(e) == k
                };

                function rs(e) {
                  return "number" == typeof e || ts(e) && Sr(e) == C
                }

                function is(e) {
                  if (!ts(e) || Sr(e) != S) return !1;
                  var t = Ge(e);
                  if (null === t) return !0;
                  var n = Re.call(t, "constructor") && t.constructor;
                  return "function" == typeof n && n instanceof n && Ne.call(n) == Be
                }
                var os = kt ? Jt(kt) : function(e) {
                  return ts(e) && Sr(e) == T
                };
                var as = Ct ? Jt(Ct) : function(e) {
                  return ts(e) && go(e) == O
                };

                function ss(e) {
                  return "string" == typeof e || !Va(e) && ts(e) && Sr(e) == A
                }

                function ls(e) {
                  return "symbol" == typeof e || ts(e) && Sr(e) == P
                }
                var cs = St ? Jt(St) : function(e) {
                  return ts(e) && Qa(e.length) && !!st[Sr(e)]
                };
                var us = Gi(Fr),
                  hs = Gi((function(e, t) {
                    return e <= t
                  }));

                function ps(e) {
                  if (!e) return [];
                  if (Ga(e)) return ss(e) ? fn(e) : Ai(e);
                  if (Ze && e[Ze]) return function(e) {
                    for (var t, n = []; !(t = e.next()).done;) n.push(t.value);
                    return n
                  }(e[Ze]());
                  var t = go(e);
                  return (t == k ? ln : t == O ? hn : zs)(e)
                }

                function ds(e) {
                  return e ? (e = ms(e)) === h || e === -1 / 0 ? 17976931348623157e292 * (e < 0 ? -1 : 1) : e == e ? e : 0 : 0 === e ? e : 0
                }

                function fs(e) {
                  var t = ds(e),
                    n = t % 1;
                  return t == t ? n ? t - n : t : 0
                }

                function gs(e) {
                  return e ? sr(fs(e), 0, f) : 0
                }

                function ms(e) {
                  if ("number" == typeof e) return e;
                  if (ls(e)) return d;
                  if (es(e)) {
                    var t = "function" == typeof e.valueOf ? e.valueOf() : e;
                    e = es(t) ? t + "" : t
                  }
                  if ("string" != typeof e) return 0 === e ? e : +e;
                  e = Zt(e);
                  var n = me.test(e);
                  return n || _e.test(e) ? ht(e.slice(2), n ? 2 : 8) : ge.test(e) ? d : +e
                }

                function vs(e) {
                  return Pi(e, Ds(e))
                }

                function _s(e) {
                  return null == e ? "" : ci(e)
                }
                var bs = Di((function(e, t) {
                    if (Co(t) || Ga(t)) Pi(t, Ms(t), e);
                    else
                      for (var n in t) Re.call(t, n) && tr(e, n, t[n])
                  })),
                  ys = Di((function(e, t) {
                    Pi(t, Ds(t), e)
                  })),
                  ws = Di((function(e, t, n, r) {
                    Pi(t, Ds(t), e, r)
                  })),
                  xs = Di((function(e, t, n, r) {
                    Pi(t, Ms(t), e, r)
                  })),
                  ks = no(ar);
                var Cs = $r((function(e, t) {
                    e = Ee(e);
                    var r = -1,
                      i = t.length,
                      o = i > 2 ? t[2] : n;
                    for (o && yo(t[0], t[1], o) && (i = 1); ++r < i;)
                      for (var a = t[r], s = Ds(a), l = -1, c = s.length; ++l < c;) {
                        var u = s[l],
                          h = e[u];
                        (h === n || za(h, De[u]) && !Re.call(e, u)) && (e[u] = a[u])
                      }
                    return e
                  })),
                  Ss = $r((function(e) {
                    return e.push(n, Qi), Et(Ns, n, e)
                  }));

                function Es(e, t, r) {
                  var i = null == e ? n : kr(e, t);
                  return i === n ? r : i
                }

                function Ts(e, t) {
                  return null != e && mo(e, t, Or)
                }
                var Os = Hi((function(e, t, n) {
                    null != t && "function" != typeof t.toString && (t = Fe.call(t)), e[t] = n
                  }), el(rl)),
                  As = Hi((function(e, t, n) {
                    null != t && "function" != typeof t.toString && (t = Fe.call(t)), Re.call(e, t) ? e[t].push(n) : e[t] = [n]
                  }), lo),
                  Ps = $r(Pr);

                function Ms(e) {
                  return Ga(e) ? $n(e) : jr(e)
                }

                function Ds(e) {
                  return Ga(e) ? $n(e, !0) : Lr(e)
                }
                var Is = Di((function(e, t, n) {
                    Ur(e, t, n)
                  })),
                  Ns = Di((function(e, t, n, r) {
                    Ur(e, t, n, r)
                  })),
                  Rs = no((function(e, t) {
                    var n = {};
                    if (null == e) return n;
                    var r = !1;
                    t = Nt(t, (function(t) {
                      return t = bi(t, e), r || (r = t.length > 1), t
                    })), Pi(e, io(e), n), r && (n = lr(n, 7, eo));
                    for (var i = t.length; i--;) hi(n, t[i]);
                    return n
                  }));
                var js = no((function(e, t) {
                  return null == e ? {} : function(e, t) {
                    return Xr(e, t, (function(t, n) {
                      return Ts(e, n)
                    }))
                  }(e, t)
                }));

                function Ls(e, t) {
                  if (null == e) return {};
                  var n = Nt(io(e), (function(e) {
                    return [e]
                  }));
                  return t = lo(t), Xr(e, n, (function(e, n) {
                    return t(e, n[0])
                  }))
                }
                var Fs = $i(Ms),
                  Bs = $i(Ds);

                function zs(e) {
                  return null == e ? [] : Qt(e, Ms(e))
                }
                var Hs = ji((function(e, t, n) {
                  return t = t.toLowerCase(), e + (n ? Us(t) : t)
                }));

                function Us(e) {
                  return $s(_s(e).toLowerCase())
                }

                function Ws(e) {
                  return (e = _s(e)) && e.replace(ye, rn).replace(et, "")
                }
                var Vs = ji((function(e, t, n) {
                    return e + (n ? "-" : "") + t.toLowerCase()
                  })),
                  Xs = ji((function(e, t, n) {
                    return e + (n ? " " : "") + t.toLowerCase()
                  })),
                  Gs = Ri("toLowerCase");
                var Ys = ji((function(e, t, n) {
                  return e + (n ? "_" : "") + t.toLowerCase()
                }));
                var qs = ji((function(e, t, n) {
                  return e + (n ? " " : "") + $s(t)
                }));
                var Ks = ji((function(e, t, n) {
                    return e + (n ? " " : "") + t.toUpperCase()
                  })),
                  $s = Ri("toUpperCase");

                function Zs(e, t, r) {
                  return e = _s(e), (t = r ? n : t) === n ? function(e) {
                    return it.test(e)
                  }(e) ? function(e) {
                    return e.match(nt) || []
                  }(e) : function(e) {
                    return e.match(ue) || []
                  }(e) : e.match(t) || []
                }
                var Js = $r((function(e, t) {
                    try {
                      return Et(e, n, t)
                    } catch (e) {
                      return $a(e) ? e : new ke(e)
                    }
                  })),
                  Qs = no((function(e, t) {
                    return Ot(t, (function(t) {
                      t = Lo(t), or(e, t, Aa(e[t], e))
                    })), e
                  }));

                function el(e) {
                  return function() {
                    return e
                  }
                }
                var tl = Bi(),
                  nl = Bi(!0);

                function rl(e) {
                  return e
                }

                function il(e) {
                  return Rr("function" == typeof e ? e : lr(e, 1))
                }
                var ol = $r((function(e, t) {
                    return function(n) {
                      return Pr(n, e, t)
                    }
                  })),
                  al = $r((function(e, t) {
                    return function(n) {
                      return Pr(e, n, t)
                    }
                  }));

                function sl(e, t, n) {
                  var r = Ms(t),
                    i = xr(t, r);
                  null != n || es(t) && (i.length || !r.length) || (n = t, t = e, e = this, i = xr(t, Ms(t)));
                  var o = !(es(n) && "chain" in n && !n.chain),
                    a = Za(e);
                  return Ot(i, (function(n) {
                    var r = t[n];
                    e[n] = r, a && (e.prototype[n] = function() {
                      var t = this.__chain__;
                      if (o || t) {
                        var n = e(this.__wrapped__);
                        return (n.__actions__ = Ai(this.__actions__)).push({
                          func: r,
                          args: arguments,
                          thisArg: e
                        }), n.__chain__ = t, n
                      }
                      return r.apply(e, Rt([this.value()], arguments))
                    })
                  })), e
                }

                function ll() {}
                var cl = Wi(Nt),
                  ul = Wi(Pt),
                  hl = Wi(Ft);

                function pl(e) {
                  return wo(e) ? Gt(Lo(e)) : function(e) {
                    return function(t) {
                      return kr(t, e)
                    }
                  }(e)
                }
                var dl = Xi(),
                  fl = Xi(!0);

                function gl() {
                  return []
                }

                function ml() {
                  return !1
                }
                var vl = Ui((function(e, t) {
                    return e + t
                  }), 0),
                  _l = qi("ceil"),
                  bl = Ui((function(e, t) {
                    return e / t
                  }), 1),
                  yl = qi("floor");
                var wl, xl = Ui((function(e, t) {
                    return e * t
                  }), 1),
                  kl = qi("round"),
                  Cl = Ui((function(e, t) {
                    return e - t
                  }), 0);
                return zn.after = function(e, t) {
                    if ("function" != typeof t) throw new Ae(r);
                    return e = fs(e),
                      function() {
                        if (--e < 1) return t.apply(this, arguments)
                      }
                  }, zn.ary = Ta, zn.assign = bs, zn.assignIn = ys, zn.assignInWith = ws, zn.assignWith = xs, zn.at = ks, zn.before = Oa, zn.bind = Aa, zn.bindAll = Qs, zn.bindKey = Pa, zn.castArray = function() {
                    if (!arguments.length) return [];
                    var e = arguments[0];
                    return Va(e) ? e : [e]
                  }, zn.chain = pa, zn.chunk = function(e, t, r) {
                    t = (r ? yo(e, t, r) : t === n) ? 1 : _n(fs(t), 0);
                    var i = null == e ? 0 : e.length;
                    if (!i || t < 1) return [];
                    for (var o = 0, a = 0, s = W(dt(i / t)); o < i;) s[a++] = ri(e, o, o += t);
                    return s
                  }, zn.compact = function(e) {
                    for (var t = -1, n = null == e ? 0 : e.length, r = 0, i = []; ++t < n;) {
                      var o = e[t];
                      o && (i[r++] = o)
                    }
                    return i
                  }, zn.concat = function() {
                    var e = arguments.length;
                    if (!e) return [];
                    for (var t = W(e - 1), n = arguments[0], r = e; r--;) t[r - 1] = arguments[r];
                    return Rt(Va(n) ? Ai(n) : [n], vr(t, 1))
                  }, zn.cond = function(e) {
                    var t = null == e ? 0 : e.length,
                      n = lo();
                    return e = t ? Nt(e, (function(e) {
                      if ("function" != typeof e[1]) throw new Ae(r);
                      return [n(e[0]), e[1]]
                    })) : [], $r((function(n) {
                      for (var r = -1; ++r < t;) {
                        var i = e[r];
                        if (Et(i[0], this, n)) return Et(i[1], this, n)
                      }
                    }))
                  }, zn.conforms = function(e) {
                    return function(e) {
                      var t = Ms(e);
                      return function(n) {
                        return cr(n, e, t)
                      }
                    }(lr(e, 1))
                  }, zn.constant = el, zn.countBy = ga, zn.create = function(e, t) {
                    var n = Hn(e);
                    return null == t ? n : ir(n, t)
                  }, zn.curry = function e(t, r, i) {
                    var o = Zi(t, 8, n, n, n, n, n, r = i ? n : r);
                    return o.placeholder = e.placeholder, o
                  }, zn.curryRight = function e(t, r, i) {
                    var o = Zi(t, a, n, n, n, n, n, r = i ? n : r);
                    return o.placeholder = e.placeholder, o
                  }, zn.debounce = Ma, zn.defaults = Cs, zn.defaultsDeep = Ss, zn.defer = Da, zn.delay = Ia, zn.difference = zo, zn.differenceBy = Ho, zn.differenceWith = Uo, zn.drop = function(e, t, r) {
                    var i = null == e ? 0 : e.length;
                    return i ? ri(e, (t = r || t === n ? 1 : fs(t)) < 0 ? 0 : t, i) : []
                  }, zn.dropRight = function(e, t, r) {
                    var i = null == e ? 0 : e.length;
                    return i ? ri(e, 0, (t = i - (t = r || t === n ? 1 : fs(t))) < 0 ? 0 : t) : []
                  }, zn.dropRightWhile = function(e, t) {
                    return e && e.length ? di(e, lo(t, 3), !0, !0) : []
                  }, zn.dropWhile = function(e, t) {
                    return e && e.length ? di(e, lo(t, 3), !0) : []
                  }, zn.fill = function(e, t, r, i) {
                    var o = null == e ? 0 : e.length;
                    return o ? (r && "number" != typeof r && yo(e, t, r) && (r = 0, i = o), function(e, t, r, i) {
                      var o = e.length;
                      for ((r = fs(r)) < 0 && (r = -r > o ? 0 : o + r), (i = i === n || i > o ? o : fs(i)) < 0 && (i += o), i = r > i ? 0 : gs(i); r < i;) e[r++] = t;
                      return e
                    }(e, t, r, i)) : []
                  }, zn.filter = function(e, t) {
                    return (Va(e) ? Mt : mr)(e, lo(t, 3))
                  }, zn.flatMap = function(e, t) {
                    return vr(ka(e, t), 1)
                  }, zn.flatMapDeep = function(e, t) {
                    return vr(ka(e, t), h)
                  }, zn.flatMapDepth = function(e, t, r) {
                    return r = r === n ? 1 : fs(r), vr(ka(e, t), r)
                  }, zn.flatten = Xo, zn.flattenDeep = function(e) {
                    return (null == e ? 0 : e.length) ? vr(e, h) : []
                  }, zn.flattenDepth = function(e, t) {
                    return (null == e ? 0 : e.length) ? vr(e, t = t === n ? 1 : fs(t)) : []
                  }, zn.flip = function(e) {
                    return Zi(e, 512)
                  }, zn.flow = tl, zn.flowRight = nl, zn.fromPairs = function(e) {
                    for (var t = -1, n = null == e ? 0 : e.length, r = {}; ++t < n;) {
                      var i = e[t];
                      r[i[0]] = i[1]
                    }
                    return r
                  }, zn.functions = function(e) {
                    return null == e ? [] : xr(e, Ms(e))
                  }, zn.functionsIn = function(e) {
                    return null == e ? [] : xr(e, Ds(e))
                  }, zn.groupBy = ya, zn.initial = function(e) {
                    return (null == e ? 0 : e.length) ? ri(e, 0, -1) : []
                  }, zn.intersection = Yo, zn.intersectionBy = qo, zn.intersectionWith = Ko, zn.invert = Os, zn.invertBy = As, zn.invokeMap = wa, zn.iteratee = il, zn.keyBy = xa, zn.keys = Ms, zn.keysIn = Ds, zn.map = ka, zn.mapKeys =
                  function(e, t) {
                    var n = {};
                    return t = lo(t, 3), yr(e, (function(e, r, i) {
                      or(n, t(e, r, i), e)
                    })), n
                  }, zn.mapValues = function(e, t) {
                    var n = {};
                    return t = lo(t, 3), yr(e, (function(e, r, i) {
                      or(n, r, t(e, r, i))
                    })), n
                  }, zn.matches = function(e) {
                    return zr(lr(e, 1))
                  }, zn.matchesProperty = function(e, t) {
                    return Hr(e, lr(t, 1))
                  }, zn.memoize = Na, zn.merge = Is, zn.mergeWith = Ns, zn.method = ol, zn.methodOf = al, zn.mixin = sl, zn.negate = Ra, zn.nthArg = function(e) {
                    return e = fs(e), $r((function(t) {
                      return Wr(t, e)
                    }))
                  }, zn.omit = Rs, zn.omitBy = function(e, t) {
                    return Ls(e, Ra(lo(t)))
                  }, zn.once = function(e) {
                    return Oa(2, e)
                  }, zn.orderBy = function(e, t, r, i) {
                    return null == e ? [] : (Va(t) || (t = null == t ? [] : [t]), Va(r = i ? n : r) || (r = null == r ? [] : [r]), Vr(e, t, r))
                  }, zn.over = cl, zn.overArgs = ja, zn.overEvery = ul, zn.overSome = hl, zn.partial = La, zn.partialRight = Fa, zn.partition = Ca, zn.pick = js, zn.pickBy = Ls, zn.property = pl, zn.propertyOf = function(e) {
                    return function(t) {
                      return null == e ? n : kr(e, t)
                    }
                  }, zn.pull = Zo, zn.pullAll = Jo, zn.pullAllBy = function(e, t, n) {
                    return e && e.length && t && t.length ? Gr(e, t, lo(n, 2)) : e
                  }, zn.pullAllWith = function(e, t, r) {
                    return e && e.length && t && t.length ? Gr(e, t, n, r) : e
                  }, zn.pullAt = Qo, zn.range = dl, zn.rangeRight = fl, zn.rearg = Ba, zn.reject = function(e, t) {
                    return (Va(e) ? Mt : mr)(e, Ra(lo(t, 3)))
                  }, zn.remove = function(e, t) {
                    var n = [];
                    if (!e || !e.length) return n;
                    var r = -1,
                      i = [],
                      o = e.length;
                    for (t = lo(t, 3); ++r < o;) {
                      var a = e[r];
                      t(a, r, e) && (n.push(a), i.push(r))
                    }
                    return Yr(e, i), n
                  }, zn.rest = function(e, t) {
                    if ("function" != typeof e) throw new Ae(r);
                    return $r(e, t = t === n ? t : fs(t))
                  }, zn.reverse = ea, zn.sampleSize = function(e, t, r) {
                    return t = (r ? yo(e, t, r) : t === n) ? 1 : fs(t), (Va(e) ? Jn : Jr)(e, t)
                  }, zn.set = function(e, t, n) {
                    return null == e ? e : Qr(e, t, n)
                  }, zn.setWith = function(e, t, r, i) {
                    return i = "function" == typeof i ? i : n, null == e ? e : Qr(e, t, r, i)
                  }, zn.shuffle = function(e) {
                    return (Va(e) ? Qn : ni)(e)
                  }, zn.slice = function(e, t, r) {
                    var i = null == e ? 0 : e.length;
                    return i ? (r && "number" != typeof r && yo(e, t, r) ? (t = 0, r = i) : (t = null == t ? 0 : fs(t), r = r === n ? i : fs(r)), ri(e, t, r)) : []
                  }, zn.sortBy = Sa, zn.sortedUniq = function(e) {
                    return e && e.length ? si(e) : []
                  }, zn.sortedUniqBy = function(e, t) {
                    return e && e.length ? si(e, lo(t, 2)) : []
                  }, zn.split = function(e, t, r) {
                    return r && "number" != typeof r && yo(e, t, r) && (t = r = n), (r = r === n ? f : r >>> 0) ? (e = _s(e)) && ("string" == typeof t || null != t && !os(t)) && !(t = ci(t)) && sn(e) ? wi(fn(e), 0, r) : e.split(t, r) : []
                  }, zn.spread = function(e, t) {
                    if ("function" != typeof e) throw new Ae(r);
                    return t = null == t ? 0 : _n(fs(t), 0), $r((function(n) {
                      var r = n[t],
                        i = wi(n, 0, t);
                      return r && Rt(i, r), Et(e, this, i)
                    }))
                  }, zn.tail = function(e) {
                    var t = null == e ? 0 : e.length;
                    return t ? ri(e, 1, t) : []
                  }, zn.take = function(e, t, r) {
                    return e && e.length ? ri(e, 0, (t = r || t === n ? 1 : fs(t)) < 0 ? 0 : t) : []
                  }, zn.takeRight = function(e, t, r) {
                    var i = null == e ? 0 : e.length;
                    return i ? ri(e, (t = i - (t = r || t === n ? 1 : fs(t))) < 0 ? 0 : t, i) : []
                  }, zn.takeRightWhile = function(e, t) {
                    return e && e.length ? di(e, lo(t, 3), !1, !0) : []
                  }, zn.takeWhile = function(e, t) {
                    return e && e.length ? di(e, lo(t, 3)) : []
                  }, zn.tap = function(e, t) {
                    return t(e), e
                  }, zn.throttle = function(e, t, n) {
                    var i = !0,
                      o = !0;
                    if ("function" != typeof e) throw new Ae(r);
                    return es(n) && (i = "leading" in n ? !!n.leading : i, o = "trailing" in n ? !!n.trailing : o), Ma(e, t, {
                      leading: i,
                      maxWait: t,
                      trailing: o
                    })
                  }, zn.thru = da, zn.toArray = ps, zn.toPairs = Fs, zn.toPairsIn = Bs, zn.toPath = function(e) {
                    return Va(e) ? Nt(e, Lo) : ls(e) ? [e] : Ai(jo(_s(e)))
                  }, zn.toPlainObject = vs, zn.transform = function(e, t, n) {
                    var r = Va(e),
                      i = r || qa(e) || cs(e);
                    if (t = lo(t, 4), null == n) {
                      var o = e && e.constructor;
                      n = i ? r ? new o : [] : es(e) && Za(o) ? Hn(Ge(e)) : {}
                    }
                    return (i ? Ot : yr)(e, (function(e, r, i) {
                      return t(n, e, r, i)
                    })), n
                  }, zn.unary = function(e) {
                    return Ta(e, 1)
                  }, zn.union = ta, zn.unionBy = na, zn.unionWith = ra, zn.uniq = function(e) {
                    return e && e.length ? ui(e) : []
                  }, zn.uniqBy = function(e, t) {
                    return e && e.length ? ui(e, lo(t, 2)) : []
                  }, zn.uniqWith = function(e, t) {
                    return t = "function" == typeof t ? t : n, e && e.length ? ui(e, n, t) : []
                  }, zn.unset = function(e, t) {
                    return null == e || hi(e, t)
                  }, zn.unzip = ia, zn.unzipWith = oa, zn.update = function(e, t, n) {
                    return null == e ? e : pi(e, t, _i(n))
                  }, zn.updateWith = function(e, t, r, i) {
                    return i = "function" == typeof i ? i : n, null == e ? e : pi(e, t, _i(r), i)
                  }, zn.values = zs, zn.valuesIn = function(e) {
                    return null == e ? [] : Qt(e, Ds(e))
                  }, zn.without = aa, zn.words = Zs, zn.wrap = function(e, t) {
                    return La(_i(t), e)
                  }, zn.xor = sa, zn.xorBy = la, zn.xorWith = ca, zn.zip = ua, zn.zipObject = function(e, t) {
                    return mi(e || [], t || [], tr)
                  }, zn.zipObjectDeep = function(e, t) {
                    return mi(e || [], t || [], Qr)
                  }, zn.zipWith = ha, zn.entries = Fs, zn.entriesIn = Bs, zn.extend = ys, zn.extendWith = ws, sl(zn, zn), zn.add = vl, zn.attempt = Js, zn.camelCase = Hs, zn.capitalize = Us, zn.ceil = _l, zn.clamp = function(e, t, r) {
                    return r === n && (r = t, t = n), r !== n && (r = (r = ms(r)) == r ? r : 0), t !== n && (t = (t = ms(t)) == t ? t : 0), sr(ms(e), t, r)
                  }, zn.clone = function(e) {
                    return lr(e, 4)
                  }, zn.cloneDeep = function(e) {
                    return lr(e, 5)
                  }, zn.cloneDeepWith = function(e, t) {
                    return lr(e, 5, t = "function" == typeof t ? t : n)
                  }, zn.cloneWith = function(e, t) {
                    return lr(e, 4, t = "function" == typeof t ? t : n)
                  }, zn.conformsTo = function(e, t) {
                    return null == t || cr(e, t, Ms(t))
                  }, zn.deburr = Ws, zn.defaultTo = function(e, t) {
                    return null == e || e != e ? t : e
                  }, zn.divide = bl, zn.endsWith = function(e, t, r) {
                    e = _s(e), t = ci(t);
                    var i = e.length,
                      o = r = r === n ? i : sr(fs(r), 0, i);
                    return (r -= t.length) >= 0 && e.slice(r, o) == t
                  }, zn.eq = za, zn.escape = function(e) {
                    return (e = _s(e)) && $.test(e) ? e.replace(q, on) : e
                  }, zn.escapeRegExp = function(e) {
                    return (e = _s(e)) && ie.test(e) ? e.replace(re, "\\$&") : e
                  }, zn.every = function(e, t, r) {
                    var i = Va(e) ? Pt : fr;
                    return r && yo(e, t, r) && (t = n), i(e, lo(t, 3))
                  }, zn.find = ma, zn.findIndex = Wo, zn.findKey = function(e, t) {
                    return zt(e, lo(t, 3), yr)
                  }, zn.findLast = va, zn.findLastIndex = Vo, zn.findLastKey = function(e, t) {
                    return zt(e, lo(t, 3), wr)
                  }, zn.floor = yl, zn.forEach = _a, zn.forEachRight = ba, zn.forIn = function(e, t) {
                    return null == e ? e : _r(e, lo(t, 3), Ds)
                  }, zn.forInRight = function(e, t) {
                    return null == e ? e : br(e, lo(t, 3), Ds)
                  }, zn.forOwn = function(e, t) {
                    return e && yr(e, lo(t, 3))
                  }, zn.forOwnRight = function(e, t) {
                    return e && wr(e, lo(t, 3))
                  }, zn.get = Es, zn.gt = Ha, zn.gte = Ua, zn.has = function(e, t) {
                    return null != e && mo(e, t, Tr)
                  }, zn.hasIn = Ts, zn.head = Go, zn.identity = rl, zn.includes = function(e, t, n, r) {
                    e = Ga(e) ? e : zs(e), n = n && !r ? fs(n) : 0;
                    var i = e.length;
                    return n < 0 && (n = _n(i + n, 0)), ss(e) ? n <= i && e.indexOf(t, n) > -1 : !!i && Ut(e, t, n) > -1
                  }, zn.indexOf = function(e, t, n) {
                    var r = null == e ? 0 : e.length;
                    if (!r) return -1;
                    var i = null == n ? 0 : fs(n);
                    return i < 0 && (i = _n(r + i, 0)), Ut(e, t, i)
                  }, zn.inRange = function(e, t, r) {
                    return t = ds(t), r === n ? (r = t, t = 0) : r = ds(r),
                      function(e, t, n) {
                        return e >= bn(t, n) && e < _n(t, n)
                      }(e = ms(e), t, r)
                  }, zn.invoke = Ps, zn.isArguments = Wa, zn.isArray = Va, zn.isArrayBuffer = Xa, zn.isArrayLike = Ga, zn.isArrayLikeObject = Ya, zn.isBoolean = function(e) {
                    return !0 === e || !1 === e || ts(e) && Sr(e) == _
                  }, zn.isBuffer = qa, zn.isDate = Ka, zn.isElement = function(e) {
                    return ts(e) && 1 === e.nodeType && !is(e)
                  }, zn.isEmpty = function(e) {
                    if (null == e) return !0;
                    if (Ga(e) && (Va(e) || "string" == typeof e || "function" == typeof e.splice || qa(e) || cs(e) || Wa(e))) return !e.length;
                    var t = go(e);
                    if (t == k || t == O) return !e.size;
                    if (Co(e)) return !jr(e).length;
                    for (var n in e)
                      if (Re.call(e, n)) return !1;
                    return !0
                  }, zn.isEqual = function(e, t) {
                    return Dr(e, t)
                  }, zn.isEqualWith = function(e, t, r) {
                    var i = (r = "function" == typeof r ? r : n) ? r(e, t) : n;
                    return i === n ? Dr(e, t, n, r) : !!i
                  }, zn.isError = $a, zn.isFinite = function(e) {
                    return "number" == typeof e && bt(e)
                  }, zn.isFunction = Za, zn.isInteger = Ja, zn.isLength = Qa, zn.isMap = ns, zn.isMatch = function(e, t) {
                    return e === t || Ir(e, t, uo(t))
                  }, zn.isMatchWith = function(e, t, r) {
                    return r = "function" == typeof r ? r : n, Ir(e, t, uo(t), r)
                  }, zn.isNaN = function(e) {
                    return rs(e) && e != +e
                  }, zn.isNative = function(e) {
                    if (ko(e)) throw new ke("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");
                    return Nr(e)
                  }, zn.isNil = function(e) {
                    return null == e
                  }, zn.isNull = function(e) {
                    return null === e
                  }, zn.isNumber = rs, zn.isObject = es, zn.isObjectLike = ts, zn.isPlainObject = is, zn.isRegExp = os, zn.isSafeInteger = function(e) {
                    return Ja(e) && e >= -9007199254740991 && e <= p
                  }, zn.isSet = as, zn.isString = ss, zn.isSymbol = ls, zn.isTypedArray = cs, zn.isUndefined = function(e) {
                    return e === n
                  }, zn.isWeakMap = function(e) {
                    return ts(e) && go(e) == M
                  }, zn.isWeakSet = function(e) {
                    return ts(e) && "[object WeakSet]" == Sr(e)
                  }, zn.join = function(e, t) {
                    return null == e ? "" : Bt.call(e, t)
                  }, zn.kebabCase = Vs, zn.last = $o, zn.lastIndexOf = function(e, t, r) {
                    var i = null == e ? 0 : e.length;
                    if (!i) return -1;
                    var o = i;
                    return r !== n && (o = (o = fs(r)) < 0 ? _n(i + o, 0) : bn(o, i - 1)), t == t ? function(e, t, n) {
                      for (var r = n + 1; r--;)
                        if (e[r] === t) return r;
                      return r
                    }(e, t, o) : Ht(e, Vt, o, !0)
                  }, zn.lowerCase = Xs, zn.lowerFirst = Gs, zn.lt = us, zn.lte = hs, zn.max = function(e) {
                    return e && e.length ? gr(e, rl, Er) : n
                  }, zn.maxBy = function(e, t) {
                    return e && e.length ? gr(e, lo(t, 2), Er) : n
                  }, zn.mean = function(e) {
                    return Xt(e, rl)
                  }, zn.meanBy = function(e, t) {
                    return Xt(e, lo(t, 2))
                  }, zn.min = function(e) {
                    return e && e.length ? gr(e, rl, Fr) : n
                  }, zn.minBy = function(e, t) {
                    return e && e.length ? gr(e, lo(t, 2), Fr) : n
                  }, zn.stubArray = gl, zn.stubFalse = ml, zn.stubObject = function() {
                    return {}
                  }, zn.stubString = function() {
                    return ""
                  }, zn.stubTrue = function() {
                    return !0
                  }, zn.multiply = xl, zn.nth = function(e, t) {
                    return e && e.length ? Wr(e, fs(t)) : n
                  }, zn.noConflict = function() {
                    return ft._ === this && (ft._ = ze), this
                  }, zn.noop = ll, zn.now = Ea, zn.pad = function(e, t, n) {
                    e = _s(e);
                    var r = (t = fs(t)) ? dn(e) : 0;
                    if (!t || r >= t) return e;
                    var i = (t - r) / 2;
                    return Vi(gt(i), n) + e + Vi(dt(i), n)
                  }, zn.padEnd = function(e, t, n) {
                    e = _s(e);
                    var r = (t = fs(t)) ? dn(e) : 0;
                    return t && r < t ? e + Vi(t - r, n) : e
                  }, zn.padStart = function(e, t, n) {
                    e = _s(e);
                    var r = (t = fs(t)) ? dn(e) : 0;
                    return t && r < t ? Vi(t - r, n) + e : e
                  }, zn.parseInt = function(e, t, n) {
                    return n || null == t ? t = 0 : t && (t = +t), wn(_s(e).replace(oe, ""), t || 0)
                  }, zn.random = function(e, t, r) {
                    if (r && "boolean" != typeof r && yo(e, t, r) && (t = r = n), r === n && ("boolean" == typeof t ? (r = t, t = n) : "boolean" == typeof e && (r = e, e = n)), e === n && t === n ? (e = 0, t = 1) : (e = ds(e), t === n ? (t =
                        e, e = 0) : t = ds(t)), e > t) {
                      var i = e;
                      e = t, t = i
                    }
                    if (r || e % 1 || t % 1) {
                      var o = xn();
                      return bn(e + o * (t - e + ut("1e-" + ((o + "").length - 1))), t)
                    }
                    return qr(e, t)
                  }, zn.reduce = function(e, t, n) {
                    var r = Va(e) ? jt : qt,
                      i = arguments.length < 3;
                    return r(e, lo(t, 4), n, i, pr)
                  }, zn.reduceRight = function(e, t, n) {
                    var r = Va(e) ? Lt : qt,
                      i = arguments.length < 3;
                    return r(e, lo(t, 4), n, i, dr)
                  }, zn.repeat = function(e, t, r) {
                    return t = (r ? yo(e, t, r) : t === n) ? 1 : fs(t), Kr(_s(e), t)
                  }, zn.replace = function() {
                    var e = arguments,
                      t = _s(e[0]);
                    return e.length < 3 ? t : t.replace(e[1], e[2])
                  }, zn.result = function(e, t, r) {
                    var i = -1,
                      o = (t = bi(t, e)).length;
                    for (o || (o = 1, e = n); ++i < o;) {
                      var a = null == e ? n : e[Lo(t[i])];
                      a === n && (i = o, a = r), e = Za(a) ? a.call(e) : a
                    }
                    return e
                  }, zn.round = kl, zn.runInContext = e, zn.sample = function(e) {
                    return (Va(e) ? Zn : Zr)(e)
                  }, zn.size = function(e) {
                    if (null == e) return 0;
                    if (Ga(e)) return ss(e) ? dn(e) : e.length;
                    var t = go(e);
                    return t == k || t == O ? e.size : jr(e).length
                  }, zn.snakeCase = Ys, zn.some = function(e, t, r) {
                    var i = Va(e) ? Ft : ii;
                    return r && yo(e, t, r) && (t = n), i(e, lo(t, 3))
                  }, zn.sortedIndex = function(e, t) {
                    return oi(e, t)
                  }, zn.sortedIndexBy = function(e, t, n) {
                    return ai(e, t, lo(n, 2))
                  }, zn.sortedIndexOf = function(e, t) {
                    var n = null == e ? 0 : e.length;
                    if (n) {
                      var r = oi(e, t);
                      if (r < n && za(e[r], t)) return r
                    }
                    return -1
                  }, zn.sortedLastIndex = function(e, t) {
                    return oi(e, t, !0)
                  }, zn.sortedLastIndexBy = function(e, t, n) {
                    return ai(e, t, lo(n, 2), !0)
                  }, zn.sortedLastIndexOf = function(e, t) {
                    if (null == e ? 0 : e.length) {
                      var n = oi(e, t, !0) - 1;
                      if (za(e[n], t)) return n
                    }
                    return -1
                  }, zn.startCase = qs, zn.startsWith = function(e, t, n) {
                    return e = _s(e), n = null == n ? 0 : sr(fs(n), 0, e.length), t = ci(t), e.slice(n, n + t.length) == t
                  }, zn.subtract = Cl, zn.sum = function(e) {
                    return e && e.length ? Kt(e, rl) : 0
                  }, zn.sumBy = function(e, t) {
                    return e && e.length ? Kt(e, lo(t, 2)) : 0
                  }, zn.template = function(e, t, r) {
                    var i = zn.templateSettings;
                    r && yo(e, t, r) && (t = n), e = _s(e), t = ws({}, t, i, Ji);
                    var o, a, s = ws({}, t.imports, i.imports, Ji),
                      l = Ms(s),
                      c = Qt(s, l),
                      u = 0,
                      h = t.interpolate || we,
                      p = "__p += '",
                      d = Te((t.escape || we).source + "|" + h.source + "|" + (h === Q ? de : we).source + "|" + (t.evaluate || we).source + "|$", "g"),
                      f = "//# sourceURL=" + (Re.call(t, "sourceURL") ? (t.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++at + "]") + "\n";
                    e.replace(d, (function(t, n, r, i, s, l) {
                      return r || (r = i), p += e.slice(u, l).replace(xe, an), n && (o = !0, p += "' +\n__e(" + n + ") +\n'"), s && (a = !0, p += "';\n" + s + ";\n__p += '"), r && (p += "' +\n((__t = (" + r +
                        ")) == null ? '' : __t) +\n'"), u = l + t.length, t
                    })), p += "';\n";
                    var g = Re.call(t, "variable") && t.variable;
                    if (g) {
                      if (he.test(g)) throw new ke("Invalid `variable` option passed into `_.template`")
                    } else p = "with (obj) {\n" + p + "\n}\n";
                    p = (a ? p.replace(V, "") : p).replace(X, "$1").replace(G, "$1;"), p = "function(" + (g || "obj") + ") {\n" + (g ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (o ? ", __e = _.escape" : "") + (a ?
                      ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + p + "return __p\n}";
                    var m = Js((function() {
                      return Ce(l, f + "return " + p).apply(n, c)
                    }));
                    if (m.source = p, $a(m)) throw m;
                    return m
                  }, zn.times = function(e, t) {
                    if ((e = fs(e)) < 1 || e > p) return [];
                    var n = f,
                      r = bn(e, f);
                    t = lo(t), e -= f;
                    for (var i = $t(r, t); ++n < e;) t(n);
                    return i
                  }, zn.toFinite = ds, zn.toInteger = fs, zn.toLength = gs, zn.toLower = function(e) {
                    return _s(e).toLowerCase()
                  }, zn.toNumber = ms, zn.toSafeInteger = function(e) {
                    return e ? sr(fs(e), -9007199254740991, p) : 0 === e ? e : 0
                  }, zn.toString = _s, zn.toUpper = function(e) {
                    return _s(e).toUpperCase()
                  }, zn.trim = function(e, t, r) {
                    if ((e = _s(e)) && (r || t === n)) return Zt(e);
                    if (!e || !(t = ci(t))) return e;
                    var i = fn(e),
                      o = fn(t);
                    return wi(i, tn(i, o), nn(i, o) + 1).join("")
                  }, zn.trimEnd = function(e, t, r) {
                    if ((e = _s(e)) && (r || t === n)) return e.slice(0, gn(e) + 1);
                    if (!e || !(t = ci(t))) return e;
                    var i = fn(e);
                    return wi(i, 0, nn(i, fn(t)) + 1).join("")
                  }, zn.trimStart = function(e, t, r) {
                    if ((e = _s(e)) && (r || t === n)) return e.replace(oe, "");
                    if (!e || !(t = ci(t))) return e;
                    var i = fn(e);
                    return wi(i, tn(i, fn(t))).join("")
                  }, zn.truncate = function(e, t) {
                    var r = 30,
                      i = "...";
                    if (es(t)) {
                      var o = "separator" in t ? t.separator : o;
                      r = "length" in t ? fs(t.length) : r, i = "omission" in t ? ci(t.omission) : i
                    }
                    var a = (e = _s(e)).length;
                    if (sn(e)) {
                      var s = fn(e);
                      a = s.length
                    }
                    if (r >= a) return e;
                    var l = r - dn(i);
                    if (l < 1) return i;
                    var c = s ? wi(s, 0, l).join("") : e.slice(0, l);
                    if (o === n) return c + i;
                    if (s && (l += c.length - l), os(o)) {
                      if (e.slice(l).search(o)) {
                        var u, h = c;
                        for (o.global || (o = Te(o.source, _s(fe.exec(o)) + "g")), o.lastIndex = 0; u = o.exec(h);) var p = u.index;
                        c = c.slice(0, p === n ? l : p)
                      }
                    } else if (e.indexOf(ci(o), l) != l) {
                      var d = c.lastIndexOf(o);
                      d > -1 && (c = c.slice(0, d))
                    }
                    return c + i
                  }, zn.unescape = function(e) {
                    return (e = _s(e)) && K.test(e) ? e.replace(Y, mn) : e
                  }, zn.uniqueId = function(e) {
                    var t = ++je;
                    return _s(e) + t
                  }, zn.upperCase = Ks, zn.upperFirst = $s, zn.each = _a, zn.eachRight = ba, zn.first = Go, sl(zn, (wl = {}, yr(zn, (function(e, t) {
                    Re.call(zn.prototype, t) || (wl[t] = e)
                  })), wl), {
                    chain: !1
                  }), zn.VERSION = "4.17.21", Ot(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], (function(e) {
                    zn[e].placeholder = zn
                  })), Ot(["drop", "take"], (function(e, t) {
                    Vn.prototype[e] = function(r) {
                      r = r === n ? 1 : _n(fs(r), 0);
                      var i = this.__filtered__ && !t ? new Vn(this) : this.clone();
                      return i.__filtered__ ? i.__takeCount__ = bn(r, i.__takeCount__) : i.__views__.push({
                        size: bn(r, f),
                        type: e + (i.__dir__ < 0 ? "Right" : "")
                      }), i
                    }, Vn.prototype[e + "Right"] = function(t) {
                      return this.reverse()[e](t).reverse()
                    }
                  })), Ot(["filter", "map", "takeWhile"], (function(e, t) {
                    var n = t + 1,
                      r = 1 == n || 3 == n;
                    Vn.prototype[e] = function(e) {
                      var t = this.clone();
                      return t.__iteratees__.push({
                        iteratee: lo(e, 3),
                        type: n
                      }), t.__filtered__ = t.__filtered__ || r, t
                    }
                  })), Ot(["head", "last"], (function(e, t) {
                    var n = "take" + (t ? "Right" : "");
                    Vn.prototype[e] = function() {
                      return this[n](1).value()[0]
                    }
                  })), Ot(["initial", "tail"], (function(e, t) {
                    var n = "drop" + (t ? "" : "Right");
                    Vn.prototype[e] = function() {
                      return this.__filtered__ ? new Vn(this) : this[n](1)
                    }
                  })), Vn.prototype.compact = function() {
                    return this.filter(rl)
                  }, Vn.prototype.find = function(e) {
                    return this.filter(e).head()
                  }, Vn.prototype.findLast = function(e) {
                    return this.reverse().find(e)
                  }, Vn.prototype.invokeMap = $r((function(e, t) {
                    return "function" == typeof e ? new Vn(this) : this.map((function(n) {
                      return Pr(n, e, t)
                    }))
                  })), Vn.prototype.reject = function(e) {
                    return this.filter(Ra(lo(e)))
                  }, Vn.prototype.slice = function(e, t) {
                    e = fs(e);
                    var r = this;
                    return r.__filtered__ && (e > 0 || t < 0) ? new Vn(r) : (e < 0 ? r = r.takeRight(-e) : e && (r = r.drop(e)), t !== n && (r = (t = fs(t)) < 0 ? r.dropRight(-t) : r.take(t - e)), r)
                  }, Vn.prototype.takeRightWhile = function(e) {
                    return this.reverse().takeWhile(e).reverse()
                  }, Vn.prototype.toArray = function() {
                    return this.take(f)
                  }, yr(Vn.prototype, (function(e, t) {
                    var r = /^(?:filter|find|map|reject)|While$/.test(t),
                      i = /^(?:head|last)$/.test(t),
                      o = zn[i ? "take" + ("last" == t ? "Right" : "") : t],
                      a = i || /^find/.test(t);
                    o && (zn.prototype[t] = function() {
                      var t = this.__wrapped__,
                        s = i ? [1] : arguments,
                        l = t instanceof Vn,
                        c = s[0],
                        u = l || Va(t),
                        h = function(e) {
                          var t = o.apply(zn, Rt([e], s));
                          return i && p ? t[0] : t
                        };
                      u && r && "function" == typeof c && 1 != c.length && (l = u = !1);
                      var p = this.__chain__,
                        d = !!this.__actions__.length,
                        f = a && !p,
                        g = l && !d;
                      if (!a && u) {
                        t = g ? t : new Vn(this);
                        var m = e.apply(t, s);
                        return m.__actions__.push({
                          func: da,
                          args: [h],
                          thisArg: n
                        }), new Wn(m, p)
                      }
                      return f && g ? e.apply(this, s) : (m = this.thru(h), f ? i ? m.value()[0] : m.value() : m)
                    })
                  })), Ot(["pop", "push", "shift", "sort", "splice", "unshift"], (function(e) {
                    var t = Pe[e],
                      n = /^(?:push|sort|unshift)$/.test(e) ? "tap" : "thru",
                      r = /^(?:pop|shift)$/.test(e);
                    zn.prototype[e] = function() {
                      var e = arguments;
                      if (r && !this.__chain__) {
                        var i = this.value();
                        return t.apply(Va(i) ? i : [], e)
                      }
                      return this[n]((function(n) {
                        return t.apply(Va(n) ? n : [], e)
                      }))
                    }
                  })), yr(Vn.prototype, (function(e, t) {
                    var n = zn[t];
                    if (n) {
                      var r = n.name + "";
                      Re.call(Mn, r) || (Mn[r] = []), Mn[r].push({
                        name: t,
                        func: n
                      })
                    }
                  })), Mn[zi(n, 2).name] = [{
                    name: "wrapper",
                    func: n
                  }], Vn.prototype.clone = function() {
                    var e = new Vn(this.__wrapped__);
                    return e.__actions__ = Ai(this.__actions__), e.__dir__ = this.__dir__, e.__filtered__ = this.__filtered__, e.__iteratees__ = Ai(this.__iteratees__), e.__takeCount__ = this.__takeCount__, e.__views__ = Ai(this.__views__), e
                  }, Vn.prototype.reverse = function() {
                    if (this.__filtered__) {
                      var e = new Vn(this);
                      e.__dir__ = -1, e.__filtered__ = !0
                    } else(e = this.clone()).__dir__ *= -1;
                    return e
                  }, Vn.prototype.value = function() {
                    var e = this.__wrapped__.value(),
                      t = this.__dir__,
                      n = Va(e),
                      r = t < 0,
                      i = n ? e.length : 0,
                      o = function(e, t, n) {
                        var r = -1,
                          i = n.length;
                        for (; ++r < i;) {
                          var o = n[r],
                            a = o.size;
                          switch (o.type) {
                            case "drop":
                              e += a;
                              break;
                            case "dropRight":
                              t -= a;
                              break;
                            case "take":
                              t = bn(t, e + a);
                              break;
                            case "takeRight":
                              e = _n(e, t - a)
                          }
                        }
                        return {
                          start: e,
                          end: t
                        }
                      }(0, i, this.__views__),
                      a = o.start,
                      s = o.end,
                      l = s - a,
                      c = r ? s : a - 1,
                      u = this.__iteratees__,
                      h = u.length,
                      p = 0,
                      d = bn(l, this.__takeCount__);
                    if (!n || !r && i == l && d == l) return fi(e, this.__actions__);
                    var f = [];
                    e: for (; l-- && p < d;) {
                      for (var g = -1, m = e[c += t]; ++g < h;) {
                        var v = u[g],
                          _ = v.iteratee,
                          b = v.type,
                          y = _(m);
                        if (2 == b) m = y;
                        else if (!y) {
                          if (1 == b) continue e;
                          break e
                        }
                      }
                      f[p++] = m
                    }
                    return f
                  }, zn.prototype.at = fa, zn.prototype.chain = function() {
                    return pa(this)
                  }, zn.prototype.commit = function() {
                    return new Wn(this.value(), this.__chain__)
                  }, zn.prototype.next = function() {
                    this.__values__ === n && (this.__values__ = ps(this.value()));
                    var e = this.__index__ >= this.__values__.length;
                    return {
                      done: e,
                      value: e ? n : this.__values__[this.__index__++]
                    }
                  }, zn.prototype.plant = function(e) {
                    for (var t, r = this; r instanceof Un;) {
                      var i = Bo(r);
                      i.__index__ = 0, i.__values__ = n, t ? o.__wrapped__ = i : t = i;
                      var o = i;
                      r = r.__wrapped__
                    }
                    return o.__wrapped__ = e, t
                  }, zn.prototype.reverse = function() {
                    var e = this.__wrapped__;
                    if (e instanceof Vn) {
                      var t = e;
                      return this.__actions__.length && (t = new Vn(this)), (t = t.reverse()).__actions__.push({
                        func: da,
                        args: [ea],
                        thisArg: n
                      }), new Wn(t, this.__chain__)
                    }
                    return this.thru(ea)
                  }, zn.prototype.toJSON = zn.prototype.valueOf = zn.prototype.value = function() {
                    return fi(this.__wrapped__, this.__actions__)
                  }, zn.prototype.first = zn.prototype.head, Ze && (zn.prototype[Ze] = function() {
                    return this
                  }), zn
              }();
              mt ? ((mt.exports = vn)._ = vn, gt._ = vn) : ft._ = vn
            }).call(W)
          }(re, re.exports);
          var ie = new class {
              constructor() {
                f(this, "instances", []), f(this, "imgOrders", []), f(this, "customOrder", [])
              }
              addInstance(e, t) {
                e && (this.instances[t] = e, window.appparakeet_fabric_instance = this.instances)
              }
              addImgOrders(e, t) {
                !this.imgOrders[t] && e && (this.imgOrders[t] = e)
              }
              getCoordinates() {
                var e = this;
                if (this.instances.length > 0) {
                  var t = function() {
                    var t = [],
                      n = e.instances.reduce(((e, t) => t === e)),
                      r = e.instances.length;
                    n && (r = 1);
                    for (var i = function(n) {
                        var r = e.instances[n].getObjects(),
                          i = e.instances[n].height,
                          o = e.instances[n].width;
                        r.forEach(((e, n) => {
                          "text" === e.configType ? t.push({
                            canvasHeight: i,
                            canvasWidth: o,
                            configType: e.configType,
                            left: e.left - e.width / 2,
                            top: e.top - e.height / 2,
                            height: e.height * e.scaleY,
                            width: e.width * e.scaleX,
                            angle: e.angle,
                            oid: e.oid,
                            fid: e.fid
                          }) : "boundsReact" !== e.shapeType && "overlay" !== e.shapeType && t.push({
                            canvasHeight: i,
                            canvasWidth: o,
                            configType: e.configType,
                            oid: e.oid,
                            fid: e.fid,
                            left: e.left,
                            top: e.top,
                            height: e.height * e.scaleY,
                            width: e.width * e.scaleX,
                            angle: e.angle
                          })
                        }))
                      }, o = 0; o < r; o++) i(o);
                    return {
                      v: t
                    }
                  }();
                  if ("object" == typeof t) return t.v
                }
              }
              createImgs() {
                var e = this;
                return d((function*() {
                  for (var t = [], n = 0; n < (null === (r = e.instances) || void 0 === r ? void 0 : r.length); n++) {
                    var r, i = yield e._createImg(e.instances[n], n);
                    i && t.push(i)
                  }
                  return t
                }))()
              }
              _createImg(e, t) {
                var n = this;
                return d((function*() {
                  var r, i, o;
                  if (null === (r = e.getObjects()) || void 0 === r || !r.length) return null;
                  e.discardActiveObject(), null === (i = e.getObjects("rect")) || void 0 === i || i.forEach((function(e) {
                    e.set({
                      fill: "transparent"
                    })
                  })), null === (o = e.getObjects()) || void 0 === o || o.forEach((function(e) {
                    "text" == e.configTye && e.previewOrder && e.moveTo(e.previewOrder)
                  }));
                  var a = e.toDataURL({
                      multiplier: 2,
                      format: A
                    }),
                    s = S(A),
                    l = "";
                  try {
                    l = yield _(E(a), s)
                  } catch (e) {
                    return null
                  }
                  return {
                    type: "preview",
                    key: ["composite", "image"].concat(n.imgOrders[t]).join("_"),
                    value: l
                  }
                }))()
              }
              createPrintImgs(e) {
                var t = this;
                return d((function*() {
                  var n = [];
                  t.customOrder = e;
                  for (var r = 0; r < (null === (i = t.instances) || void 0 === i ? void 0 : i.length); r++) {
                    var i, o = yield t._createPrintImg(t.instances[r], r);
                    o && n.push(o)
                  }
                  return n
                }))()
              }
              _createPrintImg(e, t) {
                var n = this;
                return d((function*() {
                  var t, r, i;
                  return null !== (t = e.getObjects()) && void 0 !== t && t.length ? (e.discardActiveObject(), null === (r = e.getObjects("rect")) || void 0 === r || r.forEach((function(e) {
                    e.set({
                      fill: "transparent"
                    })
                  })), null === (i = e.getObjects()) || void 0 === i || i.forEach((function(e) {
                    "text" == e.configTye && e.previewOrder && e.moveTo(e.previewOrder)
                  })), n.createPrintResults(e)) : null
                }))()
              }
              createPrintResults(e) {
                var t = this;
                return d((function*() {
                  var n = t,
                    r = re.exports.cloneDeep(e).getObjects().filter((e => "boundsReact" !== e.shapeType)),
                    i = r.map(((e, t) => n.getPrintUrl(e).then((t => {
                      var r = n.customOrder.find((t => e.fid === t.fid)).order;
                      return {
                        type: "print",
                        key: ["print", "image"].concat([r]).join("_"),
                        value: t
                      }
                    })))),
                    o = new X.fabric.Group(r),
                    a = n.getPrintUrl(o).then((e => {
                      var t = n.customOrder.map((e => e.order));
                      return {
                        type: "print",
                        key: ["print", "image"].concat(t).join("_"),
                        value: e
                      }
                    }));
                  i.push(a);
                  var s = [];
                  try {
                    s = (yield Promise.allSettled(i)).filter((e => "fulfilled" === e.status)).map((e => e.value))
                  } catch (e) {}
                  return s
                }))()
              }
              getPrintUrl(e) {
                return d((function*() {
                  var t = e.toDataURL({
                      multiplier: ne.divide(3500, e.getScaledWidth()),
                      format: A
                    }),
                    n = S(A),
                    r = "";
                  try {
                    r = yield _(E(t), n)
                  } catch (e) {
                    return null
                  }
                  return r
                }))()
              }
            },
            oe = function(e, t) {
              return oe = Object.setPrototypeOf || {
                __proto__: []
              }
              instanceof Array && function(e, t) {
                e.__proto__ = t
              } || function(e, t) {
                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
              }, oe(e, t)
            };

          function ae(e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");

            function n() {
              this.constructor = e
            }
            oe(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
          }
          var se = function() {
            return se = Object.assign || function(e) {
              for (var t, n = 1, r = arguments.length; n < r; n++)
                for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
              return e
            }, se.apply(this, arguments)
          };

          function le(e, t) {
            var n = {};
            for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]);
            if (null != e && "function" == typeof Object.getOwnPropertySymbols) {
              var i = 0;
              for (r = Object.getOwnPropertySymbols(e); i < r.length; i++) t.indexOf(r[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, r[i]) && (n[r[i]] = e[r[i]])
            }
            return n
          }

          function ce(e, t, n, r) {
            return new(n || (n = Promise))((function(i, o) {
              function a(e) {
                try {
                  l(r.next(e))
                } catch (e) {
                  o(e)
                }
              }

              function s(e) {
                try {
                  l(r.throw(e))
                } catch (e) {
                  o(e)
                }
              }

              function l(e) {
                var t;
                e.done ? i(e.value) : (t = e.value, t instanceof n ? t : new n((function(e) {
                  e(t)
                }))).then(a, s)
              }
              l((r = r.apply(e, t || [])).next())
            }))
          }

          function ue(e, t) {
            var n, r, i, o, a = {
              label: 0,
              sent: function() {
                if (1 & i[0]) throw i[1];
                return i[1]
              },
              trys: [],
              ops: []
            };
            return o = {
              next: s(0),
              throw: s(1),
              return: s(2)
            }, "function" == typeof Symbol && (o[Symbol.iterator] = function() {
              return this
            }), o;

            function s(s) {
              return function(l) {
                return function(s) {
                  if (n) throw new TypeError("Generator is already executing.");
                  for (; o && (o = 0, s[0] && (a = 0)), a;) try {
                    if (n = 1, r && (i = 2 & s[0] ? r.return : s[0] ? r.throw || ((i = r.return) && i.call(r), 0) : r.next) && !(i = i.call(r, s[1])).done) return i;
                    switch (r = 0, i && (s = [2 & s[0], i.value]), s[0]) {
                      case 0:
                      case 1:
                        i = s;
                        break;
                      case 4:
                        return a.label++, {
                          value: s[1],
                          done: !1
                        };
                      case 5:
                        a.label++, r = s[1], s = [0];
                        continue;
                      case 7:
                        s = a.ops.pop(), a.trys.pop();
                        continue;
                      default:
                        if (!(i = a.trys, (i = i.length > 0 && i[i.length - 1]) || 6 !== s[0] && 2 !== s[0])) {
                          a = 0;
                          continue
                        }
                        if (3 === s[0] && (!i || s[1] > i[0] && s[1] < i[3])) {
                          a.label = s[1];
                          break
                        }
                        if (6 === s[0] && a.label < i[1]) {
                          a.label = i[1], i = s;
                          break
                        }
                        if (i && a.label < i[2]) {
                          a.label = i[2], a.ops.push(s);
                          break
                        }
                        i[2] && a.ops.pop(), a.trys.pop();
                        continue
                    }
                    s = t.call(e, a)
                  } catch (e) {
                    s = [6, e], r = 0
                  } finally {
                    n = i = 0
                  }
                  if (5 & s[0]) throw s[1];
                  return {
                    value: s[0] ? s[1] : void 0,
                    done: !0
                  }
                }([s, l])
              }
            }
          }

          function he(e, t) {
            var n = "function" == typeof Symbol && e[Symbol.iterator];
            if (!n) return e;
            var r, i, o = n.call(e),
              a = [];
            try {
              for (;
                (void 0 === t || t-- > 0) && !(r = o.next()).done;) a.push(r.value)
            } catch (e) {
              i = {
                error: e
              }
            } finally {
              try {
                r && !r.done && (n = o.return) && n.call(o)
              } finally {
                if (i) throw i.error
              }
            }
            return a
          }

          function pe(e, t, n) {
            if (n || 2 === arguments.length)
              for (var r, i = 0, o = t.length; i < o; i++) !r && i in t || (r || (r = Array.prototype.slice.call(t, 0, i)), r[i] = t[i]);
            return e.concat(r || Array.prototype.slice.call(t))
          }
          var de, fe, ge, me, ve, _e, be, ye, we = {},
            xe = [],
            ke = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,
            Ce = Array.isArray;

          function Se(e, t) {
            for (var n in t) e[n] = t[n];
            return e
          }

          function Ee(e) {
            var t = e.parentNode;
            t && t.removeChild(e)
          }

          function Te(e, t, n) {
            var r, i, o, a = {};
            for (o in t) "key" == o ? r = t[o] : "ref" == o ? i = t[o] : a[o] = t[o];
            if (arguments.length > 2 && (a.children = arguments.length > 3 ? de.call(arguments, 2) : n), "function" == typeof e && null != e.defaultProps)
              for (o in e.defaultProps) void 0 === a[o] && (a[o] = e.defaultProps[o]);
            return Oe(e, a, r, i, null)
          }

          function Oe(e, t, n, r, i) {
            var o = {
              type: e,
              props: t,
              key: n,
              ref: r,
              __k: null,
              __: null,
              __b: 0,
              __e: null,
              __d: void 0,
              __c: null,
              __h: null,
              constructor: void 0,
              __v: null == i ? ++ge : i
            };
            return null == i && null != fe.vnode && fe.vnode(o), o
          }

          function Ae() {
            return {
              current: null
            }
          }

          function Pe(e) {
            return e.children
          }

          function Me(e, t) {
            this.props = e, this.context = t
          }

          function De(e, t) {
            if (null == t) return e.__ ? De(e.__, e.__.__k.indexOf(e) + 1) : null;
            for (var n; t < e.__k.length; t++)
              if (null != (n = e.__k[t]) && null != n.__e) return n.__e;
            return "function" == typeof e.type ? De(e) : null
          }

          function Ie(e) {
            var t, n;
            if (null != (e = e.__) && null != e.__c) {
              for (e.__e = e.__c.base = null, t = 0; t < e.__k.length; t++)
                if (null != (n = e.__k[t]) && null != n.__e) {
                  e.__e = e.__c.base = n.__e;
                  break
                } return Ie(e)
            }
          }

          function Ne(e) {
            (!e.__d && (e.__d = !0) && me.push(e) && !Re.__r++ || ve !== fe.debounceRendering) && ((ve = fe.debounceRendering) || _e)(Re)
          }

          function Re() {
            var e, t, n, r, i, o, a, s, l;
            for (me.sort(be); e = me.shift();) e.__d && (t = me.length, r = void 0, i = void 0, o = void 0, s = (a = (n = e).__v).__e, (l = n.__P) && (r = [], i = [], (o = Se({}, a)).__v = a.__v + 1, Xe(l, a, o, n.__n, void 0 !== l
              .ownerSVGElement, null != a.__h ? [s] : null, r, null == s ? De(a) : s, a.__h, i), Ge(r, a, i), a.__e != s && Ie(a)), me.length > t && me.sort(be));
            Re.__r = 0
          }

          function je(e, t, n, r, i, o, a, s, l, c, u) {
            var h, p, d, f, g, m, v, _, b, y, w = 0,
              x = r && r.__k || xe,
              k = x.length,
              C = k,
              S = t.length;
            for (n.__k = [], h = 0; h < S; h++) null != (f = n.__k[h] = null == (f = t[h]) || "boolean" == typeof f || "function" == typeof f ? null : "string" == typeof f || "number" == typeof f || "bigint" == typeof f ? Oe(null, f, null, null,
              f) : Ce(f) ? Oe(Pe, {
              children: f
            }, null, null, null) : f.__b > 0 ? Oe(f.type, f.props, f.key, f.ref ? f.ref : null, f.__v) : f) && (f.__ = n, f.__b = n.__b + 1, -1 === (_ = ze(f, x, v = h + w, C)) ? d = we : (d = x[_] || we, x[_] = void 0, C--), Xe(e, f, d, i, o,
              a, s, l, c, u), g = f.__e, (p = f.ref) && d.ref != p && (d.ref && Ye(d.ref, null, f), u.push(p, f.__c || g, f)), null != g && (null == m && (m = g), y = !(b = d === we || null === d.__v) && _ === v, b ? -1 == _ && w-- : _ !==
              v && (_ === v + 1 ? (w++, y = !0) : _ > v ? C > S - v ? (w += _ - v, y = !0) : w-- : w = _ < v && _ == v - 1 ? _ - v : 0), v = h + w, y = y || _ == h && !b, "function" != typeof f.type || _ === v && d.__k !== f.__k ?
              "function" == typeof f.type || y ? void 0 !== f.__d ? (l = f.__d, f.__d = void 0) : l = g.nextSibling : l = Be(e, g, l) : l = Le(f, l, e), "function" == typeof n.type && (n.__d = l)));
            for (n.__e = m, h = k; h--;) null != x[h] && ("function" == typeof n.type && null != x[h].__e && x[h].__e == n.__d && (n.__d = x[h].__e.nextSibling), qe(x[h], x[h]))
          }

          function Le(e, t, n) {
            for (var r, i = e.__k, o = 0; i && o < i.length; o++)(r = i[o]) && (r.__ = e, t = "function" == typeof r.type ? Le(r, t, n) : Be(n, r.__e, t));
            return t
          }

          function Fe(e, t) {
            return t = t || [], null == e || "boolean" == typeof e || (Ce(e) ? e.some((function(e) {
              Fe(e, t)
            })) : t.push(e)), t
          }

          function Be(e, t, n) {
            return null == n || n.parentNode !== e ? e.insertBefore(t, null) : t == n && null != t.parentNode || e.insertBefore(t, n), t.nextSibling
          }

          function ze(e, t, n, r) {
            var i = e.key,
              o = e.type,
              a = n - 1,
              s = n + 1,
              l = t[n];
            if (null === l || l && i == l.key && o === l.type) return n;
            if (r > (null != l ? 1 : 0))
              for (; a >= 0 || s < t.length;) {
                if (a >= 0) {
                  if ((l = t[a]) && i == l.key && o === l.type) return a;
                  a--
                }
                if (s < t.length) {
                  if ((l = t[s]) && i == l.key && o === l.type) return s;
                  s++
                }
              }
            return -1
          }

          function He(e, t, n) {
            "-" === t[0] ? e.setProperty(t, null == n ? "" : n) : e[t] = null == n ? "" : "number" != typeof n || ke.test(t) ? n : n + "px"
          }

          function Ue(e, t, n, r, i) {
            var o;
            e: if ("style" === t)
              if ("string" == typeof n) e.style.cssText = n;
              else {
                if ("string" == typeof r && (e.style.cssText = r = ""), r)
                  for (t in r) n && t in n || He(e.style, t, "");
                if (n)
                  for (t in n) r && n[t] === r[t] || He(e.style, t, n[t])
              }
            else if ("o" === t[0] && "n" === t[1]) o = t !== (t = t.replace(/Capture$/, "")), t = t.toLowerCase() in e ? t.toLowerCase().slice(2) : t.slice(2), e.l || (e.l = {}), e.l[t + o] = n, n ? r || e.addEventListener(t, o ? Ve : We, o) : e
              .removeEventListener(t, o ? Ve : We, o);
            else if ("dangerouslySetInnerHTML" !== t) {
              if (i) t = t.replace(/xlink(H|:h)/, "h").replace(/sName$/, "s");
              else if ("width" !== t && "height" !== t && "href" !== t && "list" !== t && "form" !== t && "tabIndex" !== t && "download" !== t && "rowSpan" !== t && "colSpan" !== t && t in e) try {
                e[t] = null == n ? "" : n;
                break e
              } catch (e) {}
              "function" == typeof n || (null == n || !1 === n && "-" !== t[4] ? e.removeAttribute(t) : e.setAttribute(t, n))
            }
          }

          function We(e) {
            return this.l[e.type + !1](fe.event ? fe.event(e) : e)
          }

          function Ve(e) {
            return this.l[e.type + !0](fe.event ? fe.event(e) : e)
          }

          function Xe(e, t, n, r, i, o, a, s, l, c) {
            var u, h, p, d, f, g, m, v, _, b, y, w, x, k, C, S = t.type;
            if (void 0 !== t.constructor) return null;
            null != n.__h && (l = n.__h, s = t.__e = n.__e, t.__h = null, o = [s]), (u = fe.__b) && u(t);
            try {
              e: if ("function" == typeof S) {
                if (v = t.props, _ = (u = S.contextType) && r[u.__c], b = u ? _ ? _.props.value : u.__ : r, n.__c ? m = (h = t.__c = n.__c).__ = h.__E : ("prototype" in S && S.prototype.render ? t.__c = h = new S(v, b) : (t.__c = h = new Me(v,
                    b), h.constructor = S, h.render = Ke), _ && _.sub(h), h.props = v, h.state || (h.state = {}), h.context = b, h.__n = r, p = h.__d = !0, h.__h = [], h._sb = []), null == h.__s && (h.__s = h.state), null != S
                  .getDerivedStateFromProps && (h.__s == h.state && (h.__s = Se({}, h.__s)), Se(h.__s, S.getDerivedStateFromProps(v, h.__s))), d = h.props, f = h.state, h.__v = t, p) null == S.getDerivedStateFromProps && null != h
                  .componentWillMount && h.componentWillMount(), null != h.componentDidMount && h.__h.push(h.componentDidMount);
                else {
                  if (null == S.getDerivedStateFromProps && v !== d && null != h.componentWillReceiveProps && h.componentWillReceiveProps(v, b), !h.__e && (null != h.shouldComponentUpdate && !1 === h.shouldComponentUpdate(v, h.__s, b) || t
                      .__v === n.__v)) {
                    for (t.__v !== n.__v && (h.props = v, h.state = h.__s, h.__d = !1), t.__e = n.__e, t.__k = n.__k, t.__k.forEach((function(e) {
                        e && (e.__ = t)
                      })), y = 0; y < h._sb.length; y++) h.__h.push(h._sb[y]);
                    h._sb = [], h.__h.length && a.push(h);
                    break e
                  }
                  null != h.componentWillUpdate && h.componentWillUpdate(v, h.__s, b), null != h.componentDidUpdate && h.__h.push((function() {
                    h.componentDidUpdate(d, f, g)
                  }))
                }
                if (h.context = b, h.props = v, h.__P = e, h.__e = !1, w = fe.__r, x = 0, "prototype" in S && S.prototype.render) {
                  for (h.state = h.__s, h.__d = !1, w && w(t), u = h.render(h.props, h.state, h.context), k = 0; k < h._sb.length; k++) h.__h.push(h._sb[k]);
                  h._sb = []
                } else
                  do {
                    h.__d = !1, w && w(t), u = h.render(h.props, h.state, h.context), h.state = h.__s
                  } while (h.__d && ++x < 25);
                h.state = h.__s, null != h.getChildContext && (r = Se(Se({}, r), h.getChildContext())), p || null == h.getSnapshotBeforeUpdate || (g = h.getSnapshotBeforeUpdate(d, f)), je(e, Ce(C = null != u && u.type === Pe && null == u.key ?
                  u.props.children : u) ? C : [C], t, n, r, i, o, a, s, l, c), h.base = t.__e, t.__h = null, h.__h.length && a.push(h), m && (h.__E = h.__ = null)
              } else null == o && t.__v === n.__v ? (t.__k = n.__k, t.__e = n.__e) : t.__e = function(e, t, n, r, i, o, a, s, l) {
                var c, u, h, p = n.props,
                  d = t.props,
                  f = t.type,
                  g = 0;
                if ("svg" === f && (i = !0), null != o)
                  for (; g < o.length; g++)
                    if ((c = o[g]) && "setAttribute" in c == !!f && (f ? c.localName === f : 3 === c.nodeType)) {
                      e = c, o[g] = null;
                      break
                    } if (null == e) {
                  if (null === f) return document.createTextNode(d);
                  e = i ? document.createElementNS("http://www.w3.org/2000/svg", f) : document.createElement(f, d.is && d), o = null, s = !1
                }
                if (null === f) p === d || s && e.data === d || (e.data = d);
                else {
                  if (o = o && de.call(e.childNodes), u = (p = n.props || we).dangerouslySetInnerHTML, h = d.dangerouslySetInnerHTML, !s) {
                    if (null != o)
                      for (p = {}, g = 0; g < e.attributes.length; g++) p[e.attributes[g].name] = e.attributes[g].value;
                    (h || u) && (h && (u && h.__html == u.__html || h.__html === e.innerHTML) || (e.innerHTML = h && h.__html || ""))
                  }
                  if (function(e, t, n, r, i) {
                      var o;
                      for (o in n) "children" === o || "key" === o || o in t || Ue(e, o, null, n[o], r);
                      for (o in t) i && "function" != typeof t[o] || "children" === o || "key" === o || "value" === o || "checked" === o || n[o] === t[o] || Ue(e, o, t[o], n[o], r)
                    }(e, d, p, i, s), h) t.__k = [];
                  else if (je(e, Ce(g = t.props.children) ? g : [g], t, n, r, i && "foreignObject" !== f, o, a, o ? o[0] : n.__k && De(n, 0), s, l), null != o)
                    for (g = o.length; g--;) null != o[g] && Ee(o[g]);
                  s || ("value" in d && void 0 !== (g = d.value) && (g !== e.value || "progress" === f && !g || "option" === f && g !== p.value) && Ue(e, "value", g, p.value, !1), "checked" in d && void 0 !== (g = d.checked) && g !== e
                    .checked && Ue(e, "checked", g, p.checked, !1))
                }
                return e
              }(n.__e, t, n, r, i, o, a, l, c);
              (u = fe.diffed) && u(t)
            }
            catch (e) {
              t.__v = null, (l || null != o) && (t.__e = s, t.__h = !!l, o[o.indexOf(s)] = null), fe.__e(e, t, n)
            }
          }

          function Ge(e, t, n) {
            for (var r = 0; r < n.length; r++) Ye(n[r], n[++r], n[++r]);
            fe.__c && fe.__c(t, e), e.some((function(t) {
              try {
                e = t.__h, t.__h = [], e.some((function(e) {
                  e.call(t)
                }))
              } catch (e) {
                fe.__e(e, t.__v)
              }
            }))
          }

          function Ye(e, t, n) {
            try {
              "function" == typeof e ? e(t) : e.current = t
            } catch (e) {
              fe.__e(e, n)
            }
          }

          function qe(e, t, n) {
            var r, i;
            if (fe.unmount && fe.unmount(e), (r = e.ref) && (r.current && r.current !== e.__e || Ye(r, null, t)), null != (r = e.__c)) {
              if (r.componentWillUnmount) try {
                r.componentWillUnmount()
              } catch (e) {
                fe.__e(e, t)
              }
              r.base = r.__P = null, e.__c = void 0
            }
            if (r = e.__k)
              for (i = 0; i < r.length; i++) r[i] && qe(r[i], t, n || "function" != typeof e.type);
            n || null == e.__e || Ee(e.__e), e.__ = e.__e = e.__d = void 0
          }

          function Ke(e, t, n) {
            return this.constructor(e, n)
          }

          function $e(e, t, n) {
            var r, i, o, a;
            fe.__ && fe.__(e, t), i = (r = "function" == typeof n) ? null : n && n.__k || t.__k, o = [], a = [], Xe(t, e = (!r && n || t).__k = Te(Pe, null, [e]), i || we, we, void 0 !== t.ownerSVGElement, !r && n ? [n] : i ? null : t
              .firstChild ? de.call(t.childNodes) : null, o, !r && n ? n : i ? i.__e : t.firstChild, r, a), Ge(o, e, a)
          }

          function Ze(e, t) {
            $e(e, t, Ze)
          }

          function Je(e, t, n) {
            var r, i, o, a, s = Se({}, e.props);
            for (o in e.type && e.type.defaultProps && (a = e.type.defaultProps), t) "key" == o ? r = t[o] : "ref" == o ? i = t[o] : s[o] = void 0 === t[o] && void 0 !== a ? a[o] : t[o];
            return arguments.length > 2 && (s.children = arguments.length > 3 ? de.call(arguments, 2) : n), Oe(e.type, s, r || e.key, i || e.ref, null)
          }

          function Qe(e, t) {
            var n = {
              __c: t = "__cC" + ye++,
              __: e,
              Consumer: function(e, t) {
                return e.children(t)
              },
              Provider: function(e) {
                var n, r;
                return this.getChildContext || (n = [], (r = {})[t] = this, this.getChildContext = function() {
                  return r
                }, this.shouldComponentUpdate = function(e) {
                  this.props.value !== e.value && n.some((function(e) {
                    e.__e = !0, Ne(e)
                  }))
                }, this.sub = function(e) {
                  n.push(e);
                  var t = e.componentWillUnmount;
                  e.componentWillUnmount = function() {
                    n.splice(n.indexOf(e), 1), t && t.call(e)
                  }
                }), e.children
              }
            };
            return n.Provider.__ = n.Consumer.contextType = n
          }
          de = xe.slice, fe = {
            __e: function(e, t, n, r) {
              for (var i, o, a; t = t.__;)
                if ((i = t.__c) && !i.__) try {
                  if ((o = i.constructor) && null != o.getDerivedStateFromError && (i.setState(o.getDerivedStateFromError(e)), a = i.__d), null != i.componentDidCatch && (i.componentDidCatch(e, r || {}), a = i.__d), a) return i.__E = i
                } catch (t) {
                  e = t
                }
              throw e
            }
          }, ge = 0, Me.prototype.setState = function(e, t) {
            var n;
            n = null != this.__s && this.__s !== this.state ? this.__s : this.__s = Se({}, this.state), "function" == typeof e && (e = e(Se({}, n), this.props)), e && Se(n, e), null != e && this.__v && (t && this._sb.push(t), Ne(this))
          }, Me.prototype.forceUpdate = function(e) {
            this.__v && (this.__e = !0, e && this.__h.push(e), Ne(this))
          }, Me.prototype.render = Pe, me = [], _e = "function" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, be = function(e, t) {
            return e.__v.__b - t.__v.__b
          }, Re.__r = 0, ye = 0;
          var et, tt, nt, rt, it = 0,
            ot = [],
            at = [],
            st = fe.__b,
            lt = fe.__r,
            ct = fe.diffed,
            ut = fe.__c,
            ht = fe.unmount;

          function pt(e, t) {
            fe.__h && fe.__h(tt, e, it || t), it = 0;
            var n = tt.__H || (tt.__H = {
              __: [],
              __h: []
            });
            return e >= n.__.length && n.__.push({
              __V: at
            }), n.__[e]
          }

          function dt(e) {
            return it = 1, ft(Pt, e)
          }

          function ft(e, t, n) {
            var r = pt(et++, 2);
            if (r.t = e, !r.__c && (r.__ = [n ? n(t) : Pt(void 0, t), function(e) {
                var t = r.__N ? r.__N[0] : r.__[0],
                  n = r.t(t, e);
                t !== n && (r.__N = [n, r.__[1]], r.__c.setState({}))
              }], r.__c = tt, !tt.u)) {
              var i = function(e, t, n) {
                if (!r.__c.__H) return !0;
                var i = r.__c.__H.__.filter((function(e) {
                  return e.__c
                }));
                if (i.every((function(e) {
                    return !e.__N
                  }))) return !o || o.call(this, e, t, n);
                var a = !1;
                return i.forEach((function(e) {
                  if (e.__N) {
                    var t = e.__[0];
                    e.__ = e.__N, e.__N = void 0, t !== e.__[0] && (a = !0)
                  }
                })), !(!a && r.__c.props === e) && (!o || o.call(this, e, t, n))
              };
              tt.u = !0;
              var o = tt.shouldComponentUpdate,
                a = tt.componentWillUpdate;
              tt.componentWillUpdate = function(e, t, n) {
                if (this.__e) {
                  var r = o;
                  o = void 0, i(e, t, n), o = r
                }
                a && a.call(this, e, t, n)
              }, tt.shouldComponentUpdate = i
            }
            return r.__N || r.__
          }

          function gt(e, t) {
            var n = pt(et++, 3);
            !fe.__s && At(n.__H, t) && (n.__ = e, n.i = t, tt.__H.__h.push(n))
          }

          function mt(e, t) {
            var n = pt(et++, 4);
            !fe.__s && At(n.__H, t) && (n.__ = e, n.i = t, tt.__h.push(n))
          }

          function vt(e) {
            return it = 5, bt((function() {
              return {
                current: e
              }
            }), [])
          }

          function _t(e, t, n) {
            it = 6, mt((function() {
              return "function" == typeof e ? (e(t()), function() {
                return e(null)
              }) : e ? (e.current = t(), function() {
                return e.current = null
              }) : void 0
            }), null == n ? n : n.concat(e))
          }

          function bt(e, t) {
            var n = pt(et++, 7);
            return At(n.__H, t) ? (n.__V = e(), n.i = t, n.__h = e, n.__V) : n.__
          }

          function yt(e, t) {
            return it = 8, bt((function() {
              return e
            }), t)
          }

          function wt(e) {
            var t = tt.context[e.__c],
              n = pt(et++, 9);
            return n.c = e, t ? (null == n.__ && (n.__ = !0, t.sub(tt)), t.props.value) : e.__
          }

          function xt(e, t) {
            fe.useDebugValue && fe.useDebugValue(t ? t(e) : e)
          }

          function kt() {
            var e = pt(et++, 11);
            if (!e.__) {
              for (var t = tt.__v; null !== t && !t.__m && null !== t.__;) t = t.__;
              var n = t.__m || (t.__m = [0, 0]);
              e.__ = "P" + n[0] + "-" + n[1]++
            }
            return e.__
          }

          function Ct() {
            for (var e; e = ot.shift();)
              if (e.__P && e.__H) try {
                e.__H.__h.forEach(Tt), e.__H.__h.forEach(Ot), e.__H.__h = []
              } catch (t) {
                e.__H.__h = [], fe.__e(t, e.__v)
              }
          }
          fe.__b = function(e) {
            tt = null, st && st(e)
          }, fe.__r = function(e) {
            lt && lt(e), et = 0;
            var t = (tt = e.__c).__H;
            t && (nt === tt ? (t.__h = [], tt.__h = [], t.__.forEach((function(e) {
              e.__N && (e.__ = e.__N), e.__V = at, e.__N = e.i = void 0
            }))) : (t.__h.forEach(Tt), t.__h.forEach(Ot), t.__h = [], et = 0)), nt = tt
          }, fe.diffed = function(e) {
            ct && ct(e);
            var t = e.__c;
            t && t.__H && (t.__H.__h.length && (1 !== ot.push(t) && rt === fe.requestAnimationFrame || ((rt = fe.requestAnimationFrame) || Et)(Ct)), t.__H.__.forEach((function(e) {
              e.i && (e.__H = e.i), e.__V !== at && (e.__ = e.__V), e.i = void 0, e.__V = at
            }))), nt = tt = null
          }, fe.__c = function(e, t) {
            t.some((function(e) {
              try {
                e.__h.forEach(Tt), e.__h = e.__h.filter((function(e) {
                  return !e.__ || Ot(e)
                }))
              } catch (n) {
                t.some((function(e) {
                  e.__h && (e.__h = [])
                })), t = [], fe.__e(n, e.__v)
              }
            })), ut && ut(e, t)
          }, fe.unmount = function(e) {
            ht && ht(e);
            var t, n = e.__c;
            n && n.__H && (n.__H.__.forEach((function(e) {
              try {
                Tt(e)
              } catch (e) {
                t = e
              }
            })), n.__H = void 0, t && fe.__e(t, n.__v))
          };
          var St = "function" == typeof requestAnimationFrame;

          function Et(e) {
            var t, n = function() {
                clearTimeout(r), St && cancelAnimationFrame(t), setTimeout(e)
              },
              r = setTimeout(n, 100);
            St && (t = requestAnimationFrame(n))
          }

          function Tt(e) {
            var t = tt,
              n = e.__c;
            "function" == typeof n && (e.__c = void 0, n()), tt = t
          }

          function Ot(e) {
            var t = tt;
            e.__c = e.__(), tt = t
          }

          function At(e, t) {
            return !e || e.length !== t.length || t.some((function(t, n) {
              return t !== e[n]
            }))
          }

          function Pt(e, t) {
            return "function" == typeof t ? t(e) : t
          }

          function Mt(e, t) {
            for (var n in t) e[n] = t[n];
            return e
          }

          function Dt(e, t) {
            for (var n in e)
              if ("__source" !== n && !(n in t)) return !0;
            for (var r in t)
              if ("__source" !== r && e[r] !== t[r]) return !0;
            return !1
          }

          function It(e, t) {
            return e === t && (0 !== e || 1 / e == 1 / t) || e != e && t != t
          }

          function Nt(e) {
            this.props = e
          }

          function Rt(e, t) {
            function n(e) {
              var n = this.props.ref,
                r = n == e.ref;
              return !r && n && (n.call ? n(null) : n.current = null), t ? !t(this.props, e) || !r : Dt(this.props, e)
            }

            function r(t) {
              return this.shouldComponentUpdate = n, Te(e, t)
            }
            return r.displayName = "Memo(" + (e.displayName || e.name) + ")", r.prototype.isReactComponent = !0, r.__f = !0, r
          }(Nt.prototype = new Me).isPureReactComponent = !0, Nt.prototype.shouldComponentUpdate = function(e, t) {
            return Dt(this.props, e) || Dt(this.state, t)
          };
          var jt = fe.__b;
          fe.__b = function(e) {
            e.type && e.type.__f && e.ref && (e.props.ref = e.ref, e.ref = null), jt && jt(e)
          };
          var Lt = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.forward_ref") || 3911;

          function Ft(e) {
            function t(t) {
              var n = Mt({}, t);
              return delete n.ref, e(n, t.ref || null)
            }
            return t.$$typeof = Lt, t.render = t, t.prototype.isReactComponent = t.__f = !0, t.displayName = "ForwardRef(" + (e.displayName || e.name) + ")", t
          }
          var Bt = function(e, t) {
              return null == e ? null : Fe(Fe(e).map(t))
            },
            zt = {
              map: Bt,
              forEach: Bt,
              count: function(e) {
                return e ? Fe(e).length : 0
              },
              only: function(e) {
                var t = Fe(e);
                if (1 !== t.length) throw "Children.only";
                return t[0]
              },
              toArray: Fe
            },
            Ht = fe.__e;
          fe.__e = function(e, t, n, r) {
            if (e.then)
              for (var i, o = t; o = o.__;)
                if ((i = o.__c) && i.__c) return null == t.__e && (t.__e = n.__e, t.__k = n.__k), i.__c(e, t);
            Ht(e, t, n, r)
          };
          var Ut = fe.unmount;

          function Wt(e, t, n) {
            return e && (e.__c && e.__c.__H && (e.__c.__H.__.forEach((function(e) {
              "function" == typeof e.__c && e.__c()
            })), e.__c.__H = null), null != (e = Mt({}, e)).__c && (e.__c.__P === n && (e.__c.__P = t), e.__c = null), e.__k = e.__k && e.__k.map((function(e) {
              return Wt(e, t, n)
            }))), e
          }

          function Vt(e, t, n) {
            return e && (e.__v = null, e.__k = e.__k && e.__k.map((function(e) {
              return Vt(e, t, n)
            })), e.__c && e.__c.__P === t && (e.__e && n.insertBefore(e.__e, e.__d), e.__c.__e = !0, e.__c.__P = n)), e
          }

          function Xt() {
            this.__u = 0, this.t = null, this.__b = null
          }

          function Gt(e) {
            var t = e.__.__c;
            return t && t.__a && t.__a(e)
          }

          function Yt(e) {
            var t, n, r;

            function i(i) {
              if (t || (t = e()).then((function(e) {
                  n = e.default || e
                }), (function(e) {
                  r = e
                })), r) throw r;
              if (!n) throw t;
              return Te(n, i)
            }
            return i.displayName = "Lazy", i.__f = !0, i
          }

          function qt() {
            this.u = null, this.o = null
          }
          fe.unmount = function(e) {
            var t = e.__c;
            t && t.__R && t.__R(), t && !0 === e.__h && (e.type = null), Ut && Ut(e)
          }, (Xt.prototype = new Me).__c = function(e, t) {
            var n = t.__c,
              r = this;
            null == r.t && (r.t = []), r.t.push(n);
            var i = Gt(r.__v),
              o = !1,
              a = function() {
                o || (o = !0, n.__R = null, i ? i(s) : s())
              };
            n.__R = a;
            var s = function() {
                if (!--r.__u) {
                  if (r.state.__a) {
                    var e = r.state.__a;
                    r.__v.__k[0] = Vt(e, e.__c.__P, e.__c.__O)
                  }
                  var t;
                  for (r.setState({
                      __a: r.__b = null
                    }); t = r.t.pop();) t.forceUpdate()
                }
              },
              l = !0 === t.__h;
            r.__u++ || l || r.setState({
              __a: r.__b = r.__v.__k[0]
            }), e.then(a, a)
          }, Xt.prototype.componentWillUnmount = function() {
            this.t = []
          }, Xt.prototype.render = function(e, t) {
            if (this.__b) {
              if (this.__v.__k) {
                var n = document.createElement("div"),
                  r = this.__v.__k[0].__c;
                this.__v.__k[0] = Wt(this.__b, n, r.__O = r.__P)
              }
              this.__b = null
            }
            var i = t.__a && Te(Pe, null, e.fallback);
            return i && (i.__h = null), [Te(Pe, null, t.__a ? null : e.children), i]
          };
          var Kt = function(e, t, n) {
            if (++n[1] === n[0] && e.o.delete(t), e.props.revealOrder && ("t" !== e.props.revealOrder[0] || !e.o.size))
              for (n = e.u; n;) {
                for (; n.length > 3;) n.pop()();
                if (n[1] < n[0]) break;
                e.u = n = n[2]
              }
          };

          function $t(e) {
            return this.getChildContext = function() {
              return e.context
            }, e.children
          }

          function Zt(e) {
            var t = this,
              n = e.i;
            t.componentWillUnmount = function() {
              $e(null, t.l), t.l = null, t.i = null
            }, t.i && t.i !== n && t.componentWillUnmount(), e.__v ? (t.l || (t.i = n, t.l = {
              nodeType: 1,
              parentNode: n,
              childNodes: [],
              appendChild: function(e) {
                this.childNodes.push(e), t.i.appendChild(e)
              },
              insertBefore: function(e, n) {
                this.childNodes.push(e), t.i.appendChild(e)
              },
              removeChild: function(e) {
                this.childNodes.splice(this.childNodes.indexOf(e) >>> 1, 1), t.i.removeChild(e)
              }
            }), $e(Te($t, {
              context: t.context
            }, e.__v), t.l)) : t.l && t.componentWillUnmount()
          }

          function Jt(e, t) {
            var n = Te(Zt, {
              __v: e,
              i: t
            });
            return n.containerInfo = t, n
          }(qt.prototype = new Me).__a = function(e) {
            var t = this,
              n = Gt(t.__v),
              r = t.o.get(e);
            return r[0]++,
              function(i) {
                var o = function() {
                  t.props.revealOrder ? (r.push(i), Kt(t, e, r)) : i()
                };
                n ? n(o) : o()
              }
          }, qt.prototype.render = function(e) {
            this.u = null, this.o = new Map;
            var t = Fe(e.children);
            e.revealOrder && "b" === e.revealOrder[0] && t.reverse();
            for (var n = t.length; n--;) this.o.set(t[n], this.u = [1, 0, this.u]);
            return e.children
          }, qt.prototype.componentDidUpdate = qt.prototype.componentDidMount = function() {
            var e = this;
            this.o.forEach((function(t, n) {
              Kt(e, n, t)
            }))
          };
          var Qt = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103,
            en =
            /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,
            tn = /^on(Ani|Tra|Tou|BeforeInp|Compo)/,
            nn = /[A-Z0-9]/g,
            rn = "undefined" != typeof document,
            on = function(e) {
              return ("undefined" != typeof Symbol && "symbol" == typeof Symbol() ? /fil|che|rad/ : /fil|che|ra/).test(e)
            };

          function an(e, t, n) {
            return null == t.__k && (t.textContent = ""), $e(e, t), "function" == typeof n && n(), e ? e.__c : null
          }

          function sn(e, t, n) {
            return Ze(e, t), "function" == typeof n && n(), e ? e.__c : null
          }
          Me.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach((function(e) {
            Object.defineProperty(Me.prototype, e, {
              configurable: !0,
              get: function() {
                return this["UNSAFE_" + e]
              },
              set: function(t) {
                Object.defineProperty(this, e, {
                  configurable: !0,
                  writable: !0,
                  value: t
                })
              }
            })
          }));
          var ln = fe.event;

          function cn() {}

          function un() {
            return this.cancelBubble
          }

          function hn() {
            return this.defaultPrevented
          }
          fe.event = function(e) {
            return ln && (e = ln(e)), e.persist = cn, e.isPropagationStopped = un, e.isDefaultPrevented = hn, e.nativeEvent = e
          };
          var pn, dn = {
              enumerable: !1,
              configurable: !0,
              get: function() {
                return this.class
              }
            },
            fn = fe.vnode;
          fe.vnode = function(e) {
            "string" == typeof e.type && function(e) {
              var t = e.props,
                n = e.type,
                r = {};
              for (var i in t) {
                var o = t[i];
                if (!("value" === i && "defaultValue" in t && null == o || rn && "children" === i && "noscript" === n || "class" === i || "className" === i)) {
                  var a = i.toLowerCase();
                  "defaultValue" === i && "value" in t && null == t.value ? i = "value" : "download" === i && !0 === o ? o = "" : "ondoubleclick" === a ? i = "ondblclick" : "onchange" !== a || "input" !== n && "textarea" !== n || on(t.type) ?
                    "onfocus" === a ? i = "onfocusin" : "onblur" === a ? i = "onfocusout" : tn.test(i) ? i = a : -1 === n.indexOf("-") && en.test(i) ? i = i.replace(nn, "-$&").toLowerCase() : null === o && (o = void 0) : a = i = "oninput",
                    "oninput" === a && r[i = a] && (i = "oninputCapture"), r[i] = o
                }
              }
              "select" == n && r.multiple && Array.isArray(r.value) && (r.value = Fe(t.children).forEach((function(e) {
                e.props.selected = -1 != r.value.indexOf(e.props.value)
              }))), "select" == n && null != r.defaultValue && (r.value = Fe(t.children).forEach((function(e) {
                e.props.selected = r.multiple ? -1 != r.defaultValue.indexOf(e.props.value) : r.defaultValue == e.props.value
              }))), t.class && !t.className ? (r.class = t.class, Object.defineProperty(r, "className", dn)) : (t.className && !t.class || t.class && t.className) && (r.class = r.className = t.className), e.props = r
            }(e), e.$$typeof = Qt, fn && fn(e)
          };
          var gn = fe.__r;
          fe.__r = function(e) {
            gn && gn(e), pn = e.__c
          };
          var mn = fe.diffed;
          fe.diffed = function(e) {
            mn && mn(e);
            var t = e.props,
              n = e.__e;
            null != n && "textarea" === e.type && "value" in t && t.value !== n.value && (n.value = null == t.value ? "" : t.value), pn = null
          };
          var vn = {
            ReactCurrentDispatcher: {
              current: {
                readContext: function(e) {
                  return pn.__n[e.__c].props.value
                }
              }
            }
          };

          function _n(e) {
            return Te.bind(null, e)
          }

          function bn(e) {
            return !!e && e.$$typeof === Qt
          }

          function yn(e) {
            return bn(e) ? Je.apply(null, arguments) : e
          }

          function wn(e) {
            return !!e.__k && ($e(null, e), !0)
          }

          function xn(e) {
            return e && (e.base || 1 === e.nodeType && e) || null
          }
          var kn = function(e, t) {
              return e(t)
            },
            Cn = function(e, t) {
              return e(t)
            },
            Sn = Pe;

          function En(e) {
            e()
          }

          function Tn(e) {
            return e
          }

          function On() {
            return [!1, En]
          }
          var An = mt;

          function Pn(e, t) {
            var n = t(),
              r = dt({
                h: {
                  __: n,
                  v: t
                }
              }),
              i = r[0].h,
              o = r[1];
            return mt((function() {
              i.__ = n, i.v = t, It(i.__, t()) || o({
                h: i
              })
            }), [e, n, t]), gt((function() {
              return It(i.__, i.v()) || o({
                h: i
              }), e((function() {
                It(i.__, i.v()) || o({
                  h: i
                })
              }))
            }), [e]), n
          }
          var Mn, Dn, In, Nn = {
              useState: dt,
              useId: kt,
              useReducer: ft,
              useEffect: gt,
              useLayoutEffect: mt,
              useInsertionEffect: An,
              useTransition: On,
              useDeferredValue: Tn,
              useSyncExternalStore: Pn,
              startTransition: En,
              useRef: vt,
              useImperativeHandle: _t,
              useMemo: bt,
              useCallback: yt,
              useContext: wt,
              useDebugValue: xt,
              version: "17.0.2",
              Children: zt,
              render: an,
              hydrate: sn,
              unmountComponentAtNode: wn,
              createPortal: Jt,
              createElement: Te,
              createContext: Qe,
              createFactory: _n,
              cloneElement: yn,
              createRef: Ae,
              Fragment: Pe,
              isValidElement: bn,
              findDOMNode: xn,
              Component: Me,
              PureComponent: Nt,
              memo: Rt,
              forwardRef: Ft,
              flushSync: Cn,
              unstable_batchedUpdates: kn,
              StrictMode: Sn,
              Suspense: Xt,
              SuspenseList: qt,
              lazy: Yt,
              __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: vn
            },
            Rn = Object.freeze({
              __proto__: null,
              Children: zt,
              PureComponent: Nt,
              StrictMode: Sn,
              Suspense: Xt,
              SuspenseList: qt,
              __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: vn,
              cloneElement: yn,
              createFactory: _n,
              createPortal: Jt,
              default: Nn,
              findDOMNode: xn,
              flushSync: Cn,
              forwardRef: Ft,
              hydrate: sn,
              isValidElement: bn,
              lazy: Yt,
              memo: Rt,
              render: an,
              startTransition: En,
              unmountComponentAtNode: wn,
              unstable_batchedUpdates: kn,
              useDeferredValue: Tn,
              useInsertionEffect: An,
              useSyncExternalStore: Pn,
              useTransition: On,
              version: "17.0.2",
              Component: Me,
              Fragment: Pe,
              createContext: Qe,
              createElement: Te,
              createRef: Ae,
              useCallback: yt,
              useContext: wt,
              useDebugValue: xt,
              useEffect: gt,
              useErrorBoundary: function(e) {
                var t = pt(et++, 10),
                  n = dt();
                return t.__ = e, tt.componentDidCatch || (tt.componentDidCatch = function(e, r) {
                  t.__ && t.__(e, r), n[1](e)
                }), [n[0], function() {
                  n[1](void 0)
                }]
              },
              useId: kt,
              useImperativeHandle: _t,
              useLayoutEffect: mt,
              useMemo: bt,
              useReducer: ft,
              useRef: vt,
              useState: dt
            }),
            jn = {
              exports: {}
            },
            Ln = {},
            Fn = "function" == typeof Symbol && Symbol.for,
            Bn = Fn ? Symbol.for("react.element") : 60103,
            zn = Fn ? Symbol.for("react.portal") : 60106,
            Hn = Fn ? Symbol.for("react.fragment") : 60107,
            Un = Fn ? Symbol.for("react.strict_mode") : 60108,
            Wn = Fn ? Symbol.for("react.profiler") : 60114,
            Vn = Fn ? Symbol.for("react.provider") : 60109,
            Xn = Fn ? Symbol.for("react.context") : 60110,
            Gn = Fn ? Symbol.for("react.async_mode") : 60111,
            Yn = Fn ? Symbol.for("react.concurrent_mode") : 60111,
            qn = Fn ? Symbol.for("react.forward_ref") : 60112,
            Kn = Fn ? Symbol.for("react.suspense") : 60113,
            $n = Fn ? Symbol.for("react.suspense_list") : 60120,
            Zn = Fn ? Symbol.for("react.memo") : 60115,
            Jn = Fn ? Symbol.for("react.lazy") : 60116,
            Qn = Fn ? Symbol.for("react.block") : 60121,
            er = Fn ? Symbol.for("react.fundamental") : 60117,
            tr = Fn ? Symbol.for("react.responder") : 60118,
            nr = Fn ? Symbol.for("react.scope") : 60119;

          function rr(e) {
            if ("object" == typeof e && null !== e) {
              var t = e.$$typeof;
              switch (t) {
                case Bn:
                  switch (e = e.type) {
                    case Gn:
                    case Yn:
                    case Hn:
                    case Wn:
                    case Un:
                    case Kn:
                      return e;
                    default:
                      switch (e = e && e.$$typeof) {
                        case Xn:
                        case qn:
                        case Jn:
                        case Zn:
                        case Vn:
                          return e;
                        default:
                          return t
                      }
                  }
                case zn:
                  return t
              }
            }
          }

          function ir(e) {
            return rr(e) === Yn
          }

          function or(e, t, n) {
            if (void 0 === n && (n = Error), !e) throw new n(t)
          }

          function ar(e) {
            return e.type === Dn.literal
          }

          function sr(e) {
            return e.type === Dn.argument
          }

          function lr(e) {
            return e.type === Dn.number
          }

          function cr(e) {
            return e.type === Dn.date
          }

          function ur(e) {
            return e.type === Dn.time
          }

          function hr(e) {
            return e.type === Dn.select
          }

          function pr(e) {
            return e.type === Dn.plural
          }

          function dr(e) {
            return e.type === Dn.pound
          }

          function fr(e) {
            return e.type === Dn.tag
          }

          function gr(e) {
            return !(!e || "object" != typeof e || e.type !== In.number)
          }

          function mr(e) {
            return !(!e || "object" != typeof e || e.type !== In.dateTime)
          }
          Ln.AsyncMode = Gn, Ln.ConcurrentMode = Yn, Ln.ContextConsumer = Xn, Ln.ContextProvider = Vn, Ln.Element = Bn, Ln.ForwardRef = qn, Ln.Fragment = Hn, Ln.Lazy = Jn, Ln.Memo = Zn, Ln.Portal = zn, Ln.Profiler = Wn, Ln.StrictMode = Un, Ln
            .Suspense = Kn, Ln.isAsyncMode = function(e) {
              return ir(e) || rr(e) === Gn
            }, Ln.isConcurrentMode = ir, Ln.isContextConsumer = function(e) {
              return rr(e) === Xn
            }, Ln.isContextProvider = function(e) {
              return rr(e) === Vn
            }, Ln.isElement = function(e) {
              return "object" == typeof e && null !== e && e.$$typeof === Bn
            }, Ln.isForwardRef = function(e) {
              return rr(e) === qn
            }, Ln.isFragment = function(e) {
              return rr(e) === Hn
            }, Ln.isLazy = function(e) {
              return rr(e) === Jn
            }, Ln.isMemo = function(e) {
              return rr(e) === Zn
            }, Ln.isPortal = function(e) {
              return rr(e) === zn
            }, Ln.isProfiler = function(e) {
              return rr(e) === Wn
            }, Ln.isStrictMode = function(e) {
              return rr(e) === Un
            }, Ln.isSuspense = function(e) {
              return rr(e) === Kn
            }, Ln.isValidElementType = function(e) {
              return "string" == typeof e || "function" == typeof e || e === Hn || e === Yn || e === Wn || e === Un || e === Kn || e === $n || "object" == typeof e && null !== e && (e.$$typeof === Jn || e.$$typeof === Zn || e.$$typeof === Vn || e
                .$$typeof === Xn || e.$$typeof === qn || e.$$typeof === er || e.$$typeof === tr || e.$$typeof === nr || e.$$typeof === Qn)
            }, Ln.typeOf = rr,
            function(e) {
              e.exports = Ln
            }(jn),
            function(e) {
              e[e.EXPECT_ARGUMENT_CLOSING_BRACE = 1] = "EXPECT_ARGUMENT_CLOSING_BRACE", e[e.EMPTY_ARGUMENT = 2] = "EMPTY_ARGUMENT", e[e.MALFORMED_ARGUMENT = 3] = "MALFORMED_ARGUMENT", e[e.EXPECT_ARGUMENT_TYPE = 4] = "EXPECT_ARGUMENT_TYPE", e[e
                  .INVALID_ARGUMENT_TYPE = 5] = "INVALID_ARGUMENT_TYPE", e[e.EXPECT_ARGUMENT_STYLE = 6] = "EXPECT_ARGUMENT_STYLE", e[e.INVALID_NUMBER_SKELETON = 7] = "INVALID_NUMBER_SKELETON", e[e.INVALID_DATE_TIME_SKELETON = 8] =
                "INVALID_DATE_TIME_SKELETON", e[e.EXPECT_NUMBER_SKELETON = 9] = "EXPECT_NUMBER_SKELETON", e[e.EXPECT_DATE_TIME_SKELETON = 10] = "EXPECT_DATE_TIME_SKELETON", e[e.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE = 11] =
                "UNCLOSED_QUOTE_IN_ARGUMENT_STYLE", e[e.EXPECT_SELECT_ARGUMENT_OPTIONS = 12] = "EXPECT_SELECT_ARGUMENT_OPTIONS", e[e.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE = 13] = "EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE", e[e
                  .INVALID_PLURAL_ARGUMENT_OFFSET_VALUE = 14] = "INVALID_PLURAL_ARGUMENT_OFFSET_VALUE", e[e.EXPECT_SELECT_ARGUMENT_SELECTOR = 15] = "EXPECT_SELECT_ARGUMENT_SELECTOR", e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR = 16] =
                "EXPECT_PLURAL_ARGUMENT_SELECTOR", e[e.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT = 17] = "EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT", e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT = 18] = "EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT",
                e[e.INVALID_PLURAL_ARGUMENT_SELECTOR = 19] = "INVALID_PLURAL_ARGUMENT_SELECTOR", e[e.DUPLICATE_PLURAL_ARGUMENT_SELECTOR = 20] = "DUPLICATE_PLURAL_ARGUMENT_SELECTOR", e[e.DUPLICATE_SELECT_ARGUMENT_SELECTOR = 21] =
                "DUPLICATE_SELECT_ARGUMENT_SELECTOR", e[e.MISSING_OTHER_CLAUSE = 22] = "MISSING_OTHER_CLAUSE", e[e.INVALID_TAG = 23] = "INVALID_TAG", e[e.INVALID_TAG_NAME = 25] = "INVALID_TAG_NAME", e[e.UNMATCHED_CLOSING_TAG = 26] =
                "UNMATCHED_CLOSING_TAG", e[e.UNCLOSED_TAG = 27] = "UNCLOSED_TAG"
            }(Mn || (Mn = {})),
            function(e) {
              e[e.literal = 0] = "literal", e[e.argument = 1] = "argument", e[e.number = 2] = "number", e[e.date = 3] = "date", e[e.time = 4] = "time", e[e.select = 5] = "select", e[e.plural = 6] = "plural", e[e.pound = 7] = "pound", e[e.tag =
                8] = "tag"
            }(Dn || (Dn = {})),
            function(e) {
              e[e.number = 0] = "number", e[e.dateTime = 1] = "dateTime"
            }(In || (In = {}));
          var vr = /[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000]/,
            _r = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;

          function br(e) {
            var t = {};
            return e.replace(_r, (function(e) {
              var n = e.length;
              switch (e[0]) {
                case "G":
                  t.era = 4 === n ? "long" : 5 === n ? "narrow" : "short";
                  break;
                case "y":
                  t.year = 2 === n ? "2-digit" : "numeric";
                  break;
                case "Y":
                case "u":
                case "U":
                case "r":
                  throw new RangeError("`Y/u/U/r` (year) patterns are not supported, use `y` instead");
                case "q":
                case "Q":
                  throw new RangeError("`q/Q` (quarter) patterns are not supported");
                case "M":
                case "L":
                  t.month = ["numeric", "2-digit", "short", "long", "narrow"][n - 1];
                  break;
                case "w":
                case "W":
                  throw new RangeError("`w/W` (week) patterns are not supported");
                case "d":
                  t.day = ["numeric", "2-digit"][n - 1];
                  break;
                case "D":
                case "F":
                case "g":
                  throw new RangeError("`D/F/g` (day) patterns are not supported, use `d` instead");
                case "E":
                  t.weekday = 4 === n ? "short" : 5 === n ? "narrow" : "short";
                  break;
                case "e":
                  if (n < 4) throw new RangeError("`e..eee` (weekday) patterns are not supported");
                  t.weekday = ["short", "long", "narrow", "short"][n - 4];
                  break;
                case "c":
                  if (n < 4) throw new RangeError("`c..ccc` (weekday) patterns are not supported");
                  t.weekday = ["short", "long", "narrow", "short"][n - 4];
                  break;
                case "a":
                  t.hour12 = !0;
                  break;
                case "b":
                case "B":
                  throw new RangeError("`b/B` (period) patterns are not supported, use `a` instead");
                case "h":
                  t.hourCycle = "h12", t.hour = ["numeric", "2-digit"][n - 1];
                  break;
                case "H":
                  t.hourCycle = "h23", t.hour = ["numeric", "2-digit"][n - 1];
                  break;
                case "K":
                  t.hourCycle = "h11", t.hour = ["numeric", "2-digit"][n - 1];
                  break;
                case "k":
                  t.hourCycle = "h24", t.hour = ["numeric", "2-digit"][n - 1];
                  break;
                case "j":
                case "J":
                case "C":
                  throw new RangeError("`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead");
                case "m":
                  t.minute = ["numeric", "2-digit"][n - 1];
                  break;
                case "s":
                  t.second = ["numeric", "2-digit"][n - 1];
                  break;
                case "S":
                case "A":
                  throw new RangeError("`S/A` (second) patterns are not supported, use `s` instead");
                case "z":
                  t.timeZoneName = n < 4 ? "short" : "long";
                  break;
                case "Z":
                case "O":
                case "v":
                case "V":
                case "X":
                case "x":
                  throw new RangeError("`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead")
              }
              return ""
            })), t
          }
          var yr = /[\t-\r \x85\u200E\u200F\u2028\u2029]/i;
          var wr = /^\.(?:(0+)(\*)?|(#+)|(0+)(#+))$/g,
            xr = /^(@+)?(\+|#+)?[rs]?$/g,
            kr = /(\*)(0+)|(#+)(0+)|(0+)/g,
            Cr = /^(0+)$/;

          function Sr(e) {
            var t = {};
            return "r" === e[e.length - 1] ? t.roundingPriority = "morePrecision" : "s" === e[e.length - 1] && (t.roundingPriority = "lessPrecision"), e.replace(xr, (function(e, n, r) {
              return "string" != typeof r ? (t.minimumSignificantDigits = n.length, t.maximumSignificantDigits = n.length) : "+" === r ? t.minimumSignificantDigits = n.length : "#" === n[0] ? t.maximumSignificantDigits = n.length : (t
                .minimumSignificantDigits = n.length, t.maximumSignificantDigits = n.length + ("string" == typeof r ? r.length : 0)), ""
            })), t
          }

          function Er(e) {
            switch (e) {
              case "sign-auto":
                return {
                  signDisplay: "auto"
                };
              case "sign-accounting":
              case "()":
                return {
                  currencySign: "accounting"
                };
              case "sign-always":
              case "+!":
                return {
                  signDisplay: "always"
                };
              case "sign-accounting-always":
              case "()!":
                return {
                  signDisplay: "always", currencySign: "accounting"
                };
              case "sign-except-zero":
              case "+?":
                return {
                  signDisplay: "exceptZero"
                };
              case "sign-accounting-except-zero":
              case "()?":
                return {
                  signDisplay: "exceptZero", currencySign: "accounting"
                };
              case "sign-never":
              case "+_":
                return {
                  signDisplay: "never"
                }
            }
          }

          function Tr(e) {
            var t;
            if ("E" === e[0] && "E" === e[1] ? (t = {
                notation: "engineering"
              }, e = e.slice(2)) : "E" === e[0] && (t = {
                notation: "scientific"
              }, e = e.slice(1)), t) {
              var n = e.slice(0, 2);
              if ("+!" === n ? (t.signDisplay = "always", e = e.slice(2)) : "+?" === n && (t.signDisplay = "exceptZero", e = e.slice(2)), !Cr.test(e)) throw new Error("Malformed concise eng/scientific notation");
              t.minimumIntegerDigits = e.length
            }
            return t
          }

          function Or(e) {
            var t = Er(e);
            return t || {}
          }

          function Ar(e) {
            for (var t = {}, n = 0, r = e; n < r.length; n++) {
              var i = r[n];
              switch (i.stem) {
                case "percent":
                case "%":
                  t.style = "percent";
                  continue;
                case "%x100":
                  t.style = "percent", t.scale = 100;
                  continue;
                case "currency":
                  t.style = "currency", t.currency = i.options[0];
                  continue;
                case "group-off":
                case ",_":
                  t.useGrouping = !1;
                  continue;
                case "precision-integer":
                case ".":
                  t.maximumFractionDigits = 0;
                  continue;
                case "measure-unit":
                case "unit":
                  t.style = "unit", t.unit = i.options[0].replace(/^(.*?)-/, "");
                  continue;
                case "compact-short":
                case "K":
                  t.notation = "compact", t.compactDisplay = "short";
                  continue;
                case "compact-long":
                case "KK":
                  t.notation = "compact", t.compactDisplay = "long";
                  continue;
                case "scientific":
                  t = se(se(se({}, t), {
                    notation: "scientific"
                  }), i.options.reduce((function(e, t) {
                    return se(se({}, e), Or(t))
                  }), {}));
                  continue;
                case "engineering":
                  t = se(se(se({}, t), {
                    notation: "engineering"
                  }), i.options.reduce((function(e, t) {
                    return se(se({}, e), Or(t))
                  }), {}));
                  continue;
                case "notation-simple":
                  t.notation = "standard";
                  continue;
                case "unit-width-narrow":
                  t.currencyDisplay = "narrowSymbol", t.unitDisplay = "narrow";
                  continue;
                case "unit-width-short":
                  t.currencyDisplay = "code", t.unitDisplay = "short";
                  continue;
                case "unit-width-full-name":
                  t.currencyDisplay = "name", t.unitDisplay = "long";
                  continue;
                case "unit-width-iso-code":
                  t.currencyDisplay = "symbol";
                  continue;
                case "scale":
                  t.scale = parseFloat(i.options[0]);
                  continue;
                case "integer-width":
                  if (i.options.length > 1) throw new RangeError("integer-width stems only accept a single optional option");
                  i.options[0].replace(kr, (function(e, n, r, i, o, a) {
                    if (n) t.minimumIntegerDigits = r.length;
                    else {
                      if (i && o) throw new Error("We currently do not support maximum integer digits");
                      if (a) throw new Error("We currently do not support exact integer digits")
                    }
                    return ""
                  }));
                  continue
              }
              if (Cr.test(i.stem)) t.minimumIntegerDigits = i.stem.length;
              else if (wr.test(i.stem)) {
                if (i.options.length > 1) throw new RangeError("Fraction-precision stems only accept a single optional option");
                i.stem.replace(wr, (function(e, n, r, i, o, a) {
                  return "*" === r ? t.minimumFractionDigits = n.length : i && "#" === i[0] ? t.maximumFractionDigits = i.length : o && a ? (t.minimumFractionDigits = o.length, t.maximumFractionDigits = o.length + a.length) : (t
                    .minimumFractionDigits = n.length, t.maximumFractionDigits = n.length), ""
                }));
                var o = i.options[0];
                "w" === o ? t = se(se({}, t), {
                  trailingZeroDisplay: "stripIfInteger"
                }) : o && (t = se(se({}, t), Sr(o)))
              } else if (xr.test(i.stem)) t = se(se({}, t), Sr(i.stem));
              else {
                var a = Er(i.stem);
                a && (t = se(se({}, t), a));
                var s = Tr(i.stem);
                s && (t = se(se({}, t), s))
              }
            }
            return t
          }
          var Pr, Mr = {
            AX: ["H"],
            BQ: ["H"],
            CP: ["H"],
            CZ: ["H"],
            DK: ["H"],
            FI: ["H"],
            ID: ["H"],
            IS: ["H"],
            ML: ["H"],
            NE: ["H"],
            RU: ["H"],
            SE: ["H"],
            SJ: ["H"],
            SK: ["H"],
            AS: ["h", "H"],
            BT: ["h", "H"],
            DJ: ["h", "H"],
            ER: ["h", "H"],
            GH: ["h", "H"],
            IN: ["h", "H"],
            LS: ["h", "H"],
            PG: ["h", "H"],
            PW: ["h", "H"],
            SO: ["h", "H"],
            TO: ["h", "H"],
            VU: ["h", "H"],
            WS: ["h", "H"],
            "001": ["H", "h"],
            AL: ["h", "H", "hB"],
            TD: ["h", "H", "hB"],
            "ca-ES": ["H", "h", "hB"],
            CF: ["H", "h", "hB"],
            CM: ["H", "h", "hB"],
            "fr-CA": ["H", "h", "hB"],
            "gl-ES": ["H", "h", "hB"],
            "it-CH": ["H", "h", "hB"],
            "it-IT": ["H", "h", "hB"],
            LU: ["H", "h", "hB"],
            NP: ["H", "h", "hB"],
            PF: ["H", "h", "hB"],
            SC: ["H", "h", "hB"],
            SM: ["H", "h", "hB"],
            SN: ["H", "h", "hB"],
            TF: ["H", "h", "hB"],
            VA: ["H", "h", "hB"],
            CY: ["h", "H", "hb", "hB"],
            GR: ["h", "H", "hb", "hB"],
            CO: ["h", "H", "hB", "hb"],
            DO: ["h", "H", "hB", "hb"],
            KP: ["h", "H", "hB", "hb"],
            KR: ["h", "H", "hB", "hb"],
            NA: ["h", "H", "hB", "hb"],
            PA: ["h", "H", "hB", "hb"],
            PR: ["h", "H", "hB", "hb"],
            VE: ["h", "H", "hB", "hb"],
            AC: ["H", "h", "hb", "hB"],
            AI: ["H", "h", "hb", "hB"],
            BW: ["H", "h", "hb", "hB"],
            BZ: ["H", "h", "hb", "hB"],
            CC: ["H", "h", "hb", "hB"],
            CK: ["H", "h", "hb", "hB"],
            CX: ["H", "h", "hb", "hB"],
            DG: ["H", "h", "hb", "hB"],
            FK: ["H", "h", "hb", "hB"],
            GB: ["H", "h", "hb", "hB"],
            GG: ["H", "h", "hb", "hB"],
            GI: ["H", "h", "hb", "hB"],
            IE: ["H", "h", "hb", "hB"],
            IM: ["H", "h", "hb", "hB"],
            IO: ["H", "h", "hb", "hB"],
            JE: ["H", "h", "hb", "hB"],
            LT: ["H", "h", "hb", "hB"],
            MK: ["H", "h", "hb", "hB"],
            MN: ["H", "h", "hb", "hB"],
            MS: ["H", "h", "hb", "hB"],
            NF: ["H", "h", "hb", "hB"],
            NG: ["H", "h", "hb", "hB"],
            NR: ["H", "h", "hb", "hB"],
            NU: ["H", "h", "hb", "hB"],
            PN: ["H", "h", "hb", "hB"],
            SH: ["H", "h", "hb", "hB"],
            SX: ["H", "h", "hb", "hB"],
            TA: ["H", "h", "hb", "hB"],
            ZA: ["H", "h", "hb", "hB"],
            "af-ZA": ["H", "h", "hB", "hb"],
            AR: ["H", "h", "hB", "hb"],
            CL: ["H", "h", "hB", "hb"],
            CR: ["H", "h", "hB", "hb"],
            CU: ["H", "h", "hB", "hb"],
            EA: ["H", "h", "hB", "hb"],
            "es-BO": ["H", "h", "hB", "hb"],
            "es-BR": ["H", "h", "hB", "hb"],
            "es-EC": ["H", "h", "hB", "hb"],
            "es-ES": ["H", "h", "hB", "hb"],
            "es-GQ": ["H", "h", "hB", "hb"],
            "es-PE": ["H", "h", "hB", "hb"],
            GT: ["H", "h", "hB", "hb"],
            HN: ["H", "h", "hB", "hb"],
            IC: ["H", "h", "hB", "hb"],
            KG: ["H", "h", "hB", "hb"],
            KM: ["H", "h", "hB", "hb"],
            LK: ["H", "h", "hB", "hb"],
            MA: ["H", "h", "hB", "hb"],
            MX: ["H", "h", "hB", "hb"],
            NI: ["H", "h", "hB", "hb"],
            PY: ["H", "h", "hB", "hb"],
            SV: ["H", "h", "hB", "hb"],
            UY: ["H", "h", "hB", "hb"],
            JP: ["H", "h", "K"],
            AD: ["H", "hB"],
            AM: ["H", "hB"],
            AO: ["H", "hB"],
            AT: ["H", "hB"],
            AW: ["H", "hB"],
            BE: ["H", "hB"],
            BF: ["H", "hB"],
            BJ: ["H", "hB"],
            BL: ["H", "hB"],
            BR: ["H", "hB"],
            CG: ["H", "hB"],
            CI: ["H", "hB"],
            CV: ["H", "hB"],
            DE: ["H", "hB"],
            EE: ["H", "hB"],
            FR: ["H", "hB"],
            GA: ["H", "hB"],
            GF: ["H", "hB"],
            GN: ["H", "hB"],
            GP: ["H", "hB"],
            GW: ["H", "hB"],
            HR: ["H", "hB"],
            IL: ["H", "hB"],
            IT: ["H", "hB"],
            KZ: ["H", "hB"],
            MC: ["H", "hB"],
            MD: ["H", "hB"],
            MF: ["H", "hB"],
            MQ: ["H", "hB"],
            MZ: ["H", "hB"],
            NC: ["H", "hB"],
            NL: ["H", "hB"],
            PM: ["H", "hB"],
            PT: ["H", "hB"],
            RE: ["H", "hB"],
            RO: ["H", "hB"],
            SI: ["H", "hB"],
            SR: ["H", "hB"],
            ST: ["H", "hB"],
            TG: ["H", "hB"],
            TR: ["H", "hB"],
            WF: ["H", "hB"],
            YT: ["H", "hB"],
            BD: ["h", "hB", "H"],
            PK: ["h", "hB", "H"],
            AZ: ["H", "hB", "h"],
            BA: ["H", "hB", "h"],
            BG: ["H", "hB", "h"],
            CH: ["H", "hB", "h"],
            GE: ["H", "hB", "h"],
            LI: ["H", "hB", "h"],
            ME: ["H", "hB", "h"],
            RS: ["H", "hB", "h"],
            UA: ["H", "hB", "h"],
            UZ: ["H", "hB", "h"],
            XK: ["H", "hB", "h"],
            AG: ["h", "hb", "H", "hB"],
            AU: ["h", "hb", "H", "hB"],
            BB: ["h", "hb", "H", "hB"],
            BM: ["h", "hb", "H", "hB"],
            BS: ["h", "hb", "H", "hB"],
            CA: ["h", "hb", "H", "hB"],
            DM: ["h", "hb", "H", "hB"],
            "en-001": ["h", "hb", "H", "hB"],
            FJ: ["h", "hb", "H", "hB"],
            FM: ["h", "hb", "H", "hB"],
            GD: ["h", "hb", "H", "hB"],
            GM: ["h", "hb", "H", "hB"],
            GU: ["h", "hb", "H", "hB"],
            GY: ["h", "hb", "H", "hB"],
            JM: ["h", "hb", "H", "hB"],
            KI: ["h", "hb", "H", "hB"],
            KN: ["h", "hb", "H", "hB"],
            KY: ["h", "hb", "H", "hB"],
            LC: ["h", "hb", "H", "hB"],
            LR: ["h", "hb", "H", "hB"],
            MH: ["h", "hb", "H", "hB"],
            MP: ["h", "hb", "H", "hB"],
            MW: ["h", "hb", "H", "hB"],
            NZ: ["h", "hb", "H", "hB"],
            SB: ["h", "hb", "H", "hB"],
            SG: ["h", "hb", "H", "hB"],
            SL: ["h", "hb", "H", "hB"],
            SS: ["h", "hb", "H", "hB"],
            SZ: ["h", "hb", "H", "hB"],
            TC: ["h", "hb", "H", "hB"],
            TT: ["h", "hb", "H", "hB"],
            UM: ["h", "hb", "H", "hB"],
            US: ["h", "hb", "H", "hB"],
            VC: ["h", "hb", "H", "hB"],
            VG: ["h", "hb", "H", "hB"],
            VI: ["h", "hb", "H", "hB"],
            ZM: ["h", "hb", "H", "hB"],
            BO: ["H", "hB", "h", "hb"],
            EC: ["H", "hB", "h", "hb"],
            ES: ["H", "hB", "h", "hb"],
            GQ: ["H", "hB", "h", "hb"],
            PE: ["H", "hB", "h", "hb"],
            AE: ["h", "hB", "hb", "H"],
            "ar-001": ["h", "hB", "hb", "H"],
            BH: ["h", "hB", "hb", "H"],
            DZ: ["h", "hB", "hb", "H"],
            EG: ["h", "hB", "hb", "H"],
            EH: ["h", "hB", "hb", "H"],
            HK: ["h", "hB", "hb", "H"],
            IQ: ["h", "hB", "hb", "H"],
            JO: ["h", "hB", "hb", "H"],
            KW: ["h", "hB", "hb", "H"],
            LB: ["h", "hB", "hb", "H"],
            LY: ["h", "hB", "hb", "H"],
            MO: ["h", "hB", "hb", "H"],
            MR: ["h", "hB", "hb", "H"],
            OM: ["h", "hB", "hb", "H"],
            PH: ["h", "hB", "hb", "H"],
            PS: ["h", "hB", "hb", "H"],
            QA: ["h", "hB", "hb", "H"],
            SA: ["h", "hB", "hb", "H"],
            SD: ["h", "hB", "hb", "H"],
            SY: ["h", "hB", "hb", "H"],
            TN: ["h", "hB", "hb", "H"],
            YE: ["h", "hB", "hb", "H"],
            AF: ["H", "hb", "hB", "h"],
            LA: ["H", "hb", "hB", "h"],
            CN: ["H", "hB", "hb", "h"],
            LV: ["H", "hB", "hb", "h"],
            TL: ["H", "hB", "hb", "h"],
            "zu-ZA": ["H", "hB", "hb", "h"],
            CD: ["hB", "H"],
            IR: ["hB", "H"],
            "hi-IN": ["hB", "h", "H"],
            "kn-IN": ["hB", "h", "H"],
            "ml-IN": ["hB", "h", "H"],
            "te-IN": ["hB", "h", "H"],
            KH: ["hB", "h", "H", "hb"],
            "ta-IN": ["hB", "h", "hb", "H"],
            BN: ["hb", "hB", "h", "H"],
            MY: ["hb", "hB", "h", "H"],
            ET: ["hB", "hb", "h", "H"],
            "gu-IN": ["hB", "hb", "h", "H"],
            "mr-IN": ["hB", "hb", "h", "H"],
            "pa-IN": ["hB", "hb", "h", "H"],
            TW: ["hB", "hb", "h", "H"],
            KE: ["hB", "hb", "H", "h"],
            MM: ["hB", "hb", "H", "h"],
            TZ: ["hB", "hb", "H", "h"],
            UG: ["hB", "hb", "H", "h"]
          };

          function Dr(e) {
            var t = e.hourCycle;
            if (void 0 === t && e.hourCycles && e.hourCycles.length && (t = e.hourCycles[0]), t) switch (t) {
              case "h24":
                return "k";
              case "h23":
                return "H";
              case "h12":
                return "h";
              case "h11":
                return "K";
              default:
                throw new Error("Invalid hourCycle")
            }
            var n, r = e.language;
            return "root" !== r && (n = e.maximize().region), (Mr[n || ""] || Mr[r || ""] || Mr["".concat(r, "-001")] || Mr["001"])[0]
          }
          var Ir = new RegExp("^".concat(vr.source, "*")),
            Nr = new RegExp("".concat(vr.source, "*$"));

          function Rr(e, t) {
            return {
              start: e,
              end: t
            }
          }
          var jr = !!String.prototype.startsWith,
            Lr = !!String.fromCodePoint,
            Fr = !!Object.fromEntries,
            Br = !!String.prototype.codePointAt,
            zr = !!String.prototype.trimStart,
            Hr = !!String.prototype.trimEnd,
            Ur = !!Number.isSafeInteger ? Number.isSafeInteger : function(e) {
              return "number" == typeof e && isFinite(e) && Math.floor(e) === e && Math.abs(e) <= 9007199254740991
            },
            Wr = !0;
          try {
            Wr = "a" === (null === (Pr = Zr("([^\\p{White_Space}\\p{Pattern_Syntax}]*)", "yu").exec("a")) || void 0 === Pr ? void 0 : Pr[0])
          } catch (mS) {
            Wr = !1
          }
          var Vr, Xr = jr ? function(e, t, n) {
              return e.startsWith(t, n)
            } : function(e, t, n) {
              return e.slice(n, n + t.length) === t
            },
            Gr = Lr ? String.fromCodePoint : function() {
              for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
              for (var n, r = "", i = e.length, o = 0; i > o;) {
                if ((n = e[o++]) > 1114111) throw RangeError(n + " is not a valid code point");
                r += n < 65536 ? String.fromCharCode(n) : String.fromCharCode(55296 + ((n -= 65536) >> 10), n % 1024 + 56320)
              }
              return r
            },
            Yr = Fr ? Object.fromEntries : function(e) {
              for (var t = {}, n = 0, r = e; n < r.length; n++) {
                var i = r[n],
                  o = i[0],
                  a = i[1];
                t[o] = a
              }
              return t
            },
            qr = Br ? function(e, t) {
              return e.codePointAt(t)
            } : function(e, t) {
              var n = e.length;
              if (!(t < 0 || t >= n)) {
                var r, i = e.charCodeAt(t);
                return i < 55296 || i > 56319 || t + 1 === n || (r = e.charCodeAt(t + 1)) < 56320 || r > 57343 ? i : r - 56320 + (i - 55296 << 10) + 65536
              }
            },
            Kr = zr ? function(e) {
              return e.trimStart()
            } : function(e) {
              return e.replace(Ir, "")
            },
            $r = Hr ? function(e) {
              return e.trimEnd()
            } : function(e) {
              return e.replace(Nr, "")
            };

          function Zr(e, t) {
            return new RegExp(e, t)
          }
          if (Wr) {
            var Jr = Zr("([^\\p{White_Space}\\p{Pattern_Syntax}]*)", "yu");
            Vr = function(e, t) {
              var n;
              return Jr.lastIndex = t, null !== (n = Jr.exec(e)[1]) && void 0 !== n ? n : ""
            }
          } else Vr = function(e, t) {
            for (var n = [];;) {
              var r = qr(e, t);
              if (void 0 === r || ni(r) || ri(r)) break;
              n.push(r), t += r >= 65536 ? 2 : 1
            }
            return Gr.apply(void 0, n)
          };
          var Qr = function() {
            function e(e, t) {
              void 0 === t && (t = {}), this.message = e, this.position = {
                offset: 0,
                line: 1,
                column: 1
              }, this.ignoreTag = !!t.ignoreTag, this.locale = t.locale, this.requiresOtherClause = !!t.requiresOtherClause, this.shouldParseSkeletons = !!t.shouldParseSkeletons
            }
            return e.prototype.parse = function() {
              if (0 !== this.offset()) throw Error("parser can only be used once");
              return this.parseMessage(0, "", !1)
            }, e.prototype.parseMessage = function(e, t, n) {
              for (var r = []; !this.isEOF();) {
                var i = this.char();
                if (123 === i) {
                  if ((o = this.parseArgument(e, n)).err) return o;
                  r.push(o.val)
                } else {
                  if (125 === i && e > 0) break;
                  if (35 !== i || "plural" !== t && "selectordinal" !== t) {
                    if (60 === i && !this.ignoreTag && 47 === this.peek()) {
                      if (n) break;
                      return this.error(Mn.UNMATCHED_CLOSING_TAG, Rr(this.clonePosition(), this.clonePosition()))
                    }
                    if (60 === i && !this.ignoreTag && ei(this.peek() || 0)) {
                      if ((o = this.parseTag(e, t)).err) return o;
                      r.push(o.val)
                    } else {
                      var o;
                      if ((o = this.parseLiteral(e, t)).err) return o;
                      r.push(o.val)
                    }
                  } else {
                    var a = this.clonePosition();
                    this.bump(), r.push({
                      type: Dn.pound,
                      location: Rr(a, this.clonePosition())
                    })
                  }
                }
              }
              return {
                val: r,
                err: null
              }
            }, e.prototype.parseTag = function(e, t) {
              var n = this.clonePosition();
              this.bump();
              var r = this.parseTagName();
              if (this.bumpSpace(), this.bumpIf("/>")) return {
                val: {
                  type: Dn.literal,
                  value: "<".concat(r, "/>"),
                  location: Rr(n, this.clonePosition())
                },
                err: null
              };
              if (this.bumpIf(">")) {
                var i = this.parseMessage(e + 1, t, !0);
                if (i.err) return i;
                var o = i.val,
                  a = this.clonePosition();
                if (this.bumpIf("</")) {
                  if (this.isEOF() || !ei(this.char())) return this.error(Mn.INVALID_TAG, Rr(a, this.clonePosition()));
                  var s = this.clonePosition();
                  return r !== this.parseTagName() ? this.error(Mn.UNMATCHED_CLOSING_TAG, Rr(s, this.clonePosition())) : (this.bumpSpace(), this.bumpIf(">") ? {
                    val: {
                      type: Dn.tag,
                      value: r,
                      children: o,
                      location: Rr(n, this.clonePosition())
                    },
                    err: null
                  } : this.error(Mn.INVALID_TAG, Rr(a, this.clonePosition())))
                }
                return this.error(Mn.UNCLOSED_TAG, Rr(n, this.clonePosition()))
              }
              return this.error(Mn.INVALID_TAG, Rr(n, this.clonePosition()))
            }, e.prototype.parseTagName = function() {
              var e = this.offset();
              for (this.bump(); !this.isEOF() && ti(this.char());) this.bump();
              return this.message.slice(e, this.offset())
            }, e.prototype.parseLiteral = function(e, t) {
              for (var n = this.clonePosition(), r = "";;) {
                var i = this.tryParseQuote(t);
                if (i) r += i;
                else {
                  var o = this.tryParseUnquoted(e, t);
                  if (o) r += o;
                  else {
                    var a = this.tryParseLeftAngleBracket();
                    if (!a) break;
                    r += a
                  }
                }
              }
              var s = Rr(n, this.clonePosition());
              return {
                val: {
                  type: Dn.literal,
                  value: r,
                  location: s
                },
                err: null
              }
            }, e.prototype.tryParseLeftAngleBracket = function() {
              return this.isEOF() || 60 !== this.char() || !this.ignoreTag && (ei(e = this.peek() || 0) || 47 === e) ? null : (this.bump(), "<");
              var e
            }, e.prototype.tryParseQuote = function(e) {
              if (this.isEOF() || 39 !== this.char()) return null;
              switch (this.peek()) {
                case 39:
                  return this.bump(), this.bump(), "'";
                case 123:
                case 60:
                case 62:
                case 125:
                  break;
                case 35:
                  if ("plural" === e || "selectordinal" === e) break;
                  return null;
                default:
                  return null
              }
              this.bump();
              var t = [this.char()];
              for (this.bump(); !this.isEOF();) {
                var n = this.char();
                if (39 === n) {
                  if (39 !== this.peek()) {
                    this.bump();
                    break
                  }
                  t.push(39), this.bump()
                } else t.push(n);
                this.bump()
              }
              return Gr.apply(void 0, t)
            }, e.prototype.tryParseUnquoted = function(e, t) {
              if (this.isEOF()) return null;
              var n = this.char();
              return 60 === n || 123 === n || 35 === n && ("plural" === t || "selectordinal" === t) || 125 === n && e > 0 ? null : (this.bump(), Gr(n))
            }, e.prototype.parseArgument = function(e, t) {
              var n = this.clonePosition();
              if (this.bump(), this.bumpSpace(), this.isEOF()) return this.error(Mn.EXPECT_ARGUMENT_CLOSING_BRACE, Rr(n, this.clonePosition()));
              if (125 === this.char()) return this.bump(), this.error(Mn.EMPTY_ARGUMENT, Rr(n, this.clonePosition()));
              var r = this.parseIdentifierIfPossible().value;
              if (!r) return this.error(Mn.MALFORMED_ARGUMENT, Rr(n, this.clonePosition()));
              if (this.bumpSpace(), this.isEOF()) return this.error(Mn.EXPECT_ARGUMENT_CLOSING_BRACE, Rr(n, this.clonePosition()));
              switch (this.char()) {
                case 125:
                  return this.bump(), {
                    val: {
                      type: Dn.argument,
                      value: r,
                      location: Rr(n, this.clonePosition())
                    },
                    err: null
                  };
                case 44:
                  return this.bump(), this.bumpSpace(), this.isEOF() ? this.error(Mn.EXPECT_ARGUMENT_CLOSING_BRACE, Rr(n, this.clonePosition())) : this.parseArgumentOptions(e, t, r, n);
                default:
                  return this.error(Mn.MALFORMED_ARGUMENT, Rr(n, this.clonePosition()))
              }
            }, e.prototype.parseIdentifierIfPossible = function() {
              var e = this.clonePosition(),
                t = this.offset(),
                n = Vr(this.message, t),
                r = t + n.length;
              return this.bumpTo(r), {
                value: n,
                location: Rr(e, this.clonePosition())
              }
            }, e.prototype.parseArgumentOptions = function(e, t, n, r) {
              var i, o = this.clonePosition(),
                a = this.parseIdentifierIfPossible().value,
                s = this.clonePosition();
              switch (a) {
                case "":
                  return this.error(Mn.EXPECT_ARGUMENT_TYPE, Rr(o, s));
                case "number":
                case "date":
                case "time":
                  this.bumpSpace();
                  var l = null;
                  if (this.bumpIf(",")) {
                    this.bumpSpace();
                    var c = this.clonePosition();
                    if ((v = this.parseSimpleArgStyleIfPossible()).err) return v;
                    if (0 === (d = $r(v.val)).length) return this.error(Mn.EXPECT_ARGUMENT_STYLE, Rr(this.clonePosition(), this.clonePosition()));
                    l = {
                      style: d,
                      styleLocation: Rr(c, this.clonePosition())
                    }
                  }
                  if ((_ = this.tryParseArgumentClose(r)).err) return _;
                  var u = Rr(r, this.clonePosition());
                  if (l && Xr(null == l ? void 0 : l.style, "::", 0)) {
                    var h = Kr(l.style.slice(2));
                    if ("number" === a) return (v = this.parseNumberSkeletonFromString(h, l.styleLocation)).err ? v : {
                      val: {
                        type: Dn.number,
                        value: n,
                        location: u,
                        style: v.val
                      },
                      err: null
                    };
                    if (0 === h.length) return this.error(Mn.EXPECT_DATE_TIME_SKELETON, u);
                    var p = h;
                    this.locale && (p = function(e, t) {
                      for (var n = "", r = 0; r < e.length; r++) {
                        var i = e.charAt(r);
                        if ("j" === i) {
                          for (var o = 0; r + 1 < e.length && e.charAt(r + 1) === i;) o++, r++;
                          var a = 1 + (1 & o),
                            s = o < 2 ? 1 : 3 + (o >> 1),
                            l = Dr(t);
                          for ("H" != l && "k" != l || (s = 0); s-- > 0;) n += "a";
                          for (; a-- > 0;) n = l + n
                        } else n += "J" === i ? "H" : i
                      }
                      return n
                    }(h, this.locale));
                    var d = {
                      type: In.dateTime,
                      pattern: p,
                      location: l.styleLocation,
                      parsedOptions: this.shouldParseSkeletons ? br(p) : {}
                    };
                    return {
                      val: {
                        type: "date" === a ? Dn.date : Dn.time,
                        value: n,
                        location: u,
                        style: d
                      },
                      err: null
                    }
                  }
                  return {
                    val: {
                      type: "number" === a ? Dn.number : "date" === a ? Dn.date : Dn.time,
                      value: n,
                      location: u,
                      style: null !== (i = null == l ? void 0 : l.style) && void 0 !== i ? i : null
                    }, err: null
                  };
                case "plural":
                case "selectordinal":
                case "select":
                  var f = this.clonePosition();
                  if (this.bumpSpace(), !this.bumpIf(",")) return this.error(Mn.EXPECT_SELECT_ARGUMENT_OPTIONS, Rr(f, se({}, f)));
                  this.bumpSpace();
                  var g = this.parseIdentifierIfPossible(),
                    m = 0;
                  if ("select" !== a && "offset" === g.value) {
                    if (!this.bumpIf(":")) return this.error(Mn.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, Rr(this.clonePosition(), this.clonePosition()));
                    var v;
                    if (this.bumpSpace(), (v = this.tryParseDecimalInteger(Mn.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, Mn.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE)).err) return v;
                    this.bumpSpace(), g = this.parseIdentifierIfPossible(), m = v.val
                  }
                  var _, b = this.tryParsePluralOrSelectOptions(e, a, t, g);
                  if (b.err) return b;
                  if ((_ = this.tryParseArgumentClose(r)).err) return _;
                  var y = Rr(r, this.clonePosition());
                  return "select" === a ? {
                    val: {
                      type: Dn.select,
                      value: n,
                      options: Yr(b.val),
                      location: y
                    },
                    err: null
                  } : {
                    val: {
                      type: Dn.plural,
                      value: n,
                      options: Yr(b.val),
                      offset: m,
                      pluralType: "plural" === a ? "cardinal" : "ordinal",
                      location: y
                    },
                    err: null
                  };
                default:
                  return this.error(Mn.INVALID_ARGUMENT_TYPE, Rr(o, s))
              }
            }, e.prototype.tryParseArgumentClose = function(e) {
              return this.isEOF() || 125 !== this.char() ? this.error(Mn.EXPECT_ARGUMENT_CLOSING_BRACE, Rr(e, this.clonePosition())) : (this.bump(), {
                val: !0,
                err: null
              })
            }, e.prototype.parseSimpleArgStyleIfPossible = function() {
              for (var e = 0, t = this.clonePosition(); !this.isEOF();) {
                switch (this.char()) {
                  case 39:
                    this.bump();
                    var n = this.clonePosition();
                    if (!this.bumpUntil("'")) return this.error(Mn.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, Rr(n, this.clonePosition()));
                    this.bump();
                    break;
                  case 123:
                    e += 1, this.bump();
                    break;
                  case 125:
                    if (!(e > 0)) return {
                      val: this.message.slice(t.offset, this.offset()),
                      err: null
                    };
                    e -= 1;
                    break;
                  default:
                    this.bump()
                }
              }
              return {
                val: this.message.slice(t.offset, this.offset()),
                err: null
              }
            }, e.prototype.parseNumberSkeletonFromString = function(e, t) {
              var n = [];
              try {
                n = function(e) {
                  if (0 === e.length) throw new Error("Number skeleton cannot be empty");
                  for (var t = e.split(yr).filter((function(e) {
                      return e.length > 0
                    })), n = [], r = 0, i = t; r < i.length; r++) {
                    var o = i[r].split("/");
                    if (0 === o.length) throw new Error("Invalid number skeleton");
                    for (var a = o[0], s = o.slice(1), l = 0, c = s; l < c.length; l++)
                      if (0 === c[l].length) throw new Error("Invalid number skeleton");
                    n.push({
                      stem: a,
                      options: s
                    })
                  }
                  return n
                }(e)
              } catch (e) {
                return this.error(Mn.INVALID_NUMBER_SKELETON, t)
              }
              return {
                val: {
                  type: In.number,
                  tokens: n,
                  location: t,
                  parsedOptions: this.shouldParseSkeletons ? Ar(n) : {}
                },
                err: null
              }
            }, e.prototype.tryParsePluralOrSelectOptions = function(e, t, n, r) {
              for (var i, o = !1, a = [], s = new Set, l = r.value, c = r.location;;) {
                if (0 === l.length) {
                  var u = this.clonePosition();
                  if ("select" === t || !this.bumpIf("=")) break;
                  var h = this.tryParseDecimalInteger(Mn.EXPECT_PLURAL_ARGUMENT_SELECTOR, Mn.INVALID_PLURAL_ARGUMENT_SELECTOR);
                  if (h.err) return h;
                  c = Rr(u, this.clonePosition()), l = this.message.slice(u.offset, this.offset())
                }
                if (s.has(l)) return this.error("select" === t ? Mn.DUPLICATE_SELECT_ARGUMENT_SELECTOR : Mn.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, c);
                "other" === l && (o = !0), this.bumpSpace();
                var p = this.clonePosition();
                if (!this.bumpIf("{")) return this.error("select" === t ? Mn.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT : Mn.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, Rr(this.clonePosition(), this.clonePosition()));
                var d = this.parseMessage(e + 1, t, n);
                if (d.err) return d;
                var f = this.tryParseArgumentClose(p);
                if (f.err) return f;
                a.push([l, {
                  value: d.val,
                  location: Rr(p, this.clonePosition())
                }]), s.add(l), this.bumpSpace(), l = (i = this.parseIdentifierIfPossible()).value, c = i.location
              }
              return 0 === a.length ? this.error("select" === t ? Mn.EXPECT_SELECT_ARGUMENT_SELECTOR : Mn.EXPECT_PLURAL_ARGUMENT_SELECTOR, Rr(this.clonePosition(), this.clonePosition())) : this.requiresOtherClause && !o ? this.error(Mn
                .MISSING_OTHER_CLAUSE, Rr(this.clonePosition(), this.clonePosition())) : {
                val: a,
                err: null
              }
            }, e.prototype.tryParseDecimalInteger = function(e, t) {
              var n = 1,
                r = this.clonePosition();
              this.bumpIf("+") || this.bumpIf("-") && (n = -1);
              for (var i = !1, o = 0; !this.isEOF();) {
                var a = this.char();
                if (!(a >= 48 && a <= 57)) break;
                i = !0, o = 10 * o + (a - 48), this.bump()
              }
              var s = Rr(r, this.clonePosition());
              return i ? Ur(o *= n) ? {
                val: o,
                err: null
              } : this.error(t, s) : this.error(e, s)
            }, e.prototype.offset = function() {
              return this.position.offset
            }, e.prototype.isEOF = function() {
              return this.offset() === this.message.length
            }, e.prototype.clonePosition = function() {
              return {
                offset: this.position.offset,
                line: this.position.line,
                column: this.position.column
              }
            }, e.prototype.char = function() {
              var e = this.position.offset;
              if (e >= this.message.length) throw Error("out of bound");
              var t = qr(this.message, e);
              if (void 0 === t) throw Error("Offset ".concat(e, " is at invalid UTF-16 code unit boundary"));
              return t
            }, e.prototype.error = function(e, t) {
              return {
                val: null,
                err: {
                  kind: e,
                  message: this.message,
                  location: t
                }
              }
            }, e.prototype.bump = function() {
              if (!this.isEOF()) {
                var e = this.char();
                10 === e ? (this.position.line += 1, this.position.column = 1, this.position.offset += 1) : (this.position.column += 1, this.position.offset += e < 65536 ? 1 : 2)
              }
            }, e.prototype.bumpIf = function(e) {
              if (Xr(this.message, e, this.offset())) {
                for (var t = 0; t < e.length; t++) this.bump();
                return !0
              }
              return !1
            }, e.prototype.bumpUntil = function(e) {
              var t = this.offset(),
                n = this.message.indexOf(e, t);
              return n >= 0 ? (this.bumpTo(n), !0) : (this.bumpTo(this.message.length), !1)
            }, e.prototype.bumpTo = function(e) {
              if (this.offset() > e) throw Error("targetOffset ".concat(e, " must be greater than or equal to the current offset ").concat(this.offset()));
              for (e = Math.min(e, this.message.length);;) {
                var t = this.offset();
                if (t === e) break;
                if (t > e) throw Error("targetOffset ".concat(e, " is at invalid UTF-16 code unit boundary"));
                if (this.bump(), this.isEOF()) break
              }
            }, e.prototype.bumpSpace = function() {
              for (; !this.isEOF() && ni(this.char());) this.bump()
            }, e.prototype.peek = function() {
              if (this.isEOF()) return null;
              var e = this.char(),
                t = this.offset(),
                n = this.message.charCodeAt(t + (e >= 65536 ? 2 : 1));
              return null != n ? n : null
            }, e
          }();

          function ei(e) {
            return e >= 97 && e <= 122 || e >= 65 && e <= 90
          }

          function ti(e) {
            return 45 === e || 46 === e || e >= 48 && e <= 57 || 95 === e || e >= 97 && e <= 122 || e >= 65 && e <= 90 || 183 == e || e >= 192 && e <= 214 || e >= 216 && e <= 246 || e >= 248 && e <= 893 || e >= 895 && e <= 8191 || e >= 8204 &&
              e <= 8205 || e >= 8255 && e <= 8256 || e >= 8304 && e <= 8591 || e >= 11264 && e <= 12271 || e >= 12289 && e <= 55295 || e >= 63744 && e <= 64975 || e >= 65008 && e <= 65533 || e >= 65536 && e <= 983039
          }

          function ni(e) {
            return e >= 9 && e <= 13 || 32 === e || 133 === e || e >= 8206 && e <= 8207 || 8232 === e || 8233 === e
          }

          function ri(e) {
            return e >= 33 && e <= 35 || 36 === e || e >= 37 && e <= 39 || 40 === e || 41 === e || 42 === e || 43 === e || 44 === e || 45 === e || e >= 46 && e <= 47 || e >= 58 && e <= 59 || e >= 60 && e <= 62 || e >= 63 && e <= 64 || 91 === e ||
              92 === e || 93 === e || 94 === e || 96 === e || 123 === e || 124 === e || 125 === e || 126 === e || 161 === e || e >= 162 && e <= 165 || 166 === e || 167 === e || 169 === e || 171 === e || 172 === e || 174 === e || 176 === e ||
              177 === e || 182 === e || 187 === e || 191 === e || 215 === e || 247 === e || e >= 8208 && e <= 8213 || e >= 8214 && e <= 8215 || 8216 === e || 8217 === e || 8218 === e || e >= 8219 && e <= 8220 || 8221 === e || 8222 === e ||
              8223 === e || e >= 8224 && e <= 8231 || e >= 8240 && e <= 8248 || 8249 === e || 8250 === e || e >= 8251 && e <= 8254 || e >= 8257 && e <= 8259 || 8260 === e || 8261 === e || 8262 === e || e >= 8263 && e <= 8273 || 8274 === e ||
              8275 === e || e >= 8277 && e <= 8286 || e >= 8592 && e <= 8596 || e >= 8597 && e <= 8601 || e >= 8602 && e <= 8603 || e >= 8604 && e <= 8607 || 8608 === e || e >= 8609 && e <= 8610 || 8611 === e || e >= 8612 && e <= 8613 || 8614 ===
              e || e >= 8615 && e <= 8621 || 8622 === e || e >= 8623 && e <= 8653 || e >= 8654 && e <= 8655 || e >= 8656 && e <= 8657 || 8658 === e || 8659 === e || 8660 === e || e >= 8661 && e <= 8691 || e >= 8692 && e <= 8959 || e >= 8960 &&
              e <= 8967 || 8968 === e || 8969 === e || 8970 === e || 8971 === e || e >= 8972 && e <= 8991 || e >= 8992 && e <= 8993 || e >= 8994 && e <= 9e3 || 9001 === e || 9002 === e || e >= 9003 && e <= 9083 || 9084 === e || e >= 9085 && e <=
              9114 || e >= 9115 && e <= 9139 || e >= 9140 && e <= 9179 || e >= 9180 && e <= 9185 || e >= 9186 && e <= 9254 || e >= 9255 && e <= 9279 || e >= 9280 && e <= 9290 || e >= 9291 && e <= 9311 || e >= 9472 && e <= 9654 || 9655 === e ||
              e >= 9656 && e <= 9664 || 9665 === e || e >= 9666 && e <= 9719 || e >= 9720 && e <= 9727 || e >= 9728 && e <= 9838 || 9839 === e || e >= 9840 && e <= 10087 || 10088 === e || 10089 === e || 10090 === e || 10091 === e || 10092 ===
              e || 10093 === e || 10094 === e || 10095 === e || 10096 === e || 10097 === e || 10098 === e || 10099 === e || 10100 === e || 10101 === e || e >= 10132 && e <= 10175 || e >= 10176 && e <= 10180 || 10181 === e || 10182 === e || e >=
              10183 && e <= 10213 || 10214 === e || 10215 === e || 10216 === e || 10217 === e || 10218 === e || 10219 === e || 10220 === e || 10221 === e || 10222 === e || 10223 === e || e >= 10224 && e <= 10239 || e >= 10240 && e <= 10495 ||
              e >= 10496 && e <= 10626 || 10627 === e || 10628 === e || 10629 === e || 10630 === e || 10631 === e || 10632 === e || 10633 === e || 10634 === e || 10635 === e || 10636 === e || 10637 === e || 10638 === e || 10639 === e || 10640 ===
              e || 10641 === e || 10642 === e || 10643 === e || 10644 === e || 10645 === e || 10646 === e || 10647 === e || 10648 === e || e >= 10649 && e <= 10711 || 10712 === e || 10713 === e || 10714 === e || 10715 === e || e >= 10716 && e <=
              10747 || 10748 === e || 10749 === e || e >= 10750 && e <= 11007 || e >= 11008 && e <= 11055 || e >= 11056 && e <= 11076 || e >= 11077 && e <= 11078 || e >= 11079 && e <= 11084 || e >= 11085 && e <= 11123 || e >= 11124 && e <=
              11125 || e >= 11126 && e <= 11157 || 11158 === e || e >= 11159 && e <= 11263 || e >= 11776 && e <= 11777 || 11778 === e || 11779 === e || 11780 === e || 11781 === e || e >= 11782 && e <= 11784 || 11785 === e || 11786 === e ||
              11787 === e || 11788 === e || 11789 === e || e >= 11790 && e <= 11798 || 11799 === e || e >= 11800 && e <= 11801 || 11802 === e || 11803 === e || 11804 === e || 11805 === e || e >= 11806 && e <= 11807 || 11808 === e || 11809 ===
              e || 11810 === e || 11811 === e || 11812 === e || 11813 === e || 11814 === e || 11815 === e || 11816 === e || 11817 === e || e >= 11818 && e <= 11822 || 11823 === e || e >= 11824 && e <= 11833 || e >= 11834 && e <= 11835 || e >=
              11836 && e <= 11839 || 11840 === e || 11841 === e || 11842 === e || e >= 11843 && e <= 11855 || e >= 11856 && e <= 11857 || 11858 === e || e >= 11859 && e <= 11903 || e >= 12289 && e <= 12291 || 12296 === e || 12297 === e ||
              12298 === e || 12299 === e || 12300 === e || 12301 === e || 12302 === e || 12303 === e || 12304 === e || 12305 === e || e >= 12306 && e <= 12307 || 12308 === e || 12309 === e || 12310 === e || 12311 === e || 12312 === e || 12313 ===
              e || 12314 === e || 12315 === e || 12316 === e || 12317 === e || e >= 12318 && e <= 12319 || 12320 === e || 12336 === e || 64830 === e || 64831 === e || e >= 65093 && e <= 65094
          }

          function ii(e) {
            e.forEach((function(e) {
              if (delete e.location, hr(e) || pr(e))
                for (var t in e.options) delete e.options[t].location, ii(e.options[t].value);
              else lr(e) && gr(e.style) || (cr(e) || ur(e)) && mr(e.style) ? delete e.style.location : fr(e) && ii(e.children)
            }))
          }

          function oi(e, t) {
            void 0 === t && (t = {}), t = se({
              shouldParseSkeletons: !0,
              requiresOtherClause: !0
            }, t);
            var n = new Qr(e, t).parse();
            if (n.err) {
              var r = SyntaxError(Mn[n.err.kind]);
              throw r.location = n.err.location, r.originalMessage = n.err.message, r
            }
            return (null == t ? void 0 : t.captureLocation) || ii(n.val), n.val
          }

          function ai(e, t) {
            var n = t && t.cache ? t.cache : fi,
              r = t && t.serializer ? t.serializer : hi;
            return (t && t.strategy ? t.strategy : ui)(e, {
              cache: n,
              serializer: r
            })
          }

          function si(e, t, n, r) {
            var i, o = null == (i = r) || "number" == typeof i || "boolean" == typeof i ? r : n(r),
              a = t.get(o);
            return void 0 === a && (a = e.call(this, r), t.set(o, a)), a
          }

          function li(e, t, n) {
            var r = Array.prototype.slice.call(arguments, 3),
              i = n(r),
              o = t.get(i);
            return void 0 === o && (o = e.apply(this, r), t.set(i, o)), o
          }

          function ci(e, t, n, r, i) {
            return n.bind(t, e, r, i)
          }

          function ui(e, t) {
            return ci(e, this, 1 === e.length ? si : li, t.cache.create(), t.serializer)
          }
          var hi = function() {
            return JSON.stringify(arguments)
          };

          function pi() {
            this.cache = Object.create(null)
          }
          pi.prototype.get = function(e) {
            return this.cache[e]
          }, pi.prototype.set = function(e, t) {
            this.cache[e] = t
          };
          var di, fi = {
              create: function() {
                return new pi
              }
            },
            gi = {
              variadic: function(e, t) {
                return ci(e, this, li, t.cache.create(), t.serializer)
              },
              monadic: function(e, t) {
                return ci(e, this, si, t.cache.create(), t.serializer)
              }
            };
          ! function(e) {
            e.MISSING_VALUE = "MISSING_VALUE", e.INVALID_VALUE = "INVALID_VALUE", e.MISSING_INTL_API = "MISSING_INTL_API"
          }(di || (di = {}));
          var mi, vi = function(e) {
              function t(t, n, r) {
                var i = e.call(this, t) || this;
                return i.code = n, i.originalMessage = r, i
              }
              return ae(t, e), t.prototype.toString = function() {
                return "[formatjs Error: ".concat(this.code, "] ").concat(this.message)
              }, t
            }(Error),
            _i = function(e) {
              function t(t, n, r, i) {
                return e.call(this, 'Invalid values for "'.concat(t, '": "').concat(n, '". Options are "').concat(Object.keys(r).join('", "'), '"'), di.INVALID_VALUE, i) || this
              }
              return ae(t, e), t
            }(vi),
            bi = function(e) {
              function t(t, n, r) {
                return e.call(this, 'Value for "'.concat(t, '" must be of type ').concat(n), di.INVALID_VALUE, r) || this
              }
              return ae(t, e), t
            }(vi),
            yi = function(e) {
              function t(t, n) {
                return e.call(this, 'The intl string context variable "'.concat(t, '" was not provided to the string "').concat(n, '"'), di.MISSING_VALUE, n) || this
              }
              return ae(t, e), t
            }(vi);

          function wi(e) {
            return "function" == typeof e
          }

          function xi(e, t, n, r, i, o, a) {
            if (1 === e.length && ar(e[0])) return [{
              type: mi.literal,
              value: e[0].value
            }];
            for (var s = [], l = 0, c = e; l < c.length; l++) {
              var u = c[l];
              if (ar(u)) s.push({
                type: mi.literal,
                value: u.value
              });
              else if (dr(u)) "number" == typeof o && s.push({
                type: mi.literal,
                value: n.getNumberFormat(t).format(o)
              });
              else {
                var h = u.value;
                if (!i || !(h in i)) throw new yi(h, a);
                var p = i[h];
                if (sr(u)) p && "string" != typeof p && "number" != typeof p || (p = "string" == typeof p || "number" == typeof p ? String(p) : ""), s.push({
                  type: "string" == typeof p ? mi.literal : mi.object,
                  value: p
                });
                else if (cr(u)) {
                  var d = "string" == typeof u.style ? r.date[u.style] : mr(u.style) ? u.style.parsedOptions : void 0;
                  s.push({
                    type: mi.literal,
                    value: n.getDateTimeFormat(t, d).format(p)
                  })
                } else if (ur(u)) {
                  d = "string" == typeof u.style ? r.time[u.style] : mr(u.style) ? u.style.parsedOptions : r.time.medium;
                  s.push({
                    type: mi.literal,
                    value: n.getDateTimeFormat(t, d).format(p)
                  })
                } else if (lr(u)) {
                  (d = "string" == typeof u.style ? r.number[u.style] : gr(u.style) ? u.style.parsedOptions : void 0) && d.scale && (p *= d.scale || 1), s.push({
                    type: mi.literal,
                    value: n.getNumberFormat(t, d).format(p)
                  })
                } else {
                  if (fr(u)) {
                    var f = u.children,
                      g = u.value,
                      m = i[g];
                    if (!wi(m)) throw new bi(g, "function", a);
                    var v = m(xi(f, t, n, r, i, o).map((function(e) {
                      return e.value
                    })));
                    Array.isArray(v) || (v = [v]), s.push.apply(s, v.map((function(e) {
                      return {
                        type: "string" == typeof e ? mi.literal : mi.object,
                        value: e
                      }
                    })))
                  }
                  if (hr(u)) {
                    if (!(_ = u.options[p] || u.options.other)) throw new _i(u.value, p, Object.keys(u.options), a);
                    s.push.apply(s, xi(_.value, t, n, r, i))
                  } else if (pr(u)) {
                    var _;
                    if (!(_ = u.options["=".concat(p)])) {
                      if (!Intl.PluralRules) throw new vi('Intl.PluralRules is not available in this environment.\nTry polyfilling it using "@formatjs/intl-pluralrules"\n', di.MISSING_INTL_API, a);
                      var b = n.getPluralRules(t, {
                        type: u.pluralType
                      }).select(p - (u.offset || 0));
                      _ = u.options[b] || u.options.other
                    }
                    if (!_) throw new _i(u.value, p, Object.keys(u.options), a);
                    s.push.apply(s, xi(_.value, t, n, r, i, p - (u.offset || 0)))
                  } else;
                }
              }
            }
            return function(e) {
              return e.length < 2 ? e : e.reduce((function(e, t) {
                var n = e[e.length - 1];
                return n && n.type === mi.literal && t.type === mi.literal ? n.value += t.value : e.push(t), e
              }), [])
            }(s)
          }

          function ki(e, t) {
            return t ? Object.keys(e).reduce((function(n, r) {
              var i, o;
              return n[r] = (i = e[r], (o = t[r]) ? se(se(se({}, i || {}), o || {}), Object.keys(i).reduce((function(e, t) {
                return e[t] = se(se({}, i[t]), o[t] || {}), e
              }), {})) : i), n
            }), se({}, e)) : e
          }

          function Ci(e) {
            return {
              create: function() {
                return {
                  get: function(t) {
                    return e[t]
                  },
                  set: function(t, n) {
                    e[t] = n
                  }
                }
              }
            }
          }! function(e) {
            e[e.literal = 0] = "literal", e[e.object = 1] = "object"
          }(mi || (mi = {}));
          var Si, Ei = function() {
            function e(t, n, r, i) {
              void 0 === n && (n = e.defaultLocale);
              var o, a = this;
              if (this.formatterCache = {
                  number: {},
                  dateTime: {},
                  pluralRules: {}
                }, this.format = function(e) {
                  var t = a.formatToParts(e);
                  if (1 === t.length) return t[0].value;
                  var n = t.reduce((function(e, t) {
                    return e.length && t.type === mi.literal && "string" == typeof e[e.length - 1] ? e[e.length - 1] += t.value : e.push(t.value), e
                  }), []);
                  return n.length <= 1 ? n[0] || "" : n
                }, this.formatToParts = function(e) {
                  return xi(a.ast, a.locales, a.formatters, a.formats, e, void 0, a.message)
                }, this.resolvedOptions = function() {
                  var e;
                  return {
                    locale: (null === (e = a.resolvedLocale) || void 0 === e ? void 0 : e.toString()) || Intl.NumberFormat.supportedLocalesOf(a.locales)[0]
                  }
                }, this.getAst = function() {
                  return a.ast
                }, this.locales = n, this.resolvedLocale = e.resolveLocale(n), "string" == typeof t) {
                if (this.message = t, !e.__parse) throw new TypeError("IntlMessageFormat.__parse must be set to process `message` of type `string`");
                var s = le(i || {}, ["formatters"]);
                this.ast = e.__parse(t, se(se({}, s), {
                  locale: this.resolvedLocale
                }))
              } else this.ast = t;
              if (!Array.isArray(this.ast)) throw new TypeError("A message must be provided as a String or AST.");
              this.formats = ki(e.formats, r), this.formatters = i && i.formatters || (void 0 === (o = this.formatterCache) && (o = {
                number: {},
                dateTime: {},
                pluralRules: {}
              }), {
                getNumberFormat: ai((function() {
                  for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
                  return new((e = Intl.NumberFormat).bind.apply(e, pe([void 0], t, !1)))
                }), {
                  cache: Ci(o.number),
                  strategy: gi.variadic
                }),
                getDateTimeFormat: ai((function() {
                  for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
                  return new((e = Intl.DateTimeFormat).bind.apply(e, pe([void 0], t, !1)))
                }), {
                  cache: Ci(o.dateTime),
                  strategy: gi.variadic
                }),
                getPluralRules: ai((function() {
                  for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
                  return new((e = Intl.PluralRules).bind.apply(e, pe([void 0], t, !1)))
                }), {
                  cache: Ci(o.pluralRules),
                  strategy: gi.variadic
                })
              })
            }
            return Object.defineProperty(e, "defaultLocale", {
              get: function() {
                return e.memoizedDefaultLocale || (e.memoizedDefaultLocale = (new Intl.NumberFormat).resolvedOptions().locale), e.memoizedDefaultLocale
              },
              enumerable: !1,
              configurable: !0
            }), e.memoizedDefaultLocale = null, e.resolveLocale = function(e) {
              if (void 0 !== Intl.Locale) {
                var t = Intl.NumberFormat.supportedLocalesOf(e);
                return t.length > 0 ? new Intl.Locale(t[0]) : new Intl.Locale("string" == typeof e ? e : e[0])
              }
            }, e.__parse = oi, e.formats = {
              number: {
                integer: {
                  maximumFractionDigits: 0
                },
                currency: {
                  style: "currency"
                },
                percent: {
                  style: "percent"
                }
              },
              date: {
                short: {
                  month: "numeric",
                  day: "numeric",
                  year: "2-digit"
                },
                medium: {
                  month: "short",
                  day: "numeric",
                  year: "numeric"
                },
                long: {
                  month: "long",
                  day: "numeric",
                  year: "numeric"
                },
                full: {
                  weekday: "long",
                  month: "long",
                  day: "numeric",
                  year: "numeric"
                }
              },
              time: {
                short: {
                  hour: "numeric",
                  minute: "numeric"
                },
                medium: {
                  hour: "numeric",
                  minute: "numeric",
                  second: "numeric"
                },
                long: {
                  hour: "numeric",
                  minute: "numeric",
                  second: "numeric",
                  timeZoneName: "short"
                },
                full: {
                  hour: "numeric",
                  minute: "numeric",
                  second: "numeric",
                  timeZoneName: "short"
                }
              }
            }, e
          }();
          ! function(e) {
            e.FORMAT_ERROR = "FORMAT_ERROR", e.UNSUPPORTED_FORMATTER = "UNSUPPORTED_FORMATTER", e.INVALID_CONFIG = "INVALID_CONFIG", e.MISSING_DATA = "MISSING_DATA", e.MISSING_TRANSLATION = "MISSING_TRANSLATION"
          }(Si || (Si = {}));
          var Ti = function(e) {
              function t(n, r, i) {
                var o = this,
                  a = i ? i instanceof Error ? i : new Error(String(i)) : void 0;
                return (o = e.call(this, "[@formatjs/intl Error ".concat(n, "] ").concat(r, "\n").concat(a ? "\n".concat(a.message, "\n").concat(a.stack) : "")) || this).code = n, "function" == typeof Error.captureStackTrace && Error
                  .captureStackTrace(o, t), o
              }
              return ae(t, e), t
            }(Error),
            Oi = function(e) {
              function t(t, n) {
                return e.call(this, Si.UNSUPPORTED_FORMATTER, t, n) || this
              }
              return ae(t, e), t
            }(Ti),
            Ai = function(e) {
              function t(t, n) {
                return e.call(this, Si.INVALID_CONFIG, t, n) || this
              }
              return ae(t, e), t
            }(Ti),
            Pi = function(e) {
              function t(t, n) {
                return e.call(this, Si.MISSING_DATA, t, n) || this
              }
              return ae(t, e), t
            }(Ti),
            Mi = function(e) {
              function t(t, n, r) {
                return e.call(this, Si.FORMAT_ERROR, "".concat(t, "\nLocale: ").concat(n, "\n"), r) || this
              }
              return ae(t, e), t
            }(Ti),
            Di = function(e) {
              function t(t, n, r, i) {
                var o = e.call(this, "".concat(t, "\nMessageID: ").concat(null == r ? void 0 : r.id, "\nDefault Message: ").concat(null == r ? void 0 : r.defaultMessage, "\nDescription: ").concat(null == r ? void 0 : r.description, "\n"), n,
                  i) || this;
                return o.descriptor = r, o
              }
              return ae(t, e), t
            }(Mi),
            Ii = function(e) {
              function t(t, n) {
                var r = e.call(this, Si.MISSING_TRANSLATION, 'Missing message: "'.concat(t.id, '" for locale "').concat(n, '", using ').concat(t.defaultMessage ? "default message (".concat("string" == typeof t.defaultMessage ? t.defaultMessage :
                  t.defaultMessage.map((function(e) {
                    var t;
                    return null !== (t = e.value) && void 0 !== t ? t : JSON.stringify(e)
                  })).join(), ")") : "id", " as fallback.")) || this;
                return r.descriptor = t, r
              }
              return ae(t, e), t
            }(Ti);

          function Ni(e, t, n) {
            return void 0 === n && (n = {}), t.reduce((function(t, r) {
              return r in e ? t[r] = e[r] : r in n && (t[r] = n[r]), t
            }), {})
          }
          var Ri = {
            formats: {},
            messages: {},
            timeZone: void 0,
            defaultLocale: "en",
            defaultFormats: {},
            fallbackOnEmptyString: !0,
            onError: function(e) {},
            onWarn: function(e) {}
          };

          function ji(e) {
            return {
              create: function() {
                return {
                  get: function(t) {
                    return e[t]
                  },
                  set: function(t, n) {
                    e[t] = n
                  }
                }
              }
            }
          }

          function Li(e, t, n, r) {
            var i, o = e && e[t];
            if (o && (i = o[n]), i) return i;
            r(new Oi("No ".concat(t, " format named: ").concat(n)))
          }

          function Fi(e, t) {
            return Object.keys(e).reduce((function(n, r) {
              return n[r] = se({
                timeZone: t
              }, e[r]), n
            }), {})
          }

          function Bi(e, t) {
            return Object.keys(se(se({}, e), t)).reduce((function(n, r) {
              return n[r] = se(se({}, e[r] || {}), t[r] || {}), n
            }), {})
          }

          function zi(e, t) {
            if (!t) return e;
            var n = Ei.formats;
            return se(se(se({}, n), e), {
              date: Bi(Fi(n.date, t), Fi(e.date || {}, t)),
              time: Bi(Fi(n.time, t), Fi(e.time || {}, t))
            })
          }
          var Hi = function(e, t, n, r, i) {
              var o = e.locale,
                a = e.formats,
                s = e.messages,
                l = e.defaultLocale,
                c = e.defaultFormats,
                u = e.fallbackOnEmptyString,
                h = e.onError,
                p = e.timeZone,
                d = e.defaultRichTextElements;
              void 0 === n && (n = {
                id: ""
              });
              var f = n.id,
                g = n.defaultMessage;
              or(!!f,
                "[@formatjs/intl] An `id` must be provided to format a message. You can either:\n1. Configure your build toolchain with [babel-plugin-formatjs](https://formatjs.io/docs/tooling/babel-plugin)\nor [@formatjs/ts-transformer](https://formatjs.io/docs/tooling/ts-transformer) OR\n2. Configure your `eslint` config to include [eslint-plugin-formatjs](https://formatjs.io/docs/tooling/linter#enforce-id)\nto autofix this issue"
                );
              var m = String(f),
                v = s && Object.prototype.hasOwnProperty.call(s, m) && s[m];
              if (Array.isArray(v) && 1 === v.length && v[0].type === Dn.literal) return v[0].value;
              if (!r && v && "string" == typeof v && !d) return v.replace(/'\{(.*?)\}'/gi, "{$1}");
              if (r = se(se({}, d), r || {}), a = zi(a, p), c = zi(c, p), !v) {
                if (!1 === u && "" === v) return v;
                if ((!g || o && o.toLowerCase() !== l.toLowerCase()) && h(new Ii(n, o)), g) try {
                  return t.getMessageFormat(g, l, c, i).format(r)
                } catch (e) {
                  return h(new Di('Error formatting default message for: "'.concat(m, '", rendering default message verbatim'), o, n, e)), "string" == typeof g ? g : m
                }
                return m
              }
              try {
                return t.getMessageFormat(v, o, a, se({
                  formatters: t
                }, i || {})).format(r)
              } catch (e) {
                h(new Di('Error formatting message: "'.concat(m, '", using ').concat(g ? "default message" : "id", " as fallback."), o, n, e))
              }
              if (g) try {
                return t.getMessageFormat(g, l, c, i).format(r)
              } catch (e) {
                h(new Di('Error formatting the default message for: "'.concat(m, '", rendering message verbatim'), o, n, e))
              }
              return "string" == typeof v ? v : "string" == typeof g ? g : m
            },
            Ui = ["formatMatcher", "timeZone", "hour12", "weekday", "era", "year", "month", "day", "hour", "minute", "second", "timeZoneName", "hourCycle", "dateStyle", "timeStyle", "calendar", "numberingSystem", "fractionalSecondDigits"];

          function Wi(e, t, n, r) {
            var i = e.locale,
              o = e.formats,
              a = e.onError,
              s = e.timeZone;
            void 0 === r && (r = {});
            var l = r.format,
              c = se(se({}, s && {
                timeZone: s
              }), l && Li(o, t, l, a)),
              u = Ni(r, Ui, c);
            return "time" !== t || u.hour || u.minute || u.second || u.timeStyle || u.dateStyle || (u = se(se({}, u), {
              hour: "numeric",
              minute: "numeric"
            })), n(i, u)
          }

          function Vi(e, t) {
            for (var n = [], r = 2; r < arguments.length; r++) n[r - 2] = arguments[r];
            var i = n[0],
              o = n[1],
              a = void 0 === o ? {} : o,
              s = "string" == typeof i ? new Date(i || 0) : i;
            try {
              return Wi(e, "date", t, a).format(s)
            } catch (t) {
              e.onError(new Ti(Si.FORMAT_ERROR, "Error formatting date.", t))
            }
            return String(s)
          }

          function Xi(e, t) {
            for (var n = [], r = 2; r < arguments.length; r++) n[r - 2] = arguments[r];
            var i = n[0],
              o = n[1],
              a = void 0 === o ? {} : o,
              s = "string" == typeof i ? new Date(i || 0) : i;
            try {
              return Wi(e, "time", t, a).format(s)
            } catch (t) {
              e.onError(new Ti(Si.FORMAT_ERROR, "Error formatting time.", t))
            }
            return String(s)
          }

          function Gi(e, t) {
            for (var n = [], r = 2; r < arguments.length; r++) n[r - 2] = arguments[r];
            var i = n[0],
              o = n[1],
              a = n[2],
              s = void 0 === a ? {} : a,
              l = e.timeZone,
              c = e.locale,
              u = e.onError,
              h = Ni(s, Ui, l ? {
                timeZone: l
              } : {});
            try {
              return t(c, h).formatRange(i, o)
            } catch (e) {
              u(new Ti(Si.FORMAT_ERROR, "Error formatting date time range.", e))
            }
            return String(i)
          }

          function Yi(e, t) {
            for (var n = [], r = 2; r < arguments.length; r++) n[r - 2] = arguments[r];
            var i = n[0],
              o = n[1],
              a = void 0 === o ? {} : o,
              s = "string" == typeof i ? new Date(i || 0) : i;
            try {
              return Wi(e, "date", t, a).formatToParts(s)
            } catch (t) {
              e.onError(new Ti(Si.FORMAT_ERROR, "Error formatting date.", t))
            }
            return []
          }

          function qi(e, t) {
            for (var n = [], r = 2; r < arguments.length; r++) n[r - 2] = arguments[r];
            var i = n[0],
              o = n[1],
              a = void 0 === o ? {} : o,
              s = "string" == typeof i ? new Date(i || 0) : i;
            try {
              return Wi(e, "time", t, a).formatToParts(s)
            } catch (t) {
              e.onError(new Ti(Si.FORMAT_ERROR, "Error formatting time.", t))
            }
            return []
          }
          var Ki = ["style", "type", "fallback", "languageDisplay"];

          function $i(e, t, n, r) {
            var i = e.locale,
              o = e.onError;
            Intl.DisplayNames || o(new vi('Intl.DisplayNames is not available in this environment.\nTry polyfilling it using "@formatjs/intl-displaynames"\n', di.MISSING_INTL_API));
            var a = Ni(r, Ki);
            try {
              return t(i, a).of(n)
            } catch (e) {
              o(new Ti(Si.FORMAT_ERROR, "Error formatting display name.", e))
            }
          }
          var Zi = ["type", "style"],
            Ji = Date.now();

          function Qi(e, t, n, r) {
            void 0 === r && (r = {});
            var i = eo(e, t, n, r).reduce((function(e, t) {
              var n = t.value;
              return "string" != typeof n ? e.push(n) : "string" == typeof e[e.length - 1] ? e[e.length - 1] += n : e.push(n), e
            }), []);
            return 1 === i.length ? i[0] : 0 === i.length ? "" : i
          }

          function eo(e, t, n, r) {
            var i = e.locale,
              o = e.onError;
            void 0 === r && (r = {}), Intl.ListFormat || o(new vi('Intl.ListFormat is not available in this environment.\nTry polyfilling it using "@formatjs/intl-listformat"\n', di.MISSING_INTL_API));
            var a = Ni(r, Zi);
            try {
              var s = {},
                l = n.map((function(e, t) {
                  if ("object" == typeof e) {
                    var n = function(e) {
                      return "".concat(Ji, "_").concat(e, "_").concat(Ji)
                    }(t);
                    return s[n] = e, n
                  }
                  return String(e)
                }));
              return t(i, a).formatToParts(l).map((function(e) {
                return "literal" === e.type ? e : se(se({}, e), {
                  value: s[e.value] || e.value
                })
              }))
            } catch (e) {
              o(new Ti(Si.FORMAT_ERROR, "Error formatting list.", e))
            }
            return n
          }
          var to = ["type"];

          function no(e, t, n, r) {
            var i = e.locale,
              o = e.onError;
            void 0 === r && (r = {}), Intl.PluralRules || o(new vi('Intl.PluralRules is not available in this environment.\nTry polyfilling it using "@formatjs/intl-pluralrules"\n', di.MISSING_INTL_API));
            var a = Ni(r, to);
            try {
              return t(i, a).select(n)
            } catch (e) {
              o(new Mi("Error formatting plural.", i, e))
            }
            return "other"
          }
          var ro = ["numeric", "style"];

          function io(e, t, n, r, i) {
            void 0 === i && (i = {}), r || (r = "second"), Intl.RelativeTimeFormat || e.onError(new vi('Intl.RelativeTimeFormat is not available in this environment.\nTry polyfilling it using "@formatjs/intl-relativetimeformat"\n', di
              .MISSING_INTL_API));
            try {
              return function(e, t, n) {
                var r = e.locale,
                  i = e.formats,
                  o = e.onError;
                void 0 === n && (n = {});
                var a = n.format,
                  s = !!a && Li(i, "relative", a, o) || {};
                return t(r, Ni(n, ro, s))
              }(e, t, i).format(n, r)
            } catch (t) {
              e.onError(new Mi("Error formatting relative time.", e.locale, t))
            }
            return String(n)
          }
          var oo = ["style", "currency", "currencyDisplay", "unit", "unitDisplay", "useGrouping", "minimumIntegerDigits", "minimumFractionDigits", "maximumFractionDigits", "minimumSignificantDigits", "maximumSignificantDigits", "compactDisplay",
            "currencyDisplay", "currencySign", "notation", "signDisplay", "unit", "unitDisplay", "numberingSystem"
          ];

          function ao(e, t, n) {
            var r = e.locale,
              i = e.formats,
              o = e.onError;
            void 0 === n && (n = {});
            var a = n.format,
              s = a && Li(i, "number", a, o) || {};
            return t(r, Ni(n, oo, s))
          }

          function so(e, t, n, r) {
            void 0 === r && (r = {});
            try {
              return ao(e, t, r).format(n)
            } catch (t) {
              e.onError(new Ti(Si.FORMAT_ERROR, "Error formatting number.", t))
            }
            return String(n)
          }

          function lo(e, t, n, r) {
            void 0 === r && (r = {});
            try {
              return ao(e, t, r).formatToParts(n)
            } catch (t) {
              e.onError(new Ti(Si.FORMAT_ERROR, "Error formatting number.", t))
            }
            return []
          }

          function co(e) {
            var t;
            e.onWarn && e.defaultRichTextElements && "string" == typeof((t = e.messages || {}) ? t[Object.keys(t)[0]] : void 0) && e.onWarn(
              '[@formatjs/intl] "defaultRichTextElements" was specified but "message" was not pre-compiled. \nPlease consider using "@formatjs/cli" to pre-compile your messages for performance.\nFor more details see https://formatjs.io/docs/getting-started/message-distribution'
              )
          }

          function uo(e, t) {
            var n = function(e) {
                void 0 === e && (e = {
                  dateTime: {},
                  number: {},
                  message: {},
                  relativeTime: {},
                  pluralRules: {},
                  list: {},
                  displayNames: {}
                });
                var t = Intl.RelativeTimeFormat,
                  n = Intl.ListFormat,
                  r = Intl.DisplayNames,
                  i = ai((function() {
                    for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
                    return new((e = Intl.DateTimeFormat).bind.apply(e, pe([void 0], t, !1)))
                  }), {
                    cache: ji(e.dateTime),
                    strategy: gi.variadic
                  }),
                  o = ai((function() {
                    for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
                    return new((e = Intl.NumberFormat).bind.apply(e, pe([void 0], t, !1)))
                  }), {
                    cache: ji(e.number),
                    strategy: gi.variadic
                  }),
                  a = ai((function() {
                    for (var e, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
                    return new((e = Intl.PluralRules).bind.apply(e, pe([void 0], t, !1)))
                  }), {
                    cache: ji(e.pluralRules),
                    strategy: gi.variadic
                  });
                return {
                  getDateTimeFormat: i,
                  getNumberFormat: o,
                  getMessageFormat: ai((function(e, t, n, r) {
                    return new Ei(e, t, n, se({
                      formatters: {
                        getNumberFormat: o,
                        getDateTimeFormat: i,
                        getPluralRules: a
                      }
                    }, r || {}))
                  }), {
                    cache: ji(e.message),
                    strategy: gi.variadic
                  }),
                  getRelativeTimeFormat: ai((function() {
                    for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];
                    return new(t.bind.apply(t, pe([void 0], e, !1)))
                  }), {
                    cache: ji(e.relativeTime),
                    strategy: gi.variadic
                  }),
                  getPluralRules: a,
                  getListFormat: ai((function() {
                    for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
                    return new(n.bind.apply(n, pe([void 0], e, !1)))
                  }), {
                    cache: ji(e.list),
                    strategy: gi.variadic
                  }),
                  getDisplayNames: ai((function() {
                    for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
                    return new(r.bind.apply(r, pe([void 0], e, !1)))
                  }), {
                    cache: ji(e.displayNames),
                    strategy: gi.variadic
                  })
                }
              }(t),
              r = se(se({}, Ri), e),
              i = r.locale,
              o = r.defaultLocale,
              a = r.onError;
            return i ? !Intl.NumberFormat.supportedLocalesOf(i).length && a ? a(new Pi('Missing locale data for locale: "'.concat(i, '" in Intl.NumberFormat. Using default locale: "').concat(o,
              '" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details'))) : !Intl.DateTimeFormat.supportedLocalesOf(i).length && a && a(new Pi('Missing locale data for locale: "'.concat(i,
              '" in Intl.DateTimeFormat. Using default locale: "').concat(o, '" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details'))) : (a && a(new Ai('"locale" was not configured, using "'.concat(o,
              '" as fallback. See https://formatjs.io/docs/react-intl/api#intlshape for more details'))), r.locale = r.defaultLocale || "en"), co(r), se(se({}, r), {
              formatters: n,
              formatNumber: so.bind(null, r, n.getNumberFormat),
              formatNumberToParts: lo.bind(null, r, n.getNumberFormat),
              formatRelativeTime: io.bind(null, r, n.getRelativeTimeFormat),
              formatDate: Vi.bind(null, r, n.getDateTimeFormat),
              formatDateToParts: Yi.bind(null, r, n.getDateTimeFormat),
              formatTime: Xi.bind(null, r, n.getDateTimeFormat),
              formatDateTimeRange: Gi.bind(null, r, n.getDateTimeFormat),
              formatTimeToParts: qi.bind(null, r, n.getDateTimeFormat),
              formatPlural: no.bind(null, r, n.getPluralRules),
              formatMessage: Hi.bind(null, r, n),
              $t: Hi.bind(null, r, n),
              formatList: Qi.bind(null, r, n.getListFormat),
              formatListToParts: eo.bind(null, r, n.getListFormat),
              formatDisplayName: $i.bind(null, r, n.getDisplayNames)
            })
          }

          function ho(e) {
            or(e, "[React Intl] Could not find required `intl` object. <IntlProvider> needs to exist in the component ancestry.")
          }
          var po = se(se({}, Ri), {
            textComponent: Pe
          });
          var fo = Qe(null),
            go = fo.Provider,
            mo = fo;

          function vo() {
            var e = wt(mo);
            return ho(e), e
          }

          function _o(e) {
            return {
              locale: e.locale,
              timeZone: e.timeZone,
              fallbackOnEmptyString: e.fallbackOnEmptyString,
              formats: e.formats,
              textComponent: e.textComponent,
              messages: e.messages,
              defaultLocale: e.defaultLocale,
              defaultFormats: e.defaultFormats,
              onError: e.onError,
              onWarn: e.onWarn,
              wrapRichTextChunksInFragment: e.wrapRichTextChunksInFragment,
              defaultRichTextElements: e.defaultRichTextElements
            }
          }

          function bo(e) {
            return e ? Object.keys(e).reduce((function(t, n) {
              var r, i = e[n];
              return t[n] = wi(i) ? (r = i, function(e) {
                return r(zt.toArray(e))
              }) : i, t
            }), {}) : e
          }
          var yo = function(e, t, n, r) {
              for (var i = [], o = 4; o < arguments.length; o++) i[o - 4] = arguments[o];
              var a = bo(r),
                s = Hi.apply(void 0, pe([e, t, n, a], i, !1));
              return Array.isArray(s) ? zt.toArray(s) : s
            },
            wo = function(e, t) {
              var n = e.defaultRichTextElements,
                r = le(e, ["defaultRichTextElements"]),
                i = bo(n),
                o = uo(se(se(se({}, po), r), {
                  defaultRichTextElements: i
                }), t),
                a = {
                  locale: o.locale,
                  timeZone: o.timeZone,
                  fallbackOnEmptyString: o.fallbackOnEmptyString,
                  formats: o.formats,
                  defaultLocale: o.defaultLocale,
                  defaultFormats: o.defaultFormats,
                  messages: o.messages,
                  onError: o.onError,
                  defaultRichTextElements: i
                };
              return se(se({}, o), {
                formatMessage: yo.bind(null, a, o.formatters),
                $t: yo.bind(null, a, o.formatters)
              })
            },
            xo = function(e) {
              function t() {
                var t = null !== e && e.apply(this, arguments) || this;
                return t.cache = {
                  dateTime: {},
                  number: {},
                  message: {},
                  relativeTime: {},
                  pluralRules: {},
                  list: {},
                  displayNames: {}
                }, t.state = {
                  cache: t.cache,
                  intl: wo(_o(t.props), t.cache),
                  prevConfig: _o(t.props)
                }, t
              }
              return ae(t, e), t.getDerivedStateFromProps = function(e, t) {
                var n = t.prevConfig,
                  r = t.cache,
                  i = _o(e);
                return function(e, t) {
                  if (e === t) return !0;
                  if (!e || !t) return !1;
                  var n = Object.keys(e),
                    r = Object.keys(t),
                    i = n.length;
                  if (r.length !== i) return !1;
                  for (var o = 0; o < i; o++) {
                    var a = n[o];
                    if (e[a] !== t[a] || !Object.prototype.hasOwnProperty.call(t, a)) return !1
                  }
                  return !0
                }(n, i) ? null : {
                  intl: wo(i, r),
                  prevConfig: i
                }
              }, t.prototype.render = function() {
                return ho(this.state.intl), Te(go, {
                  value: this.state.intl
                }, this.props.children)
              }, t.displayName = "IntlProvider", t.defaultProps = po, t
            }(Nt),
            ko = xo;
          var Co = function(e) {
              var t = typeof e;
              return null != e && ("object" == t || "function" == t)
            },
            So = "object" == typeof W && W && W.Object === Object && W,
            Eo = "object" == typeof self && self && self.Object === Object && self,
            To = So || Eo || Function("return this")(),
            Oo = To,
            Ao = function() {
              return Oo.Date.now()
            },
            Po = /\s/;
          var Mo = function(e) {
              for (var t = e.length; t-- && Po.test(e.charAt(t)););
              return t
            },
            Do = Mo,
            Io = /^\s+/;
          var No = function(e) {
              return e ? e.slice(0, Do(e) + 1).replace(Io, "") : e
            },
            Ro = To.Symbol,
            jo = Ro,
            Lo = Object.prototype,
            Fo = Lo.hasOwnProperty,
            Bo = Lo.toString,
            zo = jo ? jo.toStringTag : void 0;
          var Ho = function(e) {
              var t = Fo.call(e, zo),
                n = e[zo];
              try {
                e[zo] = void 0;
                var r = !0
              } catch (e) {}
              var i = Bo.call(e);
              return r && (t ? e[zo] = n : delete e[zo]), i
            },
            Uo = Object.prototype.toString;
          var Wo = Ho,
            Vo = function(e) {
              return Uo.call(e)
            },
            Xo = Ro ? Ro.toStringTag : void 0;
          var Go = function(e) {
              return null == e ? void 0 === e ? "[object Undefined]" : "[object Null]" : Xo && Xo in Object(e) ? Wo(e) : Vo(e)
            },
            Yo = function(e) {
              return null != e && "object" == typeof e
            };
          var qo = No,
            Ko = Co,
            $o = function(e) {
              return "symbol" == typeof e || Yo(e) && "[object Symbol]" == Go(e)
            },
            Zo = /^[-+]0x[0-9a-f]+$/i,
            Jo = /^0b[01]+$/i,
            Qo = /^0o[0-7]+$/i,
            ea = parseInt;
          var ta = Co,
            na = Ao,
            ra = function(e) {
              if ("number" == typeof e) return e;
              if ($o(e)) return NaN;
              if (Ko(e)) {
                var t = "function" == typeof e.valueOf ? e.valueOf() : e;
                e = Ko(t) ? t + "" : t
              }
              if ("string" != typeof e) return 0 === e ? e : +e;
              e = qo(e);
              var n = Jo.test(e);
              return n || Qo.test(e) ? ea(e.slice(2), n ? 2 : 8) : Zo.test(e) ? NaN : +e
            },
            ia = Math.max,
            oa = Math.min;
          var aa = function(e, t, n) {
              var r, i, o, a, s, l, c = 0,
                u = !1,
                h = !1,
                p = !0;
              if ("function" != typeof e) throw new TypeError("Expected a function");

              function d(t) {
                var n = r,
                  o = i;
                return r = i = void 0, c = t, a = e.apply(o, n)
              }

              function f(e) {
                var n = e - l;
                return void 0 === l || n >= t || n < 0 || h && e - c >= o
              }

              function g() {
                var e = na();
                if (f(e)) return m(e);
                s = setTimeout(g, function(e) {
                  var n = t - (e - l);
                  return h ? oa(n, o - (e - c)) : n
                }(e))
              }

              function m(e) {
                return s = void 0, p && r ? d(e) : (r = i = void 0, a)
              }

              function v() {
                var e = na(),
                  n = f(e);
                if (r = arguments, i = this, l = e, n) {
                  if (void 0 === s) return function(e) {
                    return c = e, s = setTimeout(g, t), u ? d(e) : a
                  }(l);
                  if (h) return clearTimeout(s), s = setTimeout(g, t), d(l)
                }
                return void 0 === s && (s = setTimeout(g, t)), a
              }
              return t = ra(t) || 0, ta(n) && (u = !!n.leading, o = (h = "maxWait" in n) ? ia(ra(n.maxWait) || 0, t) : o, p = "trailing" in n ? !!n.trailing : p), v.cancel = function() {
                void 0 !== s && clearTimeout(s), c = 0, r = l = i = s = void 0
              }, v.flush = function() {
                return void 0 === s ? a : m(na())
              }, v
            },
            sa = aa,
            la = function() {
              for (var e, t, n, r = arguments.length, i = new Array(r), o = 0; o < r; o++) i[o] = arguments[o];
              return null === (e = window) || void 0 === e || null === (t = e.sa) || void 0 === t || null === (n = t.track) || void 0 === n ? void 0 : n.call(t, ...i)
            },
            ca = Date.now().toString(),
            ua = sa((() => {
              if (window.sizeGuideLoaded) {
                var e = new CustomEvent("refreshSizeGuide", {
                  detail: {},
                  bubbles: !1,
                  cancelable: !1
                });
                document.dispatchEvent(e)
              }
            }), 500);
          var ha = (e, t) => {
            var n, r = null == e ? void 0 : e.conditional_setting,
              i = !1;
            r.field_values.some((e => e.field)) || (i = !0);
            var o = Object.keys(t);
            return null === (n = r.field_values) || void 0 === n || n.some((e => {
              var n;
              return !!o.includes(e.field) && ((Array.isArray(t[e.field]) ? null === (n = t[e.field]) || void 0 === n ? void 0 : n.includes(e.value_label) : t[e.field] === e.value_label) ? (i = !0, !0) : void 0)
            })), i
          };

          function pa() {
            var e, t;
            return navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i) || (null === (e = document) || void 0 === e ||
              null === (t = e.documentElement) || void 0 === t ? void 0 : t.clientWidth) <= 960
          }
          var da = window.SHOP_PARAMS.finance_symbol,
            fa = function(e, t) {
              var n, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;
              try {
                var i, o, a, s;
                if (!ma()) return;
                var l = function(e, t) {
                    var n = ["text", "upload", "design"];
                    return e.reduce(((e, r) => {
                      var i, o;
                      return null != r && r.isHidden || null === (i = t[r.fid]) || void 0 === i || !i.length ? e : n.includes(r.type) ? e += Number(r.price) || 0 : (null == r || null === (o = r.options) || void 0 === o || o.forEach((n => {
                        ("dropdown" === r.type ? t[r.fid] === n.label : t[r.fid].includes(n.label)) && (e += Number(n.price) || 0)
                      })), e)
                    }), 0)
                  }(e, t),
                  c = (null === (i = window) || void 0 === i || null === (o = i.C_SETTINGS) || void 0 === o || null === (a = o.market) || void 0 === a || null === (s = a.market_price_setting) || void 0 === s ? void 0 : s.actual_rate) || 1,
                  u = 1e5;
                l = (l * u * c / u).toFixed(2);
                var h = (n = Number(r) + Number(l), isNaN(n) ? "" : n.toLocaleString("en-US", {
                  style: "currency",
                  currency: "USD"
                }).slice(1));
                setTimeout((() => {
                  var e, t = null === (e = document.querySelector("[data-track-source=add_to_cart]")) || void 0 === e ? void 0 : e.getElementsByClassName("money");
                  null != t && t.length && (t[0].innerHTML = da + h, document.dispatchEvent(new Event("plugin_currency_update")))
                }), 200)
              } catch (e) {}
            },
            ga = ["Nova 2022", "Nova 2023", "Hero", "Eva", "Life Style", "Geek", "Wind", "Flash"],
            ma = () => {
              var e, t, n = ka();
              return ga.includes(n) && !(null === (e = window) || void 0 === e || null === (t = e.appparakeet_data) || void 0 === t || !t.length)
            },
            va = function() {
              var e = d((function*(e, t, n, r, i, o) {
                var a, s, l, c, u, {
                    url: h,
                    method: p,
                    body: d
                  } = e,
                  f = h === xa("/api/cart") && ("POST" === p || "post" === p),
                  g = h === xa("/api/checkout/order") && ("POST" === p || "post" === p);
                f && window.SHOPLAZZA.meta.page.resource_id === e.body.product_id && (e.redirect = xa("/api/product-customizer/cart/add"), i((() => {}))(), e.headers["Content-Type"].startsWith("application/json") ? (e.body
                  .custom_properties = yield ya(t, n, r, o), e.body.quantity = Number(null === (s = e.body) || void 0 === s ? void 0 : s.quantity) || 0) : (e.headers["Content-Type"] = "application/json;charset=utf-8", e.body = yield _a(
                  e, t, n, r, o)));
                !g || "buy_now" !== d["refer_info[source]"] && "buy_now" !== (null == d || null === (a = d.refer_info) || void 0 === a ? void 0 : a.source) || (e.redirect = xa("/api/product-customizer/checkout/order/create"), i((() => {}))
                (), e.headers["Content-Type"].startsWith("application/json") ? (e.body.line_items[0].custom_properties = yield ya(t, n, r, o), e.body.line_items[0].quantity = Number(null === (l = e.body) || void 0 === l || null === (c =
                  l.line_items) || void 0 === c || null === (u = c[0]) || void 0 === u ? void 0 : u.quantity) || 0) : (e.headers["Content-Type"] = "application/json;charset=utf-8", e.body = yield ba(e, t, n, r, o)));
                return e
              }));
              return function(t, n, r, i, o, a) {
                return e.apply(this, arguments)
              }
            }(),
            _a = function() {
              var e = d((function*(e, t, n, r, i) {
                return h(h({}, e.body), {}, {
                  quantity: Number(e.body.quantity),
                  custom_properties: yield ya(t, n, r, i)
                })
              }));
              return function(t, n, r, i, o) {
                return e.apply(this, arguments)
              }
            }(),
            ba = function() {
              var e = d((function*(e, t, n, r, i) {
                var o, a = e.body || {},
                  s = function(e) {
                    var t = {};
                    for (var n in e)
                      for (var r = e[n], i = n.split(/[\[\]]/).filter(Boolean), o = t, a = 0; a < i.length; a++) {
                        var s = i[a];
                        a === i.length - 1 ? o[s] = r : (o[s] || (/\d+/.test(i[a + 1]) ? o[s] = [] : o[s] = {}), o = o[s])
                      }
                    return t
                  }(a);
                (s.customer_note = a["line_items[0][note]"], s.line_items) && (s.line_items[0].properties = void 0, s.line_items[0].custom_properties = yield ya(t, n, r, i), s.line_items = null === (o = s.line_items) || void 0 === o ?
                  void 0 : o.map((e => h(h({}, e), {}, {
                    quantity: Number(e.quantity) || 1
                  }))));
                return s
              }));
              return function(t, n, r, i, o) {
                return e.apply(this, arguments)
              }
            }(),
            ya = function() {
              var e = d((function*(e, t, n, r) {
                var i, o, a = t.reduce(((t, n) => {
                  if (null != n && n.isHidden) return t;
                  if (n.options) {
                    var i = 0;
                    return n.options.forEach((r => {
                      var o;
                      ("dropdown" === n.type ? e[n.fid] === r.label : null === (o = e[n.fid]) || void 0 === o ? void 0 : o.includes(r.label)) && (i++, t.push({
                        fid: n.fid,
                        id: "swatch" === n.type ? r.fid : r.value,
                        key: n.order,
                        value: r.label
                      }))
                    })), i || t.push({
                      fid: n.fid,
                      key: n.order,
                      value: ""
                    }), t
                  }
                  var o;
                  if ("upload" === n.type || "design" === n.type) return null !== (o = e[n.fid]) && void 0 !== o && o.length ? e[n.fid].forEach(((e, r) => {
                    t.push({
                      fid: n.fid,
                      key: "".concat(n.order, "_").concat(r + 1),
                      value: e.url || ""
                    })
                  })) : t.push({
                    fid: n.fid,
                    key: "".concat(n.order, "_1"),
                    value: ""
                  }), t;
                  if ("text" === n.type) {
                    var a, s, l, c, u, h, p = "";
                    if (null != n && null !== (a = n.preview_setting) && void 0 !== a && a.preview_open) "black" === (p = n.preview_setting.data[0].cards[0].textColor || (null == n || null === (u = n.preview_setting) || void 0 === u ?
                      void 0 : u.selected_color) || (null == n || null === (h = n.preview_setting.text_colors) || void 0 === h ? void 0 : h[0])) && (p = "#000000");
                    var d = null != n && null !== (s = n.preview_setting) && void 0 !== s && s.preview_open && e[n.fid] ? "".concat(e[n.fid], " (").concat(r({
                        id: "font_color"
                      }), ": ").concat(p, " ").concat(r({
                        id: "font"
                      }), ": ").concat(n.preview_setting.data[0].cards[0].textFont || (null == n || null === (l = n.preview_setting) || void 0 === l ? void 0 : l.text_families[0]), " ").concat(r({
                        id: "font_size"
                      }), ": ").concat(n.preview_setting.data[0].cards[0].textSize || (null == n || null === (c = n.preview_setting) || void 0 === c ? void 0 : c.text_size), ")") : e[n.fid],
                      f = {
                        fid: n.fid,
                        key: n.order,
                        value: d || ""
                      };
                    try {
                      var g, m;
                      "date" === (null === (g = window) || void 0 === g || null === (m = g.appparakeet_custom_type) || void 0 === m ? void 0 : m[n.order]) && /(\d{4})-(\d\d)-(\d\d)/g.test(d) && (d = d.replace(/(\d{4})-(\d\d)-(\d\d)/g,
                        "$2/$3/$1"), f.value = d)
                    } catch (e) {}
                    t.push(f)
                  }
                  return t
                }), []);
                if (n) {
                  var s = t.find((e => "design" === e.type));
                  s && a.push({
                    fid: s.fid,
                    key: "".concat(s.order, "_composite_image"),
                    value: n
                  })
                }
                var l = ie.getCoordinates();
                if (l && l.length > 0) {
                  var c = l.map((e => {
                      var t = a.find((t => e.oid && "swatch" === e.configType ? t.fid === e.fid && t.id === e.oid : t.fid === e.fid)),
                        n = t.key,
                        r = {
                          key: n,
                          value: t.value,
                          canvasHeight: e.canvasHeight,
                          canvasWidth: e.canvasWidth,
                          fid: e.fid,
                          oid: e.oid,
                          w: e.width,
                          h: e.height,
                          x: e.left,
                          y: e.top,
                          angle: e.angle
                        };
                      return {
                        key: "_coordinate_".concat(n, "_").concat(t.value),
                        fid: e.fid,
                        oid: e.oid,
                        value: JSON.stringify(r),
                        type: "coordinate"
                      }
                    })),
                    u = {};
                  c.forEach((e => u[e.fid + e.oid] = e)), c = Object.keys(u).map((e => u[e])).map((e => ({
                    key: e.key,
                    value: e.value,
                    type: e.type
                  }))), a = [...a, ...c]
                }
                var h = yield ie.createImgs();
                if (null != h && h.length && (a = [...a, ...h]), null !== (i = window) && void 0 !== i && null !== (o = i.appparakeet_switch) && void 0 !== o && o.print_img) {
                  var p = yield ie.createPrintImgs(t);
                  null != p && p.length && (a = a.concat(...p))
                }
                return a
              }));
              return function(t, n, r, i) {
                return e.apply(this, arguments)
              }
            }(),
            wa = e => {
              try {
                var {
                  url: t,
                  method: n
                } = e.detail.request, r = t === xa("/api/cart") && "POST" === n, i = t === xa("/api/checkout/order") && "POST" === n;
                if (r || i) {
                  var {
                    status: o
                  } = e.detail.response || {};
                  401 === o && setTimeout((() => {
                    window.location.reload()
                  }), 1e3)
                }
              } catch (e) {}
            },
            xa = e => {
              var {
                globalizePath: t
              } = window.C_APPS_COMMON || {};
              return t ? t(e) : window.C_SETTINGS.routes.root + e
            };

          function ka() {
            var e, t, n, r, i;
            return (null === (e = window) || void 0 === e || null === (t = e.C_SETTINGS) || void 0 === t || null === (n = t.theme) || void 0 === n ? void 0 : n.merchant_theme_name) || (null === (r = window) || void 0 === r || null === (i = r
              .SHOP_PARAMS) || void 0 === i ? void 0 : i.theme_name)
          }

          function Ca(e) {
            var t = ka();
            return Array.isArray(e) ? e.includes(t) : e === t
          }
          var Sa = e => {
              if (!e) return e;
              var t = e.split("/");
              return t[t.length - 1]
            },
            Ea = ["name"],
            Ta = ["_f"],
            Oa = ["_f"],
            Aa = e => "checkbox" === e.type,
            Pa = e => e instanceof Date,
            Ma = e => null == e,
            Da = e => "object" == typeof e,
            Ia = e => !Ma(e) && !Array.isArray(e) && Da(e) && !Pa(e),
            Na = e => Ia(e) && e.target ? Aa(e.target) ? e.target.checked : e.target.value : e,
            Ra = (e, t) => e.has((e => e.substring(0, e.search(/\.\d+(\.|$)/)) || e)(t)),
            ja = e => Array.isArray(e) ? e.filter(Boolean) : [],
            La = e => void 0 === e,
            Fa = (e, t, n) => {
              if (!t || !Ia(e)) return n;
              var r = ja(t.split(/[,[\].]+?/)).reduce(((e, t) => Ma(e) ? e : e[t]), e);
              return La(r) || r === e ? La(e[t]) ? n : e[t] : r
            },
            Ba = {
              BLUR: "blur",
              FOCUS_OUT: "focusout",
              CHANGE: "change"
            },
            za = {
              onBlur: "onBlur",
              onChange: "onChange",
              onSubmit: "onSubmit",
              onTouched: "onTouched",
              all: "all"
            },
            Ha = "max",
            Ua = "min",
            Wa = "maxLength",
            Va = "minLength",
            Xa = "pattern",
            Ga = "required",
            Ya = "validate",
            qa = Nn.createContext(null),
            Ka = () => Nn.useContext(qa),
            $a = function(e, t, n) {
              var r = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3],
                i = {
                  defaultValues: t._defaultValues
                },
                o = function(o) {
                  Object.defineProperty(i, o, {
                    get: () => {
                      var i = o;
                      return t._proxyFormState[i] !== za.all && (t._proxyFormState[i] = !r || za.all), n && (n[i] = !0), e[i]
                    }
                  })
                };
              for (var a in e) o(a);
              return i
            },
            Za = e => Ia(e) && !Object.keys(e).length,
            Ja = (e, t, n) => {
              var r = g(e, Ea);
              return Za(r) || Object.keys(r).length >= Object.keys(t).length || Object.keys(r).find((e => t[e] === (!n || za.all)))
            },
            Qa = e => Array.isArray(e) ? e : [e],
            es = (e, t, n) => n && t ? e === t : !e || !t || e === t || Qa(e).some((e => e && (e.startsWith(t) || t.startsWith(e))));

          function ts(e) {
            var t = Nn.useRef(e);
            t.current = e, Nn.useEffect((() => {
              var n = !e.disabled && t.current.subject.subscribe({
                next: t.current.callback
              });
              return () => {
                n && n.unsubscribe()
              }
            }), [e.disabled])
          }

          function ns(e) {
            var t = Ka(),
              {
                control: n = t.control,
                disabled: r,
                name: i,
                exact: o
              } = e || {},
              [a, s] = Nn.useState(n._formState),
              l = Nn.useRef(!0),
              c = Nn.useRef({
                isDirty: !1,
                dirtyFields: !1,
                touchedFields: !1,
                isValidating: !1,
                isValid: !1,
                errors: !1
              }),
              u = Nn.useRef(i);
            return u.current = i, ts({
              disabled: r,
              callback: Nn.useCallback((e => l.current && es(u.current, e.name, o) && Ja(e, c.current) && s(h(h({}, n._formState), e))), [n, o]),
              subject: n._subjects.state
            }), Nn.useEffect((() => (l.current = !0, () => {
              l.current = !1
            })), []), $a(a, n, c.current, !1)
          }
          var rs = e => "string" == typeof e,
            is = (e, t, n, r) => {
              var i = Array.isArray(e);
              return rs(e) ? (r && t.watch.add(e), Fa(n, e)) : i ? e.map((e => (r && t.watch.add(e), Fa(n, e)))) : (r && (t.watchAll = !0), n)
            },
            os = e => "function" == typeof e,
            as = e => {
              for (var t in e)
                if (os(e[t])) return !0;
              return !1
            };

          function ss(e) {
            var t = Ka(),
              {
                control: n = t.control,
                name: r,
                defaultValue: i,
                disabled: o,
                exact: a
              } = e || {},
              s = Nn.useRef(r);
            s.current = r, ts({
              disabled: o,
              subject: n._subjects.watch,
              callback: Nn.useCallback((e => {
                if (es(s.current, e.name, a)) {
                  var t = is(s.current, n._names, e.values || n._formValues);
                  c(La(s.current) || Ia(t) && !as(t) ? h({}, t) : Array.isArray(t) ? [...t] : La(t) ? i : t)
                }
              }), [n, a, i])
            });
            var [l, c] = Nn.useState(La(i) ? n._getWatch(r) : i);
            return Nn.useEffect((() => n._removeUnmounted())), l
          }

          function ls(e) {
            var t = Ka(),
              {
                name: n,
                control: r = t.control,
                shouldUnregister: i
              } = e,
              o = Ra(r._names.array, n),
              a = ss({
                control: r,
                name: n,
                defaultValue: Fa(r._formValues, n, Fa(r._defaultValues, n, e.defaultValue)),
                exact: !0
              }),
              s = ns({
                control: r,
                name: n
              }),
              l = Nn.useRef(r.register(n, h(h({}, e.rules), {}, {
                value: a
              })));
            return Nn.useEffect((() => {
              var e = (e, t) => {
                var n = Fa(r._fields, e);
                n && (n._f.mount = t)
              };
              return e(n, !0), () => {
                var t = r._options.shouldUnregister || i;
                (o ? t && !r._stateFlags.action : t) ? r.unregister(n): e(n, !1)
              }
            }), [n, r, o, i]), {
              field: {
                name: n,
                value: a,
                onChange: Nn.useCallback((e => l.current.onChange({
                  target: {
                    value: Na(e),
                    name: n
                  },
                  type: Ba.CHANGE
                })), [n]),
                onBlur: Nn.useCallback((() => l.current.onBlur({
                  target: {
                    value: Fa(r._formValues, n),
                    name: n
                  },
                  type: Ba.BLUR
                })), [n, r]),
                ref: e => {
                  var t = Fa(r._fields, n);
                  t && e && (t._f.ref = {
                    focus: () => e.focus(),
                    select: () => e.select(),
                    setCustomValidity: t => e.setCustomValidity(t),
                    reportValidity: () => e.reportValidity()
                  })
                }
              },
              formState: s,
              fieldState: Object.defineProperties({}, {
                invalid: {
                  enumerable: !0,
                  get: () => !!Fa(s.errors, n)
                },
                isDirty: {
                  enumerable: !0,
                  get: () => !!Fa(s.dirtyFields, n)
                },
                isTouched: {
                  enumerable: !0,
                  get: () => !!Fa(s.touchedFields, n)
                },
                error: {
                  enumerable: !0,
                  get: () => Fa(s.errors, n)
                }
              })
            }
          }
          var cs = (e, t, n, r, i) => t ? h(h({}, n[e]), {}, {
              types: h(h({}, n[e] && n[e].types ? n[e].types : {}), {}, {
                [r]: i || !0
              })
            }) : {},
            us = e => /^\w*$/.test(e),
            hs = e => ja(e.replace(/["|']|\]/g, "").split(/\.|\[/));

          function ps(e, t, n) {
            for (var r = -1, i = us(t) ? [t] : hs(t), o = i.length, a = o - 1; ++r < o;) {
              var s = i[r],
                l = n;
              if (r !== a) {
                var c = e[s];
                l = Ia(c) || Array.isArray(c) ? c : isNaN(+i[r + 1]) ? {} : []
              }
              e[s] = l, e = e[s]
            }
            return e
          }
          var ds = (e, t, n) => {
              for (var r of n || Object.keys(e)) {
                var i = Fa(e, r);
                if (i) {
                  var {
                    _f: o
                  } = i, a = g(i, Ta);
                  if (o && t(o.name)) {
                    if (o.ref.focus) {
                      o.ref.focus();
                      break
                    }
                    if (o.refs && o.refs[0].focus) {
                      o.refs[0].focus();
                      break
                    }
                  } else Ia(a) && ds(a, t)
                }
              }
            },
            fs = (e, t, n) => !n && (t.watchAll || t.watch.has(e) || [...t.watch].some((t => e.startsWith(t) && /^\.\w+/.test(e.slice(t.length))))),
            gs = (e, t, n) => {
              var r = ja(Fa(e, n));
              return ps(r, "root", t[n]), ps(e, n, r), e
            },
            ms = e => "boolean" == typeof e,
            vs = e => "file" === e.type,
            _s = e => rs(e) || Nn.isValidElement(e),
            bs = e => "radio" === e.type,
            ys = e => e instanceof RegExp,
            ws = {
              value: !1,
              isValid: !1
            },
            xs = {
              value: !0,
              isValid: !0
            },
            ks = e => {
              if (Array.isArray(e)) {
                if (e.length > 1) {
                  var t = e.filter((e => e && e.checked && !e.disabled)).map((e => e.value));
                  return {
                    value: t,
                    isValid: !!t.length
                  }
                }
                return e[0].checked && !e[0].disabled ? e[0].attributes && !La(e[0].attributes.value) ? La(e[0].value) || "" === e[0].value ? xs : {
                  value: e[0].value,
                  isValid: !0
                } : xs : ws
              }
              return ws
            },
            Cs = {
              isValid: !1,
              value: null
            },
            Ss = e => Array.isArray(e) ? e.reduce(((e, t) => t && t.checked && !t.disabled ? {
              isValid: !0,
              value: t.value
            } : e), Cs) : Cs;

          function Es(e, t) {
            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "validate";
            if (_s(e) || Array.isArray(e) && e.every(_s) || ms(e) && !e) return {
              type: n,
              message: _s(e) ? e : "",
              ref: t
            }
          }
          var Ts = e => Ia(e) && !ys(e) ? e : {
              value: e,
              message: ""
            },
            Os = function() {
              var e = d((function*(e, t, n, r, i) {
                var {
                  ref: o,
                  refs: a,
                  required: s,
                  maxLength: l,
                  minLength: c,
                  min: u,
                  max: p,
                  pattern: d,
                  validate: f,
                  name: g,
                  valueAsNumber: m,
                  mount: v,
                  disabled: _
                } = e._f;
                if (!v || _) return {};
                var b = a ? a[0] : o,
                  y = e => {
                    r && b.reportValidity && (b.setCustomValidity(ms(e) ? "" : e || " "), b.reportValidity())
                  },
                  w = {},
                  x = bs(o),
                  k = Aa(o),
                  C = x || k,
                  S = (m || vs(o)) && !o.value || "" === t || Array.isArray(t) && !t.length,
                  E = cs.bind(null, g, n, w),
                  T = function(e, t, n) {
                    var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : Wa,
                      i = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : Va,
                      a = e ? t : n;
                    w[g] = h({
                      type: e ? r : i,
                      message: a,
                      ref: o
                    }, E(e ? r : i, a))
                  };
                if (i ? !Array.isArray(t) || !t.length : s && (!C && (S || Ma(t)) || ms(t) && !t || k && !ks(a).isValid || x && !Ss(a).isValid)) {
                  var {
                    value: O,
                    message: A
                  } = _s(s) ? {
                    value: !!s,
                    message: s
                  } : Ts(s);
                  if (O && (w[g] = h({
                      type: Ga,
                      message: A,
                      ref: b
                    }, E(Ga, A)), !n)) return y(A), w
                }
                if (!(S || Ma(u) && Ma(p))) {
                  var P, M, D = Ts(p),
                    I = Ts(u);
                  if (Ma(t) || isNaN(t)) {
                    var N = o.valueAsDate || new Date(t),
                      R = e => new Date((new Date).toDateString() + " " + e),
                      j = "time" == o.type,
                      L = "week" == o.type;
                    rs(D.value) && t && (P = j ? R(t) > R(D.value) : L ? t > D.value : N > new Date(D.value)), rs(I.value) && t && (M = j ? R(t) < R(I.value) : L ? t < I.value : N < new Date(I.value))
                  } else {
                    var F = o.valueAsNumber || (t ? +t : t);
                    Ma(D.value) || (P = F > D.value), Ma(I.value) || (M = F < I.value)
                  }
                  if ((P || M) && (T(!!P, D.message, I.message, Ha, Ua), !n)) return y(w[g].message), w
                }
                if ((l || c) && !S && (rs(t) || i && Array.isArray(t))) {
                  var B = Ts(l),
                    z = Ts(c),
                    H = !Ma(B.value) && t.length > B.value,
                    U = !Ma(z.value) && t.length < z.value;
                  if ((H || U) && (T(H, B.message, z.message), !n)) return y(w[g].message), w
                }
                if (d && !S && rs(t)) {
                  var {
                    value: W,
                    message: V
                  } = Ts(d);
                  if (ys(W) && !t.match(W) && (w[g] = h({
                      type: Xa,
                      message: V,
                      ref: o
                    }, E(Xa, V)), !n)) return y(V), w
                }
                if (f)
                  if (os(f)) {
                    var X = Es(yield f(t), b);
                    if (X && (w[g] = h(h({}, X), E(Ya, X.message)), !n)) return y(X.message), w
                  } else if (Ia(f)) {
                  var G = {};
                  for (var Y in f) {
                    if (!Za(G) && !n) break;
                    var q = Es(yield f[Y](t), b, Y);
                    q && (G = h(h({}, q), E(Y, q.message)), y(q.message), n && (w[g] = G))
                  }
                  if (!Za(G) && (w[g] = h({
                      ref: b
                    }, G), !n)) return w
                }
                return y(!0), w
              }));
              return function(t, n, r, i, o) {
                return e.apply(this, arguments)
              }
            }(),
            As = e => {
              var t = e.constructor && e.constructor.prototype;
              return Ia(t) && t.hasOwnProperty("isPrototypeOf")
            },
            Ps = "undefined" != typeof window && void 0 !== window.HTMLElement && "undefined" != typeof document;

          function Ms(e) {
            var t, n = Array.isArray(e);
            if (e instanceof Date) t = new Date(e);
            else if (e instanceof Set) t = new Set(e);
            else {
              if (Ps && (e instanceof Blob || e instanceof FileList) || !n && !Ia(e)) return e;
              if (t = n ? [] : {}, Array.isArray(e) || As(e))
                for (var r in e) t[r] = Ms(e[r]);
              else t = e
            }
            return t
          }
          var Ds = e => ({
            isOnSubmit: !e || e === za.onSubmit,
            isOnBlur: e === za.onBlur,
            isOnChange: e === za.onChange,
            isOnAll: e === za.all,
            isOnTouch: e === za.onTouched
          });

          function Is(e) {
            for (var t in e)
              if (!La(e[t])) return !1;
            return !0
          }

          function Ns(e, t) {
            var n, r = us(t) ? [t] : hs(t),
              i = 1 == r.length ? e : function(e, t) {
                for (var n = t.slice(0, -1).length, r = 0; r < n;) e = La(e) ? r++ : e[t[r++]];
                return e
              }(e, r),
              o = r[r.length - 1];
            i && delete i[o];
            for (var a = 0; a < r.slice(0, -1).length; a++) {
              var s = -1,
                l = void 0,
                c = r.slice(0, -(a + 1)),
                u = c.length - 1;
              for (a > 0 && (n = e); ++s < c.length;) {
                var h = c[s];
                l = l ? l[h] : e[h], u === s && (Ia(l) && Za(l) || Array.isArray(l) && Is(l)) && (n ? delete n[h] : delete e[h]), n = l
              }
            }
            return e
          }

          function Rs() {
            var e = [];
            return {
              get observers() {
                return e
              },
              next: t => {
                for (var n of e) n.next(t)
              },
              subscribe: t => (e.push(t), {
                unsubscribe: () => {
                  e = e.filter((e => e !== t))
                }
              }),
              unsubscribe: () => {
                e = []
              }
            }
          }
          var js = e => Ma(e) || !Da(e);

          function Ls(e, t) {
            if (js(e) || js(t)) return e === t;
            if (Pa(e) && Pa(t)) return e.getTime() === t.getTime();
            var n = Object.keys(e),
              r = Object.keys(t);
            if (n.length !== r.length) return !1;
            for (var i of n) {
              var o = e[i];
              if (!r.includes(i)) return !1;
              if ("ref" !== i) {
                var a = t[i];
                if (Pa(o) && Pa(a) || Ia(o) && Ia(a) || Array.isArray(o) && Array.isArray(a) ? !Ls(o, a) : o !== a) return !1
              }
            }
            return !0
          }
          var Fs = e => {
              var t = e ? e.ownerDocument : 0;
              return e instanceof(t && t.defaultView ? t.defaultView.HTMLElement : HTMLElement)
            },
            Bs = e => "select-multiple" === e.type,
            zs = e => bs(e) || Aa(e),
            Hs = e => Fs(e) && e.isConnected;

          function Us(e) {
            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
              n = Array.isArray(e);
            if (Ia(e) || n)
              for (var r in e) Array.isArray(e[r]) || Ia(e[r]) && !as(e[r]) ? (t[r] = Array.isArray(e[r]) ? [] : {}, Us(e[r], t[r])) : Ma(e[r]) || (t[r] = !0);
            return t
          }

          function Ws(e, t, n) {
            var r = Array.isArray(e);
            if (Ia(e) || r)
              for (var i in e) Array.isArray(e[i]) || Ia(e[i]) && !as(e[i]) ? La(t) || js(n[i]) ? n[i] = Array.isArray(e[i]) ? Us(e[i], []) : h({}, Us(e[i])) : Ws(e[i], Ma(t) ? {} : t[i], n[i]) : n[i] = !Ls(e[i], t[i]);
            return n
          }
          var Vs = (e, t) => Ws(e, t, Us(t)),
            Xs = (e, t) => {
              var {
                valueAsNumber: n,
                valueAsDate: r,
                setValueAs: i
              } = t;
              return La(e) ? e : n ? "" === e ? NaN : e ? +e : e : r && rs(e) ? new Date(e) : i ? i(e) : e
            };

          function Gs(e) {
            var t = e.ref;
            if (!(e.refs ? e.refs.every((e => e.disabled)) : t.disabled)) return vs(t) ? t.files : bs(t) ? Ss(e.refs).value : Bs(t) ? [...t.selectedOptions].map((e => {
              var {
                value: t
              } = e;
              return t
            })) : Aa(t) ? ks(e.refs).value : Xs(La(t.value) ? e.ref.value : t.value, e)
          }
          var Ys = (e, t, n, r) => {
              var i = {};
              for (var o of e) {
                var a = Fa(t, o);
                a && ps(i, o, a._f)
              }
              return {
                criteriaMode: n,
                names: [...e],
                fields: i,
                shouldUseNativeValidation: r
              }
            },
            qs = e => La(e) ? void 0 : ys(e) ? e.source : Ia(e) ? ys(e.value) ? e.value.source : e.value : e,
            Ks = e => e.mount && (e.required || e.min || e.max || e.maxLength || e.minLength || e.pattern || e.validate);

          function $s(e, t, n) {
            var r = Fa(e, n);
            if (r || us(n)) return {
              error: r,
              name: n
            };
            for (var i = n.split("."); i.length;) {
              var o = i.join("."),
                a = Fa(t, o),
                s = Fa(e, o);
              if (a && !Array.isArray(a) && n !== o) return {
                name: n
              };
              if (s && s.type) return {
                name: o,
                error: s
              };
              i.pop()
            }
            return {
              name: n
            }
          }
          var Zs = (e, t, n, r, i) => !i.isOnAll && (!n && i.isOnTouch ? !(t || e) : (n ? r.isOnBlur : i.isOnBlur) ? !e : !(n ? r.isOnChange : i.isOnChange) || e),
            Js = (e, t) => !ja(Fa(e, t)).length && Ns(e, t),
            Qs = {
              mode: za.onSubmit,
              reValidateMode: za.onChange,
              shouldFocusError: !0
            };

          function el() {
            var e, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
              n = h(h({}, Qs), t),
              r = {
                submitCount: 0,
                isDirty: !1,
                isValidating: !1,
                isSubmitted: !1,
                isSubmitting: !1,
                isSubmitSuccessful: !1,
                isValid: !1,
                touchedFields: {},
                dirtyFields: {},
                errors: {}
              },
              i = {},
              o = Ms(n.defaultValues) || {},
              a = n.shouldUnregister ? {} : Ms(o),
              s = {
                action: !1,
                mount: !1,
                watch: !1
              },
              l = {
                mount: new Set,
                unMount: new Set,
                array: new Set,
                watch: new Set
              },
              c = 0,
              u = {},
              p = {
                isDirty: !1,
                dirtyFields: !1,
                touchedFields: !1,
                isValidating: !1,
                isValid: !1,
                errors: !1
              },
              f = {
                watch: Rs(),
                array: Rs(),
                state: Rs()
              },
              m = Ds(n.mode),
              v = Ds(n.reValidateMode),
              _ = n.criteriaMode === za.all,
              b = function() {
                var e = d((function*(e) {
                  var t = !1;
                  return p.isValid && (t = n.resolver ? Za((yield k()).errors) : yield S(i, !0), e || t === r.isValid || (r.isValid = t, f.state.next({
                    isValid: t
                  }))), t
                }));
                return function(t) {
                  return e.apply(this, arguments)
                }
              }(),
              y = (e, t, n, r) => {
                var l = Fa(i, e);
                if (l) {
                  var c = Fa(a, e, La(n) ? Fa(o, e) : n);
                  La(c) || r && r.defaultChecked || t ? ps(a, e, t ? c : Gs(l._f)) : O(e, c), s.mount && b()
                }
              },
              w = (e, t, n, i, a) => {
                var s = !1,
                  l = {
                    name: e
                  },
                  c = Fa(r.touchedFields, e);
                if (p.isDirty) {
                  var u = r.isDirty;
                  r.isDirty = l.isDirty = E(), s = u !== l.isDirty
                }
                if (p.dirtyFields && (!n || i)) {
                  var h = Fa(r.dirtyFields, e);
                  Ls(Fa(o, e), t) ? Ns(r.dirtyFields, e) : ps(r.dirtyFields, e, !0), l.dirtyFields = r.dirtyFields, s = s || h !== Fa(r.dirtyFields, e)
                }
                return n && !c && (ps(r.touchedFields, e, n), l.touchedFields = r.touchedFields, s = s || p.touchedFields && c !== n), s && a && f.state.next(l), s ? l : {}
              },
              x = function() {
                var n = d((function*(n, i, o, a) {
                  var s, l = Fa(r.errors, n),
                    d = p.isValid && r.isValid !== i;
                  if (t.delayError && o ? (s = () => ((e, t) => {
                      ps(r.errors, e, t), f.state.next({
                        errors: r.errors
                      })
                    })(n, o), (e = e => {
                      clearTimeout(c), c = window.setTimeout(s, e)
                    })(t.delayError)) : (clearTimeout(c), e = null, o ? ps(r.errors, n, o) : Ns(r.errors, n)), (o ? !Ls(l, o) : l) || !Za(a) || d) {
                    var g = h(h(h({}, a), d ? {
                      isValid: i
                    } : {}), {}, {
                      errors: r.errors,
                      name: n
                    });
                    r = h(h({}, r), g), f.state.next(g)
                  }
                  u[n]--, p.isValidating && !Object.values(u).some((e => e)) && (f.state.next({
                    isValidating: !1
                  }), u = {})
                }));
                return function(e, t, r, i) {
                  return n.apply(this, arguments)
                }
              }(),
              k = function() {
                var e = d((function*(e) {
                  return n.resolver ? yield n.resolver(h({}, a), n.context, Ys(e || l.mount, i, n.criteriaMode, n.shouldUseNativeValidation)): {}
                }));
                return function(t) {
                  return e.apply(this, arguments)
                }
              }(),
              C = function() {
                var e = d((function*(e) {
                  var {
                    errors: t
                  } = yield k();
                  if (e)
                    for (var n of e) {
                      var i = Fa(t, n);
                      i ? ps(r.errors, n, i) : Ns(r.errors, n)
                    } else r.errors = t;
                  return t
                }));
                return function(t) {
                  return e.apply(this, arguments)
                }
              }(),
              S = function() {
                var e = d((function*(e, t) {
                  var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {
                    valid: !0
                  };
                  for (var o in e) {
                    var s = e[o];
                    if (s) {
                      var {
                        _f: c
                      } = s, u = g(s, Oa);
                      if (c) {
                        var h = l.array.has(c.name),
                          p = yield Os(s, Fa(a, c.name), _, n.shouldUseNativeValidation, h);
                        if (p[c.name] && (i.valid = !1, t)) break;
                        !t && (Fa(p, c.name) ? h ? gs(r.errors, p, c.name) : ps(r.errors, c.name, p[c.name]) : Ns(r.errors, c.name))
                      }
                      u && (yield S(u, t, i))
                    }
                  }
                  return i.valid
                }));
                return function(t, n) {
                  return e.apply(this, arguments)
                }
              }(),
              E = (e, t) => (e && t && ps(a, e, t), !Ls(I(), o)),
              T = (e, t, n) => {
                var r = h({}, s.mount ? a : La(t) ? o : rs(e) ? {
                  [e]: t
                } : t);
                return is(e, l, r, n)
              },
              O = function(e, t) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                  r = Fa(i, e),
                  o = t;
                if (r) {
                  var s = r._f;
                  s && (!s.disabled && ps(a, e, Xs(t, s)), o = Ps && Fs(s.ref) && Ma(t) ? "" : t, Bs(s.ref) ? [...s.ref.options].forEach((e => e.selected = o.includes(e.value))) : s.refs ? Aa(s.ref) ? s.refs.length > 1 ? s.refs.forEach((e => (!e
                      .defaultChecked || !e.disabled) && (e.checked = Array.isArray(o) ? !!o.find((t => t === e.value)) : o === e.value))) : s.refs[0] && (s.refs[0].checked = !!o) : s.refs.forEach((e => e.checked = e.value === o)) : vs(s.ref) ?
                    s.ref.value = "" : (s.ref.value = o, s.ref.type || f.watch.next({
                      name: e
                    })))
                }(n.shouldDirty || n.shouldTouch) && w(e, o, n.shouldTouch, n.shouldDirty, !0), n.shouldValidate && D(e)
              },
              A = (e, t, n) => {
                for (var r in t) {
                  var o = t[r],
                    a = "".concat(e, ".").concat(r),
                    s = Fa(i, a);
                  !l.array.has(e) && js(o) && (!s || s._f) || Pa(o) ? O(a, o, n) : A(a, o, n)
                }
              },
              P = function(e, t) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                  s = Fa(i, e),
                  c = l.array.has(e),
                  u = Ms(t);
                ps(a, e, u), c ? (f.array.next({
                  name: e,
                  values: a
                }), (p.isDirty || p.dirtyFields) && n.shouldDirty && (r.dirtyFields = Vs(o, a), f.state.next({
                  name: e,
                  dirtyFields: r.dirtyFields,
                  isDirty: E(e, u)
                }))) : !s || s._f || Ma(u) ? O(e, u, n) : A(e, u, n), fs(e, l) && f.state.next({}), f.watch.next({
                  name: e
                })
              },
              M = function() {
                var t = d((function*(t) {
                  var o = t.target,
                    s = o.name,
                    c = Fa(i, s);
                  if (c) {
                    var p, d, g = o.type ? Gs(c._f) : Na(t),
                      y = t.type === Ba.BLUR || t.type === Ba.FOCUS_OUT,
                      C = !Ks(c._f) && !n.resolver && !Fa(r.errors, s) && !c._f.deps || Zs(y, Fa(r.touchedFields, s), r.isSubmitted, v, m),
                      S = fs(s, l, y);
                    ps(a, s, g), y ? (c._f.onBlur && c._f.onBlur(t), e && e(0)) : c._f.onChange && c._f.onChange(t);
                    var E = w(s, g, y, !1),
                      T = !Za(E) || S;
                    if (!y && f.watch.next({
                        name: s,
                        type: t.type
                      }), C) return T && f.state.next(h({
                      name: s
                    }, S ? {} : E));
                    if (!y && S && f.state.next({}), u[s] = (u[s], 1), f.state.next({
                        isValidating: !0
                      }), n.resolver) {
                      var {
                        errors: O
                      } = yield k([s]), A = $s(r.errors, i, s), P = $s(O, i, A.name || s);
                      p = P.error, s = P.name, d = Za(O)
                    } else p = (yield Os(c, Fa(a, s), _, n.shouldUseNativeValidation))[s], d = yield b(!0);
                    c._f.deps && D(c._f.deps), x(s, d, p, E)
                  }
                }));
                return function(e) {
                  return t.apply(this, arguments)
                }
              }(),
              D = function() {
                var e = d((function*(e) {
                  var t, o, a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
                    s = Qa(e);
                  if (f.state.next({
                      isValidating: !0
                    }), n.resolver) {
                    var c = yield C(La(e) ? e : s);
                    t = Za(c), o = e ? !s.some((e => Fa(c, e))) : t
                  } else e ? (o = (yield Promise.all(s.map(function() {
                    var e = d((function*(e) {
                      var t = Fa(i, e);
                      return yield S(t && t._f ? {
                        [e]: t
                      } : t)
                    }));
                    return function(t) {
                      return e.apply(this, arguments)
                    }
                  }()))).every(Boolean), (o || r.isValid) && b()) : o = t = yield S(i);
                  return f.state.next(h(h(h({}, !rs(e) || p.isValid && t !== r.isValid ? {} : {
                    name: e
                  }), n.resolver || !e ? {
                    isValid: t
                  } : {}), {}, {
                    errors: r.errors,
                    isValidating: !1
                  })), a.shouldFocus && !o && ds(i, (e => e && Fa(r.errors, e)), e ? s : l.mount), o
                }));
                return function(t) {
                  return e.apply(this, arguments)
                }
              }(),
              I = e => {
                var t = h(h({}, o), s.mount ? a : {});
                return La(e) ? t : rs(e) ? Fa(t, e) : e.map((e => Fa(t, e)))
              },
              N = (e, t) => ({
                invalid: !!Fa((t || r).errors, e),
                isDirty: !!Fa((t || r).dirtyFields, e),
                isTouched: !!Fa((t || r).touchedFields, e),
                error: Fa((t || r).errors, e)
              }),
              R = function(e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                for (var s of e ? Qa(e) : l.mount) l.mount.delete(s), l.array.delete(s), Fa(i, s) && (t.keepValue || (Ns(i, s), Ns(a, s)), !t.keepError && Ns(r.errors, s), !t.keepDirty && Ns(r.dirtyFields, s), !t.keepTouched && Ns(r
                  .touchedFields, s), !n.shouldUnregister && !t.keepDefaultValue && Ns(o, s));
                f.watch.next({}), f.state.next(h(h({}, r), t.keepDirty ? {
                  isDirty: E()
                } : {})), !t.keepIsValid && b()
              },
              j = function(e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
                  r = Fa(i, e),
                  c = ms(t.disabled);
                return ps(i, e, h(h({}, r || {}), {}, {
                  _f: h(h({}, r && r._f ? r._f : {
                    ref: {
                      name: e
                    }
                  }), {}, {
                    name: e,
                    mount: !0
                  }, t)
                })), l.mount.add(e), r ? c && ps(a, e, t.disabled ? void 0 : Fa(a, e, Gs(r._f))) : y(e, !0, t.value), h(h(h({}, c ? {
                  disabled: t.disabled
                } : {}), n.shouldUseNativeValidation ? {
                  required: !!t.required,
                  min: qs(t.min),
                  max: qs(t.max),
                  minLength: qs(t.minLength),
                  maxLength: qs(t.maxLength),
                  pattern: qs(t.pattern)
                } : {}), {}, {
                  name: e,
                  onChange: M,
                  onBlur: M,
                  ref: a => {
                    if (a) {
                      j(e, t), r = Fa(i, e);
                      var c = La(a.value) && a.querySelectorAll && a.querySelectorAll("input,select,textarea")[0] || a,
                        u = zs(c),
                        p = r._f.refs || [];
                      if (u ? p.find((e => e === c)) : c === r._f.ref) return;
                      ps(i, e, {
                        _f: h(h({}, r._f), u ? {
                          refs: [...p.filter(Hs), c, ...Array.isArray(Fa(o, e)) ? [{}] : []],
                          ref: {
                            type: c.type,
                            name: e
                          }
                        } : {
                          ref: c
                        })
                      }), y(e, !1, void 0, c)
                    } else(r = Fa(i, e, {}))._f && (r._f.mount = !1), (n.shouldUnregister || t.shouldUnregister) && (!Ra(l.array, e) || !s.action) && l.unMount.add(e)
                  }
                })
              },
              L = () => n.shouldFocusError && ds(i, (e => e && Fa(r.errors, e)), l.mount);
            return {
              control: {
                register: j,
                unregister: R,
                getFieldState: N,
                _executeSchema: k,
                _focusError: L,
                _getWatch: T,
                _getDirty: E,
                _updateValid: b,
                _removeUnmounted: () => {
                  for (var e of l.unMount) {
                    var t = Fa(i, e);
                    t && (t._f.refs ? t._f.refs.every((e => !Hs(e))) : !Hs(t._f.ref)) && R(e)
                  }
                  l.unMount = new Set
                },
                _updateFieldArray: function(e) {
                  var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [],
                    n = arguments.length > 2 ? arguments[2] : void 0,
                    l = arguments.length > 3 ? arguments[3] : void 0,
                    c = !(arguments.length > 4 && void 0 !== arguments[4]) || arguments[4],
                    u = !(arguments.length > 5 && void 0 !== arguments[5]) || arguments[5];
                  if (l && n) {
                    if (s.action = !0, u && Array.isArray(Fa(i, e))) {
                      var h = n(Fa(i, e), l.argA, l.argB);
                      c && ps(i, e, h)
                    }
                    if (p.errors && u && Array.isArray(Fa(r.errors, e))) {
                      var d = n(Fa(r.errors, e), l.argA, l.argB);
                      c && ps(r.errors, e, d), Js(r.errors, e)
                    }
                    if (p.touchedFields && u && Array.isArray(Fa(r.touchedFields, e))) {
                      var g = n(Fa(r.touchedFields, e), l.argA, l.argB);
                      c && ps(r.touchedFields, e, g)
                    }
                    p.dirtyFields && (r.dirtyFields = Vs(o, a)), f.state.next({
                      isDirty: E(e, t),
                      dirtyFields: r.dirtyFields,
                      errors: r.errors,
                      isValid: r.isValid
                    })
                  } else ps(a, e, t)
                },
                _getFieldArray: e => ja(Fa(s.mount ? a : o, e, t.shouldUnregister ? Fa(o, e, []) : [])),
                _subjects: f,
                _proxyFormState: p,
                get _fields() {
                  return i
                },
                get _formValues() {
                  return a
                },
                get _stateFlags() {
                  return s
                },
                set _stateFlags(e) {
                  s = e
                },
                get _defaultValues() {
                  return o
                },
                get _names() {
                  return l
                },
                set _names(e) {
                  l = e
                },
                get _formState() {
                  return r
                },
                set _formState(e) {
                  r = e
                },
                get _options() {
                  return n
                },
                set _options(e) {
                  n = h(h({}, n), e)
                }
              },
              trigger: D,
              register: j,
              handleSubmit: (e, t) => function() {
                var o = d((function*(o) {
                  o && (o.preventDefault && o.preventDefault(), o.persist && o.persist());
                  var s = !0,
                    l = Ms(a);
                  f.state.next({
                    isSubmitting: !0
                  });
                  try {
                    if (n.resolver) {
                      var {
                        errors: c,
                        values: u
                      } = yield k();
                      r.errors = c, l = u
                    } else yield S(i);
                    Za(r.errors) ? (f.state.next({
                      errors: {},
                      isSubmitting: !0
                    }), yield e(l, o)) : (t && (yield t(h({}, r.errors), o)), L())
                  } catch (e) {
                    throw s = !1, e
                  } finally {
                    r.isSubmitted = !0, f.state.next({
                      isSubmitted: !0,
                      isSubmitting: !1,
                      isSubmitSuccessful: Za(r.errors) && s,
                      submitCount: r.submitCount + 1,
                      errors: r.errors
                    })
                  }
                }));
                return function(e) {
                  return o.apply(this, arguments)
                }
              }(),
              watch: (e, t) => os(e) ? f.watch.subscribe({
                next: n => e(T(void 0, t), n)
              }) : T(e, t, !0),
              setValue: P,
              getValues: I,
              reset: (e, n) => function(e) {
                var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
                  c = e || o,
                  u = Ms(c),
                  h = e && !Za(e) ? u : o;
                if (n.keepDefaultValues || (o = c), !n.keepValues) {
                  if (n.keepDirtyValues)
                    for (var d of l.mount) Fa(r.dirtyFields, d) ? ps(h, d, Fa(a, d)) : P(d, Fa(h, d));
                  else {
                    if (Ps && La(e))
                      for (var g of l.mount) {
                        var m = Fa(i, g);
                        if (m && m._f) {
                          var v = Array.isArray(m._f.refs) ? m._f.refs[0] : m._f.ref;
                          try {
                            if (Fs(v)) {
                              v.closest("form").reset();
                              break
                            }
                          } catch (e) {}
                        }
                      }
                    i = {}
                  }
                  a = t.shouldUnregister ? n.keepDefaultValues ? Ms(o) : {} : u, f.array.next({
                    values: h
                  }), f.watch.next({
                    values: h
                  })
                }
                l = {
                  mount: new Set,
                  unMount: new Set,
                  array: new Set,
                  watch: new Set,
                  watchAll: !1,
                  focus: ""
                }, s.mount = !p.isValid || !!n.keepIsValid, s.watch = !!t.shouldUnregister, f.state.next({
                  submitCount: n.keepSubmitCount ? r.submitCount : 0,
                  isDirty: n.keepDirty || n.keepDirtyValues ? r.isDirty : !(!n.keepDefaultValues || Ls(e, o)),
                  isSubmitted: !!n.keepIsSubmitted && r.isSubmitted,
                  dirtyFields: n.keepDirty || n.keepDirtyValues ? r.dirtyFields : n.keepDefaultValues && e ? Vs(o, e) : {},
                  touchedFields: n.keepTouched ? r.touchedFields : {},
                  errors: n.keepErrors ? r.errors : {},
                  isSubmitting: !1,
                  isSubmitSuccessful: !1
                })
              }(os(e) ? e(a) : e, n),
              resetField: function(e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                Fa(i, e) && (La(t.defaultValue) ? P(e, Fa(o, e)) : (P(e, t.defaultValue), ps(o, e, t.defaultValue)), t.keepTouched || Ns(r.touchedFields, e), t.keepDirty || (Ns(r.dirtyFields, e), r.isDirty = t.defaultValue ? E(e, Fa(o, e)) :
                E()), t.keepError || (Ns(r.errors, e), p.isValid && b()), f.state.next(h({}, r)))
              },
              clearErrors: e => {
                e ? Qa(e).forEach((e => Ns(r.errors, e))) : r.errors = {}, f.state.next({
                  errors: r.errors
                })
              },
              unregister: R,
              setError: (e, t, n) => {
                var o = (Fa(i, e, {
                  _f: {}
                })._f || {}).ref;
                ps(r.errors, e, h(h({}, t), {}, {
                  ref: o
                })), f.state.next({
                  name: e,
                  errors: r.errors,
                  isValid: !1
                }), n && n.shouldFocus && o && o.focus && o.focus()
              },
              setFocus: function(e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
                  n = Fa(i, e),
                  r = n && n._f;
                if (r) {
                  var o = r.refs ? r.refs[0] : r.ref;
                  o.focus && (o.focus(), t.shouldSelect && o.select())
                }
              },
              getFieldState: N
            }
          }
          class tl {
            constructor(e) {
              f(this, "addToCartBtnDomRaw", null), f(this, "buyNowBtnDomRaw", null), f(this, "btnWrapperRaw", null), f(this, "queryWrapperTarget", null), f(this, "disableListeners", []), f(this, "enableListeners", []), this.queryWrapperTarget =
                e
            }
            get productInfo() {
              return this.queryWrapperTarget || (this.queryWrapperTarget = document.querySelector(".product-info__btn") || document.querySelector(".product-info__btns") || document.querySelector("[id=product-info-atc]") || document
                .querySelector("[quantity='#product-info-quantity']") || document.querySelector(".product-info")) || document.querySelector("#product-info-body-inner-container")
            }
            get addToCardBtnDom() {
              var e;
              return this.addToCartBtnDomRaw || (this.addToCartBtnDomRaw = null === (e = this.productInfo) || void 0 === e ? void 0 : e.querySelector("[data-click*=addToCart],[data-click*=AddToCart],[data-track-source=add_to_cart]"))
            }
            get buyNowBtnDom() {
              var e;
              return this.buyNowBtnDomRaw || (this.buyNowBtnDomRaw = null === (e = this.productInfo) || void 0 === e ? void 0 : e.querySelector("[data-click*=submit],[data-click*=Submit],[data-track-source=buy_now]"))
            }
            get btnWrapper() {
              var e;
              return this.btnWrapperRaw || (this.btnWrapperRaw = null === (e = this.addToCardBtnDom) || void 0 === e ? void 0 : e.parentElement), this.btnWrapperRaw
            }
            getLatestBtn(e) {
              var t;
              return null === (t = e.target) || void 0 === t ? void 0 : t.closest("[data-click*=addToCart],[data-click*=AddToCart],[data-click*=submit],[data-click*=Submit],[data-track-source=add_to_cart],[data-track-source=buy_now]")
            }
            wrapFn(e, t) {
              return n => {
                var r;
                !t || null !== (r = n.target) && void 0 !== r && r.closest("[data-wishlist=product-love]") || (e(), n.preventDefault(), n.stopPropagation());
                var i = this.getLatestBtn(n);
                i !== this.addToCardBtnDom && i !== this.buyNowBtnDom || e()
              }
            }
            addEnableListener(e) {
              var t, n = this.wrapFn(e, !1);
              this.enableListeners.push(n), null === (t = this.btnWrapper) || void 0 === t || t.addEventListener("click", n, !0)
            }
            addDisableListener(e) {
              var t, n = this.wrapFn(e, !0);
              this.disableListeners.push(n), null === (t = this.btnWrapper) || void 0 === t || t.addEventListener("click", n, !0)
            }
            removeAllEnableListeners() {
              this.enableListeners.forEach((e => {
                var t;
                null === (t = this.btnWrapper) || void 0 === t || t.removeEventListener("click", e, !0)
              }))
            }
            removeAllDisableListeners() {
              this.disableListeners.forEach((e => {
                var t;
                null === (t = this.btnWrapper) || void 0 === t || t.removeEventListener("click", e, !0)
              }))
            }
            disableATCAndBNBtNs(e) {
              this.removeAllEnableListeners(), e && this.addDisableListener(e)
            }
            enableATCAndBNBtNs(e) {
              this.removeAllDisableListeners(), e && this.addEnableListener(e)
            }
          }
          var nl, rl = new tl,
            il = () => {
              var e;
              return null === (e = rl.productInfo) || void 0 === e ? void 0 : e.querySelector("#paypal-express-button-container")
            },
            {
              disablePaypalBtn: ol,
              enablePaypalBtn: al
            } = {
              disablePaypalBtn: e => {
                var t = il();
                t && (t.style.pointerEvents = "none", nl = t => {
                  t.preventDefault(), t.stopPropagation(), e()
                }, null == t || t.addEventListener("click", nl, !0))
              },
              enablePaypalBtn: () => {
                var e = il();
                e && (e.style.pointerEvents = "auto", null == e || e.removeEventListener("click", nl, !0))
              }
            };
          var sl, ll = (sl = gt, (e, t) => {
              const n = vt(!1);
              sl((() => () => {
                n.current = !1
              }), []), sl((() => {
                if (n.current) return e();
                n.current = !0
              }), t)
            }),
            cl = function() {
              if ("undefined" != typeof Map) return Map;

              function e(e, t) {
                var n = -1;
                return e.some((function(e, r) {
                  return e[0] === t && (n = r, !0)
                })), n
              }
              return function() {
                function t() {
                  this.__entries__ = []
                }
                return Object.defineProperty(t.prototype, "size", {
                  get: function() {
                    return this.__entries__.length
                  },
                  enumerable: !0,
                  configurable: !0
                }), t.prototype.get = function(t) {
                  var n = e(this.__entries__, t),
                    r = this.__entries__[n];
                  return r && r[1]
                }, t.prototype.set = function(t, n) {
                  var r = e(this.__entries__, t);
                  ~r ? this.__entries__[r][1] = n : this.__entries__.push([t, n])
                }, t.prototype.delete = function(t) {
                  var n = this.__entries__,
                    r = e(n, t);
                  ~r && n.splice(r, 1)
                }, t.prototype.has = function(t) {
                  return !!~e(this.__entries__, t)
                }, t.prototype.clear = function() {
                  this.__entries__.splice(0)
                }, t.prototype.forEach = function(e, t) {
                  void 0 === t && (t = null);
                  for (var n = 0, r = this.__entries__; n < r.length; n++) {
                    var i = r[n];
                    e.call(t, i[1], i[0])
                  }
                }, t
              }()
            }(),
            ul = "undefined" != typeof window && "undefined" != typeof document && window.document === document,
            hl = "undefined" != typeof global && global.Math === Math ? global : "undefined" != typeof self && self.Math === Math ? self : "undefined" != typeof window && window.Math === Math ? window : Function("return this")(),
            pl = "function" == typeof requestAnimationFrame ? requestAnimationFrame.bind(hl) : function(e) {
              return setTimeout((function() {
                return e(Date.now())
              }), 1e3 / 60)
            };
          var dl = ["top", "right", "bottom", "left", "width", "height", "size", "weight"],
            fl = "undefined" != typeof MutationObserver,
            gl = function() {
              function e() {
                this.connected_ = !1, this.mutationEventsAdded_ = !1, this.mutationsObserver_ = null, this.observers_ = [], this.onTransitionEnd_ = this.onTransitionEnd_.bind(this), this.refresh = function(e, t) {
                  var n = !1,
                    r = !1,
                    i = 0;

                  function o() {
                    n && (n = !1, e()), r && s()
                  }

                  function a() {
                    pl(o)
                  }

                  function s() {
                    var e = Date.now();
                    if (n) {
                      if (e - i < 2) return;
                      r = !0
                    } else n = !0, r = !1, setTimeout(a, t);
                    i = e
                  }
                  return s
                }(this.refresh.bind(this), 20)
              }
              return e.prototype.addObserver = function(e) {
                ~this.observers_.indexOf(e) || this.observers_.push(e), this.connected_ || this.connect_()
              }, e.prototype.removeObserver = function(e) {
                var t = this.observers_,
                  n = t.indexOf(e);
                ~n && t.splice(n, 1), !t.length && this.connected_ && this.disconnect_()
              }, e.prototype.refresh = function() {
                this.updateObservers_() && this.refresh()
              }, e.prototype.updateObservers_ = function() {
                var e = this.observers_.filter((function(e) {
                  return e.gatherActive(), e.hasActive()
                }));
                return e.forEach((function(e) {
                  return e.broadcastActive()
                })), e.length > 0
              }, e.prototype.connect_ = function() {
                ul && !this.connected_ && (document.addEventListener("transitionend", this.onTransitionEnd_), window.addEventListener("resize", this.refresh), fl ? (this.mutationsObserver_ = new MutationObserver(this.refresh), this
                  .mutationsObserver_.observe(document, {
                    attributes: !0,
                    childList: !0,
                    characterData: !0,
                    subtree: !0
                  })) : (document.addEventListener("DOMSubtreeModified", this.refresh), this.mutationEventsAdded_ = !0), this.connected_ = !0)
              }, e.prototype.disconnect_ = function() {
                ul && this.connected_ && (document.removeEventListener("transitionend", this.onTransitionEnd_), window.removeEventListener("resize", this.refresh), this.mutationsObserver_ && this.mutationsObserver_.disconnect(), this
                  .mutationEventsAdded_ && document.removeEventListener("DOMSubtreeModified", this.refresh), this.mutationsObserver_ = null, this.mutationEventsAdded_ = !1, this.connected_ = !1)
              }, e.prototype.onTransitionEnd_ = function(e) {
                var t = e.propertyName,
                  n = void 0 === t ? "" : t;
                dl.some((function(e) {
                  return !!~n.indexOf(e)
                })) && this.refresh()
              }, e.getInstance = function() {
                return this.instance_ || (this.instance_ = new e), this.instance_
              }, e.instance_ = null, e
            }(),
            ml = function(e, t) {
              for (var n = 0, r = Object.keys(t); n < r.length; n++) {
                var i = r[n];
                Object.defineProperty(e, i, {
                  value: t[i],
                  enumerable: !1,
                  writable: !1,
                  configurable: !0
                })
              }
              return e
            },
            vl = function(e) {
              return e && e.ownerDocument && e.ownerDocument.defaultView || hl
            },
            _l = Cl(0, 0, 0, 0);

          function bl(e) {
            return parseFloat(e) || 0
          }

          function yl(e) {
            for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
            return t.reduce((function(t, n) {
              return t + bl(e["border-" + n + "-width"])
            }), 0)
          }

          function wl(e) {
            var t = e.clientWidth,
              n = e.clientHeight;
            if (!t && !n) return _l;
            var r = vl(e).getComputedStyle(e),
              i = function(e) {
                for (var t = {}, n = 0, r = ["top", "right", "bottom", "left"]; n < r.length; n++) {
                  var i = r[n],
                    o = e["padding-" + i];
                  t[i] = bl(o)
                }
                return t
              }(r),
              o = i.left + i.right,
              a = i.top + i.bottom,
              s = bl(r.width),
              l = bl(r.height);
            if ("border-box" === r.boxSizing && (Math.round(s + o) !== t && (s -= yl(r, "left", "right") + o), Math.round(l + a) !== n && (l -= yl(r, "top", "bottom") + a)), ! function(e) {
                return e === vl(e).document.documentElement
              }(e)) {
              var c = Math.round(s + o) - t,
                u = Math.round(l + a) - n;
              1 !== Math.abs(c) && (s -= c), 1 !== Math.abs(u) && (l -= u)
            }
            return Cl(i.left, i.top, s, l)
          }
          var xl = "undefined" != typeof SVGGraphicsElement ? function(e) {
            return e instanceof vl(e).SVGGraphicsElement
          } : function(e) {
            return e instanceof vl(e).SVGElement && "function" == typeof e.getBBox
          };

          function kl(e) {
            return ul ? xl(e) ? function(e) {
              var t = e.getBBox();
              return Cl(0, 0, t.width, t.height)
            }(e) : wl(e) : _l
          }

          function Cl(e, t, n, r) {
            return {
              x: e,
              y: t,
              width: n,
              height: r
            }
          }
          var Sl = function() {
              function e(e) {
                this.broadcastWidth = 0, this.broadcastHeight = 0, this.contentRect_ = Cl(0, 0, 0, 0), this.target = e
              }
              return e.prototype.isActive = function() {
                var e = kl(this.target);
                return this.contentRect_ = e, e.width !== this.broadcastWidth || e.height !== this.broadcastHeight
              }, e.prototype.broadcastRect = function() {
                var e = this.contentRect_;
                return this.broadcastWidth = e.width, this.broadcastHeight = e.height, e
              }, e
            }(),
            El = function(e, t) {
              var n = function(e) {
                var t = e.x,
                  n = e.y,
                  r = e.width,
                  i = e.height,
                  o = "undefined" != typeof DOMRectReadOnly ? DOMRectReadOnly : Object,
                  a = Object.create(o.prototype);
                return ml(a, {
                  x: t,
                  y: n,
                  width: r,
                  height: i,
                  top: n,
                  right: t + r,
                  bottom: i + n,
                  left: t
                }), a
              }(t);
              ml(this, {
                target: e,
                contentRect: n
              })
            },
            Tl = function() {
              function e(e, t, n) {
                if (this.activeObservations_ = [], this.observations_ = new cl, "function" != typeof e) throw new TypeError("The callback provided as parameter 1 is not a function.");
                this.callback_ = e, this.controller_ = t, this.callbackCtx_ = n
              }
              return e.prototype.observe = function(e) {
                if (!arguments.length) throw new TypeError("1 argument required, but only 0 present.");
                if ("undefined" != typeof Element && Element instanceof Object) {
                  if (!(e instanceof vl(e).Element)) throw new TypeError('parameter 1 is not of type "Element".');
                  var t = this.observations_;
                  t.has(e) || (t.set(e, new Sl(e)), this.controller_.addObserver(this), this.controller_.refresh())
                }
              }, e.prototype.unobserve = function(e) {
                if (!arguments.length) throw new TypeError("1 argument required, but only 0 present.");
                if ("undefined" != typeof Element && Element instanceof Object) {
                  if (!(e instanceof vl(e).Element)) throw new TypeError('parameter 1 is not of type "Element".');
                  var t = this.observations_;
                  t.has(e) && (t.delete(e), t.size || this.controller_.removeObserver(this))
                }
              }, e.prototype.disconnect = function() {
                this.clearActive(), this.observations_.clear(), this.controller_.removeObserver(this)
              }, e.prototype.gatherActive = function() {
                var e = this;
                this.clearActive(), this.observations_.forEach((function(t) {
                  t.isActive() && e.activeObservations_.push(t)
                }))
              }, e.prototype.broadcastActive = function() {
                if (this.hasActive()) {
                  var e = this.callbackCtx_,
                    t = this.activeObservations_.map((function(e) {
                      return new El(e.target, e.broadcastRect())
                    }));
                  this.callback_.call(e, t, e), this.clearActive()
                }
              }, e.prototype.clearActive = function() {
                this.activeObservations_.splice(0)
              }, e.prototype.hasActive = function() {
                return this.activeObservations_.length > 0
              }, e
            }(),
            Ol = "undefined" != typeof WeakMap ? new WeakMap : new cl,
            Al = function e(t) {
              if (!(this instanceof e)) throw new TypeError("Cannot call a class as a function.");
              if (!arguments.length) throw new TypeError("1 argument required, but only 0 present.");
              var n = gl.getInstance(),
                r = new Tl(t, n, this);
              Ol.set(this, r)
            };
          ["observe", "unobserve", "disconnect"].forEach((function(e) {
            Al.prototype[e] = function() {
              var t;
              return (t = Ol.get(this))[e].apply(t, arguments)
            }
          }));
          var Pl = void 0 !== hl.ResizeObserver ? hl.ResizeObserver : Al,
            Ml = (e, t) => {
              gt((() => ("loading" !== document.readyState ? e() : document.addEventListener("DOMContentLoaded", e), () => {
                document.removeEventListener("DOMContentLoaded", e)
              })), t)
            },
            Dl = {
              exports: {}
            };
          ! function(e) {
            ! function() {
              var t = {}.hasOwnProperty;

              function n() {
                for (var e = [], r = 0; r < arguments.length; r++) {
                  var i = arguments[r];
                  if (i) {
                    var o = typeof i;
                    if ("string" === o || "number" === o) e.push(i);
                    else if (Array.isArray(i)) {
                      if (i.length) {
                        var a = n.apply(null, i);
                        a && e.push(a)
                      }
                    } else if ("object" === o)
                      if (i.toString === Object.prototype.toString)
                        for (var s in i) t.call(i, s) && i[s] && e.push(s);
                      else e.push(i.toString())
                  }
                }
                return e.join(" ")
              }
              e.exports ? (n.default = n, e.exports = n) : window.classNames = n
            }()
          }(Dl);
          var Il, Nl, Rl = Dl.exports,
            jl = e => "Please select at least ".concat(e, " options");

          function Ll() {
            return Ll = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, Ll.apply(this, arguments)
          }
          var Fl = e => Te("svg", Ll({
              width: 16,
              height: 16,
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg"
            }, e), Il || (Il = Te("path", {
              d: "M7.915 1.675a6.41 6.41 0 1 0 0 12.822 6.41 6.41 0 0 0 0-12.822Zm-5.666.744A8.014 8.014 0 1 1 13.58 13.751 8.013 8.013 0 0 1 2.249 2.421v-.002Z",
              fill: "#6D7175"
            })), Nl || (Nl = Te("path", {
              d: "M8.578 10.16H7.082v-.8c.007-1.379.344-1.58.962-1.95.066-.04.134-.08.206-.125.511-.322.905-.728.905-1.32 0-.664-.52-1.096-1.167-1.096-.597 0-1.162.28-1.2 1.075H5.2C5.242 4.336 6.515 3.5 7.996 3.5c1.616 0 2.729 1.014 2.729 2.444 0 .969-.487 1.604-1.266 2.069l-.166.1c-.553.334-.707.426-.715 1.246v.8Zm.12 1.41a.942.942 0 0 1-.93.93.925.925 0 0 1-.517-1.7.924.924 0 0 1 .517-.153.94.94 0 0 1 .93.922Z",
              fill: "#6D7175"
            }))),
            Bl = 0;

          function zl(e, t, n, r, i, o) {
            var a, s, l = {};
            for (s in t) "ref" == s ? a = t[s] : l[s] = t[s];
            var c = {
              type: e,
              props: l,
              key: n,
              ref: a,
              __k: null,
              __: null,
              __b: 0,
              __e: null,
              __d: void 0,
              __c: null,
              __h: null,
              constructor: void 0,
              __v: --Bl,
              __source: i,
              __self: o
            };
            if ("function" == typeof e && (a = e.defaultProps))
              for (s in a) void 0 === l[s] && (l[s] = a[s]);
            return fe.vnode && fe.vnode(c), c
          }
          var Hl = ["tagName", "children"],
            Ul = Rt((e => {
              var {
                tagName: t,
                children: n
              } = e;
              return zl(t || "span", h(h({}, g(e, Hl)), {}, {
                children: n
              }))
            }));

          function Wl(e) {
            return e.split("-")[0]
          }

          function Vl(e) {
            return e.split("-")[1]
          }

          function Xl(e) {
            return ["top", "bottom"].includes(Wl(e)) ? "x" : "y"
          }

          function Gl(e) {
            return "y" === e ? "height" : "width"
          }

          function Yl(e, t, n) {
            let {
              reference: r,
              floating: i
            } = e;
            const o = r.x + r.width / 2 - i.width / 2,
              a = r.y + r.height / 2 - i.height / 2,
              s = Xl(t),
              l = Gl(s),
              c = r[l] / 2 - i[l] / 2,
              u = "x" === s;
            let h;
            switch (Wl(t)) {
              case "top":
                h = {
                  x: o,
                  y: r.y - i.height
                };
                break;
              case "bottom":
                h = {
                  x: o,
                  y: r.y + r.height
                };
                break;
              case "right":
                h = {
                  x: r.x + r.width,
                  y: a
                };
                break;
              case "left":
                h = {
                  x: r.x - i.width,
                  y: a
                };
                break;
              default:
                h = {
                  x: r.x,
                  y: r.y
                }
            }
            switch (Vl(t)) {
              case "start":
                h[s] -= c * (n && u ? -1 : 1);
                break;
              case "end":
                h[s] += c * (n && u ? -1 : 1)
            }
            return h
          }

          function ql(e) {
            return "number" != typeof e ? function(e) {
              return {
                top: 0,
                right: 0,
                bottom: 0,
                left: 0,
                ...e
              }
            }(e) : {
              top: e,
              right: e,
              bottom: e,
              left: e
            }
          }

          function Kl(e) {
            return {
              ...e,
              top: e.y,
              left: e.x,
              right: e.x + e.width,
              bottom: e.y + e.height
            }
          }
          const $l = Math.min,
            Zl = Math.max;

          function Jl(e, t, n) {
            return Zl(e, $l(t, n))
          }
          const Ql = e => ({
            name: "arrow",
            options: e,
            async fn(t) {
              const {
                element: n,
                padding: r = 0
              } = null != e ? e : {}, {
                x: i,
                y: o,
                placement: a,
                rects: s,
                platform: l
              } = t;
              if (null == n) return {};
              const c = ql(r),
                u = {
                  x: i,
                  y: o
                },
                h = Xl(a),
                p = Vl(a),
                d = Gl(h),
                f = await l.getDimensions(n),
                g = "y" === h ? "top" : "left",
                m = "y" === h ? "bottom" : "right",
                v = s.reference[d] + s.reference[h] - u[h] - s.floating[d],
                _ = u[h] - s.reference[h],
                b = await (null == l.getOffsetParent ? void 0 : l.getOffsetParent(n));
              let y = b ? "y" === h ? b.clientHeight || 0 : b.clientWidth || 0 : 0;
              0 === y && (y = s.floating[d]);
              const w = v / 2 - _ / 2,
                x = c[g],
                k = y - f[d] - c[m],
                C = y / 2 - f[d] / 2 + w,
                S = Jl(x, C, k),
                E = ("start" === p ? c[g] : c[m]) > 0 && C !== S && s.reference[d] <= s.floating[d] ? C < x ? x - C : k - C : 0;
              return {
                [h]: u[h] - E,
                data: {
                  [h]: S,
                  centerOffset: C - S
                }
              }
            }
          });
          const ec = function(e) {
            return void 0 === e && (e = 0), {
              name: "offset",
              options: e,
              async fn(t) {
                const {
                  x: n,
                  y: r
                } = t, i = await async function(e, t) {
                  const {
                    placement: n,
                    platform: r,
                    elements: i
                  } = e, o = await (null == r.isRTL ? void 0 : r.isRTL(i.floating)), a = Wl(n), s = Vl(n), l = "x" === Xl(n), c = ["left", "top"].includes(a) ? -1 : 1, u = o && l ? -1 : 1, h = "function" == typeof t ? t(e) : t;
                  let {
                    mainAxis: p,
                    crossAxis: d,
                    alignmentAxis: f
                  } = "number" == typeof h ? {
                    mainAxis: h,
                    crossAxis: 0,
                    alignmentAxis: null
                  } : {
                    mainAxis: 0,
                    crossAxis: 0,
                    alignmentAxis: null,
                    ...h
                  };
                  return s && "number" == typeof f && (d = "end" === s ? -1 * f : f), l ? {
                    x: d * u,
                    y: p * c
                  } : {
                    x: p * c,
                    y: d * u
                  }
                }(t, e);
                return {
                  x: n + i.x,
                  y: r + i.y,
                  data: i
                }
              }
            }
          };
          const tc = function(e) {
            return void 0 === e && (e = {}), {
              name: "shift",
              options: e,
              async fn(t) {
                const {
                  x: n,
                  y: r,
                  placement: i
                } = t, {
                  mainAxis: o = !0,
                  crossAxis: a = !1,
                  limiter: s = {
                    fn: e => {
                      let {
                        x: t,
                        y: n
                      } = e;
                      return {
                        x: t,
                        y: n
                      }
                    }
                  },
                  ...l
                } = e, c = {
                  x: n,
                  y: r
                }, u = await async function(e, t) {
                  var n;
                  void 0 === t && (t = {});
                  const {
                    x: r,
                    y: i,
                    platform: o,
                    rects: a,
                    elements: s,
                    strategy: l
                  } = e, {
                    boundary: c = "clippingAncestors",
                    rootBoundary: u = "viewport",
                    elementContext: h = "floating",
                    altBoundary: p = !1,
                    padding: d = 0
                  } = t, f = ql(d), g = s[p ? "floating" === h ? "reference" : "floating" : h], m = Kl(await o.getClippingRect({
                    element: null == (n = await (null == o.isElement ? void 0 : o.isElement(g))) || n ? g : g.contextElement || await (null == o.getDocumentElement ? void 0 : o.getDocumentElement(s.floating)),
                    boundary: c,
                    rootBoundary: u,
                    strategy: l
                  })), v = Kl(o.convertOffsetParentRelativeRectToViewportRelativeRect ? await o.convertOffsetParentRelativeRectToViewportRelativeRect({
                    rect: "floating" === h ? {
                      ...a.floating,
                      x: r,
                      y: i
                    } : a.reference,
                    offsetParent: await (null == o.getOffsetParent ? void 0 : o.getOffsetParent(s.floating)),
                    strategy: l
                  }) : a[h]);
                  return {
                    top: m.top - v.top + f.top,
                    bottom: v.bottom - m.bottom + f.bottom,
                    left: m.left - v.left + f.left,
                    right: v.right - m.right + f.right
                  }
                }(t, l), h = Xl(Wl(i)), p = "x" === h ? "y" : "x";
                let d = c[h],
                  f = c[p];
                if (o) {
                  const e = "y" === h ? "bottom" : "right";
                  d = Jl(d + u["y" === h ? "top" : "left"], d, d - u[e])
                }
                if (a) {
                  const e = "y" === p ? "bottom" : "right";
                  f = Jl(f + u["y" === p ? "top" : "left"], f, f - u[e])
                }
                const g = s.fn({
                  ...t,
                  [h]: d,
                  [p]: f
                });
                return {
                  ...g,
                  data: {
                    x: g.x - n,
                    y: g.y - r
                  }
                }
              }
            }
          };

          function nc(e) {
            return e && e.document && e.location && e.alert && e.setInterval
          }

          function rc(e) {
            if (null == e) return window;
            if (!nc(e)) {
              const t = e.ownerDocument;
              return t && t.defaultView || window
            }
            return e
          }

          function ic(e) {
            return rc(e).getComputedStyle(e)
          }

          function oc(e) {
            return nc(e) ? "" : e ? (e.nodeName || "").toLowerCase() : ""
          }

          function ac() {
            const e = navigator.userAgentData;
            return null != e && e.brands ? e.brands.map((e => e.brand + "/" + e.version)).join(" ") : navigator.userAgent
          }

          function sc(e) {
            return e instanceof rc(e).HTMLElement
          }

          function lc(e) {
            return e instanceof rc(e).Element
          }

          function cc(e) {
            if ("undefined" == typeof ShadowRoot) return !1;
            return e instanceof rc(e).ShadowRoot || e instanceof ShadowRoot
          }

          function uc(e) {
            const {
              overflow: t,
              overflowX: n,
              overflowY: r
            } = ic(e);
            return /auto|scroll|overlay|hidden/.test(t + r + n)
          }

          function hc(e) {
            return ["table", "td", "th"].includes(oc(e))
          }

          function pc(e) {
            const t = /firefox/i.test(ac()),
              n = ic(e);
            return "none" !== n.transform || "none" !== n.perspective || "paint" === n.contain || ["transform", "perspective"].includes(n.willChange) || t && "filter" === n.willChange || t && !!n.filter && "none" !== n.filter
          }

          function dc() {
            return !/^((?!chrome|android).)*safari/i.test(ac())
          }
          const fc = Math.min,
            gc = Math.max,
            mc = Math.round;

          function vc(e, t, n) {
            var r, i, o, a;
            void 0 === t && (t = !1), void 0 === n && (n = !1);
            const s = e.getBoundingClientRect();
            let l = 1,
              c = 1;
            t && sc(e) && (l = e.offsetWidth > 0 && mc(s.width) / e.offsetWidth || 1, c = e.offsetHeight > 0 && mc(s.height) / e.offsetHeight || 1);
            const u = lc(e) ? rc(e) : window,
              h = !dc() && n,
              p = (s.left + (h && null != (r = null == (i = u.visualViewport) ? void 0 : i.offsetLeft) ? r : 0)) / l,
              d = (s.top + (h && null != (o = null == (a = u.visualViewport) ? void 0 : a.offsetTop) ? o : 0)) / c,
              f = s.width / l,
              g = s.height / c;
            return {
              width: f,
              height: g,
              top: d,
              right: p + f,
              bottom: d + g,
              left: p,
              x: p,
              y: d
            }
          }

          function _c(e) {
            return (t = e, (t instanceof rc(t).Node ? e.ownerDocument : e.document) || window.document).documentElement;
            var t
          }

          function bc(e) {
            return lc(e) ? {
              scrollLeft: e.scrollLeft,
              scrollTop: e.scrollTop
            } : {
              scrollLeft: e.pageXOffset,
              scrollTop: e.pageYOffset
            }
          }

          function yc(e) {
            return vc(_c(e)).left + bc(e).scrollLeft
          }

          function wc(e, t, n) {
            const r = sc(t),
              i = _c(t),
              o = vc(e, r && function(e) {
                const t = vc(e);
                return mc(t.width) !== e.offsetWidth || mc(t.height) !== e.offsetHeight
              }(t), "fixed" === n);
            let a = {
              scrollLeft: 0,
              scrollTop: 0
            };
            const s = {
              x: 0,
              y: 0
            };
            if (r || !r && "fixed" !== n)
              if (("body" !== oc(t) || uc(i)) && (a = bc(t)), sc(t)) {
                const e = vc(t, !0);
                s.x = e.x + t.clientLeft, s.y = e.y + t.clientTop
              } else i && (s.x = yc(i));
            return {
              x: o.left + a.scrollLeft - s.x,
              y: o.top + a.scrollTop - s.y,
              width: o.width,
              height: o.height
            }
          }

          function xc(e) {
            return "html" === oc(e) ? e : e.assignedSlot || e.parentNode || (cc(e) ? e.host : null) || _c(e)
          }

          function kc(e) {
            return sc(e) && "fixed" !== ic(e).position ? e.offsetParent : null
          }

          function Cc(e) {
            const t = rc(e);
            let n = kc(e);
            for (; n && hc(n) && "static" === ic(n).position;) n = kc(n);
            return n && ("html" === oc(n) || "body" === oc(n) && "static" === ic(n).position && !pc(n)) ? t : n || function(e) {
              let t = xc(e);
              for (cc(t) && (t = t.host); sc(t) && !["html", "body"].includes(oc(t));) {
                if (pc(t)) return t;
                {
                  const e = t.parentNode;
                  t = cc(e) ? e.host : e
                }
              }
              return null
            }(e) || t
          }

          function Sc(e) {
            if (sc(e)) return {
              width: e.offsetWidth,
              height: e.offsetHeight
            };
            const t = vc(e);
            return {
              width: t.width,
              height: t.height
            }
          }

          function Ec(e) {
            const t = xc(e);
            return ["html", "body", "#document"].includes(oc(t)) ? e.ownerDocument.body : sc(t) && uc(t) ? t : Ec(t)
          }

          function Tc(e, t) {
            var n;
            void 0 === t && (t = []);
            const r = Ec(e),
              i = r === (null == (n = e.ownerDocument) ? void 0 : n.body),
              o = rc(r),
              a = i ? [o].concat(o.visualViewport || [], uc(r) ? r : []) : r,
              s = t.concat(a);
            return i ? s : s.concat(Tc(a))
          }

          function Oc(e, t, n) {
            return "viewport" === t ? Kl(function(e, t) {
              const n = rc(e),
                r = _c(e),
                i = n.visualViewport;
              let o = r.clientWidth,
                a = r.clientHeight,
                s = 0,
                l = 0;
              if (i) {
                o = i.width, a = i.height;
                const e = dc();
                (e || !e && "fixed" === t) && (s = i.offsetLeft, l = i.offsetTop)
              }
              return {
                width: o,
                height: a,
                x: s,
                y: l
              }
            }(e, n)) : lc(t) ? function(e, t) {
              const n = vc(e, !1, "fixed" === t),
                r = n.top + e.clientTop,
                i = n.left + e.clientLeft;
              return {
                top: r,
                left: i,
                x: i,
                y: r,
                right: i + e.clientWidth,
                bottom: r + e.clientHeight,
                width: e.clientWidth,
                height: e.clientHeight
              }
            }(t, n) : Kl(function(e) {
              var t;
              const n = _c(e),
                r = bc(e),
                i = null == (t = e.ownerDocument) ? void 0 : t.body,
                o = gc(n.scrollWidth, n.clientWidth, i ? i.scrollWidth : 0, i ? i.clientWidth : 0),
                a = gc(n.scrollHeight, n.clientHeight, i ? i.scrollHeight : 0, i ? i.clientHeight : 0);
              let s = -r.scrollLeft + yc(e);
              const l = -r.scrollTop;
              return "rtl" === ic(i || n).direction && (s += gc(n.clientWidth, i ? i.clientWidth : 0) - o), {
                width: o,
                height: a,
                x: s,
                y: l
              }
            }(_c(e)))
          }

          function Ac(e) {
            const t = Tc(e),
              n = ["absolute", "fixed"].includes(ic(e).position) && sc(e) ? Cc(e) : e;
            return lc(n) ? t.filter((e => lc(e) && function(e, t) {
              const n = null == t.getRootNode ? void 0 : t.getRootNode();
              if (e.contains(t)) return !0;
              if (n && cc(n)) {
                let n = t;
                do {
                  if (n && e === n) return !0;
                  n = n.parentNode || n.host
                } while (n)
              }
              return !1
            }(e, n) && "body" !== oc(e))) : []
          }
          const Pc = {
            getClippingRect: function(e) {
              let {
                element: t,
                boundary: n,
                rootBoundary: r,
                strategy: i
              } = e;
              const o = [..."clippingAncestors" === n ? Ac(t) : [].concat(n), r],
                a = o[0],
                s = o.reduce(((e, n) => {
                  const r = Oc(t, n, i);
                  return e.top = gc(r.top, e.top), e.right = fc(r.right, e.right), e.bottom = fc(r.bottom, e.bottom), e.left = gc(r.left, e.left), e
                }), Oc(t, a, i));
              return {
                width: s.right - s.left,
                height: s.bottom - s.top,
                x: s.left,
                y: s.top
              }
            },
            convertOffsetParentRelativeRectToViewportRelativeRect: function(e) {
              let {
                rect: t,
                offsetParent: n,
                strategy: r
              } = e;
              const i = sc(n),
                o = _c(n);
              if (n === o) return t;
              let a = {
                scrollLeft: 0,
                scrollTop: 0
              };
              const s = {
                x: 0,
                y: 0
              };
              if ((i || !i && "fixed" !== r) && (("body" !== oc(n) || uc(o)) && (a = bc(n)), sc(n))) {
                const e = vc(n, !0);
                s.x = e.x + n.clientLeft, s.y = e.y + n.clientTop
              }
              return {
                ...t,
                x: t.x - a.scrollLeft + s.x,
                y: t.y - a.scrollTop + s.y
              }
            },
            isElement: lc,
            getDimensions: Sc,
            getOffsetParent: Cc,
            getDocumentElement: _c,
            getElementRects: e => {
              let {
                reference: t,
                floating: n,
                strategy: r
              } = e;
              return {
                reference: wc(t, Cc(n), r),
                floating: {
                  ...Sc(n),
                  x: 0,
                  y: 0
                }
              }
            },
            getClientRects: e => Array.from(e.getClientRects()),
            isRTL: e => "rtl" === ic(e).direction
          };

          function Mc(e, t, n, r) {
            void 0 === r && (r = {});
            const {
              ancestorScroll: i = !0,
              ancestorResize: o = !0,
              elementResize: a = !0,
              animationFrame: s = !1
            } = r, l = i && !s, c = o && !s, u = l || c ? [...lc(e) ? Tc(e) : [], ...Tc(t)] : [];
            u.forEach((e => {
              l && e.addEventListener("scroll", n, {
                passive: !0
              }), c && e.addEventListener("resize", n)
            }));
            let h, p = null;
            if (a) {
              let r = !0;
              p = new ResizeObserver((() => {
                r || n(), r = !1
              })), lc(e) && !s && p.observe(e), p.observe(t)
            }
            let d = s ? vc(e) : null;
            return s && function t() {
              const r = vc(e);
              !d || r.x === d.x && r.y === d.y && r.width === d.width && r.height === d.height || n();
              d = r, h = requestAnimationFrame(t)
            }(), n(), () => {
              var e;
              u.forEach((e => {
                l && e.removeEventListener("scroll", n), c && e.removeEventListener("resize", n)
              })), null == (e = p) || e.disconnect(), p = null, s && cancelAnimationFrame(h)
            }
          }
          const Dc = (e, t, n) => (async (e, t, n) => {
            const {
              placement: r = "bottom",
              strategy: i = "absolute",
              middleware: o = [],
              platform: a
            } = n, s = await (null == a.isRTL ? void 0 : a.isRTL(t));
            let l = await a.getElementRects({
                reference: e,
                floating: t,
                strategy: i
              }),
              {
                x: c,
                y: u
              } = Yl(l, r, s),
              h = r,
              p = {},
              d = 0;
            for (let n = 0; n < o.length; n++) {
              const {
                name: f,
                fn: g
              } = o[n], {
                x: m,
                y: v,
                data: _,
                reset: b
              } = await g({
                x: c,
                y: u,
                initialPlacement: r,
                placement: h,
                strategy: i,
                middlewareData: p,
                rects: l,
                platform: a,
                elements: {
                  reference: e,
                  floating: t
                }
              });
              c = null != m ? m : c, u = null != v ? v : u, p = {
                ...p,
                [f]: {
                  ...p[f],
                  ..._
                }
              }, b && d <= 50 && (d++, "object" == typeof b && (b.placement && (h = b.placement), b.rects && (l = !0 === b.rects ? await a.getElementRects({
                reference: e,
                floating: t,
                strategy: i
              }) : b.rects), ({
                x: c,
                y: u
              } = Yl(l, h, s))), n = -1)
            }
            return {
              x: c,
              y: u,
              placement: h,
              strategy: i,
              middlewareData: p
            }
          })(e, t, {
            platform: Pc,
            ...n
          });
          var Ic = "undefined" != typeof document ? mt : gt;

          function Nc(e, t) {
            if (e === t) return !0;
            if (typeof e != typeof t) return !1;
            if ("function" == typeof e && e.toString() === t.toString()) return !0;
            let n, r, i;
            if (e && t && "object" == typeof e) {
              if (Array.isArray(e)) {
                if (n = e.length, n != t.length) return !1;
                for (r = n; 0 != r--;)
                  if (!Nc(e[r], t[r])) return !1;
                return !0
              }
              if (i = Object.keys(e), n = i.length, n !== Object.keys(t).length) return !1;
              for (r = n; 0 != r--;)
                if (!Object.prototype.hasOwnProperty.call(t, i[r])) return !1;
              for (r = n; 0 != r--;) {
                const n = i[r];
                if (("_owner" !== n || !e.$$typeof) && !Nc(e[n], t[n])) return !1
              }
              return !0
            }
            return e != e && t != t
          }

          function Rc(e) {
            let {
              middleware: t,
              placement: n = "bottom",
              strategy: r = "absolute",
              whileElementsMounted: i
            } = void 0 === e ? {} : e;
            const [o, a] = dt({
              x: null,
              y: null,
              strategy: r,
              placement: n,
              middlewareData: {}
            }), [s, l] = dt(t);
            Nc(null == s ? void 0 : s.map((e => {
              let {
                name: t,
                options: n
              } = e;
              return {
                name: t,
                options: n
              }
            })), null == t ? void 0 : t.map((e => {
              let {
                name: t,
                options: n
              } = e;
              return {
                name: t,
                options: n
              }
            }))) || l(t);
            const c = vt(null),
              u = vt(null),
              h = vt(null),
              p = vt(o),
              d = function(e) {
                const t = vt(e);
                return Ic((() => {
                  t.current = e
                })), t
              }(i),
              f = yt((() => {
                c.current && u.current && Dc(c.current, u.current, {
                  middleware: s,
                  placement: n,
                  strategy: r
                }).then((e => {
                  g.current && !Nc(p.current, e) && (p.current = e, Cn((() => {
                    a(e)
                  })))
                }))
              }), [s, n, r]);
            Ic((() => {
              g.current && f()
            }), [f]);
            const g = vt(!1);
            Ic((() => (g.current = !0, () => {
              g.current = !1
            })), []);
            const m = yt((() => {
                if ("function" == typeof h.current && (h.current(), h.current = null), c.current && u.current)
                  if (d.current) {
                    const e = d.current(c.current, u.current, f);
                    h.current = e
                  } else f()
              }), [f, d]),
              v = yt((e => {
                c.current = e, m()
              }), [m]),
              _ = yt((e => {
                u.current = e, m()
              }), [m]),
              b = bt((() => ({
                reference: c,
                floating: u
              })), []);
            return bt((() => ({
              ...o,
              update: f,
              refs: b,
              reference: v,
              floating: _
            })), [o, f, b, v, _])
          }
          const jc = e => {
            const {
              element: t,
              padding: n
            } = e;
            return {
              name: "arrow",
              options: e,
              fn(e) {
                return r = t, Object.prototype.hasOwnProperty.call(r, "current") ? null != t.current ? Ql({
                  element: t.current,
                  padding: n
                }).fn(e) : {} : t ? Ql({
                  element: t,
                  padding: n
                }).fn(e) : {};
                var r
              }
            }
          };
          var Lc = "undefined" != typeof document ? mt : gt;
          const Fc = Qe(null),
            Bc = Qe(null),
            zc = () => wt(Bc);

          function Hc(e) {
            var t;
            return null != (t = null == e ? void 0 : e.ownerDocument) ? t : document
          }

          function Uc(e) {
            return !!e && e instanceof
            function(e) {
              var t;
              return null != (t = Hc(e).defaultView) ? t : window
            }(e).Element
          }
          const Wc = Rn["useInsertionEffect".toString()];

          function Vc(e) {
            let {
              open: t = !1,
              onOpenChange: n,
              whileElementsMounted: r,
              placement: i,
              middleware: o,
              strategy: a,
              nodeId: s
            } = void 0 === e ? {} : e;
            const [l, c] = dt(null), u = zc(), h = vt(null), p = vt({}), d = dt((() => function() {
              const e = new Map;
              return {
                emit(t, n) {
                  var r;
                  null == (r = e.get(t)) || r.forEach((e => e(n)))
                },
                on(t, n) {
                  e.set(t, [...e.get(t) || [], n])
                },
                off(t, n) {
                  e.set(t, (e.get(t) || []).filter((e => e !== n)))
                }
              }
            }()))[0], f = Rc({
              placement: i,
              middleware: o,
              strategy: a,
              whileElementsMounted: r
            }), g = function(e) {
              const t = vt((() => {}));
              return Wc ? Wc((() => {
                t.current = e
              })) : t.current = e, yt((function() {
                for (var e = arguments.length, n = new Array(e), r = 0; r < e; r++) n[r] = arguments[r];
                return null == t.current ? void 0 : t.current(...n)
              }), [])
            }(n), m = bt((() => ({
              ...f.refs,
              domReference: h
            })), [f.refs]), v = bt((() => ({
              ...f,
              refs: m,
              dataRef: p,
              nodeId: s,
              events: d,
              open: t,
              onOpenChange: g,
              _: {
                domReference: l
              }
            })), [f, s, d, t, g, m, l]);
            Lc((() => {
              const e = null == u ? void 0 : u.nodesRef.current.find((e => e.id === s));
              e && (e.context = v)
            }));
            const {
              reference: _
            } = f, b = yt((e => {
              (Uc(e) || null === e) && (v.refs.domReference.current = e, c(e)), _(e)
            }), [_, v.refs]);
            return bt((() => ({
              ...f,
              context: v,
              refs: m,
              reference: b
            })), [f, m, v, b])
          }

          function Xc(e, t, n) {
            const r = new Map;
            return {
              ..."floating" === n && {
                tabIndex: -1
              },
              ...e,
              ...t.map((e => e ? e[n] : null)).concat(e).reduce(((e, t) => t ? (Object.entries(t).forEach((t => {
                let [n, i] = t;
                var o;
                0 === n.indexOf("on") ? (r.has(n) || r.set(n, []), "function" == typeof i && (null == (o = r.get(n)) || o.push(i), e[n] = function() {
                  for (var e, t = arguments.length, i = new Array(t), o = 0; o < t; o++) i[o] = arguments[o];
                  null == (e = r.get(n)) || e.forEach((e => e(...i)))
                })) : e[n] = i
              })), e) : e), {})
            }
          }
          const Gc = function(e) {
            return void 0 === e && (e = []), {
              getReferenceProps: t => Xc(t, e, "reference"),
              getFloatingProps: t => Xc(t, e, "floating"),
              getItemProps: t => Xc(t, e, "item")
            }
          };

          function Yc(e) {
            const t = vt(e);
            return Lc((() => {
              t.current = e
            })), t
          }

          function qc(e, t, n) {
            return n && "mouse" !== n ? 0 : "number" == typeof e ? e : null == e ? void 0 : e[t]
          }
          const Kc = function(e, t) {
            let {
              enabled: n = !0,
              delay: r = 0,
              handleClose: i = null,
              mouseOnly: o = !1,
              restMs: a = 0,
              move: s = !0
            } = void 0 === t ? {} : t;
            const {
              open: l,
              onOpenChange: c,
              dataRef: u,
              events: h,
              refs: p,
              _: d
            } = e, f = zc(), g = null != (m = null == (v = wt(Fc)) ? void 0 : v.id) ? m : null;
            var m, v;
            const _ = Yc(i),
              b = Yc(r),
              y = function(e) {
                const t = vt();
                return Lc((() => {
                  t.current = e
                }), [e]), t.current
              }(l),
              w = vt(),
              x = vt(),
              k = vt(),
              C = vt(),
              S = vt(!0),
              E = vt(!1),
              T = yt((() => {
                var e;
                const t = null == (e = u.current.openEvent) ? void 0 : e.type;
                return (null == t ? void 0 : t.includes("mouse")) && "mousedown" !== t
              }), [u]);
            gt((() => {
              if (n) return h.on("dismiss", e), () => {
                h.off("dismiss", e)
              };

              function e() {
                clearTimeout(x.current), clearTimeout(C.current), S.current = !0
              }
            }), [n, h, p]), gt((() => {
              if (!n || !_.current) return;

              function e() {
                T() && c(!1)
              }
              const t = Hc(p.floating.current).documentElement;
              return t.addEventListener("mouseleave", e), () => {
                t.removeEventListener("mouseleave", e)
              }
            }), [p, c, n, _, u, T]);
            const O = yt((function(e) {
                void 0 === e && (e = !0);
                const t = qc(b.current, "close", w.current);
                t && !k.current ? (clearTimeout(x.current), x.current = setTimeout((() => c(!1)), t)) : e && (clearTimeout(x.current), c(!1))
              }), [b, c]),
              A = yt((() => {
                k.current && (Hc(p.floating.current).removeEventListener("pointermove", k.current), k.current = void 0)
              }), [p]),
              P = yt((() => {
                Hc(p.floating.current).body.style.pointerEvents = "", E.current = !1
              }), [p]);
            if (gt((() => {
                if (!n) return;

                function t() {
                  return !!u.current.openEvent && ["click", "mousedown"].includes(u.current.openEvent.type)
                }

                function r(e) {
                  if (clearTimeout(x.current), S.current = !1, o && "mouse" !== w.current || a > 0 && 0 === qc(b.current, "open")) return;
                  u.current.openEvent = e;
                  const t = qc(b.current, "open", w.current);
                  t ? x.current = setTimeout((() => {
                    c(!0)
                  }), t) : c(!0)
                }

                function i(n) {
                  if (t()) return;
                  const r = Hc(p.floating.current);
                  if (clearTimeout(C.current), _.current) return clearTimeout(x.current), k.current && r.removeEventListener("pointermove", k.current), k.current = _.current({
                    ...e,
                    tree: f,
                    x: n.clientX,
                    y: n.clientY,
                    onClose() {
                      P(), A(), O()
                    }
                  }), void r.addEventListener("pointermove", k.current);
                  O()
                }

                function h(n) {
                  t() || null == _.current || _.current({
                    ...e,
                    tree: f,
                    x: n.clientX,
                    y: n.clientY,
                    leave: !0,
                    onClose() {
                      P(), A(), O()
                    }
                  })(n)
                }
                const d = p.floating.current,
                  g = p.domReference.current;
                return Uc(g) ? (l && g.addEventListener("mouseleave", h), null == d || d.addEventListener("mouseleave", h), s && g.addEventListener("mousemove", r, {
                  once: !0
                }), g.addEventListener("mouseenter", r), g.addEventListener("mouseleave", i), () => {
                  l && g.removeEventListener("mouseleave", h), null == d || d.removeEventListener("mouseleave", h), s && g.removeEventListener("mousemove", r), g.removeEventListener("mouseenter", r), g.removeEventListener("mouseleave",
                    i)
                }) : void 0
              }), [d.domReference, n, e, o, a, s, O, A, P, c, l, f, p, b, _, u]), Lc((() => {
                if (n && l && _.current && _.current.__options.blockPointerEvents && T()) {
                  Hc(p.floating.current).body.style.pointerEvents = "none", E.current = !0;
                  const n = p.domReference.current,
                    r = p.floating.current;
                  if (Uc(n) && r) {
                    var e, t;
                    const i = null == f || null == (e = f.nodesRef.current.find((e => e.id === g))) || null == (t = e.context) ? void 0 : t.refs.floating.current;
                    return i && (i.style.pointerEvents = ""), n.style.pointerEvents = "auto", r.style.pointerEvents = "auto", () => {
                      n.style.pointerEvents = "", r.style.pointerEvents = ""
                    }
                  }
                }
              }), [n, l, g, p, f, _, u, T]), Lc((() => {
                y && !l && (w.current = void 0, A(), P())
              })), gt((() => () => {
                A(), clearTimeout(x.current), clearTimeout(C.current), E.current && P()
              }), [n, A, P]), !n) return {};

            function M(e) {
              w.current = e.pointerType
            }
            return {
              reference: {
                onPointerDown: M,
                onPointerEnter: M,
                onMouseMove() {
                  l || 0 === a || (clearTimeout(C.current), C.current = setTimeout((() => {
                    S.current || c(!0)
                  }), a))
                }
              },
              floating: {
                onMouseEnter() {
                  clearTimeout(x.current)
                },
                onMouseLeave() {
                  O(!1)
                }
              }
            }
          };
          var $c = ["children", "reference", "className", "placement"],
            Zc = e => {
              var {
                children: t = null,
                reference: n = null,
                className: r = "",
                placement: i = "top"
              } = e, o = g(e, $c), [a, s] = dt(!1), l = vt(null), {
                context: c,
                x: u,
                y: p,
                strategy: d,
                floating: f,
                reference: m,
                placement: v,
                middlewareData: {
                  arrow: {
                    x: _,
                    y: b
                  } = {}
                }
              } = Vc({
                middleware: [ec(10), tc({
                  padding: 8
                }), jc({
                  element: l
                })],
                open: a,
                placement: i,
                onOpenChange: s,
                whileElementsMounted: Mc
              }), {
                getReferenceProps: y,
                getFloatingProps: w
              } = Gc([Kc(c)]), [x, k] = dt(!1);
              Ml((() => {
                k(!0)
              }));
              var C = {
                top: "bottom",
                bottom: "top"
              } [(v || "").split("-")[0]];
              return x ? zl(Pe, {
                children: [zl("span", h(h(h({
                  ref: m
                }, y()), {}, {
                  className: Rl("pk-flex pk-justify-center pk-items-center pk-leading-none pk-inline-block", r)
                }, o), {}, {
                  children: n || zl(Fl, {
                    className: "pk-cursor-pointer"
                  })
                })), t && a && zl("div", h(h({
                  className: "relative pk-max-w-[50vw] pk-py-2 pk-px-3 pk-bg-white pk-rounded-md pk-shadow-[0px_4px_18px_rgb(0_0_0_/_10%)] pk-transform-[matrix(-1,0,0,1,0,0)] pk-z-[9999] pk-break-words md:pk-max-w-[33vw] !pk-text-[14px]",
                  ref: f,
                  style: {
                    position: d,
                    top: null != p ? p : 0,
                    left: null != u ? u : 0,
                    hyphens: "auto"
                  }
                }, w()), {}, {
                  children: [zl(Ul, {
                    children: t
                  }), zl("div", {
                    className: "pk-absolute pk-border-[5px] pk-border-transparent pk-border-t-white pk-filter-[drop-shadow(0px_4px_18px_rgb(0_0_0_/_10%))]",
                    style: {
                      left: _,
                      top: b,
                      [C]: "-10px"
                    },
                    ref: l
                  })]
                }))]
              }) : null
            },
            Jc = {
              large_tooltip: "TooltipIconLarge-module_large_tooltip__gzcyR",
              largeTooltip: "TooltipIconLarge-module_large_tooltip__gzcyR",
              large_tooltip_img: "TooltipIconLarge-module_large_tooltip_img__rpH1F",
              largeTooltipImg: "TooltipIconLarge-module_large_tooltip_img__rpH1F"
            };
          c(
          ".TooltipIconLarge-module_large_tooltip__gzcyR{align-items:center;background:#fff;border-radius:6px;box-shadow:0 4px 36px 0 rgba(51,51,51,.08)!important;box-sizing:border-box;display:flex;flex-direction:column;flex-wrap:wrap;gap:8px!important;padding:8px!important;width:136px}.TooltipIconLarge-module_large_tooltip_img__rpH1F{border-radius:3px;height:120px!important;width:120px!important}@media (max-width:959px){.TooltipIconLarge-module_large_tooltip__gzcyR{width:104px!important}.TooltipIconLarge-module_large_tooltip_img__rpH1F{border-radius:3px;height:88px!important;width:88px!important}}");
          var Qc = ["children", "reference", "className", "placement", "checked"];
          window.touchStartTime = null, window.touchEndTime = null;
          var eu, tu, nu, ru, iu = e => {
              var {
                children: t = null,
                reference: n = null,
                className: r = "",
                placement: i = "top",
                checked: o = null
              } = e, a = g(e, Qc), [s, l] = dt(!1), c = vt(null), {
                context: u,
                x: p,
                y: d,
                strategy: f,
                floating: m,
                reference: v,
                placement: _,
                middlewareData: {
                  arrow: {
                    x: b,
                    y: y
                  } = {}
                }
              } = Vc({
                middleware: [ec(10), tc({
                  padding: 8
                }), jc({
                  element: c
                })],
                open: s,
                placement: i,
                onOpenChange: l,
                whileElementsMounted: Mc
              }), {
                getReferenceProps: w,
                getFloatingProps: x
              } = Gc([Kc(u)]), [k, C] = dt(!1);
              Ml((() => {
                pa() || C(!0)
              }));
              var S = {
                top: "bottom",
                bottom: "top"
              } [(_ || "").split("-")[0]];
              return zl(Pe, k ? {
                children: [zl("span", h(h(h({
                  ref: v
                }, w()), {}, {
                  className: Rl("pk-flex pk-justify-center pk-items-center pk-leading-none pk-inline-block", r)
                }, a), {}, {
                  children: n || zl(Fl, {
                    className: "pk-cursor-pointer"
                  })
                })), t && s && zl("div", h(h({
                  className: Rl(
                    "relative pk-max-w-[50vw] pk-py-2 pk-px-3 pk-bg-white pk-rounded-md pk-shadow-[0px_4px_18px_rgb(0_0_0_/_10%)] pk-transform-[matrix(-1,0,0,1,0,0)] pk-z-[9999] pk-break-words md:pk-max-w-[33vw] !pk-text-[14px]",
                    Jc.large_tooltip),
                  ref: m,
                  style: {
                    position: f,
                    top: null != d ? d : 0,
                    left: null != p ? p : 0,
                    hyphens: "auto"
                  }
                }, x()), {}, {
                  children: [zl(Ul, {
                    style: {
                      textAlign: "center",
                      wordBreak: "break-all"
                    },
                    children: t
                  }), zl("div", {
                    className: Jc.large_tooltip_img,
                    children: n || zl(Fl, {
                      className: "pk-cursor-pointer"
                    })
                  }), zl("div", {
                    className: "pk-absolute pk-border-[5px] pk-border-transparent pk-border-t-white pk-filter-[drop-shadow(0px_4px_18px_rgb(0_0_0_/_10%))]",
                    style: {
                      left: b,
                      top: y,
                      [S]: "-10px"
                    },
                    ref: c
                  })]
                }))]
              } : {
                children: [zl("span", h(h(h({
                  ref: v
                }, w()), {}, {
                  className: Rl("pk-flex pk-justify-center pk-items-center pk-leading-none pk-inline-block", r, Jc.mobile_switch)
                }, a), {}, {
                  children: n || zl(Fl, {
                    className: "pk-cursor-pointer"
                  })
                })), t && s && o && zl("div", h(h({
                  className: Rl(
                    "relative pk-max-w-[50vw] pk-py-2 pk-px-3 pk-bg-white pk-rounded-md pk-shadow-[0px_4px_18px_rgb(0_0_0_/_10%)] pk-transform-[matrix(-1,0,0,1,0,0)] pk-z-[9999] pk-break-words md:pk-max-w-[33vw] !pk-text-[14px]",
                    Jc.large_tooltip),
                  ref: m,
                  style: {
                    position: f,
                    top: null != d ? d : 0,
                    left: null != p ? p : 0,
                    hyphens: "auto"
                  }
                }, x()), {}, {
                  children: [zl(Ul, {
                    style: {
                      textAlign: "center",
                      wordBreak: "break-all"
                    },
                    children: t
                  }), zl("div", {
                    className: Jc.large_tooltip_img,
                    children: n || zl(Fl, {
                      className: "pk-cursor-pointer"
                    })
                  }), zl("div", {
                    className: "pk-absolute pk-border-[5px] pk-border-transparent pk-border-t-white pk-filter-[drop-shadow(0px_4px_18px_rgb(0_0_0_/_10%))]",
                    style: {
                      left: b,
                      top: y,
                      [S]: "-10px"
                    },
                    ref: c
                  })]
                }))]
              })
            },
            ou = window.SHOP_PARAMS.finance_symbol,
            au = (null === (eu = window) || void 0 === eu || null === (tu = eu.C_SETTINGS) || void 0 === tu || null === (nu = tu.market) || void 0 === nu || null === (ru = nu.market_price_setting) || void 0 === ru ? void 0 : ru.actual_rate) || 1,
            su = 1e5,
            lu = Ft((function(e, t) {
              var n, {
                  optionData: r,
                  control: i,
                  name: o,
                  children: a,
                  help: s,
                  label: l,
                  tag: c = "div",
                  alwaysShowError: u = !1
                } = e,
                {
                  errors: h,
                  isSubmitted: p
                } = ns({
                  name: o,
                  control: i
                }),
                d = (null == s ? void 0 : s.value) && "below" === (null == s ? void 0 : s.type),
                f = null == h || null === (n = h[o]) || void 0 === n ? void 0 : n.message,
                g = () => {
                  var e;
                  return "boolean" == typeof u ? u : "object" == typeof u ? (null == u ? void 0 : u[null == h || null === (e = h[o]) || void 0 === e ? void 0 : e.type]) || !1 : void 0
                },
                m = () => ((e, t) => {
                  var n;
                  if (null === (n = e[t.fid]) || void 0 === n || !n.length) return 0;
                  if (Number(null == t ? void 0 : t.price)) return Number(t.price) ? (Number(t.price) * su * au / su).toFixed(2) : 0;
                  var r, i = 0;
                  return ["swatch", "dropdown", "button", "checkbox"].includes(null == t ? void 0 : t.type) && (null === (r = t.options) || void 0 === r || r.forEach((n => {
                    ("dropdown" === t.type ? e[t.fid] === n.label : e[t.fid].includes(n.label)) && (i += Number(n.price) || 0)
                  }))), i ? (i * su * au / su).toFixed(2) : 0
                })(e.control._formValues, r);
              return zl(c, {
                ref: t,
                children: [zl("div", {
                  className: Rl("pk-break-words pk-text-sm md:pk-text-base", {
                    "pk-mb-3": l && "swatch" !== r.type,
                    "pk-mb-2.5": l && "swatch" === r.type
                  }),
                  style: {
                    hyphens: "auto",
                    wordBreak: "break-word"
                  },
                  children: ((e, t) => {
                    var n = !!m() && '\n      <span>(</span>\n      <span>+</span>\n      <span className="money notranslate">'.concat(ou).concat(m(), "</span>\n      <span>)&nbsp;</span>\n      ");
                    return zl("div", {
                      className: Rl("pk-flex items-center relative", pa() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
                      children: [zl(Ul, {
                        tagName: "div",
                        className: "pk-font-medium appparkeet_form_item_title",
                        children: e
                      }), (null == t ? void 0 : t.value) && "tooltip" === t.type && zl(Zc, {
                        className: "pk-mx-1 pk-text-[14px]",
                        children: t.value
                      }), zl("div", {
                        className: "pk-ml-1.5 pk-flex pk-items-center pk-font-semibold notranslate",
                        dangerouslySetInnerHTML: {
                          __html: n
                        }
                      }), zl(Ul, {
                        children: ":"
                      })]
                    }, "title")
                  })(l, s)
                }), a, zl(Ul, {
                  tagName: "p",
                  style: {
                    hyphens: "auto"
                  },
                  className: Rl("pk-text-[#DB393A] pk-text-xs md:pk-text-sm", {
                    "pk-mt-2": (p || g()) && f
                  }),
                  children: (p || g()) && f
                }, f), zl(Ul, {
                  tagName: "p",
                  style: {
                    hyphens: "auto"
                  },
                  className: Rl("pk-text-[#7A7A7A] pk-text-xs md:pk-text-sm pk-break-words", {
                    "pk-mt-2": d
                  }),
                  children: d && s.value
                })]
              })
            })),
            cu = Rt(lu, ((e, t) => e.children === t.children)),
            uu = e => {
              var {
                value: t,
                onChange: n,
                multiple: r
              } = e, {
                max: i = Number.MAX_SAFE_INTEGER
              } = r || {}, o = Boolean(r && i > 1), a = function(e) {
                const t = vt(e);
                t.current = bt((() => e), [e]);
                const n = vt();
                return n.current || (n.current = function(...e) {
                  return t.current.apply(this, e)
                }), n.current
              }((e => {
                var {
                  value: r,
                  checked: a
                } = e, s = {
                  true_true: () => [...t, r],
                  true_false: () => [r],
                  false_true: () => t.filter((e => e !== r)),
                  false_false: () => []
                } ["".concat(Boolean(a), "_").concat(o)]();
                if (!(o && s.length > i)) return null == n || n(s), s
              }));
              return {
                toggleOption: a
              }
            };
          var hu = new class {
              constructor() {
                this.bus = {}
              }
              $off(e, t) {
                var n;
                if (this.bus[e]) {
                  var r = null === (n = this.bus[e]) || void 0 === n ? void 0 : n.findIndex((e => e === t));
                  r >= 0 && this.bus[e].splice(r, 1)
                }
              }
              $on(e, t) {
                var n = this.bus[e];
                this.bus[e] = n ? [...n, t] : [t]
              }
              $emit(e) {
                for (var t, n = arguments.length, r = new Array(n > 1 ? n - 1 : 0), i = 1; i < n; i++) r[i - 1] = arguments[i];
                null === (t = this.bus[e]) || void 0 === t || t.forEach((e => {
                  e(...r)
                }))
              }
            },
            pu = Qe(),
            du = (e, t) => {
              var n, r, i, o = "";
              2 === (null === (n = e.preview_setting) || void 0 === n ? void 0 : n.type) ? o = null === (r = e.preview_setting.data.filter((e => e.variant_id === t))[0]) || void 0 === r ? void 0 : r.bg_image_url : o = null === (i = e
                .preview_setting.data[0]) || void 0 === i ? void 0 : i.bg_image_url;
              return o
            },
            fu = Qe({}),
            gu = e => {
              var {
                size: t,
                optionData: n,
                control: r,
                children: i,
                options: o,
                defaultValue: a = [],
                fieldName: s,
                propertyName: l,
                name: c,
                required: u,
                multiple: p,
                help: d,
                visible: f
              } = e, g = bt((() => o || Fe(i).map((e => e.props)) || []), [i, o]), {
                formatMessage: m
              } = vo(), {
                min: v = 0
              } = p || {}, {
                field: {
                  onChange: _,
                  onBlur: b,
                  value: y,
                  ref: w
                }
              } = ls({
                control: r,
                name: s,
                rules: {
                  validate: {
                    min: e => !p || !(null != e && e.length) || (null == e ? void 0 : e.length) >= v || jl(v),
                    required: e => !u || (null == e ? void 0 : e.length) >= 1 || m({
                      id: "required_tip"
                    })
                  }
                },
                defaultValue: a
              }), {
                toggleOption: x
              } = uu({
                value: y,
                multiple: p,
                onChange: _
              }), k = y.join(",");
              return zl(fu.Provider, {
                value: bt((() => ({
                  toggleOption: x
                })), [x]),
                children: f ? zl(lu, {
                  optionData: n,
                  name: s,
                  label: c,
                  help: d,
                  control: r,
                  children: [zl("div", {
                    onBlur: b,
                    className: "pk-flex pk-flex-wrap pk--mt-1.5 pk--ml-2 pk-outline-none",
                    ref: w,
                    tabIndex: "0",
                    children: g.map((n => {
                      var {
                        label: r
                      } = n, i = null == y ? void 0 : y.includes(r);
                      return zl(mu, h(h({}, n), {}, {
                        checked: i,
                        size: t,
                        optionItem: e
                      }), r)
                    }))
                  }), zl("input", {
                    type: "hidden",
                    name: y.length > 0 ? "properties[".concat(l, "]") : "",
                    value: k || ""
                  })]
                }) : null
              })
            },
            mu = Rt((function(e) {
              var {
                type: t,
                value: n,
                label: r,
                checked: i = !1,
                size: o,
                optionItem: a
              } = e, {
                toggleOption: s
              } = wt(fu), l = wt(pu);
              return "52px" === o && "img" === t ? zl(iu, {
                checked: i,
                placement: "top",
                className: Rl("pk-flex-none pk-relative pk-block pk-cursor-pointer pk-rounded-[3px] pk-mt-3 pk-ml-3 pk-overflow-hidden", {
                  "pk-ring-2 pk-ring-offset-2 pk-ring-[#333]": i,
                  "pk-w-11 pk-h-11": "52px" === o || !o,
                  "pk-w-18 pk-h-18": "80px" === o,
                  "pk-w-23 pk-h-23": "100px" === o
                }),
                onClick: () => {
                  var e, t = s({
                    checked: !i,
                    value: r
                  });
                  if (null != a && null !== (e = a.preview_setting) && void 0 !== e && e.preview_open) {
                    var n, o, c, u, h = du(a, l);
                    hu.$emit(F, {
                      bg_image_url: h,
                      checked_fids: null == a || null === (n = a.options) || void 0 === n || null === (o = n.filter((e => t.includes(e.label)))) || void 0 === o ? void 0 : o.map((e => e.fid)),
                      un_checked_fids: null == a || null === (c = a.options) || void 0 === c || null === (u = c.filter((e => !t.includes(e.label)))) || void 0 === u ? void 0 : u.map((e => e.fid))
                    })
                  }
                },
                style: "color" === t && {
                  backgroundColor: n
                },
                reference: "img" === t ? zl("div", {
                  data: n,
                  style: {
                    backgroundImage: "url(".concat(window.SHOP_PARAMS.default_img, ")")
                  },
                  className: "pk-w-full pk-h-full pk-object-cover pk-object-center pk-rounded-[3px]",
                  children: zl("img", {
                    src: n,
                    alt: r,
                    style: {
                      objectFit: "cover"
                    },
                    className: "pk-w-full pk-h-full pk-object-cover pk-object-center pk-rounded-[3px]"
                  })
                }) : zl(Pe, {}),
                children: r && r
              }) : zl(Zc, {
                placement: "top",
                className: Rl("pk-flex-none pk-relative pk-block pk-cursor-pointer pk-rounded-[3px] pk-mt-3 pk-ml-3 pk-overflow-hidden", {
                  "pk-ring-2 pk-ring-offset-2 pk-ring-[#333]": i,
                  "pk-w-11 pk-h-11": "52px" === o || !o,
                  "pk-w-18 pk-h-18": "80px" === o,
                  "pk-w-23 pk-h-23": "100px" === o
                }),
                onClick: () => {
                  var e, t = s({
                    checked: !i,
                    value: r
                  });
                  if (null != a && null !== (e = a.preview_setting) && void 0 !== e && e.preview_open) {
                    var n, o, c, u, h = du(a, l);
                    hu.$emit(F, {
                      bg_image_url: h,
                      checked_fids: null == a || null === (n = a.options) || void 0 === n || null === (o = n.filter((e => t.includes(e.label)))) || void 0 === o ? void 0 : o.map((e => e.fid)),
                      un_checked_fids: null == a || null === (c = a.options) || void 0 === c || null === (u = c.filter((e => !t.includes(e.label)))) || void 0 === u ? void 0 : u.map((e => e.fid))
                    })
                  }
                },
                style: "color" === t && {
                  backgroundColor: n
                },
                reference: "img" === t ? zl("object", {
                  data: n,
                  className: "pk-w-full pk-h-full pk-object-cover pk-object-center",
                  children: zl("img", {
                    src: window.SHOP_PARAMS.default_img,
                    alt: r,
                    className: "pk-w-full pk-h-full pk-object-cover pk-object-center"
                  })
                }) : zl(Pe, {}),
                children: r && r
              })
            }), ((e, t) => e.checked === t.checked && e.label === t.label && e.value === t.value && e.type === t.type && e.selected_value === t.selected_value));
          gu.Option = () => null;
          var vu, _u = gu,
            bu = "Dropdown-module_dropdown-label__8sSmb";

          function yu() {
            return yu = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, yu.apply(this, arguments)
          }
          c(".Dropdown-module_dropdown-label__8sSmb[\\:has\\(select\\:focus\\)]{border:1px solid #333!important}.Dropdown-module_dropdown-label__8sSmb:has(select:focus){border:1px solid #333!important}");
          var wu = e => Te("svg", yu({
              width: 16,
              height: 16,
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg"
            }, e), vu || (vu = Te("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M3.2 6.4a.8.8 0 0 1 1.366-.566L8 9.27l3.434-3.434a.8.8 0 1 1 1.131 1.13l-4 4a.8.8 0 0 1-1.13 0l-4-4A.798.798 0 0 1 3.2 6.4Z",
              fill: "#6D7175"
            }))),
            xu = function(e) {
              var {
                optionData: t,
                control: n,
                name: r,
                fieldName: i,
                propertyName: o,
                options: a,
                children: s,
                placeholder: l = "",
                defaultValue: c = "",
                required: u,
                help: h,
                visible: p
              } = e, d = bt((() => a || Fe(s).map((e => e.props)) || []), [s, a]), {
                formatMessage: f
              } = vo(), {
                field: {
                  onChange: g,
                  onBlur: m,
                  value: v,
                  ref: _
                },
                fieldState: {
                  error: b
                },
                formState: {
                  isSubmitted: y
                }
              } = ls({
                control: n,
                name: i,
                rules: {
                  required: {
                    value: !!u,
                    message: f({
                      id: "required_tip"
                    })
                  }
                },
                defaultValue: c
              });
              return zl(Pe, {
                children: p ? zl(lu, {
                  optionData: t,
                  name: i,
                  label: r,
                  help: h,
                  tag: Pe,
                  control: n,
                  children: zl("label", {
                    className: Rl("pk-block pk-border pk-border-[#D1D1D1] pk-rounded pk-overflow-hidden pk-relative pk-block pk-bg-white pk-leading-[0px] pk-outline-none pk-my-0", y && null != b && b.message ? "pk-border-[#DB393A]" :
                      "pk-border-[#D1D1D1]", bu),
                    tabIndex: "1",
                    ref: _,
                    children: [zl("div", {
                      className: "pk-absolute pk-top-0 pk-left-0 pk-w-full pk-h-full pk-flex pk-items-center pk-cursor-pointer pk-pointer-events-none",
                      children: [l && !v && zl(Ul, {
                        tagName: "span",
                        className: "pk-flex-1 pk-truncate pk-ml-3 pk-select-none pk-text-[#93989D] pk-text-sm pk-leading-5",
                        children: l
                      }), zl(wu, {
                        className: "pk-ml-auto pk-mr-4 pk-cursor-pointer"
                      })]
                    }), zl("input", {
                      type: "hidden",
                      name: v ? "properties[".concat(o, "]") : "",
                      value: v
                    }), zl("select", {
                      name: ca,
                      onBlur: m,
                      className: Rl("pk-w-full pk-py-3.5 pk-pl-4 pk-pr-10.5 pk-cursor-pointer pk-appearance-none pk-text-sm pk-leading-5 pk-outline-none pk-truncate pk-bg-white", {
                        "pk-opacity-0": !v
                      }),
                      value: v,
                      onInput: e => {
                        var t = d.reduce(((t, n) => (n.label === e.target.value && (t = n.redirect_url), t)), "");
                        t ? location.href = t : g(e.target.value)
                      },
                      children: [zl(Ul, {
                        tagName: "option",
                        value: "",
                        children: "-No selection-"
                      }), d.map((e => zl(Ul, {
                        tagName: "option",
                        value: e.label,
                        children: e.label
                      }, e.label)))]
                    })]
                  })
                }) : null
              })
            };
          xu.Option = () => null;
          var ku, Cu, Su, Eu = xu,
            Tu = "Text-module_text-label__8sMmT",
            Ou = "Text-module_text_preview_contaniner__X8vAR",
            Au = "Text-module_font_color_area__Zch0o",
            Pu = "Text-module_font_family_area__BUzEb",
            Mu = "Text-module_font_size_area__KmeEO",
            Du = "Text-module_preview_item_label__akFsR",
            Iu = "Text-module_color_block_wrapper__0K3rY",
            Nu = "Text-module_color_block__8LhBv",
            Ru = "Text-module_font_family_select_wrapper__N-f37",
            ju = "Text-module_font_family_select__otjrz",
            Lu = "Text-module_arrow_down_icon__GZiHO",
            Fu = "Text-module_font_size_wrapper__TRp3a",
            Bu = "Text-module_input_up__huYER",
            zu = "Text-module_input_down__g1FF8",
            Hu = "Text-module_font_size_input__fMl0u";

          function Uu() {
            return Uu = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, Uu.apply(this, arguments)
          }
          c(
          ".Text-module_text-label__8sMmT[\\:has\\(input\\:focus\\)]{border:1px solid #333}.Text-module_text-label__8sMmT:has(input:focus){border:1px solid #333}.Text-module_text_preview_contaniner__X8vAR{display:flex;flex-direction:column;flex-wrap:wrap;gap:20px;margin-top:20px}.Text-module_font_color_area__Zch0o,.Text-module_font_family_area__BUzEb,.Text-module_font_size_area__KmeEO{align-items:flex-start;display:flex;flex-direction:column;gap:12px;width:100%}.Text-module_preview_item_label__akFsR{color:rgba(51,51,51,.9);font-size:15px;line-height:130%}.Text-module_color_block_wrapper__0K3rY{align-items:flex-start;align-self:stretch;display:flex;flex-wrap:wrap;gap:4px;width:100%}.Text-module_color_block__8LhBv{align-items:center;border-radius:6px;box-sizing:border-box;cursor:pointer;display:flex;height:52px;justify-content:center;padding:0;width:52px}.Text-module_font_family_select_wrapper__N-f37{border:1px solid rgba(51,51,51,.12)!important;border-radius:4px;overflow:hidden;position:relative;width:100%}.Text-module_font_family_select__otjrz{-webkit-appearance:none;appearance:none;background:#fff;border:none!important;color:#333!important;cursor:pointer;font-size:14px!important;font-weight:500!important;height:100%;line-height:130%!important;overflow:hidden;padding:14px 42px 14px 16px!important;text-overflow:ellipsis;white-space:nowrap;width:100%}.Text-module_arrow_down_icon__GZiHO{cursor:pointer;position:absolute;right:16px;top:16px}.Text-module_font_size_wrapper__TRp3a{-webkit-tap-highlight-color:#fff;align-items:center;background:#fff;border:1px solid rgba(51,51,51,.12)!important;border-radius:4px;box-sizing:border-box;display:flex;gap:10px;height:44px;outline:none;padding:5px 39px 5px 16px;position:relative;width:120px}.Text-module_input_up__huYER{cursor:pointer;position:absolute;right:5px;top:3px}.Text-module_input_up__huYER:hover rect{fill:#dbdddf}.Text-module_input_up__huYER:active rect{fill:#c9ccd0}.Text-module_input_down__g1FF8{cursor:pointer;position:absolute;right:5px;top:23px}.Text-module_input_down__g1FF8:active rect{fill:#c9ccd0}.Text-module_font_size_input__fMl0u{-webkit-appearance:none!important;appearance:none!important;font-size:14px!important;font-weight:500!important;height:100%;line-height:130%!important;outline:none!important;width:100%}");
          var Wu, Vu, Xu, Gu = e => Te("svg", Uu({
            width: 24,
            height: 16,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), ku || (ku = Te("rect", {
            width: 24,
            height: 16,
            rx: 2,
            fill: "#E4E5E7"
          })), Cu || (Cu = Te("g", {
            clipPath: "url(#InputUp_svg__a)"
          }, Te("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M15.319 9.75c.39 0 .585-.471.309-.747l-3.319-3.319a.437.437 0 0 0-.618 0l-3.32 3.32a.437.437 0 0 0 .31.746h6.638Z",
            fill: "#6D7175"
          }))), Su || (Su = Te("defs", null, Te("clipPath", {
            id: "InputUp_svg__a"
          }, Te("path", {
            fill: "#fff",
            transform: "translate(5 1)",
            d: "M0 0h14v14H0z"
          })))));

          function Yu() {
            return Yu = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, Yu.apply(this, arguments)
          }
          var qu, Ku, $u, Zu = e => Te("svg", Yu({
              width: 24,
              height: 16,
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg"
            }, e), Wu || (Wu = Te("rect", {
              width: 24,
              height: 16,
              rx: 2,
              transform: "matrix(1 0 0 -1 0 16)",
              fill: "#E4E5E7"
            })), Vu || (Vu = Te("g", {
              clipPath: "url(#InputDown_svg__a)"
            }, Te("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M15.319 6.25c.39 0 .585.471.309.747l-3.319 3.319a.437.437 0 0 1-.618 0l-3.32-3.32a.437.437 0 0 1 .31-.746h6.638Z",
              fill: "#6D7175"
            }))), Xu || (Xu = Te("defs", null, Te("clipPath", {
              id: "InputDown_svg__a"
            }, Te("path", {
              fill: "#fff",
              transform: "matrix(1 0 0 -1 5 15)",
              d: "M0 0h14v14H0z"
            }))))),
            Ju = e => {
              var t, n, r, i, {
                  control: o,
                  defaultValue: a = "",
                  fieldName: s,
                  propertyName: l,
                  name: c,
                  required: u,
                  help: p,
                  placeholder: d,
                  optionData: f,
                  maximum: g,
                  visible: m,
                  preview_setting: v = {},
                  textStyleChange: _ = (() => {})
                } = e,
                [b, y] = dt(!0),
                [w, x] = dt(v.selected_color || (null === (t = v.text_colors) || void 0 === t ? void 0 : t[0]) || "black"),
                [k, C] = dt(null === (n = v.text_families) || void 0 === n ? void 0 : n[0]),
                [S, E] = dt(v.text_size),
                {
                  formatMessage: T
                } = vo(),
                O = sa((e => {
                  M(e), null == _ || _({
                    textColor: w,
                    textFont: k,
                    textSize: S,
                    isInit: b,
                    textValue: e.target.value
                  })
                }), 200),
                A = e => {
                  var t = e.target.value;
                  /^\d+$/.test(t) ? (t < 10 ? t = 10 : t > 128 && (t = 128), E(t)) : E(v.text_size)
                };
              gt((() => {
                b ? (y(!1), setTimeout((() => {
                  null == _ || _({
                    textColor: w,
                    textFont: k,
                    textSize: S,
                    textValue: I,
                    isInit: !0
                  })
                }), 500)) : null == _ || _({
                  textColor: w,
                  textFont: k,
                  textSize: S,
                  textValue: I,
                  isInit: !1
                })
              }), [w, k, S]);
              var P = g || 500,
                {
                  field: {
                    onChange: M,
                    onBlur: D,
                    value: I,
                    ref: N
                  },
                  fieldState: {
                    error: R
                  },
                  formState: {
                    isSubmitted: j
                  }
                } = ls({
                  control: o,
                  name: s,
                  rules: {
                    required: {
                      value: !!u,
                      message: T({
                        id: "required_tip"
                      })
                    }
                  },
                  defaultValue: a
                }),
                L = j && (null == R ? void 0 : R.message) || "maxLength" === (null == R ? void 0 : R.type),
                F = {
                  className: Rl("pk-flex-1 placeholder:pk-text-[color:#93989D] pk-outline-none", {
                    "pk-bg-transparent": L,
                    "pk-truncate": !I
                  }),
                  maxLength: P,
                  type: "text",
                  autoComplete: "off",
                  placeholder: d,
                  name: "properties[".concat(l, "]"),
                  onBlur: D,
                  onFocus: e => {
                    (e.target.value || 0 === e.target.value) && (null == _ || _({
                      textColor: w,
                      textFont: k,
                      textSize: S,
                      textValue: e.target.value
                    }))
                  },
                  onChange: O,
                  value: I
                };
              return zl(Pe, {
                children: m ? zl(Pe, {
                  children: [zl(cu, {
                    optionData: f,
                    label: c,
                    name: s,
                    help: p,
                    control: o,
                    alwaysShowError: {
                      maxLength: !0
                    },
                    children: zl("label", {
                      className: Rl("pk-flex pk-w-full pk-py-3.5 pk-px-4 pk-appearance-none pk-rounded pk-text-sm pk-leading-5 pk-outline-none pk-truncate pk-bg-white pk-border pk-cursor-text", L ? "" : Tu, L ?
                        "pk-border-[#DB393A]" : "pk-border-[#D1D1D1]"),
                      ref: N,
                      children: [null !== (r = window) && void 0 !== r && null !== (i = r.appparakeet_switch) && void 0 !== i && i.preview_fixed ? zl("textarea", h({}, F)) : zl("input", h({}, F)), I.length >= P - 10 && zl(
                        "span", {
                          className: "pk-flex-none pk-text-[#93989D] pk-pointer-events-none pk-ml-3",
                          children: [I.length, "/", P]
                        })]
                    })
                  }), v && v.preview_open && zl("div", {
                    className: Ou,
                    children: [v.text_colors && v.text_colors.length > 1 && zl("div", {
                      className: Au,
                      children: [zl("div", {
                        className: Rl(Du, "pk-font-medium", pa() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
                        children: [T({
                          id: "font_color"
                        }), " :"]
                      }), zl("div", {
                        className: Iu,
                        children: v.text_colors && v.text_colors.map((e => zl("div", {
                          className: Rl(Nu),
                          style: {
                            border: "2px solid ".concat(w === e ? e : "transparent")
                          },
                          onClick: () => x(e),
                          children: zl("div", {
                            style: {
                              background: e,
                              width: "44px",
                              height: "44px",
                              borderRadius: "3px"
                            }
                          })
                        }, e)))
                      })]
                    }), v.text_families && v.text_families.length > 1 && zl("div", {
                      className: Pu,
                      children: [zl("div", {
                        className: Rl(Du, "pk-font-medium", pa() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
                        children: [T({
                          id: "font"
                        }), " :"]
                      }), zl("div", {
                        className: Ru,
                        children: [zl("select", {
                          className: ju,
                          value: k,
                          onChange: e => {
                            (e => {
                              C(e.target.value)
                            })(e)
                          },
                          children: v.text_families && v.text_families.map((e => zl("option", {
                            value: e,
                            children: e
                          }, e)))
                        }), zl("div", {
                          className: Lu,
                          children: zl(wu, {})
                        })]
                      })]
                    }), v.adjust_font_size && zl("div", {
                      className: Mu,
                      children: [zl("div", {
                        className: Rl(Du, "pk-font-medium", pa() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
                        children: [T({
                          id: "font_size"
                        }), " :"]
                      }), zl("div", {
                        className: Fu,
                        children: [zl("input", {
                          type: "text",
                          className: Hu,
                          value: S,
                          onBlur: e => {
                            A(e)
                          },
                          onFocus: e => {
                            A(e)
                          },
                          onChange: e => {
                            (e => {
                              var {
                                value: t
                              } = e.target;
                              E(t)
                            })(e)
                          }
                        }), zl(Gu, {
                          onClick: () => {
                            Number(S) >= 128 || E((e => Number(e) + 1))
                          },
                          className: Bu
                        }), zl(Zu, {
                          className: zu,
                          onClick: () => {
                            Number(S) <= 10 || E((e => Number(e) - 1))
                          }
                        })]
                      })]
                    })]
                  })]
                }) : null
              })
            },
            Qu = e => {
              var t, n, {
                  control: r,
                  defaultValue: i = "",
                  fieldName: o,
                  propertyName: a,
                  name: s,
                  required: l,
                  help: c,
                  placeholder: u,
                  optionData: h,
                  maximum: p,
                  visible: d,
                  preview_setting: f = {},
                  textStyleChange: g = (() => {})
                } = e,
                [m, v] = dt(!0),
                [_, b] = dt(f.selected_color || (null === (t = f.text_colors) || void 0 === t ? void 0 : t[0]) || "black"),
                [y, w] = dt(null === (n = f.text_families) || void 0 === n ? void 0 : n[0]),
                [x, k] = dt(f.text_size),
                {
                  formatMessage: C
                } = vo(),
                {
                  field: {
                    onChange: S,
                    onBlur: E,
                    value: T,
                    ref: O
                  },
                  fieldState: {
                    error: A
                  },
                  formState: {
                    isSubmitted: P
                  }
                } = ls({
                  control: r,
                  name: o,
                  rules: {
                    required: {
                      value: !!l,
                      message: C({
                        id: "required_tip"
                      })
                    }
                  },
                  defaultValue: i
                }),
                M = e => {
                  var t = e.target.value;
                  /^\d+$/.test(t) ? (t < 10 ? t = 10 : t > 128 && (t = 128), k(t)) : k(f.text_size)
                };
              gt((() => {
                m ? (v(!1), null == g || g({
                  textColor: _,
                  textFont: y,
                  textSize: x,
                  textValue: T,
                  isInit: !0
                })) : null == g || g({
                  textColor: _,
                  textFont: y,
                  textSize: x,
                  textValue: T,
                  isInit: !1
                })
              }), [_, y, x]);
              var D = p || 500,
                I = P && (null == A ? void 0 : A.message) || "maxLength" === (null == A ? void 0 : A.type);
              return zl(Pe, {
                children: d ? zl(Pe, {
                  children: [zl(cu, {
                    optionData: h,
                    label: s,
                    name: o,
                    help: c,
                    control: r,
                    alwaysShowError: {
                      maxLength: !0
                    },
                    children: zl("label", {
                      className: Rl("pk-flex pk-w-full pk-py-3.5 pk-px-4 pk-appearance-none pk-rounded pk-text-sm pk-leading-5 pk-outline-none pk-truncate pk-bg-white pk-border pk-cursor-text", I ? "" : Tu, I ?
                        "pk-border-[#DB393A]" : "pk-border-[#D1D1D1]"),
                      ref: O,
                      children: [zl("input", {
                        className: Rl("pk-flex-1 placeholder:pk-text-[color:#93989D] pk-outline-none", {
                          "pk-bg-transparent": I,
                          "pk-truncate": !T
                        }),
                        max: "9999-12-31",
                        maxLength: D,
                        type: "date",
                        autoComplete: "off",
                        placeholder: u,
                        name: "properties[".concat(a, "]"),
                        onBlur: E,
                        onFocus: e => {
                          (e.target.value || 0 === e.target.value) && (null == g || g({
                            textColor: _,
                            textFont: y,
                            textSize: x,
                            textValue: e.target.value
                          }))
                        },
                        onChange: e => {
                          (e => {
                            S(e), null == g || g({
                              textColor: _,
                              textFont: y,
                              textSize: x,
                              isInit: m,
                              textValue: e.target.value
                            })
                          })(e)
                        },
                        value: T
                      }), T.length >= D - 10 && zl("span", {
                        className: "pk-flex-none pk-text-[#93989D] pk-pointer-events-none pk-ml-3",
                        children: [T.length, "/", D]
                      })]
                    })
                  }), f && f.preview_open && zl("div", {
                    className: Ou,
                    children: [f.text_colors && f.text_colors.length > 1 && zl("div", {
                      className: Au,
                      children: [zl("div", {
                        className: Rl(Du, "pk-font-medium", pa() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
                        children: [C({
                          id: "font_color"
                        }), " :"]
                      }), zl("div", {
                        className: Iu,
                        children: f.text_colors && f.text_colors.map((e => zl("div", {
                          className: Rl(Nu),
                          style: {
                            border: "2px solid ".concat(_ === e ? e : "transparent")
                          },
                          onClick: () => b(e),
                          children: zl("div", {
                            style: {
                              background: e,
                              width: "44px",
                              height: "44px",
                              borderRadius: "3px"
                            }
                          })
                        }, e)))
                      })]
                    }), f.text_families && f.text_families.length > 1 && zl("div", {
                      className: Pu,
                      children: [zl("div", {
                        className: Rl(Du, "pk-font-medium", pa() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
                        children: [C({
                          id: "font"
                        }), " :"]
                      }), zl("div", {
                        className: Ru,
                        children: [zl("select", {
                          className: ju,
                          value: y,
                          onChange: e => {
                            (e => {
                              w(e.target.value)
                            })(e)
                          },
                          children: f.text_families && f.text_families.map((e => zl("option", {
                            value: e,
                            children: e
                          }, e)))
                        }), zl("div", {
                          className: Lu,
                          children: zl(wu, {})
                        })]
                      })]
                    }), f.adjust_font_size && zl("div", {
                      className: Mu,
                      children: [zl("div", {
                        className: Rl(Du, "pk-font-medium", pa() ? "!pk-text-[14px]" : "!pk-text-[15px]"),
                        children: [C({
                          id: "font_size"
                        }), " :"]
                      }), zl("div", {
                        className: Fu,
                        children: [zl("input", {
                          type: "text",
                          className: Hu,
                          value: x,
                          onBlur: e => {
                            M(e)
                          },
                          onFocus: e => {
                            M(e)
                          },
                          onChange: e => {
                            (e => {
                              var {
                                value: t
                              } = e.target;
                              k(t)
                            })(e)
                          }
                        }), zl(Gu, {
                          onClick: () => {
                            Number(x) >= 128 || k((e => Number(e) + 1))
                          },
                          className: Bu
                        }), zl(Zu, {
                          className: zu,
                          onClick: () => {
                            Number(x) <= 10 || k((e => Number(e) - 1))
                          }
                        })]
                      })]
                    })]
                  })]
                }) : null
              })
            },
            eh = e => {
              var t, n, r, i, {
                  optionData: o,
                  control: a,
                  defaultValue: s = [],
                  fieldName: l,
                  propertyName: c,
                  name: u,
                  required: h,
                  help: p,
                  options: d,
                  multiple: f,
                  visible: g
                } = e,
                {
                  formatMessage: m
                } = vo(),
                {
                  min: v = 0
                } = f || {},
                {
                  field: {
                    onChange: _,
                    onBlur: b,
                    value: y,
                    ref: w
                  }
                } = ls({
                  control: a,
                  name: l,
                  rules: {
                    validate: {
                      min: e => !f || !(null != e && e.length) || (null == e ? void 0 : e.length) >= v || jl(v),
                      required: e => !h || (null == e ? void 0 : e.length) >= 1 || m({
                        id: "required_tip"
                      })
                    }
                  },
                  defaultValue: s
                }),
                {
                  toggleOption: x
                } = uu({
                  value: y,
                  multiple: f,
                  onChange: _
                }),
                k = y.join(",");
              return zl(Pe, {
                children: g && zl(lu, {
                  optionData: o,
                  name: l,
                  label: u,
                  help: p,
                  control: a,
                  children: [zl("div", {
                    ref: w,
                    "data-name": u,
                    "data-custom-class": null === (t = window) || void 0 === t || null === (n = t.appparakeet_custom_add_class) || void 0 === n ? void 0 : n[u],
                    className: "pk-flex pk-flex-wrap pk-gap-x-3 pk-gap-y-4 ".concat((null === (r = window) || void 0 === r || null === (i = r.appparakeet_custom_add_class) || void 0 === i ? void 0 : i[u]) || ""),
                    tabIndex: "0",
                    onBlur: b,
                    children: d.map((e => {
                      var {
                        label: t
                      } = e, n = null == y ? void 0 : y.includes(t);
                      return zl("button", {
                        onClick: () => {
                          e.redirect_url ? location.href = e.redirect_url : x({
                            checked: !n,
                            value: t
                          })
                        },
                        type: "button",
                        dangerouslySetInnerHTML: {
                          __html: t
                        },
                        className: Rl("pk-flex pk-items-center pk-justify-center pk-h-11.5 pk-min-w-[46px] pk-px-4 pk-rounded pk-text-[15px] pk-border-solid pk-outline-none", n ?
                          "pk-border-2 pk-border-[#333] focus:pk-border-[#333]" : "pk-text-opacity-80 pk-border pk-border-[#333/12]")
                      }, t)
                    }))
                  }), zl("input", {
                    type: "hidden",
                    name: y.length > 0 ? "properties[".concat(c, "]") : "",
                    value: k || ""
                  })]
                })
              })
            };

          function th() {
            return th = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, th.apply(this, arguments)
          }
          var nh, rh, ih = e => Te("svg", th({
            width: 18,
            height: 18,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), qu || (qu = Te("rect", {
            width: 18,
            height: 18,
            rx: 4,
            fill: "#fff"
          })), Ku || (Ku = Te("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M13.85 5.775a.731.731 0 0 1 0 1.034l-5.416 5.417a.731.731 0 0 1-1.034 0L4.69 9.517a.731.731 0 1 1 1.034-1.034l2.192 2.191 4.9-4.9a.731.731 0 0 1 1.033 0Z",
            fill: "#fff"
          })), $u || ($u = Te("rect", {
            x: .5,
            y: .5,
            width: 17,
            height: 17,
            rx: 3.5,
            stroke: "#333",
            strokeOpacity: .12
          })));

          function oh() {
            return oh = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, oh.apply(this, arguments)
          }
          var ah, sh, lh, ch = e => Te("svg", oh({
            width: 18,
            height: 18,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), nh || (nh = Te("rect", {
            width: 18,
            height: 18,
            rx: 4,
            fill: "#333"
          })), rh || (rh = Te("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M13.85 5.775a.731.731 0 0 1 0 1.034l-5.416 5.417a.731.731 0 0 1-1.034 0L4.69 9.517a.731.731 0 1 1 1.034-1.034l2.192 2.191 4.9-4.9a.731.731 0 0 1 1.033 0Z",
            fill: "#fff"
          })));

          function uh() {
            return uh = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, uh.apply(this, arguments)
          }
          var hh, ph = e => Te("svg", uh({
            width: 18,
            height: 18,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), ah || (ah = Te("rect", {
            width: 18,
            height: 18,
            rx: 4,
            fill: "#fff"
          })), sh || (sh = Te("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M13.85 5.775a.731.731 0 0 1 0 1.034l-5.416 5.417a.731.731 0 0 1-1.034 0L4.69 9.517a.731.731 0 1 1 1.034-1.034l2.192 2.191 4.9-4.9a.731.731 0 0 1 1.033 0Z",
            fill: "#fff"
          })), lh || (lh = Te("rect", {
            x: .5,
            y: .5,
            width: 17,
            height: 17,
            rx: 3.5,
            stroke: "#333",
            strokeOpacity: .12
          })));

          function dh() {
            return dh = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, dh.apply(this, arguments)
          }
          var fh = e => Te("svg", dh({
              xmlns: "http://www.w3.org/2000/svg",
              width: 18,
              height: 18,
              fill: "none"
            }, e), hh || (hh = Te("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M2.352 1.023a1.33 1.33 0 0 0-1.33 1.33v13.295c0 .734.596 1.33 1.33 1.33h13.296a1.33 1.33 0 0 0 1.33-1.33V2.352a1.33 1.33 0 0 0-1.33-1.33H2.352Zm4.432 3.102c.975 0 1.773.798 1.773 1.773 0 .975-.798 1.772-1.773 1.772a1.778 1.778 0 0 1-1.773-1.772c0-.975.798-1.773 1.773-1.773Zm7.977 11.08H3.236a.439.439 0 0 1-.355-.7l3.15-3.591a.442.442 0 0 1 .638-.01l1.445 1.641 2.712-4.237a.443.443 0 0 1 .744.017l3.58 6.215a.45.45 0 0 1-.39.665Z",
              fill: "#BCBCBC"
            }))),
            gh = "Checkbox-module_checkbox_img__wHiW3",
            mh = "Checkbox-module_checkbox_img_default__S0ISH",
            vh = "Checkbox-module_checkbox_row__MJZge",
            _h = "Checkbox-module_label_checked__YpN49";
          c(
          ".Checkbox-module_checkbox_img__wHiW3{border-radius:3px;height:52px!important;margin-left:8px;width:52px}.Checkbox-module_checkbox_img_default__S0ISH{align-items:center;background-color:#f5f5f5;border-radius:3px;display:flex;height:52px!important;justify-content:center;margin-left:8px;width:52px}.Checkbox-module_checkbox_row__MJZge{align-items:stretch!important;display:flex!important;flex-wrap:wrap!important;gap:12px!important;margin-left:0!important;width:100%!important}.Checkbox-module_checkbox_row__MJZge>label{background:#fff!important;border:1px solid #e6e6e6!important;border-radius:6px!important;box-sizing:border-box!important;display:flex!important;flex-direction:column!important;flex-wrap:wrap!important;margin-bottom:0!important;min-height:125px!important;padding:8px 8px 10px!important;width:118px!important}.Checkbox-module_checkbox_row__MJZge>.Checkbox-module_label_checked__YpN49{background:#fff!important;border:1px solid #333!important;border-radius:6px!important}.Checkbox-module_checkbox_row__MJZge>label *{margin:0!important}.Checkbox-module_checkbox_row__MJZge>label>svg{margin-bottom:8px!important}.Checkbox-module_checkbox_row__MJZge>label>span{margin-top:5px!important}.Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img__wHiW3,.Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img_default__S0ISH{height:66px!important;object-fit:contain;width:66px!important}@media (max-width:959px){.Checkbox-module_checkbox_row__MJZge>label{min-height:111px!important;width:106px!important}.Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img__wHiW3,.Checkbox-module_checkbox_row__MJZge .Checkbox-module_checkbox_img_default__S0ISH{height:52px!important;object-fit:contain;width:52px!important}}");
          var bh = {
              unchecked: ih,
              checked: ch,
              disabled: ph
            },
            yh = Rt((e => {
              var {
                optionData: t,
                control: n,
                defaultValue: r = [],
                fieldName: i,
                propertyName: o,
                name: a,
                required: s,
                help: l,
                options: c,
                multiple: u,
                visible: h
              } = e, {
                min: p = 0,
                max: d = Number.MAX_SAFE_INTEGER
              } = u || {}, {
                formatMessage: f
              } = vo(), {
                field: {
                  onChange: g,
                  onBlur: m,
                  value: v,
                  ref: _
                }
              } = ls({
                control: n,
                name: i,
                rules: {
                  validate: {
                    min: e => !u || !(null != e && e.length) || (null == e ? void 0 : e.length) >= p || jl(p),
                    required: e => !s || (null == e ? void 0 : e.length) >= 1 || f({
                      id: "required_tip"
                    })
                  }
                },
                defaultValue: r
              }), {
                toggleOption: b
              } = uu({
                value: v,
                multiple: u,
                onChange: g
              }), y = v.join(",");
              return zl(Pe, {
                children: h && zl(lu, {
                  optionData: t,
                  name: i,
                  label: a,
                  help: l,
                  control: n,
                  children: [zl("div", {
                    ref: _,
                    tabIndex: "0",
                    onBlur: m,
                    className: Rl("pk-block pk--mt-0.5 pk--mb-1.5 pk--mx-4", "row" === (null == t ? void 0 : t.checkbox_direction) ? vh : ""),
                    children: c.map((e => {
                      var {
                        label: n
                      } = e, r = null == v ? void 0 : v.includes(n), i = !r && u && v.length >= d, o = bh[i ? "disabled" : r ? "checked" : "unchecked"];
                      return zl("label", {
                        onClick: () => b({
                          value: n,
                          checked: !r
                        }),
                        className: Rl("pk-flex pk-items-center pk-py-1.5 pk-cursor-pointer pk-px-4 !pk-mb-0", r ? _h : ""),
                        children: [zl(o, {
                          style: {
                            marginRight: "4px"
                          },
                          className: "pk-flex-none pk-self-center"
                        }), null != e && e.image_url ? zl("img", {
                          className: gh,
                          src: e.image_url
                        }) : "row" === (null == t ? void 0 : t.checkbox_direction) ? zl("div", {
                          className: mh,
                          children: zl(fh, {})
                        }) : null, zl("span", {
                          style: {
                            hyphens: "auto",
                            wordBreak: "break-word"
                          },
                          dangerouslySetInnerHTML: {
                            __html: n
                          },
                          className: Rl("pk-ml-2 pk-text-sm pk-leading-5 pk-break-words pk-min-w-0 pk-flex-1", {
                            "pk-text-[#d2d5d8]": i
                          })
                        })]
                      }, n)
                    }))
                  }), zl("input", {
                    type: "hidden",
                    name: v.length > 0 ? "properties[".concat(o, "]") : "",
                    value: y || ""
                  })]
                })
              })
            }));

          function wh() {
            return wh = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, wh.apply(this, arguments)
          }

          function xh(e, t) {
            if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
          }

          function kh(e) {
            return kh = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
              return typeof e
            } : function(e) {
              return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
            }, kh(e)
          }

          function Ch(e) {
            var t = function(e, t) {
              if ("object" !== kh(e) || null === e) return e;
              var n = e[Symbol.toPrimitive];
              if (void 0 !== n) {
                var r = n.call(e, t || "default");
                if ("object" !== kh(r)) return r;
                throw new TypeError("@@toPrimitive must return a primitive value.")
              }
              return ("string" === t ? String : Number)(e)
            }(e, "string");
            return "symbol" === kh(t) ? t : String(t)
          }

          function Sh(e, t) {
            for (var n = 0; n < t.length; n++) {
              var r = t[n];
              r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, Ch(r.key), r)
            }
          }

          function Eh(e, t, n) {
            return t && Sh(e.prototype, t), n && Sh(e, n), Object.defineProperty(e, "prototype", {
              writable: !1
            }), e
          }

          function Th(e, t) {
            return Th = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {
              return e.__proto__ = t, e
            }, Th(e, t)
          }

          function Oh(e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
              constructor: {
                value: e,
                writable: !0,
                configurable: !0
              }
            }), Object.defineProperty(e, "prototype", {
              writable: !1
            }), t && Th(e, t)
          }

          function Ah(e) {
            return Ah = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {
              return e.__proto__ || Object.getPrototypeOf(e)
            }, Ah(e)
          }

          function Ph(e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
          }

          function Mh(e) {
            var t = function() {
              if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
              if (Reflect.construct.sham) return !1;
              if ("function" == typeof Proxy) return !0;
              try {
                return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {}))), !0
              } catch (e) {
                return !1
              }
            }();
            return function() {
              var n, r = Ah(e);
              if (t) {
                var i = Ah(this).constructor;
                n = Reflect.construct(r, arguments, i)
              } else n = r.apply(this, arguments);
              return function(e, t) {
                if (t && ("object" === kh(t) || "function" == typeof t)) return t;
                if (void 0 !== t) throw new TypeError("Derived constructors may only return object or undefined");
                return Ph(e)
              }(this, n)
            }
          }

          function Dh(e, t, n) {
            return (t = Ch(t)) in e ? Object.defineProperty(e, t, {
              value: n,
              enumerable: !0,
              configurable: !0,
              writable: !0
            }) : e[t] = n, e
          }

          function Ih(e, t) {
            if (null == e) return {};
            var n, r, i = function(e, t) {
              if (null == e) return {};
              var n, r, i = {},
                o = Object.keys(e);
              for (r = 0; r < o.length; r++) n = o[r], t.indexOf(n) >= 0 || (i[n] = e[n]);
              return i
            }(e, t);
            if (Object.getOwnPropertySymbols) {
              var o = Object.getOwnPropertySymbols(e);
              for (r = 0; r < o.length; r++) n = o[r], t.indexOf(n) >= 0 || Object.prototype.propertyIsEnumerable.call(e, n) && (i[n] = e[n])
            }
            return i
          }

          function Nh() {
            Nh = function() {
              return e
            };
            var e = {},
              t = Object.prototype,
              n = t.hasOwnProperty,
              r = Object.defineProperty || function(e, t, n) {
                e[t] = n.value
              },
              i = "function" == typeof Symbol ? Symbol : {},
              o = i.iterator || "@@iterator",
              a = i.asyncIterator || "@@asyncIterator",
              s = i.toStringTag || "@@toStringTag";

            function l(e, t, n) {
              return Object.defineProperty(e, t, {
                value: n,
                enumerable: !0,
                configurable: !0,
                writable: !0
              }), e[t]
            }
            try {
              l({}, "")
            } catch (e) {
              l = function(e, t, n) {
                return e[t] = n
              }
            }

            function c(e, t, n, i) {
              var o = t && t.prototype instanceof p ? t : p,
                a = Object.create(o.prototype),
                s = new S(i || []);
              return r(a, "_invoke", {
                value: w(e, n, s)
              }), a
            }

            function u(e, t, n) {
              try {
                return {
                  type: "normal",
                  arg: e.call(t, n)
                }
              } catch (e) {
                return {
                  type: "throw",
                  arg: e
                }
              }
            }
            e.wrap = c;
            var h = {};

            function p() {}

            function d() {}

            function f() {}
            var g = {};
            l(g, o, (function() {
              return this
            }));
            var m = Object.getPrototypeOf,
              v = m && m(m(E([])));
            v && v !== t && n.call(v, o) && (g = v);
            var _ = f.prototype = p.prototype = Object.create(g);

            function b(e) {
              ["next", "throw", "return"].forEach((function(t) {
                l(e, t, (function(e) {
                  return this._invoke(t, e)
                }))
              }))
            }

            function y(e, t) {
              function i(r, o, a, s) {
                var l = u(e[r], e, o);
                if ("throw" !== l.type) {
                  var c = l.arg,
                    h = c.value;
                  return h && "object" == kh(h) && n.call(h, "__await") ? t.resolve(h.__await).then((function(e) {
                    i("next", e, a, s)
                  }), (function(e) {
                    i("throw", e, a, s)
                  })) : t.resolve(h).then((function(e) {
                    c.value = e, a(c)
                  }), (function(e) {
                    return i("throw", e, a, s)
                  }))
                }
                s(l.arg)
              }
              var o;
              r(this, "_invoke", {
                value: function(e, n) {
                  function r() {
                    return new t((function(t, r) {
                      i(e, n, t, r)
                    }))
                  }
                  return o = o ? o.then(r, r) : r()
                }
              })
            }

            function w(e, t, n) {
              var r = "suspendedStart";
              return function(i, o) {
                if ("executing" === r) throw new Error("Generator is already running");
                if ("completed" === r) {
                  if ("throw" === i) throw o;
                  return T()
                }
                for (n.method = i, n.arg = o;;) {
                  var a = n.delegate;
                  if (a) {
                    var s = x(a, n);
                    if (s) {
                      if (s === h) continue;
                      return s
                    }
                  }
                  if ("next" === n.method) n.sent = n._sent = n.arg;
                  else if ("throw" === n.method) {
                    if ("suspendedStart" === r) throw r = "completed", n.arg;
                    n.dispatchException(n.arg)
                  } else "return" === n.method && n.abrupt("return", n.arg);
                  r = "executing";
                  var l = u(e, t, n);
                  if ("normal" === l.type) {
                    if (r = n.done ? "completed" : "suspendedYield", l.arg === h) continue;
                    return {
                      value: l.arg,
                      done: n.done
                    }
                  }
                  "throw" === l.type && (r = "completed", n.method = "throw", n.arg = l.arg)
                }
              }
            }

            function x(e, t) {
              var n = t.method,
                r = e.iterator[n];
              if (void 0 === r) return t.delegate = null, "throw" === n && e.iterator.return && (t.method = "return", t.arg = void 0, x(e, t), "throw" === t.method) || "return" !== n && (t.method = "throw", t.arg = new TypeError(
                "The iterator does not provide a '" + n + "' method")), h;
              var i = u(r, e.iterator, t.arg);
              if ("throw" === i.type) return t.method = "throw", t.arg = i.arg, t.delegate = null, h;
              var o = i.arg;
              return o ? o.done ? (t[e.resultName] = o.value, t.next = e.nextLoc, "return" !== t.method && (t.method = "next", t.arg = void 0), t.delegate = null, h) : o : (t.method = "throw", t.arg = new TypeError(
                "iterator result is not an object"), t.delegate = null, h)
            }

            function k(e) {
              var t = {
                tryLoc: e[0]
              };
              1 in e && (t.catchLoc = e[1]), 2 in e && (t.finallyLoc = e[2], t.afterLoc = e[3]), this.tryEntries.push(t)
            }

            function C(e) {
              var t = e.completion || {};
              t.type = "normal", delete t.arg, e.completion = t
            }

            function S(e) {
              this.tryEntries = [{
                tryLoc: "root"
              }], e.forEach(k, this), this.reset(!0)
            }

            function E(e) {
              if (e) {
                var t = e[o];
                if (t) return t.call(e);
                if ("function" == typeof e.next) return e;
                if (!isNaN(e.length)) {
                  var r = -1,
                    i = function t() {
                      for (; ++r < e.length;)
                        if (n.call(e, r)) return t.value = e[r], t.done = !1, t;
                      return t.value = void 0, t.done = !0, t
                    };
                  return i.next = i
                }
              }
              return {
                next: T
              }
            }

            function T() {
              return {
                value: void 0,
                done: !0
              }
            }
            return d.prototype = f, r(_, "constructor", {
              value: f,
              configurable: !0
            }), r(f, "constructor", {
              value: d,
              configurable: !0
            }), d.displayName = l(f, s, "GeneratorFunction"), e.isGeneratorFunction = function(e) {
              var t = "function" == typeof e && e.constructor;
              return !!t && (t === d || "GeneratorFunction" === (t.displayName || t.name))
            }, e.mark = function(e) {
              return Object.setPrototypeOf ? Object.setPrototypeOf(e, f) : (e.__proto__ = f, l(e, s, "GeneratorFunction")), e.prototype = Object.create(_), e
            }, e.awrap = function(e) {
              return {
                __await: e
              }
            }, b(y.prototype), l(y.prototype, a, (function() {
              return this
            })), e.AsyncIterator = y, e.async = function(t, n, r, i, o) {
              void 0 === o && (o = Promise);
              var a = new y(c(t, n, r, i), o);
              return e.isGeneratorFunction(n) ? a : a.next().then((function(e) {
                return e.done ? e.value : a.next()
              }))
            }, b(_), l(_, s, "Generator"), l(_, o, (function() {
              return this
            })), l(_, "toString", (function() {
              return "[object Generator]"
            })), e.keys = function(e) {
              var t = Object(e),
                n = [];
              for (var r in t) n.push(r);
              return n.reverse(),
                function e() {
                  for (; n.length;) {
                    var r = n.pop();
                    if (r in t) return e.value = r, e.done = !1, e
                  }
                  return e.done = !0, e
                }
            }, e.values = E, S.prototype = {
              constructor: S,
              reset: function(e) {
                if (this.prev = 0, this.next = 0, this.sent = this._sent = void 0, this.done = !1, this.delegate = null, this.method = "next", this.arg = void 0, this.tryEntries.forEach(C), !e)
                  for (var t in this) "t" === t.charAt(0) && n.call(this, t) && !isNaN(+t.slice(1)) && (this[t] = void 0)
              },
              stop: function() {
                this.done = !0;
                var e = this.tryEntries[0].completion;
                if ("throw" === e.type) throw e.arg;
                return this.rval
              },
              dispatchException: function(e) {
                if (this.done) throw e;
                var t = this;

                function r(n, r) {
                  return a.type = "throw", a.arg = e, t.next = n, r && (t.method = "next", t.arg = void 0), !!r
                }
                for (var i = this.tryEntries.length - 1; i >= 0; --i) {
                  var o = this.tryEntries[i],
                    a = o.completion;
                  if ("root" === o.tryLoc) return r("end");
                  if (o.tryLoc <= this.prev) {
                    var s = n.call(o, "catchLoc"),
                      l = n.call(o, "finallyLoc");
                    if (s && l) {
                      if (this.prev < o.catchLoc) return r(o.catchLoc, !0);
                      if (this.prev < o.finallyLoc) return r(o.finallyLoc)
                    } else if (s) {
                      if (this.prev < o.catchLoc) return r(o.catchLoc, !0)
                    } else {
                      if (!l) throw new Error("try statement without catch or finally");
                      if (this.prev < o.finallyLoc) return r(o.finallyLoc)
                    }
                  }
                }
              },
              abrupt: function(e, t) {
                for (var r = this.tryEntries.length - 1; r >= 0; --r) {
                  var i = this.tryEntries[r];
                  if (i.tryLoc <= this.prev && n.call(i, "finallyLoc") && this.prev < i.finallyLoc) {
                    var o = i;
                    break
                  }
                }
                o && ("break" === e || "continue" === e) && o.tryLoc <= t && t <= o.finallyLoc && (o = null);
                var a = o ? o.completion : {};
                return a.type = e, a.arg = t, o ? (this.method = "next", this.next = o.finallyLoc, h) : this.complete(a)
              },
              complete: function(e, t) {
                if ("throw" === e.type) throw e.arg;
                return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && t && (this.next = t), h
              },
              finish: function(e) {
                for (var t = this.tryEntries.length - 1; t >= 0; --t) {
                  var n = this.tryEntries[t];
                  if (n.finallyLoc === e) return this.complete(n.completion, n.afterLoc), C(n), h
                }
              },
              catch: function(e) {
                for (var t = this.tryEntries.length - 1; t >= 0; --t) {
                  var n = this.tryEntries[t];
                  if (n.tryLoc === e) {
                    var r = n.completion;
                    if ("throw" === r.type) {
                      var i = r.arg;
                      C(n)
                    }
                    return i
                  }
                }
                throw new Error("illegal catch attempt")
              },
              delegateYield: function(e, t, n) {
                return this.delegate = {
                  iterator: E(e),
                  resultName: t,
                  nextLoc: n
                }, "next" === this.method && (this.arg = void 0), h
              }
            }, e
          }

          function Rh(e, t, n, r, i, o, a) {
            try {
              var s = e[o](a),
                l = s.value
            } catch (e) {
              return void n(e)
            }
            s.done ? t(l) : Promise.resolve(l).then(r, i)
          }

          function jh(e) {
            return function() {
              var t = this,
                n = arguments;
              return new Promise((function(r, i) {
                var o = e.apply(t, n);

                function a(e) {
                  Rh(o, r, i, a, s, "next", e)
                }

                function s(e) {
                  Rh(o, r, i, a, s, "throw", e)
                }
                a(void 0)
              }))
            }
          }

          function Lh(e, t) {
            (null == t || t > e.length) && (t = e.length);
            for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n];
            return r
          }

          function Fh(e, t) {
            if (e) {
              if ("string" == typeof e) return Lh(e, t);
              var n = Object.prototype.toString.call(e).slice(8, -1);
              return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? Lh(e, t) : void 0
            }
          }

          function Bh(e) {
            return function(e) {
              if (Array.isArray(e)) return Lh(e)
            }(e) || function(e) {
              if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"]) return Array.from(e)
            }(e) || Fh(e) || function() {
              throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
            }()
          }

          function zh(e, t) {
            var n = Object.keys(e);
            if (Object.getOwnPropertySymbols) {
              var r = Object.getOwnPropertySymbols(e);
              t && (r = r.filter((function(t) {
                return Object.getOwnPropertyDescriptor(e, t).enumerable
              }))), n.push.apply(n, r)
            }
            return n
          }

          function Hh(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = null != arguments[t] ? arguments[t] : {};
              t % 2 ? zh(Object(n), !0).forEach((function(t) {
                Dh(e, t, n[t])
              })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : zh(Object(n)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
              }))
            }
            return e
          }
          var Uh = "".concat(
              "accept acceptCharset accessKey action allowFullScreen allowTransparency\n    alt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\n    charSet checked classID className colSpan cols content contentEditable contextMenu\n    controls coords crossOrigin data dateTime default defer dir disabled download draggable\n    encType form formAction formEncType formMethod formNoValidate formTarget frameBorder\n    headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\n    is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\n    mediaGroup method min minLength multiple muted name noValidate nonce open\n    optimum pattern placeholder poster preload radioGroup readOnly rel required\n    reversed role rowSpan rows sandbox scope scoped scrolling seamless selected\n    shape size sizes span spellCheck src srcDoc srcLang srcSet start step style\n    summary tabIndex target title type useMap value width wmode wrap",
              " ").concat(
              "onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\n    onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\n    onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\n    onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\n    onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\n    onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\n    onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError"
              ).split(/[\s\n]+/),
            Wh = "aria-",
            Vh = "data-";

          function Xh(e, t) {
            return 0 === e.indexOf(t)
          }

          function Gh(e) {
            var t, n = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
            t = !1 === n ? {
              aria: !0,
              data: !0,
              attr: !0
            } : !0 === n ? {
              aria: !0
            } : Hh({}, n);
            var r = {};
            return Object.keys(e).forEach((function(n) {
              (t.aria && ("role" === n || Xh(n, Wh)) || t.data && Xh(n, Vh) || t.attr && Uh.includes(n)) && (r[n] = e[n])
            })), r
          }

          function Yh(e) {
            var t = e.responseText || e.response;
            if (!t) return t;
            try {
              return JSON.parse(t)
            } catch (e) {
              return t
            }
          }

          function qh(e) {
            var t = new XMLHttpRequest;
            e.onProgress && t.upload && (t.upload.onprogress = function(t) {
              t.total > 0 && (t.percent = t.loaded / t.total * 100), e.onProgress(t)
            });
            var n = new FormData;
            e.data && Object.keys(e.data).forEach((function(t) {
              var r = e.data[t];
              Array.isArray(r) ? r.forEach((function(e) {
                n.append("".concat(t, "[]"), e)
              })) : n.append(t, r)
            })), e.file instanceof Blob ? n.append(e.filename, e.file, e.file.name) : n.append(e.filename, e.file), t.onerror = function(t) {
              e.onError(t)
            }, t.onload = function() {
              return t.status < 200 || t.status >= 300 ? e.onError(function(e, t) {
                var n = "cannot ".concat(e.method, " ").concat(e.action, " ").concat(t.status, "'"),
                  r = new Error(n);
                return r.status = t.status, r.method = e.method, r.url = e.action, r
              }(e, t), Yh(t)) : e.onSuccess(Yh(t), t)
            }, t.open(e.method, e.action, !0), e.withCredentials && "withCredentials" in t && (t.withCredentials = !0);
            var r = e.headers || {};
            return null !== r["X-Requested-With"] && t.setRequestHeader("X-Requested-With", "XMLHttpRequest"), Object.keys(r).forEach((function(e) {
              null !== r[e] && t.setRequestHeader(e, r[e])
            })), t.send(n), {
              abort: function() {
                t.abort()
              }
            }
          }
          var Kh = +new Date,
            $h = 0;

          function Zh() {
            return "rc-upload-".concat(Kh, "-").concat(++$h)
          }
          var Jh = {};

          function Qh(e, t) {}

          function ep(e, t) {
            ! function(e, t, n) {
              t || Jh[n] || (e(!1, n), Jh[n] = !0)
            }(Qh, e, t)
          }
          var tp = function(e, t) {
            if (e && t) {
              var n = Array.isArray(t) ? t : t.split(","),
                r = e.name || "",
                i = e.type || "",
                o = i.replace(/\/.*$/, "");
              return n.some((function(e) {
                var t = e.trim();
                if (/^\*(\/\*)?$/.test(e)) return !0;
                if ("." === t.charAt(0)) {
                  var n = r.toLowerCase(),
                    a = t.toLowerCase(),
                    s = [a];
                  return ".jpg" !== a && ".jpeg" !== a || (s = [".jpg", ".jpeg"]), s.some((function(e) {
                    return n.endsWith(e)
                  }))
                }
                return /\/\*$/.test(t) ? o === t.replace(/\/.*$/, "") : i === t || !!/^\w+$/.test(t) && (ep(!1, "Upload takes an invalidate 'accept' type '".concat(t, "'.Skip for check.")), !0)
              }))
            }
            return !0
          };
          var np = function(e, t, n) {
              var r = function e(r, i) {
                r.path = i || "", r.isFile ? r.file((function(e) {
                  n(e) && (r.fullPath && !e.webkitRelativePath && (Object.defineProperties(e, {
                    webkitRelativePath: {
                      writable: !0
                    }
                  }), e.webkitRelativePath = r.fullPath.replace(/^\//, ""), Object.defineProperties(e, {
                    webkitRelativePath: {
                      writable: !1
                    }
                  })), t([e]))
                })) : r.isDirectory && function(e, t) {
                  var n = e.createReader(),
                    r = [];
                  ! function e() {
                    n.readEntries((function(n) {
                      var i = Array.prototype.slice.apply(n);
                      r = r.concat(i), i.length ? e() : t(r)
                    }))
                  }()
                }(r, (function(t) {
                  t.forEach((function(t) {
                    e(t, "".concat(i).concat(r.name, "/"))
                  }))
                }))
              };
              e.forEach((function(e) {
                r(e.webkitGetAsEntry())
              }))
            },
            rp = ["component", "prefixCls", "className", "disabled", "id", "style", "multiple", "accept", "capture", "children", "directory", "openFileDialogOnClick", "onMouseEnter", "onMouseLeave"],
            ip = function(e) {
              Oh(n, e);
              var t = Mh(n);

              function n() {
                var e;
                xh(this, n);
                for (var r = arguments.length, i = new Array(r), o = 0; o < r; o++) i[o] = arguments[o];
                return (e = t.call.apply(t, [this].concat(i))).state = {
                  uid: Zh()
                }, e.reqs = {}, e.fileInput = void 0, e._isMounted = void 0, e.onChange = function(t) {
                  var n = e.props,
                    r = n.accept,
                    i = n.directory,
                    o = Bh(t.target.files).filter((function(e) {
                      return !i || tp(e, r)
                    }));
                  e.uploadFiles(o), e.reset()
                }, e.onClick = function(t) {
                  var n = e.fileInput;
                  if (n) {
                    var r = e.props,
                      i = r.children,
                      o = r.onClick;
                    if (i && "button" === i.type) {
                      var a = n.parentNode;
                      a.focus(), a.querySelector("button").blur()
                    }
                    n.click(), o && o(t)
                  }
                }, e.onKeyDown = function(t) {
                  "Enter" === t.key && e.onClick(t)
                }, e.onFileDrop = function(t) {
                  var n = e.props.multiple;
                  if (t.preventDefault(), "dragover" !== t.type)
                    if (e.props.directory) np(Array.prototype.slice.call(t.dataTransfer.items), e.uploadFiles, (function(t) {
                      return tp(t, e.props.accept)
                    }));
                    else {
                      var r = Bh(t.dataTransfer.files).filter((function(t) {
                        return tp(t, e.props.accept)
                      }));
                      !1 === n && (r = r.slice(0, 1)), e.uploadFiles(r)
                    }
                }, e.uploadFiles = function(t) {
                  var n = Bh(t),
                    r = n.map((function(t) {
                      return t.uid = Zh(), e.processFile(t, n)
                    }));
                  Promise.all(r).then((function(t) {
                    var n = e.props.onBatchStart;
                    null == n || n(t.map((function(e) {
                      return {
                        file: e.origin,
                        parsedFile: e.parsedFile
                      }
                    }))), t.filter((function(e) {
                      return null !== e.parsedFile
                    })).forEach((function(t) {
                      e.post(t)
                    }))
                  }))
                }, e.processFile = function() {
                  var t = jh(Nh().mark((function t(n, r) {
                    var i, o, a, s, l, c, u, h, p;
                    return Nh().wrap((function(t) {
                      for (;;) switch (t.prev = t.next) {
                        case 0:
                          if (i = e.props.beforeUpload, o = n, !i) {
                            t.next = 14;
                            break
                          }
                          return t.prev = 3, t.next = 6, i(n, r);
                        case 6:
                          o = t.sent, t.next = 12;
                          break;
                        case 9:
                          t.prev = 9, t.t0 = t.catch(3), o = !1;
                        case 12:
                          if (!1 !== o) {
                            t.next = 14;
                            break
                          }
                          return t.abrupt("return", {
                            origin: n,
                            parsedFile: null,
                            action: null,
                            data: null
                          });
                        case 14:
                          if ("function" != typeof(a = e.props.action)) {
                            t.next = 21;
                            break
                          }
                          return t.next = 18, a(n);
                        case 18:
                          s = t.sent, t.next = 22;
                          break;
                        case 21:
                          s = a;
                        case 22:
                          if ("function" != typeof(l = e.props.data)) {
                            t.next = 29;
                            break
                          }
                          return t.next = 26, l(n);
                        case 26:
                          c = t.sent, t.next = 30;
                          break;
                        case 29:
                          c = l;
                        case 30:
                          return u = "object" !== kh(o) && "string" != typeof o || !o ? n : o, h = u instanceof File ? u : new File([u], n.name, {
                            type: n.type
                          }), (p = h).uid = n.uid, t.abrupt("return", {
                            origin: n,
                            data: c,
                            parsedFile: p,
                            action: s
                          });
                        case 35:
                        case "end":
                          return t.stop()
                      }
                    }), t, null, [
                      [3, 9]
                    ])
                  })));
                  return function(e, n) {
                    return t.apply(this, arguments)
                  }
                }(), e.saveFileInput = function(t) {
                  e.fileInput = t
                }, e
              }
              return Eh(n, [{
                key: "componentDidMount",
                value: function() {
                  this._isMounted = !0
                }
              }, {
                key: "componentWillUnmount",
                value: function() {
                  this._isMounted = !1, this.abort()
                }
              }, {
                key: "post",
                value: function(e) {
                  var t = this,
                    n = e.data,
                    r = e.origin,
                    i = e.action,
                    o = e.parsedFile;
                  if (this._isMounted) {
                    var a = this.props,
                      s = a.onStart,
                      l = a.customRequest,
                      c = a.name,
                      u = a.headers,
                      h = a.withCredentials,
                      p = a.method,
                      d = r.uid,
                      f = l || qh,
                      g = {
                        action: i,
                        filename: c,
                        data: n,
                        file: o,
                        headers: u,
                        withCredentials: h,
                        method: p || "post",
                        onProgress: function(e) {
                          var n = t.props.onProgress;
                          null == n || n(e, o)
                        },
                        onSuccess: function(e, n) {
                          var r = t.props.onSuccess;
                          null == r || r(e, o, n), delete t.reqs[d]
                        },
                        onError: function(e, n) {
                          var r = t.props.onError;
                          null == r || r(e, n, o), delete t.reqs[d]
                        }
                      };
                    s(r), this.reqs[d] = f(g)
                  }
                }
              }, {
                key: "reset",
                value: function() {
                  this.setState({
                    uid: Zh()
                  })
                }
              }, {
                key: "abort",
                value: function(e) {
                  var t = this.reqs;
                  if (e) {
                    var n = e.uid ? e.uid : e;
                    t[n] && t[n].abort && t[n].abort(), delete t[n]
                  } else Object.keys(t).forEach((function(e) {
                    t[e] && t[e].abort && t[e].abort(), delete t[e]
                  }))
                }
              }, {
                key: "render",
                value: function() {
                  var e, t = this.props,
                    n = t.component,
                    r = t.prefixCls,
                    i = t.className,
                    o = t.disabled,
                    a = t.id,
                    s = t.style,
                    l = t.multiple,
                    c = t.accept,
                    u = t.capture,
                    h = t.children,
                    p = t.directory,
                    d = t.openFileDialogOnClick,
                    f = t.onMouseEnter,
                    g = t.onMouseLeave,
                    m = Ih(t, rp),
                    v = Rl((Dh(e = {}, r, !0), Dh(e, "".concat(r, "-disabled"), o), Dh(e, i, i), e)),
                    _ = p ? {
                      directory: "directory",
                      webkitdirectory: "webkitdirectory"
                    } : {},
                    b = o ? {} : {
                      onClick: d ? this.onClick : function() {},
                      onKeyDown: d ? this.onKeyDown : function() {},
                      onMouseEnter: f,
                      onMouseLeave: g,
                      onDrop: this.onFileDrop,
                      onDragOver: this.onFileDrop,
                      tabIndex: "0"
                    };
                  return Nn.createElement(n, wh({}, b, {
                    className: v,
                    role: "button",
                    style: s
                  }), Nn.createElement("input", wh({}, Gh(m, {
                    aria: !0,
                    data: !0
                  }), {
                    id: a,
                    type: "file",
                    ref: this.saveFileInput,
                    onClick: function(e) {
                      return e.stopPropagation()
                    },
                    key: this.state.uid,
                    style: {
                      display: "none"
                    },
                    accept: c
                  }, _, {
                    multiple: l,
                    onChange: this.onChange
                  }, null != u ? {
                    capture: u
                  } : {})), h)
                }
              }]), n
            }(Me),
            op = ip;

          function ap() {}
          var sp = function(e) {
            Oh(n, e);
            var t = Mh(n);

            function n() {
              var e;
              xh(this, n);
              for (var r = arguments.length, i = new Array(r), o = 0; o < r; o++) i[o] = arguments[o];
              return (e = t.call.apply(t, [this].concat(i))).uploader = void 0, e.saveUploader = function(t) {
                e.uploader = t
              }, e
            }
            return Eh(n, [{
              key: "abort",
              value: function(e) {
                this.uploader.abort(e)
              }
            }, {
              key: "render",
              value: function() {
                return Nn.createElement(op, wh({}, this.props, {
                  ref: this.saveUploader
                }))
              }
            }]), n
          }(Me);
          sp.defaultProps = {
            component: "span",
            prefixCls: "rc-upload",
            data: {},
            headers: {},
            name: "file",
            multipart: !1,
            onStart: ap,
            onError: ap,
            onSuccess: ap,
            multiple: !1,
            beforeUpload: null,
            customRequest: null,
            withCredentials: !1,
            openFileDialogOnClick: !0
          };
          var lp, cp = sp;

          function up() {
            return up = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, up.apply(this, arguments)
          }
          var hp, pp, dp, fp, gp, mp, vp, _p, bp, yp = e => Te("svg", up({
            width: 16,
            height: 16,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), lp || (lp = Te("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M9.429 1.429a1.429 1.429 0 1 0-2.858 0V6.57H1.43a1.429 1.429 0 1 0 0 2.857H6.57v5.143a1.429 1.429 0 1 0 2.858 0V9.428h5.142a1.429 1.429 0 1 0 0-2.857H9.43V1.43Z",
            fill: "#333",
            fillOpacity: .8
          })));

          function wp() {
            return wp = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, wp.apply(this, arguments)
          }
          var xp, kp, Cp = e => Te("svg", wp({
            width: 81,
            height: 80,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), hp || (hp = Te("rect", {
            x: 4.5,
            y: 22.576,
            width: 61.538,
            height: 47.724,
            rx: 4,
            transform: "rotate(-8 4.5 22.576)",
            fill: "#EBECED"
          })), pp || (pp = Te("g", {
            filter: "url(#uploadLargeAdd_svg__a)"
          }, Te("rect", {
            x: 8.256,
            y: 19.391,
            width: 60.308,
            height: 46.769,
            rx: 4,
            fill: "#fff"
          }))), dp || (dp = Te("rect", {
            x: 10.718,
            y: 21.852,
            width: 55.385,
            height: 41.846,
            rx: 3,
            fill: "url(#uploadLargeAdd_svg__b)"
          })), fp || (fp = Te("path", {
            d: "M35.94 63.698H12.563a1.846 1.846 0 0 1-1.846-1.846v-5.754l7.778-7.327a2.462 2.462 0 0 1 3.48.104l13.963 14.823Z",
            fill: "url(#uploadLargeAdd_svg__c)"
          })), gp || (gp = Te("path", {
            d: "M66.102 55.508v6.344c0 1.02-.826 1.847-1.846 1.847H20.807l18.36-23.216a4.923 4.923 0 0 1 6.914-.808l20.021 15.833Z",
            fill: "url(#uploadLargeAdd_svg__d)"
          })), mp || (mp = Te("circle", {
            cx: 18.718,
            cy: 30.468,
            r: 3.692,
            fill: "#D3D3D3"
          })), vp || (vp = Te("circle", {
            cx: 67.333,
            cy: 19.391,
            r: 9.231,
            fill: "#333",
            fillOpacity: .9
          })), _p || (_p = Te("path", {
            d: "M70.176 18.683H68.04v-2.135a.707.707 0 1 0-1.414 0v2.135H64.49a.707.707 0 1 0 0 1.415h2.136v2.135a.707.707 0 1 0 1.414 0v-2.135h2.136a.707.707 0 1 0 0-1.415Z",
            fill: "#fff"
          })), bp || (bp = Te("defs", null, Te("linearGradient", {
            id: "uploadLargeAdd_svg__b",
            x1: 38.41,
            y1: 21.852,
            x2: 38.41,
            y2: 63.698,
            gradientUnits: "userSpaceOnUse"
          }, Te("stop", {
            stopColor: "#F5F5F5"
          }), Te("stop", {
            offset: 1,
            stopColor: "#F1F1F1"
          }), Te("stop", {
            offset: 1,
            stopColor: "#F1F1F1"
          })), Te("linearGradient", {
            id: "uploadLargeAdd_svg__c",
            x1: 27.096,
            y1: 45.66,
            x2: 27.096,
            y2: 69.852,
            gradientUnits: "userSpaceOnUse"
          }, Te("stop", {
            stopColor: "#E2E2E2"
          }), Te("stop", {
            offset: 1,
            stopColor: "#E1E1E1"
          })), Te("linearGradient", {
            id: "uploadLargeAdd_svg__d",
            x1: 41.695,
            y1: 42.438,
            x2: 41.695,
            y2: 69.792,
            gradientUnits: "userSpaceOnUse"
          }, Te("stop", {
            offset: 0,
            stopColor: "#E5E5E6"
          }), Te("stop", {
            offset: 1,
            stopColor: "#D3D3D3"
          })), Te("filter", {
            id: "uploadLargeAdd_svg__a",
            x: .256,
            y: 15.391,
            width: 76.308,
            height: 62.769,
            filterUnits: "userSpaceOnUse",
            colorInterpolationFilters: "sRGB"
          }, Te("feFlood", {
            floodOpacity: 0,
            result: "BackgroundImageFix"
          }), Te("feColorMatrix", {
            in: "SourceAlpha",
            values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",
            result: "hardAlpha"
          }), Te("feOffset", {
            dy: 4
          }), Te("feGaussianBlur", {
            stdDeviation: 4
          }), Te("feComposite", {
            in2: "hardAlpha",
            operator: "out"
          }), Te("feColorMatrix", {
            values: "0 0 0 0 0.133333 0 0 0 0 0.133333 0 0 0 0 0.133333 0 0 0 0.03 0"
          }), Te("feBlend", {
            in2: "BackgroundImageFix",
            result: "effect1_dropShadow_2338_55382"
          }), Te("feBlend", {
            in: "SourceGraphic",
            in2: "effect1_dropShadow_2338_55382",
            result: "shape"
          })))));

          function Sp() {
            return Sp = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, Sp.apply(this, arguments)
          }
          var Ep, Tp = e => Te("svg", Sp({
              width: 24,
              height: 24,
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg"
            }, e), xp || (xp = Te("rect", {
              width: 24,
              height: 24,
              rx: 12,
              fill: "#E9ECEF"
            })), kp || (kp = Te("path", {
              d: "m8.667 8.667 6.667 6.667M8.667 15.334l6.667-6.667",
              stroke: "#333",
              strokeWidth: 1.6,
              strokeLinecap: "round",
              strokeLinejoin: "round"
            }))),
            Op = Qe({});

          function Ap() {
            return Ap = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, Ap.apply(this, arguments)
          }
          var Pp = e => Te("svg", Ap({
            xmlns: "http://www.w3.org/2000/svg",
            width: 100,
            height: 100,
            xmlSpace: "preserve"
          }, e), Te("circle", {
            fill: "none",
            stroke: "#D2D3D3",
            strokeWidth: 4,
            cx: 50,
            cy: 50,
            r: 21,
            style: {
              opacity: .5
            }
          }), Ep || (Ep = Te("path", {
            fill: "#707070",
            d: "M73 50c0-12.7-10.3-23-23-23S27 37.3 27 50m3.9 0c0-10.5 8.5-19.1 19.1-19.1S69.1 39.5 69.1 50"
          }, Te("animateTransform", {
            attributeName: "transform",
            attributeType: "XML",
            type: "rotate",
            dur: "1s",
            from: "0 50 50",
            to: "360 50 50",
            repeatCount: "indefinite"
          }))));

          function Mp(e, t) {
            return function(e) {
              if (Array.isArray(e)) return e
            }(e) || function(e, t) {
              var n = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
              if (null != n) {
                var r, i, o, a, s = [],
                  l = !0,
                  c = !1;
                try {
                  if (o = (n = n.call(e)).next, 0 === t) {
                    if (Object(n) !== n) return;
                    l = !1
                  } else
                    for (; !(l = (r = o.call(n)).done) && (s.push(r.value), s.length !== t); l = !0);
                } catch (e) {
                  c = !0, i = e
                } finally {
                  try {
                    if (!l && null != n.return && (a = n.return(), Object(a) !== a)) return
                  } finally {
                    if (c) throw i
                  }
                }
                return s
              }
            }(e, t) || Fh(e, t) || function() {
              throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
            }()
          }

          function Dp(e) {
            return e instanceof HTMLElement ? e : e instanceof Nn.Component ? Nn.findDOMNode(e) : null
          }

          function Ip(e, t, n) {
            var r = vt({});
            return "value" in r.current && !n(r.current.condition, t) || (r.current.value = e(), r.current.condition = t), r.current.value
          }

          function Np(e, t) {
            "function" == typeof e ? e(t) : "object" === kh(e) && e && "current" in e && (e.current = t)
          }

          function Rp() {
            for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
            var r = t.filter((function(e) {
              return e
            }));
            return r.length <= 1 ? r[0] : function(e) {
              t.forEach((function(t) {
                Np(t, e)
              }))
            }
          }

          function jp(e) {
            var t, n, r = jn.exports.isMemo(e) ? e.type.type : e.type;
            return !!("function" != typeof r || null !== (t = r.prototype) && void 0 !== t && t.render) && !!("function" != typeof e || null !== (n = e.prototype) && void 0 !== n && n.render)
          }

          function Lp() {
            return !("undefined" == typeof window || !window.document || !window.document.createElement)
          }

          function Fp(e, t) {
            var n = {};
            return n[e.toLowerCase()] = t.toLowerCase(), n["Webkit".concat(e)] = "webkit".concat(t), n["Moz".concat(e)] = "moz".concat(t), n["ms".concat(e)] = "MS".concat(t), n["O".concat(e)] = "o".concat(t.toLowerCase()), n
          }
          var Bp, zp, Hp, Up = (Bp = Lp(), zp = "undefined" != typeof window ? window : {}, Hp = {
              animationend: Fp("Animation", "AnimationEnd"),
              transitionend: Fp("Transition", "TransitionEnd")
            }, Bp && ("AnimationEvent" in zp || delete Hp.animationend.animation, "TransitionEvent" in zp || delete Hp.transitionend.transition), Hp),
            Wp = {};
          if (Lp()) {
            var Vp = document.createElement("div");
            Wp = Vp.style
          }
          var Xp = {};

          function Gp(e) {
            if (Xp[e]) return Xp[e];
            var t = Up[e];
            if (t)
              for (var n = Object.keys(t), r = n.length, i = 0; i < r; i += 1) {
                var o = n[i];
                if (Object.prototype.hasOwnProperty.call(t, o) && o in Wp) return Xp[e] = t[o], Xp[e]
              }
            return ""
          }
          var Yp = Gp("animationend"),
            qp = Gp("transitionend"),
            Kp = !(!Yp || !qp),
            $p = Yp || "animationend",
            Zp = qp || "transitionend";

          function Jp(e, t) {
            if (!e) return null;
            if ("object" === kh(e)) {
              var n = t.replace(/-\w/g, (function(e) {
                return e[1].toUpperCase()
              }));
              return e[n]
            }
            return "".concat(e, "-").concat(t)
          }
          var Qp = "none",
            ed = "appear",
            td = "enter",
            nd = "leave",
            rd = "none",
            id = "prepare",
            od = "start",
            ad = "active",
            sd = "end";

          function ld(e) {
            var t = vt(!1),
              n = Mp(dt(e), 2),
              r = n[0],
              i = n[1];
            return gt((function() {
              return t.current = !1,
                function() {
                  t.current = !0
                }
            }), []), [r, function(e, n) {
              n && t.current || i(e)
            }]
          }
          var cd = function(e) {
              return +setTimeout(e, 16)
            },
            ud = function(e) {
              return clearTimeout(e)
            };
          "undefined" != typeof window && "requestAnimationFrame" in window && (cd = function(e) {
            return window.requestAnimationFrame(e)
          }, ud = function(e) {
            return window.cancelAnimationFrame(e)
          });
          var hd = 0,
            pd = new Map;

          function dd(e) {
            pd.delete(e)
          }
          var fd = function(e) {
            var t = hd += 1;
            return function n(r) {
              if (0 === r) dd(t), e();
              else {
                var i = cd((function() {
                  n(r - 1)
                }));
                pd.set(t, i)
              }
            }(arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1), t
          };
          fd.cancel = function(e) {
            var t = pd.get(e);
            return dd(t), ud(t)
          };
          var gd = fd,
            md = Lp() ? mt : gt,
            vd = [id, od, ad, sd],
            _d = !1,
            bd = !0;

          function yd(e) {
            return e === ad || e === sd
          }
          var wd = function(e, t) {
              var n = Mp(ld(rd), 2),
                r = n[0],
                i = n[1],
                o = function() {
                  var e = vt(null);

                  function t() {
                    gd.cancel(e.current)
                  }
                  return gt((function() {
                    return function() {
                      t()
                    }
                  }), []), [function n(r) {
                    var i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 2;
                    t();
                    var o = gd((function() {
                      i <= 1 ? r({
                        isCanceled: function() {
                          return o !== e.current
                        }
                      }) : n(r, i - 1)
                    }));
                    e.current = o
                  }, t]
                }(),
                a = Mp(o, 2),
                s = a[0],
                l = a[1];
              return md((function() {
                if (r !== rd && r !== sd) {
                  var e = vd.indexOf(r),
                    n = vd[e + 1],
                    o = t(r);
                  o === _d ? i(n, !0) : s((function(e) {
                    function t() {
                      e.isCanceled() || i(n, !0)
                    }!0 === o ? t() : Promise.resolve(o).then(t)
                  }))
                }
              }), [e, r]), gt((function() {
                return function() {
                  l()
                }
              }), []), [function() {
                i(id, !0)
              }, r]
            },
            xd = function(e) {
              var t = vt(),
                n = vt(e);
              n.current = e;
              var r = yt((function(e) {
                n.current(e)
              }), []);

              function i(e) {
                e && (e.removeEventListener(Zp, r), e.removeEventListener($p, r))
              }
              return gt((function() {
                return function() {
                  i(t.current)
                }
              }), []), [function(e) {
                t.current && t.current !== e && i(t.current), e && e !== t.current && (e.addEventListener(Zp, r), e.addEventListener($p, r), t.current = e)
              }, i]
            };
          var kd = function(e) {
              Oh(n, e);
              var t = Mh(n);

              function n() {
                return xh(this, n), t.apply(this, arguments)
              }
              return Eh(n, [{
                key: "render",
                value: function() {
                  return this.props.children
                }
              }]), n
            }(Me),
            Cd = kd;
          var Sd = function(e) {
              var t = e;

              function n(e) {
                return !(!e.motionName || !t)
              }
              "object" === kh(e) && (t = e.transitionSupport);
              var r = Ft((function(e, t) {
                var r = e.visible,
                  i = void 0 === r || r,
                  o = e.removeOnLeave,
                  a = void 0 === o || o,
                  s = e.forceRender,
                  l = e.children,
                  c = e.motionName,
                  u = e.leavedClassName,
                  h = e.eventProps,
                  p = n(e),
                  d = vt(),
                  f = vt();
                var g = function(e, t, n, r) {
                    var i = r.motionEnter,
                      o = void 0 === i || i,
                      a = r.motionAppear,
                      s = void 0 === a || a,
                      l = r.motionLeave,
                      c = void 0 === l || l,
                      u = r.motionDeadline,
                      h = r.motionLeaveImmediately,
                      p = r.onAppearPrepare,
                      d = r.onEnterPrepare,
                      f = r.onLeavePrepare,
                      g = r.onAppearStart,
                      m = r.onEnterStart,
                      v = r.onLeaveStart,
                      _ = r.onAppearActive,
                      b = r.onEnterActive,
                      y = r.onLeaveActive,
                      w = r.onAppearEnd,
                      x = r.onEnterEnd,
                      k = r.onLeaveEnd,
                      C = r.onVisibleChanged,
                      S = Mp(ld(), 2),
                      E = S[0],
                      T = S[1],
                      O = Mp(ld(Qp), 2),
                      A = O[0],
                      P = O[1],
                      M = Mp(ld(null), 2),
                      D = M[0],
                      I = M[1],
                      N = vt(!1),
                      R = vt(null);

                    function j() {
                      return n()
                    }
                    var L = vt(!1);

                    function F(e) {
                      var t = j();
                      if (!e || e.deadline || e.target === t) {
                        var n, r = L.current;
                        A === ed && r ? n = null == w ? void 0 : w(t, e) : A === td && r ? n = null == x ? void 0 : x(t, e) : A === nd && r && (n = null == k ? void 0 : k(t, e)), A !== Qp && r && !1 !== n && (P(Qp, !0), I(null, !0))
                      }
                    }
                    var B = Mp(xd(F), 1)[0],
                      z = bt((function() {
                        var e, t, n;
                        switch (A) {
                          case ed:
                            return Dh(e = {}, id, p), Dh(e, od, g), Dh(e, ad, _), e;
                          case td:
                            return Dh(t = {}, id, d), Dh(t, od, m), Dh(t, ad, b), t;
                          case nd:
                            return Dh(n = {}, id, f), Dh(n, od, v), Dh(n, ad, y), n;
                          default:
                            return {}
                        }
                      }), [A]),
                      H = Mp(wd(A, (function(e) {
                        if (e === id) {
                          var t = z[id];
                          return t ? t(j()) : _d
                        }
                        var n;
                        return W in z && I((null === (n = z[W]) || void 0 === n ? void 0 : n.call(z, j(), null)) || null), W === ad && (B(j()), u > 0 && (clearTimeout(R.current), R.current = setTimeout((function() {
                          F({
                            deadline: !0
                          })
                        }), u))), bd
                      })), 2),
                      U = H[0],
                      W = H[1],
                      V = yd(W);
                    L.current = V, md((function() {
                      T(t);
                      var n, r = N.current;
                      N.current = !0, e && (!r && t && s && (n = ed), r && t && o && (n = td), (r && !t && c || !r && h && !t && c) && (n = nd), n && (P(n), U()))
                    }), [t]), gt((function() {
                      (A === ed && !s || A === td && !o || A === nd && !c) && P(Qp)
                    }), [s, o, c]), gt((function() {
                      return function() {
                        N.current = !1, clearTimeout(R.current)
                      }
                    }), []);
                    var X = vt(!1);
                    gt((function() {
                      E && (X.current = !0), void 0 !== E && A === Qp && ((X.current || E) && (null == C || C(E)), X.current = !0)
                    }), [E, A]);
                    var G = D;
                    return z[id] && W === od && (G = Hh({
                      transition: "none"
                    }, G)), [A, W, G, null != E ? E : t]
                  }(p, i, (function() {
                    try {
                      return d.current instanceof HTMLElement ? d.current : Dp(f.current)
                    } catch (e) {
                      return null
                    }
                  }), e),
                  m = Mp(g, 4),
                  v = m[0],
                  _ = m[1],
                  b = m[2],
                  y = m[3],
                  w = vt(y);
                y && (w.current = !0);
                var x, k = yt((function(e) {
                    d.current = e, Np(t, e)
                  }), [t]),
                  C = Hh(Hh({}, h), {}, {
                    visible: i
                  });
                if (l)
                  if (v !== Qp && n(e)) {
                    var S, E;
                    _ === id ? E = "prepare" : yd(_) ? E = "active" : _ === od && (E = "start"), x = l(Hh(Hh({}, C), {}, {
                      className: Rl(Jp(c, v), (S = {}, Dh(S, Jp(c, "".concat(v, "-").concat(E)), E), Dh(S, c, "string" == typeof c), S)),
                      style: b
                    }), k)
                  } else x = y ? l(Hh({}, C), k) : !a && w.current && u ? l(Hh(Hh({}, C), {}, {
                    className: u
                  }), k) : s || !a && !u ? l(Hh(Hh({}, C), {}, {
                    style: {
                      display: "none"
                    }
                  }), k) : null;
                else x = null;
                bn(x) && jp(x) && (x.ref || (x = yn(x, {
                  ref: k
                })));
                return Te(Cd, {
                  ref: f
                }, x)
              }));
              return r.displayName = "CSSMotion", r
            }(Kp),
            Ed = "add",
            Td = "keep",
            Od = "remove",
            Ad = "removed";

          function Pd(e) {
            var t;
            return Hh(Hh({}, t = e && "object" === kh(e) && "key" in e ? e : {
              key: e
            }), {}, {
              key: String(t.key)
            })
          }

          function Md() {
            return (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []).map(Pd)
          }
          var Dd = ["component", "children", "onVisibleChanged", "onAllRemoved"],
            Id = ["status"],
            Nd = ["eventProps", "visible", "children", "motionName", "motionAppear", "motionEnter", "motionLeave", "motionLeaveImmediately", "motionDeadline", "removeOnLeave", "leavedClassName", "onAppearStart", "onAppearActive", "onAppearEnd",
              "onEnterStart", "onEnterActive", "onEnterEnd", "onLeaveStart", "onLeaveActive", "onLeaveEnd"
            ];
          var Rd = function(e) {
              var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Sd,
                n = function(e) {
                  Oh(r, e);
                  var n = Mh(r);

                  function r() {
                    var e;
                    xh(this, r);
                    for (var t = arguments.length, i = new Array(t), o = 0; o < t; o++) i[o] = arguments[o];
                    return Dh(Ph(e = n.call.apply(n, [this].concat(i))), "state", {
                      keyEntities: []
                    }), Dh(Ph(e), "removeKey", (function(t) {
                      var n = e.state.keyEntities.map((function(e) {
                        return e.key !== t ? e : Hh(Hh({}, e), {}, {
                          status: Ad
                        })
                      }));
                      return e.setState({
                        keyEntities: n
                      }), n.filter((function(e) {
                        return e.status !== Ad
                      })).length
                    })), e
                  }
                  return Eh(r, [{
                    key: "render",
                    value: function() {
                      var e = this,
                        n = this.state.keyEntities,
                        r = this.props,
                        i = r.component,
                        o = r.children,
                        a = r.onVisibleChanged,
                        s = r.onAllRemoved,
                        l = Ih(r, Dd),
                        c = i || Pe,
                        u = {};
                      return Nd.forEach((function(e) {
                        u[e] = l[e], delete l[e]
                      })), delete l.keys, Te(c, l, n.map((function(n) {
                        var r = n.status,
                          i = Ih(n, Id),
                          l = r === Ed || r === Td;
                        return Te(t, wh({}, u, {
                          key: i.key,
                          visible: l,
                          eventProps: i,
                          onVisibleChanged: function(t) {
                            (null == a || a(t, {
                              key: i.key
                            }), t) || 0 === e.removeKey(i.key) && s && s()
                          }
                        }), o)
                      })))
                    }
                  }], [{
                    key: "getDerivedStateFromProps",
                    value: function(e, t) {
                      var n = e.keys,
                        r = t.keyEntities,
                        i = Md(n),
                        o = function() {
                          var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],
                            t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [],
                            n = [],
                            r = 0,
                            i = t.length,
                            o = Md(e),
                            a = Md(t);
                          o.forEach((function(e) {
                            for (var t = !1, o = r; o < i; o += 1) {
                              var s = a[o];
                              if (s.key === e.key) {
                                r < o && (n = n.concat(a.slice(r, o).map((function(e) {
                                  return Hh(Hh({}, e), {}, {
                                    status: Ed
                                  })
                                }))), r = o), n.push(Hh(Hh({}, s), {}, {
                                  status: Td
                                })), r += 1, t = !0;
                                break
                              }
                            }
                            t || n.push(Hh(Hh({}, e), {}, {
                              status: Od
                            }))
                          })), r < i && (n = n.concat(a.slice(r).map((function(e) {
                            return Hh(Hh({}, e), {}, {
                              status: Ed
                            })
                          }))));
                          var s = {};
                          return n.forEach((function(e) {
                            var t = e.key;
                            s[t] = (s[t] || 0) + 1
                          })), Object.keys(s).filter((function(e) {
                            return s[e] > 1
                          })).forEach((function(e) {
                            (n = n.filter((function(t) {
                              var n = t.key,
                                r = t.status;
                              return n !== e || r !== Od
                            }))).forEach((function(t) {
                              t.key === e && (t.status = Td)
                            }))
                          })), n
                        }(r, i);
                      return {
                        keyEntities: o.filter((function(e) {
                          var t = r.find((function(t) {
                            var n = t.key;
                            return e.key === n
                          }));
                          return !t || t.status !== Ad || e.status !== Od
                        }))
                      }
                    }
                  }]), r
                }(Me);
              return Dh(n, "defaultProps", {
                component: "div"
              }), n
            }(Kp),
            jd = Ft((function(e, t) {
              var n = e.prefixCls,
                r = e.style,
                i = e.className,
                o = e.duration,
                a = void 0 === o ? 4.5 : o,
                s = e.eventKey,
                l = e.content,
                c = e.closable,
                u = e.closeIcon,
                h = void 0 === u ? "x" : u,
                p = e.props,
                d = e.onClick,
                f = e.onNoticeClose,
                g = e.times,
                m = Mp(dt(!1), 2),
                v = m[0],
                _ = m[1],
                b = function() {
                  f(s)
                };
              gt((function() {
                if (!v && a > 0) {
                  var e = setTimeout((function() {
                    b()
                  }), 1e3 * a);
                  return function() {
                    clearTimeout(e)
                  }
                }
              }), [a, v, g]);
              var y = "".concat(n, "-notice");
              return Te("div", wh({}, p, {
                ref: t,
                className: Rl(y, i, Dh({}, "".concat(y, "-closable"), c)),
                style: r,
                onMouseEnter: function() {
                  _(!0)
                },
                onMouseLeave: function() {
                  _(!1)
                },
                onClick: d
              }), Te("div", {
                className: "".concat(y, "-content")
              }, l), c && Te("a", {
                tabIndex: 0,
                className: "".concat(y, "-close"),
                onClick: function(e) {
                  e.preventDefault(), e.stopPropagation(), b()
                }
              }, h))
            })),
            Ld = jd,
            Fd = Ft((function(e, t) {
              var n = e.prefixCls,
                r = void 0 === n ? "rc-notification" : n,
                i = e.container,
                o = e.motion,
                a = e.maxCount,
                s = e.className,
                l = e.style,
                c = e.onAllRemoved,
                u = Mp(dt([]), 2),
                h = u[0],
                p = u[1],
                d = function(e) {
                  var t, n = h.find((function(t) {
                    return t.key === e
                  }));
                  null == n || null === (t = n.onClose) || void 0 === t || t.call(n), p((function(t) {
                    return t.filter((function(t) {
                      return t.key !== e
                    }))
                  }))
                };
              _t(t, (function() {
                return {
                  open: function(e) {
                    p((function(t) {
                      var n, r = Bh(t),
                        i = r.findIndex((function(t) {
                          return t.key === e.key
                        })),
                        o = Hh({}, e);
                      i >= 0 ? (o.times = ((null === (n = t[i]) || void 0 === n ? void 0 : n.times) || 0) + 1, r[i] = o) : (o.times = 0, r.push(o));
                      return a > 0 && r.length > a && (r = r.slice(-a)), r
                    }))
                  },
                  close: function(e) {
                    d(e)
                  },
                  destroy: function() {
                    p([])
                  }
                }
              }));
              var f = Mp(dt({}), 2),
                g = f[0],
                m = f[1];
              gt((function() {
                var e = {};
                h.forEach((function(t) {
                  var n = t.placement,
                    r = void 0 === n ? "topRight" : n;
                  r && (e[r] = e[r] || [], e[r].push(t))
                })), Object.keys(g).forEach((function(t) {
                  e[t] = e[t] || []
                })), m(e)
              }), [h]);
              var v = vt(!1);
              return gt((function() {
                Object.keys(g).length > 0 ? v.current = !0 : v.current && (null == c || c(), v.current = !1)
              }), [g]), i ? Jt(Te(Pe, null, Object.keys(g).map((function(e) {
                var t = g[e].map((function(e) {
                    return {
                      config: e,
                      key: e.key
                    }
                  })),
                  n = "function" == typeof o ? o(e) : o;
                return Te(Rd, wh({
                  key: e,
                  className: Rl(r, "".concat(r, "-").concat(e), null == s ? void 0 : s(e)),
                  style: null == l ? void 0 : l(e),
                  keys: t,
                  motionAppear: !0
                }, n, {
                  onAllRemoved: function() {
                    ! function(e) {
                      m((function(t) {
                        var n = Hh({}, t);
                        return (n[e] || []).length || delete n[e], n
                      }))
                    }(e)
                  }
                }), (function(e, t) {
                  var n = e.config,
                    i = e.className,
                    o = e.style,
                    a = n.key,
                    s = n.times,
                    l = n.className,
                    c = n.style;
                  return Te(Ld, wh({}, n, {
                    ref: t,
                    prefixCls: r,
                    className: Rl(i, l),
                    style: Hh(Hh({}, o), c),
                    times: s,
                    key: a,
                    eventKey: a,
                    onNoticeClose: d
                  }))
                }))
              }))), i) : null
            })),
            Bd = Fd,
            zd = ["getContainer", "motion", "prefixCls", "maxCount", "className", "style", "onAllRemoved"],
            Hd = function() {
              return document.body
            },
            Ud = 0;

          function Wd() {
            var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
              t = e.getContainer,
              n = void 0 === t ? Hd : t,
              r = e.motion,
              i = e.prefixCls,
              o = e.maxCount,
              a = e.className,
              s = e.style,
              l = e.onAllRemoved,
              c = Ih(e, zd),
              u = Mp(dt(), 2),
              h = u[0],
              p = u[1],
              d = vt(),
              f = Te(Bd, {
                container: h,
                ref: d,
                prefixCls: i,
                motion: r,
                maxCount: o,
                className: a,
                style: s,
                onAllRemoved: l
              }),
              g = Mp(dt([]), 2),
              m = g[0],
              v = g[1],
              _ = bt((function() {
                return {
                  open: function(e) {
                    var t = function() {
                      for (var e = {}, t = arguments.length, n = new Array(t), r = 0; r < t; r++) n[r] = arguments[r];
                      return n.forEach((function(t) {
                        t && Object.keys(t).forEach((function(n) {
                          var r = t[n];
                          void 0 !== r && (e[n] = r)
                        }))
                      })), e
                    }(c, e);
                    null !== t.key && void 0 !== t.key || (t.key = "rc-notification-".concat(Ud), Ud += 1), v((function(e) {
                      return [].concat(Bh(e), [{
                        type: "open",
                        config: t
                      }])
                    }))
                  },
                  close: function(e) {
                    v((function(t) {
                      return [].concat(Bh(t), [{
                        type: "close",
                        key: e
                      }])
                    }))
                  },
                  destroy: function() {
                    v((function(e) {
                      return [].concat(Bh(e), [{
                        type: "destroy"
                      }])
                    }))
                  }
                }
              }), []);
            return gt((function() {
              p(n())
            })), gt((function() {
              d.current && m.length && (m.forEach((function(e) {
                switch (e.type) {
                  case "open":
                    d.current.open(e.config);
                    break;
                  case "close":
                    d.current.close(e.key);
                    break;
                  case "destroy":
                    d.current.destroy()
                }
              })), v([]))
            }), [m]), [_, f]
          }
          var Vd = "common-module_flex_center_y__ZWb6u",
            Xd = "common-module_toast__WjP9V",
            Gd = "common-module_app-parakeet-dialog__UWDmu",
            Yd = "common-module_ap-dialog-title__-GIOw",
            qd = "common-module_ap-dialog-body__5yegi",
            Kd = "common-module_app-dialog-footer__qYGkd",
            $d = "common-module_ap-button__RhZvx",
            Zd = "common-module_app-parakeet-dialog--wrapper__YIL3t",
            Jd = "common-module_ap-button-no__f3AQV",
            Qd = "common-module_ap-button-ok__-Dglc";
          c(
          ".common-module_flex__7RXvG{display:flex}.common-module_flex_center_y__ZWb6u{align-items:center;display:flex}.common-module_toast__WjP9V{background:rgba(51,51,51,.9)!important;border-radius:8px;display:inline-block!important;max-width:263px;padding:20px 24px!important;right:50%!important;text-align:center;transform:translate(50%,120px);width:-webkit-max-content!important;width:max-content!important;z-index:10000!important}.common-module_toast__WjP9V .rc-notification-notice{background:none!important;box-shadow:none;margin:0;padding:0}.common-module_toast__WjP9V .rc-notification-notice-content{background:none!important;color:#fff;font-size:14px;font-weight:500;line-height:18px;padding:0}.common-module_app-parakeet-dialog__UWDmu .rc-dialog-body{padding:24px}.common-module_ap-dialog-title__-GIOw{color:#222;font-size:24px;font-weight:600;line-height:130%}.common-module_ap-dialog-body__5yegi{color:#222;font-family:inherit;font-size:15px;font-weight:400;line-height:130%;margin-top:16px}.common-module_app-dialog-footer__qYGkd{display:flex;justify-content:flex-end;margin-top:40px}.common-module_ap-button__RhZvx{border:1px solid rgba(51,51,51,.12);border-radius:6px;cursor:pointer;font-family:inherit;font-size:15px;min-width:84px;outline:none!important;padding:8px 16px}.common-module_app-parakeet-dialog--wrapper__YIL3t{align-items:center;display:flex;justify-content:center}.common-module_ap-button-no__f3AQV{background:#fff;color:#333}.common-module_ap-button-ok__-Dglc{background:#333;color:#fff;margin-left:12px}.common-module_app-parakeet-dialog__UWDmu .rc-dialog-close{opacity:1!important;padding:0!important;top:24px}.common-module_clone-lower-canvas__8Uh2v{pointer-events:none;touch-action:none;-webkit-user-select:none;user-select:none;width:100%}@media (min-width:768px){.common-module_app-parakeet-dialog__UWDmu{width:580px!important}.common-module_app-parakeet-dialog__UWDmu .rc-dialog-content{border-radius:8px}}@media (max-width:767px){.common-module_app-parakeet-dialog__UWDmu{margin:0 16px!important;width:100%!important}.common-module_app-parakeet-dialog__UWDmu .rc-dialog-body{padding:16px}.common-module_ap-button__RhZvx{font-size:15px}.common-module_app-parakeet-dialog__UWDmu .rc-dialog-close{right:16px!important;top:16px}.common-module_toast__WjP9V{left:50%!important;top:50%!important;transform:translateY(-50%) translateX(-50%)!important}}");
          var ef = () => {
            var [e, t] = Wd({
              duration: 3,
              className: () => "".concat(Xd, " notranslate")
            });
            return [e, t]
          };

          function tf(e, t) {
            var n, r;
            return e && t ? (n = "" + e + t[0].toUpperCase() + t.slice(1), r = e + "-" + t) : (n = e || t, r = e || t), {
              camelCase: n,
              snakeCase: r
            }
          }

          function nf(e) {
            return /^blob:/.test(e)
          }

          function rf(e) {
            return nf(e) || function(e) {
              return /^data:/.test(e)
            }(e)
          }

          function of(e) {
            if (rf(e)) return !1;
            var t = window.location,
              n = /(\w+:)?(?:\/\/)([\w.-]+)?(?::(\d+))?\/?/.exec(e) || [],
              r = {
                protocol: n[1] || "",
                host: n[2] || "",
                port: n[3] || ""
              },
              i = function(e) {
                return e.port || ("http" === (e.protocol || t.protocol) ? 80 : 433)
              };
            return !(!r.protocol && !r.host && !r.port || Boolean(r.protocol && r.protocol == t.protocol && r.host && r.host == t.host && r.host && i(r) == i(t)))
          }

          function af(e) {
            return "function" == typeof e
          }

          function sf(e) {
            return void 0 === e
          }
          var lf = function(e) {
            return null !== e && "object" == typeof e
          };

          function cf(e, t, n) {
            void 0 === n && (n = {});
            var r = {};
            return lf(e) ? (Object.keys(t).forEach((function(i) {
              sf(e[i]) ? r[i] = t[i] : lf(t[i]) ? lf(e[i]) ? r[i] = cf(e[i], t[i], n[i]) : r[i] = e[i] ? t[i] : n[i] : !0 === t[i] || !1 === t[i] ? r[i] = Boolean(e[i]) : r[i] = e[i]
            })), r) : e ? t : n
          }

          function uf(e) {
            var t = Number(e);
            return Number.isNaN(t) ? e : t
          }

          function hf(e) {
            return !0 === e || !1 === e
          }

          function pf(e) {
            return "number" == typeof e
          }

          function df(e) {
            return e != e
          }

          function ff(e) {
            return pf(e) && !df(e) || function(e) {
              return "string" == typeof e
            }(e) && !Number.isNaN(parseFloat(e)) && isFinite(parseFloat(e))
          }

          function gf(e, t) {
            return Math.sqrt(Math.pow(e.left - t.left, 2) + Math.pow(e.top - t.top, 2))
          }

          function mf(e, t, n) {
            return void 0 === n && (n = .001), Math.abs(t - e) < n
          }

          function vf(e, t, n) {
            return !mf(e, t, n) && e > t
          }

          function _f(e, t, n) {
            return !mf(e, t, n) && e < t
          }

          function bf(e) {
            return new Promise((function(t) {
              setTimeout((function() {
                t()
              }), e)
            }))
          }

          function yf(e) {
            if (!lf(e)) return e;
            var t = {};
            return Array.isArray(e) ? t = e.map((function(e) {
              return yf(e)
            })) : Object.keys(e).forEach((function(n) {
              return t[n] = yf(e[n])
            })), t
          }

          function wf(e, t, n) {
            if (void 0 === n && (n = .001), pf(e) && pf(t) && mf(e, t, n)) return !0;
            if (e === t) return !0;
            if (e && t && "object" == typeof e && "object" == typeof t) {
              if (e.constructor !== t.constructor) return !1;
              var r, i = void 0;
              if (Array.isArray(e)) {
                if ((r = e.length) != t.length) return !1;
                for (i = r; 0 != i--;)
                  if (!wf(e[i], t[i], n)) return !1;
                return !0
              }
              if (e.valueOf !== Object.prototype.valueOf) return e.valueOf() === t.valueOf();
              if (e.toString !== Object.prototype.toString) return e.toString() === t.toString();
              var o = Object.keys(e);
              if ((r = o.length) !== Object.keys(t).length) return !1;
              for (i = r; 0 != i--;)
                if (!Object.prototype.hasOwnProperty.call(t, o[i])) return !1;
              for (i = r; 0 != i--;) {
                var a = o[i];
                if (!wf(e[a], t[a], n)) return !1
              }
              return !0
            }
            return e != e && t != t
          }

          function xf(e, t) {
            var n, r;

            function i() {
              for (var o = [], a = 0; a < arguments.length; a++) o[a] = arguments[a];
              var s = Date.now() - n,
                l = af(t) ? t() : t || 0;
              s < l && s >= 0 ? r = setTimeout((function() {
                return i.apply(void 0, o)
              }), l - s) : e.apply(void 0, o)
            }

            function o() {
              for (var e = [], o = 0; o < arguments.length; o++) e[o] = arguments[o];
              n = Date.now(), r = setTimeout((function() {
                return i.apply(void 0, e)
              }), af(t) ? t() : t || 0)
            }
            return o.clear = function() {
              clearTimeout(r)
            }, o
          }
          var kf, Cf, Sf, Ef = ["left", "right", "top", "bottom"],
            Tf = ["left", "right"],
            Of = ["top", "bottom"];

          function Af(e, t) {
            return {
              left: e.left - t.left,
              top: e.top - t.top
            }
          }

          function Pf(e) {
            return {
              left: e.left + e.width / 2,
              top: e.top + e.height / 2
            }
          }

          function Mf(e, t) {
            return Math.pow(e.width - t.width, 2) + Math.pow(e.height - t.height, 2)
          }

          function Df(e, t) {
            return {
              left: e.left - t.left,
              top: e.top - t.top,
              width: e.width + t.left + t.right,
              height: e.height + t.top + t.bottom
            }
          }

          function If(e) {
            return {
              left: -e.left,
              top: -e.top
            }
          }

          function Nf(e, t) {
            return se(se({}, e), {
              left: e.left + t.left,
              top: e.top + t.top
            })
          }

          function Rf(e) {
            return {
              left: e.left,
              top: e.top,
              right: e.left + e.width,
              bottom: e.top + e.height
            }
          }

          function jf(e, t, n, r) {
            if (1 !== t) {
              if ("left" in e || "top" in e) {
                if (n) {
                  var i = Pf(e);
                  return {
                    width: e.width * t,
                    height: e.height * t,
                    left: e.left + e.width * (1 - t) / 2 + (n.left - i.left) * (r || 1 - t),
                    top: e.top + e.height * (1 - t) / 2 + (n.top - i.top) * (r || 1 - t)
                  }
                }
                return {
                  width: e.width * t,
                  height: e.height * t,
                  left: e.left + e.width * (1 - t) / 2,
                  top: e.top + e.height * (1 - t) / 2
                }
              }
              return {
                width: e.width * t,
                height: e.height * t
              }
            }
            return e
          }

          function Lf(e) {
            return e.width / e.height
          }

          function Ff(e, t) {
            return Math.min(t.maxWidth ? t.maxWidth / e.width : 1 / 0, t.maxHeight ? t.maxHeight / e.height : 1 / 0)
          }

          function Bf(e, t) {
            return Math.max(t.minWidth ? t.minWidth / e.width : 0, t.minHeight ? t.minHeight / e.height : 0)
          }

          function zf(e, t) {
            var n;
            return t.minimum && _f(e, t.minimum) ? n = t.minimum : t.maximum && vf(e, t.maximum) && (n = t.maximum), n
          }

          function Hf(e, t) {
            var n = Lf(e),
              r = 1;
            return t.minWidth > 0 && t.minHeight > 0 ? n > t.minWidth / t.minHeight ? e.height < t.minHeight && (r = t.minHeight / e.height) : e.width < t.minWidth && (r = t.minWidth / e.width) : t.minWidth > 0 ? e.width < t.minWidth && (r = t
                .minWidth / e.width) : t.minHeight > 0 && e.height < t.minHeight && (r = t.minHeight / e.height), t.maxWidth < 1 / 0 && t.maxHeight < 1 / 0 ? n > t.maxWidth / t.maxHeight ? e.width > t.maxWidth && (r = t.maxWidth / e.width) : e
              .height > t.maxHeight && (r = t.maxHeight / e.height) : t.maxWidth < 1 / 0 ? e.width > t.maxWidth && (r = t.maxWidth / e.width) : t.maxHeight < 1 / 0 && e.height > t.maxHeight && (r = t.maxHeight / e.height), r
          }

          function Uf(e, t) {
            var n = {
              left: 0,
              top: 0,
              right: 0,
              bottom: 0
            };
            return Ef.forEach((function(r) {
              var i = t[r],
                o = Rf(e)[r];
              n[r] = void 0 !== i && void 0 !== o ? "left" === r || "top" === r ? Math.max(0, i - o) : Math.max(0, o - i) : 0
            })), n
          }

          function Wf(e, t) {
            return jf(e, Hf(e, t))
          }

          function Vf(e, t) {
            var n = t * Math.PI / 180;
            return {
              width: Math.abs(e.width * Math.cos(n)) + Math.abs(e.height * Math.sin(n)),
              height: Math.abs(e.width * Math.sin(n)) + Math.abs(e.height * Math.cos(n))
            }
          }

          function Xf(e, t, n) {
            var r = t * Math.PI / 180;
            return n ? {
              left: (e.left - n.left) * Math.cos(r) - (e.top - n.top) * Math.sin(r) + n.left,
              top: (e.left - n.left) * Math.sin(r) + (e.top - n.top) * Math.cos(r) + n.top
            } : {
              left: e.left * Math.cos(r) - e.top * Math.sin(r),
              top: e.left * Math.sin(r) + e.top * Math.cos(r)
            }
          }

          function Gf(e) {
            return {
              minWidth: 0,
              minHeight: 0,
              maxWidth: void 0 !== e.right && void 0 !== e.left ? e.right - e.left : 1 / 0,
              maxHeight: void 0 !== e.bottom && void 0 !== e.top ? e.bottom - e.top : 1 / 0
            }
          }

          function Yf(e, t) {
            var n = {};
            return Ef.forEach((function(r) {
              var i = e[r],
                o = t[r];
              void 0 !== i && void 0 !== o ? n[r] = "left" === r || "top" === r ? Math.max(i, o) : Math.min(i, o) : void 0 !== o ? n[r] = o : void 0 !== i && (n[r] = i)
            })), n
          }

          function qf(e, t) {
            var n = {
                left: 0,
                top: 0
              },
              r = Uf(e, t);
            return r.left && r.left > 0 ? n.left = r.left : r.right && r.right > 0 && (n.left = -r.right), r.top && r.top > 0 ? n.top = r.top : r.bottom && r.bottom > 0 && (n.top = -r.bottom), n
          }

          function Kf(e, t) {
            return Nf(e, qf(e, t))
          }

          function $f(e) {
            return void 0 === e && (e = {}), pf(e) ? {
              minimum: e,
              maximum: e
            } : {
              minimum: ff(e.minimum) ? e.minimum : 0,
              maximum: ff(e.maximum) ? e.maximum : 1 / 0
            }
          }

          function Zf(e, t) {
            return (sf(t.maxWidth) || !vf(e.width, t.maxWidth)) && (sf(t.maxHeight) || !vf(e.height, t.maxHeight)) && (sf(t.minHeight) || !_f(e.height, t.minHeight)) && (sf(t.minWidth) || !_f(e.width, t.minWidth))
          }

          function Jf(e, t) {
            return (sf(t.left) || !_f(e.left, t.left)) && (sf(t.top) || !_f(e.top, t.top)) && (sf(t.right) || !vf(e.left + e.width, t.right)) && (sf(t.bottom) || !vf(e.top + e.height, t.bottom))
          }

          function Qf(e) {
            return Boolean(e && e.visibleArea && e.coordinates)
          }

          function eg(e, t) {
            return function(e, t) {
              var n = af(t.areaSizeRestrictions) ? t.areaSizeRestrictions(e, t) : t.areaSizeRestrictions;
              n.maxWidth < 1 / 0 && n.maxHeight < 1 / 0 && (Lf(e.boundary) > n.maxWidth / n.maxHeight ? n.maxHeight = n.maxWidth / Lf(e.boundary) : n.maxWidth = n.maxHeight * Lf(e.boundary));
              return hg(n)
            }(e, t)
          }

          function tg(e, t) {
            return af(t.areaPositionRestrictions) ? t.areaPositionRestrictions(e, t) : t.areaPositionRestrictions
          }

          function ng(e, t) {
            return function(e, t) {
              var n = af(t.sizeRestrictions) ? t.sizeRestrictions(e, t) : t.sizeRestrictions,
                r = rg(e, t),
                i = {
                  minWidth: ff(n.minWidth) ? uf(n.minWidth) : 0,
                  minHeight: ff(n.minHeight) ? uf(n.minHeight) : 0,
                  maxWidth: ff(n.maxWidth) ? uf(n.maxWidth) : 1 / 0,
                  maxHeight: ff(n.maxHeight) ? uf(n.maxHeight) : 1 / 0
                };
              void 0 !== r.left && void 0 !== r.right && (i.maxWidth = Math.min(i.maxWidth, r.right - r.left));
              void 0 !== r.bottom && void 0 !== r.top && (i.maxHeight = Math.min(i.maxHeight, r.bottom - r.top));
              return hg(i)
            }(e, t)
          }

          function rg(e, t) {
            return af(t.positionRestrictions) ? t.positionRestrictions(e, t) : t.positionRestrictions
          }

          function ig(e) {
            return e.visibleArea ? e.visibleArea.width / e.boundary.width : 0
          }

          function og(e) {
            if (Qf(e)) {
              var t = e.coordinates,
                n = t.width,
                r = t.height,
                i = t.left,
                o = t.top,
                a = ig(e);
              return {
                width: n / a,
                height: r / a,
                left: (i - e.visibleArea.left) / a,
                top: (o - e.visibleArea.top) / a
              }
            }
            return {
              left: 0,
              top: 0,
              width: 0,
              height: 0
            }
          }

          function ag(e, t) {
            return $f(af(t.aspectRatio) ? t.aspectRatio(e, t) : t.aspectRatio)
          }

          function sg(e, t) {
            return af(t.defaultCoordinates) ? t.defaultCoordinates(e, t) : t.defaultCoordinates
          }

          function lg(e, t) {
            return af(t.defaultVisibleArea) ? t.defaultVisibleArea(e, t) : t.defaultVisibleArea
          }

          function cg(e) {
            return e.imageSize && e.imageSize.width && e.imageSize.height ? Vf(e.imageSize, e.transforms.rotate) : {
              width: 0,
              height: 0
            }
          }

          function ug(e, t) {
            return !Qf(e) || !zf(Lf(e.coordinates), ag(e, t)) && Zf(e.visibleArea, eg(e, t)) && Zf(e.coordinates, ng(e, t)) && Jf(e.visibleArea, tg(e, t)) && Jf(e.coordinates, rg(e, t))
          }

          function hg(e) {
            var t = se({}, e);
            return t.minWidth > t.maxWidth && (t.minWidth = t.maxWidth), t.minHeight > t.maxHeight && (t.minHeight = t.maxHeight), t
          }

          function pg(e, t) {
            var n = e,
              r = se({
                minWidth: 0,
                minHeight: 0,
                maxWidth: 1 / 0,
                maxHeight: 1 / 0
              }, t);
            return hg({
              maxHeight: Math.min(n.maxHeight, r.maxHeight),
              minHeight: Math.max(n.minHeight, r.minHeight),
              maxWidth: Math.min(n.maxWidth, r.maxWidth),
              minWidth: Math.max(n.minWidth, r.minWidth)
            })
          }

          function dg(e) {
            return yf(e)
          }

          function fg(e) {
            var t = e.width,
              n = e.height,
              r = e.sizeRestrictions || {
                minWidth: 0,
                minHeight: 0,
                maxWidth: 1 / 0,
                maxHeight: 1 / 0
              },
              i = $f(e.aspectRatio),
              o = {
                width: Math.max(r.minWidth, Math.min(r.maxWidth, t)),
                height: Math.max(r.minHeight, Math.min(r.maxHeight, n))
              },
              a = [o];
            return i && [i.minimum, i.maximum].forEach((function(e) {
                e && a.push({
                  width: o.width,
                  height: o.width / e
                }, {
                  width: o.height * e,
                  height: o.height
                })
              })),
              function(e, t, n, r) {
                var i = function(i) {
                  return e.reduce((function(e, o) {
                    var a = af(n) ? n(o) : n,
                      s = a.maxHeight,
                      l = a.maxWidth,
                      c = a.minWidth,
                      u = a.minHeight,
                      h = $f(af(r) ? r(o) : r);
                    return Zf(o, i ? {
                      maxWidth: l,
                      maxHeight: s
                    } : {
                      maxWidth: l,
                      maxHeight: s,
                      minWidth: c,
                      minHeight: u
                    }) && !zf(Lf(o), h) && o.width && o.height && (!e || _f(Mf(o, t), Mf(e, t))) ? o : e
                  }), null)
                };
                return i() || i(!0)
              }(a = a.map((function(e) {
                return Wf(e, r)
              })), {
                width: t,
                height: n
              }, r, i)
          }

          function gg(e, t) {
            var n = dg(e);
            if (e.visibleArea) {
              var r = eg(e, t);
              n.visibleArea = se(se({}, e.visibleArea), fg({
                width: e.visibleArea.width,
                height: e.visibleArea.height,
                aspectRatio: {
                  minimum: Lf(n.boundary),
                  maximum: Lf(n.boundary)
                },
                sizeRestrictions: r
              })), n.visibleArea = Nf(n.visibleArea, Af(Pf(e.visibleArea), Pf(n.visibleArea))), n.visibleArea = Kf(n.visibleArea, tg(n, t))
            }
            return n
          }

          function mg(e, t, n) {
            var r = Nf(e, t);
            return n ? Kf(r, n) : r
          }

          function vg(e, t, n, r) {
            void 0 === r && (r = !0);
            var i = !1 === r ? Sf.unsafe : !0 === r ? Sf.zoom : r,
              o = ag(e, t),
              a = ng(e, t);
            e.visibleArea && i === Sf.limit && (a = se(se({}, a), {
              minWidth: Math.min(e.visibleArea.width, a.minWidth),
              minHeight: Math.min(e.visibleArea.height, a.minHeight),
              maxWidth: Math.min(e.visibleArea.width, a.maxWidth),
              maxHeight: Math.min(e.visibleArea.height, a.maxHeight)
            }));
            var s = rg(e, t);
            e.visibleArea && i === Sf.limit && (s = Yf(s, Rf(e.visibleArea)));
            var l = function(e, t) {
                return mg(e, {
                  left: t.left - (e.left || 0),
                  top: t.top - (e.top || 0)
                }, s)
              },
              c = e.coordinates ? se({}, e.coordinates) : {
                left: 0,
                top: 0,
                width: 0,
                height: 0
              };
            (Array.isArray(n) ? n : [n]).forEach((function(n) {
              var r;
              (r = "function" == typeof n ? n(se(se({}, e), {
                coordinates: c
              }), t) : n) && (sf(r.width) && sf(r.height) || (c = function(e, t) {
                var n = se(se(se({}, e), fg({
                  width: t.width,
                  height: t.height,
                  sizeRestrictions: a,
                  aspectRatio: o
                })), {
                  left: 0,
                  top: 0
                });
                return l(n, {
                  left: e.left || 0,
                  top: e.top || 0
                })
              }(c, se(se({}, c), r))), sf(r.left) && sf(r.top) || (c = l(c, se(se({}, c), r))))
            }));
            var u = se(se({}, dg(e)), {
              coordinates: c
            });
            if (u.visibleArea && i === Sf.zoom) {
              var h = Math.max(0, u.coordinates.width - u.visibleArea.width),
                p = Math.max(0, u.coordinates.height - u.visibleArea.height),
                d = eg(e, t),
                f = h > p ? u.coordinates.width / u.visibleArea.width : u.coordinates.height / u.visibleArea.height;
              return f > 1 && (u.visibleArea = jf(u.visibleArea, Math.min(f, Ff(u.visibleArea, d)))), u.visibleArea = Nf(u.visibleArea, If(qf(u.coordinates, Rf(u.visibleArea)))), gg(u, t)
            }
            return u
          }

          function _g(e, t) {
            if (e.coordinates) {
              var n = dg(e),
                r = ag(e, t),
                i = ng(e, t);
              return n.coordinates = se(se({}, e.coordinates), fg({
                width: e.coordinates.width,
                height: e.coordinates.height,
                aspectRatio: r,
                sizeRestrictions: e.visibleArea ? {
                  maxWidth: Math.min(e.visibleArea.width, i.maxWidth),
                  maxHeight: Math.min(e.visibleArea.height, i.maxHeight),
                  minHeight: Math.min(e.visibleArea.height, i.minHeight),
                  minWidth: Math.min(e.visibleArea.width, i.minWidth)
                } : i
              })), n.coordinates = Nf(n.coordinates, Af(Pf(e.coordinates), Pf(n.coordinates))), n.coordinates = Kf(n.coordinates, e.visibleArea ? Yf(Rf(e.visibleArea), rg(n, t)) : rg(n, t)), n
            }
            return e
          }

          function bg(e, t, n, r) {
            void 0 === r && (r = !0);
            var i = se(se({}, dg(e)), {
              visibleArea: n
            });
            return i = gg(i, t), r && (i = _g(i, t)), i
          }

          function yg(e, t) {
            var n, r, i, o, a, s = e.boundary,
              l = e.image,
              c = {
                boundary: {
                  width: s.width,
                  height: s.height
                },
                imageSize: {
                  width: l.width,
                  height: l.height
                },
                transforms: {
                  rotate: (null === (n = l.transforms) || void 0 === n ? void 0 : n.rotate) || 0,
                  flip: {
                    horizontal: (null === (i = null === (r = l.transforms) || void 0 === r ? void 0 : r.flip) || void 0 === i ? void 0 : i.horizontal) || !1,
                    vertical: (null === (a = null === (o = l.transforms) || void 0 === o ? void 0 : o.flip) || void 0 === a ? void 0 : a.vertical) || !1
                  }
                },
                visibleArea: null,
                coordinates: null
              };
            return t.defaultTransforms && (c.transforms = function(e, t) {
              var n = se(se({}, e.transforms), {
                flip: se({}, e.transforms.flip)
              });
              if (t.defaultTransforms) {
                var r = af(t.defaultTransforms) ? t.defaultTransforms(e, t) : t.defaultTransforms;
                pf(r.rotate) && (n.rotate = r.rotate), r.flip && (hf(r.flip.horizontal) && (n.flip.horizontal = r.flip.horizontal), hf(r.flip.vertical) && (n.flip.vertical = r.flip.vertical))
              }
              return n
            }(c, t)), c = t.priority === Cf.visibleArea ? vg(c = bg(c, t, lg(c, t), !1), t, sg(c, t), Sf.limit) : bg(c = vg(c, t, sg(c, t), Sf.unsafe), t, lg(c, t), !0)
          }

          function wg(e, t, n) {
            if (Qf(e)) {
              var r = dg(e);
              return r.coordinates = Nf(r.coordinates, n), r.coordinates = Kf(r.coordinates, Yf(Rf(r.visibleArea), rg(r, t))), r
            }
            return e
          }

          function xg(e) {
            var t = e.coordinates,
              n = e.directions,
              r = e.positionRestrictions,
              i = e.sizeRestrictions,
              o = e.preserveRatio,
              a = e.allowedDirections,
              s = e.compensate,
              l = void 0 === s || s,
              c = se({}, n),
              u = Df(t, c).width,
              h = Df(t, c).height;
            u < 0 && (c.left < 0 && c.right < 0 ? (c.left = -(t.width - i.minWidth) / (c.left / c.right), c.right = -(t.width - i.minWidth) / (c.right / c.left)) : c.left < 0 ? c.left = -(t.width - i.minWidth) : c.right < 0 && (c.right = -(t
              .width - i.minWidth))), h < 0 && (c.top < 0 && c.bottom < 0 ? (c.top = -(t.height - i.minHeight) / (c.top / c.bottom), c.bottom = -(t.height - i.minHeight) / (c.bottom / c.top)) : c.top < 0 ? c.top = -(t.height - i.minHeight) : c
              .bottom < 0 && (c.bottom = -(t.height - i.minHeight)));
            var p = Uf(Df(t, c), r),
              d = Ef.every((function(e) {
                return !vf(p[(t = e, {
                  left: "right",
                  top: "bottom",
                  right: "left",
                  bottom: "top"
                } [t])], 0) || a[e];
                var t
              }));
            l && d && (p.left && p.left > 0 && 0 === p.right ? (c.right += p.left, c.left -= p.left) : p.right && p.right > 0 && 0 === p.left && (c.left += p.right, c.right -= p.right), p.top && p.top > 0 && 0 === p.bottom ? (c.bottom += p.top, c
              .top -= p.top) : p.bottom && p.bottom > 0 && 0 === p.top && (c.top += p.bottom, c.bottom -= p.bottom), p = Uf(Df(t, c), r));
            var f = {
              width: 1 / 0,
              height: 1 / 0,
              left: 1 / 0,
              right: 1 / 0,
              top: 1 / 0,
              bottom: 1 / 0
            };
            if (Ef.forEach((function(e) {
                var t = p[e];
                t && c[e] && (f[e] = Math.max(0, 1 - t / c[e]))
              })), o) {
              var g = Math.min.apply(Math, Ef.map((function(e) {
                return f[e]
              })));
              g !== 1 / 0 && Ef.forEach((function(e) {
                c[e] *= g
              }))
            } else Ef.forEach((function(e) {
              f[e] !== 1 / 0 && (c[e] *= f[e])
            }));
            if (u = Df(t, c).width, h = Df(t, c).height, c.right + c.left && (u > i.maxWidth ? f.width = (i.maxWidth - t.width) / (c.right + c.left) : u < i.minWidth && (f.width = (i.minWidth - t.width) / (c.right + c.left))), c.bottom + c.top &&
              (h > i.maxHeight ? f.height = (i.maxHeight - t.height) / (c.bottom + c.top) : h < i.minHeight && (f.height = (i.minHeight - t.height) / (c.bottom + c.top))), o) {
              var m = Math.min(f.width, f.height);
              m !== 1 / 0 && Ef.forEach((function(e) {
                c[e] *= m
              }))
            } else f.width !== 1 / 0 && Tf.forEach((function(e) {
              c[e] *= f.width
            })), f.height !== 1 / 0 && Of.forEach((function(e) {
              c[e] *= f.height
            }));
            return c
          }

          function kg(e, t, n) {
            return mf(t + n, 0) ? e / 2 : mf(t, 0) ? 0 : mf(n, 0) ? e : e * Math.abs(t / (t + n))
          }

          function Cg(e, t) {
            var n = t.toLowerCase();
            return {
              left: e.left + e.width * (-1 !== n.indexOf("west") ? 1 : -1 !== n.indexOf("east") ? 0 : .5),
              top: e.top + e.height * (-1 !== n.indexOf("north") ? 1 : -1 !== n.indexOf("south") ? 0 : .5)
            }
          }

          function Sg(e) {
            var t = e.toLowerCase();
            return {
              left: -1 === t.indexOf("east"),
              top: -1 === t.indexOf("south"),
              right: -1 === t.indexOf("west"),
              bottom: -1 === t.indexOf("north")
            }
          }

          function Eg(e, t, n, r, i) {
            var o = r.reference,
              a = function(e, t) {
                var n = e.toLowerCase(),
                  r = {
                    left: -1 === n.indexOf("west") ? t.left : -t.left,
                    top: -t.top,
                    right: t.left,
                    bottom: t.top
                  };
                ["north", "south", "center"].every((function(e) {
                  return -1 === n.indexOf(e)
                })) && (r.top = 0, r.bottom = 0), ["west", "east", "center"].every((function(e) {
                  return -1 === n.indexOf(e)
                })) && (r.left = 0, r.right = 0);
                var i = Sg(e);
                return Ef.forEach((function(e) {
                  i[e] || (r[e] = 0)
                })), r
              }(t, n),
              s = Sg(t),
              l = function(e, t, n, r) {
                var i = r.aspectRatio,
                  o = r.positionRestrictions,
                  a = r.sizeRestrictions,
                  s = se({}, e);
                t = se({}, t);
                var l = n.allowedDirections || {
                  left: !0,
                  right: !0,
                  bottom: !0,
                  top: !0
                };
                e.width < a.minWidth && (t.left = 0, t.right = 0), e.height < a.minHeight && (t.top = 0, t.bottom = 0), Ef.forEach((function(e) {
                  l[e] || (t[e] = 0)
                }));
                var c = Df(s, t = xg({
                    coordinates: s,
                    directions: t,
                    sizeRestrictions: a,
                    positionRestrictions: o,
                    allowedDirections: l
                  })).width,
                  u = Df(s, t).height,
                  h = n.preserveAspectRatio ? Lf(s) : zf(c / u, i);
                if (h) {
                  var p = n.respectDirection;
                  if ("width" !== p && "height" !== p && (p = s.width >= s.height || 1 === h ? "width" : "height"), "width" === p) {
                    var d = c / h - s.height;
                    if (l.top && l.bottom) {
                      var f = t.top,
                        g = t.bottom;
                      t.bottom = kg(d, g, f), t.top = kg(d, f, g)
                    } else l.bottom ? t.bottom = d : l.top ? t.top = d : l.right ? t.right = 0 : l.left && (t.left = 0)
                  } else if ("height" === p) {
                    var m = s.width - u * h;
                    if (l.left && l.right) {
                      var v = t.left,
                        _ = t.right;
                      t.left = -kg(m, v, _), t.right = -kg(m, _, v)
                    } else l.left ? t.left = -m : l.right ? t.right = -m : l.top ? t.top = 0 : l.bottom && (t.bottom = 0)
                  }
                  t = xg({
                    directions: t,
                    coordinates: s,
                    sizeRestrictions: a,
                    positionRestrictions: o,
                    preserveRatio: !0,
                    compensate: n.compensate,
                    allowedDirections: l
                  })
                }
                return c = Df(s, t).width, u = Df(s, t).height, (h = n.preserveAspectRatio ? Lf(s) : zf(c / u, i)) && vf(Math.abs(h - c / u), 0) && Ef.forEach((function(e) {
                  t[e] = 0
                })), mg({
                  width: e.width + t.right + t.left,
                  height: e.height + t.top + t.bottom,
                  left: e.left,
                  top: e.top
                }, {
                  left: -t.left,
                  top: -t.top
                }, o)
              }(e, a, se(se({}, r), {
                allowedDirections: s
              }), i);
            return o && (l = Nf(l, Af(Cg(o, t), Cg(l, t)))), Kf(l, i.positionRestrictions)
          }

          function Tg(e, t, n, r, i) {
            var o = function(e) {
                return e.coordinates ? Math.min(e.coordinates.width, e.coordinates.height, 20 * ig(e)) : 1
              }(e),
              a = ng(e, t);
            return Qf(e) ? se(se({}, dg(e)), {
              coordinates: Eg(e.coordinates, n, r, i, {
                positionRestrictions: Yf(rg(e, t), Rf(e.visibleArea)),
                sizeRestrictions: {
                  maxWidth: Math.min(a.maxWidth, e.visibleArea.width),
                  maxHeight: Math.min(a.maxHeight, e.visibleArea.height),
                  minWidth: Math.max(Math.min(a.minWidth, e.visibleArea.width), o),
                  minHeight: Math.max(Math.min(a.minHeight, e.visibleArea.height), o)
                },
                aspectRatio: ag(e, t)
              })
            }) : e
          }

          function Og(e, t, n) {
            var r = se(se({}, dg(e)), {
              boundary: n
            });
            if (r.visibleArea && r.coordinates && e.visibleArea) {
              r.visibleArea.height = r.visibleArea.width / Lf(n), r.visibleArea.top += (e.visibleArea.height - r.visibleArea.height) / 2;
              var i = ng(r, t);
              (Math.max(i.minHeight, r.coordinates.height) - r.visibleArea.height > 0 || Math.max(i.minWidth, r.coordinates.width) - r.visibleArea.width > 0) && (r.visibleArea = jf(r.visibleArea, Math.max(Math.max(i.minHeight, r.coordinates
                .height) / r.visibleArea.height, Math.max(i.minWidth, r.coordinates.width) / r.visibleArea.width))), r.visibleArea = Wf(r.visibleArea, eg(r, t));
              var o = If(qf(r.coordinates, Rf(r.visibleArea)));
              r.visibleArea.width < r.coordinates.width && (o.left = 0), r.visibleArea.height < r.coordinates.height && (o.top = 0), r.visibleArea = Nf(r.visibleArea, o), r.visibleArea = Kf(r.visibleArea, tg(r, t)), r = _g(r, t)
            }
            return r
          }

          function Ag(e, t, n) {
            return n.rotate && (e = function(e, t, n) {
              if (Qf(e)) {
                var r = dg(e),
                  i = pf(n) ? n : n.angle,
                  o = Xf(Pf(se({
                    left: 0,
                    top: 0
                  }, cg(e))), i);
                r.transforms.rotate += i, r.coordinates = se(se({}, fg({
                  sizeRestrictions: ng(r, t),
                  aspectRatio: ag(r, t),
                  width: r.coordinates.width,
                  height: r.coordinates.height
                })), Xf(Pf(r.coordinates), i));
                var a = !pf(n) && n.center ? n.center : Pf(e.coordinates),
                  s = Af(Pf(e.coordinates), Xf(Pf(e.coordinates), i, a)),
                  l = cg(r);
                return r.coordinates.left -= o.left - l.width / 2 + r.coordinates.width / 2 - s.left, r.coordinates.top -= o.top - l.height / 2 + r.coordinates.height / 2 - s.top, r.visibleArea = Wf(r.visibleArea, pg(eg(r, t), {
                  minWidth: r.coordinates.width,
                  minHeight: r.coordinates.height
                })), r.coordinates = Kf(r.coordinates, rg(r, t)), r.visibleArea = Nf(r.visibleArea, Af(Pf(r.coordinates), Pf(e.coordinates))), r.visibleArea = Kf(r.visibleArea, tg(r, t)), r
              }
              return e
            }(e, t, n.rotate)), n.flip && (e = function(e, t, n, r) {
              if (Qf(e)) {
                var i = dg(e),
                  o = e.transforms.rotate,
                  a = cg(e),
                  s = {
                    horizontal: n,
                    vertical: r
                  };
                if (s.horizontal || s.vertical) {
                  var l = Xf({
                      left: a.width / 2,
                      top: a.height / 2
                    }, -o),
                    c = Xf(Pf(i.coordinates), -o),
                    u = Xf({
                      left: s.horizontal ? l.left - (c.left - l.left) : c.left,
                      top: s.vertical ? l.top - (c.top - l.top) : c.top
                    }, o);
                  i.coordinates = Nf(i.coordinates, Af(u, Pf(i.coordinates))), c = Xf(Pf(i.visibleArea), -o), u = Xf({
                    left: s.horizontal ? l.left - (c.left - l.left) : c.left,
                    top: s.vertical ? l.top - (c.top - l.top) : c.top
                  }, o), i.visibleArea = Nf(i.visibleArea, Af(u, Pf(i.visibleArea))), i.visibleArea = Kf(i.visibleArea, tg(i, t))
                }
                return s.horizontal && (i.transforms.flip.horizontal = !e.transforms.flip.horizontal), s.vertical && (i.transforms.flip.vertical = !e.transforms.flip.vertical), i
              }
              return e
            }(e, t, n.flip.horizontal, n.flip.vertical)), (n.move || n.scale) && (e = function(e, t, n) {
              var r, i = n.scale,
                o = void 0 === i ? 1 : i,
                a = n.move,
                s = void 0 === a ? {} : a;
              if (Qf(e)) {
                var l = dg(e),
                  c = 1 / (pf(o) ? o : o.factor),
                  u = pf(o) ? void 0 : o.center,
                  h = !mf(c, 1),
                  p = 1,
                  d = 1;
                l.visibleArea = Nf(l.visibleArea, {
                  left: s.left || 0,
                  top: s.top || 0
                });
                var f = ng(l, t),
                  g = rg(l, t),
                  m = eg(l, t),
                  v = {
                    stencil: {
                      minimum: Math.max(f.minWidth ? f.minWidth / l.coordinates.width : 0, f.minHeight ? f.minHeight / l.coordinates.height : 0),
                      maximum: Math.min(f.maxWidth ? f.maxWidth / l.coordinates.width : 1 / 0, f.maxHeight ? f.maxHeight / l.coordinates.height : 1 / 0, Ff(l.coordinates, Gf(g)))
                    },
                    area: {
                      maximum: Ff(l.visibleArea, m),
                      minimum: Bf(l.visibleArea, m)
                    }
                  };
                c && h && (c < 1 ? (d = Math.max(c, Math.max(v.area.minimum, v.stencil.minimum))) > 1 && (d = 1) : c > 1 && (d = Math.min(c, Math.min(v.area.maximum, v.stencil.maximum))) < 1 && (d = 1)), d && (l.visibleArea = jf(l
                  .visibleArea, d, u));
                var _ = {
                  left: e.coordinates.left - e.visibleArea.left,
                  right: e.visibleArea.width + e.visibleArea.left - (e.coordinates.width + e.coordinates.left),
                  top: e.coordinates.top - e.visibleArea.top,
                  bottom: e.visibleArea.height + e.visibleArea.top - (e.coordinates.height + e.coordinates.top)
                };
                return l.visibleArea = Kf(l.visibleArea, {
                    left: void 0 !== g.left ? g.left - _.left * d : void 0,
                    top: void 0 !== g.top ? g.top - _.top * d : void 0,
                    bottom: void 0 !== g.bottom ? g.bottom + _.bottom * d : void 0,
                    right: void 0 !== g.right ? g.right + _.right * d : void 0
                  }), l.visibleArea = Kf(l.visibleArea, tg(l, t)), l.coordinates.width = l.coordinates.width * d, l.coordinates.height = l.coordinates.height * d, l.coordinates.left = l.visibleArea.left + _.left * d, l.coordinates.top = l
                  .visibleArea.top + _.top * d, l.coordinates = Kf(l.coordinates, Yf(Rf(l.visibleArea), g)), h && c && (null === (r = t.transformImage) || void 0 === r ? void 0 : r.adjustStencil) && (c > 1 ? p = Math.min(v.area.maximum, c) /
                    d : c < 1 && (p = Math.max(l.coordinates.height / l.visibleArea.height, l.coordinates.width / l.visibleArea.width, c / d)), 1 !== p && (l.visibleArea = jf(l.visibleArea, p, c > 1 ? u : Pf(l.coordinates)), l.visibleArea =
                      Kf(l.visibleArea, tg(l, t)), l.visibleArea = Nf(l.visibleArea, If(qf(l.coordinates, Rf(l.visibleArea)))))), l
              }
              return e
            }(e, t, n)), e
          }

          function Pg(e, t) {
            if (Qf(e)) {
              var n = dg(e),
                r = ag(e, t),
                i = ng(e, t),
                o = eg(e, t),
                a = zf(Lf(e.coordinates), r),
                s = a ? {
                  height: e.coordinates.height,
                  width: e.coordinates.height * a
                } : e.coordinates;
              n.coordinates = se(se({}, n.coordinates), fg({
                width: s.width,
                height: s.height,
                aspectRatio: r,
                sizeRestrictions: pg(o, i)
              })), n.coordinates = Nf(n.coordinates, Af(Pf(e.coordinates), Pf(n.coordinates)));
              var l = Math.max(n.coordinates.width / n.visibleArea.width, n.coordinates.height / n.visibleArea.height, 1);
              return n.visibleArea = se(se({}, e.visibleArea), fg({
                width: e.visibleArea.width * l,
                height: e.visibleArea.height * l,
                aspectRatio: {
                  minimum: Lf(n.boundary),
                  maximum: Lf(n.boundary)
                },
                sizeRestrictions: o
              })), n.visibleArea = Nf(n.visibleArea, Af(Pf(e.visibleArea), Pf(n.visibleArea))), n.visibleArea = Kf(n.visibleArea, tg(n, t)), n.coordinates = Kf(n.coordinates, Yf(Rf(n.visibleArea), rg(n, t))), n
            }
            return e
          }

          function Mg(e, t) {
            var n = ig(e);
            return e.visibleArea ? {
              left: t.left * n + e.visibleArea.left,
              top: t.top * n + e.visibleArea.top
            } : t
          }

          function Dg(e, t) {
            if (e) {
              var n = Math.abs(e.transforms.rotate % 180);
              return n <= 45 || n >= 135 ? t : {
                horizontal: t.vertical,
                vertical: t.horizontal
              }
            }
            return t
          }

          function Ig(e, t) {
            var n = ig(e);
            return {
              left: pf(t.left) ? t.left * n : 0,
              top: pf(t.top) ? t.top * n : 0
            }
          }

          function Ng(e, t) {
            var n = t.getBoundingClientRect(),
              r = n.left,
              i = n.top,
              o = {
                left: 0,
                top: 0
              },
              a = 0;
            return e.forEach((function(t) {
              o.left += (t.clientX - r) / e.length, o.top += (t.clientY - i) / e.length
            })), e.forEach((function(e) {
              a += gf({
                left: o.left,
                top: o.top
              }, {
                left: e.clientX - r,
                top: e.clientY - i
              })
            })), {
              centerMass: o,
              spread: a,
              count: e.length
            }
          }

          function Rg(e, t, n) {
            void 0 === n && (n = .1);
            var r, i, o = t.getBoundingClientRect(),
              a = o.left,
              s = o.top;
            return {
              scale: {
                factor: 1 - n * (r = e.deltaY || e.detail || e.wheelDelta, 0 === (i = +r) || df(i) ? i : i > 0 ? 1 : -1),
                center: {
                  left: e.clientX - a,
                  top: e.clientY - s
                }
              }
            }
          }

          function jg(e) {
            return e.moveCoordinates || e.resizeCoordinates || e.transformImage.move || e.transformImage.rotate || e.transformImage.flip || e.transformImage.scale
          }

          function Lg(e, t) {
            var n, r = e.imageSize,
              i = e.visibleArea,
              o = ng(e, t),
              a = ag(e, t);
            if (i) n = i;
            else {
              var s = Gf(rg(e, t));
              n = {
                width: Math.max(s.minWidth, Math.min(s.maxWidth, r.width)),
                height: Math.max(s.minHeight, Math.min(s.maxHeight, r.height))
              }
            }
            var l = Math.min(a.maximum || 1 / 0, Math.max(a.minimum || 0, Lf(n))),
              c = n.width < n.height ? {
                width: .8 * n.width,
                height: .8 * n.width / l
              } : {
                height: .8 * n.height,
                width: .8 * n.height * l
              };
            return fg(se(se({}, c), {
              aspectRatio: a,
              sizeRestrictions: o
            }))
          }

          function Fg(e, t) {
            return function(e) {
              return {
                minWidth: ff(e.minWidth) ? uf(e.minWidth) : 0,
                minHeight: ff(e.minHeight) ? uf(e.minHeight) : 0,
                maxWidth: ff(e.maxWidth) ? uf(e.maxWidth) : 1 / 0,
                maxHeight: ff(e.maxHeight) ? uf(e.maxHeight) : 1 / 0
              }
            }(t)
          }

          function Bg(e) {
            var t = e.visibleArea,
              n = e.coordinates,
              r = t || cg(e);
            return {
              left: (t ? t.left : 0) + r.width / 2 - (n ? n.width / 2 : 0),
              top: (t ? t.top : 0) + r.height / 2 - (n ? n.height / 2 : 0)
            }
          }

          function zg(e) {
            var t = e.getBoundingClientRect();
            return {
              width: t.width,
              height: t.height
            }
          }

          function Hg(e, t) {
            return e.aspectRatio ? {} : {
              aspectRatio: $f(af(t.aspectRatio) ? t.aspectRatio() : t.aspectRatio)
            }
          }

          function Ug(e) {
            return function(t, n) {
              var r = af(e) ? e(t, n) : e;
              return pg(Fg(0, n), r)
            }
          }

          function Wg(e) {
            return se(se({}, e), {
              sizeRestrictions: function(t, n) {
                return e.sizeRestrictions ? af(e.sizeRestrictions) ? e.sizeRestrictions(t, n) : e.sizeRestrictions : Fg(0, n)
              },
              areaPositionRestrictions: function(t, n) {
                return e.areaPositionRestrictions ? af(e.areaPositionRestrictions) ? e.areaPositionRestrictions(t, n) : e.areaPositionRestrictions : function(e, t) {
                  var n = e.visibleArea,
                    r = e.boundary,
                    i = t.imageRestriction,
                    o = cg(e),
                    a = {};
                  return i === kf.fillArea ? a = {
                    left: 0,
                    top: 0,
                    right: o.width,
                    bottom: o.height
                  } : i === kf.fitArea && (Lf(r) > Lf(o) ? (a = {
                    top: 0,
                    bottom: o.height
                  }, n && (n.width > o.width ? (a.left = -(n.width - o.width) / 2, a.right = o.width - a.left) : (a.left = 0, a.right = o.width))) : (a = {
                    left: 0,
                    right: o.width
                  }, n && (n.height > o.height ? (a.top = -(n.height - o.height) / 2, a.bottom = o.height - a.top) : (a.top = 0, a.bottom = o.height)))), a
                }(t, n)
              },
              areaSizeRestrictions: function(t, n) {
                return e.areaSizeRestrictions ? af(e.areaSizeRestrictions) ? e.areaSizeRestrictions(t, n) : e.areaSizeRestrictions : function(e, t) {
                  var n = e.boundary,
                    r = t.imageRestriction,
                    i = cg(e),
                    o = {
                      minWidth: 0,
                      minHeight: 0,
                      maxWidth: 1 / 0,
                      maxHeight: 1 / 0
                    };
                  return r === kf.fillArea ? (o.maxWidth = i.width, o.maxHeight = i.height) : r === kf.fitArea && (Lf(n) > Lf(i) ? (o.maxHeight = i.height, o.maxWidth = i.height * Lf(n)) : (o.maxWidth = i.width, o.maxHeight = i.width /
                    Lf(n))), o
                }(t, n)
              },
              positionRestrictions: function(t, n) {
                return e.positionRestrictions ? af(e.positionRestrictions) ? e.positionRestrictions(t, n) : e.positionRestrictions : function(e, t) {
                  var n = cg(e),
                    r = {};
                  return t.imageRestriction && "none" !== t.imageRestriction && (r = {
                    left: 0,
                    top: 0,
                    right: n.width,
                    bottom: n.height
                  }), r
                }(t, n)
              },
              defaultCoordinates: function(t, n) {
                if (e.defaultCoordinates) return af(e.defaultCoordinates) ? e.defaultCoordinates(t, n) : e.defaultCoordinates;
                var r = e.defaultSize;
                r || (r = Lg);
                var i = af(r) ? r(t, n) : r,
                  o = e.defaultPosition || Bg;
                return [i, function(e) {
                  return se({}, af(o) ? o(e, n) : o)
                }]
              },
              defaultVisibleArea: function(t, n) {
                return e.defaultVisibleArea ? af(e.defaultVisibleArea) ? e.defaultVisibleArea(t, n) : e.defaultVisibleArea : function(e, t) {
                  var n = e.coordinates,
                    r = e.boundary,
                    i = cg(e),
                    o = Lf(r);
                  if (n) {
                    var a = {
                        height: Math.max(n.height, i.height),
                        width: Math.max(n.width, i.width)
                      },
                      s = {
                        left: 0,
                        top: 0,
                        width: Lf(a) > o ? a.width : a.height * o,
                        height: Lf(a) > o ? a.width / o : a.height
                      };
                    (s = Wf(s, eg(e, t))).left = n.left + n.width / 2 - s.width / 2, s.top = n.top + n.height / 2 - s.height / 2;
                    var l = Uf(n, Rf(se({
                        left: 0,
                        top: 0
                      }, i))),
                      c = {};
                    return !l.left && !l.right && s.width <= i.width && (c.left = 0, c.right = i.width), !l.top && !l.bottom && s.height <= i.height && (c.top = 0, c.bottom = i.height), Kf(s, c)
                  }
                  var u = Lf(i),
                    h = {
                      height: u < o ? i.height : i.width / o,
                      width: u < o ? i.height * o : i.width
                    };
                  return {
                    left: i.width / 2 - h.width / 2,
                    top: i.height / 2 - h.height / 2,
                    width: h.width,
                    height: h.height
                  }
                }(t, n)
              },
              aspectRatio: function(t, n) {
                return $f(af(e.aspectRatio) ? e.aspectRatio(t, n) : e.aspectRatio)
              }
            })
          }

          function Vg(e, t) {
            if (e && t) {
              var n = t();
              n && e(n)
            }
          }

          function Xg(e, t) {
            e.forEach((function(e) {
              Vg(e, t)
            }))
          }! function(e) {
            e.fillArea = "fillArea", e.fitArea = "fitArea", e.stencil = "stencil", e.none = "none"
          }(kf || (kf = {})),
          function(e) {
            e.coordinates = "coordinates", e.visibleArea = "visibleArea"
          }(Cf || (Cf = {})),
          function(e) {
            e.limit = "limit", e.zoom = "zoom", e.unsafe = "unsafe"
          }(Sf || (Sf = {}));
          var Gg = function() {
              var e = this;
              this.getTransitions = function() {
                var t = e.getData(),
                  n = e.getProps().transitions;
                return se(se({}, cf(n, {
                  timingFunction: "ease-in-out",
                  duration: 350
                })), {
                  active: t.transitions
                })
              }, this.getInteractions = function() {
                return yf(e.getData().interactions)
              }, this.hasInteractions = function() {
                return jg(e.getData().interactions)
              }, this.startTransitions = function() {
                var t = e.getProps(),
                  n = t.onTransitionsStart,
                  r = t.onUpdate,
                  i = t.getInstance,
                  o = e.getData(),
                  a = o.transitions,
                  s = le(o, ["transitions"]);
                e.setData(se(se({}, s), {
                  transitions: !0
                })), a || Xg([n, r], i), e.endTransitions()
              }, this.endTransitions = xf((function() {
                var t = e.getProps(),
                  n = t.onTransitionsEnd,
                  r = t.onUpdate,
                  i = t.getInstance;
                e.setData(se(se({}, e.getData()), {
                  transitions: !1
                })), Xg([n, r], i)
              }), (function() {
                return e.getTransitions().duration
              })), this.applyPostProcess = function(t, n) {
                var r, i = e.getProps(),
                  o = i.settings,
                  a = i.postProcess,
                  s = t.name,
                  l = t.interaction,
                  c = void 0 !== l && l,
                  u = t.transitions,
                  h = void 0 !== u && u,
                  p = t.immediately,
                  d = {
                    name: s,
                    interaction: c,
                    transitions: h,
                    immediately: void 0 !== p && p
                  };
                return r = a, Array.isArray(r) ? a.reduce((function(e, t) {
                  return t(e, o, d)
                }), n) : af(a) ? a(n, o, d) : n
              }, this.updateState = function(t, n, r) {
                void 0 === n && (n = {}), void 0 === r && (r = []);
                var i = n.transitions,
                  o = void 0 !== i && i,
                  a = e.getProps(),
                  s = a.onTransitionsStart,
                  l = a.getInstance,
                  c = a.onChange,
                  u = a.onUpdate,
                  h = a.settings,
                  p = e.getData(),
                  d = af(t) ? t(p.state, h) : t,
                  f = d ? .001 * ig(d) : .001,
                  g = !wf(p.state, d, f),
                  m = ["coordinates", "boundary", "visibleArea", "imageSize", "transforms"].some((function(e) {
                    var t;
                    return !wf(null === (t = p.state) || void 0 === t ? void 0 : t[e], null == d ? void 0 : d[e], f)
                  })),
                  v = p;
                g && (o && m && e.endTransitions(), v = se(se({}, v), {
                  state: dg(d),
                  transitions: o && m
                }), e.setData(v), Vg(c, l)), v.transitions && !p.transitions && Vg(s, l), Xg(function() {
                  for (var e = 0, t = 0, n = arguments.length; t < n; t++) e += arguments[t].length;
                  var r = Array(e),
                    i = 0;
                  for (t = 0; t < n; t++)
                    for (var o = arguments[t], a = 0, s = o.length; a < s; a++, i++) r[i] = o[a];
                  return r
                }(r, [u]), l)
              }, this.setInteractions = function(t) {
                var n = e.getProps(),
                  r = n.onInteractionStart,
                  i = n.onInteractionEnd,
                  o = n.getInstance,
                  a = e.getInteractions(),
                  s = se(se({}, a), t);
                if (wf(a, s) || e.setData(se(se({}, e.getData()), {
                    interactions: s
                  })), jg(a) !== jg(s))
                  if (jg(a)) {
                    var l = e.getData().state;
                    e.updateState((function() {
                      return l && e.applyPostProcess({
                        name: "interactionEnd",
                        immediately: !0,
                        transitions: !0
                      }, l)
                    }), {
                      transitions: !0
                    }, [i])
                  } else Vg(r, o)
              }, this.resetState = function(t, n) {
                e.updateState(e.createDefaultState(t, n))
              }, this.clear = function() {
                e.updateState(null)
              }, this.reconcileState = function(t) {
                void 0 === t && (t = {});
                var n = e.getProps(),
                  r = n.reconcileStateAlgorithm,
                  i = n.settings,
                  o = e.getData().state,
                  a = t.transitions,
                  s = void 0 !== a && a;
                if (o && !ug(o, i)) {
                  var l = (r || Pg)(o, i);
                  l = e.applyPostProcess({
                    name: "reconcileState",
                    immediately: !0,
                    transitions: s
                  }, l), e.updateState(l, {
                    transitions: s
                  })
                }
              }, this.transformImage = function(t, n) {
                void 0 === n && (n = {});
                var r = n.transitions,
                  i = void 0 === r || r,
                  o = n.interaction,
                  a = void 0 === o || o,
                  s = n.immediately,
                  l = void 0 !== s && s,
                  c = n.normalize,
                  u = void 0 === c || c,
                  h = e.getProps(),
                  p = h.transformImageAlgorithm,
                  d = h.onTransformImage,
                  f = h.onTransformImageEnd,
                  g = h.settings,
                  m = e.getData().state,
                  v = [];
                if (m) {
                  u && (t = function(e, t) {
                    return t.scale && (t.scale = {
                      factor: pf(t.scale) ? t.scale : t.scale.factor,
                      center: !pf(t.scale) && t.scale.center ? Mg(e, t.scale.center) : void 0
                    }), t.rotate && (t.rotate = {
                      angle: pf(t.rotate) ? t.rotate : t.rotate.angle,
                      center: !pf(t.rotate) && t.rotate.center ? Mg(e, t.rotate.center) : void 0
                    }), t.move && (t.move = Ig(e, t.move)), t
                  }(m, t));
                  var _ = e.applyPostProcess({
                    name: "transformImage",
                    transitions: i,
                    immediately: l
                  }, (p || Ag)(m, g, t));
                  v.push(d), a ? e.setInteractions({
                    transformImage: {
                      rotate: !sf(t.rotate),
                      flip: !sf(t.flip),
                      scale: !sf(t.scale),
                      move: !sf(t.move)
                    }
                  }) : (_ = e.applyPostProcess({
                    name: "transformImageEnd",
                    transitions: i,
                    immediately: !0
                  }, _), v.push(f)), e.updateState(_, {
                    transitions: l && i
                  }, v)
                }
              }, this.transformImageEnd = function(t) {
                void 0 === t && (t = {});
                var n = t.immediately,
                  r = void 0 === n || n,
                  i = t.transitions,
                  o = void 0 === i || i,
                  a = e.getData().state,
                  s = e.getProps().onTransformImageEnd;
                e.updateState((function() {
                  return a && e.applyPostProcess({
                    name: "transformImageEnd",
                    immediately: r,
                    transitions: o
                  }, a)
                }), {
                  transitions: o
                }, [s]), e.setInteractions({
                  transformImage: {
                    rotate: !1,
                    flip: !1,
                    scale: !1,
                    move: !1
                  }
                })
              }, this.zoomImage = function(t, n) {
                void 0 === n && (n = {});
                var r = n.interaction,
                  i = void 0 !== r && r,
                  o = n.immediately,
                  a = void 0 === o || o,
                  s = n.transitions,
                  l = void 0 === s || s,
                  c = n.normalize,
                  u = void 0 !== c && c;
                e.transformImage({
                  scale: t
                }, {
                  interaction: i,
                  immediately: a,
                  transitions: l,
                  normalize: u
                })
              }, this.moveImage = function(t, n, r) {
                void 0 === r && (r = {});
                var i = r.interaction,
                  o = void 0 !== i && i,
                  a = r.immediately,
                  s = void 0 === a || a,
                  l = r.transitions,
                  c = void 0 === l || l,
                  u = r.normalize,
                  h = void 0 !== u && u;
                e.transformImage({
                  move: {
                    left: t,
                    top: n
                  }
                }, {
                  interaction: o,
                  immediately: s,
                  transitions: c,
                  normalize: h
                })
              }, this.flipImage = function(t, n, r) {
                void 0 === r && (r = {});
                var i = r.interaction,
                  o = void 0 !== i && i,
                  a = r.immediately,
                  s = void 0 === a || a,
                  l = r.transitions,
                  c = void 0 === l || l,
                  u = r.normalize,
                  h = void 0 === u || u,
                  p = e.getState(),
                  d = {
                    horizontal: t,
                    vertical: n
                  };
                e.transformImage({
                  flip: p && h ? Dg(p, d) : d
                }, {
                  interaction: o,
                  immediately: s,
                  transitions: c
                })
              }, this.rotateImage = function(t, n) {
                void 0 === n && (n = {});
                var r = n.interaction,
                  i = void 0 !== r && r,
                  o = n.immediately,
                  a = void 0 === o || o,
                  s = n.transitions,
                  l = void 0 === s || s,
                  c = n.normalize,
                  u = void 0 !== c && c;
                e.transformImage({
                  rotate: t
                }, {
                  interaction: i,
                  immediately: a,
                  transitions: l,
                  normalize: u
                })
              }, this.reset = function(t, n) {
                e.resetState(t, n)
              }, this.setState = function(t, n) {
                void 0 === n && (n = {});
                var r = e.getSettings(),
                  i = e.getData().state,
                  o = n.transitions,
                  a = void 0 === o || o,
                  s = n.immediately,
                  l = void 0 !== s && s,
                  c = n.interaction,
                  u = void 0 !== c && c,
                  h = n.postprocess,
                  p = void 0 !== h && h,
                  d = t && (af(t) ? t(i, r) : se(se({}, i), t));
                e.updateState((function() {
                  return p ? d && e.applyPostProcess({
                    name: "setState",
                    immediately: l,
                    transitions: a,
                    interaction: u
                  }, d) : d
                }), {
                  transitions: a
                })
              }, this.setCoordinates = function(t, n) {
                void 0 === n && (n = {});
                var r = e.getData().state,
                  i = e.getProps(),
                  o = i.setCoordinatesAlgorithm,
                  a = i.settings,
                  s = n.transitions,
                  l = void 0 === s || s,
                  c = n.immediately,
                  u = void 0 === c || c;
                e.updateState((function() {
                  return r && e.applyPostProcess({
                    name: "setCoordinates",
                    immediately: u,
                    transitions: l
                  }, (o || vg)(r, a, t, Sf.zoom))
                }), {
                  transitions: l
                })
              }, this.setVisibleArea = function(t, n) {
                void 0 === n && (n = {});
                var r = n.transitions,
                  i = void 0 === r || r,
                  o = n.immediately,
                  a = void 0 === o || o,
                  s = e.getData().state,
                  l = e.getProps(),
                  c = l.setVisibleAreaAlgorithm,
                  u = l.settings;
                e.updateState((function() {
                  return s && e.applyPostProcess({
                    name: "setVisibleArea",
                    immediately: a,
                    transitions: i
                  }, (c || bg)(s, u, t))
                }), {
                  transitions: i
                })
              }, this.setBoundary = function(t, n) {
                void 0 === n && (n = {});
                var r = e.getData().state,
                  i = e.getProps(),
                  o = i.setBoundaryAlgorithm,
                  a = i.settings,
                  s = n.transitions,
                  l = void 0 !== s && s,
                  c = n.immediately,
                  u = void 0 === c || c;
                t ? e.updateState((function() {
                  return r && e.applyPostProcess({
                    name: "setBoundary",
                    immediately: u,
                    transitions: l
                  }, (o || Og)(r, a, t))
                })) : e.updateState(null)
              }, this.moveCoordinates = function(t, n) {
                void 0 === n && (n = {});
                var r = e.getData(),
                  i = e.getProps(),
                  o = i.moveCoordinatesAlgorithm,
                  a = i.onMove,
                  s = i.onMoveEnd,
                  l = i.settings,
                  c = n.interaction,
                  u = void 0 === c || c,
                  h = n.transitions,
                  p = void 0 !== h && h,
                  d = n.immediately,
                  f = void 0 !== d && d,
                  g = n.normalize,
                  m = void 0 === g || g,
                  v = [];
                if (!r.transitions && r.state) {
                  var _ = m ? Ig(r.state, t) : function(e) {
                      return {
                        left: pf(e.left) ? e.left : 0,
                        top: pf(e.top) ? e.top : 0
                      }
                    }(t),
                    b = e.applyPostProcess({
                      name: "moveCoordinates",
                      interaction: u,
                      immediately: f,
                      transitions: p
                    }, (o || wg)(r.state, l, _));
                  v.push(a), u ? e.setInteractions({
                    moveCoordinates: !0
                  }) : (b = e.applyPostProcess({
                    name: "moveCoordinatesEnd",
                    interaction: u,
                    immediately: f,
                    transitions: p
                  }, b), v.push(s)), e.updateState(b, {
                    transitions: f && p
                  }, v)
                }
              }, this.moveCoordinatesEnd = function(t) {
                void 0 === t && (t = {});
                var n = e.getData().state,
                  r = e.getProps().onMoveEnd,
                  i = t.transitions,
                  o = void 0 === i || i,
                  a = t.immediately,
                  s = void 0 !== a && a;
                e.updateState((function() {
                  return n && e.applyPostProcess({
                    name: "moveCoordinatesEnd",
                    transitions: o,
                    immediately: s
                  }, n)
                }), {
                  transitions: o
                }, [r]), e.setInteractions({
                  moveCoordinates: !1
                })
              }, this.resizeCoordinates = function(t, n, r, i) {
                void 0 === i && (i = {});
                var o = e.getData().state,
                  a = e.getProps(),
                  s = a.resizeCoordinatesAlgorithm,
                  l = a.onResize,
                  c = a.onResizeEnd,
                  u = a.settings,
                  h = i.interaction,
                  p = void 0 === h || h,
                  d = i.transitions,
                  f = void 0 !== d && d,
                  g = i.immediately,
                  m = void 0 !== g && g,
                  v = i.normalize,
                  _ = void 0 === v || v;
                if (!e.getTransitions().active && o) {
                  var b = [],
                    y = _ ? function(e, t) {
                      var n = ig(e);
                      return {
                        left: pf(t.left) ? t.left * n : 0,
                        top: pf(t.top) ? t.top * n : 0,
                        right: pf(t.right) ? t.right * n : 0,
                        bottom: pf(t.bottom) ? t.bottom * n : 0
                      }
                    }(o, n) : function(e) {
                      return {
                        left: pf(e.left) ? e.left : 0,
                        top: pf(e.top) ? e.top : 0,
                        right: pf(e.right) ? e.right : 0,
                        bottom: pf(e.bottom) ? e.bottom : 0
                      }
                    }(n),
                    w = e.applyPostProcess({
                      name: "resizeCoordinates",
                      interaction: p,
                      immediately: m,
                      transitions: f
                    }, (s || Tg)(o, u, t, y, lf(r) ? r : {}));
                  b.push(l), p ? e.setInteractions({
                    resizeCoordinates: !0
                  }) : (w = e.applyPostProcess({
                    name: "resizeCoordinatesEnd",
                    interaction: p,
                    immediately: m,
                    transitions: f
                  }, w), b.push(c)), e.updateState(w, {
                    transitions: m && f
                  }, b)
                }
              }, this.resizeCoordinatesEnd = function(t) {
                void 0 === t && (t = {});
                var n = e.getProps().onResizeEnd,
                  r = e.getData().state,
                  i = t.transitions,
                  o = void 0 === i || i,
                  a = t.immediately,
                  s = void 0 !== a && a;
                e.updateState((function() {
                  return r && e.applyPostProcess({
                    name: "resizeCoordinatesEnd",
                    transitions: o,
                    immediately: s
                  }, r)
                }), {
                  transitions: o
                }, [n]), e.setInteractions({
                  resizeCoordinates: !1
                })
              }, this.getStencilCoordinates = function() {
                return og(e.getData().state)
              }, this.getCoordinates = function(t) {
                void 0 === t && (t = {});
                var n = e.getData().state,
                  r = e.getProps().settings;
                if (n && n.coordinates) {
                  var i = t.round;
                  return void 0 === i || i ? function(e, t) {
                    if (Qf(e)) {
                      var n = ng(e, t),
                        r = rg(e, t),
                        i = {
                          width: Math.round(e.coordinates.width),
                          height: Math.round(e.coordinates.height),
                          left: Math.round(e.coordinates.left),
                          top: Math.round(e.coordinates.top)
                        };
                      return i.width > n.maxWidth ? i.width = Math.floor(e.coordinates.width) : i.width < n.minWidth && (i.width = Math.ceil(e.coordinates.width)), i.height > n.maxHeight ? i.height = Math.floor(e.coordinates.height) : i
                        .height < n.minHeight && (i.height = Math.ceil(e.coordinates.height)), Kf(i, r)
                    }
                    return null
                  }(n, r) : se({}, n.coordinates)
                }
                return null
              }, this.getVisibleArea = function() {
                var t = e.getData().state;
                return (null == t ? void 0 : t.visibleArea) ? se({}, t.visibleArea) : null
              }, this.getSettings = function() {
                var t = e.getProps().settings;
                return se({}, t)
              }, this.getState = function() {
                return dg(e.getData().state)
              }, this.getTransforms = function() {
                var t = e.getData().state;
                return t ? yf(t.transforms) : {
                  rotate: 0,
                  flip: {
                    horizontal: !1,
                    vertical: !1
                  }
                }
              }, this.createDefaultState = function(t, n) {
                var r = e.getProps(),
                  i = r.createStateAlgorithm,
                  o = r.settings;
                return e.applyPostProcess({
                  name: "createState",
                  immediately: !0,
                  transitions: !1
                }, (i || yg)({
                  image: n,
                  boundary: t
                }, o))
              }, this.isConsistent = function() {
                var t = e.getData().state,
                  n = e.getProps().settings;
                return !t || ug(t, n)
              }
            },
            Yg = {
              linear: function(e) {
                return e
              },
              "ease-in": function(e) {
                return Math.pow(e, 1.675)
              },
              "ease-out": function(e) {
                return 1 - Math.pow(1 - e, 1.675)
              },
              "ease-in-out": function(e) {
                return .5 * (Math.sin((e - .5) * Math.PI) + 1)
              }
            },
            qg = function() {
              function e() {
                this.active = !1
              }
              return e.prototype.start = function(e) {
                var t;
                this.onStart = e.onStart, this.onProgress = e.onProgress, this.onStop = e.onStop, this.active || null === (t = this.onStart) || void 0 === t || t.call(this), this.id && window.cancelAnimationFrame(this.id), this.startTime =
                  performance.now(), this.timingFunction = e.timingFunction, this.endTime = this.startTime + e.duration, this.active = !0, this.animate()
              }, e.prototype.animate = function() {
                var e = this;
                if (this.startTime && this.endTime) {
                  var t = Yg[this.timingFunction];
                  t || (t = Yg["ease-out"]);
                  var n = 1 - (this.endTime - performance.now()) / (this.endTime - this.startTime),
                    r = Math.min(1, t(n));
                  this.onProgress && this.onProgress(r), n < 1 ? this.id = window.requestAnimationFrame((function() {
                    return e.animate()
                  })) : this.stop()
                } else this.stop()
              }, e.prototype.stop = function() {
                this.active = !1, this.id && window.cancelAnimationFrame(this.id), this.onStop && this.onStop()
              }, e
            }();

          function Kg(e, t, n, r, i) {
            if (Qf(e)) {
              var o = e.transforms,
                a = e.coordinates,
                s = 0 !== o.rotate || o.flip.horizontal || o.flip.vertical ? function(e, t, n) {
                  var r = n.rotate,
                    i = n.flip,
                    o = {
                      width: "naturalWidth" in t ? t.naturalWidth : t.width,
                      height: "naturalHeight" in t ? t.naturalHeight : t.height
                    },
                    a = Vf(o, r),
                    s = e.getContext("2d");
                  if (e.height = a.height, e.width = a.width, s) {
                    s.save();
                    var l = Xf(Pf(se({
                      left: 0,
                      top: 0
                    }, o)), r);
                    s.translate(-(l.left - a.width / 2), -(l.top - a.height / 2)), s.rotate(r * Math.PI / 180), s.translate(i.horizontal ? o.width : 0, i.vertical ? o.height : 0), s.scale(i.horizontal ? -1 : 1, i.vertical ? -1 : 1), s.drawImage(
                      t, 0, 0, o.width, o.height), s.restore()
                  }
                  return e
                }(r, t, o) : t,
                l = se({
                  minWidth: 0,
                  minHeight: 0,
                  maxWidth: 1 / 0,
                  maxHeight: 1 / 0,
                  maxArea: 1 / 0,
                  imageSmoothingEnabled: !0,
                  imageSmoothingQuality: "high",
                  fillColor: "transparent"
                }, i),
                c = function(e) {
                  return e.find((function(e) {
                    return ff(e)
                  }))
                },
                u = fg({
                  sizeRestrictions: {
                    minWidth: c([l.width, l.minWidth]) || 0,
                    minHeight: c([l.height, l.minHeight]) || 0,
                    maxWidth: c([l.width, l.maxWidth]) || 1 / 0,
                    maxHeight: c([l.height, l.maxHeight]) || 1 / 0
                  },
                  width: a.width,
                  height: a.height,
                  aspectRatio: {
                    minimum: a.width / a.height,
                    maximum: a.width / a.height
                  }
                });
              if (l.maxArea && u.width * u.height > l.maxArea) {
                var h = Math.sqrt(l.maxArea / (u.width * u.height));
                u = {
                  width: Math.round(h * u.width),
                  height: Math.round(h * u.height)
                }
              }
              return function(e, t, n, r, i) {
                e.width = r ? r.width : n.width, e.height = r ? r.height : n.height;
                var o = e.getContext("2d");
                if (o) {
                  o.clearRect(0, 0, e.width, e.height), i && (i.imageSmoothingEnabled && (o.imageSmoothingEnabled = i.imageSmoothingEnabled), i.imageSmoothingQuality && (o.imageSmoothingQuality = i.imageSmoothingQuality), i.fillColor && (o
                    .fillStyle = i.fillColor, o.fillRect(0, 0, e.width, e.height), o.save()));
                  var a = n.left < 0 ? -n.left : 0,
                    s = n.top < 0 ? -n.top : 0;
                  o.drawImage(t, n.left + a, n.top + s, n.width, n.height, a, s, e.width, e.height)
                }
                return e
              }(n, s, a, u, l)
            }
            return null
          }

          function $g(e, t, n) {
            t.style.width = "0px", t.style.height = "0px", t.style.width = Math.max(e.clientWidth, n.width) + "px";
            var r = n.width / n.height;
            t.style.height = Math.max(e.clientHeight, t.clientWidth / r) + "px", t.style.width = t.clientHeight * r + "px"
          }

          function Zg(e, t, n) {
            t.style.width = "0px", t.style.height = "0px", t.style.width = Math.max(e.getBoundingClientRect().width, n.width) + "px";
            var r = n.width / n.height;
            t.style.height = Math.max(e.getBoundingClientRect().height, t.getBoundingClientRect().width / r) + "px", t.style.width = t.getBoundingClientRect().height * r + "px", t.clientWidth / t.clientHeight > e.clientWidth / e.clientHeight ? t
              .clientWidth > e.clientWidth && (t.style.width = e.clientWidth + "px", t.style.height = e.clientWidth / r + "px") : t.clientHeight > e.clientHeight && (t.style.height = e.clientHeight + "px", t.style.width = e.clientHeight * r +
                "px")
          }
          var Jg = 4;

          function Qg(e) {
            return new Promise((function(t, n) {
              try {
                if (e)
                  if (/^data:/i.test(e)) t(function(e) {
                    e = e.replace(/^data:([^;]+);base64,/gim, "");
                    for (var t = atob(e), n = t.length, r = new ArrayBuffer(n), i = new Uint8Array(r), o = 0; o < n; o++) i[o] = t.charCodeAt(o);
                    return r
                  }(e));
                  else if (/^blob:/i.test(e)) {
                  var r = new FileReader;
                  r.onload = function(e) {
                    var n;
                    t(null === (n = e.target) || void 0 === n ? void 0 : n.result)
                  }, o = e, a = function(e) {
                    r.readAsArrayBuffer(e)
                  }, (s = new XMLHttpRequest).open("GET", o, !0), s.responseType = "blob", s.onload = function() {
                    200 != this.status && 0 !== this.status || a(this.response)
                  }, s.send()
                } else {
                  var i = new XMLHttpRequest;
                  i.onreadystatechange = function() {
                    i.readyState === Jg && (200 === i.status || 0 === i.status ? t(i.response) : n("Warning: could not load an image to parse its orientation"))
                  }, i.onprogress = function() {
                    "image/jpeg" !== i.getResponseHeader("content-type") && i.abort()
                  }, i.withCredentials = !1, i.open("GET", e, !0), i.responseType = "arraybuffer", i.send(null)
                } else n("Error: the image is empty")
              } catch (e) {
                n(e)
              }
              var o, a, s
            }))
          }

          function em(e) {
            var t = e.rotate,
              n = void 0 === t ? 0 : t,
              r = e.flip,
              i = void 0 === r ? {
                horizontal: !1,
                vertical: !1
              } : r,
              o = e.scale,
              a = void 0 === o ? 1 : o;
            return " rotate(" + n + "deg) scaleX(" + a * (i.horizontal ? -1 : 1) + ") scaleY(" + a * (i.vertical ? -1 : 1) + ")"
          }

          function tm(e) {
            try {
              var t, n = new DataView(e),
                r = void 0,
                i = void 0,
                o = void 0,
                a = void 0;
              if (255 === n.getUint8(0) && 216 === n.getUint8(1))
                for (var s = n.byteLength, l = 2; l + 1 < s;) {
                  if (255 === n.getUint8(l) && 225 === n.getUint8(l + 1)) {
                    o = l;
                    break
                  }
                  l++
                }
              if (o && (r = o + 10, "Exif" === function(e, t, n) {
                  var r, i = "";
                  for (r = t, n += t; r < n; r++) i += String.fromCharCode(e.getUint8(r));
                  return i
                }(n, o + 4, 4))) {
                var c = n.getUint16(r);
                if (((i = 18761 === c) || 19789 === c) && 42 === n.getUint16(r + 2, i)) {
                  var u = n.getUint32(r + 4, i);
                  u >= 8 && (a = r + u)
                }
              }
              if (a)
                for (var h = n.getUint16(a, i), p = 0; p < h; p++) {
                  l = a + 12 * p + 2;
                  if (274 === n.getUint16(l, i)) {
                    l += 8, t = n.getUint16(l, i), n.setUint16(l, 1, i);
                    break
                  }
                }
              return t
            } catch (e) {
              return null
            }
          }

          function nm(e) {
            var t = e.src,
              n = e.arrayBuffer,
              r = void 0 === n ? null : n,
              i = e.orientation,
              o = void 0 === i ? null : i,
              a = {
                src: t,
                arrayBuffer: r,
                revoke: !1,
                transforms: {
                  flip: {
                    horizontal: !1,
                    vertical: !1
                  },
                  rotate: 0
                }
              };
            return r && o && o > 1 ? nf(t) || !rf(t) ? (a.src = URL.createObjectURL(new Blob([r])), a.revoke = !0) : a.src = function(e) {
              for (var t = [], n = new Uint8Array(e); n.length > 0;) {
                var r = n.subarray(0, 8192);
                t.push(String.fromCharCode.apply(null, Array.from ? Array.from(r) : r.slice())), n = n.subarray(8192)
              }
              return "data:image/jpeg;base64," + btoa(t.join(""))
            }(r) : a.src = t, o && (a.transforms = function(e) {
              var t = {
                flip: {
                  horizontal: !1,
                  vertical: !1
                },
                rotate: 0
              };
              if (e) switch (e) {
                case 2:
                  t.flip.horizontal = !0;
                  break;
                case 3:
                  t.rotate = -180;
                  break;
                case 4:
                  t.flip.vertical = !0;
                  break;
                case 5:
                  t.rotate = 90, t.flip.vertical = !0;
                  break;
                case 6:
                  t.rotate = 90;
                  break;
                case 7:
                  t.rotate = 90, t.flip.horizontal = !0;
                  break;
                case 8:
                  t.rotate = -90
              }
              return t
            }(o)), a
          }

          function rm(e, t) {
            return void 0 === t && (t = {}),
              function(e, t) {
                void 0 === t && (t = {});
                var n = t.checkOrientation,
                  r = t.parse;
                return new Promise((function(t) {
                  n || r ? Qg(e).then((function(n) {
                    var r = tm(n);
                    t(nm(n ? {
                      src: e,
                      arrayBuffer: n,
                      orientation: r
                    } : {
                      src: e,
                      arrayBuffer: null,
                      orientation: null
                    }))
                  })).catch((function(n) {
                    t(nm({
                      src: e
                    }))
                  })) : t(nm({
                    src: e
                  }))
                }))
              }(e, se(se({}, t), {
                crossOrigin: of(e) && t.crossOrigin
              })).then((function(e) {
                return new Promise((function(n, r) {
                  (function(e, t) {
                    return void 0 === t && (t = {}), new Promise((function(n, r) {
                      var i = document.createElement("img");
                      t.crossOrigin && (i.crossOrigin = !0 !== t.crossOrigin ? t.crossOrigin : "anonymous"), i.src = e, i.style.visibility = "hidden", i.style.position = "fixed", document.body.appendChild(i), i.complete ? (n(i),
                        document.body.removeChild(i)) : (i.addEventListener("load", (function() {
                        n(i), document.body.removeChild(i)
                      })), i.addEventListener("error", (function() {
                        r(null), document.body.removeChild(i)
                      })))
                    }))
                  })(e.src, t).then((function(t) {
                    n(se(se({}, e), {
                      width: t.naturalWidth,
                      height: t.naturalHeight
                    }))
                  })).catch((function() {
                    r(null)
                  }))
                }))
              }))
          }

          function im(e, t, n, r, i) {
            void 0 === i && (i = null);
            var o = e.width > e.height ? {
                width: Math.min(512, e.width),
                height: Math.min(512, e.width) / (e.width / e.height)
              } : {
                height: Math.min(512, e.height),
                width: Math.min(512, e.height) * (e.width / e.height)
              },
              a = cg(t),
              s = {
                rotate: t.transforms.rotate,
                flip: {
                  horizontal: t.transforms.flip.horizontal,
                  vertical: t.transforms.flip.vertical
                },
                translateX: n.left / r,
                translateY: n.top / r,
                scale: 1 / r
              },
              l = {
                left: (o.width - a.width) / (2 * r),
                top: (o.height - a.height) / (2 * r)
              },
              c = {
                left: (1 - 1 / r) * o.width / 2,
                top: (1 - 1 / r) * o.height / 2
              },
              u = se(se({}, s), {
                scale: s.scale * (e.width / o.width)
              }),
              h = {
                width: o.width + "px",
                height: o.height + "px",
                left: "0px",
                top: "0px",
                transition: "none",
                transform: "translate3d(" + (-l.left - c.left - s.translateX) + "px, " + (-l.top - c.top - s.translateY) + "px, 0px)" + em(u),
                willChange: "none"
              };
            return i && i.active && (h.willChange = "transform", h.transition = i.duration + "ms " + i.timingFunction), h
          }

          function om(e, t, n) {
            return n.immediately ? function(e, t) {
              if (Qf(e)) {
                var n = dg(e),
                  r = {
                    width: 0,
                    height: 0
                  };
                Lf(n.boundary) > Lf(n.coordinates) ? (r.height = .8 * n.boundary.height, r.width = r.height * Lf(n.coordinates)) : (r.width = .8 * n.boundary.width, r.height = r.width * Lf(n.coordinates)), n.visibleArea = jf(n.visibleArea, n
                  .coordinates.width * n.boundary.width / (n.visibleArea.width * r.width));
                var i = Hf(n.visibleArea, eg(n, t));
                return n.visibleArea = jf(n.visibleArea, i), 1 !== i && (r.height /= i, r.width /= i), n.visibleArea = Nf(n.visibleArea, Af(Pf(n.coordinates), Pf(n.visibleArea))), n.visibleArea = Kf(n.visibleArea, tg(n, t)), n.coordinates = Kf(
                  n.coordinates, Yf(Rf(n.visibleArea), rg(n, t))), n
              }
              return e
            }(e, t) : e
          }
          var am = function(e, t) {
            var n, r = (n = vt(!0)).current ? (n.current = !1, !0) : n.current;
            gt((function() {
              if (!r) return e()
            }), t)
          };
          var sm = function(e) {
            function t(t, n) {
              var r = e.call(this) || this;
              return r.props = t, r.notify = n, r.data = {
                state: null,
                transitions: !1,
                interactions: {
                  moveCoordinates: !1,
                  resizeCoordinates: !1,
                  transformImage: {
                    rotate: !1,
                    move: !1,
                    scale: !1,
                    flip: !1
                  }
                }
              }, r
            }
            return ae(t, e), t.prototype.getProps = function() {
              return this.props()
            }, t.prototype.setData = function(e) {
              this.data = e, this.notify()
            }, t.prototype.getData = function() {
              return this.data
            }, t
          }(Gg);

          function lm() {
            var e = he(dt({}), 2)[1];
            return function() {
              e({})
            }
          }

          function cm(e) {
            var t = lm(),
              n = function(e) {
                var t = vt(e);
                return t.current = e,
                  function() {
                    for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];
                    return t.current.apply(t, pe([], he(e), !1))
                  }
              }((function() {
                var t = e(),
                  n = t.settings,
                  r = le(t, ["settings"]),
                  i = se({
                    imageRestriction: kf.fitArea,
                    transformImage: {
                      adjustStencil: !0
                    }
                  }, n),
                  o = se({
                    transitions: !0
                  }, r);
                return se({
                  settings: se(se({}, i), Wg(i))
                }, o)
              }));
            return vt(new sm(n, t)).current
          }
          var um = function(e) {
            var t = vt(e),
              n = function() {
                t.current && t.current()
              };
            gt((function() {
              t.current = e
            }), [e]), gt((function() {
              return window.addEventListener("resize", n), window.addEventListener("orientationchange", n),
                function() {
                  window.removeEventListener("resize", n), window.removeEventListener("orientationchange", n)
                }
            }), [])
          };

          function hm(e) {
            var t = this,
              n = e(),
              r = n.src,
              i = n.onReady,
              o = n.onError,
              a = n.onUpdate,
              s = n.canvas,
              l = void 0 === s || s,
              c = n.unloadTime,
              u = void 0 === c ? 500 : c,
              h = n.crossOrigin,
              p = void 0 === h || h,
              d = n.checkOrientation,
              f = void 0 === d || d,
              g = n.autoReconcileState,
              m = void 0 === g || g,
              v = vt(null),
              _ = vt(null),
              b = vt(null),
              y = vt(null),
              w = he(function(e) {
                var t = he(dt(e), 2),
                  n = t[0],
                  r = t[1],
                  i = he(dt(null), 2),
                  o = i[0],
                  a = i[1],
                  s = vt(e);
                return am((function() {
                  o && o(n, s.current)
                }), [o]), [n, function(e, t) {
                  s.current = n, r(e), a((function() {
                    return t
                  }))
                }]
              }(null), 2),
              x = w[0],
              k = w[1],
              C = cm((function() {
                return se(se({}, e()), {
                  getInstance: function() {
                    return y.current
                  }
                })
              })),
              S = function(e) {
                var t = e.src,
                  n = e.onLoadingStart,
                  r = e.onLoadingEnd,
                  i = e.onError,
                  o = e.onLoad,
                  a = e.crossOrigin,
                  s = e.checkOrientation,
                  l = e.canvas,
                  c = e.unloadTime,
                  u = he(dt(!1), 2),
                  h = u[0],
                  p = u[1],
                  d = he(dt(!1), 2),
                  f = d[0],
                  g = d[1],
                  m = he(dt(null), 2),
                  v = m[0],
                  _ = m[1],
                  b = vt(null);
                return gt((function() {
                  if (b.current !== t)
                    if (b.current = t || null, g(!1), t) {
                      p(!0), null == n || n();
                      var e = [rm(t, {
                        crossOrigin: sf(a) ? l : a,
                        checkOrientation: s
                      })];
                      f && c && e.push(bf(c)), Promise.all(e).then((function(e) {
                        var n = he(e, 1)[0];
                        b.current === t && (_(n), null == o || o(n))
                      })).catch((function() {
                        b.current === t && (null == i || i())
                      })).finally((function() {
                        b.current === t && (null == r || r(), p(!1))
                      }))
                    } else c ? bf(c).then((function() {
                      _(null)
                    })) : _(null)
                }), [t]), gt((function() {
                  v && g(!0)
                }), [v]), {
                  isLoading: function() {
                    return h
                  },
                  isLoaded: function() {
                    return f
                  },
                  getImage: function() {
                    return v
                  },
                  setImage: _
                }
              }({
                src: r,
                crossOrigin: p,
                checkOrientation: f,
                unloadTime: u,
                canvas: l,
                onLoad: function() {
                  y.current && (null == i || i(y.current))
                },
                onError: function() {
                  y.current && (null == o || o(y.current))
                }
              }),
              E = function(e, t) {
                void 0 === t && (t = !0);
                var n = he(dt(t), 2),
                  r = n[0],
                  i = n[1];
                return mt((function() {
                  r && !e.hasInteractions() && e.reconcileState()
                })), {
                  pause: function() {
                    i(!1)
                  },
                  resume: function() {
                    i(!0)
                  }
                }
              }(C, m),
              T = function() {
                return ce(t, void 0, void 0, (function() {
                  var e, t, n;
                  return ue(this, (function(r) {
                    switch (r.label) {
                      case 0:
                        return _.current ? (E.pause(), e = S.getImage(), [4, null === (n = _.current) || void 0 === n ? void 0 : n.stretchTo(e)]) : [3, 2];
                      case 1:
                        t = r.sent(), k(e, (function() {
                          t && e ? C.reset(t, e) : C.clear()
                        })), E.resume(), r.label = 2;
                      case 2:
                        return [2]
                    }
                  }))
                }))
              },
              O = function() {
                return ce(t, void 0, void 0, (function() {
                  var e, t, n, r;
                  return ue(this, (function(i) {
                    switch (i.label) {
                      case 0:
                        return _.current ? (E.pause(), e = S.getImage(), [4, null === (r = _.current) || void 0 === r ? void 0 : r.stretchTo(e)]) : [3, 2];
                      case 1:
                        (t = i.sent()) && e ? (n = C.getState()) ? t.width === n.boundary.width && t.height === n.boundary.height || (C.setBoundary(t), C.reconcileState()) : C.reset(t, e) : C.clear(), E.resume(), i.label = 2;
                      case 2:
                        return [2]
                    }
                  }))
                }))
              },
              A = {
                reset: function() {
                  return T()
                },
                refresh: function() {
                  return O()
                },
                setImage: function(e) {
                  return k(e)
                },
                reconcileState: C.reconcileState,
                moveCoordinates: C.moveCoordinates,
                moveCoordinatesEnd: C.moveCoordinatesEnd,
                resizeCoordinates: C.resizeCoordinates,
                clear: C.clear,
                resizeCoordinatesEnd: C.resizeCoordinatesEnd,
                moveImage: C.moveImage,
                flipImage: C.flipImage,
                zoomImage: C.zoomImage,
                rotateImage: C.rotateImage,
                transformImage: C.transformImage,
                transformImageEnd: C.transformImageEnd,
                setCoordinates: C.setCoordinates,
                setVisibleArea: C.setVisibleArea,
                startTransitions: C.startTransitions,
                setState: C.setState,
                hasInteractions: C.hasInteractions,
                getStencilCoordinates: C.getStencilCoordinates,
                getCoordinates: C.getCoordinates,
                getVisibleArea: C.getVisibleArea,
                getTransforms: C.getTransforms,
                getTransitions: C.getTransitions,
                getInteractions: C.getInteractions,
                getSettings: C.getSettings,
                getState: C.getState,
                getDefaultState: function() {
                  var e = C.getState(),
                    t = S.getImage();
                  return e && t ? C.createDefaultState(e.boundary, t) : null
                },
                getCanvas: function(e) {
                  var t = C.getState();
                  return v.current && b.current && t ? b.current.draw(t, v.current, e) : null
                },
                getImage: function() {
                  return x ? se({}, x) : null
                },
                isLoading: S.isLoading,
                isLoaded: S.isLoaded
              };
            return um((function() {
              O()
            })), am((function() {
              T()
            }), [S.getImage()]), am((function() {
              y.current && (null == a || a(y.current))
            }), [S.isLoaded(), S.isLoading()]), _t(y, (function() {
              return A
            })), {
              cropper: A,
              refs: {
                image: v,
                boundary: _,
                canvas: b
              },
              image: x
            }
          }
          var pm = Ft((function(e, t) {
            var n = e.className,
              r = e.style,
              i = e.stretcherClassName,
              o = e.contentClassName,
              a = e.stretchAlgorithm,
              s = void 0 === a ? $g : a,
              l = e.sizeAlgorithm,
              c = void 0 === l ? zg : l,
              u = e.children,
              h = vt(null),
              p = vt(null);
            return _t(t, (function() {
              return {
                reset: function() {
                  var e = h.current;
                  e && (e.style.height = "", e.style.width = "")
                },
                stretchTo: function(e) {
                  var t = h.current,
                    n = p.current;
                  if ((null == e ? void 0 : e.width) && (null == e ? void 0 : e.height) && t && n) {
                    s(n, t, e);
                    var r = c(n, e);
                    return Promise.resolve(r.width && r.height ? r : null)
                  }
                  return t && (t.style.height = "", t.style.width = ""), Promise.resolve(null)
                }
              }
            })), Nn.createElement("div", {
              ref: p,
              style: r,
              className: Rl("advanced-cropper-boundary", n)
            }, Nn.createElement("div", {
              ref: h,
              className: Rl(["advanced-cropper-boundary__stretcher", i])
            }), Nn.createElement("div", {
              className: Rl(["advanced-cropper-boundary__content", o])
            }, u))
          }));
          pm.displayName = "StretchableBoundary";
          var dm = function(e) {
              var t = e.visible,
                n = e.className,
                r = e.style,
                i = e.children;
              return Nn.createElement("div", {
                style: r,
                className: Rl(n, "advanced-cropper-fade", Boolean(t) && "advanced-cropper-fade--visible")
              }, i)
            },
            fm = function(e) {
              var t = e.cropper,
                n = e.children,
                r = e.className,
                i = e.style,
                o = t ? t.getState() : null,
                a = !!t && t.isLoaded();
              return Nn.createElement("div", {
                className: Rl(r, "advanced-cropper-wrapper"),
                style: i
              }, Nn.createElement(dm, {
                visible: o && a,
                className: "advanced-cropper-wrapper__fade"
              }, n))
            };

          function gm(e) {
            e.preventDefault()
          }
          var mm = Ft((function(e, t) {
            var n = e.className,
              r = e.cropper,
              i = e.crossOrigin,
              o = void 0 === i || i,
              a = r.getState(),
              s = r.getTransitions(),
              l = r.getImage(),
              c = l && a ? function(e, t, n) {
                return void 0 === n && (n = null), e && t && t.visibleArea ? im(e, t, t.visibleArea, ig(t), n) : {}
              }(l, a, s) : {},
              u = l ? l.src : void 0;
            return u ? Nn.createElement("img", {
              key: u,
              ref: t,
              className: Rl("advanced-cropper-background-image", n),
              src: u,
              crossOrigin: !0 === o ? "anonymous" : o || void 0,
              style: c,
              onMouseDown: gm
            }) : null
          }));
          mm.displayName = "CropperBackgroundImage";
          var vm = Ft((function(e, t) {
            var n = vt(null),
              r = vt(null);
            return _t(t, (function() {
              return {
                draw: function(e, t, i) {
                  return void 0 === i && (i = {}), t && n.current && r.current ? Kg(e, t, n.current, r.current, i) : null
                }
              }
            })), Nn.createElement(Nn.Fragment, null, Nn.createElement("canvas", {
              className: "advanced-cropper-canvas",
              ref: n
            }), Nn.createElement("canvas", {
              className: "advanced-cropper-canvas",
              ref: r
            }))
          }));
          vm.displayName = "CropperCanvas";
          var _m = function(e) {
              function t(t) {
                var n = e.call(this, t) || this;
                return n.processMove = function(e, t) {
                  var r, i = n.container.current;
                  if (i && n.touches.length) {
                    var o = i.getBoundingClientRect(),
                      a = o.left,
                      s = o.top;
                    if (1 === n.touches.length && 1 === t.length && n.props.onMove) {
                      var l = {
                          left: Math.abs(t[0].clientX - n.anchor.left - a) < Math.abs(n.touches[0].clientX - n.anchor.left - a),
                          top: Math.abs(t[0].clientY - n.anchor.top - s) < Math.abs(n.touches[0].clientY - n.anchor.top - s)
                        },
                        c = {
                          left: 0,
                          top: 0
                        };
                      n.props.useAnchor && l.left || (c.left = t[0].clientX - n.touches[0].clientX), n.props.useAnchor && l.top || (c.top = t[0].clientY - n.touches[0].clientY), null === (r = n.props) || void 0 === r || r.onMove(c, e), n
                        .touches = pe([], he(t), !1)
                    }
                  }
                }, n.processEnd = function() {
                  var e = n.props,
                    t = e.onMoveEnd,
                    r = e.onLeave;
                  !n.props.disabled && n.touches.length && (null == t || t()), n.hovered && (null == r || r(), n.hovered = !1), n.touches = []
                }, n.initAnchor = function(e) {
                  var t = n.container.current;
                  if (t) {
                    var r = t.getBoundingClientRect(),
                      i = r.left,
                      o = r.top;
                    n.anchor = {
                      left: e.clientX - i,
                      top: e.clientY - o
                    }
                  }
                }, n.onMouseOver = function() {
                  var e = n.props,
                    t = e.onEnter,
                    r = e.disabled;
                  n.hovered || r || (n.hovered = !0, null == t || t())
                }, n.onMouseLeave = function() {
                  var e = n.props.onLeave;
                  n.hovered && !n.touches.length && (n.hovered = !1, null == e || e())
                }, n.onTouchStart = function(e) {
                  var t = n.props,
                    r = t.onEnter,
                    i = t.onMoveStart,
                    o = t.disabled;
                  if (e.cancelable) {
                    n.touches = Array.from(e.touches);
                    var a = !o && 1 === e.touches.length;
                    a && (n.touches = Array.from(e.touches), null == i || i()), n.hovered || o || (n.hovered = !0, null == r || r()), (n.started || a) && (e.preventDefault(), e.stopPropagation())
                  }
                }, n.onTouchEnd = function() {
                  n.started = !1, n.processEnd()
                }, n.onTouchMove = function(e) {
                  n.touches.length >= 1 && (n.started ? (n.processMove(e, Array.from(e.touches)), e.preventDefault(), e.stopPropagation()) : gf({
                    left: n.touches[0].clientX,
                    top: n.touches[0].clientY
                  }, {
                    left: e.touches[0].clientX,
                    top: e.touches[0].clientY
                  }) > (n.props.activationDistance || 0) && (n.initAnchor({
                    clientX: e.touches[0].clientX,
                    clientY: e.touches[0].clientY
                  }), n.started = !0))
                }, n.onMouseDown = function(e) {
                  var t = n.props,
                    r = t.onMoveStart;
                  if (!t.disabled && 0 === e.button) {
                    var i = {
                      clientX: e.clientX,
                      clientY: e.clientY
                    };
                    n.touches = [i], n.initAnchor(i), e.stopPropagation(), null == r || r()
                  }
                }, n.onMouseMove = function(e) {
                  !n.props.disabled && n.touches.length && (n.processMove(e, [{
                    clientX: e.clientX,
                    clientY: e.clientY
                  }]), e.preventDefault && e.cancelable && e.preventDefault(), e.stopPropagation())
                }, n.onMouseUp = function() {
                  n.processEnd()
                }, n.touches = [], n.hovered = !1, n.started = !1, n.anchor = {
                  left: 0,
                  top: 0
                }, n.container = {
                  current: null
                }, n
              }
              return ae(t, e), t.prototype.componentWillUnmount = function() {
                window.removeEventListener("mouseup", this.onMouseUp), window.removeEventListener("mousemove", this.onMouseMove), window.removeEventListener("touchmove", this.onTouchMove), window.removeEventListener("touchend", this
                .onTouchEnd);
                var e = this.container.current;
                e && (e.removeEventListener("touchstart", this.onTouchStart), e.removeEventListener("mousedown", this.onMouseDown))
              }, t.prototype.componentDidMount = function() {
                window.addEventListener("mouseup", this.onMouseUp, {
                  passive: !1
                }), window.addEventListener("mousemove", this.onMouseMove, {
                  passive: !1
                }), window.addEventListener("touchmove", this.onTouchMove, {
                  passive: !1
                }), window.addEventListener("touchend", this.onTouchEnd, {
                  passive: !1
                });
                var e = this.container.current;
                e && (e.addEventListener("touchstart", this.onTouchStart, {
                  passive: !1
                }), e.addEventListener("mousedown", this.onMouseDown, {
                  passive: !1
                }))
              }, t.prototype.componentDidUpdate = function(e) {
                this.props.disabled && !e.disabled && (this.touches = [])
              }, t.prototype.render = function() {
                var e = this.props,
                  t = e.children,
                  n = e.className;
                return Nn.createElement("div", {
                  className: Rl("advanced-cropper-draggable-element", n),
                  ref: this.container,
                  onMouseOver: this.onMouseOver,
                  onMouseLeave: this.onMouseLeave
                }, t)
              }, t.defaultProps = {
                disabled: !1,
                activationDistance: 30,
                useAnchor: !0,
                rerender: !0
              }, t
            }(Me),
            bm = function(e) {
              var t = e.position,
                n = e.className,
                r = e.disabled,
                i = e.onDrag,
                o = e.onDragEnd,
                a = e.onLeave,
                s = e.onEnter,
                l = e.children;
              return Nn.createElement(_m, {
                className: Rl(["advanced-cropper-line-wrapper", t && "advanced-cropper-line-wrapper--".concat(t), n]),
                disabled: r,
                onMove: i,
                onMoveEnd: o,
                onLeave: a,
                onEnter: s,
                activationDistance: 0
              }, Nn.createElement("div", {
                className: Rl(["advanced-cropper-line-wrapper__content", t && "advanced-cropper-line-wrapper__content--".concat(t)])
              }, l))
            },
            ym = function(e) {
              var t, n, r = e.position,
                i = e.hoverClassName,
                o = e.wrapperClassName,
                a = e.defaultClassName,
                s = e.disabled,
                l = e.onMove,
                c = e.onMoveEnd,
                u = he(dt(!1), 2),
                h = u[0],
                p = u[1];
              return Nn.createElement(bm, {
                className: Rl("advanced-cropper-simple-line-wrapper", o, (t = {}, t["advanced-cropper-simple-line-wrapper--".concat(r)] = !!r, t)),
                position: r,
                disabled: s,
                onDrag: l,
                onDragEnd: c,
                onLeave: function() {
                  p(!1)
                },
                onEnter: function() {
                  p(!0)
                }
              }, Nn.createElement("div", {
                className: Rl("advanced-cropper-simple-line", h && "advanced-cropper-simple-line--hover", a, h && i, (n = {}, n["advanced-cropper-simple-line--".concat(r)] = !!r, n))
              }))
            },
            wm = function(e) {
              var t = e.horizontalPosition,
                n = e.verticalPosition,
                r = e.className,
                i = e.disabled,
                o = e.onDrag,
                a = e.onDragEnd,
                s = e.onLeave,
                l = e.onEnter,
                c = e.children,
                u = e.style,
                h = t || n ? tf(t, n).snakeCase : null;
              return Nn.createElement("div", {
                style: u,
                className: Rl(r, "advanced-cropper-handler-wrapper", h && "advanced-cropper-handler-wrapper--".concat(h), i && "advanced-cropper-handler-wrapper--disabled")
              }, Nn.createElement(_m, {
                className: "advanced-cropper-handler-wrapper__draggable",
                disabled: i,
                onMove: o,
                onMoveEnd: a,
                onLeave: s,
                onEnter: l,
                activationDistance: 0
              }, c))
            },
            xm = function(e) {
              var t, n = e.verticalPosition,
                r = e.horizontalPosition,
                i = e.hoverClassName,
                o = e.wrapperClassName,
                a = e.defaultClassName,
                s = e.wrapperStyle,
                l = e.disabled,
                c = e.onMove,
                u = e.onMoveEnd,
                h = he(dt(!1), 2),
                p = h[0],
                d = h[1];
              return Nn.createElement(wm, {
                style: s,
                className: Rl("advanced-cropper-simple-handler-wrapper", o, n && "advanced-cropper-simple-handler-wrapper--".concat(n), r && "advanced-cropper-simple-handler-wrapper--".concat(r), r && n &&
                  "advanced-cropper-simple-handler-wrapper--".concat(r, "-").concat(n), p && "advanced-cropper-simple-handler-wrapper--hover"),
                verticalPosition: n,
                horizontalPosition: r,
                disabled: l,
                onDrag: c,
                onDragEnd: u,
                onLeave: function() {
                  d(!1)
                },
                onEnter: function() {
                  d(!0)
                }
              }, Nn.createElement("div", {
                className: Rl("advanced-cropper-simple-handler", p && "advanced-cropper-simple-handler--hover", a, p && i, (t = {}, t["advanced-cropper-simple-handler--".concat(n)] = !!n, t["advanced-cropper-simple-handler--".concat(r)] = !
                  !r, t["advanced-cropper-simple-handler--".concat(r, "-").concat(n)] = r && n, t))
              }))
            },
            km = ["east", "west", null],
            Cm = ["south", "north", null],
            Sm = function(e) {
              var t = e.style,
                n = e.className,
                r = e.children,
                i = e.onResize,
                o = e.onResizeEnd,
                a = e.handlerComponent,
                s = void 0 === a ? xm : a,
                l = e.handlers,
                c = void 0 === l ? {
                  eastNorth: !0,
                  north: !0,
                  westNorth: !0,
                  west: !0,
                  westSouth: !0,
                  south: !0,
                  eastSouth: !0,
                  east: !0
                } : l,
                u = e.handlerClassNames,
                h = void 0 === u ? {} : u,
                p = e.handlerWrapperClassNames,
                d = void 0 === p ? {} : p,
                f = e.lines,
                g = void 0 === f ? {
                  west: !0,
                  north: !0,
                  east: !0,
                  south: !0
                } : f,
                m = e.lineComponent,
                v = void 0 === m ? ym : m,
                _ = e.lineClassNames,
                b = void 0 === _ ? {} : _,
                y = e.lineWrapperClassNames,
                w = void 0 === y ? {} : y,
                x = e.disabled,
                k = void 0 !== x && x,
                C = e.reference,
                S = void 0 === C ? null : C,
                E = he(dt(null), 2),
                T = E[0],
                O = E[1],
                A = bt((function() {
                  var e = [];
                  return km.forEach((function(t) {
                    Cm.forEach((function(n) {
                      if (t !== n) {
                        var r = tf(t, n),
                          i = r.snakeCase,
                          o = r.camelCase;
                        i && o && e.push({
                          name: o,
                          className: i,
                          verticalPosition: n,
                          horizontalPosition: t
                        })
                      }
                    }))
                  })), e
                }), []),
                P = bt((function() {
                  var e = [];
                  return A.forEach((function(t) {
                    var n;
                    "west" !== (n = t.name) && "south" !== n && "north" !== n && "east" !== n || !(lf(g) ? g[t.name] : g) || e.push({
                      name: t.name,
                      component: v,
                      className: Rl(b.default, b[t.name], k && b.disabled),
                      wrapperClassName: Rl("advanced-cropper-bounding-box__line", "advanced-cropper-bounding-box__line--".concat(t.name), w.default, w[t.name], k && w.disabled),
                      hoverClassName: b.hover,
                      verticalPosition: t.verticalPosition,
                      horizontalPosition: t.horizontalPosition,
                      disabled: k
                    })
                  })), e
                }), [A, g, v, b, w, k]),
                M = bt((function() {
                  var e = [];
                  return A.forEach((function(t) {
                    (lf(c) ? c[t.name] : c) && e.push({
                      name: t.name,
                      component: s,
                      className: Rl(h.default, h[t.name]),
                      containerClassName: Rl("advanced-cropper-bounding-box__handler-wrapper", "advanced-cropper-bounding-box__handler-wrapper--".concat(t.className)),
                      wrapperClassName: Rl("advanced-cropper-bounding-box__handler", "advanced-cropper-bounding-box__handler--".concat(t.className), d.default, d[t.name]),
                      hoverClassName: h.hover,
                      verticalPosition: t.verticalPosition,
                      horizontalPosition: t.horizontalPosition,
                      disabled: k
                    })
                  })), e
                }), [A, c, s, h, d, k]),
                D = function(e, t) {
                  return function(n, r) {
                    var o, a = {
                      left: n.left,
                      top: n.top
                    };
                    if (!t && e ? o = "width" : t && !e && (o = "height"), !k) {
                      if (i) {
                        var s = tf(e, t).camelCase;
                        s && i(s, a, {
                          reference: T || S,
                          preserveAspectRatio: r && r.shiftKey,
                          respectDirection: o,
                          compensate: !0
                        })
                      }
                      T || O(S)
                    }
                  }
                },
                I = function() {
                  null == o || o(), O(null)
                };
              return Nn.createElement("div", {
                className: Rl("advanced-cropper-bounding-box", n),
                style: t
              }, r, Nn.createElement("div", null, P.map((function(e) {
                return Nn.createElement(e.component, {
                  key: e.name,
                  defaultClassName: e.className,
                  hoverClassName: e.hoverClassName,
                  wrapperClassName: e.wrapperClassName,
                  position: e.name,
                  disabled: e.disabled,
                  onMove: D(e.horizontalPosition, e.verticalPosition),
                  onMoveEnd: I
                })
              }))), Nn.createElement("div", null, M.map((function(e) {
                var t = Nn.createElement(e.component, {
                  defaultClassName: e.className,
                  hoverClassName: e.hoverClassName,
                  wrapperClassName: e.wrapperClassName,
                  horizontalPosition: e.horizontalPosition,
                  verticalPosition: e.verticalPosition,
                  disabled: e.disabled,
                  onMove: D(e.horizontalPosition, e.verticalPosition),
                  onMoveEnd: I
                });
                return Nn.createElement("div", {
                  key: e.name,
                  className: e.containerClassName
                }, t)
              }))))
            },
            Em = function(e) {
              var t = e.className,
                n = e.children;
              return Nn.createElement("div", {
                className: Rl("advanced-cropper-stencil-overlay", t)
              }, n)
            };
          var Tm = function(e) {
              var t = e.className,
                n = e.transitions,
                r = e.children,
                i = le(e, ["className", "transitions", "children"]),
                o = vt(null),
                a = vt(i),
                s = he(dt(i), 2),
                l = s[0],
                c = s[1],
                u = he(function(e) {
                  void 0 === e && (e = null);
                  var t = vt(new qg),
                    n = he(dt(!1), 2),
                    r = n[0],
                    i = n[1];
                  return [function(n) {
                    e && e.active ? t.current.start(se(se({}, e), {
                      onStart: function() {
                        i(!0)
                      },
                      onProgress: function(e) {
                        n(e)
                      },
                      onStop: function() {
                        i(!1)
                      }
                    })) : t.current.active || n(1)
                  }, r]
                }(n), 2),
                h = u[0],
                p = u[1];
              mt((function() {
                if (!wf(l, i)) {
                  c(i);
                  var e = p ? se({}, a.current) : l;
                  h((function(t) {
                    ["left", "top", "height", "width"].forEach((function(n) {
                      var r = i[n],
                        o = e[n];
                      a.current[n] = pf(o) && pf(r) ? o + (r - o) * t : r
                    })), o.current && (o.current.style.width = "".concat(a.current.width, "px"), o.current.style.height = "".concat(a.current.height, "px"), o.current.style.transform = "translate3d(".concat(a.current.left, "px, ")
                      .concat(a.current.top, "px, 0px)"))
                  }))
                }
              }), [l, p, i.width, i.height, i.top, i.left]);
              var d = p ? a.current : i,
                f = {
                  left: 0,
                  top: 0,
                  width: "".concat(d.width, "px"),
                  height: "".concat(d.height, "px"),
                  transform: "translate3d(".concat(d.left, "px, ").concat(d.top, "px, 0px)")
                };
              return Nn.createElement("div", {
                ref: o,
                className: Rl("advanced-cropper-artificial-transition", t),
                style: f
              }, r)
            },
            Om = function(e) {
              var t = e.className,
                n = e.transitions,
                r = e.width,
                i = e.height,
                o = e.left,
                a = e.top,
                s = e.children;
              return Nn.createElement(Tm, {
                className: Rl("advanced-cropper-stencil-wrapper", t),
                transitions: n,
                width: r,
                height: i,
                top: a,
                left: o
              }, s)
            },
            Am = function(e) {
              var t = e.columns,
                n = void 0 === t ? 3 : t,
                r = e.rows,
                i = void 0 === r ? 3 : r,
                o = e.visible,
                a = void 0 !== o && o,
                s = e.className,
                l = [],
                c = he(dt(n), 2),
                u = c[0],
                h = c[1],
                p = he(dt(i), 2),
                d = p[0],
                f = p[1];
              am((function() {
                a && (f(i), h(n))
              }), [a, n, i]);
              for (var g = 0; g < d; g++) {
                for (var m = [], v = 0; v < u; v++) m.push(Nn.createElement("div", {
                  key: v,
                  className: Rl("advanced-cropper-stencil-grid__cell", 0 === g && "advanced-cropper-stencil-grid__cell--top", g === d - 1 && "advanced-cropper-stencil-grid__cell--bottom", 0 === v &&
                    "advanced-cropper-stencil-grid__cell--left", v === u - 1 && "advanced-cropper-stencil-grid__cell--right")
                }));
                l.push(Nn.createElement("div", {
                  key: g,
                  className: "advanced-cropper-stencil-grid__row"
                }, m))
              }
              return Nn.createElement("div", {
                className: Rl("advanced-cropper-stencil-grid", a && "advanced-cropper-stencil-grid--visible", s)
              }, l)
            },
            Pm = Ft((function(e, t) {
              var n = e.cropper,
                r = e.coordinates,
                i = e.aspectRatio,
                o = e.minAspectRatio,
                a = e.maxAspectRatio,
                s = e.handlerComponent,
                l = void 0 === s ? xm : s,
                c = e.handlers,
                u = void 0 === c ? {
                  eastNorth: !0,
                  north: !0,
                  westNorth: !0,
                  west: !0,
                  westSouth: !0,
                  south: !0,
                  eastSouth: !0,
                  east: !0
                } : c,
                h = e.handlerClassNames,
                p = void 0 === h ? {} : h,
                d = e.handlerWrapperClassNames,
                f = void 0 === d ? {} : d,
                g = e.lines,
                m = void 0 === g ? {
                  west: !0,
                  north: !0,
                  east: !0,
                  south: !0
                } : g,
                v = e.lineComponent,
                _ = void 0 === v ? ym : v,
                b = e.lineClassNames,
                y = void 0 === b ? {} : b,
                w = e.lineWrapperClassNames,
                x = void 0 === w ? {} : w,
                k = e.resizable,
                C = void 0 === k || k,
                S = e.movable,
                E = void 0 === S || S,
                T = e.grid,
                O = e.gridClassName,
                A = e.className,
                P = e.movingClassName,
                M = e.resizingClassName,
                D = e.previewClassName,
                I = e.boundingBoxClassName,
                N = e.overlayClassName,
                R = e.draggableAreaClassName,
                j = n.getState(),
                L = n.getTransitions(),
                F = n.getInteractions();
              _t(t, (function() {
                return {
                  aspectRatio: $f(i || {
                    minimum: o,
                    maximum: a
                  })
                }
              }));
              var B = r ? af(r) ? r(j) : r : og(j),
                z = B.width,
                H = B.height,
                U = B.left,
                W = B.top;
              return j && Nn.createElement(Om, {
                className: Rl("advanced-cropper-rectangle-stencil", A, F.moveCoordinates && P, F.resizeCoordinates && M, {
                  "advanced-cropper-rectangle-stencil--movable": E,
                  "advanced-cropper-rectangle-stencil--moving": F.moveCoordinates,
                  "advanced-cropper-rectangle-stencil--resizable": C,
                  "advanced-cropper-rectangle-stencil--resizing": F.resizeCoordinates
                }),
                width: z,
                height: H,
                left: U,
                top: W,
                transitions: L
              }, Nn.createElement(Sm, {
                reference: j.coordinates,
                className: Rl(I, "advanced-cropper-rectangle-stencil__bounding-box"),
                handlers: u,
                handlerComponent: l,
                handlerClassNames: p,
                handlerWrapperClassNames: f,
                lines: m,
                lineComponent: _,
                lineClassNames: y,
                lineWrapperClassNames: x,
                onResize: function(e, t, r) {
                  n && C && n.resizeCoordinates(e, t, r)
                },
                onResizeEnd: function() {
                  n && n.resizeCoordinatesEnd()
                },
                disabled: !C
              }, Nn.createElement(_m, {
                disabled: !E,
                onMove: function(e) {
                  n && E && n.moveCoordinates(e)
                },
                onMoveEnd: function() {
                  n && n.moveCoordinatesEnd()
                },
                className: Rl("advanced-cropper-rectangle-stencil__draggable-area", R)
              }, Nn.createElement(Em, {
                className: Rl("advanced-cropper-rectangle-stencil__overlay", N)
              }, T && Nn.createElement(Am, {
                visible: n.hasInteractions(),
                columns: F.transformImage.rotate ? 9 : 3,
                rows: F.transformImage.rotate ? 9 : 3,
                className: Rl("advanced-cropper-rectangle-stencil__grid", O)
              }), Nn.createElement("div", {
                className: Rl("advanced-cropper-rectangle-stencil__preview", D)
              })))))
            }));
          Pm.displayName = "RectangleStencil";
          var Mm, Dm = function() {
              function e(e) {
                var t = e.active;
                this.active = t, this.defaultPrevented = !1
              }
              return e.prototype.preventDefault = function() {
                this.defaultPrevented = !0
              }, e
            }(),
            Im = function(e) {
              function t(t) {
                var n = e.call(this, t) || this;
                return n.processMove = function(e) {
                  var t = n.props,
                    r = t.onTransform,
                    i = t.touchScale,
                    o = t.touchMove,
                    a = t.touchRotate,
                    s = n.container.current;
                  s && r && (r(function(e, t, n, r) {
                    var i, o, a;
                    if (void 0 === r && (r = {}), 1 === t.length && 1 === e.length) r.move && (i = {
                      left: t[0].clientX - e[0].clientX,
                      top: t[0].clientY - e[0].clientY
                    });
                    else if (e.length > 1) {
                      var s = Ng(t, n),
                        l = Ng(e, n);
                      if (r.rotate && 2 === t.length && 2 === e.length) {
                        var c = {
                            left: [e[0].clientX - e[1].clientX, t[0].clientX - t[1].clientX],
                            top: [e[0].clientY - e[1].clientY, t[0].clientY - t[1].clientY]
                          },
                          u = c.left[0] * c.top[1] - c.left[1] * c.top[0],
                          h = c.left[0] * c.left[1] + c.top[0] * c.top[1];
                        if (!mf(h, 0) && !mf(u, 0)) {
                          var p = -180 * Math.atan2(u, h) / Math.PI;
                          a = {
                            center: l.centerMass,
                            angle: p
                          }
                        }
                      }
                      r.move && (i = {
                        left: s.centerMass.left - l.centerMass.left,
                        top: s.centerMass.top - l.centerMass.top
                      }), r.scale && (o = {
                        factor: l.spread / s.spread,
                        center: l.centerMass
                      })
                    }
                    return {
                      move: i,
                      scale: o,
                      rotate: a
                    }
                  }(e, n.touches, s, {
                    scale: i,
                    rotate: a,
                    move: o
                  })), n.touches = e)
                }, n.processEnd = function() {
                  var e = n.props.onTransformEnd;
                  n.transforming && (n.transforming = !1, e && e())
                }, n.processStart = function() {
                  n.transforming = !0, n.debouncedProcessEnd.clear()
                }, n.processEvent = function(e) {
                  var t = n.props,
                    r = t.onEvent,
                    i = t.disabled,
                    o = new Dm({
                      active: n.transforming
                    });
                  return r ? r(o, e) : (e.preventDefault(), e.stopPropagation()), !i && !o.defaultPrevented
                }, n.onWheel = function(e) {
                  var t = n.props,
                    r = t.onTransform,
                    i = t.wheelScale,
                    o = n.container.current;
                  i && n.processEvent(e) && (n.processStart(), r && o && r(Rg(e, o, !0 === i ? .1 : i.ratio)), n.touches.length || n.debouncedProcessEnd())
                }, n.onTouchStart = function(e) {
                  var t = n.props,
                    r = t.touchMove,
                    i = t.touchScale,
                    o = t.touchRotate;
                  if (e.cancelable && (r || (i || o) && e.touches.length > 1) && n.processEvent(e)) {
                    var a = n.container.current;
                    if (a) {
                      var s = a.getBoundingClientRect(),
                        l = s.left,
                        c = s.top,
                        u = s.bottom,
                        h = s.right;
                      n.touches = Array.from(e.touches).filter((function(e) {
                        return e.clientX > l && e.clientX < h && e.clientY > c && e.clientY < u
                      }))
                    }
                  }
                }, n.onTouchEnd = function(e) {
                  0 === e.touches.length && (n.touches = [], n.processEnd())
                }, n.onTouchMove = function(e) {
                  if (n.touches.length) {
                    var t = pe([], he(e.touches), !1).filter((function(e) {
                      return !e.identifier || n.touches.find((function(t) {
                        return t.identifier === e.identifier
                      }))
                    }));
                    n.processEvent(e) && (n.processMove(t), n.processStart())
                  }
                }, n.onMouseDown = function(e) {
                  if (n.props.mouseMove && "buttons" in e && 1 === e.buttons && n.processEvent(e)) {
                    var t = {
                      clientX: e.clientX,
                      clientY: e.clientY
                    };
                    n.touches = [t], n.processStart()
                  }
                }, n.onMouseMove = function(e) {
                  n.touches.length && n.processEvent(e) && n.processMove([{
                    clientX: e.clientX,
                    clientY: e.clientY
                  }])
                }, n.onMouseUp = function() {
                  n.touches = [], n.processEnd()
                }, n.transforming = !1, n.touches = [], n.anchor = {
                  left: 0,
                  top: 0
                }, n.container = {
                  current: null
                }, n.debouncedProcessEnd = xf(n.processEnd, t.timeout), n
              }
              return ae(t, e), t.prototype.shouldComponentUpdate = function() {
                return !0
              }, t.prototype.componentWillUnmount = function() {
                window.removeEventListener("mouseup", this.onMouseUp), window.removeEventListener("mousemove", this.onMouseMove), window.removeEventListener("touchmove", this.onTouchMove), window.removeEventListener("touchend", this
                .onTouchEnd);
                var e = this.container.current;
                e && (e.removeEventListener("touchstart", this.onTouchStart), e.removeEventListener("mousedown", this.onMouseDown), e.removeEventListener("wheel", this.onWheel))
              }, t.prototype.componentDidMount = function() {
                window.addEventListener("mouseup", this.onMouseUp, {
                  passive: !1
                }), window.addEventListener("mousemove", this.onMouseMove, {
                  passive: !1
                }), window.addEventListener("touchmove", this.onTouchMove, {
                  passive: !1
                }), window.addEventListener("touchend", this.onTouchEnd, {
                  passive: !1
                });
                var e = this.container.current;
                e && (e.addEventListener("touchstart", this.onTouchStart, {
                  passive: !1
                }), e.addEventListener("mousedown", this.onMouseDown, {
                  passive: !1
                }), e.addEventListener("wheel", this.onWheel, {
                  passive: !1
                }))
              }, t.prototype.render = function() {
                var e = this.props,
                  t = e.className,
                  n = e.children,
                  r = e.style;
                return Nn.createElement("div", {
                  className: t,
                  style: r,
                  ref: this.container
                }, n)
              }, t.defaultProps = {
                touchMove: !0,
                mouseMove: !0,
                touchScale: !0,
                touchRotate: !1,
                wheelScale: !0,
                timeout: 500
              }, t
            }(Me),
            Nm = function(e) {
              var t = e.scaleImage,
                n = void 0 === t || t,
                r = e.moveImage,
                i = void 0 === r || r,
                o = e.rotateImage,
                a = void 0 !== o && o,
                s = e.children,
                l = e.className,
                c = e.style,
                u = e.cropper,
                h = e.timeout,
                p = u.getTransitions(),
                d = function(e) {
                  return bt((function() {
                    return cf(e, {
                      touch: !0
                    }, {
                      touch: !1
                    })
                  }), [e])
                }(a),
                f = function(e) {
                  return bt((function() {
                    return cf(e, {
                      touch: !0,
                      wheel: {
                        ratio: .1
                      }
                    }, {
                      touch: !1,
                      wheel: !1
                    })
                  }), [e])
                }(n),
                g = function(e) {
                  return bt((function() {
                    return cf(e, {
                      touch: !0,
                      mouse: !0
                    }, {
                      touch: !1,
                      mouse: !1
                    })
                  }), [e])
                }(i);
              return Nn.createElement(Im, {
                className: l,
                style: c,
                onTransform: u.transformImage,
                onTransformEnd: u.transformImageEnd,
                touchMove: g.touch,
                mouseMove: g.mouse,
                touchScale: f.touch,
                wheelScale: f.wheel,
                touchRotate: d.touch,
                disabled: p.active,
                timeout: h
              }, s)
            },
            Rm = (Mm = function(e, t) {
              var n = e.style,
                r = e.className,
                i = e.stencilComponent,
                o = void 0 === i ? Pm : i,
                a = e.stencilConstraints,
                s = void 0 === a ? Hg : a,
                l = e.stencilProps,
                c = void 0 === l ? {} : l,
                u = e.wrapperComponent,
                h = void 0 === u ? fm : u,
                p = e.wrapperProps,
                d = void 0 === p ? {} : p,
                f = e.backgroundComponent,
                g = void 0 === f ? mm : f,
                m = e.backgroundProps,
                v = void 0 === m ? {} : m,
                _ = e.backgroundClassName,
                b = e.backgroundWrapperComponent,
                y = void 0 === b ? Nm : b,
                w = e.backgroundWrapperProps,
                x = void 0 === w ? {} : w,
                k = e.boundaryComponent,
                C = void 0 === k ? pm : k,
                S = e.boundaryProps,
                E = e.boundaryClassName,
                T = e.canvas,
                O = void 0 === T || T,
                A = e.crossOrigin,
                P = void 0 === A || A,
                M = e.settings,
                D = le(e, ["style", "className", "stencilComponent", "stencilConstraints", "stencilProps", "wrapperComponent", "wrapperProps", "backgroundComponent", "backgroundProps", "backgroundClassName", "backgroundWrapperComponent",
                  "backgroundWrapperProps", "boundaryComponent", "boundaryProps", "boundaryClassName", "canvas", "crossOrigin", "settings"
                ]),
                I = vt(null),
                N = hm((function() {
                  return se(se({}, D), {
                    crossOrigin: P,
                    stencilProps: c,
                    canvas: O,
                    settings: se(se({}, M), s(M, se(se({}, c), I.current)))
                  })
                })),
                R = N.cropper,
                j = N.image,
                L = N.refs,
                F = o,
                B = h,
                z = y,
                H = g,
                U = C;
              _t(t, (function() {
                return R
              }));
              var W = {
                loading: R.isLoading(),
                loaded: R.isLoaded()
              };
              return Nn.createElement(B, se({}, d, {
                className: Rl("advanced-cropper", r),
                cropper: R,
                style: n
              }, W), Nn.createElement(U, se({}, S, {
                ref: L.boundary,
                className: Rl("advanced-cropper__boundary", E)
              }), Nn.createElement(z, se({}, x, {
                cropper: R,
                className: "advanced-cropper__background-wrapper"
              }), R.getState() && Nn.createElement(H, se({}, v, {
                ref: L.image,
                crossOrigin: P,
                cropper: R,
                className: Rl("advanced-cropper__background", _)
              })), Nn.createElement(F, se({}, c, {
                ref: I,
                cropper: R,
                image: j
              }))), O && Nn.createElement(vm, {
                ref: L.canvas
              })))
            }, Ft(Mm)),
            jm = ["transformImage", "moveCoordinates", "resizeCoordinates", "defaultCoordinates", "defaultVisibleArea", "areaPositionRestrictions", "areaSizeRestrictions", "sizeRestrictions", "positionRestrictions", "aspectRatio", "minWidth",
              "minHeight", "maxWidth", "maxHeight", "defaultSize", "defaultPosition", "defaultTransforms", "imageRestriction", "priority"
            ];

          function Lm(e, t) {
            void 0 === t && (t = jm);
            var n = {
              settings: {},
              props: {}
            };
            return Object.keys(e).forEach((function(r) {
              t.some((function(e) {
                return e === r
              })) ? n.settings[r] = e[r] : n.props[r] = e[r]
            })), n
          }

          function Fm(e, t) {
            var n = Hg({}, t);
            return {
              stencilSize: function(t, r) {
                var i, o, a = af(e.stencilSize) ? e.stencilSize(t, r) : e.stencilSize;
                return fg(se(se({}, a), {
                  aspectRatio: (i = n.aspectRatio, o = $f(Lf(a)), o ? i ? {
                    minimum: Math.min(i.maximum, Math.max(i.minimum, o.minimum)),
                    maximum: Math.max(i.minimum, Math.min(i.maximum, o.maximum))
                  } : o : i)
                }))
              }
            }
          }

          function Bm(e, t) {
            var n = e.boundary,
              r = af(t.stencilSize) ? t.stencilSize(e, t) : t.stencilSize;
            return (r.width > n.width || r.height > n.height) && (r = fg({
              sizeRestrictions: {
                maxWidth: n.width,
                maxHeight: n.height,
                minWidth: 0,
                minHeight: 0
              },
              width: r.width,
              height: r.height,
              aspectRatio: {
                minimum: Lf(r),
                maximum: Lf(r)
              }
            })), r
          }

          function zm(e, t) {
            var n = Bm(e, se(se({}, t), {
                stencilSize: t.stencilSize
              })),
              r = eg(e, t);
            return {
              maxWidth: r.maxWidth * n.width / e.boundary.width,
              maxHeight: r.maxHeight * n.height / e.boundary.height,
              minWidth: 0,
              minHeight: 0
            }
          }

          function Hm(e, t) {
            var n, r, i = e.imageSize,
              o = e.visibleArea,
              a = e.boundary,
              s = ng(e, t),
              l = ag(e, t),
              c = af(t.stencilSize) ? t.stencilSize(e, t) : t.stencilSize,
              u = o || i;
            return Lf(u) > Lf(a) ? r = (n = c.height * u.height / a.height) * Lf(c) : n = (r = c.width * u.width / a.width) / Lf(c), fg({
              width: r,
              height: n,
              aspectRatio: l,
              sizeRestrictions: s
            })
          }

          function Um(e, t) {
            var n = Lf(Bm(e, t));
            return {
              minimum: n,
              maximum: n
            }
          }

          function Wm(e, t, n) {
            return n && n.immediately ? function(e, t) {
              if (Qf(e)) {
                var n = dg(e),
                  r = Bm(e, t);
                n.visibleArea = jf(n.visibleArea, n.coordinates.width * n.boundary.width / (n.visibleArea.width * r.width));
                var i = Hf(n.visibleArea, eg(n, t));
                return 1 !== i && (n.visibleArea = jf(n.visibleArea, i), n.coordinates = jf(n.coordinates, i)), n.visibleArea = Nf(n.visibleArea, Af(Pf(n.coordinates), Pf(n.visibleArea))), n.visibleArea = Kf(n.visibleArea, tg(n, t)), n
                  .coordinates = Kf(n.coordinates, Yf(Rf(n.visibleArea), tg(n, t))), n
              }
              return e
            }(e, t) : e
          }
          var Vm = Ft((function(e, t) {
            var n = Lm(e, pe(pe([], he(jm), !1), ["stencilSize"], !1));
            return Nn.createElement(Rm, se({
              postProcess: Wm,
              stencilConstraints: Fm
            }, n.props, {
              settings: se(se({
                defaultSize: Hm,
                aspectRatio: Um,
                sizeRestrictions: Ug(zm)
              }, n.settings), {
                transformImage: se(se({}, n.settings.transformImage), {
                  adjustStencil: !1
                })
              }),
              ref: t
            }))
          }));
          Vm.displayName = "FixedCropper";
          var Xm = Ft((function(e, t) {
            var n, r = Lm(e),
              i = r.props,
              o = r.settings,
              a = o.stencilSize,
              s = o.autoZoom,
              l = le(o, ["stencilSize", "autoZoom"]),
              c = (n = vt([]), function(e) {
                -1 === n.current.indexOf(e) && n.current.push(e)
              });
            return sf(s) || (i.postProcess || a ? c("prop 'autoZoom' is deprecated now and will be removed, use 'postProcess' prop to pass your auto zoom function.") : (c(
              "prop 'autoZoom' is deprecated now and will be removed, use 'postProcess' prop to pass your auto zoom function. The 'postProcess' automatically set to 'hybridAutoZoom'"), i.postProcess = om)), sf(a) ? Nn.createElement(Rm,
              se({}, i, {
                ref: t,
                settings: l
              })) : (c("prop 'stencilSize' is deprecated for <Cropper/> component now and will be removed, use <FixedCropper/> component instead."), Nn.createElement(Vm, se({
              ref: t,
              stencilSize: a
            }, l, i)))
          }));
          Xm.displayName = "CropperComponent";
          var Gm = Ft((function(e, t) {
            var n = e.cropper,
              r = e.coordinates,
              i = e.handlerComponent,
              o = void 0 === i ? xm : i,
              a = e.handlers,
              s = void 0 === a ? {
                eastNorth: !0,
                westNorth: !0,
                westSouth: !0,
                eastSouth: !0
              } : a,
              l = e.handlerClassNames,
              c = void 0 === l ? {} : l,
              u = e.handlerWrapperClassNames,
              h = void 0 === u ? {} : u,
              p = e.lines,
              d = void 0 === p ? {
                west: !0,
                north: !0,
                east: !0,
                south: !0
              } : p,
              f = e.lineComponent,
              g = void 0 === f ? ym : f,
              m = e.lineClassNames,
              v = void 0 === m ? {} : m,
              _ = e.lineWrapperClassNames,
              b = void 0 === _ ? {} : _,
              y = e.resizable,
              w = void 0 === y || y,
              x = e.movable,
              k = void 0 === x || x,
              C = e.grid,
              S = e.gridClassName,
              E = e.className,
              T = e.movingClassName,
              O = e.resizingClassName,
              A = e.previewClassName,
              P = e.boundingBoxClassName,
              M = e.overlayClassName,
              D = e.draggableAreaClassName,
              I = n.getState(),
              N = n.getTransitions(),
              R = n.getInteractions();
            _t(t, (function() {
              return {
                aspectRatio: 1,
                boundingBox: "circle"
              }
            }));
            var j = r ? af(r) ? r(I) : r : og(I),
              L = j.width,
              F = j.height,
              B = j.left,
              z = j.top;
            return I && Nn.createElement(Om, {
              className: Rl("advanced-cropper-circle-stencil", E, R.moveCoordinates && T, R.resizeCoordinates && O, {
                "advanced-cropper-circle-stencil--movable": k,
                "advanced-cropper-circle-stencil--moving": R.moveCoordinates,
                "advanced-cropper-circle-stencil--resizable": w,
                "advanced-cropper-circle-stencil--resizing": R.resizeCoordinates
              }),
              width: L,
              height: F,
              left: B,
              top: z,
              transitions: N
            }, Nn.createElement(Sm, {
              reference: I.coordinates,
              className: Rl(P, "advanced-cropper-circle-stencil__bounding-box"),
              handlers: s,
              handlerComponent: o,
              handlerClassNames: c,
              handlerWrapperClassNames: h,
              lines: d,
              lineComponent: g,
              lineClassNames: v,
              lineWrapperClassNames: b,
              onResize: function(e, t, r) {
                n && w && n.resizeCoordinates(e, t, r)
              },
              onResizeEnd: function() {
                n && n.resizeCoordinatesEnd()
              },
              disabled: !w
            }, Nn.createElement(_m, {
              disabled: !k,
              onMove: function(e) {
                n && k && n.moveCoordinates(e)
              },
              onMoveEnd: function() {
                n && n.moveCoordinatesEnd()
              },
              className: Rl("advanced-cropper-circle-stencil__draggable-area", D)
            }, Nn.createElement(Em, {
              className: Rl("advanced-cropper-circle-stencil__overlay", M)
            }, C && Nn.createElement(Am, {
              visible: n.hasInteractions(),
              columns: R.transformImage.rotate ? 9 : 3,
              rows: R.transformImage.rotate ? 9 : 3,
              className: Rl("advanced-cropper-circle-stencil__grid", S)
            }), Nn.createElement("div", {
              className: Rl("advanced-cropper-circle-stencil__preview", A)
            })))))
          }));
          Gm.displayName = "CircleStencil";
          var Ym = Ft((function(e, t) {
            var n = e.src,
              r = e.crossOrigin,
              i = void 0 === r || r,
              o = le(e, ["src", "crossOrigin"]);
            return n ? Nn.createElement("img", se({
              key: n,
              ref: t,
              src: n,
              className: Rl("advanced-cropper-source"),
              crossOrigin: !0 === i ? "anonymous" : i || void 0
            }, o)) : null
          }));
          Ym.displayName = "CropperSource";
          var qm, Km = function(e) {
              var t = e.children,
                n = e.cropper,
                r = e.className,
                i = e.style;
              return Nn.createElement("div", {
                className: Rl(r, "cropper-preview-wrapper"),
                style: i
              }, Nn.createElement(dm, {
                visible: null == n ? void 0 : n.isLoaded(),
                className: "cropper-preview-wrapper__fade"
              }, t))
            },
            $m = function(e) {
              var t = e.className,
                n = e.cropper,
                r = e.crossOrigin,
                i = void 0 === r || r,
                o = e.size,
                a = n.getState(),
                s = n.getTransitions(),
                l = n.getImage(),
                c = o && l && (null == a ? void 0 : a.coordinates) ? function(e, t, n, r) {
                  return void 0 === r && (r = null), e && t && t.visibleArea && t.coordinates ? im(e, t, t.coordinates, Lf(t.coordinates) > Lf(n) ? t.coordinates.width / n.width : t.coordinates.height / n.height, r) : {}
                }(l, a, o, s) : {},
                u = l ? l.src : void 0;
              return u ? Nn.createElement("img", {
                key: u,
                className: Rl("advanced-cropper-background-image", t),
                src: u,
                crossOrigin: !0 === i ? "anonymous" : i || void 0,
                style: c,
                onMouseDown: gm
              }) : null
            };

          function Zm() {
            return Zm = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, Zm.apply(this, arguments)
          }
          Ft((function(e, t) {
            var n, r, i, o, a = e.className,
              s = e.contentClassName,
              l = e.state,
              c = void 0 === l ? null : l,
              u = e.image,
              h = void 0 === u ? null : u,
              p = e.transitions,
              d = void 0 === p ? null : p,
              f = e.backgroundComponent,
              g = void 0 === f ? $m : f,
              m = e.backgroundProps,
              v = e.backgroundClassName,
              _ = e.wrapperComponent,
              b = void 0 === _ ? Km : _,
              y = e.wrapperProps,
              w = e.loaded,
              x = void 0 === w || w,
              k = e.loading,
              C = void 0 !== k && k,
              S = e.style,
              E = e.cropper,
              T = lm(),
              O = vt(null),
              A = E || {
                current: {
                  getState: function() {
                    return c
                  },
                  getTransitions: function() {
                    return d
                  },
                  getImage: function() {
                    return h
                  },
                  isLoaded: function() {
                    return x
                  },
                  isLoading: function() {
                    return C
                  }
                }
              },
              P = he(dt(null), 2),
              M = P[0],
              D = P[1],
              I = null === (r = null === (n = A.current) || void 0 === n ? void 0 : n.getState()) || void 0 === r ? void 0 : r.coordinates,
              N = null === (o = null === (i = A.current) || void 0 === i ? void 0 : i.getImage()) || void 0 === o ? void 0 : o.src,
              R = M ? {
                width: "".concat(M.width, "px"),
                height: "".concat(M.height, "px")
              } : {},
              j = function() {
                O.current && I && O.current.stretchTo(I).then((function(e) {
                  e && I ? vf(Lf(I), Lf(e)) ? D({
                    width: e.width,
                    height: e.width / Lf(I)
                  }) : D({
                    width: e.height * Lf(I),
                    height: e.height
                  }) : D(null)
                })), T()
              };
            um(j), mt(j, [null == I ? void 0 : I.height, null == I ? void 0 : I.width]), _t(t, (function() {
              return {
                refresh: T
              }
            }));
            var L = b,
              F = g;
            return Nn.createElement(L, se({}, y, {
              className: Rl(a, "advanced-cropper-preview"),
              cropper: A.current,
              style: S
            }), Nn.createElement(pm, {
              ref: O,
              className: "advanced-cropper-preview__boundary",
              contentClassName: "advanced-cropper-preview__boundary-content",
              stretchAlgorithm: Zg
            }, Nn.createElement("div", {
              className: Rl(s, "advanced-cropper-preview__content"),
              style: R
            }, A.current && Nn.createElement(F, se({}, m, {
              cropper: A.current,
              size: M,
              className: Rl(v, "advanced-cropper-preview__image", N && "advanced-cropper-preview__image--visible")
            })))))
          }));
          var Jm, Qm = e => Te("svg", Zm({
            width: 20,
            height: 20,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), qm || (qm = Te("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M1.042 8.75a7.708 7.708 0 1 1 13.583 4.991l3.195 3.195a.625.625 0 0 1-.884.884l-3.195-3.195A7.708 7.708 0 0 1 1.04 8.75ZM8.75 2.292a6.458 6.458 0 1 0 0 12.917 6.458 6.458 0 0 0 0-12.917Zm-2.5 5.833a.625.625 0 1 0 0 1.25h5a.625.625 0 1 0 0-1.25h-5Z",
            fill: "#333"
          })));

          function ev() {
            return ev = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, ev.apply(this, arguments)
          }
          var tv, nv = e => Te("svg", ev({
            width: 20,
            height: 20,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), Jm || (Jm = Te("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M8.75 1.042a7.708 7.708 0 1 0 4.99 13.583l3.196 3.195a.625.625 0 0 0 .884-.884l-3.195-3.195a7.708 7.708 0 0 0-5.875-12.7ZM2.292 8.75a6.458 6.458 0 1 1 12.916 0 6.458 6.458 0 0 1-12.917 0Zm7.083-2.5a.625.625 0 1 0-1.25 0v1.88l-1.87.002a.625.625 0 0 0 .002 1.25l1.868-.003v1.871a.625.625 0 1 0 1.25 0V9.377l1.876-.002a.625.625 0 1 0-.002-1.25l-1.874.002V6.25Z",
            fill: "#333"
          })));

          function rv() {
            return rv = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, rv.apply(this, arguments)
          }
          var iv, ov = e => Te("svg", rv({
            width: 14,
            height: 14,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), tv || (tv = Te("path", {
            d: "M10.5 5.25 7 8.75l-3.5-3.5",
            stroke: "#333",
            strokeWidth: 1.25,
            strokeLinecap: "round",
            strokeLinejoin: "round"
          })));

          function av() {
            return av = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, av.apply(this, arguments)
          }
          var sv, lv = e => Te("svg", av({
            xmlns: "http://www.w3.org/2000/svg",
            width: 18,
            height: 18,
            fill: "none"
          }, e), iv || (iv = Te("circle", {
            cx: 9,
            cy: 9,
            r: 8.375,
            stroke: "#333",
            strokeWidth: 1.25
          })));

          function cv() {
            return cv = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, cv.apply(this, arguments)
          }
          var uv, hv = e => Te("svg", cv({
            xmlns: "http://www.w3.org/2000/svg",
            width: 18,
            height: 18,
            fill: "none"
          }, e), sv || (sv = Te("circle", {
            cx: 9,
            cy: 9,
            r: 8.375,
            stroke: "#3E85EE",
            strokeWidth: 1.25
          })));

          function pv() {
            return pv = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, pv.apply(this, arguments)
          }
          var dv, fv = e => Te("svg", pv({
            xmlns: "http://www.w3.org/2000/svg",
            width: 14,
            height: 18,
            fill: "none"
          }, e), uv || (uv = Te("path", {
            d: "M13.375 9c0 4.78-2.991 8.375-6.375 8.375S.625 13.781.625 9C.625 4.22 3.616.625 7 .625S13.375 4.219 13.375 9Z",
            stroke: "#333",
            strokeWidth: 1.25
          })));

          function gv() {
            return gv = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, gv.apply(this, arguments)
          }
          var mv, vv = e => Te("svg", gv({
            xmlns: "http://www.w3.org/2000/svg",
            width: 14,
            height: 18,
            fill: "none"
          }, e), dv || (dv = Te("path", {
            d: "M13.375 9c0 4.78-2.991 8.375-6.375 8.375S.625 13.781.625 9C.625 4.22 3.616.625 7 .625S13.375 4.219 13.375 9Z",
            stroke: "#3E85EE",
            strokeWidth: 1.25
          })));

          function _v() {
            return _v = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, _v.apply(this, arguments)
          }
          var bv, yv = e => Te("svg", _v({
            width: 18,
            height: 18,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), mv || (mv = Te("rect", {
            x: .625,
            y: .625,
            width: 16.75,
            height: 16.75,
            rx: 1.375,
            stroke: "#333",
            strokeWidth: 1.25
          })));

          function wv() {
            return wv = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, wv.apply(this, arguments)
          }
          var xv, kv = e => Te("svg", wv({
            width: 18,
            height: 18,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), bv || (bv = Te("rect", {
            x: .625,
            y: .625,
            width: 16.75,
            height: 16.75,
            rx: 1.375,
            stroke: "#3E85EE",
            strokeWidth: 1.25
          })));

          function Cv() {
            return Cv = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, Cv.apply(this, arguments)
          }
          var Sv, Ev = e => Te("svg", Cv({
            width: 16,
            height: 16,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), xv || (xv = Te("path", {
            stroke: "#333",
            strokeWidth: 1.25,
            d: "M.625.625h14.75v14.75H.625z"
          })));

          function Tv() {
            return Tv = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, Tv.apply(this, arguments)
          }
          var Ov, Av = e => Te("svg", Tv({
            width: 16,
            height: 16,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), Sv || (Sv = Te("path", {
            stroke: "#3E85EE",
            strokeWidth: 1.25,
            d: "M.625.625h14.75v14.75H.625z"
          })));

          function Pv() {
            return Pv = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, Pv.apply(this, arguments)
          }
          var Mv, Dv = e => Te("svg", Pv({
            xmlns: "http://www.w3.org/2000/svg",
            width: 20,
            height: 20,
            fill: "none"
          }, e), Ov || (Ov = Te("path", {
            d: "m10.071 17.039-.004-.003-.014-.011-.018-.013-.226-.16c-.545-.39-1.8-1.284-2.625-1.938-1.6-1.276-2.787-2.358-3.607-3.282-.83-.934-1.236-1.655-1.358-2.205l-.006-.029-.009-.027c-.128-.4-.21-.9-.215-1.419V7.95c-.018-1.378.492-2.697 1.376-3.617.803-.838 1.843-1.291 2.929-1.295 1.246 0 2.376.516 3.196 1.417l.475.523.461-.536c.805-.936 1.93-1.477 3.154-1.494h.09c2.302 0 4.307 2.096 4.341 4.8a5.164 5.164 0 0 1-.198 1.493l-.008.027-.006.027c-.1.514-.49 1.24-1.304 2.201-.8.947-1.958 2.063-3.498 3.355l-.002.002c-1.187 1.003-2.135 1.735-2.825 2.183l-.004.003a.081.081 0 0 1-.046.013.097.097 0 0 1-.045-.011l-.004-.002Z",
            stroke: "#333",
            strokeWidth: 1.25
          })));

          function Iv() {
            return Iv = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, Iv.apply(this, arguments)
          }
          var Nv, Rv = e => Te("svg", Iv({
            xmlns: "http://www.w3.org/2000/svg",
            width: 20,
            height: 20,
            fill: "none"
          }, e), Mv || (Mv = Te("path", {
            d: "m10.071 17.039-.004-.003-.014-.011-.018-.013-.226-.16c-.545-.39-1.8-1.284-2.625-1.938-1.6-1.276-2.787-2.358-3.607-3.282-.83-.934-1.236-1.655-1.358-2.205l-.006-.029-.009-.027c-.128-.4-.21-.9-.215-1.419V7.95c-.018-1.378.492-2.697 1.376-3.617.803-.838 1.843-1.291 2.929-1.295 1.246 0 2.376.516 3.196 1.417l.475.523.461-.536c.805-.936 1.93-1.477 3.154-1.494h.09c2.302 0 4.307 2.096 4.341 4.8a5.164 5.164 0 0 1-.198 1.493l-.008.027-.006.027c-.1.514-.49 1.24-1.304 2.201-.8.947-1.958 2.063-3.498 3.355l-.002.002c-1.187 1.003-2.135 1.735-2.825 2.183l-.004.003a.081.081 0 0 1-.046.013.097.097 0 0 1-.045-.011l-.004-.002Z",
            stroke: "#3E85EE",
            strokeWidth: 1.25
          })));

          function jv() {
            return jv = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, jv.apply(this, arguments)
          }
          var Lv, Fv = e => Te("svg", jv({
            width: 18,
            height: 18,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), Nv || (Nv = Te("path", {
            d: "M6.598 5.854 9 1.332l2.402 4.522c.162.307.457.52.799.58l5.042.888-3.558 3.681c-.241.25-.354.596-.305.94l.715 5.07-4.601-2.248a1.125 1.125 0 0 0-.988 0l-4.6 2.247.714-5.07a1.125 1.125 0 0 0-.305-.939L.757 7.322 5.8 6.435c.341-.06.636-.274.798-.58Z",
            stroke: "#333",
            strokeWidth: 1.25
          })));

          function Bv() {
            return Bv = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, Bv.apply(this, arguments)
          }
          var zv, Hv = e => Te("svg", Bv({
            width: 18,
            height: 18,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), Lv || (Lv = Te("path", {
            d: "M6.598 5.854 9 1.332l2.402 4.522c.162.307.457.52.799.58l5.042.888-3.558 3.681c-.241.25-.354.596-.305.94l.715 5.07-4.601-2.248a1.125 1.125 0 0 0-.988 0l-4.6 2.247.714-5.07a1.125 1.125 0 0 0-.305-.939L.757 7.322 5.8 6.435c.341-.06.636-.274.798-.58Z",
            stroke: "#3E85EE",
            strokeWidth: 1.25
          })));

          function Uv() {
            return Uv = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, Uv.apply(this, arguments)
          }
          var Wv = e => Te("svg", Uv({
            xmlns: "http://www.w3.org/2000/svg",
            width: 14,
            height: 4,
            fill: "none"
          }, e), zv || (zv = Te("path", {
            d: "M8.488 3.15a3 3 0 0 1-2.976 0L0 0h14L8.488 3.15Z",
            fill: "#fff"
          })));
          c(
          ".advanced-cropper-line-wrapper--north,.advanced-cropper-line-wrapper--south{height:12px;width:100%}.advanced-cropper-line-wrapper--north{cursor:n-resize}.advanced-cropper-line-wrapper--south{cursor:s-resize}.advanced-cropper-line-wrapper--east,.advanced-cropper-line-wrapper--west{height:100%;width:12px}.advanced-cropper-line-wrapper--east{cursor:e-resize}.advanced-cropper-line-wrapper--west{cursor:w-resize}.advanced-cropper-line-wrapper--disabled{cursor:auto}.advanced-cropper-line-wrapper__content{position:absolute}.advanced-cropper-line-wrapper__content--east,.advanced-cropper-line-wrapper__content--west{height:100%}.advanced-cropper-line-wrapper__content--north,.advanced-cropper-line-wrapper__content--south{width:100%}.advanced-cropper-line-wrapper__content--east{left:50%;transform:translateX(-100%)}.advanced-cropper-line-wrapper__content--west{right:50%;transform:translateX(100%)}.advanced-cropper-line-wrapper__content--north{top:50%}.advanced-cropper-line-wrapper__content--south{bottom:50%}.advanced-cropper-handler-wrapper{height:30px;position:absolute;transform:translate(-50%,-50%);width:30px}.advanced-cropper-handler-wrapper__draggable{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.advanced-cropper-handler-wrapper--west-north{cursor:nw-resize}.advanced-cropper-handler-wrapper--north{cursor:n-resize}.advanced-cropper-handler-wrapper--east-north{cursor:ne-resize}.advanced-cropper-handler-wrapper--east{cursor:e-resize}.advanced-cropper-handler-wrapper--east-south{cursor:se-resize}.advanced-cropper-handler-wrapper--south{cursor:s-resize}.advanced-cropper-handler-wrapper--west-south{cursor:sw-resize}.advanced-cropper-handler-wrapper--west{cursor:w-resize}.advanced-cropper-handler-wrapper--disabled{cursor:auto}.advanced-cropper-bounding-box{height:100%;position:relative;width:100%}.advanced-cropper-bounding-box__handler-wrapper{position:absolute}.advanced-cropper-bounding-box__handler-wrapper--east,.advanced-cropper-bounding-box__handler-wrapper--west{height:100%;top:50%;transform:translateY(-50%)}.advanced-cropper-bounding-box__handler-wrapper--north,.advanced-cropper-bounding-box__handler-wrapper--south{left:50%;transform:translateX(-50%);width:100%}.advanced-cropper-bounding-box__handler-wrapper--west,.advanced-cropper-bounding-box__handler-wrapper--west-north,.advanced-cropper-bounding-box__handler-wrapper--west-south{left:0}.advanced-cropper-bounding-box__handler-wrapper--east,.advanced-cropper-bounding-box__handler-wrapper--east-north,.advanced-cropper-bounding-box__handler-wrapper--east-south{left:100%}.advanced-cropper-bounding-box__handler-wrapper--east-north,.advanced-cropper-bounding-box__handler-wrapper--north,.advanced-cropper-bounding-box__handler-wrapper--west-north{top:0}.advanced-cropper-bounding-box__handler-wrapper--east-south,.advanced-cropper-bounding-box__handler-wrapper--south,.advanced-cropper-bounding-box__handler-wrapper--west-south{top:100%}.advanced-cropper-bounding-box__handler{position:absolute}.advanced-cropper-bounding-box__handler--west-north{left:0;top:0}.advanced-cropper-bounding-box__handler--north{left:50%;top:0}.advanced-cropper-bounding-box__handler--east-north{left:100%;top:0}.advanced-cropper-bounding-box__handler--east{left:100%;top:50%}.advanced-cropper-bounding-box__handler--east-south{left:100%;top:100%}.advanced-cropper-bounding-box__handler--south{left:50%;top:100%}.advanced-cropper-bounding-box__handler--west-south{left:0;top:100%}.advanced-cropper-bounding-box__handler--west{left:0;top:50%}.advanced-cropper-bounding-box__line{position:absolute}.advanced-cropper-bounding-box__line--north,.advanced-cropper-bounding-box__line--south{left:0;transform:translateY(-50%)}.advanced-cropper-bounding-box__line--north{top:0}.advanced-cropper-bounding-box__line--south{top:100%}.advanced-cropper-bounding-box__line--east,.advanced-cropper-bounding-box__line--west{top:0;transform:translateX(-50%)}.advanced-cropper-bounding-box__line--west{left:0}.advanced-cropper-bounding-box__line--east{left:100%}.advanced-cropper-artificial-transition{will-change:transform}.advanced-cropper-background-image{max-width:none!important;pointer-events:none;position:absolute;transform-origin:center;-webkit-user-select:none;user-select:none}.advanced-cropper-canvas{display:none}.advanced-cropper-source{height:1px;opacity:0;position:absolute;visibility:hidden;width:1px}.advanced-cropper-fade{display:flex;flex-direction:column;opacity:0;transition:.5s;visibility:hidden}.advanced-cropper-fade--visible{opacity:1;visibility:visible}.advanced-cropper-wrapper__fade{flex-grow:1;min-height:0}.advanced-cropper-stencil-grid{border-collapse:collapse;display:table;opacity:0;table-layout:fixed;transition:opacity .3s}.advanced-cropper-stencil-grid--visible{opacity:1}.advanced-cropper-stencil-grid__row{display:table-row}.advanced-cropper-stencil-grid__cell{border:1px solid;display:table-cell;height:1%;width:1%}.advanced-cropper-stencil-grid__cell--top{border-top-color:transparent}.advanced-cropper-stencil-grid__cell--left{border-left-color:transparent}.advanced-cropper-stencil-grid__cell--right{border-right-color:transparent}.advanced-cropper-stencil-grid__cell--bottom{border-bottom-color:transparent}.advanced-cropper-stencil-overlay{-webkit-backface-visibility:hidden;box-shadow:0 0 0 1000px currentColor;box-sizing:initial;height:100%;pointer-events:none;position:absolute;width:100%}.advanced-cropper-stencil-wrapper{will-change:transform}.advanced-cropper-boundary{direction:ltr;position:relative;-webkit-user-select:none;user-select:none}.advanced-cropper-boundary__content{height:100%;left:0;position:absolute;top:0;width:100%}.advanced-cropper-boundary__stretcher{max-height:100%;max-width:100%;pointer-events:none;position:relative}.advanced-cropper-circle-stencil{-webkit-backface-visibility:hidden;box-sizing:initial;height:100%;position:absolute;-webkit-transform-style:preserve-3d;width:100%}.advanced-cropper-circle-stencil__overlay{border-radius:50%;overflow:hidden}.advanced-cropper-circle-stencil__preview{border-radius:50%}.advanced-cropper-circle-stencil__draggable-area,.advanced-cropper-circle-stencil__grid,.advanced-cropper-circle-stencil__overlay,.advanced-cropper-circle-stencil__preview{height:100%;position:absolute;width:100%}.advanced-cropper-circle-stencil--movable{cursor:move}.advanced-cropper-rectangle-stencil{-webkit-backface-visibility:hidden;box-sizing:border-box;-webkit-transform-style:preserve-3d}.advanced-cropper-rectangle-stencil,.advanced-cropper-rectangle-stencil__draggable-area,.advanced-cropper-rectangle-stencil__grid,.advanced-cropper-rectangle-stencil__overlay,.advanced-cropper-rectangle-stencil__preview{height:100%;position:absolute;width:100%}.advanced-cropper-rectangle-stencil--movable{cursor:move}.advanced-cropper-simple-line{background:none;border-width:0}.advanced-cropper-simple-line--north,.advanced-cropper-simple-line--south{height:0;width:100%}.advanced-cropper-simple-line--east,.advanced-cropper-simple-line--west{height:100%;width:0}.advanced-cropper-simple-line--east{border-right-width:1px}.advanced-cropper-simple-line--west{border-left-width:1px}.advanced-cropper-simple-line--south{border-bottom-width:1px}.advanced-cropper-simple-line--north{border-top-width:1px}.advanced-cropper-simple-handler{display:block}.advanced-cropper-preview{box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;position:relative}.advanced-cropper-preview__content{left:50%;overflow:hidden;position:absolute;top:50%;transform:translate(-50%,-50%)}.advanced-cropper-preview__image{display:none;max-width:none!important;pointer-events:none;position:absolute;transform-origin:center;-webkit-user-select:none;user-select:none}.advanced-cropper-preview__image--visible{display:block}.advanced-cropper-preview__boundary{flex-grow:1;min-height:0;min-width:0}.cropper-preview-wrapper__fade{flex-grow:1;min-height:0;width:100%}.advanced-cropper{background:#000;color:#fff;display:flex;flex-direction:column;max-height:100%;overflow:hidden;position:relative}.advanced-cropper__boundary{flex-grow:1;min-height:0;min-width:0}.advanced-cropper__background-wrapper,.advanced-cropper__wrapper{bottom:0;left:0;position:absolute;right:0;top:0}.advanced-cropper__stencil-wrapper{position:absolute}.advanced-cropper *{box-sizing:border-box}.advanced-cropper-simple-handler{background:currentColor;height:10px;width:10px}.advanced-cropper-simple-line{border-color:hsla(0,0%,100%,.3);border-style:solid;transition:border .5s}.advanced-cropper-simple-line--hover{border-color:#fff}.advanced-cropper-circle-stencil__preview{border:2px solid hsla(0,0%,100%,.2)}.advanced-cropper-stencil-overlay{color:rgba(0,0,0,.5)}.advanced-cropper-stencil-grid{color:hsla(0,0%,100%,.4)}");
          var Vv = {
            cropper_container: "ImageCropper-module_cropper_container__uvTtt",
            cropperContainer: "ImageCropper-module_cropper_container__uvTtt",
            copper_wrapper: "ImageCropper-module_copper_wrapper__Wpn9E",
            copperWrapper: "ImageCropper-module_copper_wrapper__Wpn9E",
            cropper_footer: "ImageCropper-module_cropper_footer__Rk-w5",
            cropperFooter: "ImageCropper-module_cropper_footer__Rk-w5",
            footer_button: "ImageCropper-module_footer_button__BdQgl",
            footerButton: "ImageCropper-module_footer_button__BdQgl",
            operate_box: "ImageCropper-module_operate_box__QJJAG",
            operateBox: "ImageCropper-module_operate_box__QJJAG",
            icon: "ImageCropper-module_icon__0Sh-o",
            mock_line: "ImageCropper-module_mock_line__-0jep",
            mockLine: "ImageCropper-module_mock_line__-0jep",
            cropper_type_wrapper: "ImageCropper-module_cropper_type_wrapper__7wTON",
            cropperTypeWrapper: "ImageCropper-module_cropper_type_wrapper__7wTON",
            active: "ImageCropper-module_active__c3F6n",
            cropper_type_arrow: "ImageCropper-module_cropper_type_arrow__6-sTm",
            cropperTypeArrow: "ImageCropper-module_cropper_type_arrow__6-sTm",
            cropper_select_list: "ImageCropper-module_cropper_select_list__Q9Msa",
            cropperSelectList: "ImageCropper-module_cropper_select_list__Q9Msa",
            cropper_select_list_arrow: "ImageCropper-module_cropper_select_list_arrow__GPSms",
            cropperSelectListArrow: "ImageCropper-module_cropper_select_list_arrow__GPSms",
            shape_icon: "ImageCropper-module_shape_icon__d0xAo",
            shapeIcon: "ImageCropper-module_shape_icon__d0xAo",
            preview_circle: "ImageCropper-module_preview_circle__M21xU",
            previewCircle: "ImageCropper-module_preview_circle__M21xU",
            preview_heart: "ImageCropper-module_preview_heart__ePRoZ",
            previewHeart: "ImageCropper-module_preview_heart__ePRoZ",
            preview_star: "ImageCropper-module_preview_star__f2pmG",
            previewStar: "ImageCropper-module_preview_star__f2pmG",
            overlay_rect_radius: "ImageCropper-module_overlay_rect_radius__q1iPj",
            overlayRectRadius: "ImageCropper-module_overlay_rect_radius__q1iPj",
            overlay_ellipse: "ImageCropper-module_overlay_ellipse__F-yu5",
            overlayEllipse: "ImageCropper-module_overlay_ellipse__F-yu5",
            hidden_canvas: "ImageCropper-module_hidden_canvas__l7EU7",
            hiddenCanvas: "ImageCropper-module_hidden_canvas__l7EU7",
            ml0: "ImageCropper-module_ml0__wrtDc"
          };
          c(
          ".ImageCropper-module_cropper_container__uvTtt{border-radius:6px 6px 0 0;max-height:544px;max-width:800px;min-width:600px}.ImageCropper-module_cropper_container__uvTtt *{box-sizing:border-box}.ImageCropper-module_cropper_container__uvTtt .advanced-cropper-simple-line{border-color:#599bff}.ImageCropper-module_cropper_container__uvTtt .advanced-cropper-simple-handler{border:1px solid #599bff}.ImageCropper-module_cropper_container__uvTtt .advanced-cropper__background-wrapper{overflow:hidden}.ImageCropper-module_cropper_container__uvTtt .advanced-cropper-stencil-overlay{box-shadow:0 0 0 1000px rgba(34,34,34,.7)}.ImageCropper-module_copper_wrapper__Wpn9E{border-radius:6px 6px 0 0;max-height:602px}.ImageCropper-module_cropper_footer__Rk-w5{align-items:center;display:flex;height:56px;justify-content:space-between;padding:0 12px}.ImageCropper-module_footer_button__BdQgl{background:#fff;border:1px solid rgba(51,51,51,.12);border-radius:6px;color:#333;cursor:pointer;font-family:inherit;font-size:16px;font-weight:500;line-height:130%;outline:none!important;padding:8px 16px;text-align:center}.ImageCropper-module_footer_button__BdQgl+.ImageCropper-module_footer_button__BdQgl{margin-left:12px}.ImageCropper-module_operate_box__QJJAG{align-items:center;display:flex;margin-left:22px}.ImageCropper-module_icon__0Sh-o{cursor:pointer}.ImageCropper-module_icon__0Sh-o+.ImageCropper-module_icon__0Sh-o{margin-left:32px;margin-right:28px}.ImageCropper-module_mock_line__-0jep{background:rgba(51,51,51,.12);border-radius:3px;flex-shrink:0;height:19px;margin-right:18px;width:2px}.ImageCropper-module_cropper_type_wrapper__7wTON{align-items:center;border-radius:4px;box-sizing:border-box;cursor:pointer;display:flex;font-size:0;gap:10px;height:28px;padding:6px 10px;position:relative}.ImageCropper-module_cropper_type_wrapper__7wTON.ImageCropper-module_active__c3F6n,.ImageCropper-module_cropper_type_wrapper__7wTON:hover{background:#eee}.ImageCropper-module_cropper_type_wrapper__7wTON.ImageCropper-module_active__c3F6n .ImageCropper-module_cropper_type_arrow__6-sTm{transform:rotate(180deg);transition:.2s ease-in}.ImageCropper-module_cropper_select_list__Q9Msa{align-items:flex-start;background:#fff;border-radius:6px;box-shadow:0 4px 20px 0 rgba(0,0,0,.08);box-sizing:border-box;display:flex;flex-wrap:wrap;height:112px;justify-content:space-between;left:50%;padding:6px;position:relative;position:absolute;top:-120px;transform:translateX(-50%);width:74px}.ImageCropper-module_cropper_select_list_arrow__GPSms{bottom:-4px;left:50%;position:absolute;transform:translateX(-50%)}.ImageCropper-module_shape_icon__d0xAo{align-items:center;cursor:pointer;display:flex;height:28px;justify-content:center;margin-bottom:8px;width:28px}.ImageCropper-module_shape_icon__d0xAo.ImageCropper-module_active__c3F6n{background:#e8f1ff;border-radius:4px;color:#3e85ee}@media screen and (max-width:959px){.ImageCropper-module_cropper_container__uvTtt{height:auto;max-height:610px;min-width:auto}.ImageCropper-module_cropper_footer__Rk-w5{height:50px;padding:0 10px}.ImageCropper-module_operate_box__QJJAG{align-items:center;margin-left:0}.ImageCropper-module_icon__0Sh-o+.ImageCropper-module_icon__0Sh-o{margin-left:36px}.ImageCropper-module_cropper_footer__Rk-w5{font-size:15px}.ImageCropper-module_footer_button__BdQgl{line-height:17px}}.ImageCropper-module_preview_circle__M21xU{border:none}.ImageCropper-module_preview_heart__ePRoZ{background:transparent;background:url(https://static.staticdj.com/oss/operation/79fbbd3c59b5e444f74d54581b9a0411.svg);background-repeat:no-repeat;background-size:100% 100%;position:relative}.ImageCropper-module_preview_star__f2pmG{background:transparent;background:url(https://static.staticdj.com/oss/operation/76f72c9c2894f11f9efcec04cf8f90e0.svg);background-repeat:no-repeat;background-size:100% 100%;position:relative}.ImageCropper-module_overlay_rect_radius__q1iPj{border-radius:28px}.ImageCropper-module_overlay_ellipse__F-yu5{border-radius:50%;height:100%;left:50%;position:absolute;transform:translateX(-50%);width:50%}.ImageCropper-module_hidden_canvas__l7EU7{display:none}.ImageCropper-module_ml0__wrtDc{margin-left:0}");
          var Xv = {
              rect: zl(Ev, {}),
              rect_radius: zl(yv, {}),
              circle: zl(lv, {}),
              ellipse: zl(fv, {}),
              heart: zl(Dv, {}),
              star: zl(Fv, {})
            },
            Gv = [zl(Av, {}), zl(kv, {}), zl(hv, {}), zl(vv, {}), zl(Rv, {}), zl(Hv, {})],
            Yv = {
              rect: "rectangle",
              rect_radius: "rounded_rectangle",
              circle: "round",
              ellipse: "oval",
              heart: "heart",
              star: "star"
            },
            qv = new Array;
          ! function(e) {
            for (var t = 0; t < e.length; t++) qv[t] = new Image, qv[t].src = e[t]
          }(["https://static.staticdj.com/oss/operation/79fbbd3c59b5e444f74d54581b9a0411.svg", "https://static.staticdj.com/oss/operation/76f72c9c2894f11f9efcec04cf8f90e0.svg"]);
          var Kv = e => {
              var {
                onCancel: t,
                onConfirm: n,
                file: r,
                url: i
              } = e, [o, a] = dt({
                width: 0,
                height: 0
              }), [s, l] = dt("rect"), [c, u] = dt(!1), p = vt(null), {
                formatMessage: f
              } = vo();
              gt((() => {
                var e = new Image;
                e.onload = function() {
                  var {
                    width: t,
                    height: n
                  } = e;
                  a({
                    width: t,
                    height: n
                  })
                }, e.src = i
              }), [i]), gt((() => {
                document.addEventListener("click", (() => {
                  u(!1)
                }))
              }), []);
              var g = e => {
                  p.current.zoomImage(e)
                },
                m = function() {
                  var e = d((function*() {
                    var e, t = p.current.getCanvas(),
                      i = new X.fabric.Canvas("fabricInstance");
                    try {
                      e = yield v()
                    } catch (n) {
                      e = t.toDataURL()
                    }
                    var o = s;
                    "circle" === o ? X.fabric.Image.fromURL(e, (t => {
                      i.setWidth(t.width), i.setHeight(t.height), t.set({
                        clipPath: new X.fabric.Circle({
                          radius: t.width / 2,
                          originX: "center",
                          originY: "center"
                        })
                      }), i.add(t), i.renderAll(), e = i.toDataURL(), n(h(h({}, r), {}, {
                        dataUrl: e
                      }))
                    })) : "ellipse" === o ? X.fabric.Image.fromURL(e, (t => {
                      i.setWidth(t.width), i.setHeight(t.height), t.set({
                        clipPath: new X.fabric.Ellipse({
                          rx: t.width / 2 / 2,
                          ry: t.height / 2,
                          originX: "center",
                          originY: "center"
                        })
                      }), i.add(t), i.renderAll(), e = i.toDataURL(), n(h(h({}, r), {}, {
                        dataUrl: e
                      }))
                    })) : "rect_radius" === o ? X.fabric.Image.fromURL(e, (t => {
                      i.setWidth(t.width), i.setHeight(t.height), t.set({
                        clipPath: new X.fabric.Rect({
                          width: t.width,
                          height: t.height,
                          rx: 28,
                          ry: 28,
                          originX: "center",
                          originY: "center"
                        })
                      }), i.add(t), i.renderAll(), e = i.toDataURL(), n(h(h({}, r), {}, {
                        dataUrl: e
                      }))
                    })) : "heart" === o ? (e = t.toDataURL(), X.fabric.Image.fromURL(e, (t => {
                      var i = document.getElementById("fabricInstance2"),
                        o = t.height / t.width * 300,
                        a = 25 / 238 * o;
                      i.width = 800, i.height = 600;
                      var s = i.getContext("2d");
                      s.fillStyle = "rgba(255, 255, 255, 0)", s.fillRect(0, 0, 800, 600), s.save(), s.beginPath(), s.moveTo(400, 175 + a), s.bezierCurveTo(568, 125, 568, 330, 400, o + 168), s.bezierCurveTo(232, 330, 232, 125, 400,
                        175 + a), s.clip(), s.closePath(), (t = new Image).src = e, t.onload = function() {
                        s.drawImage(t, 273, 172, 254, o), e = i.toDataURL();
                        var a = new Image;
                        a.src = e, a.id = "img3", a.onload = () => {
                          var t = document.getElementById("fabricInstance3");
                          t.width = 254, t.height = o, t.getContext("2d").drawImage(a, -273, -1 * (600 - o) / 2 - 3), e = t.toDataURL(), n(h(h({}, r), {}, {
                            dataUrl: e
                          }))
                        }
                      }
                    }))) : "star" === o ? (e = t.toDataURL(), X.fabric.Image.fromURL(e, (t => {
                      var i = document.getElementById("fabricInstance2"),
                        o = i.getContext("2d");
                      o.fillStyle = "rgba(255,255,255,0)", o.fillRect(0, 0, t.width, t.height);
                      var a = new Image;
                      a.src = e, a.onload = function() {
                        i.width = t.width, i.height = t.height,
                          function(o, a) {
                            var s = Math.max(t.width / 2, t.height / 2);
                            (function(e, t, n) {
                              var r = 360 / t / 2,
                                i = 90,
                                o = n / 2;
                              e.save(), e.translate(n, n), e.rotate(60), e.moveTo(0, n), e.beginPath();
                              for (var a = 0; a <= t; a++) {
                                var s = n * Math.sin((i + 2 * a * r) / 180 * Math.PI),
                                  l = n * Math.cos((i + 2 * a * r) / 180 * Math.PI),
                                  c = o * Math.sin((i + (2 * a + 1) * r) / 180 * Math.PI),
                                  u = o * Math.cos((i + (2 * a + 1) * r) / 180 * Math.PI);
                                e.lineTo(s, l), e.lineTo(c, u)
                              }
                              e.closePath(), e.clip()
                            })(o, 5, s), o.save(), o.rotate(-60), o.drawImage(a, -s, -s, t.width, t.height), e = i.toDataURL(), n(h(h({}, r), {}, {
                              dataUrl: e
                            }))
                          }(o, a)
                      }
                    }))) : n(h(h({}, r), {}, {
                      dataUrl: e
                    })), la("admin_plugin_product_customizer_shape", {
                      shape_type: Yv[o]
                    })
                  }));
                  return function() {
                    return e.apply(this, arguments)
                  }
                }(),
                v = () => new Promise((e => {
                  var t = new X.fabric.StaticCanvas("fabricInstance0");
                  X.fabric.Image.fromURL(i, (n => {
                    var {
                      width: r,
                      height: i,
                      left: o,
                      top: a
                    } = p.current.getCoordinates();
                    n.set({
                      left: -o,
                      top: -a
                    }), t.setWidth(r), t.setHeight(i), t.clear(), t.add(n), t.renderAll(), setTimeout((() => {
                      var n = t.toDataURL();
                      e(n)
                    }), 50)
                  }))
                })),
                {
                  width: _,
                  height: b
                } = o,
                y = bt((() => {
                  var e = pa() ? window.document.body.clientWidth - 32 : 800;
                  return zl("div", {
                    className: Vv.cropper_container,
                    style: {
                      maxWidth: e,
                      maxHeight: 602,
                      minWidth: 300,
                      width: _
                    },
                    children: zl(Xm, "circle" === s ? {
                      className: Vv.copper_wrapper,
                      crossOrigin: "anonymous",
                      stencilComponent: Gm,
                      stencilProps: {
                        aspectRatio: 1,
                        previewClassName: Vv["preview_".concat(s)]
                      },
                      ref: p,
                      src: i
                    } : {
                      defaultSize: "rect" === s ? e => {
                        var {
                          imageSize: t,
                          visibleArea: n
                        } = e, r = Math.min((n || t).width / 2, (n || t).height / 2);
                        return {
                          width: r,
                          height: r
                        }
                      } : {},
                      className: Vv.copper_wrapper,
                      crossOrigin: "anonymous",
                      stencilProps: {
                        aspectRatio: {
                          heart: 268 / 238,
                          star: 269 / 256,
                          rect_radius: 1,
                          ellipse: 1,
                          circle: 1,
                          rect: ""
                        } [s],
                        previewClassName: Vv["preview_".concat(s)],
                        overlayClassName: Vv["overlay_".concat(s)]
                      },
                      ref: p,
                      src: i
                    })
                  })
                }), [i, _, s]),
                w = bt((() => Xv[s]), [s]),
                x = bt((() => {
                  var e = Object.values(Xv),
                    t = Object.keys(Xv);
                  return zl(Pe, {
                    children: null == e ? void 0 : e.map(((e, n) => zl("div", {
                      onClick: () => {
                        l(t[n])
                      },
                      className: Rl(Vv.shape_icon, t[n] === s ? Vv.active : ""),
                      children: t[n] === s ? Gv[n] : e
                    })))
                  })
                }), [s]);
              if (i && _) return zl("div", {
                className: "",
                children: [y, zl("div", {
                  className: Vv.hidden_canvas,
                  children: [zl("canvas", {
                    id: "fabricInstance0",
                    className: Vv.hidden_canvas
                  }), zl("canvas", {
                    id: "fabricInstance",
                    className: Vv.hidden_canvas
                  }), zl("canvas", {
                    id: "fabricInstance2",
                    className: Vv.hidden_canvas
                  }), zl("canvas", {
                    id: "fabricInstance3",
                    className: Vv.hidden_canvas
                  })]
                }), zl("div", {
                  className: Vv.cropper_footer,
                  children: [zl("div", {
                    className: Vv.operate_box,
                    children: [!pa() && zl(Pe, {
                      children: [zl(Qm, {
                        className: Vv.icon,
                        onClick: () => g(.8)
                      }), zl(nv, {
                        className: Vv.icon,
                        onClick: () => g(1.2)
                      }), zl("div", {
                        className: Vv.mock_line
                      })]
                    }), zl("div", {
                      className: Rl(Vv.cropper_type_wrapper, c ? Vv.active : "", pa() ? Vv.ml0 : ""),
                      onClick: e => {
                        e.stopPropagation(), u(!c)
                      },
                      children: [zl("div", {
                        className: Vv.cropper_type_icon,
                        children: w
                      }), zl("div", {
                        className: Vv.cropper_type_arrow,
                        children: zl(ov, {})
                      }), c && zl("div", {
                        className: Vv.cropper_select_list,
                        children: [x, zl(Wv, {
                          className: Vv.cropper_select_list_arrow
                        })]
                      })]
                    })]
                  }), zl("div", {
                    children: [zl("button", {
                      className: Vv.footer_button,
                      onClick: () => {
                        var e;
                        t(r), fabricInstance && (null === (e = fabricInstance) || void 0 === e || e.dispose())
                      },
                      children: f({
                        id: "cancel"
                      })
                    }), zl("button", {
                      className: Vv.footer_button,
                      onClick: m,
                      children: f({
                        id: "select"
                      })
                    })]
                  })]
                })]
              })
            },
            $v = Qe(null),
            Zv = Lp() ? mt : gt,
            Jv = Zv,
            Qv = function(e, t) {
              var n = vt(!0);
              Zv((function() {
                if (!n.current) return e()
              }), t), Zv((function() {
                return n.current = !1,
                  function() {
                    n.current = !0
                  }
              }), [])
            },
            e_ = [];

          function t_(e, t) {
            if (!e) return !1;
            if (e.contains) return e.contains(t);
            for (var n = t; n;) {
              if (n === e) return !0;
              n = n.parentNode
            }
            return !1
          }
          var n_, r_ = "data-rc-order",
            i_ = "rc-util-key",
            o_ = new Map;

          function a_() {
            var e = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).mark;
            return e ? e.startsWith("data-") ? e : "data-".concat(e) : i_
          }

          function s_(e) {
            return e.attachTo ? e.attachTo : document.querySelector("head") || document.body
          }

          function l_(e) {
            return Array.from((o_.get(e) || e).children).filter((function(e) {
              return "STYLE" === e.tagName
            }))
          }

          function c_(e) {
            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
            if (!Lp()) return null;
            var n = t.csp,
              r = t.prepend,
              i = document.createElement("style");
            i.setAttribute(r_, function(e) {
              return "queue" === e ? "prependQueue" : e ? "prepend" : "append"
            }(r)), null != n && n.nonce && (i.nonce = null == n ? void 0 : n.nonce), i.innerHTML = e;
            var o = s_(t),
              a = o.firstChild;
            if (r) {
              if ("queue" === r) {
                var s = l_(o).filter((function(e) {
                  return ["prepend", "prependQueue"].includes(e.getAttribute(r_))
                }));
                if (s.length) return o.insertBefore(i, s[s.length - 1].nextSibling), i
              }
              o.insertBefore(i, a)
            } else o.appendChild(i);
            return i
          }

          function u_(e) {
            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
            return l_(s_(t)).find((function(n) {
              return n.getAttribute(a_(t)) === e
            }))
          }

          function h_(e) {
            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
              n = u_(e, t);
            n && s_(t).removeChild(n)
          }

          function p_(e, t) {
            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
            ! function(e, t) {
              var n = o_.get(e);
              if (!n || !t_(document, n)) {
                var r = c_("", t),
                  i = r.parentNode;
                o_.set(e, i), e.removeChild(r)
              }
            }(s_(n), n);
            var r = u_(t, n);
            if (r) {
              var i, o, a;
              if (null !== (i = n.csp) && void 0 !== i && i.nonce && r.nonce !== (null === (o = n.csp) || void 0 === o ? void 0 : o.nonce)) r.nonce = null === (a = n.csp) || void 0 === a ? void 0 : a.nonce;
              return r.innerHTML !== e && (r.innerHTML = e), r
            }
            var s = c_(e, n);
            return s.setAttribute(a_(n), t), s
          }
          var d_ = "rc-util-locker-".concat(Date.now()),
            f_ = 0;

          function g_(e) {
            var t = !!e,
              n = Mp(dt((function() {
                return f_ += 1, "".concat(d_, "_").concat(f_)
              })), 1)[0];
            Jv((function() {
              if (t) {
                var e = function(e) {
                    if ("undefined" == typeof document) return 0;
                    if (e || void 0 === n_) {
                      var t = document.createElement("div");
                      t.style.width = "100%", t.style.height = "200px";
                      var n = document.createElement("div"),
                        r = n.style;
                      r.position = "absolute", r.top = "0", r.left = "0", r.pointerEvents = "none", r.visibility = "hidden", r.width = "200px", r.height = "150px", r.overflow = "hidden", n.appendChild(t), document.body.appendChild(n);
                      var i = t.offsetWidth;
                      n.style.overflow = "scroll";
                      var o = t.offsetWidth;
                      i === o && (o = n.clientWidth), document.body.removeChild(n), n_ = i - o
                    }
                    return n_
                  }(),
                  r = document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;
                p_("\nhtml body {\n  overflow-y: hidden;\n  ".concat(r ? "width: calc(100% - ".concat(e, "px);") : "", "\n}"), n)
              } else h_(n);
              return function() {
                h_(n)
              }
            }), [t, n])
          }
          var m_ = !1;
          var v_ = function(e) {
              return !1 !== e && (Lp() && e ? "string" == typeof e ? document.querySelector(e) : "function" == typeof e ? e() : e : null)
            },
            __ = Ft((function(e, t) {
              var n = e.open,
                r = e.autoLock,
                i = e.getContainer,
                o = e.autoDestroy,
                a = void 0 === o || o,
                s = e.children,
                l = Mp(dt(n), 2),
                c = l[0],
                u = l[1],
                h = c || n;
              gt((function() {
                (a || n) && u(n)
              }), [n, a]);
              var p = Mp(dt((function() {
                  return v_(i)
                })), 2),
                d = p[0],
                f = p[1];
              gt((function() {
                var e = v_(i);
                f(null != e ? e : null)
              }));
              var g = function(e, t) {
                  var n = Mp(dt((function() {
                      return Lp() ? document.createElement("div") : null
                    })), 1)[0],
                    r = vt(!1),
                    i = wt($v),
                    o = Mp(dt(e_), 2),
                    a = o[0],
                    s = o[1],
                    l = i || (r.current ? void 0 : function(e) {
                      s((function(t) {
                        return [e].concat(Bh(t))
                      }))
                    });

                  function c() {
                    n.parentElement || document.body.appendChild(n), r.current = !0
                  }

                  function u() {
                    var e;
                    null === (e = n.parentElement) || void 0 === e || e.removeChild(n), r.current = !1
                  }
                  return Jv((function() {
                    return e ? i ? i(c) : c() : u(), u
                  }), [e]), Jv((function() {
                    a.length && (a.forEach((function(e) {
                      return e()
                    })), s(e_))
                  }), [a]), [n, l]
                }(h && !d),
                m = Mp(g, 2),
                v = m[0],
                _ = m[1],
                b = null != d ? d : v;
              g_(r && n && Lp() && (b === v || b === document.body));
              var y = null;
              s && jp(s) && t && (y = s.ref);
              var w = function() {
                for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
                return Ip((function() {
                  return Rp.apply(void 0, t)
                }), t, (function(e, t) {
                  return e.length === t.length && e.every((function(e, n) {
                    return e === t[n]
                  }))
                }))
              }(y, t);
              if (!h || !Lp() || void 0 === d) return null;
              var x, k = !1 === b || ("boolean" == typeof x && (m_ = x), m_),
                C = s;
              return t && (C = yn(s, {
                ref: w
              })), Te($v.Provider, {
                value: _
              }, k ? C : Jt(C, b))
            })),
            b_ = __,
            y_ = {
              MAC_ENTER: 3,
              BACKSPACE: 8,
              TAB: 9,
              NUM_CENTER: 12,
              ENTER: 13,
              SHIFT: 16,
              CTRL: 17,
              ALT: 18,
              PAUSE: 19,
              CAPS_LOCK: 20,
              ESC: 27,
              SPACE: 32,
              PAGE_UP: 33,
              PAGE_DOWN: 34,
              END: 35,
              HOME: 36,
              LEFT: 37,
              UP: 38,
              RIGHT: 39,
              DOWN: 40,
              PRINT_SCREEN: 44,
              INSERT: 45,
              DELETE: 46,
              ZERO: 48,
              ONE: 49,
              TWO: 50,
              THREE: 51,
              FOUR: 52,
              FIVE: 53,
              SIX: 54,
              SEVEN: 55,
              EIGHT: 56,
              NINE: 57,
              QUESTION_MARK: 63,
              A: 65,
              B: 66,
              C: 67,
              D: 68,
              E: 69,
              F: 70,
              G: 71,
              H: 72,
              I: 73,
              J: 74,
              K: 75,
              L: 76,
              M: 77,
              N: 78,
              O: 79,
              P: 80,
              Q: 81,
              R: 82,
              S: 83,
              T: 84,
              U: 85,
              V: 86,
              W: 87,
              X: 88,
              Y: 89,
              Z: 90,
              META: 91,
              WIN_KEY_RIGHT: 92,
              CONTEXT_MENU: 93,
              NUM_ZERO: 96,
              NUM_ONE: 97,
              NUM_TWO: 98,
              NUM_THREE: 99,
              NUM_FOUR: 100,
              NUM_FIVE: 101,
              NUM_SIX: 102,
              NUM_SEVEN: 103,
              NUM_EIGHT: 104,
              NUM_NINE: 105,
              NUM_MULTIPLY: 106,
              NUM_PLUS: 107,
              NUM_MINUS: 109,
              NUM_PERIOD: 110,
              NUM_DIVISION: 111,
              F1: 112,
              F2: 113,
              F3: 114,
              F4: 115,
              F5: 116,
              F6: 117,
              F7: 118,
              F8: 119,
              F9: 120,
              F10: 121,
              F11: 122,
              F12: 123,
              NUMLOCK: 144,
              SEMICOLON: 186,
              DASH: 189,
              EQUALS: 187,
              COMMA: 188,
              PERIOD: 190,
              SLASH: 191,
              APOSTROPHE: 192,
              SINGLE_QUOTE: 222,
              OPEN_SQUARE_BRACKET: 219,
              BACKSLASH: 220,
              CLOSE_SQUARE_BRACKET: 221,
              WIN_KEY: 224,
              MAC_FF_META: 224,
              WIN_IME: 229,
              isTextModifyingKeyEvent: function(e) {
                var t = e.keyCode;
                if (e.altKey && !e.ctrlKey || e.metaKey || t >= y_.F1 && t <= y_.F12) return !1;
                switch (t) {
                  case y_.ALT:
                  case y_.CAPS_LOCK:
                  case y_.CONTEXT_MENU:
                  case y_.CTRL:
                  case y_.DOWN:
                  case y_.END:
                  case y_.ESC:
                  case y_.HOME:
                  case y_.INSERT:
                  case y_.LEFT:
                  case y_.MAC_FF_META:
                  case y_.META:
                  case y_.NUMLOCK:
                  case y_.NUM_CENTER:
                  case y_.PAGE_DOWN:
                  case y_.PAGE_UP:
                  case y_.PAUSE:
                  case y_.PRINT_SCREEN:
                  case y_.RIGHT:
                  case y_.SHIFT:
                  case y_.UP:
                  case y_.WIN_KEY:
                  case y_.WIN_KEY_RIGHT:
                    return !1;
                  default:
                    return !0
                }
              },
              isCharacterKey: function(e) {
                if (e >= y_.ZERO && e <= y_.NINE) return !0;
                if (e >= y_.NUM_ZERO && e <= y_.NUM_MULTIPLY) return !0;
                if (e >= y_.A && e <= y_.Z) return !0;
                if (-1 !== window.navigator.userAgent.indexOf("WebKit") && 0 === e) return !0;
                switch (e) {
                  case y_.SPACE:
                  case y_.QUESTION_MARK:
                  case y_.NUM_PLUS:
                  case y_.NUM_MINUS:
                  case y_.NUM_PERIOD:
                  case y_.NUM_DIVISION:
                  case y_.SEMICOLON:
                  case y_.DASH:
                  case y_.EQUALS:
                  case y_.COMMA:
                  case y_.PERIOD:
                  case y_.SLASH:
                  case y_.APOSTROPHE:
                  case y_.SINGLE_QUOTE:
                  case y_.OPEN_SQUARE_BRACKET:
                  case y_.BACKSLASH:
                  case y_.CLOSE_SQUARE_BRACKET:
                    return !0;
                  default:
                    return !1
                }
              }
            },
            w_ = y_;
          var x_ = 0;

          function k_(e) {
            var t = Mp(dt("ssr-id"), 2),
              n = t[0],
              r = t[1],
              i = Hh({}, Rn).useId,
              o = null == i ? void 0 : i();
            return gt((function() {
              if (!i) {
                var e = x_;
                x_ += 1, r("rc_unique_".concat(e))
              }
            }), []), e || (o || n)
          }

          function C_(e) {
            var t = e.prefixCls,
              n = e.style,
              r = e.visible,
              i = e.maskProps,
              o = e.motionName;
            return Te(Sd, {
              key: "mask",
              visible: r,
              motionName: o,
              leavedClassName: "".concat(t, "-mask-hidden")
            }, (function(e, r) {
              var o = e.className;
              return Te("div", wh({
                ref: r,
                style: Hh(Hh({}, e.style), n),
                className: Rl("".concat(t, "-mask"), o)
              }, i))
            }))
          }

          function S_(e, t, n) {
            var r = t;
            return !r && n && (r = "".concat(e, "-").concat(n)), r
          }

          function E_(e, t) {
            var n = e["page".concat(t ? "Y" : "X", "Offset")],
              r = "scroll".concat(t ? "Top" : "Left");
            if ("number" != typeof n) {
              var i = e.document;
              "number" != typeof(n = i.documentElement[r]) && (n = i.body[r])
            }
            return n
          }
          var T_ = Rt((function(e) {
              return e.children
            }), (function(e, t) {
              return !t.shouldUpdate
            })),
            O_ = {
              width: 0,
              height: 0,
              overflow: "hidden",
              outline: "none"
            },
            A_ = Nn.forwardRef((function(e, t) {
              var n = e.prefixCls,
                r = e.className,
                i = e.style,
                o = e.title,
                a = e.ariaId,
                s = e.footer,
                l = e.closable,
                c = e.closeIcon,
                u = e.onClose,
                h = e.children,
                p = e.bodyStyle,
                d = e.bodyProps,
                f = e.modalRender,
                g = e.onMouseDown,
                m = e.onMouseUp,
                v = e.holderRef,
                _ = e.visible,
                b = e.forceRender,
                y = e.width,
                w = e.height,
                x = vt(),
                k = vt();
              Nn.useImperativeHandle(t, (function() {
                return {
                  focus: function() {
                    var e;
                    null === (e = x.current) || void 0 === e || e.focus()
                  },
                  changeActive: function(e) {
                    var t = document.activeElement;
                    e && t === k.current ? x.current.focus() : e || t !== x.current || k.current.focus()
                  }
                }
              }));
              var C, S, E, T = {};
              void 0 !== y && (T.width = y), void 0 !== w && (T.height = w), s && (C = Nn.createElement("div", {
                className: "".concat(n, "-footer")
              }, s)), o && (S = Nn.createElement("div", {
                className: "".concat(n, "-header")
              }, Nn.createElement("div", {
                className: "".concat(n, "-title"),
                id: a
              }, o))), l && (E = Nn.createElement("button", {
                type: "button",
                onClick: u,
                "aria-label": "Close",
                className: "".concat(n, "-close")
              }, c || Nn.createElement("span", {
                className: "".concat(n, "-close-x")
              })));
              var O = Nn.createElement("div", {
                className: "".concat(n, "-content")
              }, E, S, Nn.createElement("div", wh({
                className: "".concat(n, "-body"),
                style: p
              }, d), h), C);
              return Nn.createElement("div", {
                key: "dialog-element",
                role: "dialog",
                "aria-labelledby": o ? a : null,
                "aria-modal": "true",
                ref: v,
                style: Hh(Hh({}, i), T),
                className: Rl(n, r),
                onMouseDown: g,
                onMouseUp: m
              }, Nn.createElement("div", {
                tabIndex: 0,
                ref: x,
                style: O_,
                "aria-hidden": "true"
              }), Nn.createElement(T_, {
                shouldUpdate: _ || b
              }, f ? f(O) : O), Nn.createElement("div", {
                tabIndex: 0,
                ref: k,
                style: O_,
                "aria-hidden": "true"
              }))
            })),
            P_ = A_,
            M_ = Ft((function(e, t) {
              var n = e.prefixCls,
                r = e.title,
                i = e.style,
                o = e.className,
                a = e.visible,
                s = e.forceRender,
                l = e.destroyOnClose,
                c = e.motionName,
                u = e.ariaId,
                h = e.onVisibleChanged,
                p = e.mousePosition,
                d = vt(),
                f = Mp(dt(), 2),
                g = f[0],
                m = f[1],
                v = {};

              function _() {
                var e = function(e) {
                  var t = e.getBoundingClientRect(),
                    n = {
                      left: t.left,
                      top: t.top
                    },
                    r = e.ownerDocument,
                    i = r.defaultView || r.parentWindow;
                  return n.left += E_(i), n.top += E_(i, !0), n
                }(d.current);
                m(p ? "".concat(p.x - e.left, "px ").concat(p.y - e.top, "px") : "")
              }
              return g && (v.transformOrigin = g), Te(Sd, {
                visible: a,
                onVisibleChanged: h,
                onAppearPrepare: _,
                onEnterPrepare: _,
                forceRender: s,
                motionName: c,
                removeOnLeave: l,
                ref: d
              }, (function(a, s) {
                var l = a.className,
                  c = a.style;
                return Te(P_, wh({}, e, {
                  ref: t,
                  title: r,
                  ariaId: u,
                  prefixCls: n,
                  holderRef: s,
                  style: Hh(Hh(Hh({}, c), i), v),
                  className: Rl(o, l)
                }))
              }))
            }));
          M_.displayName = "Content";
          var D_ = M_;

          function I_(e) {
            var t = e.prefixCls,
              n = void 0 === t ? "rc-dialog" : t,
              r = e.zIndex,
              i = e.visible,
              o = void 0 !== i && i,
              a = e.keyboard,
              s = void 0 === a || a,
              l = e.focusTriggerAfterClose,
              c = void 0 === l || l,
              u = e.wrapStyle,
              h = e.wrapClassName,
              p = e.wrapProps,
              d = e.onClose,
              f = e.afterClose,
              g = e.transitionName,
              m = e.animation,
              v = e.closable,
              _ = void 0 === v || v,
              b = e.mask,
              y = void 0 === b || b,
              w = e.maskTransitionName,
              x = e.maskAnimation,
              k = e.maskClosable,
              C = void 0 === k || k,
              S = e.maskStyle,
              E = e.maskProps,
              T = e.rootClassName,
              O = vt(),
              A = vt(),
              P = vt(),
              M = Mp(dt(o), 2),
              D = M[0],
              I = M[1],
              N = k_();

            function R(e) {
              null == d || d(e)
            }
            var j = vt(!1),
              L = vt(),
              F = null;
            return C && (F = function(e) {
              j.current ? j.current = !1 : A.current === e.target && R(e)
            }), gt((function() {
              o && (I(!0), t_(A.current, document.activeElement) || (O.current = document.activeElement))
            }), [o]), gt((function() {
              return function() {
                clearTimeout(L.current)
              }
            }), []), Te("div", wh({
              className: Rl("".concat(n, "-root"), T)
            }, Gh(e, {
              data: !0
            })), Te(C_, {
              prefixCls: n,
              visible: y && o,
              motionName: S_(n, w, x),
              style: Hh({
                zIndex: r
              }, S),
              maskProps: E
            }), Te("div", wh({
              tabIndex: -1,
              onKeyDown: function(e) {
                if (s && e.keyCode === w_.ESC) return e.stopPropagation(), void R(e);
                o && e.keyCode === w_.TAB && P.current.changeActive(!e.shiftKey)
              },
              className: Rl("".concat(n, "-wrap"), h),
              ref: A,
              onClick: F,
              style: Hh(Hh({
                zIndex: r
              }, u), {}, {
                display: D ? null : "none"
              })
            }, p), Te(D_, wh({}, e, {
              onMouseDown: function() {
                clearTimeout(L.current), j.current = !0
              },
              onMouseUp: function() {
                L.current = setTimeout((function() {
                  j.current = !1
                }))
              },
              ref: P,
              closable: _,
              ariaId: N,
              prefixCls: n,
              visible: o && D,
              onClose: R,
              onVisibleChanged: function(e) {
                if (e) t_(A.current, document.activeElement) || null === (t = P.current) || void 0 === t || t.focus();
                else {
                  if (I(!1), y && O.current && c) {
                    try {
                      O.current.focus({
                        preventScroll: !0
                      })
                    } catch (e) {}
                    O.current = null
                  }
                  D && (null == f || f())
                }
                var t
              },
              motionName: S_(n, g, m)
            }))))
          }
          var N_ = function(e) {
            var t = e.visible,
              n = e.getContainer,
              r = e.forceRender,
              i = e.destroyOnClose,
              o = void 0 !== i && i,
              a = e.afterClose,
              s = Mp(dt(t), 2),
              l = s[0],
              c = s[1];
            return gt((function() {
              t && c(!0)
            }), [t]), r || !o || l ? Te(b_, {
              open: t || r || l,
              autoDestroy: !1,
              getContainer: n,
              autoLock: t || l
            }, Te(I_, wh({}, e, {
              destroyOnClose: o,
              afterClose: function() {
                null == a || a(), c(!1)
              }
            }))) : null
          };
          N_.displayName = "Dialog";
          var R_ = N_,
            j_ = "Upload-module_upload_dialog__jV-WW",
            L_ = "Upload-module_upload_large__9rjsH",
            F_ = "Upload-module_large_content__PoxTi",
            B_ = "Upload-module_large_img__Xguu1",
            z_ = "Upload-module_large_tips__TOH6I",
            H_ = "Upload-module_upload_tips__8XVTP",
            U_ = "Upload-module_upload_tips_dot__GLSmQ";

          function W_(e, t) {
            var n = void 0 !== e.uid ? "uid" : "name";
            return t.filter((t => t[n] === e[n]))[0]
          }
          c(
          '.Upload-module_upload_dialog__jV-WW{border-radius:8px;left:50%;margin:0!important;padding:0!important;position:absolute!important;top:50%;transform:translateX(-50%) translateY(-50%);width:auto!important}.Upload-module_upload_dialog__jV-WW .rc-dialog-body{display:block;padding:0}.Upload-module_upload_large__9rjsH{border-radius:8px;height:228px;margin-bottom:6px;width:100%}.Upload-module_large_content__PoxTi{align-items:flex-start;display:inline-flex;flex-direction:column;gap:8px}.Upload-module_large_img__Xguu1{align-items:center;display:flex;flex-direction:column;gap:4px;width:100%}.Upload-module_large_img__Xguu1 p{color:#333;font-style:normal;font-weight:600;width:100%}.Upload-module_large_img__Xguu1 p span{color:#477bff;font-weight:600;position:relative}.Upload-module_large_img__Xguu1 p span:after{background-color:#477bff;bottom:3px;content:"";height:1px;left:0;position:absolute;width:100%}.Upload-module_large_tips__TOH6I{align-items:flex-start;display:flex;flex-direction:column;gap:4px}.Upload-module_upload_tips__8XVTP{align-items:center;color:rgba(51,51,51,.8);display:flex;font-size:13px!important;font-style:normal;font-weight:400;gap:6px}.Upload-module_upload_tips_dot__GLSmQ{background-color:#5c5c5c;border-radius:50%;display:inline-block;height:3px;width:3px}');
          var V_, X_ = e => {
              var {
                optionData: t,
                control: n,
                defaultValue: r = [],
                fieldName: i,
                propertyName: o,
                name: a,
                required: s,
                max_file: l = 1,
                help: c,
                visible: u,
                type: p
              } = e, d = l > 1, {
                setError: f,
                clearErrors: g
              } = wt(Op), [m, _] = dt(!1), [b, k] = dt({}), S = vt(null), T = vt(null), [O, A] = dt(""), [D, I] = dt(null), {
                formatMessage: N
              } = vo(), [R, j] = ef(), F = wt(pu), z = ss({
                control: n,
                name: i
              }), {
                field: {
                  onChange: U,
                  onBlur: W,
                  value: V,
                  ref: X
                }
              } = ls({
                control: n,
                name: i,
                rules: {
                  required: {
                    value: !!s,
                    message: N({
                      id: "required_tip"
                    })
                  }
                },
                defaultValue: r
              }), G = V;
              V.length || (G = z || []);
              var [Y, q] = dt(null), K = zl("div", {
                className: Rl("pk-flex pk-justify-center pk-items-center pk-border pk-border-dashed pk-border-[#333/20] pk-rounded pk-bg-[#fdfdfd] hover:pk-bg-[#f6f6f7] hover:pk-border-[#333/40]", pa() ? "pk-w-18 pk-h-18" :
                  "pk-w-20 pk-h-20"),
                children: zl(yp, {})
              }), $ = zl("div", {
                className: Rl("pk-flex pk-justify-center pk-items-center pk-border pk-border-dashed pk-border-[#333/20] pk-bg-[#fdfdfd] hover:pk-bg-[#f6f6f7] hover:pk-border-[#333/40]", L_),
                children: zl("div", {
                  className: "".concat(F_, " notranslate"),
                  children: [zl("div", {
                    className: B_,
                    children: [zl(Cp, {}), pa() ? zl("p", {
                      className: pa() ? "!pk-text-[15px] text-center" : "!pk-text-[16px]",
                      children: N({
                        id: "options.upload.large.text.mobile"
                      })
                    }) : zl("p", {
                      className: pa() ? "!pk-text-[15px]" : "!pk-text-[16px]",
                      children: [N({
                        id: "options.upload.large.text"
                      }), zl("span", {
                        className: pa() ? "!pk-text-[15px]" : "!pk-text-[16px]",
                        children: N({
                          id: "options.upload.large.browse"
                        })
                      })]
                    })]
                  }), zl("div", {
                    className: "".concat(z_, " notranslate"),
                    children: [zl("div", {
                      className: H_,
                      children: [zl("span", {
                        className: U_
                      }), N({
                        id: "options.upload.large.limit"
                      })]
                    }), zl("div", {
                      className: H_,
                      children: [zl("span", {
                        className: U_
                      }), N({
                        id: "options.upload.large.maxfiles"
                      }), ": ", null == t ? void 0 : t.max_file]
                    })]
                  })]
                })
              }), Z = vt(), J = (e, t) => {
                var n = [...t],
                  r = n.findIndex((t => {
                    var {
                      uid: n
                    } = t;
                    return n === e.uid
                  })); - 1 === r ? n.push(e) : n[r] = e;
                var i = n.filter((e => "error" == e.status));
                return null != i && i.length && (null == i ? void 0 : i.length) === (null == n ? void 0 : n.length) ? (R.destroy(), R.open({
                  content: N({
                    id: "image_upload_fail"
                  })
                })) : null != i && i.length && (R.destroy(), R.open({
                  content: N({
                    id: "image_upload_section_fail"
                  })
                })), n.filter((e => "error" !== e.status))
              }, Q = t => {
                var n, r, o, a = function(e, t) {
                  var n = void 0 !== e.uid ? "uid" : "name",
                    r = t.filter((t => t[n] !== e[n]));
                  return r.length === t.length ? null : r
                }(t, G);
                if (a && (n = h({}, t), hu.$emit(M, t), null === (r = Z.current) || void 0 === r || r.abort(n), U(a), "upload" === p && null !== (o = e.preview_setting) && void 0 !== o && o.preview_open)) {
                  var s = du(e, F);
                  hu.$emit(B, {
                    label_id: i,
                    bg_image_url: s
                  })
                }
              }, ee = () => {
                _(!1), A(""), T.current("cancel upload")
              }, te = e => {
                _(!1), A(""), S.current(e)
              }, ne = (e, t) => (e.objectName = "".concat(window.SHOP_PARAMS.shop_id, "/").concat((new Date).getTime()).concat(Math.floor(1e5 * Math.random()), ".").concat((y(e.type) || w(e.name)).toLowerCase()), e.status = "uploading", d && G
                .push(e), U(d ? G : [e]), "cropper" == t && I(e), "cropper" !== t && Y && Date.now() < 1e3 * Y.expire ? e : v().then((t => (q(t.data), e)))), re = n => zl(cp, {
                ref: Z,
                action: null == Y ? void 0 : Y.write_host,
                accept: "image/png,image/jpeg,image/gif,image/jpg",
                multiple: d,
                beforeUpload: (e, t) => {
                  var n;
                  I(null);
                  var r = (null === (n = G) || void 0 === n ? void 0 : n.length) || 0;
                  return r >= l && (R.destroy(), R.open({
                    content: N({
                      id: "upload_max_tip"
                    }, {
                      max: l
                    })
                  }), t = t.slice(0, l - r)), !!W_(e, t) && (e.size > L ? (R.destroy(), R.open({
                    content: N({
                      id: "image_size_tip"
                    })
                  }), !1) : 1 === t.length ? (e => new Promise(((t, n) => {
                    k(e);
                    var r = new FileReader;
                    r.readAsDataURL(e), S.current = t, T.current = n, r.onload = function(e) {
                      A(e.target.result), _(!0)
                    }
                  })))(e).then((t => {
                    var n = E(t.dataUrl, e.name, "image/png");
                    return n.uid = e.uid, ne(n, "cropper")
                  })) : ne(e))
                },
                data: e => ({
                  policy: null == Y ? void 0 : Y.policy,
                  OSSAccessKeyId: null == Y ? void 0 : Y.access_id,
                  success_action_status: 200,
                  signature: null == Y ? void 0 : Y.sign,
                  "x-oss-forbid-overwrite": !0,
                  key: (null == D ? void 0 : D.objectName) || e.objectName
                }),
                onStart: e => {
                  C(D || e).then((t => {
                    var n = W_(D || e, G);
                    t && n && "success" !== n.status && (D ? D.thumbUrl = t : e.thumbUrl = t, U(J(D || e, G)))
                  }))
                },
                onSuccess: (t, n) => {
                  var r;
                  if (W_(D || n, G)) {
                    if (D ? D.status = "success" : n.status = "success", D ? D.url = Y.read_host + D.objectName : n.url = Y.read_host + n.objectName, "design" === p && (D ? D.label_id = i : n.label_id = i, hu.$emit(P, D || n)), "upload" ===
                      p && null !== (r = e.preview_setting) && void 0 !== r && r.preview_open) {
                      var o = du(e, F);
                      D ? D.label_id = i : n.label_id = i, D ? D.bg_image_url = o : n.bg_image_url = o, hu.$emit(B, D || n)
                    }
                    U(J(D || n, G))
                  }
                },
                onError: (e, t, n) => {
                  W_(D || n, G) && (n.status = "error", U(J(D || n, G)))
                },
                tabIndex: "0",
                onBlur: W,
                className: Rl("pk-block", "large" === (null == t ? void 0 : t.upload_style) ? "pk-w-full" : "pk-w-fit"),
                children: n || ("large" === (null == t ? void 0 : t.upload_style) ? $ : K)
              });
              return gt((() => {
                G.length && g(i)
              }), [g, i, G]), zl(Pe, {
                children: [u ? zl(lu, {
                  optionData: t,
                  control: n,
                  name: i,
                  label: a,
                  help: c,
                  alwaysShowError: {
                    maxFileSize: !0
                  },
                  children: [zl("div", {
                    className: "pk-flex pk-gap-4 pk-flex-wrap",
                    children: ["large" === (null == t ? void 0 : t.upload_style) && re(G.length < l ? null : zl(Pe, {})), G.map((t => (t => zl("div", {
                      onClick: () => {
                        var t;
                        "upload" === p && null !== (t = e.preview_setting) && void 0 !== t && t.preview_open && hu.$emit(H, e.fieldName)
                      },
                      className: Rl("pk-relative pk-border pk-flex-none pk-text-sm pk-group", "error" === t.status ? "pk-border-[#DB393A]" : "pk-border-[#d9d9d9]", null != t && t.url ? "pk-border-0" : "", pa() ?
                        "pk-w-18 pk-h-18" : "pk-w-20 pk-h-20"),
                      children: [zl(Tp, {
                        onClick: e => {
                          e.stopPropagation(), Q(t)
                        },
                        role: "button",
                        className: "pk-absolute pk--top-3 pk--right-3"
                      }), null != t && t.url ? x(t) ? zl("img", {
                        className: Rl("pk-rounded pk-object-contain", pa() ? "pk-w-18 pk-h-18" : "pk-w-20 pk-h-20"),
                        src: t.url,
                        alt: t.objectName,
                        onerror: e => {
                          throw setTimeout((() => {
                            Q(t)
                          }), 20), R.destroy(), R.open({
                            content: N({
                              id: "image_upload_fail"
                            })
                          }), new Error(N({
                            id: "image_upload_fail"
                          }))
                        }
                      }) : zl("div", {
                        className: "pk-flex pk-justify-center pk-items-center pk-h-full",
                        children: zl("span", {
                          className: "pk-break-all",
                          children: t.name
                        })
                      }) : zl("div", {
                        className: Rl({
                          "pk-text-[#DB393A]": "error" === t.status,
                          "pk-text-[#292929]/75": "uploading" === t.status
                        }, "pk-flex pk-justify-center pk-items-center pk-h-full pk-bg-[#F6F6F7] pk-break-all"),
                        children: "uploading" === t.status ? zl(Pp, {
                          style: {
                            transform: "scale(0.3)",
                            flexShrink: 0
                          }
                        }) : "Error"
                      })]
                    }))(t))), "large" !== (null == t ? void 0 : t.upload_style) && re(G.length < l ? null : zl(Pe, {})), m && zl(R_, {
                      className: j_,
                      title: null,
                      onClose: () => {
                        _(!1)
                      },
                      closable: !1,
                      maskClosable: !1,
                      visible: !0,
                      children: zl(Kv, {
                        file: b,
                        url: O,
                        onConfirm: te,
                        onCancel: ee
                      })
                    })]
                  }), G.filter((e => e.url)).map(((e, t) => zl("input", {
                    ref: X,
                    type: "hidden",
                    name: "properties[".concat(o, "_").concat(t + 1, "]"),
                    value: e.url || ""
                  }, e.uid)))]
                }) : null, j]
              })
            },
            G_ = ["product", "order", "options", "type", "fid", "advance"],
            Y_ = {
              swatch: _u,
              dropdown: Eu,
              text: Ju,
              date: Qu,
              button: eh,
              checkbox: yh,
              upload: X_,
              design: X_
            },
            q_ = e => {
              var {
                type: t,
                default: n
              } = e;
              return "text" === t && n ? n : "checkbox" !== t && "button" !== t || null == e || !e.default_selection || null == e ? void 0 : e.default_selection_values
            },
            K_ = e => {
              var {
                data: t,
                control: n,
                setData: r
              } = e, [i, o] = dt(!1);
              gt((() => {
                var e = () => {
                  o(!i)
                };
                return hu.$on(D, e), hu.$on(I, e), () => {
                  hu.$off(D, e), hu.$off(I, e)
                }
              }), [i]);
              var a = bt((() => {
                var e = [],
                  r = {
                    columnSpan: [],
                    children: []
                  },
                  i = () => {
                    e.push(zl("div", {
                      className: "pk-grid pk-gap-x-3 pk-grid-flow-col pk-grid-rows-[auto,auto,auto,auto]",
                      style: {
                        "grid-template-columns": r.columnSpan.map((e => "minmax(0px,".concat(e, "fr)"))).join(" ")
                      },
                      children: r.children
                    })), r = {
                      columnSpan: [],
                      children: []
                    }
                  },
                  o = (e, t) => {
                    r.columnSpan.push(1 / e), r.children.push(t)
                  };
                return t.forEach(((t, a) => {
                  if (!t.isHidden) {
                    var s, l, {
                        product: c,
                        order: u,
                        options: p,
                        type: d,
                        fid: f,
                        advance: m
                      } = t,
                      v = g(t, G_),
                      _ = d;
                    if ("text" === d) _ = (null === (s = window) || void 0 === s || null === (l = s.appparakeet_custom_type) || void 0 === l ? void 0 : l[u]) || d;
                    var {
                      columns: b = 1
                    } = m || {}, y = zl(Y_[_], h(h(h({
                      control: n,
                      name: c,
                      visible: !(null != t && t.isHidden),
                      propertyName: u,
                      fieldName: f,
                      options: p,
                      defaultValue: q_(t)
                    }, m), v), {}, {
                      optionData: t,
                      required: !(!m.required || null != t && t.isHidden),
                      type: _,
                      textStyleChange: e => {
                        (e => {
                          var n;
                          e && null != t && null !== (n = t.preview_setting) && void 0 !== n && n.preview_open && (t.preview_setting.data.forEach((t => {
                            t.cards.forEach((n => {
                              h(h({}, t.cards[0]), e)
                            }))
                          })), t.isInit = e.isInit, hu.$emit(z, h(h({}, t), e)))
                        })(e)
                      }
                    }), f);
                    "dropdown" === d ? (r.columnSpan.reduce(((e, t) => e + t), 0) + 1 / b <= 1 || i(), o(b, y)) : (r.children.length && i(), e.push(y))
                  }
                })), r.children.length && i(), e
              }), [n, t, i]);
              return {
                formDom: a
              }
            };

          function $_() {
            return $_ = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, $_.apply(this, arguments)
          }
          var Z_, J_, Q_, eb, tb = e => Te("svg", $_({
              width: 10,
              height: 8,
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg"
            }, e), V_ || (V_ = Te("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M9.477 1.023a.675.675 0 0 1 0 .954l-5 5a.675.675 0 0 1-.954 0l-2.5-2.5a.675.675 0 0 1 .954-.954L4 5.546l4.523-4.523a.675.675 0 0 1 .954 0Z",
              fill: "#333",
              fillOpacity: .8
            }))),
            nb = ["text", "upload", "design"],
            rb = window.SHOP_PARAMS.finance_symbol,
            ib = (null === (Z_ = window) || void 0 === Z_ || null === (J_ = Z_.C_SETTINGS) || void 0 === J_ || null === (Q_ = J_.market) || void 0 === Q_ || null === (eb = Q_.market_price_setting) || void 0 === eb ? void 0 : eb.actual_rate) || 1,
            ob = 1e5,
            ab = e => {
              var {
                data: t,
                control: n
              } = e, {
                formatMessage: r
              } = vo(), i = t.reduce(((e, t) => {
                var i, o;
                if (null != t && t.isHidden || null === (i = n._formValues[t.fid]) || void 0 === i || !i.length) return e;
                nb.includes(t.type) && Number(t.price) ? e.push({
                  des: r({
                    id: "add_price_tip"
                  }, {
                    key: '<div class="pk-font-semibold pk-ml-[10px] pk-mr-[10px]">['.concat(t.product, "]</div>"),
                    price: '\n              <div class="pk-font-semibold money  pk-ml-[10px] pk-mr-[10px]">\n                '.concat(rb).concat((Number(t.price) * ob * ib / ob).toFixed(2), "\n              </div>\n              ")
                  })
                }) : null === (o = t.options) || void 0 === o || o.forEach((i => {
                  ("dropdown" === t.type ? n._formValues[t.fid] === i.label : n._formValues[t.fid].includes(i.label)) && Number(i.price) && e.push({
                    des: r({
                      id: "select_add_price_tip"
                    }, {
                      key: '<span class="pk-font-semibold  pk-ml-[10px] pk-mr-[10px]">['.concat(t.product, ": ").concat(i.label, "]</span>"),
                      price: '<span class="money pk-font-semibold  pk-ml-[10px] pk-mr-[10px]">'.concat(rb).concat((Number(i.price) * ob * ib / ob).toFixed(2), "</span>")
                    })
                  })
                }));
                return e
              }), []);
              return !(null == i || !i.length) && zl("div", {
                className: Rl("pk-flex pk-flex-col pk-pt-2 pk-pb-1", pa() ? "!pk-text-[13px]" : "!pk-text-[14px]"),
                children: null == i ? void 0 : i.map((e => zl("div", {
                  className: "pk-flex pk-items-center pk-mb-4 last:pk-mb-0",
                  children: [zl("div", {
                    className: "pk-flex pk-items-center pk-justify-center pk-mr-2.5 pk-w-4.5 pk-h-4.5 pk-rounded-full pk-bg-[#E6E6E6]/40",
                    children: zl(tb, {})
                  }), zl("div", {
                    className: "pk-flex pk-flex-wrap",
                    dangerouslySetInnerHTML: {
                      __html: e.des
                    }
                  })]
                }, e.fid)))
              })
            },
            sb = "Tab-module_parakeet_comp_tab__Zx-vZ",
            lb = "Tab-module_tab_item__tBdan",
            cb = "Tab-module_tab_item_active__6rfwe";
          c(
          '.Tab-module_parakeet_comp_tab__Zx-vZ{display:flex;font-weight:600;margin-bottom:16px}.Tab-module_tab_item__tBdan{border:none;color:rgba(51,51,51,.7);cursor:pointer;flex:1;font-size:18px;height:35px;line-height:130%;position:relative;text-align:center}.Tab-module_tab_item__tBdan:after{background-color:hsla(0,0%,90%,.6);bottom:-2px;content:"";height:2px;left:0;position:absolute;width:100%}.Tab-module_tab_item__tBdan:first-child:after{border-radius:2px 0 0 2px}.Tab-module_tab_item__tBdan:last-child:after{border-radius:0 2px 2px 0}.Tab-module_tab_item_active__6rfwe{color:#333;height:34px}.Tab-module_tab_item_active__6rfwe:after{background-color:#333;border-radius:1px!important;bottom:-3px!important;content:"";height:3px!important;left:0;position:absolute;width:100%}@media screen and (max-width:959px){.Tab-module_parakeet_comp_tab__Zx-vZ{padding:0 16px}.eva .parakeet_comp_tab{padding:0}.hero .parakeet_comp_tab,.nova .parakeet_comp_tab,.wind .parakeet_comp_tab{margin-top:26px}.flash .parakeet_comp_tab{margin-top:26px;padding:0 8px}.flash #app-parakeet{padding:0 10px}.dj_skin_body .parakeet_comp_tab{margin-top:26px}}');
          var ub = Rt((e => {
            var {
              tabs: t,
              onChange: n,
              value: r
            } = e, [i, o] = dt(0);
            return gt((() => {
              o(r)
            }), [r]), zl("div", {
              className: Rl(["parakeet_comp_tab", sb]),
              children: t.map((e => zl("div", {
                className: Rl([
                  [lb], {
                    [cb]: i === e
                  }
                ]),
                onClick: () => {
                  o(e), n(e)
                },
                children: e
              }, e)))
            })
          }));

          function hb(e) {
            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
              n = [];
            return Nn.Children.forEach(e, (function(e) {
              (null != e || t.keepEmpty) && (Array.isArray(e) ? n = n.concat(hb(e)) : jn.exports.isFragment(e) && e.props ? n = n.concat(hb(e.props.children, t)) : n.push(e))
            })), n
          }
          var pb = function() {
            if ("undefined" == typeof navigator || "undefined" == typeof window) return !1;
            var e = navigator.userAgent || navigator.vendor || window.opera;
            return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i
              .test(e) ||
              /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i
              .test(null == e ? void 0 : e.substr(0, 4))
          };

          function db(e) {
            var t = vt();
            t.current = e;
            var n = yt((function() {
              for (var e, n = arguments.length, r = new Array(n), i = 0; i < n; i++) r[i] = arguments[i];
              return null === (e = t.current) || void 0 === e ? void 0 : e.call.apply(e, [t].concat(r))
            }), []);
            return n
          }

          function fb(e) {
            return void 0 !== e
          }

          function gb(e, t) {
            var n = t || {},
              r = n.defaultValue,
              i = n.value,
              o = n.onChange,
              a = n.postState,
              s = Mp(ld((function() {
                return fb(i) ? i : fb(r) ? "function" == typeof r ? r() : r : "function" == typeof e ? e() : e
              })), 2),
              l = s[0],
              c = s[1],
              u = void 0 !== i ? i : l,
              h = a ? a(u) : u,
              p = db(o),
              d = Mp(ld([u]), 2),
              f = d[0],
              g = d[1];
            return Qv((function() {
              var e = f[0];
              l !== e && p(l, e)
            }), [f]), Qv((function() {
              fb(i) || c(i)
            }), [i]), [h, db((function(e, t) {
              c(e, t), g([u], t)
            }))]
          }
          var mb = new Map;
          var vb = new Pl((function(e) {
            e.forEach((function(e) {
              var t, n = e.target;
              null === (t = mb.get(n)) || void 0 === t || t.forEach((function(e) {
                return e(n)
              }))
            }))
          }));
          var _b = function(e) {
              Oh(n, e);
              var t = Mh(n);

              function n() {
                return xh(this, n), t.apply(this, arguments)
              }
              return Eh(n, [{
                key: "render",
                value: function() {
                  return this.props.children
                }
              }]), n
            }(Me),
            bb = Qe(null);

          function yb(e, t) {
            var n = e.children,
              r = e.disabled,
              i = vt(null),
              o = vt(null),
              a = wt(bb),
              s = "function" == typeof n,
              l = s ? n(i) : n,
              c = vt({
                width: -1,
                height: -1,
                offsetWidth: -1,
                offsetHeight: -1
              }),
              u = !s && bn(l) && jp(l),
              h = u ? l.ref : null,
              p = bt((function() {
                return Rp(h, i)
              }), [h, i]),
              d = function() {
                return Dp(i.current) || Dp(o.current)
              };
            _t(t, (function() {
              return d()
            }));
            var f = vt(e);
            f.current = e;
            var g = yt((function(e) {
              var t = f.current,
                n = t.onResize,
                r = t.data,
                i = e.getBoundingClientRect(),
                o = i.width,
                s = i.height,
                l = e.offsetWidth,
                u = e.offsetHeight,
                h = Math.floor(o),
                p = Math.floor(s);
              if (c.current.width !== h || c.current.height !== p || c.current.offsetWidth !== l || c.current.offsetHeight !== u) {
                var d = {
                  width: h,
                  height: p,
                  offsetWidth: l,
                  offsetHeight: u
                };
                c.current = d;
                var g = l === Math.round(o) ? o : l,
                  m = u === Math.round(s) ? s : u,
                  v = Hh(Hh({}, d), {}, {
                    offsetWidth: g,
                    offsetHeight: m
                  });
                null == a || a(v, e, r), n && Promise.resolve().then((function() {
                  n(v, e)
                }))
              }
            }), []);
            return gt((function() {
              var e, t, n = d();
              return n && !r && (e = n, t = g, mb.has(e) || (mb.set(e, new Set), vb.observe(e)), mb.get(e).add(t)),
                function() {
                  return function(e, t) {
                    mb.has(e) && (mb.get(e).delete(t), mb.get(e).size || (vb.unobserve(e), mb.delete(e)))
                  }(n, g)
                }
            }), [i.current, r]), Te(_b, {
              ref: o
            }, u ? yn(l, {
              ref: p
            }) : l)
          }
          var wb = Ft(yb);

          function xb(e, t) {
            var n = e.children;
            return ("function" == typeof n ? [n] : hb(n)).map((function(n, r) {
              var i = (null == n ? void 0 : n.key) || "".concat("rc-observer-key", "-").concat(r);
              return Te(wb, wh({}, e, {
                key: i,
                ref: 0 === r ? t : void 0
              }), n)
            }))
          }
          var kb = Ft(xb);
          kb.Collection = function(e) {
            var t = e.children,
              n = e.onBatchResize,
              r = vt(0),
              i = vt([]),
              o = wt(bb),
              a = yt((function(e, t, a) {
                r.current += 1;
                var s = r.current;
                i.current.push({
                  size: e,
                  element: t,
                  data: a
                }), Promise.resolve().then((function() {
                  s === r.current && (null == n || n(i.current), i.current = [])
                })), null == o || o(e, t, a)
              }), [n, o]);
            return Te(bb.Provider, {
              value: a
            }, t)
          };
          var Cb = kb;

          function Sb(e) {
            var t = vt(),
              n = vt(!1);
            return gt((function() {
                return function() {
                  n.current = !0, gd.cancel(t.current)
                }
              }), []),
              function() {
                for (var r = arguments.length, i = new Array(r), o = 0; o < r; o++) i[o] = arguments[o];
                n.current || (gd.cancel(t.current), t.current = gd((function() {
                  e.apply(void 0, i)
                })))
              }
          }

          function Eb(e, t) {
            var n, r = e.prefixCls,
              i = e.id,
              o = e.active,
              a = e.tab,
              s = a.key,
              l = a.tab,
              c = a.disabled,
              u = a.closeIcon,
              h = e.closable,
              p = e.renderWrapper,
              d = e.removeAriaLabel,
              f = e.editable,
              g = e.onClick,
              m = e.onRemove,
              v = e.onFocus,
              _ = e.style,
              b = "".concat(r, "-tab");
            gt((function() {
              return m
            }), []);
            var y = f && !1 !== h && !c;

            function w(e) {
              c || g(e)
            }
            var x = Te("div", {
              key: s,
              ref: t,
              className: Rl(b, (n = {}, Dh(n, "".concat(b, "-with-remove"), y), Dh(n, "".concat(b, "-active"), o), Dh(n, "".concat(b, "-disabled"), c), n)),
              style: _,
              onClick: w
            }, Te("div", {
              role: "tab",
              "aria-selected": o,
              id: i && "".concat(i, "-tab-").concat(s),
              className: "".concat(b, "-btn"),
              "aria-controls": i && "".concat(i, "-panel-").concat(s),
              "aria-disabled": c,
              tabIndex: c ? null : 0,
              onClick: function(e) {
                e.stopPropagation(), w(e)
              },
              onKeyDown: function(e) {
                [w_.SPACE, w_.ENTER].includes(e.which) && (e.preventDefault(), w(e))
              },
              onFocus: v
            }, l), y && Te("button", {
              type: "button",
              "aria-label": d || "remove",
              tabIndex: 0,
              className: "".concat(b, "-remove"),
              onClick: function(e) {
                var t;
                e.stopPropagation(), (t = e).preventDefault(), t.stopPropagation(), f.onEdit("remove", {
                  key: s,
                  event: t
                })
              }
            }, u || f.removeIcon || "×"));
            return p ? p(x) : x
          }
          var Tb = Ft(Eb),
            Ob = {
              width: 0,
              height: 0,
              left: 0,
              top: 0
            };
          var Ab = {
            width: 0,
            height: 0,
            left: 0,
            top: 0,
            right: 0
          };
          var Pb = function(e, t, n, r) {
              var i = n ? n.call(r, e, t) : void 0;
              if (void 0 !== i) return !!i;
              if (e === t) return !0;
              if ("object" != typeof e || !e || "object" != typeof t || !t) return !1;
              var o = Object.keys(e),
                a = Object.keys(t);
              if (o.length !== a.length) return !1;
              for (var s = Object.prototype.hasOwnProperty.bind(t), l = 0; l < o.length; l++) {
                var c = o[l];
                if (!s(c)) return !1;
                var u = e[c],
                  h = t[c];
                if (!1 === (i = n ? n.call(r, u, h, c) : void 0) || void 0 === i && u !== h) return !1
              }
              return !0
            },
            Mb = ["prefixCls", "invalidate", "item", "renderItem", "responsive", "responsiveDisabled", "registerSize", "itemKey", "className", "style", "children", "display", "order", "component"],
            Db = void 0;

          function Ib(e, t) {
            var n = e.prefixCls,
              r = e.invalidate,
              i = e.item,
              o = e.renderItem,
              a = e.responsive,
              s = e.responsiveDisabled,
              l = e.registerSize,
              c = e.itemKey,
              u = e.className,
              h = e.style,
              p = e.children,
              d = e.display,
              f = e.order,
              g = e.component,
              m = void 0 === g ? "div" : g,
              v = Ih(e, Mb),
              _ = a && !d;

            function b(e) {
              l(c, e)
            }
            gt((function() {
              return function() {
                b(null)
              }
            }), []);
            var y, w = o && i !== Db ? o(i) : p;
            r || (y = {
              opacity: _ ? 0 : 1,
              height: _ ? 0 : Db,
              overflowY: _ ? "hidden" : Db,
              order: a ? f : Db,
              pointerEvents: _ ? "none" : Db,
              position: _ ? "absolute" : Db
            });
            var x = {};
            _ && (x["aria-hidden"] = !0);
            var k = Te(m, wh({
              className: Rl(!r && n, u),
              style: Hh(Hh({}, y), h)
            }, x, v, {
              ref: t
            }), w);
            return a && (k = Te(Cb, {
              onResize: function(e) {
                b(e.offsetWidth)
              },
              disabled: s
            }, k)), k
          }
          var Nb = Ft(Ib);
          Nb.displayName = "Item";
          var Rb = Nb;
          var jb = ["component"],
            Lb = ["className"],
            Fb = ["className"],
            Bb = Ft((function(e, t) {
              var n = wt(Ub);
              if (!n) {
                var r = e.component;
                return Te(void 0 === r ? "div" : r, wh({}, Ih(e, jb), {
                  ref: t
                }))
              }
              var i = n.className,
                o = Ih(n, Lb),
                a = e.className,
                s = Ih(e, Fb);
              return Te(Ub.Provider, {
                value: null
              }, Te(Rb, wh({
                ref: t,
                className: Rl(i, a)
              }, o, s)))
            }));
          Bb.displayName = "RawItem";
          var zb = Bb,
            Hb = ["prefixCls", "data", "renderItem", "renderRawItem", "itemKey", "itemWidth", "ssr", "style", "className", "maxCount", "renderRest", "renderRawRest", "suffix", "component", "itemComponent", "onVisibleChange"],
            Ub = Qe(null),
            Wb = "responsive",
            Vb = "invalidate";

          function Xb(e) {
            return "+ ".concat(e.length, " ...")
          }

          function Gb(e, t) {
            var n, r, i, o, a = e.prefixCls,
              s = void 0 === a ? "rc-overflow" : a,
              l = e.data,
              c = void 0 === l ? [] : l,
              u = e.renderItem,
              h = e.renderRawItem,
              p = e.itemKey,
              d = e.itemWidth,
              f = void 0 === d ? 10 : d,
              g = e.ssr,
              m = e.style,
              v = e.className,
              _ = e.maxCount,
              b = e.renderRest,
              y = e.renderRawRest,
              w = e.suffix,
              x = e.component,
              k = void 0 === x ? "div" : x,
              C = e.itemComponent,
              S = e.onVisibleChange,
              E = Ih(e, Hb),
              T = (n = Mp(ld({}), 2)[1], r = vt([]), i = 0, o = 0, function(e) {
                var t = i;
                return i += 1, r.current.length < t + 1 && (r.current[t] = e), [r.current[t], function(e) {
                  r.current[t] = "function" == typeof e ? e(r.current[t]) : e, gd.cancel(o), o = gd((function() {
                    n({}, !0)
                  }))
                }]
              }),
              O = "full" === g,
              A = Mp(T(null), 2),
              P = A[0],
              M = A[1],
              D = P || 0,
              I = Mp(T(new Map), 2),
              N = I[0],
              R = I[1],
              j = Mp(T(0), 2),
              L = j[0],
              F = j[1],
              B = Mp(T(0), 2),
              z = B[0],
              H = B[1],
              U = Mp(T(0), 2),
              W = U[0],
              V = U[1],
              X = Mp(dt(null), 2),
              G = X[0],
              Y = X[1],
              q = Mp(dt(null), 2),
              K = q[0],
              $ = q[1],
              Z = bt((function() {
                return null === K && O ? Number.MAX_SAFE_INTEGER : K || 0
              }), [K, P]),
              J = Mp(dt(!1), 2),
              Q = J[0],
              ee = J[1],
              te = "".concat(s, "-item"),
              ne = Math.max(L, z),
              re = _ === Wb,
              ie = c.length && re,
              oe = _ === Vb,
              ae = ie || "number" == typeof _ && c.length > _,
              se = bt((function() {
                var e = c;
                return ie ? e = null === P && O ? c : c.slice(0, Math.min(c.length, D / f)) : "number" == typeof _ && (e = c.slice(0, _)), e
              }), [c, f, P, _, ie]),
              le = bt((function() {
                return ie ? c.slice(Z + 1) : c.slice(se.length)
              }), [c, se, ie, Z]),
              ce = yt((function(e, t) {
                var n;
                return "function" == typeof p ? p(e) : null !== (n = p && (null == e ? void 0 : e[p])) && void 0 !== n ? n : t
              }), [p]),
              ue = yt(u || function(e) {
                return e
              }, [u]);

            function he(e, t, n) {
              (K !== e || void 0 !== t && t !== G) && ($(e), n || (ee(e < c.length - 1), null == S || S(e)), void 0 !== t && Y(t))
            }

            function pe(e, t) {
              R((function(n) {
                var r = new Map(n);
                return null === t ? r.delete(e) : r.set(e, t), r
              }))
            }

            function de(e) {
              return N.get(ce(se[e], e))
            }
            Jv((function() {
              if (D && ne && se) {
                var e = W,
                  t = se.length,
                  n = t - 1;
                if (!t) return void he(0, null);
                for (var r = 0; r < t; r += 1) {
                  var i = de(r);
                  if (O && (i = i || 0), void 0 === i) {
                    he(r - 1, void 0, !0);
                    break
                  }
                  if (e += i, 0 === n && e <= D || r === n - 1 && e + de(n) <= D) {
                    he(n, null);
                    break
                  }
                  if (e + ne > D) {
                    he(r - 1, e - i - W + z);
                    break
                  }
                }
                w && de(0) + W > D && Y(null)
              }
            }), [D, N, z, W, ce, se]);
            var fe = Q && !!le.length,
              ge = {};
            null !== G && ie && (ge = {
              position: "absolute",
              left: G,
              top: 0
            });
            var me, ve = {
                prefixCls: te,
                responsive: ie,
                component: C,
                invalidate: oe
              },
              _e = h ? function(e, t) {
                var n = ce(e, t);
                return Te(Ub.Provider, {
                  key: n,
                  value: Hh(Hh({}, ve), {}, {
                    order: t,
                    item: e,
                    itemKey: n,
                    registerSize: pe,
                    display: t <= Z
                  })
                }, h(e, t))
              } : function(e, t) {
                var n = ce(e, t);
                return Te(Rb, wh({}, ve, {
                  order: t,
                  key: n,
                  item: e,
                  renderItem: ue,
                  itemKey: n,
                  registerSize: pe,
                  display: t <= Z
                }))
              },
              be = {
                order: fe ? Z : Number.MAX_SAFE_INTEGER,
                className: "".concat(te, "-rest"),
                registerSize: function(e, t) {
                  H(t), F(z)
                },
                display: fe
              };
            if (y) y && (me = Te(Ub.Provider, {
              value: Hh(Hh({}, ve), be)
            }, y(le)));
            else {
              var ye = b || Xb;
              me = Te(Rb, wh({}, ve, be), "function" == typeof ye ? ye(le) : ye)
            }
            var we = Te(k, wh({
              className: Rl(!oe && s, v),
              style: m,
              ref: t
            }, E), se.map(_e), ae ? me : null, w && Te(Rb, wh({}, ve, {
              responsive: re,
              responsiveDisabled: !ie,
              order: Z,
              className: "".concat(te, "-suffix"),
              registerSize: function(e, t) {
                V(t)
              },
              display: !0,
              style: ge
            }), w));
            return re && (we = Te(Cb, {
              onResize: function(e, t) {
                M(t.clientWidth)
              },
              disabled: !ie
            }, we)), we
          }
          var Yb = Ft(Gb);
          Yb.displayName = "Overflow", Yb.Item = zb, Yb.RESPONSIVE = Wb, Yb.INVALIDATE = Vb;
          var qb = Yb;

          function Kb(e, t) {
            var n = Hh({}, e);
            return Array.isArray(t) && t.forEach((function(e) {
              delete n[e]
            })), n
          }
          var $b = ["children", "locked"],
            Zb = Qe(null);

          function Jb(e) {
            var t = e.children,
              n = e.locked,
              r = Ih(e, $b),
              i = wt(Zb),
              o = Ip((function() {
                return e = r, t = Hh({}, i), Object.keys(e).forEach((function(n) {
                  var r = e[n];
                  void 0 !== r && (t[n] = r)
                })), t;
                var e, t
              }), [i, r], (function(e, t) {
                return !(n || e[0] === t[0] && Pb(e[1], t[1]))
              }));
            return Te(Zb.Provider, {
              value: o
            }, t)
          }

          function Qb(e, t, n, r) {
            var i = wt(Zb),
              o = i.activeKey,
              a = i.onActive,
              s = i.onInactive,
              l = {
                active: o === e
              };
            return t || (l.onMouseEnter = function(t) {
              null == n || n({
                key: e,
                domEvent: t
              }), a(e)
            }, l.onMouseLeave = function(t) {
              null == r || r({
                key: e,
                domEvent: t
              }), s(e)
            }), l
          }
          var ey = ["item"];

          function ty(e) {
            var t = e.item,
              n = Ih(e, ey);
            return Object.defineProperty(n, "item", {
              get: function() {
                return ep(!1, "`info.item` is deprecated since we will move to function component that not provides React Node instance in future."), t
              }
            }), n
          }

          function ny(e) {
            var t = e.icon,
              n = e.props,
              r = e.children;
            return ("function" == typeof t ? Te(t, Hh({}, n)) : t) || r || null
          }

          function ry(e) {
            var t = wt(Zb),
              n = t.mode,
              r = t.rtl,
              i = t.inlineIndent;
            if ("inline" !== n) return null;
            return r ? {
              paddingRight: e * i
            } : {
              paddingLeft: e * i
            }
          }
          var iy = [],
            oy = Qe(null);

          function ay() {
            return wt(oy)
          }
          var sy = Qe(iy);

          function ly(e) {
            var t = wt(sy);
            return bt((function() {
              return void 0 !== e ? [].concat(Bh(t), [e]) : t
            }), [t, e])
          }
          var cy = Qe(null),
            uy = Qe(null);

          function hy(e, t) {
            return void 0 === e ? null : "".concat(e, "-").concat(t)
          }

          function py(e) {
            return hy(wt(uy), e)
          }
          var dy = Qe({}),
            fy = ["title", "attribute", "elementRef"],
            gy = ["style", "className", "eventKey", "warnKey", "disabled", "itemIcon", "children", "role", "onMouseEnter", "onMouseLeave", "onClick", "onKeyDown", "onFocus"],
            my = ["active"],
            vy = function(e) {
              Oh(n, e);
              var t = Mh(n);

              function n() {
                return xh(this, n), t.apply(this, arguments)
              }
              return Eh(n, [{
                key: "render",
                value: function() {
                  var e = this.props,
                    t = e.title,
                    n = e.attribute,
                    r = e.elementRef,
                    i = Kb(Ih(e, fy), ["eventKey"]);
                  return ep(!n, "`attribute` of Menu.Item is deprecated. Please pass attribute directly."), Te(qb.Item, wh({}, n, {
                    title: "string" == typeof t ? t : void 0
                  }, i, {
                    ref: r
                  }))
                }
              }]), n
            }(Me),
            _y = function(e) {
              var t, n = e.style,
                r = e.className,
                i = e.eventKey,
                o = e.disabled,
                a = e.itemIcon,
                s = e.children,
                l = e.role,
                c = e.onMouseEnter,
                u = e.onMouseLeave,
                h = e.onClick,
                p = e.onKeyDown,
                d = e.onFocus,
                f = Ih(e, gy),
                g = py(i),
                m = wt(Zb),
                v = m.prefixCls,
                _ = m.onItemClick,
                b = m.disabled,
                y = m.overflowDisabled,
                w = m.itemIcon,
                x = m.selectedKeys,
                k = m.onActive,
                C = wt(dy)._internalRenderMenuItem,
                S = "".concat(v, "-item"),
                E = vt(),
                T = vt(),
                O = b || o,
                A = ly(i),
                P = function(e) {
                  return {
                    key: i,
                    keyPath: Bh(A).reverse(),
                    item: E.current,
                    domEvent: e
                  }
                },
                M = a || w,
                D = Qb(i, O, c, u),
                I = D.active,
                N = Ih(D, my),
                R = x.includes(i),
                j = ry(A.length),
                L = {};
              "option" === e.role && (L["aria-selected"] = R);
              var F = Te(vy, wh({
                ref: E,
                elementRef: T,
                role: null === l ? "none" : l || "menuitem",
                tabIndex: o ? null : -1,
                "data-menu-id": y && g ? null : g
              }, f, N, L, {
                component: "li",
                "aria-disabled": o,
                style: Hh(Hh({}, j), n),
                className: Rl(S, (t = {}, Dh(t, "".concat(S, "-active"), I), Dh(t, "".concat(S, "-selected"), R), Dh(t, "".concat(S, "-disabled"), O), t), r),
                onClick: function(e) {
                  if (!O) {
                    var t = P(e);
                    null == h || h(ty(t)), _(t)
                  }
                },
                onKeyDown: function(e) {
                  if (null == p || p(e), e.which === w_.ENTER) {
                    var t = P(e);
                    null == h || h(ty(t)), _(t)
                  }
                },
                onFocus: function(e) {
                  k(i), null == d || d(e)
                }
              }), s, Te(ny, {
                props: Hh(Hh({}, e), {}, {
                  isSelected: R
                }),
                icon: M
              }));
              return C && (F = C(F, e, {
                selected: R
              })), F
            };

          function by(e) {
            var t = e.eventKey,
              n = ay(),
              r = ly(t);
            return gt((function() {
              if (n) return n.registerPath(t, r),
                function() {
                  n.unregisterPath(t, r)
                }
            }), [r]), n ? null : Te(_y, e)
          }
          var yy = ["label", "children", "key", "type"];

          function wy(e, t) {
            return hb(e).map((function(e, n) {
              if (bn(e)) {
                var r, i, o = e.key,
                  a = null !== (r = null === (i = e.props) || void 0 === i ? void 0 : i.eventKey) && void 0 !== r ? r : o;
                return null == a && (a = "tmp_key-".concat([].concat(Bh(t), [n]).join("-"))), yn(e, {
                  key: a,
                  eventKey: a
                })
              }
              return e
            }))
          }

          function xy(e) {
            return (e || []).map((function(e, t) {
              if (e && "object" === kh(e)) {
                var n = e.label,
                  r = e.children,
                  i = e.key,
                  o = e.type,
                  a = Ih(e, yy),
                  s = null != i ? i : "tmp-".concat(t);
                return r || "group" === o ? Te("group" === o ? Wx : vx, wh({
                  key: s
                }, a, {
                  title: n
                }), xy(r)) : "divider" === o ? Te(Vx, wh({
                  key: s
                }, a)) : Te(by, wh({
                  key: s
                }, a), n)
              }
              return null
            })).filter((function(e) {
              return e
            }))
          }

          function ky(e, t, n) {
            var r = e;
            return t && (r = xy(t)), wy(r, n)
          }

          function Cy(e) {
            var t = vt(e);
            t.current = e;
            var n = yt((function() {
              for (var e, n = arguments.length, r = new Array(n), i = 0; i < n; i++) r[i] = arguments[i];
              return null === (e = t.current) || void 0 === e ? void 0 : e.call.apply(e, [t].concat(r))
            }), []);
            return e ? n : void 0
          }
          var Sy = ["className", "children"],
            Ey = Ft((function(e, t) {
              var n = e.className,
                r = e.children,
                i = Ih(e, Sy),
                o = wt(Zb),
                a = o.prefixCls,
                s = o.mode,
                l = o.rtl;
              return Te("ul", wh({
                className: Rl(a, l && "".concat(a, "-rtl"), "".concat(a, "-sub"), "".concat(a, "-").concat("inline" === s ? "inline" : "vertical"), n)
              }, i, {
                "data-menu-list": !0,
                ref: t
              }), r)
            }));
          Ey.displayName = "SubMenuList";
          var Ty = Ey;

          function Oy(e, t, n, r) {
            var i = Nn.unstable_batchedUpdates ? function(e) {
              Nn.unstable_batchedUpdates(n, e)
            } : n;
            return e.addEventListener && e.addEventListener(t, i, r), {
              remove: function() {
                e.removeEventListener && e.removeEventListener(t, i, r)
              }
            }
          }
          var Ay, Py = Ft((function(e, t) {
              var n = e.didUpdate,
                r = e.getContainer,
                i = e.children,
                o = vt(),
                a = vt();
              _t(t, (function() {
                return {}
              }));
              var s = vt(!1);
              return !s.current && Lp() && (a.current = r(), o.current = a.current.parentNode, s.current = !0), gt((function() {
                null == n || n(e)
              })), gt((function() {
                return null === a.current.parentNode && null !== o.current && o.current.appendChild(a.current),
                  function() {
                    var e, t;
                    null === (e = a.current) || void 0 === e || null === (t = e.parentNode) || void 0 === t || t.removeChild(a.current)
                  }
              }), []), a.current ? Nn.createPortal(i, a.current) : null
            })),
            My = Py;

          function Dy(e, t, n) {
            return n ? e[0] === t[0] : e[0] === t[0] && e[1] === t[1]
          }

          function Iy(e) {
            var t = e.prefixCls,
              n = e.motion,
              r = e.animation,
              i = e.transitionName;
            return n || (r ? {
              motionName: "".concat(t, "-").concat(r)
            } : i ? {
              motionName: i
            } : null)
          }

          function Ny(e) {
            var t = e.prefixCls,
              n = e.visible,
              r = e.zIndex,
              i = e.mask,
              o = e.maskMotion,
              a = e.maskAnimation,
              s = e.maskTransitionName;
            if (!i) return null;
            var l = {};
            return (o || s || a) && (l = Hh({
              motionAppear: !0
            }, Iy({
              motion: o,
              prefixCls: t,
              transitionName: s,
              animation: a
            }))), Te(Sd, wh({}, l, {
              visible: n,
              removeOnLeave: !0
            }), (function(e) {
              var n = e.className;
              return Te("div", {
                style: {
                  zIndex: r
                },
                className: Rl("".concat(t, "-mask"), n)
              })
            }))
          }

          function Ry(e, t) {
            var n = Object.keys(e);
            if (Object.getOwnPropertySymbols) {
              var r = Object.getOwnPropertySymbols(e);
              t && (r = r.filter((function(t) {
                return Object.getOwnPropertyDescriptor(e, t).enumerable
              }))), n.push.apply(n, r)
            }
            return n
          }

          function jy(e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = null != arguments[t] ? arguments[t] : {};
              t % 2 ? Ry(Object(n), !0).forEach((function(t) {
                Fy(e, t, n[t])
              })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : Ry(Object(n)).forEach((function(t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
              }))
            }
            return e
          }

          function Ly(e) {
            return Ly = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
              return typeof e
            } : function(e) {
              return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
            }, Ly(e)
          }

          function Fy(e, t, n) {
            return t in e ? Object.defineProperty(e, t, {
              value: n,
              enumerable: !0,
              configurable: !0,
              writable: !0
            }) : e[t] = n, e
          }
          var By = {
            Webkit: "-webkit-",
            Moz: "-moz-",
            ms: "-ms-",
            O: "-o-"
          };

          function zy() {
            if (void 0 !== Ay) return Ay;
            Ay = "";
            var e = document.createElement("p").style;
            for (var t in By) t + "Transform" in e && (Ay = t);
            return Ay
          }

          function Hy() {
            return zy() ? "".concat(zy(), "TransitionProperty") : "transitionProperty"
          }

          function Uy() {
            return zy() ? "".concat(zy(), "Transform") : "transform"
          }

          function Wy(e, t) {
            var n = Hy();
            n && (e.style[n] = t, "transitionProperty" !== n && (e.style.transitionProperty = t))
          }

          function Vy(e, t) {
            var n = Uy();
            n && (e.style[n] = t, "transform" !== n && (e.style.transform = t))
          }
          var Xy, Gy = /matrix\((.*)\)/,
            Yy = /matrix3d\((.*)\)/;

          function qy(e) {
            var t = e.style.display;
            e.style.display = "none", e.style.display = t
          }

          function Ky(e, t, n) {
            var r = n;
            if ("object" !== Ly(t)) return void 0 !== r ? ("number" == typeof r && (r = "".concat(r, "px")), void(e.style[t] = r)) : Xy(e, t);
            for (var i in t) t.hasOwnProperty(i) && Ky(e, i, t[i])
          }

          function $y(e, t) {
            var n = e["page".concat(t ? "Y" : "X", "Offset")],
              r = "scroll".concat(t ? "Top" : "Left");
            if ("number" != typeof n) {
              var i = e.document;
              "number" != typeof(n = i.documentElement[r]) && (n = i.body[r])
            }
            return n
          }

          function Zy(e) {
            return $y(e)
          }

          function Jy(e) {
            return $y(e, !0)
          }

          function Qy(e) {
            var t = function(e) {
                var t, n, r, i = e.ownerDocument,
                  o = i.body,
                  a = i && i.documentElement;
                return t = e.getBoundingClientRect(), n = Math.floor(t.left), r = Math.floor(t.top), {
                  left: n -= a.clientLeft || o.clientLeft || 0,
                  top: r -= a.clientTop || o.clientTop || 0
                }
              }(e),
              n = e.ownerDocument,
              r = n.defaultView || n.parentWindow;
            return t.left += Zy(r), t.top += Jy(r), t
          }

          function ew(e) {
            return null != e && e == e.window
          }

          function tw(e) {
            return ew(e) ? e.document : 9 === e.nodeType ? e : e.ownerDocument
          }
          var nw = new RegExp("^(".concat(/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source, ")(?!px)[a-z%]+$"), "i"),
            rw = /^(top|right|bottom|left)$/,
            iw = "currentStyle",
            ow = "runtimeStyle",
            aw = "left";

          function sw(e, t) {
            return "left" === e ? t.useCssRight ? "right" : e : t.useCssBottom ? "bottom" : e
          }

          function lw(e) {
            return "left" === e ? "right" : "right" === e ? "left" : "top" === e ? "bottom" : "bottom" === e ? "top" : void 0
          }

          function cw(e, t, n) {
            "static" === Ky(e, "position") && (e.style.position = "relative");
            var r = -999,
              i = -999,
              o = sw("left", n),
              a = sw("top", n),
              s = lw(o),
              l = lw(a);
            "left" !== o && (r = 999), "top" !== a && (i = 999);
            var c, u = "",
              h = Qy(e);
            ("left" in t || "top" in t) && (u = (c = e).style.transitionProperty || c.style[Hy()] || "", Wy(e, "none")), "left" in t && (e.style[s] = "", e.style[o] = "".concat(r, "px")), "top" in t && (e.style[l] = "", e.style[a] = "".concat(i,
              "px")), qy(e);
            var p = Qy(e),
              d = {};
            for (var f in t)
              if (t.hasOwnProperty(f)) {
                var g = sw(f, n),
                  m = "left" === f ? r : i,
                  v = h[f] - p[f];
                d[g] = g === f ? m + v : m - v
              } Ky(e, d), qy(e), ("left" in t || "top" in t) && Wy(e, u);
            var _ = {};
            for (var b in t)
              if (t.hasOwnProperty(b)) {
                var y = sw(b, n),
                  w = t[b] - h[b];
                _[y] = b === y ? d[y] + w : d[y] - w
              } Ky(e, _)
          }

          function uw(e, t) {
            var n = Qy(e),
              r = function(e) {
                var t = window.getComputedStyle(e, null),
                  n = t.getPropertyValue("transform") || t.getPropertyValue(Uy());
                if (n && "none" !== n) {
                  var r = n.replace(/[^0-9\-.,]/g, "").split(",");
                  return {
                    x: parseFloat(r[12] || r[4], 0),
                    y: parseFloat(r[13] || r[5], 0)
                  }
                }
                return {
                  x: 0,
                  y: 0
                }
              }(e),
              i = {
                x: r.x,
                y: r.y
              };
            "left" in t && (i.x = r.x + t.left - n.left), "top" in t && (i.y = r.y + t.top - n.top),
              function(e, t) {
                var n = window.getComputedStyle(e, null),
                  r = n.getPropertyValue("transform") || n.getPropertyValue(Uy());
                if (r && "none" !== r) {
                  var i, o = r.match(Gy);
                  o ? ((i = (o = o[1]).split(",").map((function(e) {
                    return parseFloat(e, 10)
                  })))[4] = t.x, i[5] = t.y, Vy(e, "matrix(".concat(i.join(","), ")"))) : ((i = r.match(Yy)[1].split(",").map((function(e) {
                    return parseFloat(e, 10)
                  })))[12] = t.x, i[13] = t.y, Vy(e, "matrix3d(".concat(i.join(","), ")")))
                } else Vy(e, "translateX(".concat(t.x, "px) translateY(").concat(t.y, "px) translateZ(0)"))
              }(e, i)
          }

          function hw(e, t) {
            for (var n = 0; n < e.length; n++) t(e[n])
          }

          function pw(e) {
            return "border-box" === Xy(e, "boxSizing")
          }
          "undefined" != typeof window && (Xy = window.getComputedStyle ? function(e, t, n) {
            var r = n,
              i = "",
              o = tw(e);
            return (r = r || o.defaultView.getComputedStyle(e, null)) && (i = r.getPropertyValue(t) || r[t]), i
          } : function(e, t) {
            var n = e[iw] && e[iw][t];
            if (nw.test(n) && !rw.test(t)) {
              var r = e.style,
                i = r[aw],
                o = e[ow][aw];
              e[ow][aw] = e[iw][aw], r[aw] = "fontSize" === t ? "1em" : n || 0, n = r.pixelLeft + "px", r[aw] = i, e[ow][aw] = o
            }
            return "" === n ? "auto" : n
          });
          var dw = ["margin", "border", "padding"],
            fw = -1,
            gw = 2,
            mw = 1;

          function vw(e, t, n) {
            var r, i, o, a = 0;
            for (i = 0; i < t.length; i++)
              if (r = t[i])
                for (o = 0; o < n.length; o++) {
                  var s = void 0;
                  s = "border" === r ? "".concat(r).concat(n[o], "Width") : r + n[o], a += parseFloat(Xy(e, s)) || 0
                }
            return a
          }
          var _w = {
            getParent: function(e) {
              var t = e;
              do {
                t = 11 === t.nodeType && t.host ? t.host : t.parentNode
              } while (t && 1 !== t.nodeType && 9 !== t.nodeType);
              return t
            }
          };

          function bw(e, t, n) {
            var r = n;
            if (ew(e)) return "width" === t ? _w.viewportWidth(e) : _w.viewportHeight(e);
            if (9 === e.nodeType) return "width" === t ? _w.docWidth(e) : _w.docHeight(e);
            var i = "width" === t ? ["Left", "Right"] : ["Top", "Bottom"],
              o = "width" === t ? Math.floor(e.getBoundingClientRect().width) : Math.floor(e.getBoundingClientRect().height),
              a = pw(e),
              s = 0;
            (null == o || o <= 0) && (o = void 0, (null == (s = Xy(e, t)) || Number(s) < 0) && (s = e.style[t] || 0), s = Math.floor(parseFloat(s)) || 0), void 0 === r && (r = a ? mw : fw);
            var l = void 0 !== o || a,
              c = o || s;
            return r === fw ? l ? c - vw(e, ["border", "padding"], i) : s : l ? r === mw ? c : c + (r === gw ? -vw(e, ["border"], i) : vw(e, ["margin"], i)) : s + vw(e, dw.slice(r), i)
          }
          hw(["Width", "Height"], (function(e) {
            _w["doc".concat(e)] = function(t) {
              var n = t.document;
              return Math.max(n.documentElement["scroll".concat(e)], n.body["scroll".concat(e)], _w["viewport".concat(e)](n))
            }, _w["viewport".concat(e)] = function(t) {
              var n = "client".concat(e),
                r = t.document,
                i = r.body,
                o = r.documentElement[n];
              return "CSS1Compat" === r.compatMode && o || i && i[n] || o
            }
          }));
          var yw = {
            position: "absolute",
            visibility: "hidden",
            display: "block"
          };

          function ww() {
            for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
            var r, i = t[0];
            return 0 !== i.offsetWidth ? r = bw.apply(void 0, t) : function(e, t, n) {
              var r, i = {},
                o = e.style;
              for (r in t) t.hasOwnProperty(r) && (i[r] = o[r], o[r] = t[r]);
              for (r in n.call(e), t) t.hasOwnProperty(r) && (o[r] = i[r])
            }(i, yw, (function() {
              r = bw.apply(void 0, t)
            })), r
          }

          function xw(e, t) {
            for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
            return e
          }
          hw(["width", "height"], (function(e) {
            var t = e.charAt(0).toUpperCase() + e.slice(1);
            _w["outer".concat(t)] = function(t, n) {
              return t && ww(t, e, n ? 0 : mw)
            };
            var n = "width" === e ? ["Left", "Right"] : ["Top", "Bottom"];
            _w[e] = function(t, r) {
              var i = r;
              return void 0 !== i ? t ? (pw(t) && (i += vw(t, ["padding", "border"], n)), Ky(t, e, i)) : void 0 : t && ww(t, e, fw)
            }
          }));
          var kw = {
            getWindow: function(e) {
              if (e && e.document && e.setTimeout) return e;
              var t = e.ownerDocument || e;
              return t.defaultView || t.parentWindow
            },
            getDocument: tw,
            offset: function(e, t, n) {
              if (void 0 === t) return Qy(e);
              ! function(e, t, n) {
                if (n.ignoreShake) {
                  var r = Qy(e),
                    i = r.left.toFixed(0),
                    o = r.top.toFixed(0),
                    a = t.left.toFixed(0),
                    s = t.top.toFixed(0);
                  if (i === a && o === s) return
                }
                n.useCssRight || n.useCssBottom ? cw(e, t, n) : n.useCssTransform && Uy() in document.body.style ? uw(e, t) : cw(e, t, n)
              }(e, t, n || {})
            },
            isWindow: ew,
            each: hw,
            css: Ky,
            clone: function(e) {
              var t, n = {};
              for (t in e) e.hasOwnProperty(t) && (n[t] = e[t]);
              if (e.overflow)
                for (t in e) e.hasOwnProperty(t) && (n.overflow[t] = e.overflow[t]);
              return n
            },
            mix: xw,
            getWindowScrollLeft: function(e) {
              return Zy(e)
            },
            getWindowScrollTop: function(e) {
              return Jy(e)
            },
            merge: function() {
              for (var e = {}, t = 0; t < arguments.length; t++) kw.mix(e, t < 0 || arguments.length <= t ? void 0 : arguments[t]);
              return e
            },
            viewportWidth: 0,
            viewportHeight: 0
          };
          xw(kw, _w);
          var Cw = kw.getParent;

          function Sw(e) {
            if (kw.isWindow(e) || 9 === e.nodeType) return null;
            var t, n = kw.getDocument(e).body,
              r = kw.css(e, "position");
            if (!("fixed" === r || "absolute" === r)) return "html" === e.nodeName.toLowerCase() ? null : Cw(e);
            for (t = Cw(e); t && t !== n && 9 !== t.nodeType; t = Cw(t))
              if ("static" !== (r = kw.css(t, "position"))) return t;
            return null
          }
          var Ew = kw.getParent;

          function Tw(e, t) {
            for (var n = {
                left: 0,
                right: 1 / 0,
                top: 0,
                bottom: 1 / 0
              }, r = Sw(e), i = kw.getDocument(e), o = i.defaultView || i.parentWindow, a = i.body, s = i.documentElement; r;) {
              if (-1 !== navigator.userAgent.indexOf("MSIE") && 0 === r.clientWidth || r === a || r === s || "visible" === kw.css(r, "overflow")) {
                if (r === a || r === s) break
              } else {
                var l = kw.offset(r);
                l.left += r.clientLeft, l.top += r.clientTop, n.top = Math.max(n.top, l.top), n.right = Math.min(n.right, l.left + r.clientWidth), n.bottom = Math.min(n.bottom, l.top + r.clientHeight), n.left = Math.max(n.left, l.left)
              }
              r = Sw(r)
            }
            var c = null;
            kw.isWindow(e) || 9 === e.nodeType || (c = e.style.position, "absolute" === kw.css(e, "position") && (e.style.position = "fixed"));
            var u = kw.getWindowScrollLeft(o),
              h = kw.getWindowScrollTop(o),
              p = kw.viewportWidth(o),
              d = kw.viewportHeight(o),
              f = s.scrollWidth,
              g = s.scrollHeight,
              m = window.getComputedStyle(a);
            if ("hidden" === m.overflowX && (f = o.innerWidth), "hidden" === m.overflowY && (g = o.innerHeight), e.style && (e.style.position = c), t || function(e) {
                if (kw.isWindow(e) || 9 === e.nodeType) return !1;
                var t = kw.getDocument(e),
                  n = t.body,
                  r = null;
                for (r = Ew(e); r && r !== n && r !== t; r = Ew(r))
                  if ("fixed" === kw.css(r, "position")) return !0;
                return !1
              }(e)) n.left = Math.max(n.left, u), n.top = Math.max(n.top, h), n.right = Math.min(n.right, u + p), n.bottom = Math.min(n.bottom, h + d);
            else {
              var v = Math.max(f, u + p);
              n.right = Math.min(n.right, v);
              var _ = Math.max(g, h + d);
              n.bottom = Math.min(n.bottom, _)
            }
            return n.top >= 0 && n.left >= 0 && n.bottom > n.top && n.right > n.left ? n : null
          }

          function Ow(e) {
            var t, n, r;
            if (kw.isWindow(e) || 9 === e.nodeType) {
              var i = kw.getWindow(e);
              t = {
                left: kw.getWindowScrollLeft(i),
                top: kw.getWindowScrollTop(i)
              }, n = kw.viewportWidth(i), r = kw.viewportHeight(i)
            } else t = kw.offset(e), n = kw.outerWidth(e), r = kw.outerHeight(e);
            return t.width = n, t.height = r, t
          }

          function Aw(e, t) {
            var n = t.charAt(0),
              r = t.charAt(1),
              i = e.width,
              o = e.height,
              a = e.left,
              s = e.top;
            return "c" === n ? s += o / 2 : "b" === n && (s += o), "c" === r ? a += i / 2 : "r" === r && (a += i), {
              left: a,
              top: s
            }
          }

          function Pw(e, t, n, r, i) {
            var o = Aw(t, n[1]),
              a = Aw(e, n[0]),
              s = [a.left - o.left, a.top - o.top];
            return {
              left: Math.round(e.left - s[0] + r[0] - i[0]),
              top: Math.round(e.top - s[1] + r[1] - i[1])
            }
          }

          function Mw(e, t, n) {
            return e.left < n.left || e.left + t.width > n.right
          }

          function Dw(e, t, n) {
            return e.top < n.top || e.top + t.height > n.bottom
          }

          function Iw(e, t, n) {
            var r = [];
            return kw.each(e, (function(e) {
              r.push(e.replace(t, (function(e) {
                return n[e]
              })))
            })), r
          }

          function Nw(e, t) {
            return e[t] = -e[t], e
          }

          function Rw(e, t) {
            return (/%$/.test(e) ? parseInt(e.substring(0, e.length - 1), 10) / 100 * t : parseInt(e, 10)) || 0
          }

          function jw(e, t) {
            e[0] = Rw(e[0], t.width), e[1] = Rw(e[1], t.height)
          }

          function Lw(e, t, n, r) {
            var i = n.points,
              o = n.offset || [0, 0],
              a = n.targetOffset || [0, 0],
              s = n.overflow,
              l = n.source || e;
            o = [].concat(o), a = [].concat(a);
            var c = {},
              u = 0,
              h = Tw(l, !(!(s = s || {}) || !s.alwaysByViewport)),
              p = Ow(l);
            jw(o, p), jw(a, t);
            var d = Pw(p, t, i, o, a),
              f = kw.merge(p, d);
            if (h && (s.adjustX || s.adjustY) && r) {
              if (s.adjustX && Mw(d, p, h)) {
                var g = Iw(i, /[lr]/gi, {
                    l: "r",
                    r: "l"
                  }),
                  m = Nw(o, 0),
                  v = Nw(a, 0);
                (function(e, t, n) {
                  return e.left > n.right || e.left + t.width < n.left
                })(Pw(p, t, g, m, v), p, h) || (u = 1, i = g, o = m, a = v)
              }
              if (s.adjustY && Dw(d, p, h)) {
                var _ = Iw(i, /[tb]/gi, {
                    t: "b",
                    b: "t"
                  }),
                  b = Nw(o, 1),
                  y = Nw(a, 1);
                (function(e, t, n) {
                  return e.top > n.bottom || e.top + t.height < n.top
                })(Pw(p, t, _, b, y), p, h) || (u = 1, i = _, o = b, a = y)
              }
              u && (d = Pw(p, t, i, o, a), kw.mix(f, d));
              var w = Mw(d, p, h),
                x = Dw(d, p, h);
              if (w || x) {
                var k = i;
                w && (k = Iw(i, /[lr]/gi, {
                  l: "r",
                  r: "l"
                })), x && (k = Iw(i, /[tb]/gi, {
                  t: "b",
                  b: "t"
                })), i = k, o = n.offset || [0, 0], a = n.targetOffset || [0, 0]
              }
              c.adjustX = s.adjustX && w, c.adjustY = s.adjustY && x, (c.adjustX || c.adjustY) && (f = function(e, t, n, r) {
                var i = kw.clone(e),
                  o = {
                    width: t.width,
                    height: t.height
                  };
                return r.adjustX && i.left < n.left && (i.left = n.left), r.resizeWidth && i.left >= n.left && i.left + o.width > n.right && (o.width -= i.left + o.width - n.right), r.adjustX && i.left + o.width > n.right && (i.left = Math
                    .max(n.right - o.width, n.left)), r.adjustY && i.top < n.top && (i.top = n.top), r.resizeHeight && i.top >= n.top && i.top + o.height > n.bottom && (o.height -= i.top + o.height - n.bottom), r.adjustY && i.top + o.height >
                  n.bottom && (i.top = Math.max(n.bottom - o.height, n.top)), kw.mix(i, o)
              }(d, p, h, c))
            }
            return f.width !== p.width && kw.css(l, "width", kw.width(l) + f.width - p.width), f.height !== p.height && kw.css(l, "height", kw.height(l) + f.height - p.height), kw.offset(l, {
              left: f.left,
              top: f.top
            }, {
              useCssRight: n.useCssRight,
              useCssBottom: n.useCssBottom,
              useCssTransform: n.useCssTransform,
              ignoreShake: n.ignoreShake
            }), {
              points: i,
              offset: o,
              targetOffset: a,
              overflow: c
            }
          }

          function Fw(e, t, n) {
            var r = n.target || t,
              i = Ow(r),
              o = ! function(e, t) {
                var n = Tw(e, t),
                  r = Ow(e);
                return !n || r.left + r.width <= n.left || r.top + r.height <= n.top || r.left >= n.right || r.top >= n.bottom
              }(r, n.overflow && n.overflow.alwaysByViewport);
            return Lw(e, i, n, o)
          }

          function Bw(e, t) {
            var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
              r = new Set;
            return function e(t, i) {
              var o = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1,
                a = r.has(t);
              if (ep(!a, "Warning: There may be circular references"), a) return !1;
              if (t === i) return !0;
              if (n && o > 1) return !1;
              r.add(t);
              var s = o + 1;
              if (Array.isArray(t)) {
                if (!Array.isArray(i) || t.length !== i.length) return !1;
                for (var l = 0; l < t.length; l++)
                  if (!e(t[l], i[l], s)) return !1;
                return !0
              }
              if (t && i && "object" === kh(t) && "object" === kh(i)) {
                var c = Object.keys(t);
                return c.length === Object.keys(i).length && c.every((function(n) {
                  return e(t[n], i[n], s)
                }))
              }
              return !1
            }(e, t)
          }
          Fw.__getOffsetParent = Sw, Fw.__getVisibleRectForElement = Tw;
          var zw = function(e) {
            if (!e) return !1;
            if (e instanceof HTMLElement && e.offsetParent) return !0;
            if (e instanceof SVGGraphicsElement && e.getBBox) {
              var t = e.getBBox(),
                n = t.width,
                r = t.height;
              if (n || r) return !0
            }
            if (e instanceof HTMLElement && e.getBoundingClientRect) {
              var i = e.getBoundingClientRect(),
                o = i.width,
                a = i.height;
              if (o || a) return !0
            }
            return !1
          };

          function Hw(e, t) {
            var n = null,
              r = null;
            var i = new Pl((function(e) {
              var i = Mp(e, 1)[0].target;
              if (document.documentElement.contains(i)) {
                var o = i.getBoundingClientRect(),
                  a = o.width,
                  s = o.height,
                  l = Math.floor(a),
                  c = Math.floor(s);
                n === l && r === c || Promise.resolve().then((function() {
                  t({
                    width: l,
                    height: c
                  })
                })), n = l, r = c
              }
            }));
            return e && i.observe(e),
              function() {
                i.disconnect()
              }
          }

          function Uw(e) {
            return "function" != typeof e ? null : e()
          }

          function Ww(e) {
            return "object" === kh(e) && e ? e : null
          }
          var Vw = function(e, t) {
              var n = e.children,
                r = e.disabled,
                i = e.target,
                o = e.align,
                a = e.onAlign,
                s = e.monitorWindowResize,
                l = e.monitorBufferTime,
                c = void 0 === l ? 0 : l,
                u = Nn.useRef({}),
                h = Nn.useRef(),
                p = Nn.Children.only(n),
                d = Nn.useRef({});
              d.current.disabled = r, d.current.target = i, d.current.align = o, d.current.onAlign = a;
              var f = function(e, t) {
                  var n = Nn.useRef(!1),
                    r = Nn.useRef(null);

                  function i() {
                    window.clearTimeout(r.current)
                  }
                  return [function o(a) {
                    if (i(), n.current && !0 !== a) r.current = window.setTimeout((function() {
                      n.current = !1, o()
                    }), t);
                    else {
                      if (!1 === e(a)) return;
                      n.current = !0, r.current = window.setTimeout((function() {
                        n.current = !1
                      }), t)
                    }
                  }, function() {
                    n.current = !1, i()
                  }]
                }((function() {
                  var e = d.current,
                    t = e.disabled,
                    n = e.target,
                    r = e.align,
                    i = e.onAlign,
                    o = h.current;
                  if (!t && n && o) {
                    var a, s = Uw(n),
                      l = Ww(n);
                    u.current.element = s, u.current.point = l, u.current.align = r;
                    var c = document.activeElement;
                    return s && zw(s) ? a = Fw(o, s, r) : l && (a = function(e, t, n) {
                        var r, i, o = kw.getDocument(e),
                          a = o.defaultView || o.parentWindow,
                          s = kw.getWindowScrollLeft(a),
                          l = kw.getWindowScrollTop(a),
                          c = kw.viewportWidth(a),
                          u = kw.viewportHeight(a),
                          h = {
                            left: r = "pageX" in t ? t.pageX : s + t.clientX,
                            top: i = "pageY" in t ? t.pageY : l + t.clientY,
                            width: 0,
                            height: 0
                          },
                          p = r >= 0 && r <= s + c && i >= 0 && i <= l + u,
                          d = [n.points[0], "cc"];
                        return Lw(e, h, jy(jy({}, n), {}, {
                          points: d
                        }), p)
                      }(o, l, r)),
                      function(e, t) {
                        e !== document.activeElement && t_(t, e) && "function" == typeof e.focus && e.focus()
                      }(c, o), i && a && i(o, a), !0
                  }
                  return !1
                }), c),
                g = Mp(f, 2),
                m = g[0],
                v = g[1],
                _ = Mp(Nn.useState(), 2),
                b = _[0],
                y = _[1],
                w = Mp(Nn.useState(), 2),
                x = w[0],
                k = w[1];
              return Jv((function() {
                y(Uw(i)), k(Ww(i))
              })), Nn.useEffect((function() {
                var e, t;
                u.current.element === b && ((e = u.current.point) === (t = x) || e && t && ("pageX" in t && "pageY" in t ? e.pageX === t.pageX && e.pageY === t.pageY : "clientX" in t && "clientY" in t && e.clientX === t.clientX && e
                  .clientY === t.clientY)) && Bw(u.current.align, o) || m()
              })), Nn.useEffect((function() {
                return Hw(h.current, m)
              }), [h.current]), Nn.useEffect((function() {
                return Hw(b, m)
              }), [b]), Nn.useEffect((function() {
                r ? v() : m()
              }), [r]), Nn.useEffect((function() {
                if (s) return Oy(window, "resize", m).remove
              }), [s]), Nn.useEffect((function() {
                return function() {
                  v()
                }
              }), []), Nn.useImperativeHandle(t, (function() {
                return {
                  forceAlign: function() {
                    return m(!0)
                  }
                }
              })), Nn.isValidElement(p) && (p = Nn.cloneElement(p, {
                ref: Rp(p.ref, h)
              })), p
            },
            Xw = Nn.forwardRef(Vw);
          Xw.displayName = "Align";
          var Gw = Xw,
            Yw = ["measure", "alignPre", "align", null, "motion"],
            qw = Ft((function(e, t) {
              var n = e.visible,
                r = e.prefixCls,
                i = e.className,
                o = e.style,
                a = e.children,
                s = e.zIndex,
                l = e.stretch,
                c = e.destroyPopupOnHide,
                u = e.forceRender,
                h = e.align,
                p = e.point,
                d = e.getRootDomNode,
                f = e.getClassNameFromAlign,
                g = e.onAlign,
                m = e.onMouseEnter,
                v = e.onMouseLeave,
                _ = e.onMouseDown,
                b = e.onTouchStart,
                y = e.onClick,
                w = vt(),
                x = vt(),
                k = Mp(dt(), 2),
                C = k[0],
                S = k[1],
                E = function(e) {
                  var t = Mp(dt({
                      width: 0,
                      height: 0
                    }), 2),
                    n = t[0],
                    r = t[1],
                    i = bt((function() {
                      var t = {};
                      if (e) {
                        var r = n.width,
                          i = n.height; - 1 !== e.indexOf("height") && i ? t.height = i : -1 !== e.indexOf("minHeight") && i && (t.minHeight = i), -1 !== e.indexOf("width") && r ? t.width = r : -1 !== e.indexOf("minWidth") && r && (t
                          .minWidth = r)
                      }
                      return t
                    }), [e, n]);
                  return [i, function(e) {
                    var t = e.offsetWidth,
                      n = e.offsetHeight,
                      i = e.getBoundingClientRect(),
                      o = i.width,
                      a = i.height;
                    Math.abs(t - o) < 1 && Math.abs(n - a) < 1 && (t = o, n = a), r({
                      width: t,
                      height: n
                    })
                  }]
                }(l),
                T = Mp(E, 2),
                O = T[0],
                A = T[1];
              var P = function(e, t) {
                  var n = Mp(ld(null), 2),
                    r = n[0],
                    i = n[1],
                    o = vt();

                  function a(e) {
                    i(e, !0)
                  }

                  function s() {
                    gd.cancel(o.current)
                  }
                  return gt((function() {
                    a("measure")
                  }), [e]), gt((function() {
                    "measure" === r && t(), r && (o.current = gd(jh(Nh().mark((function e() {
                      var t, n;
                      return Nh().wrap((function(e) {
                        for (;;) switch (e.prev = e.next) {
                          case 0:
                            t = Yw.indexOf(r), (n = Yw[t + 1]) && -1 !== t && a(n);
                          case 3:
                          case "end":
                            return e.stop()
                        }
                      }), e)
                    })))))
                  }), [r]), gt((function() {
                    return function() {
                      s()
                    }
                  }), []), [r, function(e) {
                    s(), o.current = gd((function() {
                      a((function(e) {
                        switch (r) {
                          case "align":
                            return "motion";
                          case "motion":
                            return "stable"
                        }
                        return e
                      })), null == e || e()
                    }))
                  }]
                }(n, (function() {
                  l && A(d())
                })),
                M = Mp(P, 2),
                D = M[0],
                I = M[1],
                N = Mp(dt(0), 2),
                R = N[0],
                j = N[1],
                L = vt();

              function F() {
                var e;
                null === (e = w.current) || void 0 === e || e.forceAlign()
              }

              function B(e, t) {
                var n = f(t);
                C !== n && S(n), j((function(e) {
                  return e + 1
                })), "align" === D && (null == g || g(e, t))
              }
              Jv((function() {
                "alignPre" === D && j(0)
              }), [D]), Jv((function() {
                "align" === D && (R < 3 ? F() : I((function() {
                  var e;
                  null === (e = L.current) || void 0 === e || e.call(L)
                })))
              }), [R]);
              var z = Hh({}, Iy(e));

              function H() {
                return new Promise((function(e) {
                  L.current = e
                }))
              } ["onAppearEnd", "onEnterEnd", "onLeaveEnd"].forEach((function(e) {
                var t = z[e];
                z[e] = function(e, n) {
                  return I(), null == t ? void 0 : t(e, n)
                }
              })), gt((function() {
                z.motionName || "motion" !== D || I()
              }), [z.motionName, D]), _t(t, (function() {
                return {
                  forceAlign: F,
                  getElement: function() {
                    return x.current
                  }
                }
              }));
              var U = Hh(Hh({}, O), {}, {
                  zIndex: s,
                  opacity: "motion" !== D && "stable" !== D && n ? 0 : void 0,
                  pointerEvents: n || "stable" === D ? void 0 : "none"
                }, o),
                W = !0;
              null == h || !h.points || "align" !== D && "stable" !== D || (W = !1);
              var V = a;
              return zt.count(a) > 1 && (V = Te("div", {
                className: "".concat(r, "-content")
              }, a)), Te(Sd, wh({
                visible: n,
                ref: x,
                leavedClassName: "".concat(r, "-hidden")
              }, z, {
                onAppearPrepare: H,
                onEnterPrepare: H,
                removeOnLeave: c,
                forceRender: u
              }), (function(e, t) {
                var n = e.className,
                  o = e.style,
                  a = Rl(r, i, C, n);
                return Te(Gw, {
                  target: p || d,
                  key: "popup",
                  ref: w,
                  monitorWindowResize: !0,
                  disabled: W,
                  align: h,
                  onAlign: B
                }, Te("div", {
                  ref: t,
                  className: a,
                  onMouseEnter: m,
                  onMouseLeave: v,
                  onMouseDownCapture: _,
                  onTouchStartCapture: b,
                  onClick: y,
                  style: Hh(Hh({}, o), U)
                }, V))
              }))
            }));
          qw.displayName = "PopupInner";
          var Kw = qw,
            $w = Ft((function(e, t) {
              var n = e.prefixCls,
                r = e.visible,
                i = e.zIndex,
                o = e.children,
                a = e.mobile,
                s = (a = void 0 === a ? {} : a).popupClassName,
                l = a.popupStyle,
                c = a.popupMotion,
                u = void 0 === c ? {} : c,
                h = a.popupRender,
                p = e.onClick,
                d = vt();
              _t(t, (function() {
                return {
                  forceAlign: function() {},
                  getElement: function() {
                    return d.current
                  }
                }
              }));
              var f = Hh({
                  zIndex: i
                }, l),
                g = o;
              return zt.count(o) > 1 && (g = Te("div", {
                className: "".concat(n, "-content")
              }, o)), h && (g = h(g)), Te(Sd, wh({
                visible: r,
                ref: d,
                removeOnLeave: !0
              }, u), (function(e, t) {
                var r = e.className,
                  i = e.style;
                return Te("div", {
                  ref: t,
                  className: Rl(n, s, r),
                  onClick: p,
                  style: Hh(Hh({}, i), f)
                }, g)
              }))
            }));
          $w.displayName = "MobilePopupInner";
          var Zw = $w,
            Jw = ["visible", "mobile"],
            Qw = Ft((function(e, t) {
              var n = e.visible,
                r = e.mobile,
                i = Ih(e, Jw),
                o = Mp(dt(n), 2),
                a = o[0],
                s = o[1],
                l = Mp(dt(!1), 2),
                c = l[0],
                u = l[1],
                h = Hh(Hh({}, i), {}, {
                  visible: a
                });
              gt((function() {
                s(n), n && r && u(pb())
              }), [n, r]);
              var p = c ? Te(Zw, wh({}, h, {
                mobile: r,
                ref: t
              })) : Te(Kw, wh({}, h, {
                ref: t
              }));
              return Te("div", null, Te(Ny, h), p)
            }));
          Qw.displayName = "Popup";
          var ex = Qw,
            tx = Qe(null);

          function nx() {}

          function rx() {
            return ""
          }

          function ix(e) {
            return e ? e.ownerDocument : window.document
          }
          var ox = ["onClick", "onMouseDown", "onTouchStart", "onMouseEnter", "onMouseLeave", "onFocus", "onBlur", "onContextMenu"];
          var ax = function(e) {
              var t = function(t) {
                Oh(r, t);
                var n = Mh(r);

                function r(e) {
                  var t, i;
                  return xh(this, r), Dh(Ph(t = n.call(this, e)), "popupRef", Ae()), Dh(Ph(t), "triggerRef", Ae()), Dh(Ph(t), "portalContainer", void 0), Dh(Ph(t), "attachId", void 0), Dh(Ph(t), "clickOutsideHandler", void 0), Dh(Ph(t),
                    "touchOutsideHandler", void 0), Dh(Ph(t), "contextMenuOutsideHandler1", void 0), Dh(Ph(t), "contextMenuOutsideHandler2", void 0), Dh(Ph(t), "mouseDownTimeout", void 0), Dh(Ph(t), "focusTime", void 0), Dh(Ph(t),
                    "preClickTime", void 0), Dh(Ph(t), "preTouchTime", void 0), Dh(Ph(t), "delayTimer", void 0), Dh(Ph(t), "hasPopupMouseDown", void 0), Dh(Ph(t), "onMouseEnter", (function(e) {
                    var n = t.props.mouseEnterDelay;
                    t.fireEvents("onMouseEnter", e), t.delaySetPopupVisible(!0, n, n ? null : e)
                  })), Dh(Ph(t), "onMouseMove", (function(e) {
                    t.fireEvents("onMouseMove", e), t.setPoint(e)
                  })), Dh(Ph(t), "onMouseLeave", (function(e) {
                    t.fireEvents("onMouseLeave", e), t.delaySetPopupVisible(!1, t.props.mouseLeaveDelay)
                  })), Dh(Ph(t), "onPopupMouseEnter", (function() {
                    t.clearDelayTimer()
                  })), Dh(Ph(t), "onPopupMouseLeave", (function(e) {
                    var n;
                    e.relatedTarget && !e.relatedTarget.setTimeout && t_(null === (n = t.popupRef.current) || void 0 === n ? void 0 : n.getElement(), e.relatedTarget) || t.delaySetPopupVisible(!1, t.props.mouseLeaveDelay)
                  })), Dh(Ph(t), "onFocus", (function(e) {
                    t.fireEvents("onFocus", e), t.clearDelayTimer(), t.isFocusToShow() && (t.focusTime = Date.now(), t.delaySetPopupVisible(!0, t.props.focusDelay))
                  })), Dh(Ph(t), "onMouseDown", (function(e) {
                    t.fireEvents("onMouseDown", e), t.preClickTime = Date.now()
                  })), Dh(Ph(t), "onTouchStart", (function(e) {
                    t.fireEvents("onTouchStart", e), t.preTouchTime = Date.now()
                  })), Dh(Ph(t), "onBlur", (function(e) {
                    t.fireEvents("onBlur", e), t.clearDelayTimer(), t.isBlurToHide() && t.delaySetPopupVisible(!1, t.props.blurDelay)
                  })), Dh(Ph(t), "onContextMenu", (function(e) {
                    e.preventDefault(), t.fireEvents("onContextMenu", e), t.setPopupVisible(!0, e)
                  })), Dh(Ph(t), "onContextMenuClose", (function() {
                    t.isContextMenuToShow() && t.close()
                  })), Dh(Ph(t), "onClick", (function(e) {
                    if (t.fireEvents("onClick", e), t.focusTime) {
                      var n;
                      if (t.preClickTime && t.preTouchTime ? n = Math.min(t.preClickTime, t.preTouchTime) : t.preClickTime ? n = t.preClickTime : t.preTouchTime && (n = t.preTouchTime), Math.abs(n - t.focusTime) < 20) return;
                      t.focusTime = 0
                    }
                    t.preClickTime = 0, t.preTouchTime = 0, t.isClickToShow() && (t.isClickToHide() || t.isBlurToHide()) && e && e.preventDefault && e.preventDefault();
                    var r = !t.state.popupVisible;
                    (t.isClickToHide() && !r || r && t.isClickToShow()) && t.setPopupVisible(!t.state.popupVisible, e)
                  })), Dh(Ph(t), "onPopupMouseDown", (function() {
                    var e;
                    (t.hasPopupMouseDown = !0, clearTimeout(t.mouseDownTimeout), t.mouseDownTimeout = window.setTimeout((function() {
                      t.hasPopupMouseDown = !1
                    }), 0), t.context) && (e = t.context).onPopupMouseDown.apply(e, arguments)
                  })), Dh(Ph(t), "onDocumentClick", (function(e) {
                    if (!t.props.mask || t.props.maskClosable) {
                      var n = e.target,
                        r = t.getRootDomNode(),
                        i = t.getPopupDomNode();
                      t_(r, n) && !t.isContextMenuOnly() || t_(i, n) || t.hasPopupMouseDown || t.close()
                    }
                  })), Dh(Ph(t), "getRootDomNode", (function() {
                    var e = t.props.getTriggerDOMNode;
                    if (e) return e(t.triggerRef.current);
                    try {
                      var n = Dp(t.triggerRef.current);
                      if (n) return n
                    } catch (e) {}
                    return Nn.findDOMNode(Ph(t))
                  })), Dh(Ph(t), "getPopupClassNameFromAlign", (function(e) {
                    var n = [],
                      r = t.props,
                      i = r.popupPlacement,
                      o = r.builtinPlacements,
                      a = r.prefixCls,
                      s = r.alignPoint,
                      l = r.getPopupClassNameFromAlign;
                    return i && o && n.push(function(e, t, n, r) {
                      for (var i = n.points, o = Object.keys(e), a = 0; a < o.length; a += 1) {
                        var s = o[a];
                        if (Dy(e[s].points, i, r)) return "".concat(t, "-placement-").concat(s)
                      }
                      return ""
                    }(o, a, e, s)), l && n.push(l(e)), n.join(" ")
                  })), Dh(Ph(t), "getComponent", (function() {
                    var e = t.props,
                      n = e.prefixCls,
                      r = e.destroyPopupOnHide,
                      i = e.popupClassName,
                      o = e.onPopupAlign,
                      a = e.popupMotion,
                      s = e.popupAnimation,
                      l = e.popupTransitionName,
                      c = e.popupStyle,
                      u = e.mask,
                      h = e.maskAnimation,
                      p = e.maskTransitionName,
                      d = e.maskMotion,
                      f = e.zIndex,
                      g = e.popup,
                      m = e.stretch,
                      v = e.alignPoint,
                      _ = e.mobile,
                      b = e.forceRender,
                      y = e.onPopupClick,
                      w = t.state,
                      x = w.popupVisible,
                      k = w.point,
                      C = t.getPopupAlign(),
                      S = {};
                    return t.isMouseEnterToShow() && (S.onMouseEnter = t.onPopupMouseEnter), t.isMouseLeaveToHide() && (S.onMouseLeave = t.onPopupMouseLeave), S.onMouseDown = t.onPopupMouseDown, S.onTouchStart = t.onPopupMouseDown, Te(ex,
                      wh({
                        prefixCls: n,
                        destroyPopupOnHide: r,
                        visible: x,
                        point: v && k,
                        className: i,
                        align: C,
                        onAlign: o,
                        animation: s,
                        getClassNameFromAlign: t.getPopupClassNameFromAlign
                      }, S, {
                        stretch: m,
                        getRootDomNode: t.getRootDomNode,
                        style: c,
                        mask: u,
                        zIndex: f,
                        transitionName: l,
                        maskAnimation: h,
                        maskTransitionName: p,
                        maskMotion: d,
                        ref: t.popupRef,
                        motion: a,
                        mobile: _,
                        forceRender: b,
                        onClick: y
                      }), "function" == typeof g ? g() : g)
                  })), Dh(Ph(t), "attachParent", (function(e) {
                    gd.cancel(t.attachId);
                    var n, r = t.props,
                      i = r.getPopupContainer,
                      o = r.getDocument,
                      a = t.getRootDomNode();
                    i ? (a || 0 === i.length) && (n = i(a)) : n = o(t.getRootDomNode()).body, n ? n.appendChild(e) : t.attachId = gd((function() {
                      t.attachParent(e)
                    }))
                  })), Dh(Ph(t), "getContainer", (function() {
                    if (!t.portalContainer) {
                      var e = (0, t.props.getDocument)(t.getRootDomNode()).createElement("div");
                      e.style.position = "absolute", e.style.top = "0", e.style.left = "0", e.style.width = "100%", t.portalContainer = e
                    }
                    return t.attachParent(t.portalContainer), t.portalContainer
                  })), Dh(Ph(t), "setPoint", (function(e) {
                    t.props.alignPoint && e && t.setState({
                      point: {
                        pageX: e.pageX,
                        pageY: e.pageY
                      }
                    })
                  })), Dh(Ph(t), "handlePortalUpdate", (function() {
                    t.state.prevPopupVisible !== t.state.popupVisible && t.props.afterPopupVisibleChange(t.state.popupVisible)
                  })), Dh(Ph(t), "triggerContextValue", {
                    onPopupMouseDown: t.onPopupMouseDown
                  }), i = "popupVisible" in e ? !!e.popupVisible : !!e.defaultPopupVisible, t.state = {
                    prevPopupVisible: i,
                    popupVisible: i
                  }, ox.forEach((function(e) {
                    t["fire".concat(e)] = function(n) {
                      t.fireEvents(e, n)
                    }
                  })), t
                }
                return Eh(r, [{
                  key: "componentDidMount",
                  value: function() {
                    this.componentDidUpdate()
                  }
                }, {
                  key: "componentDidUpdate",
                  value: function() {
                    var e, t = this.props;
                    if (this.state.popupVisible) return this.clickOutsideHandler || !this.isClickToHide() && !this.isContextMenuToShow() || (e = t.getDocument(this.getRootDomNode()), this.clickOutsideHandler = Oy(e, "mousedown", this
                        .onDocumentClick)), this.touchOutsideHandler || (e = e || t.getDocument(this.getRootDomNode()), this.touchOutsideHandler = Oy(e, "touchstart", this.onDocumentClick)), !this.contextMenuOutsideHandler1 && this
                      .isContextMenuToShow() && (e = e || t.getDocument(this.getRootDomNode()), this.contextMenuOutsideHandler1 = Oy(e, "scroll", this.onContextMenuClose)), void(!this.contextMenuOutsideHandler2 && this
                        .isContextMenuToShow() && (this.contextMenuOutsideHandler2 = Oy(window, "blur", this.onContextMenuClose)));
                    this.clearOutsideHandler()
                  }
                }, {
                  key: "componentWillUnmount",
                  value: function() {
                    this.clearDelayTimer(), this.clearOutsideHandler(), clearTimeout(this.mouseDownTimeout), gd.cancel(this.attachId)
                  }
                }, {
                  key: "getPopupDomNode",
                  value: function() {
                    var e;
                    return (null === (e = this.popupRef.current) || void 0 === e ? void 0 : e.getElement()) || null
                  }
                }, {
                  key: "getPopupAlign",
                  value: function() {
                    var e = this.props,
                      t = e.popupPlacement,
                      n = e.popupAlign,
                      r = e.builtinPlacements;
                    return t && r ? function(e, t, n) {
                      return Hh(Hh({}, e[t] || {}), n)
                    }(r, t, n) : n
                  }
                }, {
                  key: "setPopupVisible",
                  value: function(e, t) {
                    var n = this.props.alignPoint,
                      r = this.state.popupVisible;
                    this.clearDelayTimer(), r !== e && ("popupVisible" in this.props || this.setState({
                      popupVisible: e,
                      prevPopupVisible: r
                    }), this.props.onPopupVisibleChange(e)), n && t && e && this.setPoint(t)
                  }
                }, {
                  key: "delaySetPopupVisible",
                  value: function(e, t, n) {
                    var r = this,
                      i = 1e3 * t;
                    if (this.clearDelayTimer(), i) {
                      var o = n ? {
                        pageX: n.pageX,
                        pageY: n.pageY
                      } : null;
                      this.delayTimer = window.setTimeout((function() {
                        r.setPopupVisible(e, o), r.clearDelayTimer()
                      }), i)
                    } else this.setPopupVisible(e, n)
                  }
                }, {
                  key: "clearDelayTimer",
                  value: function() {
                    this.delayTimer && (clearTimeout(this.delayTimer), this.delayTimer = null)
                  }
                }, {
                  key: "clearOutsideHandler",
                  value: function() {
                    this.clickOutsideHandler && (this.clickOutsideHandler.remove(), this.clickOutsideHandler = null), this.contextMenuOutsideHandler1 && (this.contextMenuOutsideHandler1.remove(), this.contextMenuOutsideHandler1 = null),
                      this.contextMenuOutsideHandler2 && (this.contextMenuOutsideHandler2.remove(), this.contextMenuOutsideHandler2 = null), this.touchOutsideHandler && (this.touchOutsideHandler.remove(), this.touchOutsideHandler =
                        null)
                  }
                }, {
                  key: "createTwoChains",
                  value: function(e) {
                    var t = this.props.children.props,
                      n = this.props;
                    return t[e] && n[e] ? this["fire".concat(e)] : t[e] || n[e]
                  }
                }, {
                  key: "isClickToShow",
                  value: function() {
                    var e = this.props,
                      t = e.action,
                      n = e.showAction;
                    return -1 !== t.indexOf("click") || -1 !== n.indexOf("click")
                  }
                }, {
                  key: "isContextMenuOnly",
                  value: function() {
                    var e = this.props.action;
                    return "contextMenu" === e || 1 === e.length && "contextMenu" === e[0]
                  }
                }, {
                  key: "isContextMenuToShow",
                  value: function() {
                    var e = this.props,
                      t = e.action,
                      n = e.showAction;
                    return -1 !== t.indexOf("contextMenu") || -1 !== n.indexOf("contextMenu")
                  }
                }, {
                  key: "isClickToHide",
                  value: function() {
                    var e = this.props,
                      t = e.action,
                      n = e.hideAction;
                    return -1 !== t.indexOf("click") || -1 !== n.indexOf("click")
                  }
                }, {
                  key: "isMouseEnterToShow",
                  value: function() {
                    var e = this.props,
                      t = e.action,
                      n = e.showAction;
                    return -1 !== t.indexOf("hover") || -1 !== n.indexOf("mouseEnter")
                  }
                }, {
                  key: "isMouseLeaveToHide",
                  value: function() {
                    var e = this.props,
                      t = e.action,
                      n = e.hideAction;
                    return -1 !== t.indexOf("hover") || -1 !== n.indexOf("mouseLeave")
                  }
                }, {
                  key: "isFocusToShow",
                  value: function() {
                    var e = this.props,
                      t = e.action,
                      n = e.showAction;
                    return -1 !== t.indexOf("focus") || -1 !== n.indexOf("focus")
                  }
                }, {
                  key: "isBlurToHide",
                  value: function() {
                    var e = this.props,
                      t = e.action,
                      n = e.hideAction;
                    return -1 !== t.indexOf("focus") || -1 !== n.indexOf("blur")
                  }
                }, {
                  key: "forcePopupAlign",
                  value: function() {
                    var e;
                    this.state.popupVisible && (null === (e = this.popupRef.current) || void 0 === e || e.forceAlign())
                  }
                }, {
                  key: "fireEvents",
                  value: function(e, t) {
                    var n = this.props.children.props[e];
                    n && n(t);
                    var r = this.props[e];
                    r && r(t)
                  }
                }, {
                  key: "close",
                  value: function() {
                    this.setPopupVisible(!1)
                  }
                }, {
                  key: "render",
                  value: function() {
                    var t = this.state.popupVisible,
                      n = this.props,
                      r = n.children,
                      i = n.forceRender,
                      o = n.alignPoint,
                      a = n.className,
                      s = n.autoDestroy,
                      l = zt.only(r),
                      c = {
                        key: "trigger"
                      };
                    this.isContextMenuToShow() ? c.onContextMenu = this.onContextMenu : c.onContextMenu = this.createTwoChains("onContextMenu"), this.isClickToHide() || this.isClickToShow() ? (c.onClick = this.onClick, c.onMouseDown =
                        this.onMouseDown, c.onTouchStart = this.onTouchStart) : (c.onClick = this.createTwoChains("onClick"), c.onMouseDown = this.createTwoChains("onMouseDown"), c.onTouchStart = this.createTwoChains("onTouchStart")),
                      this.isMouseEnterToShow() ? (c.onMouseEnter = this.onMouseEnter, o && (c.onMouseMove = this.onMouseMove)) : c.onMouseEnter = this.createTwoChains("onMouseEnter"), this.isMouseLeaveToHide() ? c.onMouseLeave = this
                      .onMouseLeave : c.onMouseLeave = this.createTwoChains("onMouseLeave"), this.isFocusToShow() || this.isBlurToHide() ? (c.onFocus = this.onFocus, c.onBlur = this.onBlur) : (c.onFocus = this.createTwoChains(
                        "onFocus"), c.onBlur = this.createTwoChains("onBlur"));
                    var u = Rl(l && l.props && l.props.className, a);
                    u && (c.className = u);
                    var h = Hh({}, c);
                    jp(l) && (h.ref = Rp(this.triggerRef, l.ref));
                    var p, d = yn(l, h);
                    return (t || this.popupRef.current || i) && (p = Te(e, {
                      key: "portal",
                      getContainer: this.getContainer,
                      didUpdate: this.handlePortalUpdate
                    }, this.getComponent())), !t && s && (p = null), Te(tx.Provider, {
                      value: this.triggerContextValue
                    }, d, p)
                  }
                }], [{
                  key: "getDerivedStateFromProps",
                  value: function(e, t) {
                    var n = e.popupVisible,
                      r = {};
                    return void 0 !== n && t.popupVisible !== n && (r.popupVisible = n, r.prevPopupVisible = t.popupVisible), r
                  }
                }]), r
              }(Me);
              return Dh(t, "contextType", tx), Dh(t, "defaultProps", {
                prefixCls: "rc-trigger-popup",
                getPopupClassNameFromAlign: rx,
                getDocument: ix,
                onPopupVisibleChange: nx,
                afterPopupVisibleChange: nx,
                onPopupAlign: nx,
                popupClassName: "",
                mouseEnterDelay: 0,
                mouseLeaveDelay: .1,
                focusDelay: 0,
                blurDelay: .15,
                popupStyle: {},
                destroyPopupOnHide: !1,
                popupAlign: {},
                defaultPopupVisible: !1,
                mask: !1,
                maskClosable: !0,
                action: [],
                showAction: [],
                hideAction: [],
                autoDestroy: !1
              }), t
            }(My),
            sx = {
              adjustX: 1,
              adjustY: 1
            },
            lx = {
              topLeft: {
                points: ["bl", "tl"],
                overflow: sx,
                offset: [0, -7]
              },
              bottomLeft: {
                points: ["tl", "bl"],
                overflow: sx,
                offset: [0, 7]
              },
              leftTop: {
                points: ["tr", "tl"],
                overflow: sx,
                offset: [-4, 0]
              },
              rightTop: {
                points: ["tl", "tr"],
                overflow: sx,
                offset: [4, 0]
              }
            },
            cx = {
              topLeft: {
                points: ["bl", "tl"],
                overflow: sx,
                offset: [0, -7]
              },
              bottomLeft: {
                points: ["tl", "bl"],
                overflow: sx,
                offset: [0, 7]
              },
              rightTop: {
                points: ["tr", "tl"],
                overflow: sx,
                offset: [-4, 0]
              },
              leftTop: {
                points: ["tl", "tr"],
                overflow: sx,
                offset: [4, 0]
              }
            };

          function ux(e, t, n) {
            return t || (n ? n[e] || n.other : void 0)
          }
          var hx = {
            horizontal: "bottomLeft",
            vertical: "rightTop",
            "vertical-left": "rightTop",
            "vertical-right": "leftTop"
          };

          function px(e) {
            var t = e.prefixCls,
              n = e.visible,
              r = e.children,
              i = e.popup,
              o = e.popupClassName,
              a = e.popupOffset,
              s = e.disabled,
              l = e.mode,
              c = e.onVisibleChange,
              u = wt(Zb),
              h = u.getPopupContainer,
              p = u.rtl,
              d = u.subMenuOpenDelay,
              f = u.subMenuCloseDelay,
              g = u.builtinPlacements,
              m = u.triggerSubMenuAction,
              v = u.forceSubMenuRender,
              _ = u.rootClassName,
              b = u.motion,
              y = u.defaultMotions,
              w = Mp(dt(!1), 2),
              x = w[0],
              k = w[1],
              C = Hh(Hh({}, p ? cx : lx), g),
              S = hx[l],
              E = Hh(Hh({}, ux(l, b, y)), {}, {
                leavedClassName: "".concat(t, "-hidden"),
                removeOnLeave: !1,
                motionAppear: !0
              }),
              T = vt();
            return gt((function() {
              return T.current = gd((function() {
                  k(n)
                })),
                function() {
                  gd.cancel(T.current)
                }
            }), [n]), Te(ax, {
              prefixCls: t,
              popupClassName: Rl("".concat(t, "-popup"), Dh({}, "".concat(t, "-rtl"), p), o, _),
              stretch: "horizontal" === l ? "minWidth" : null,
              getPopupContainer: h,
              builtinPlacements: C,
              popupPlacement: S,
              popupVisible: x,
              popup: i,
              popupAlign: a && {
                offset: a
              },
              action: s ? [] : [m],
              mouseEnterDelay: d,
              mouseLeaveDelay: f,
              onPopupVisibleChange: c,
              forceRender: v,
              popupMotion: E
            }, r)
          }

          function dx(e) {
            var t = e.id,
              n = e.open,
              r = e.keyPath,
              i = e.children,
              o = "inline",
              a = wt(Zb),
              s = a.prefixCls,
              l = a.forceSubMenuRender,
              c = a.motion,
              u = a.defaultMotions,
              h = a.mode,
              p = vt(!1);
            p.current = h === o;
            var d = Mp(dt(!p.current), 2),
              f = d[0],
              g = d[1],
              m = !!p.current && n;
            gt((function() {
              p.current && g(!1)
            }), [h]);
            var v = Hh({}, ux(o, c, u));
            r.length > 1 && (v.motionAppear = !1);
            var _ = v.onVisibleChanged;
            return v.onVisibleChanged = function(e) {
              return p.current || e || g(!0), null == _ ? void 0 : _(e)
            }, f ? null : Te(Jb, {
              mode: o,
              locked: !p.current
            }, Te(Sd, wh({
              visible: m
            }, v, {
              forceRender: l,
              removeOnLeave: !1,
              leavedClassName: "".concat(s, "-hidden")
            }), (function(e) {
              var n = e.className,
                r = e.style;
              return Te(Ty, {
                id: t,
                className: n,
                style: r
              }, i)
            })))
          }
          var fx = ["style", "className", "title", "eventKey", "warnKey", "disabled", "internalPopupClose", "children", "itemIcon", "expandIcon", "popupClassName", "popupOffset", "onClick", "onMouseEnter", "onMouseLeave", "onTitleClick",
              "onTitleMouseEnter", "onTitleMouseLeave"
            ],
            gx = ["active"],
            mx = function(e) {
              var t, n = e.style,
                r = e.className,
                i = e.title,
                o = e.eventKey,
                a = e.disabled,
                s = e.internalPopupClose,
                l = e.children,
                c = e.itemIcon,
                u = e.expandIcon,
                h = e.popupClassName,
                p = e.popupOffset,
                d = e.onClick,
                f = e.onMouseEnter,
                g = e.onMouseLeave,
                m = e.onTitleClick,
                v = e.onTitleMouseEnter,
                _ = e.onTitleMouseLeave,
                b = Ih(e, fx),
                y = py(o),
                w = wt(Zb),
                x = w.prefixCls,
                k = w.mode,
                C = w.openKeys,
                S = w.disabled,
                E = w.overflowDisabled,
                T = w.activeKey,
                O = w.selectedKeys,
                A = w.itemIcon,
                P = w.expandIcon,
                M = w.onItemClick,
                D = w.onOpenChange,
                I = w.onActive,
                N = wt(dy)._internalRenderSubMenuItem,
                R = wt(cy).isSubPathKey,
                j = ly(),
                L = "".concat(x, "-submenu"),
                F = S || a,
                B = vt(),
                z = vt(),
                H = c || A,
                U = u || P,
                W = C.includes(o),
                V = !E && W,
                X = R(O, o),
                G = Qb(o, F, v, _),
                Y = G.active,
                q = Ih(G, gx),
                K = Mp(dt(!1), 2),
                $ = K[0],
                Z = K[1],
                J = function(e) {
                  F || Z(e)
                },
                Q = bt((function() {
                  return Y || "inline" !== k && ($ || R([T], o))
                }), [k, Y, T, $, o, R]),
                ee = ry(j.length),
                te = Cy((function(e) {
                  null == d || d(ty(e)), M(e)
                })),
                ne = y && "".concat(y, "-popup"),
                re = Te("div", wh({
                  role: "menuitem",
                  style: ee,
                  className: "".concat(L, "-title"),
                  tabIndex: F ? null : -1,
                  ref: B,
                  title: "string" == typeof i ? i : null,
                  "data-menu-id": E && y ? null : y,
                  "aria-expanded": V,
                  "aria-haspopup": !0,
                  "aria-controls": ne,
                  "aria-disabled": F,
                  onClick: function(e) {
                    F || (null == m || m({
                      key: o,
                      domEvent: e
                    }), "inline" === k && D(o, !W))
                  },
                  onFocus: function() {
                    I(o)
                  }
                }, q), i, Te(ny, {
                  icon: "horizontal" !== k ? U : null,
                  props: Hh(Hh({}, e), {}, {
                    isOpen: V,
                    isSubMenu: !0
                  })
                }, Te("i", {
                  className: "".concat(L, "-arrow")
                }))),
                ie = vt(k);
              if ("inline" !== k && (ie.current = j.length > 1 ? "vertical" : k), !E) {
                var oe = ie.current;
                re = Te(px, {
                  mode: oe,
                  prefixCls: L,
                  visible: !s && V && "inline" !== k,
                  popupClassName: h,
                  popupOffset: p,
                  popup: Te(Jb, {
                    mode: "horizontal" === oe ? "vertical" : oe
                  }, Te(Ty, {
                    id: ne,
                    ref: z
                  }, l)),
                  disabled: F,
                  onVisibleChange: function(e) {
                    "inline" !== k && D(o, e)
                  }
                }, re)
              }
              var ae = Te(qb.Item, wh({
                role: "none"
              }, b, {
                component: "li",
                style: n,
                className: Rl(L, "".concat(L, "-").concat(k), r, (t = {}, Dh(t, "".concat(L, "-open"), V), Dh(t, "".concat(L, "-active"), Q), Dh(t, "".concat(L, "-selected"), X), Dh(t, "".concat(L, "-disabled"), F), t)),
                onMouseEnter: function(e) {
                  J(!0), null == f || f({
                    key: o,
                    domEvent: e
                  })
                },
                onMouseLeave: function(e) {
                  J(!1), null == g || g({
                    key: o,
                    domEvent: e
                  })
                }
              }), re, !E && Te(dx, {
                id: ne,
                open: V,
                keyPath: j
              }, l));
              return N && (ae = N(ae, e, {
                selected: X,
                active: Q,
                open: V,
                disabled: F
              })), Te(Jb, {
                onItemClick: te,
                mode: "horizontal" === k ? "vertical" : k,
                itemIcon: H,
                expandIcon: U
              }, ae)
            };

          function vx(e) {
            var t, n = e.eventKey,
              r = e.children,
              i = ly(n),
              o = wy(r, i),
              a = ay();
            return gt((function() {
              if (a) return a.registerPath(n, i),
                function() {
                  a.unregisterPath(n, i)
                }
            }), [i]), t = a ? o : Te(mx, e, o), Te(sy.Provider, {
              value: i
            }, t)
          }

          function _x(e) {
            var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
            if (zw(e)) {
              var n = e.nodeName.toLowerCase(),
                r = ["input", "select", "textarea", "button"].includes(n) || e.isContentEditable || "a" === n && !!e.getAttribute("href"),
                i = e.getAttribute("tabindex"),
                o = Number(i),
                a = null;
              return i && !Number.isNaN(o) ? a = o : r && null === a && (a = 0), r && e.disabled && (a = null), null !== a && (a >= 0 || t && a < 0)
            }
            return !1
          }
          var bx = w_.LEFT,
            yx = w_.RIGHT,
            wx = w_.UP,
            xx = w_.DOWN,
            kx = w_.ENTER,
            Cx = w_.ESC,
            Sx = w_.HOME,
            Ex = w_.END,
            Tx = [wx, xx, bx, yx];

          function Ox(e, t) {
            var n = function(e) {
              var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
                n = Bh(e.querySelectorAll("*")).filter((function(e) {
                  return _x(e, t)
                }));
              return _x(e, t) && n.unshift(e), n
            }(e, !0);
            return n.filter((function(e) {
              return t.has(e)
            }))
          }

          function Ax(e, t, n) {
            var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1;
            if (!e) return null;
            var i = Ox(e, t),
              o = i.length,
              a = i.findIndex((function(e) {
                return n === e
              }));
            return r < 0 ? -1 === a ? a = o - 1 : a -= 1 : r > 0 && (a += 1), i[a = (a + o) % o]
          }

          function Px(e, t, n, r, i, o, a, s, l, c) {
            var u = vt(),
              h = vt();
            h.current = t;
            var p = function() {
              gd.cancel(u.current)
            };
            return gt((function() {
                return function() {
                  p()
                }
              }), []),
              function(d) {
                var f = d.which;
                if ([].concat(Tx, [kx, Cx, Sx, Ex]).includes(f)) {
                  var g, m, v, _ = function() {
                    return g = new Set, m = new Map, v = new Map, o().forEach((function(e) {
                      var t = document.querySelector("[data-menu-id='".concat(hy(r, e), "']"));
                      t && (g.add(t), v.set(t, e), m.set(e, t))
                    })), g
                  };
                  _();
                  var b = function(e, t) {
                      for (var n = e || document.activeElement; n;) {
                        if (t.has(n)) return n;
                        n = n.parentElement
                      }
                      return null
                    }(m.get(t), g),
                    y = v.get(b),
                    w = function(e, t, n, r) {
                      var i, o, a, s, l = "prev",
                        c = "next",
                        u = "children",
                        h = "parent";
                      if ("inline" === e && r === kx) return {
                        inlineTrigger: !0
                      };
                      var p = (Dh(i = {}, wx, l), Dh(i, xx, c), i),
                        d = (Dh(o = {}, bx, n ? c : l), Dh(o, yx, n ? l : c), Dh(o, xx, u), Dh(o, kx, u), o),
                        f = (Dh(a = {}, wx, l), Dh(a, xx, c), Dh(a, kx, u), Dh(a, Cx, h), Dh(a, bx, n ? u : h), Dh(a, yx, n ? h : u), a);
                      switch (null === (s = {
                          inline: p,
                          horizontal: d,
                          vertical: f,
                          inlineSub: p,
                          horizontalSub: f,
                          verticalSub: f
                        } ["".concat(e).concat(t ? "" : "Sub")]) || void 0 === s ? void 0 : s[r]) {
                        case l:
                          return {
                            offset: -1, sibling: !0
                          };
                        case c:
                          return {
                            offset: 1, sibling: !0
                          };
                        case h:
                          return {
                            offset: -1, sibling: !1
                          };
                        case u:
                          return {
                            offset: 1, sibling: !1
                          };
                        default:
                          return null
                      }
                    }(e, 1 === a(y, !0).length, n, f);
                  if (!w && f !== Sx && f !== Ex) return;
                  (Tx.includes(f) || [Sx, Ex].includes(f)) && d.preventDefault();
                  var x = function(e) {
                    if (e) {
                      var t = e,
                        n = e.querySelector("a");
                      (null == n ? void 0 : n.getAttribute("href")) && (t = n);
                      var r = v.get(e);
                      s(r), p(), u.current = gd((function() {
                        h.current === r && t.focus()
                      }))
                    }
                  };
                  if ([Sx, Ex].includes(f) || w.sibling || !b) {
                    var k, C, S = Ox(k = b && "inline" !== e ? function(e) {
                      for (var t = e; t;) {
                        if (t.getAttribute("data-menu-list")) return t;
                        t = t.parentElement
                      }
                      return null
                    }(b) : i.current, g);
                    C = f === Sx ? S[0] : f === Ex ? S[S.length - 1] : Ax(k, g, b, w.offset), x(C)
                  } else if (w.inlineTrigger) l(y);
                  else if (w.offset > 0) l(y, !0), p(), u.current = gd((function() {
                    _();
                    var e = b.getAttribute("aria-controls"),
                      t = Ax(document.getElementById(e), g);
                    x(t)
                  }), 5);
                  else if (w.offset < 0) {
                    var E = a(y, !0),
                      T = E[E.length - 2],
                      O = m.get(T);
                    l(T, !1), x(O)
                  }
                }
                null == c || c(d)
              }
          }
          var Mx = Math.random().toFixed(5).toString().slice(2),
            Dx = 0;
          var Ix = "__RC_UTIL_PATH_SPLIT__",
            Nx = function(e) {
              return e.join(Ix)
            },
            Rx = "rc-menu-more";

          function jx() {
            var e = Mp(dt({}), 2)[1],
              t = vt(new Map),
              n = vt(new Map),
              r = Mp(dt([]), 2),
              i = r[0],
              o = r[1],
              a = vt(0),
              s = vt(!1),
              l = yt((function(r, i) {
                var o = Nx(i);
                n.current.set(o, r), t.current.set(r, o), a.current += 1;
                var l, c = a.current;
                l = function() {
                  c === a.current && (s.current || e({}))
                }, Promise.resolve().then(l)
              }), []),
              c = yt((function(e, r) {
                var i = Nx(r);
                n.current.delete(i), t.current.delete(e)
              }), []),
              u = yt((function(e) {
                o(e)
              }), []),
              h = yt((function(e, n) {
                var r = t.current.get(e) || "",
                  o = r.split(Ix);
                return n && i.includes(o[0]) && o.unshift(Rx), o
              }), [i]),
              p = yt((function(e, t) {
                return e.some((function(e) {
                  return h(e, !0).includes(t)
                }))
              }), [h]),
              d = yt((function(e) {
                var r = "".concat(t.current.get(e)).concat(Ix),
                  i = new Set;
                return Bh(n.current.keys()).forEach((function(e) {
                  e.startsWith(r) && i.add(n.current.get(e))
                })), i
              }), []);
            return gt((function() {
              return function() {
                s.current = !0
              }
            }), []), {
              registerPath: l,
              unregisterPath: c,
              refreshOverflowKeys: u,
              isSubPathKey: p,
              getKeyPath: h,
              getKeys: function() {
                var e = Bh(t.current.keys());
                return i.length && e.push(Rx), e
              },
              getSubPathKeys: d
            }
          }
          var Lx = ["prefixCls", "rootClassName", "style", "className", "tabIndex", "items", "children", "direction", "id", "mode", "inlineCollapsed", "disabled", "disabledOverflow", "subMenuOpenDelay", "subMenuCloseDelay", "forceSubMenuRender",
              "defaultOpenKeys", "openKeys", "activeKey", "defaultActiveFirst", "selectable", "multiple", "defaultSelectedKeys", "selectedKeys", "onSelect", "onDeselect", "inlineIndent", "motion", "defaultMotions", "triggerSubMenuAction",
              "builtinPlacements", "itemIcon", "expandIcon", "overflowedIndicator", "overflowedIndicatorPopupClassName", "getPopupContainer", "onClick", "onOpenChange", "onKeyDown", "openAnimation", "openTransitionName",
              "_internalRenderMenuItem", "_internalRenderSubMenuItem"
            ],
            Fx = [],
            Bx = Ft((function(e, t) {
              var n, r, i = e.prefixCls,
                o = void 0 === i ? "rc-menu" : i,
                a = e.rootClassName,
                s = e.style,
                l = e.className,
                c = e.tabIndex,
                u = void 0 === c ? 0 : c,
                h = e.items,
                p = e.children,
                d = e.direction,
                f = e.id,
                g = e.mode,
                m = void 0 === g ? "vertical" : g,
                v = e.inlineCollapsed,
                _ = e.disabled,
                b = e.disabledOverflow,
                y = e.subMenuOpenDelay,
                w = void 0 === y ? .1 : y,
                x = e.subMenuCloseDelay,
                k = void 0 === x ? .1 : x,
                C = e.forceSubMenuRender,
                S = e.defaultOpenKeys,
                E = e.openKeys,
                T = e.activeKey,
                O = e.defaultActiveFirst,
                A = e.selectable,
                P = void 0 === A || A,
                M = e.multiple,
                D = void 0 !== M && M,
                I = e.defaultSelectedKeys,
                N = e.selectedKeys,
                R = e.onSelect,
                j = e.onDeselect,
                L = e.inlineIndent,
                F = void 0 === L ? 24 : L,
                B = e.motion,
                z = e.defaultMotions,
                H = e.triggerSubMenuAction,
                U = void 0 === H ? "hover" : H,
                W = e.builtinPlacements,
                V = e.itemIcon,
                X = e.expandIcon,
                G = e.overflowedIndicator,
                Y = void 0 === G ? "..." : G,
                q = e.overflowedIndicatorPopupClassName,
                K = e.getPopupContainer,
                $ = e.onClick,
                Z = e.onOpenChange,
                J = e.onKeyDown,
                Q = e._internalRenderMenuItem,
                ee = e._internalRenderSubMenuItem,
                te = Ih(e, Lx),
                ne = bt((function() {
                  return ky(p, h, Fx)
                }), [p, h]),
                re = Mp(dt(!1), 2),
                ie = re[0],
                oe = re[1],
                ae = vt();
              _t(t, (function() {
                return {
                  list: ae.current,
                  focus: function(e) {
                    var t;
                    null === (t = ae.current) || void 0 === t || t.focus(e)
                  }
                }
              }));
              var se = function(e) {
                  var t = Mp(gb(e, {
                      value: e
                    }), 2),
                    n = t[0],
                    r = t[1];
                  return gt((function() {
                    Dx += 1;
                    var e = "".concat(Mx, "-").concat(Dx);
                    r("rc-menu-uuid-".concat(e))
                  }), []), n
                }(f),
                le = "rtl" === d,
                ce = Mp(bt((function() {
                  return "inline" !== m && "vertical" !== m || !v ? [m, !1] : ["vertical", v]
                }), [m, v]), 2),
                ue = ce[0],
                he = ce[1],
                pe = Mp(dt(0), 2),
                de = pe[0],
                fe = pe[1],
                ge = de >= ne.length - 1 || "horizontal" !== ue || b,
                me = Mp(gb(S, {
                  value: E,
                  postState: function(e) {
                    return e || Fx
                  }
                }), 2),
                ve = me[0],
                _e = me[1],
                be = function(e) {
                  _e(e), null == Z || Z(e)
                },
                ye = Mp(dt(ve), 2),
                we = ye[0],
                xe = ye[1],
                ke = "inline" === ue,
                Ce = vt(!1);
              gt((function() {
                ke && xe(ve)
              }), [ve]), gt((function() {
                Ce.current ? ke ? _e(we) : be(Fx) : Ce.current = !0
              }), [ke]);
              var Se = jx(),
                Ee = Se.registerPath,
                Oe = Se.unregisterPath,
                Ae = Se.refreshOverflowKeys,
                Pe = Se.isSubPathKey,
                Me = Se.getKeyPath,
                De = Se.getKeys,
                Ie = Se.getSubPathKeys,
                Ne = bt((function() {
                  return {
                    registerPath: Ee,
                    unregisterPath: Oe
                  }
                }), [Ee, Oe]),
                Re = bt((function() {
                  return {
                    isSubPathKey: Pe
                  }
                }), [Pe]);
              gt((function() {
                Ae(ge ? Fx : ne.slice(de + 1).map((function(e) {
                  return e.key
                })))
              }), [de, ge]);
              var je = Mp(gb(T || O && (null === (n = ne[0]) || void 0 === n ? void 0 : n.key), {
                  value: T
                }), 2),
                Le = je[0],
                Fe = je[1],
                Be = Cy((function(e) {
                  Fe(e)
                })),
                ze = Cy((function() {
                  Fe(void 0)
                })),
                He = Mp(gb(I || [], {
                  value: N,
                  postState: function(e) {
                    return Array.isArray(e) ? e : null == e ? Fx : [e]
                  }
                }), 2),
                Ue = He[0],
                We = He[1],
                Ve = Cy((function(e) {
                  null == $ || $(ty(e)),
                    function(e) {
                      if (P) {
                        var t, n = e.key,
                          r = Ue.includes(n);
                        t = D ? r ? Ue.filter((function(e) {
                          return e !== n
                        })) : [].concat(Bh(Ue), [n]) : [n], We(t);
                        var i = Hh(Hh({}, e), {}, {
                          selectedKeys: t
                        });
                        r ? null == j || j(i) : null == R || R(i)
                      }!D && ve.length && "inline" !== ue && be(Fx)
                    }(e)
                })),
                Xe = Cy((function(e, t) {
                  var n = ve.filter((function(t) {
                    return t !== e
                  }));
                  if (t) n.push(e);
                  else if ("inline" !== ue) {
                    var r = Ie(e);
                    n = n.filter((function(e) {
                      return !r.has(e)
                    }))
                  }
                  Pb(ve, n) || be(n)
                })),
                Ge = Cy(K),
                Ye = Px(ue, Le, le, se, ae, De, Me, Fe, (function(e, t) {
                  var n = null != t ? t : !ve.includes(e);
                  Xe(e, n)
                }), J);
              gt((function() {
                oe(!0)
              }), []);
              var qe = bt((function() {
                  return {
                    _internalRenderMenuItem: Q,
                    _internalRenderSubMenuItem: ee
                  }
                }), [Q, ee]),
                Ke = "horizontal" !== ue || b ? ne : ne.map((function(e, t) {
                  return Te(Jb, {
                    key: e.key,
                    overflowDisabled: t > de
                  }, e)
                })),
                $e = Te(qb, wh({
                  id: f,
                  ref: ae,
                  prefixCls: "".concat(o, "-overflow"),
                  component: "ul",
                  itemComponent: by,
                  className: Rl(o, "".concat(o, "-root"), "".concat(o, "-").concat(ue), l, (r = {}, Dh(r, "".concat(o, "-inline-collapsed"), he), Dh(r, "".concat(o, "-rtl"), le), r), a),
                  dir: d,
                  style: s,
                  role: "menu",
                  tabIndex: u,
                  data: Ke,
                  renderRawItem: function(e) {
                    return e
                  },
                  renderRawRest: function(e) {
                    var t = e.length,
                      n = t ? ne.slice(-t) : null;
                    return Te(vx, {
                      eventKey: Rx,
                      title: Y,
                      disabled: ge,
                      internalPopupClose: 0 === t,
                      popupClassName: q
                    }, n)
                  },
                  maxCount: "horizontal" !== ue || b ? qb.INVALIDATE : qb.RESPONSIVE,
                  ssr: "full",
                  "data-menu-list": !0,
                  onVisibleChange: function(e) {
                    fe(e)
                  },
                  onKeyDown: Ye
                }, te));
              return Te(dy.Provider, {
                value: qe
              }, Te(uy.Provider, {
                value: se
              }, Te(Jb, {
                prefixCls: o,
                rootClassName: a,
                mode: ue,
                openKeys: ve,
                rtl: le,
                disabled: _,
                motion: ie ? B : null,
                defaultMotions: ie ? z : null,
                activeKey: Le,
                onActive: Be,
                onInactive: ze,
                selectedKeys: Ue,
                inlineIndent: F,
                subMenuOpenDelay: w,
                subMenuCloseDelay: k,
                forceSubMenuRender: C,
                builtinPlacements: W,
                triggerSubMenuAction: U,
                getPopupContainer: Ge,
                itemIcon: V,
                expandIcon: X,
                onItemClick: Ve,
                onOpenChange: Xe
              }, Te(cy.Provider, {
                value: Re
              }, $e), Te("div", {
                style: {
                  display: "none"
                },
                "aria-hidden": !0
              }, Te(oy.Provider, {
                value: Ne
              }, ne)))))
            })),
            zx = ["className", "title", "eventKey", "children"],
            Hx = ["children"],
            Ux = function(e) {
              var t = e.className,
                n = e.title,
                r = e.children,
                i = Ih(e, zx),
                o = wt(Zb).prefixCls,
                a = "".concat(o, "-item-group");
              return Te("li", wh({}, i, {
                onClick: function(e) {
                  return e.stopPropagation()
                },
                className: Rl(a, t)
              }), Te("div", {
                className: "".concat(a, "-title"),
                title: "string" == typeof n ? n : void 0
              }, n), Te("ul", {
                className: "".concat(a, "-list")
              }, r))
            };

          function Wx(e) {
            var t = e.children,
              n = Ih(e, Hx),
              r = wy(t, ly(n.eventKey));
            return ay() ? r : Te(Ux, Kb(n, ["warnKey"]), r)
          }

          function Vx(e) {
            var t = e.className,
              n = e.style,
              r = wt(Zb).prefixCls;
            return ay() ? null : Te("li", {
              className: Rl("".concat(r, "-item-divider"), t),
              style: n
            })
          }
          var Xx = Bx;
          Xx.Item = by, Xx.SubMenu = vx, Xx.ItemGroup = Wx, Xx.Divider = Vx;
          var Gx = Xx,
            Yx = {
              adjustX: 1,
              adjustY: 1
            },
            qx = [0, 0],
            Kx = {
              topLeft: {
                points: ["bl", "tl"],
                overflow: Yx,
                offset: [0, -4],
                targetOffset: qx
              },
              topCenter: {
                points: ["bc", "tc"],
                overflow: Yx,
                offset: [0, -4],
                targetOffset: qx
              },
              topRight: {
                points: ["br", "tr"],
                overflow: Yx,
                offset: [0, -4],
                targetOffset: qx
              },
              bottomLeft: {
                points: ["tl", "bl"],
                overflow: Yx,
                offset: [0, 4],
                targetOffset: qx
              },
              bottomCenter: {
                points: ["tc", "bc"],
                overflow: Yx,
                offset: [0, 4],
                targetOffset: qx
              },
              bottomRight: {
                points: ["tr", "br"],
                overflow: Yx,
                offset: [0, 4],
                targetOffset: qx
              }
            },
            $x = w_.ESC,
            Zx = w_.TAB;
          var Jx = ["arrow", "prefixCls", "transitionName", "animation", "align", "placement", "placements", "getPopupContainer", "showAction", "hideAction", "overlayClassName", "overlayStyle", "visible", "trigger"];

          function Qx(e, t) {
            var n = e.arrow,
              r = void 0 !== n && n,
              i = e.prefixCls,
              o = void 0 === i ? "rc-dropdown" : i,
              a = e.transitionName,
              s = e.animation,
              l = e.align,
              c = e.placement,
              u = void 0 === c ? "bottomLeft" : c,
              h = e.placements,
              p = void 0 === h ? Kx : h,
              d = e.getPopupContainer,
              f = e.showAction,
              g = e.hideAction,
              m = e.overlayClassName,
              v = e.overlayStyle,
              _ = e.visible,
              b = e.trigger,
              y = void 0 === b ? ["hover"] : b,
              w = Ih(e, Jx),
              x = Mp(dt(), 2),
              k = x[0],
              C = x[1],
              S = "visible" in e ? _ : k,
              E = vt(null);
            _t(t, (function() {
              return E.current
            }));
            var T = vt(null),
              O = "".concat(o, "-menu");
            ! function(e) {
              var t = e.visible,
                n = e.setTriggerVisible,
                r = e.triggerRef,
                i = e.menuRef,
                o = e.onVisibleChange,
                a = vt(!1),
                s = function() {
                  var e, i, a, s;
                  t && r.current && (null === (e = r.current) || void 0 === e || null === (i = e.triggerRef) || void 0 === i || null === (a = i.current) || void 0 === a || null === (s = a.focus) || void 0 === s || s.call(a), n(!1), "function" ==
                    typeof o && o(!1))
                },
                l = function(e) {
                  var t;
                  switch (e.keyCode) {
                    case $x:
                      s();
                      break;
                    case Zx:
                      !a.current && (null === (t = i.current) || void 0 === t ? void 0 : t.focus) ? (e.preventDefault(), i.current.focus(), a.current = !0) : s()
                  }
                };
              gt((function() {
                return t ? (window.addEventListener("keydown", l), function() {
                  window.removeEventListener("keydown", l), a.current = !1
                }) : function() {
                  return null
                }
              }), [t])
            }({
              visible: S,
              setTriggerVisible: C,
              triggerRef: E,
              menuRef: T,
              onVisibleChange: e.onVisibleChange
            });
            var A, P, M, D, I = function() {
                var t = e.overlay;
                return "function" == typeof t ? t() : t
              },
              N = function(t) {
                var n = e.onOverlayClick,
                  r = I().props;
                C(!1), n && n(t), r.onClick && r.onClick(t)
              },
              R = function() {
                var e, t = I(),
                  n = Rp(T, t.ref),
                  i = (Dh(e = {
                    prefixCls: O
                  }, "data-dropdown-inject", !0), Dh(e, "onClick", N), Dh(e, "ref", jp(t) ? n : void 0), e);
                return "string" == typeof t.type && (delete i.prefixCls, delete i["data-dropdown-inject"]), Te(Pe, null, r && Te("div", {
                  className: "".concat(o, "-arrow")
                }), yn(t, i))
              },
              j = g;
            return j || -1 === y.indexOf("contextMenu") || (j = ["click"]), Te(ax, Hh(Hh({
              builtinPlacements: p
            }, w), {}, {
              prefixCls: o,
              ref: E,
              popupClassName: Rl(m, Dh({}, "".concat(o, "-show-arrow"), r)),
              popupStyle: v,
              action: y,
              showAction: f,
              hideAction: j || [],
              popupPlacement: u,
              popupAlign: l,
              popupTransitionName: a,
              popupAnimation: s,
              popupVisible: S,
              stretch: function() {
                var t = e.minOverlayWidthMatchTrigger,
                  n = e.alignPoint;
                return "minOverlayWidthMatchTrigger" in e ? t : !n
              }() ? "minWidth" : "",
              popup: "function" == typeof e.overlay ? R : R(),
              onPopupVisibleChange: function(t) {
                var n = e.onVisibleChange;
                C(t), "function" == typeof n && n(t)
              },
              getPopupContainer: d
            }), (P = e.children, M = P.props ? P.props : {}, D = Rl(M.className, void 0 !== (A = e.openClassName) ? A : "".concat(o, "-open")), S && P ? yn(P, {
              className: D
            }) : P))
          }
          var ek = Ft(Qx);

          function tk(e, t) {
            var n = e.prefixCls,
              r = e.editable,
              i = e.locale,
              o = e.style;
            return r && !1 !== r.showAdd ? Te("button", {
              ref: t,
              type: "button",
              className: "".concat(n, "-nav-add"),
              style: o,
              "aria-label": (null == i ? void 0 : i.addAriaLabel) || "Add tab",
              onClick: function(e) {
                r.onEdit("add", {
                  event: e
                })
              }
            }, r.addIcon || "+") : null
          }
          var nk = Ft(tk);

          function rk(e, t) {
            var n = e.prefixCls,
              r = e.id,
              i = e.tabs,
              o = e.locale,
              a = e.mobile,
              s = e.moreIcon,
              l = void 0 === s ? "More" : s,
              c = e.moreTransitionName,
              u = e.style,
              h = e.className,
              p = e.editable,
              d = e.tabBarGutter,
              f = e.rtl,
              g = e.removeAriaLabel,
              m = e.onTabClick,
              v = Mp(dt(!1), 2),
              _ = v[0],
              b = v[1],
              y = Mp(dt(null), 2),
              w = y[0],
              x = y[1],
              k = "".concat(r, "-more-popup"),
              C = "".concat(n, "-dropdown"),
              S = null !== w ? "".concat(k, "-").concat(w) : null,
              E = null == o ? void 0 : o.dropdownAriaLabel;
            var T = Te(Gx, {
              onClick: function(e) {
                var t = e.key,
                  n = e.domEvent;
                m(t, n), b(!1)
              },
              id: k,
              tabIndex: -1,
              role: "listbox",
              "aria-activedescendant": S,
              selectedKeys: [w],
              "aria-label": void 0 !== E ? E : "expanded dropdown"
            }, i.map((function(e) {
              var t = p && !1 !== e.closable && !e.disabled;
              return Te(by, {
                key: e.key,
                id: "".concat(k, "-").concat(e.key),
                role: "option",
                "aria-controls": r && "".concat(r, "-panel-").concat(e.key),
                disabled: e.disabled
              }, Te("span", null, e.tab), t && Te("button", {
                type: "button",
                "aria-label": g || "remove",
                tabIndex: 0,
                className: "".concat(C, "-menu-item-remove"),
                onClick: function(t) {
                  var n, r;
                  t.stopPropagation(), n = t, r = e.key, n.preventDefault(), n.stopPropagation(), p.onEdit("remove", {
                    key: r,
                    event: n
                  })
                }
              }, e.closeIcon || p.removeIcon || "×"))
            })));

            function O(e) {
              for (var t = i.filter((function(e) {
                  return !e.disabled
                })), n = t.findIndex((function(e) {
                  return e.key === w
                })) || 0, r = t.length, o = 0; o < r; o += 1) {
                var a = t[n = (n + e + r) % r];
                if (!a.disabled) return void x(a.key)
              }
            }
            gt((function() {
              var e = document.getElementById(S);
              e && e.scrollIntoView && e.scrollIntoView(!1)
            }), [w]), gt((function() {
              _ || x(null)
            }), [_]);
            var A = Dh({}, f ? "marginRight" : "marginLeft", d);
            i.length || (A.visibility = "hidden", A.order = 1);
            var P = Rl(Dh({}, "".concat(C, "-rtl"), f)),
              M = a ? null : Te(ek, {
                prefixCls: C,
                overlay: T,
                trigger: ["hover"],
                visible: _,
                transitionName: c,
                onVisibleChange: b,
                overlayClassName: P,
                mouseEnterDelay: .1,
                mouseLeaveDelay: .1
              }, Te("button", {
                type: "button",
                className: "".concat(n, "-nav-more"),
                style: A,
                tabIndex: -1,
                "aria-hidden": "true",
                "aria-haspopup": "listbox",
                "aria-controls": k,
                id: "".concat(r, "-more"),
                "aria-expanded": _,
                onKeyDown: function(e) {
                  var t = e.which;
                  if (_) switch (t) {
                    case w_.UP:
                      O(-1), e.preventDefault();
                      break;
                    case w_.DOWN:
                      O(1), e.preventDefault();
                      break;
                    case w_.ESC:
                      b(!1);
                      break;
                    case w_.SPACE:
                    case w_.ENTER:
                      null !== w && m(w, e)
                  } else [w_.DOWN, w_.SPACE, w_.ENTER].includes(t) && (b(!0), e.preventDefault())
                }
              }, l));
            return Te("div", {
              className: Rl("".concat(n, "-nav-operations"), h),
              style: u,
              ref: t
            }, M, Te(nk, {
              prefixCls: n,
              locale: o,
              editable: p
            }))
          }
          var ik = Rt(Ft(rk), (function(e, t) {
              return t.tabMoving
            })),
            ok = Qe(null),
            ak = .1,
            sk = .01,
            lk = 20,
            ck = Math.pow(.995, lk);

          function uk(e, t) {
            var n = vt(e),
              r = Mp(dt({}), 2)[1];
            return [n.current, function(e) {
              var i = "function" == typeof e ? e(n.current) : e;
              i !== n.current && t(i, n.current), n.current = i, r({})
            }]
          }
          var hk = function(e) {
            var t, n = e.position,
              r = e.prefixCls,
              i = e.extra;
            if (!i) return null;
            var o = {};
            return i && "object" === kh(i) && !bn(i) ? o = i : o.right = i, "right" === n && (t = o.right), "left" === n && (t = o.left), t ? Te("div", {
              className: "".concat(r, "-extra-content")
            }, t) : null
          };

          function pk(e, t) {
            var n, r, i, o, a, s, l, c = wt(ok),
              u = c.prefixCls,
              h = c.tabs,
              p = e.className,
              d = e.style,
              f = e.id,
              g = e.animated,
              m = e.activeKey,
              v = e.rtl,
              _ = e.extra,
              b = e.editable,
              y = e.locale,
              w = e.tabPosition,
              x = e.tabBarGutter,
              k = e.children,
              C = e.onTabClick,
              S = e.onTabScroll,
              E = vt(),
              T = vt(),
              O = vt(),
              A = vt(),
              P = Mp((r = vt(new Map), [function(e) {
                return r.current.has(e) || r.current.set(e, Ae()), r.current.get(e)
              }, function(e) {
                r.current.delete(e)
              }]), 2),
              M = P[0],
              D = P[1],
              I = "top" === w || "bottom" === w,
              N = Mp(uk(0, (function(e, t) {
                I && S && S({
                  direction: e > t ? "left" : "right"
                })
              })), 2),
              R = N[0],
              j = N[1],
              L = Mp(uk(0, (function(e, t) {
                !I && S && S({
                  direction: e > t ? "top" : "bottom"
                })
              })), 2),
              F = L[0],
              B = L[1],
              z = Mp(dt(0), 2),
              H = z[0],
              U = z[1],
              W = Mp(dt(0), 2),
              V = W[0],
              X = W[1],
              G = Mp(dt(null), 2),
              Y = G[0],
              q = G[1],
              K = Mp(dt(null), 2),
              $ = K[0],
              Z = K[1],
              J = Mp(dt(0), 2),
              Q = J[0],
              ee = J[1],
              te = Mp(dt(0), 2),
              ne = te[0],
              re = te[1],
              ie = (i = new Map, o = vt([]), a = Mp(dt({}), 2)[1], s = vt("function" == typeof i ? i() : i), l = Sb((function() {
                var e = s.current;
                o.current.forEach((function(t) {
                  e = t(e)
                })), o.current = [], s.current = e, a({})
              })), [s.current, function(e) {
                o.current.push(e), l()
              }]),
              oe = Mp(ie, 2),
              ae = oe[0],
              se = oe[1],
              le = function(e, t, n) {
                return bt((function() {
                  for (var n, r = new Map, i = t.get(null === (n = e[0]) || void 0 === n ? void 0 : n.key) || Ob, o = i.left + i.width, a = 0; a < e.length; a += 1) {
                    var s, l = e[a].key,
                      c = t.get(l);
                    c || (c = t.get(null === (s = e[a - 1]) || void 0 === s ? void 0 : s.key) || Ob);
                    var u = r.get(l) || Hh({}, c);
                    u.right = o - u.left - u.width, r.set(l, u)
                  }
                  return r
                }), [e.map((function(e) {
                  return e.key
                })).join("_"), t, n])
              }(h, ae, H),
              ce = "".concat(u, "-nav-operations-hidden"),
              ue = 0,
              he = 0;

            function pe(e) {
              return e < ue ? ue : e > he ? he : e
            }
            I ? v ? (ue = 0, he = Math.max(0, H - Y)) : (ue = Math.min(0, Y - H), he = 0) : (ue = Math.min(0, $ - V), he = 0);
            var de = vt(),
              fe = Mp(dt(), 2),
              ge = fe[0],
              me = fe[1];

            function ve() {
              me(Date.now())
            }

            function _e() {
              window.clearTimeout(de.current)
            }

            function be() {
              var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : m,
                t = le.get(e) || {
                  width: 0,
                  height: 0,
                  left: 0,
                  right: 0,
                  top: 0
                };
              if (I) {
                var n = R;
                v ? t.right < R ? n = t.right : t.right + t.width > R + Y && (n = t.right + t.width - Y) : t.left < -R ? n = -t.left : t.left + t.width > -R + Y && (n = -(t.left + t.width - Y)), B(0), j(pe(n))
              } else {
                var r = F;
                t.top < -F ? r = -t.top : t.top + t.height > -F + $ && (r = -(t.top + t.height - $)), j(0), B(pe(r))
              }
            }! function(e, t) {
              var n = Mp(dt(), 2),
                r = n[0],
                i = n[1],
                o = Mp(dt(0), 2),
                a = o[0],
                s = o[1],
                l = Mp(dt(0), 2),
                c = l[0],
                u = l[1],
                h = Mp(dt(), 2),
                p = h[0],
                d = h[1],
                f = vt(),
                g = vt(),
                m = vt(null);
              m.current = {
                onTouchStart: function(e) {
                  var t = e.touches[0],
                    n = t.screenX,
                    r = t.screenY;
                  i({
                    x: n,
                    y: r
                  }), window.clearInterval(f.current)
                },
                onTouchMove: function(e) {
                  if (r) {
                    e.preventDefault();
                    var n = e.touches[0],
                      o = n.screenX,
                      l = n.screenY;
                    i({
                      x: o,
                      y: l
                    });
                    var c = o - r.x,
                      h = l - r.y;
                    t(c, h);
                    var p = Date.now();
                    s(p), u(p - a), d({
                      x: c,
                      y: h
                    })
                  }
                },
                onTouchEnd: function() {
                  if (r && (i(null), d(null), p)) {
                    var e = p.x / c,
                      n = p.y / c,
                      o = Math.abs(e),
                      a = Math.abs(n);
                    if (Math.max(o, a) < ak) return;
                    var s = e,
                      l = n;
                    f.current = window.setInterval((function() {
                      Math.abs(s) < sk && Math.abs(l) < sk ? window.clearInterval(f.current) : t((s *= ck) * lk, (l *= ck) * lk)
                    }), lk)
                  }
                },
                onWheel: function(e) {
                  var n = e.deltaX,
                    r = e.deltaY,
                    i = 0,
                    o = Math.abs(n),
                    a = Math.abs(r);
                  o === a ? i = "x" === g.current ? n : r : o > a ? (i = n, g.current = "x") : (i = r, g.current = "y"), t(-i, -i) && e.preventDefault()
                }
              }, gt((function() {
                function t(e) {
                  m.current.onTouchMove(e)
                }

                function n(e) {
                  m.current.onTouchEnd(e)
                }
                return document.addEventListener("touchmove", t, {
                    passive: !1
                  }), document.addEventListener("touchend", n, {
                    passive: !1
                  }), e.current.addEventListener("touchstart", (function(e) {
                    m.current.onTouchStart(e)
                  }), {
                    passive: !1
                  }), e.current.addEventListener("wheel", (function(e) {
                    m.current.onWheel(e)
                  })),
                  function() {
                    document.removeEventListener("touchmove", t), document.removeEventListener("touchend", n)
                  }
              }), [])
            }(E, (function(e, t) {
              function n(e, t) {
                e((function(e) {
                  return pe(e + t)
                }))
              }
              if (I) {
                if (Y >= H) return !1;
                n(j, e)
              } else {
                if ($ >= V) return !1;
                n(B, t)
              }
              return _e(), ve(), !0
            })), gt((function() {
              return _e(), ge && (de.current = window.setTimeout((function() {
                me(0)
              }), 100)), _e
            }), [ge]);
            var ye = function(e, t, n, r, i) {
                var o, a, s, l = i.tabs,
                  c = i.tabPosition,
                  u = i.rtl;
                ["top", "bottom"].includes(c) ? (o = "width", a = u ? "right" : "left", s = Math.abs(t.left)) : (o = "height", a = "top", s = -t.top);
                var h = t[o],
                  p = n[o],
                  d = r[o],
                  f = h;
                return p + d > h && p < h && (f = h - d), bt((function() {
                  if (!l.length) return [0, 0];
                  for (var t = l.length, n = t, r = 0; r < t; r += 1) {
                    var i = e.get(l[r].key) || Ab;
                    if (i[a] + i[o] > s + f) {
                      n = r - 1;
                      break
                    }
                  }
                  for (var c = 0, u = t - 1; u >= 0; u -= 1)
                    if ((e.get(l[u].key) || Ab)[a] < s) {
                      c = u + 1;
                      break
                    } return [c, n]
                }), [e, s, f, c, l.map((function(e) {
                  return e.key
                })).join("_"), u])
              }(le, {
                width: Y,
                height: $,
                left: R,
                top: F
              }, {
                width: H,
                height: V
              }, {
                width: Q,
                height: ne
              }, Hh(Hh({}, e), {}, {
                tabs: h
              })),
              we = Mp(ye, 2),
              xe = we[0],
              ke = we[1],
              Ce = {};
            "top" === w || "bottom" === w ? Ce[v ? "marginRight" : "marginLeft"] = x : Ce.marginTop = x;
            var Se = h.map((function(e, t) {
                var n = e.key;
                return Te(Tb, {
                  id: f,
                  prefixCls: u,
                  key: n,
                  tab: e,
                  style: 0 === t ? void 0 : Ce,
                  closable: e.closable,
                  editable: b,
                  active: n === m,
                  renderWrapper: k,
                  removeAriaLabel: null == y ? void 0 : y.removeAriaLabel,
                  ref: M(n),
                  onClick: function(e) {
                    C(n, e)
                  },
                  onRemove: function() {
                    D(n)
                  },
                  onFocus: function() {
                    be(n), ve(), E.current && (v || (E.current.scrollLeft = 0), E.current.scrollTop = 0)
                  }
                })
              })),
              Ee = Sb((function() {
                var e, t, n, r, i, o, a = (null === (e = E.current) || void 0 === e ? void 0 : e.offsetWidth) || 0,
                  s = (null === (t = E.current) || void 0 === t ? void 0 : t.offsetHeight) || 0,
                  l = (null === (n = A.current) || void 0 === n ? void 0 : n.offsetWidth) || 0,
                  c = (null === (r = A.current) || void 0 === r ? void 0 : r.offsetHeight) || 0;
                q(a), Z(s), ee(l), re(c);
                var u = ((null === (i = T.current) || void 0 === i ? void 0 : i.offsetWidth) || 0) - l,
                  p = ((null === (o = T.current) || void 0 === o ? void 0 : o.offsetHeight) || 0) - c;
                U(u), X(p), se((function() {
                  var e = new Map;
                  return h.forEach((function(t) {
                    var n = t.key,
                      r = M(n).current;
                    r && e.set(n, {
                      width: r.offsetWidth,
                      height: r.offsetHeight,
                      left: r.offsetLeft,
                      top: r.offsetTop
                    })
                  })), e
                }))
              })),
              Oe = h.slice(0, xe),
              Pe = h.slice(ke + 1),
              Me = [].concat(Bh(Oe), Bh(Pe)),
              De = Mp(dt(), 2),
              Ie = De[0],
              Ne = De[1],
              Re = le.get(m),
              je = vt();

            function Le() {
              gd.cancel(je.current)
            }
            gt((function() {
              var e = {};
              return Re && (I ? (v ? e.right = Re.right : e.left = Re.left, e.width = Re.width) : (e.top = Re.top, e.height = Re.height)), Le(), je.current = gd((function() {
                Ne(e)
              })), Le
            }), [Re, I, v]), gt((function() {
              be()
            }), [m, Re, le, I]), gt((function() {
              Ee()
            }), [v, x, m, h.map((function(e) {
              return e.key
            })).join("_")]);
            var Fe, Be, ze, He, Ue = !!Me.length,
              We = "".concat(u, "-nav-wrap");
            return I ? v ? (Be = R > 0, Fe = R + Y < H) : (Fe = R < 0, Be = -R + Y < H) : (ze = F < 0, He = -F + $ < V), Te("div", {
              ref: t,
              role: "tablist",
              className: Rl("".concat(u, "-nav"), p),
              style: d,
              onKeyDown: function() {
                ve()
              }
            }, Te(hk, {
              position: "left",
              extra: _,
              prefixCls: u
            }), Te(Cb, {
              onResize: Ee
            }, Te("div", {
              className: Rl(We, (n = {}, Dh(n, "".concat(We, "-ping-left"), Fe), Dh(n, "".concat(We, "-ping-right"), Be), Dh(n, "".concat(We, "-ping-top"), ze), Dh(n, "".concat(We, "-ping-bottom"), He), n)),
              ref: E
            }, Te(Cb, {
              onResize: Ee
            }, Te("div", {
              ref: T,
              className: "".concat(u, "-nav-list"),
              style: {
                transform: "translate(".concat(R, "px, ").concat(F, "px)"),
                transition: ge ? "none" : void 0
              }
            }, Se, Te(nk, {
              ref: A,
              prefixCls: u,
              locale: y,
              editable: b,
              style: Hh(Hh({}, 0 === Se.length ? void 0 : Ce), {}, {
                visibility: Ue ? "hidden" : null
              })
            }), Te("div", {
              className: Rl("".concat(u, "-ink-bar"), Dh({}, "".concat(u, "-ink-bar-animated"), g.inkBar)),
              style: Ie
            }))))), Te(ik, wh({}, e, {
              removeAriaLabel: null == y ? void 0 : y.removeAriaLabel,
              ref: O,
              prefixCls: u,
              tabs: Me,
              className: !Ue && ce,
              tabMoving: !!ge
            })), Te(hk, {
              position: "right",
              extra: _,
              prefixCls: u
            }))
          }
          var dk = Ft(pk);

          function fk(e) {
            var t = e.id,
              n = e.activeKey,
              r = e.animated,
              i = e.tabPosition,
              o = e.rtl,
              a = e.destroyInactiveTabPane,
              s = wt(ok),
              l = s.prefixCls,
              c = s.tabs,
              u = r.tabPane,
              h = c.findIndex((function(e) {
                return e.key === n
              }));
            return Te("div", {
              className: Rl("".concat(l, "-content-holder"))
            }, Te("div", {
              className: Rl("".concat(l, "-content"), "".concat(l, "-content-").concat(i), Dh({}, "".concat(l, "-content-animated"), u)),
              style: h && u ? Dh({}, o ? "marginRight" : "marginLeft", "-".concat(h, "00%")) : null
            }, c.map((function(e) {
              return yn(e.node, {
                key: e.key,
                prefixCls: l,
                tabKey: e.key,
                id: t,
                animated: u,
                active: e.key === n,
                destroyInactiveTabPane: a
              })
            }))))
          }

          function gk(e) {
            var t = e.prefixCls,
              n = e.forceRender,
              r = e.className,
              i = e.style,
              o = e.id,
              a = e.active,
              s = e.animated,
              l = e.destroyInactiveTabPane,
              c = e.tabKey,
              u = e.children,
              h = Mp(dt(n), 2),
              p = h[0],
              d = h[1];
            gt((function() {
              a ? d(!0) : l && d(!1)
            }), [a, l]);
            var f = {};
            return a || (s ? (f.visibility = "hidden", f.height = 0, f.overflowY = "hidden") : f.display = "none"), Te("div", {
              id: o && "".concat(o, "-panel-").concat(c),
              role: "tabpanel",
              tabIndex: a ? 0 : -1,
              "aria-labelledby": o && "".concat(o, "-tab-").concat(c),
              "aria-hidden": !a,
              style: Hh(Hh({}, f), i),
              className: Rl("".concat(t, "-tabpane"), a && "".concat(t, "-tabpane-active"), r)
            }, (a || p || n) && u)
          }
          var mk = ["id", "prefixCls", "className", "children", "direction", "activeKey", "defaultActiveKey", "editable", "animated", "tabPosition", "tabBarGutter", "tabBarStyle", "tabBarExtraContent", "locale", "moreIcon", "moreTransitionName",
              "destroyInactiveTabPane", "renderTabBar", "onChange", "onTabClick", "onTabScroll"
            ],
            vk = 0;

          function _k(e, t) {
            var n, r, i = e.id,
              o = e.prefixCls,
              a = void 0 === o ? "rc-tabs" : o,
              s = e.className,
              l = e.children,
              c = e.direction,
              u = e.activeKey,
              h = e.defaultActiveKey,
              p = e.editable,
              d = e.animated,
              f = void 0 === d ? {
                inkBar: !0,
                tabPane: !1
              } : d,
              g = e.tabPosition,
              m = void 0 === g ? "top" : g,
              v = e.tabBarGutter,
              _ = e.tabBarStyle,
              b = e.tabBarExtraContent,
              y = e.locale,
              w = e.moreIcon,
              x = e.moreTransitionName,
              k = e.destroyInactiveTabPane,
              C = e.renderTabBar,
              S = e.onChange,
              E = e.onTabClick,
              T = e.onTabScroll,
              O = Ih(e, mk),
              A = function(e) {
                return hb(e).map((function(e) {
                  return bn(e) ? Hh(Hh({
                    key: void 0 !== e.key ? String(e.key) : void 0
                  }, e.props), {}, {
                    node: e
                  }) : null
                })).filter((function(e) {
                  return e
                }))
              }(l),
              P = "rtl" === c;
            r = !1 === f ? {
              inkBar: !1,
              tabPane: !1
            } : !0 === f ? {
              inkBar: !0,
              tabPane: !0
            } : Hh({
              inkBar: !0,
              tabPane: !1
            }, "object" === kh(f) ? f : {});
            var M = Mp(dt(!1), 2),
              D = M[0],
              I = M[1];
            gt((function() {
              I(pb())
            }), []);
            var N = Mp(gb((function() {
                var e;
                return null === (e = A[0]) || void 0 === e ? void 0 : e.key
              }), {
                value: u,
                defaultValue: h
              }), 2),
              R = N[0],
              j = N[1],
              L = Mp(dt((function() {
                return A.findIndex((function(e) {
                  return e.key === R
                }))
              })), 2),
              F = L[0],
              B = L[1];
            gt((function() {
              var e, t = A.findIndex((function(e) {
                return e.key === R
              })); - 1 === t && (t = Math.max(0, Math.min(F, A.length - 1)), j(null === (e = A[t]) || void 0 === e ? void 0 : e.key));
              B(t)
            }), [A.map((function(e) {
              return e.key
            })).join("_"), R, F]);
            var z = Mp(gb(null, {
                value: i
              }), 2),
              H = z[0],
              U = z[1],
              W = m;
            D && !["left", "right"].includes(m) && (W = "top"), gt((function() {
              i || (U("rc-tabs-".concat(vk)), vk += 1)
            }), []);
            var V, X = {
                id: H,
                activeKey: R,
                animated: r,
                tabPosition: W,
                rtl: P,
                mobile: D
              },
              G = Hh(Hh({}, X), {}, {
                editable: p,
                locale: y,
                moreIcon: w,
                moreTransitionName: x,
                tabBarGutter: v,
                onTabClick: function(e, t) {
                  null == E || E(e, t);
                  var n = e !== R;
                  j(e), n && (null == S || S(e))
                },
                onTabScroll: T,
                extra: b,
                style: _,
                panes: l
              });
            return V = C ? C(G, dk) : Te(dk, G), Te(ok.Provider, {
              value: {
                tabs: A,
                prefixCls: a
              }
            }, Te("div", wh({
              ref: t,
              id: i,
              className: Rl(a, "".concat(a, "-").concat(W), (n = {}, Dh(n, "".concat(a, "-mobile"), D), Dh(n, "".concat(a, "-editable"), p), Dh(n, "".concat(a, "-rtl"), P), n), s)
            }, O), V, Te(fk, wh({
              destroyInactiveTabPane: k
            }, X, {
              animated: r
            }))))
          }
          var bk = Ft(_k);
          bk.TabPane = gk;
          var yk = bk,
            wk = "DesignOperator-module_tabs__kDJ51",
            xk = "DesignOperator-module_app_parakeet_operator__lL4U1",
            kk = "DesignOperator-module_tab_panel__cumuu";

          function Ck(e) {
            return !(!e.addonBefore && !e.addonAfter)
          }

          function Sk(e) {
            return !!(e.prefix || e.suffix || e.allowClear)
          }

          function Ek(e, t, n, r) {
            if (n) {
              var i = t;
              if ("click" === t.type) {
                var o = e.cloneNode(!0);
                return i = Object.create(t, {
                  target: {
                    value: o
                  },
                  currentTarget: {
                    value: o
                  }
                }), o.value = "", void n(i)
              }
              if (void 0 !== r) return i = Object.create(t, {
                target: {
                  value: e
                },
                currentTarget: {
                  value: e
                }
              }), e.value = r, void n(i);
              n(i)
            }
          }

          function Tk(e) {
            return null == e ? "" : String(e)
          }
          c(
          ".DesignOperator-module_parakeet_comp_tab__Ekj1e{display:flex;font-weight:600;margin-bottom:16px}.DesignOperator-module_tabs__kDJ51{border:none!important;border-radius:0 0 8px 8px}.DesignOperator-module_app_parakeet_operator__lL4U1{box-sizing:border-box}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-nav-list{background-color:hsla(0,0%,90%,.4);display:flex;padding:5px;width:100%}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab{background:none;border-radius:4px;display:flex;flex:1;height:30px;justify-content:center}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-active{background-color:#fff;color:#333}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-active .rc-tabs-tab-btn{color:#333}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-btn{align-items:center;color:rgba(51,51,51,.6);display:flex;font-size:16px;font-weight:500!important}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-ink-bar{display:none}.DesignOperator-module_tab_item_active__8Mzpg{border:none;color:#333;height:34px;position:relative}.DesignOperator-module_tab_panel__cumuu{background-color:#fdfdfd}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-disabled{flex:unset;margin:0 18px}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:first-child{margin-right:22px}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:nth-child(5){margin-left:22px}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab-disabled:hover{background-color:#fff}@media screen and (max-width:959px){.DesignOperator-module_tab_panel__cumuu{align-items:center;display:flex;height:auto;min-height:108px}.DesignOperator-module_tab_panel__cumuu>div{width:100%}.DesignOperator-module_app_parakeet_operator__lL4U1 .icon-custom{scale:.8}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-tab:first-of-type{flex:unset;margin:0 8px 0 3px}.DesignOperator-module_app_parakeet_operator__lL4U1 .rc-tabs-nav-list div:nth-last-child(2){flex:unset;margin:0 3px 0 8px}}");
          var Ok = function(e) {
              var t, n = e.inputElement,
                r = e.prefixCls,
                i = e.prefix,
                o = e.suffix,
                a = e.addonBefore,
                s = e.addonAfter,
                l = e.className,
                c = e.style,
                u = e.affixWrapperClassName,
                h = e.groupClassName,
                p = e.wrapperClassName,
                d = e.disabled,
                f = e.readOnly,
                g = e.focused,
                m = e.triggerFocus,
                v = e.allowClear,
                _ = e.value,
                b = e.handleReset,
                y = e.hidden,
                w = e.inputStyle,
                x = e.classes,
                k = vt(null),
                C = yn(n, {
                  value: _,
                  hidden: y,
                  style: Hh(Hh({}, null === (t = n.props) || void 0 === t ? void 0 : t.style), w)
                });
              if (Sk(e)) {
                var S, E = "".concat(r, "-affix-wrapper"),
                  T = Rl(E, (Dh(S = {}, "".concat(E, "-disabled"), d), Dh(S, "".concat(E, "-focused"), g), Dh(S, "".concat(E, "-readonly"), f), Dh(S, "".concat(E, "-input-with-clear-btn"), o && v && _), S), !Ck(e) && l, u, null == x ? void 0 : x
                    .affixWrapper),
                  O = (o || v) && Nn.createElement("span", {
                    className: "".concat(r, "-suffix")
                  }, function() {
                    var e;
                    if (!v) return null;
                    var t = !d && !f && _,
                      n = "".concat(r, "-clear-icon"),
                      i = "object" === kh(v) && null != v && v.clearIcon ? v.clearIcon : "✖";
                    return Nn.createElement("span", {
                      onClick: b,
                      onMouseDown: function(e) {
                        return e.preventDefault()
                      },
                      className: Rl(n, (e = {}, Dh(e, "".concat(n, "-hidden"), !t), Dh(e, "".concat(n, "-has-suffix"), !!o), e)),
                      role: "button",
                      tabIndex: -1
                    }, i)
                  }(), o);
                C = Nn.createElement("span", {
                  className: T,
                  style: c,
                  hidden: !Ck(e) && y,
                  onClick: function(e) {
                    var t;
                    null !== (t = k.current) && void 0 !== t && t.contains(e.target) && (null == m || m())
                  },
                  ref: k
                }, i && Nn.createElement("span", {
                  className: "".concat(r, "-prefix")
                }, i), yn(n, {
                  style: null != w ? w : null,
                  value: _,
                  hidden: null
                }), O)
              }
              if (Ck(e)) {
                var A = "".concat(r, "-group"),
                  P = "".concat(A, "-addon"),
                  M = Rl("".concat(r, "-wrapper"), A, p, null == x ? void 0 : x.wrapper),
                  D = Rl("".concat(r, "-group-wrapper"), l, h, null == x ? void 0 : x.group);
                return Nn.createElement("span", {
                  className: D,
                  style: c,
                  hidden: y
                }, Nn.createElement("span", {
                  className: M
                }, a && Nn.createElement("span", {
                  className: P
                }, a), yn(C, {
                  style: null != w ? w : null,
                  hidden: null
                }), s && Nn.createElement("span", {
                  className: P
                }, s)))
              }
              return C
            },
            Ak = ["autoComplete", "onChange", "onFocus", "onBlur", "onPressEnter", "onKeyDown", "prefixCls", "disabled", "htmlSize", "className", "maxLength", "suffix", "showCount", "type", "inputClassName", "classes"],
            Pk = Ft((function(e, t) {
              var n = e.autoComplete,
                r = e.onChange,
                i = e.onFocus,
                o = e.onBlur,
                a = e.onPressEnter,
                s = e.onKeyDown,
                l = e.prefixCls,
                c = void 0 === l ? "rc-input" : l,
                u = e.disabled,
                h = e.htmlSize,
                p = e.className,
                d = e.maxLength,
                f = e.suffix,
                g = e.showCount,
                m = e.type,
                v = void 0 === m ? "text" : m,
                _ = e.inputClassName,
                b = e.classes,
                y = Ih(e, Ak),
                w = Mp(gb(e.defaultValue, {
                  value: e.value
                }), 2),
                x = w[0],
                k = w[1],
                C = Mp(dt(!1), 2),
                S = C[0],
                E = C[1],
                T = vt(null),
                O = function(e) {
                  T.current && function(e, t) {
                    if (e) {
                      e.focus(t);
                      var n = (t || {}).cursor;
                      if (n) {
                        var r = e.value.length;
                        switch (n) {
                          case "start":
                            e.setSelectionRange(0, 0);
                            break;
                          case "end":
                            e.setSelectionRange(r, r);
                            break;
                          default:
                            e.setSelectionRange(0, r)
                        }
                      }
                    }
                  }(T.current, e)
                };
              _t(t, (function() {
                return {
                  focus: O,
                  blur: function() {
                    var e;
                    null === (e = T.current) || void 0 === e || e.blur()
                  },
                  setSelectionRange: function(e, t, n) {
                    var r;
                    null === (r = T.current) || void 0 === r || r.setSelectionRange(e, t, n)
                  },
                  select: function() {
                    var e;
                    null === (e = T.current) || void 0 === e || e.select()
                  },
                  input: T.current
                }
              })), gt((function() {
                E((function(e) {
                  return (!e || !u) && e
                }))
              }), [u]);
              var A, P = function(t) {
                  void 0 === e.value && k(t.target.value), T.current && Ek(T.current, t, r)
                },
                M = function(e) {
                  a && "Enter" === e.key && a(e), null == s || s(e)
                },
                D = function(e) {
                  E(!0), null == i || i(e)
                },
                I = function(e) {
                  E(!1), null == o || o(e)
                };
              return Nn.createElement(Ok, wh({}, y, {
                prefixCls: c,
                className: p,
                inputElement: (A = Kb(e, ["prefixCls", "onPressEnter", "addonBefore", "addonAfter", "prefix", "suffix", "allowClear", "defaultValue", "showCount", "affixWrapperClassName", "groupClassName", "inputClassName", "classes",
                  "wrapperClassName", "htmlSize"
                ]), Nn.createElement("input", wh({
                  autoComplete: n
                }, A, {
                  onChange: P,
                  onFocus: D,
                  onBlur: I,
                  onKeyDown: M,
                  className: Rl(c, Dh({}, "".concat(c, "-disabled"), u), _, null == b ? void 0 : b.input, !Ck(e) && !Sk(e) && p),
                  ref: T,
                  size: h,
                  type: v
                }))),
                handleReset: function(e) {
                  k(""), O(), T.current && Ek(T.current, e, r)
                },
                value: Tk(x),
                focused: S,
                triggerFocus: O,
                suffix: function() {
                  var e = Number(d) > 0;
                  if (f || g) {
                    var t = Tk(x),
                      n = Bh(t).length,
                      r = "object" === kh(g) ? g.formatter({
                        value: t,
                        count: n,
                        maxLength: d
                      }) : "".concat(n).concat(e ? " / ".concat(d) : "");
                    return Nn.createElement(Nn.Fragment, null, !!g && Nn.createElement("span", {
                      className: Rl("".concat(c, "-show-count-suffix"), Dh({}, "".concat(c, "-show-count-has-suffix"), !!f))
                    }, r), f)
                  }
                  return null
                }(),
                disabled: u,
                classes: b
              }))
            })),
            Mk = Pk,
            Dk = "SizeOperator-module_input__lSSD5",
            Ik = "SizeOperator-module_suffix__kFdZc",
            Nk = "SizeOperator-module_input_controller__pl-h0",
            Rk = "SizeOperator-module_label__4U5QN",
            jk = "SizeOperator-module_tab_content__SYACz",
            Lk = "SizeOperator-module_tip__-z7-F",
            Fk = "SizeOperator-module_tab_content_item__yRWHu";
          c(
          '.SizeOperator-module_input__lSSD5{background:#fff;border:1px solid rgba(51,51,51,.12);border-radius:4px;display:flex;font-size:14px;height:33px;margin-left:12px;outline:none!important;padding:6px 24px 6px 12px}.SizeOperator-module_suffix__kFdZc{position:relative}.SizeOperator-module_suffix__kFdZc:after{color:rgba(51,51,51,.4);content:"px";display:block;font-size:16px;font-weight:400;line-height:16px;position:absolute;right:6px;top:6px}.SizeOperator-module_input_controller__pl-h0{width:88px}.SizeOperator-module_label__4U5QN{color:#333;font-size:15px;font-weight:400;line-height:130%;width:50px}.SizeOperator-module_tab_content__SYACz{padding:20px 24px}.SizeOperator-module_tip__-z7-F{color:rgba(51,51,51,.5);font-size:15px;font-weight:400;line-height:130%;margin-left:16px;text-align:center}.SizeOperator-module_tab_content_item__yRWHu{margin-top:12px}@media screen and (max-width:959px){.SizeOperator-module_tip__-z7-F{font-size:14px}.SizeOperator-module_tab_content__SYACz{padding:0 16px}.SizeOperator-module_input__lSSD5{margin-left:8px}.SizeOperator-module_tip__-z7-F{margin-left:12px}.SizeOperator-module_label__4U5QN{font-size:14px}.SizeOperator-module_suffix__kFdZc:after{top:7px}}');
          var Bk = e => {
              var {
                onChange: t,
                defaultData: n
              } = e, [r, i] = dt({
                width: "",
                height: ""
              }), {
                formatMessage: o
              } = vo();
              gt((() => {
                i(n)
              }), [n]);
              var a = (e, t) => {
                  i(h(h({}, r), {}, {
                    [e]: t.target.value
                  }))
                },
                s = e => {
                  var n = Math.max(Math.min(r[e], O), T),
                    o = h(h({}, r), {}, {
                      [e]: n
                    });
                  i(o), t(o)
                };
              return zl("div", {
                className: jk,
                children: [zl("div", {
                  className: Vd,
                  children: [zl("span", {
                    className: Rk,
                    children: o({
                      id: "width"
                    })
                  }), zl("div", {
                    className: Ik,
                    children: zl(Mk, {
                      value: null == r ? void 0 : r.width,
                      className: Rl([
                        [Dk],
                        [Nk]
                      ]),
                      maxLength: 4,
                      onChange: e => a("width", e),
                      onBlur: () => s("width")
                    })
                  }), zl("span", {
                    className: Lk,
                    children: [o({
                      id: "size_range"
                    }), ": ", T, "-", O, "px"]
                  })]
                }), zl("div", {
                  className: Rl([
                    [Vd],
                    [Fk]
                  ]),
                  children: [zl("span", {
                    className: Rk,
                    children: o({
                      id: "height"
                    })
                  }), zl("div", {
                    className: Ik,
                    children: zl(Mk, {
                      value: null == r ? void 0 : r.height,
                      className: Rl([
                        [Dk],
                        [Nk]
                      ]),
                      maxLength: 4,
                      onChange: e => a("height", e),
                      onBlur: () => s("height")
                    })
                  }), zl("span", {
                    className: Lk,
                    children: [o({
                      id: "size_range"
                    }), ": ", T, "-", O, "px"]
                  })]
                })]
              })
            },
            zk = Qe({
              min: 0,
              max: 0,
              direction: "ltr",
              step: 1,
              includedStart: 0,
              includedEnd: 0,
              tabIndex: 0,
              keyboard: !0
            });

          function Hk(e, t, n) {
            return (e - t) / (n - t)
          }

          function Uk(e, t, n, r) {
            var i = Hk(t, n, r),
              o = {};
            switch (e) {
              case "rtl":
                o.right = "".concat(100 * i, "%"), o.transform = "translateX(50%)";
                break;
              case "btt":
                o.bottom = "".concat(100 * i, "%"), o.transform = "translateY(50%)";
                break;
              case "ttb":
                o.top = "".concat(100 * i, "%"), o.transform = "translateY(-50%)";
                break;
              default:
                o.left = "".concat(100 * i, "%"), o.transform = "translateX(-50%)"
            }
            return o
          }

          function Wk(e, t) {
            return Array.isArray(e) ? e[t] : e
          }
          var Vk = ["prefixCls", "value", "valueIndex", "onStartMove", "style", "render", "dragging", "onOffsetChange"],
            Xk = Ft((function(e, t) {
              var n, r, i = e.prefixCls,
                o = e.value,
                a = e.valueIndex,
                s = e.onStartMove,
                l = e.style,
                c = e.render,
                u = e.dragging,
                h = e.onOffsetChange,
                p = Ih(e, Vk),
                d = wt(zk),
                f = d.min,
                g = d.max,
                m = d.direction,
                v = d.disabled,
                _ = d.keyboard,
                b = d.range,
                y = d.tabIndex,
                w = d.ariaLabelForHandle,
                x = d.ariaLabelledByForHandle,
                k = d.ariaValueTextFormatterForHandle,
                C = "".concat(i, "-handle"),
                S = function(e) {
                  v || s(e, a)
                },
                E = Uk(m, o, f, g),
                T = Te("div", wh({
                  ref: t,
                  className: Rl(C, (n = {}, Dh(n, "".concat(C, "-").concat(a + 1), b), Dh(n, "".concat(C, "-dragging"), u), n)),
                  style: Hh(Hh({}, E), l),
                  onMouseDown: S,
                  onTouchStart: S,
                  onKeyDown: function(e) {
                    if (!v && _) {
                      var t = null;
                      switch (e.which || e.keyCode) {
                        case w_.LEFT:
                          t = "ltr" === m || "btt" === m ? -1 : 1;
                          break;
                        case w_.RIGHT:
                          t = "ltr" === m || "btt" === m ? 1 : -1;
                          break;
                        case w_.UP:
                          t = "ttb" !== m ? 1 : -1;
                          break;
                        case w_.DOWN:
                          t = "ttb" !== m ? -1 : 1;
                          break;
                        case w_.HOME:
                          t = "min";
                          break;
                        case w_.END:
                          t = "max";
                          break;
                        case w_.PAGE_UP:
                          t = 2;
                          break;
                        case w_.PAGE_DOWN:
                          t = -2
                      }
                      null !== t && (e.preventDefault(), h(t, a))
                    }
                  },
                  tabIndex: v ? null : Wk(y, a),
                  role: "slider",
                  "aria-valuemin": f,
                  "aria-valuemax": g,
                  "aria-valuenow": o,
                  "aria-disabled": v,
                  "aria-label": Wk(w, a),
                  "aria-labelledby": Wk(x, a),
                  "aria-valuetext": null === (r = Wk(k, a)) || void 0 === r ? void 0 : r(o)
                }, p));
              return c && (T = c(T, {
                index: a,
                prefixCls: i,
                value: o,
                dragging: u
              })), T
            })),
            Gk = Xk,
            Yk = ["prefixCls", "style", "onStartMove", "onOffsetChange", "values", "handleRender", "draggingIndex"],
            qk = Ft((function(e, t) {
              var n = e.prefixCls,
                r = e.style,
                i = e.onStartMove,
                o = e.onOffsetChange,
                a = e.values,
                s = e.handleRender,
                l = e.draggingIndex,
                c = Ih(e, Yk),
                u = vt({});
              return _t(t, (function() {
                return {
                  focus: function(e) {
                    var t;
                    null === (t = u.current[e]) || void 0 === t || t.focus()
                  }
                }
              })), Te(Pe, null, a.map((function(e, t) {
                return Te(Gk, wh({
                  ref: function(e) {
                    e ? u.current[t] = e : delete u.current[t]
                  },
                  dragging: l === t,
                  prefixCls: n,
                  style: Wk(r, t),
                  key: t,
                  value: e,
                  valueIndex: t,
                  onStartMove: i,
                  onOffsetChange: o,
                  render: s
                }, c))
              })))
            })),
            Kk = qk;

          function $k(e) {
            var t = "touches" in e ? e.touches[0] : e;
            return {
              pageX: t.pageX,
              pageY: t.pageY
            }
          }

          function Zk(e) {
            var t = e.prefixCls,
              n = e.style,
              r = e.start,
              i = e.end,
              o = e.index,
              a = e.onStartMove,
              s = wt(zk),
              l = s.direction,
              c = s.min,
              u = s.max,
              h = s.disabled,
              p = s.range,
              d = "".concat(t, "-track"),
              f = Hk(r, c, u),
              g = Hk(i, c, u),
              m = function(e) {
                !h && a && a(e, -1)
              },
              v = {};
            switch (l) {
              case "rtl":
                v.right = "".concat(100 * f, "%"), v.width = "".concat(100 * g - 100 * f, "%");
                break;
              case "btt":
                v.bottom = "".concat(100 * f, "%"), v.height = "".concat(100 * g - 100 * f, "%");
                break;
              case "ttb":
                v.top = "".concat(100 * f, "%"), v.height = "".concat(100 * g - 100 * f, "%");
                break;
              default:
                v.left = "".concat(100 * f, "%"), v.width = "".concat(100 * g - 100 * f, "%")
            }
            return Te("div", {
              className: Rl(d, p && "".concat(d, "-").concat(o + 1)),
              style: Hh(Hh({}, v), n),
              onMouseDown: m,
              onTouchStart: m
            })
          }

          function Jk(e) {
            var t = e.prefixCls,
              n = e.style,
              r = e.values,
              i = e.startPoint,
              o = e.onStartMove,
              a = wt(zk),
              s = a.included,
              l = a.range,
              c = a.min,
              u = bt((function() {
                if (!l) {
                  if (0 === r.length) return [];
                  var e = null != i ? i : c,
                    t = r[0];
                  return [{
                    start: Math.min(e, t),
                    end: Math.max(e, t)
                  }]
                }
                for (var n = [], o = 0; o < r.length - 1; o += 1) n.push({
                  start: r[o],
                  end: r[o + 1]
                });
                return n
              }), [r, l, i, c]);
            return s ? u.map((function(e, r) {
              var i = e.start,
                a = e.end;
              return Te(Zk, {
                index: r,
                prefixCls: t,
                style: Wk(n, r),
                start: i,
                end: a,
                key: r,
                onStartMove: o
              })
            })) : null
          }

          function Qk(e) {
            var t = e.prefixCls,
              n = e.style,
              r = e.children,
              i = e.value,
              o = e.onClick,
              a = wt(zk),
              s = a.min,
              l = a.max,
              c = a.direction,
              u = a.includedStart,
              h = a.includedEnd,
              p = a.included,
              d = "".concat(t, "-text"),
              f = Uk(c, i, s, l);
            return Te("span", {
              className: Rl(d, Dh({}, "".concat(d, "-active"), p && u <= i && i <= h)),
              style: Hh(Hh({}, f), n),
              onMouseDown: function(e) {
                e.stopPropagation()
              },
              onClick: function() {
                o(i)
              }
            }, r)
          }

          function eC(e) {
            var t = e.prefixCls,
              n = e.marks,
              r = e.onClick,
              i = "".concat(t, "-mark");
            return n.length ? Te("div", {
              className: i
            }, n.map((function(e) {
              var t = e.value,
                n = e.style,
                o = e.label;
              return Te(Qk, {
                key: t,
                prefixCls: i,
                style: n,
                value: t,
                onClick: r
              }, o)
            }))) : null
          }

          function tC(e) {
            var t = e.prefixCls,
              n = e.value,
              r = e.style,
              i = e.activeStyle,
              o = wt(zk),
              a = o.min,
              s = o.max,
              l = o.direction,
              c = o.included,
              u = o.includedStart,
              h = o.includedEnd,
              p = "".concat(t, "-dot"),
              d = c && u <= n && n <= h,
              f = Hh(Hh({}, Uk(l, n, a, s)), "function" == typeof r ? r(n) : r);
            return d && (f = Hh(Hh({}, f), "function" == typeof i ? i(n) : i)), Te("span", {
              className: Rl(p, Dh({}, "".concat(p, "-active"), d)),
              style: f
            })
          }

          function nC(e) {
            var t = e.prefixCls,
              n = e.marks,
              r = e.dots,
              i = e.style,
              o = e.activeStyle,
              a = wt(zk),
              s = a.min,
              l = a.max,
              c = a.step,
              u = bt((function() {
                var e = new Set;
                if (n.forEach((function(t) {
                    e.add(t.value)
                  })), r && null !== c)
                  for (var t = s; t <= l;) e.add(t), t += c;
                return Array.from(e)
              }), [s, l, c, r, n]);
            return Te("div", {
              className: "".concat(t, "-step")
            }, u.map((function(e) {
              return Te(tC, {
                prefixCls: t,
                key: e,
                value: e,
                style: i,
                activeStyle: o
              })
            })))
          }
          var rC = Ft((function(e, t) {
              var n, r = e.prefixCls,
                i = void 0 === r ? "rc-slider" : r,
                o = e.className,
                a = e.style,
                s = e.disabled,
                l = void 0 !== s && s,
                c = e.keyboard,
                u = void 0 === c || c,
                h = e.autoFocus,
                p = e.onFocus,
                d = e.onBlur,
                f = e.min,
                g = void 0 === f ? 0 : f,
                m = e.max,
                v = void 0 === m ? 100 : m,
                _ = e.step,
                b = void 0 === _ ? 1 : _,
                y = e.value,
                w = e.defaultValue,
                x = e.range,
                k = e.count,
                C = e.onChange,
                S = e.onBeforeChange,
                E = e.onAfterChange,
                T = e.allowCross,
                O = void 0 === T || T,
                A = e.pushable,
                P = void 0 !== A && A,
                M = e.draggableTrack,
                D = e.reverse,
                I = e.vertical,
                N = e.included,
                R = void 0 === N || N,
                j = e.startPoint,
                L = e.trackStyle,
                F = e.handleStyle,
                B = e.railStyle,
                z = e.dotStyle,
                H = e.activeDotStyle,
                U = e.marks,
                W = e.dots,
                V = e.handleRender,
                X = e.tabIndex,
                G = void 0 === X ? 0 : X,
                Y = e.ariaLabelForHandle,
                q = e.ariaLabelledByForHandle,
                K = e.ariaValueTextFormatterForHandle,
                $ = vt(),
                Z = vt(),
                J = bt((function() {
                  return I ? D ? "ttb" : "btt" : D ? "rtl" : "ltr"
                }), [D, I]),
                Q = bt((function() {
                  return isFinite(g) ? g : 0
                }), [g]),
                ee = bt((function() {
                  return isFinite(v) ? v : 100
                }), [v]),
                te = bt((function() {
                  return null !== b && b <= 0 ? 1 : b
                }), [b]),
                ne = bt((function() {
                  return !0 === P ? te : P >= 0 && P
                }), [P, te]),
                re = bt((function() {
                  return Object.keys(U || {}).map((function(e) {
                    var t = U[e],
                      n = {
                        value: Number(e)
                      };
                    return t && "object" === kh(t) && !bn(t) && ("label" in t || "style" in t) ? (n.style = t.style, n.label = t.label) : n.label = t, n
                  })).filter((function(e) {
                    var t = e.label;
                    return t || "number" == typeof t
                  })).sort((function(e, t) {
                    return e.value - t.value
                  }))
                }), [U]),
                ie = function(e, t, n, r, i, o) {
                  var a = yt((function(n) {
                      var r = isFinite(n) ? n : e;
                      return r = Math.min(t, n), Math.max(e, r)
                    }), [e, t]),
                    s = yt((function(r) {
                      if (null !== n) {
                        var i = e + Math.round((a(r) - e) / n) * n,
                          o = function(e) {
                            return (String(e).split(".")[1] || "").length
                          },
                          s = Math.max(o(n), o(t), o(e)),
                          l = Number(i.toFixed(s));
                        return e <= l && l <= t ? l : null
                      }
                      return null
                    }), [n, e, t, a]),
                    l = yt((function(i) {
                      var o = a(i),
                        l = r.map((function(e) {
                          return e.value
                        }));
                      null !== n && l.push(s(i)), l.push(e, t);
                      var c = l[0],
                        u = t - e;
                      return l.forEach((function(e) {
                        var t = Math.abs(o - e);
                        t <= u && (c = e, u = t)
                      })), c
                    }), [e, t, r, n, a, s]),
                    c = function i(o, a, l) {
                      var c = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "unit";
                      if ("number" == typeof a) {
                        var u, h = o[l],
                          p = h + a,
                          d = [];
                        r.forEach((function(e) {
                          d.push(e.value)
                        })), d.push(e, t), d.push(s(h));
                        var f = a > 0 ? 1 : -1;
                        "unit" === c ? d.push(s(h + f * n)) : d.push(s(p)), d = d.filter((function(e) {
                          return null !== e
                        })).filter((function(e) {
                          return a < 0 ? e <= h : e >= h
                        })), "unit" === c && (d = d.filter((function(e) {
                          return e !== h
                        })));
                        var g = "unit" === c ? h : p;
                        u = d[0];
                        var m = Math.abs(u - g);
                        if (d.forEach((function(e) {
                            var t = Math.abs(e - g);
                            t < m && (u = e, m = t)
                          })), void 0 === u) return a < 0 ? e : t;
                        if ("dist" === c) return u;
                        if (Math.abs(a) > 1) {
                          var v = Bh(o);
                          return v[l] = u, i(v, a - f, l, c)
                        }
                        return u
                      }
                      return "min" === a ? e : "max" === a ? t : void 0
                    },
                    u = function(e, t, n) {
                      var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "unit",
                        i = e[n],
                        o = c(e, t, n, r);
                      return {
                        value: o,
                        changed: o !== i
                      }
                    },
                    h = function(e) {
                      return null === o && 0 === e || "number" == typeof o && e < o
                    };
                  return [l, function(e, t, n) {
                    var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "unit",
                      a = e.map(l),
                      s = a[n],
                      p = c(a, t, n, r);
                    if (a[n] = p, !1 === i) {
                      var d = o || 0;
                      n > 0 && a[n - 1] !== s && (a[n] = Math.max(a[n], a[n - 1] + d)), n < a.length - 1 && a[n + 1] !== s && (a[n] = Math.min(a[n], a[n + 1] - d))
                    } else if ("number" == typeof o || null === o) {
                      for (var f = n + 1; f < a.length; f += 1)
                        for (var g = !0; h(a[f] - a[f - 1]) && g;) {
                          var m = u(a, 1, f);
                          a[f] = m.value, g = m.changed
                        }
                      for (var v = n; v > 0; v -= 1)
                        for (var _ = !0; h(a[v] - a[v - 1]) && _;) {
                          var b = u(a, -1, v - 1);
                          a[v - 1] = b.value, _ = b.changed
                        }
                      for (var y = a.length - 1; y > 0; y -= 1)
                        for (var w = !0; h(a[y] - a[y - 1]) && w;) {
                          var x = u(a, -1, y - 1);
                          a[y - 1] = x.value, w = x.changed
                        }
                      for (var k = 0; k < a.length - 1; k += 1)
                        for (var C = !0; h(a[k + 1] - a[k]) && C;) {
                          var S = u(a, 1, k + 1);
                          a[k + 1] = S.value, C = S.changed
                        }
                    }
                    return {
                      value: a[n],
                      values: a
                    }
                  }]
                }(Q, ee, te, re, O, ne),
                oe = Mp(ie, 2),
                ae = oe[0],
                se = oe[1],
                le = Mp(gb(w, {
                  value: y
                }), 2),
                ce = le[0],
                ue = le[1],
                he = bt((function() {
                  var e = null == ce ? [] : Array.isArray(ce) ? ce : [ce],
                    t = Mp(e, 1)[0],
                    n = null === ce ? [] : [void 0 === t ? Q : t];
                  if (x) {
                    if (n = Bh(e), k || void 0 === ce) {
                      var r = k >= 0 ? k + 1 : 2;
                      for (n = n.slice(0, r); n.length < r;) {
                        var i;
                        n.push(null !== (i = n[n.length - 1]) && void 0 !== i ? i : Q)
                      }
                    }
                    n.sort((function(e, t) {
                      return e - t
                    }))
                  }
                  return n.forEach((function(e, t) {
                    n[t] = ae(e)
                  })), n
                }), [ce, x, Q, k, ae]),
                pe = vt(he);
              pe.current = he;
              var de = function(e) {
                  return x ? e : e[0]
                },
                fe = function(e) {
                  var t = Bh(e).sort((function(e, t) {
                    return e - t
                  }));
                  C && !Bw(t, pe.current, !0) && C(de(t)), ue(t)
                },
                ge = function(e) {
                  if (!l) {
                    var t = 0,
                      n = ee - Q;
                    he.forEach((function(r, i) {
                      var o = Math.abs(e - r);
                      o <= n && (n = o, t = i)
                    }));
                    var r = Bh(he);
                    r[t] = e, x && !he.length && void 0 === k && r.push(e), null == S || S(de(r)), fe(r), null == E || E(de(r))
                  }
                },
                me = Mp(dt(null), 2),
                ve = me[0],
                _e = me[1];
              gt((function() {
                if (null !== ve) {
                  var e = he.indexOf(ve);
                  e >= 0 && $.current.focus(e)
                }
                _e(null)
              }), [ve]);
              var be = bt((function() {
                  return (!M || null !== te) && M
                }), [M, te]),
                ye = function(e, t, n, r, i, o, a, s, l) {
                  var c = Mp(dt(null), 2),
                    u = c[0],
                    h = c[1],
                    p = Mp(dt(-1), 2),
                    d = p[0],
                    f = p[1],
                    g = Mp(dt(n), 2),
                    m = g[0],
                    v = g[1],
                    _ = Mp(dt(n), 2),
                    b = _[0],
                    y = _[1],
                    w = vt(null),
                    x = vt(null);
                  gt((function() {
                    -1 === d && v(n)
                  }), [n, d]), gt((function() {
                    return function() {
                      document.removeEventListener("mousemove", w.current), document.removeEventListener("mouseup", x.current), document.removeEventListener("touchmove", w.current), document.removeEventListener("touchend", x.current)
                    }
                  }), []);
                  var k = function(e, t) {
                      m.some((function(t, n) {
                        return t !== e[n]
                      })) && (void 0 !== t && h(t), v(e), a(e))
                    },
                    C = function(e, t) {
                      if (-1 === e) {
                        var n = b[0],
                          a = b[b.length - 1],
                          s = r - n,
                          c = i - a,
                          u = t * (i - r);
                        u = Math.max(u, s), u = Math.min(u, c);
                        var h = o(n + u);
                        u = h - n;
                        var p = b.map((function(e) {
                          return e + u
                        }));
                        k(p)
                      } else {
                        var d = (i - r) * t,
                          f = Bh(m);
                        f[e] = b[e];
                        var g = l(f, d, e, "dist");
                        k(g.values, g.value)
                      }
                    },
                    S = vt(C);
                  S.current = C;
                  var E = bt((function() {
                    var e = Bh(n).sort((function(e, t) {
                        return e - t
                      })),
                      t = Bh(m).sort((function(e, t) {
                        return e - t
                      }));
                    return e.every((function(e, n) {
                      return e === t[n]
                    })) ? m : n
                  }), [n, m]);
                  return [d, u, E, function(r, i) {
                    r.stopPropagation();
                    var o = n[i];
                    f(i), h(o), y(n);
                    var a = $k(r),
                      l = a.pageX,
                      c = a.pageY,
                      u = function(n) {
                        n.preventDefault();
                        var r, o = $k(n),
                          a = o.pageX,
                          s = o.pageY,
                          u = a - l,
                          h = s - c,
                          p = e.current.getBoundingClientRect(),
                          d = p.width,
                          f = p.height;
                        switch (t) {
                          case "btt":
                            r = -h / f;
                            break;
                          case "ttb":
                            r = h / f;
                            break;
                          case "rtl":
                            r = -u / d;
                            break;
                          default:
                            r = u / d
                        }
                        S.current(i, r)
                      },
                      p = function e(t) {
                        t.preventDefault(), document.removeEventListener("mouseup", e), document.removeEventListener("mousemove", u), document.removeEventListener("touchend", e), document.removeEventListener("touchmove", u), w.current =
                          null, x.current = null, f(-1), s()
                      };
                    document.addEventListener("mouseup", p), document.addEventListener("mousemove", u), document.addEventListener("touchend", p), document.addEventListener("touchmove", u), w.current = u, x.current = p
                  }]
                }(Z, J, he, Q, ee, ae, fe, (function() {
                  null == E || E(de(pe.current))
                }), se),
                we = Mp(ye, 4),
                xe = we[0],
                ke = we[1],
                Ce = we[2],
                Se = we[3],
                Ee = function(e, t) {
                  Se(e, t), null == S || S(de(pe.current))
                },
                Oe = -1 !== xe;
              gt((function() {
                if (!Oe) {
                  var e = he.lastIndexOf(ke);
                  $.current.focus(e)
                }
              }), [Oe]);
              var Ae = bt((function() {
                  return Bh(Ce).sort((function(e, t) {
                    return e - t
                  }))
                }), [Ce]),
                Pe = Mp(bt((function() {
                  return x ? [Ae[0], Ae[Ae.length - 1]] : [Q, Ae[0]]
                }), [Ae, x, Q]), 2),
                Me = Pe[0],
                De = Pe[1];
              _t(t, (function() {
                return {
                  focus: function() {
                    $.current.focus(0)
                  },
                  blur: function() {
                    var e = document.activeElement;
                    Z.current.contains(e) && (null == e || e.blur())
                  }
                }
              })), gt((function() {
                h && $.current.focus(0)
              }), []);
              var Ie = bt((function() {
                return {
                  min: Q,
                  max: ee,
                  direction: J,
                  disabled: l,
                  keyboard: u,
                  step: te,
                  included: R,
                  includedStart: Me,
                  includedEnd: De,
                  range: x,
                  tabIndex: G,
                  ariaLabelForHandle: Y,
                  ariaLabelledByForHandle: q,
                  ariaValueTextFormatterForHandle: K
                }
              }), [Q, ee, J, l, u, te, R, Me, De, x, G, Y, q, K]);
              return Te(zk.Provider, {
                value: Ie
              }, Te("div", {
                ref: Z,
                className: Rl(i, o, (n = {}, Dh(n, "".concat(i, "-disabled"), l), Dh(n, "".concat(i, "-vertical"), I), Dh(n, "".concat(i, "-horizontal"), !I), Dh(n, "".concat(i, "-with-marks"), re.length), n)),
                style: a,
                onMouseDown: function(e) {
                  e.preventDefault();
                  var t, n = Z.current.getBoundingClientRect(),
                    r = n.width,
                    i = n.height,
                    o = n.left,
                    a = n.top,
                    s = n.bottom,
                    l = n.right,
                    c = e.clientX,
                    u = e.clientY;
                  switch (J) {
                    case "btt":
                      t = (s - u) / i;
                      break;
                    case "ttb":
                      t = (u - a) / i;
                      break;
                    case "rtl":
                      t = (l - c) / r;
                      break;
                    default:
                      t = (c - o) / r
                  }
                  ge(ae(Q + t * (ee - Q)))
                }
              }, Te("div", {
                className: "".concat(i, "-rail"),
                style: B
              }), Te(Jk, {
                prefixCls: i,
                style: L,
                values: Ae,
                startPoint: j,
                onStartMove: be ? Ee : null
              }), Te(nC, {
                prefixCls: i,
                marks: re,
                dots: W,
                style: z,
                activeStyle: H
              }), Te(Kk, {
                ref: $,
                prefixCls: i,
                style: F,
                values: Ce,
                draggingIndex: xe,
                onStartMove: Ee,
                onOffsetChange: function(e, t) {
                  if (!l) {
                    var n = se(he, e, t);
                    null == S || S(de(he)), fe(n.values), null == E || E(de(n.values)), _e(n.value)
                  }
                },
                onFocus: p,
                onBlur: d,
                handleRender: V
              }), Te(eC, {
                prefixCls: i,
                marks: re,
                onClick: ge
              })))
            })),
            iC = rC,
            oC = "RotateOperator-module_operate_rotate__DbNrD",
            aC = "RotateOperator-module_slider__RyqmW";
          c(
          ".RotateOperator-module_operate_rotate__DbNrD{display:flex;height:118px;padding:32px 16px 28px}.RotateOperator-module_slider__RyqmW{margin:32px 33px 0 22px}.RotateOperator-module_slider__RyqmW .rc-slider-handle{box-shadow:0 0 0 5px #fff!important;height:20px;margin-top:-8px;opacity:1;position:relative;width:20px;z-index:10}.RotateOperator-module_slider__RyqmW .rc-slider-handle:after{background:#fff;border-radius:4px;box-shadow:0 2px 10px rgba(34,34,34,.06);color:#292929;content:attr(aria-valuenow);display:none;font-size:16px;font-weight:400;left:50%;line-height:120%;padding:4px 10px;position:absolute;top:-37px;transform:translateX(-50%)}.RotateOperator-module_slider__RyqmW .rc-slider-handle-dragging,.RotateOperator-module_slider__RyqmW .rc-slider-handle:active{box-shadow:0 0 0 5px #fff!important}.RotateOperator-module_slider__RyqmW .rc-slider-handle:active:after{display:block!important}.RotateOperator-module_slider__RyqmW .rc-slider-mark{top:-34px;z-index:5}.RotateOperator-module_slider__RyqmW .rc-slider-mark-text{color:#333;font-size:15px;font-weight:500;line-height:120%}.RotateOperator-module_slider__RyqmW .rc-slider-step{background:hsla(0,0%,90%,.8)}.RotateOperator-module_slider__RyqmW .rc-slider-dot:nth-child(3){background-color:#333!important;z-index:3}@media screen and (max-width:959px){.RotateOperator-module_slider__RyqmW .rc-slider-mark-text{font-size:14px}.RotateOperator-module_operate_rotate__DbNrD{height:108px;padding:32px 2px 20px}.RotateOperator-module_slider__RyqmW .rc-slider-mark{top:-38px;z-index:5}.RotateOperator-module_slider__RyqmW{margin:32px 22px 0}}");
          c(
          ".rc-slider{border-radius:6px;height:14px;padding:5px 0;position:relative;touch-action:none;width:100%}.rc-slider,.rc-slider *{-webkit-tap-highlight-color:rgba(0,0,0,0);box-sizing:border-box}.rc-slider-rail{background-color:#e9e9e9;width:100%}.rc-slider-rail,.rc-slider-track{border-radius:6px;height:4px;position:absolute}.rc-slider-track{background-color:#abe2fb}.rc-slider-handle{background-color:#fff;border:2px solid #96dbfa;border-radius:50%;cursor:pointer;cursor:-webkit-grab;cursor:grab;height:14px;margin-top:-5px;opacity:.8;position:absolute;touch-action:pan-x;width:14px}.rc-slider-handle-dragging.rc-slider-handle-dragging.rc-slider-handle-dragging{border-color:#57c5f7;box-shadow:0 0 0 5px #96dbfa}.rc-slider-handle:focus{box-shadow:none;outline:none}.rc-slider-handle.focus-visible{border-color:#2db7f5;box-shadow:0 0 0 3px #96dbfa}.rc-slider-handle:focus-visible{border-color:#2db7f5;box-shadow:0 0 0 3px #96dbfa}.rc-slider-handle-click-focused:focus{border-color:#96dbfa;box-shadow:unset}.rc-slider-handle:hover{border-color:#57c5f7}.rc-slider-handle:active{border-color:#57c5f7;box-shadow:0 0 5px #57c5f7;cursor:-webkit-grabbing;cursor:grabbing}.rc-slider-mark{font-size:12px;left:0;position:absolute;top:18px;width:100%}.rc-slider-mark-text{color:#999;cursor:pointer;display:inline-block;position:absolute;text-align:center;vertical-align:middle}.rc-slider-mark-text-active{color:#666}.rc-slider-step{background:transparent;height:4px;pointer-events:none;position:absolute;width:100%}.rc-slider-dot{background-color:#fff;border:2px solid #e9e9e9;border-radius:50%;bottom:-2px;cursor:pointer;height:8px;position:absolute;vertical-align:middle;width:8px}.rc-slider-dot-active{border-color:#96dbfa}.rc-slider-dot-reverse{margin-right:-4px}.rc-slider-disabled{background-color:#e9e9e9}.rc-slider-disabled .rc-slider-track{background-color:#ccc}.rc-slider-disabled .rc-slider-dot,.rc-slider-disabled .rc-slider-handle{background-color:#fff;border-color:#ccc;box-shadow:none;cursor:not-allowed}.rc-slider-disabled .rc-slider-dot,.rc-slider-disabled .rc-slider-mark-text{cursor:not-allowed!important}.rc-slider-vertical{height:100%;padding:0 5px;width:14px}.rc-slider-vertical .rc-slider-rail{height:100%;width:4px}.rc-slider-vertical .rc-slider-track{bottom:0;left:5px;width:4px}.rc-slider-vertical .rc-slider-handle{margin-left:-5px;margin-top:0;touch-action:pan-y}.rc-slider-vertical .rc-slider-mark{height:100%;left:18px;top:0}.rc-slider-vertical .rc-slider-step{height:100%;width:4px}.rc-slider-vertical .rc-slider-dot{margin-left:-2px}.rc-slider-tooltip-zoom-down-appear,.rc-slider-tooltip-zoom-down-enter{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;display:block!important}.rc-slider-tooltip-zoom-down-leave{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;display:block!important}.rc-slider-tooltip-zoom-down-appear.rc-slider-tooltip-zoom-down-appear-active,.rc-slider-tooltip-zoom-down-enter.rc-slider-tooltip-zoom-down-enter-active{animation-name:rcSliderTooltipZoomDownIn;animation-play-state:running}.rc-slider-tooltip-zoom-down-leave.rc-slider-tooltip-zoom-down-leave-active{animation-name:rcSliderTooltipZoomDownOut;animation-play-state:running}.rc-slider-tooltip-zoom-down-appear,.rc-slider-tooltip-zoom-down-enter{animation-timing-function:cubic-bezier(.23,1,.32,1);transform:scale(0)}.rc-slider-tooltip-zoom-down-leave{animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@keyframes rcSliderTooltipZoomDownIn{0%{opacity:0;transform:scale(0);transform-origin:50% 100%}to{transform:scale(1);transform-origin:50% 100%}}@keyframes rcSliderTooltipZoomDownOut{0%{transform:scale(1);transform-origin:50% 100%}to{opacity:0;transform:scale(0);transform-origin:50% 100%}}.rc-slider-tooltip{left:-9999px;position:absolute;top:-9999px;visibility:visible}.rc-slider-tooltip,.rc-slider-tooltip *{-webkit-tap-highlight-color:rgba(0,0,0,0);box-sizing:border-box}.rc-slider-tooltip-hidden{display:none}.rc-slider-tooltip-placement-top{padding:4px 0 8px}.rc-slider-tooltip-inner{background-color:#6c6c6c;border-radius:6px;box-shadow:0 0 4px #d9d9d9;color:#fff;font-size:12px;height:24px;line-height:1;min-width:24px;padding:6px 2px;text-align:center;text-decoration:none}.rc-slider-tooltip-arrow{border-color:transparent;border-style:solid;height:0;position:absolute;width:0}.rc-slider-tooltip-placement-top .rc-slider-tooltip-arrow{border-top-color:#6c6c6c;border-width:4px 4px 0;bottom:4px;left:50%;margin-left:-4px}");
          var sC, lC, cC, uC, hC, pC, dC, fC, gC, mC = {
              "-180": -180,
              "-90": -90,
              0: 0,
              90: 90,
              180: 180
            },
            vC = e => {
              var {
                onChange: t,
                defaultValue: n
              } = e, [r, i] = dt(0), o = vt(null);
              gt((() => {
                i(n)
              }), [n]);
              return zl("div", {
                className: oC,
                children: zl(iC, {
                  ref: o,
                  className: aC,
                  value: r,
                  min: -180,
                  max: 180,
                  dotStyle: e => e >= r && r <= 0 && e < 0 || e < r && r > 0 && e > 0 ? {
                    borderColor: "#000"
                  } : {
                    background: "#D4D4D4",
                    border: "none"
                  },
                  defaultValue: n,
                  handleStyle: {
                    backgroundColor: "#fff",
                    borderColor: "#333"
                  },
                  marks: mC,
                  trackStyle: {
                    background: "#333333",
                    zIndex: 2
                  },
                  startPoint: 0,
                  onChange: e => {
                    i(e), t(e)
                  }
                })
              })
            },
            _C = {
              exports: {}
            },
            bC = {},
            yC = {},
            wC = {},
            xC = [],
            kC = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,
            CC = Array.isArray;

          function SC(e, t) {
            for (var n in t) e[n] = t[n];
            return e
          }

          function EC(e) {
            var t = e.parentNode;
            t && t.removeChild(e)
          }

          function TC(e, t, n) {
            var r, i, o, a = {};
            for (o in t) "key" == o ? r = t[o] : "ref" == o ? i = t[o] : a[o] = t[o];
            if (arguments.length > 2 && (a.children = arguments.length > 3 ? sC.call(arguments, 2) : n), "function" == typeof e && null != e.defaultProps)
              for (o in e.defaultProps) void 0 === a[o] && (a[o] = e.defaultProps[o]);
            return OC(e, a, r, i, null)
          }

          function OC(e, t, n, r, i) {
            var o = {
              type: e,
              props: t,
              key: n,
              ref: r,
              __k: null,
              __: null,
              __b: 0,
              __e: null,
              __d: void 0,
              __c: null,
              __h: null,
              constructor: void 0,
              __v: null == i ? ++cC : i
            };
            return null == i && null != lC.vnode && lC.vnode(o), o
          }

          function AC(e) {
            return e.children
          }

          function PC(e, t) {
            this.props = e, this.context = t
          }

          function MC(e, t) {
            if (null == t) return e.__ ? MC(e.__, e.__.__k.indexOf(e) + 1) : null;
            for (var n; t < e.__k.length; t++)
              if (null != (n = e.__k[t]) && null != n.__e) return n.__e;
            return "function" == typeof e.type ? MC(e) : null
          }

          function DC(e) {
            var t, n;
            if (null != (e = e.__) && null != e.__c) {
              for (e.__e = e.__c.base = null, t = 0; t < e.__k.length; t++)
                if (null != (n = e.__k[t]) && null != n.__e) {
                  e.__e = e.__c.base = n.__e;
                  break
                } return DC(e)
            }
          }

          function IC(e) {
            (!e.__d && (e.__d = !0) && hC.push(e) && !NC.__r++ || pC !== lC.debounceRendering) && ((pC = lC.debounceRendering) || dC)(NC)
          }

          function NC() {
            var e, t, n, r, i, o, a, s, l;
            for (hC.sort(fC); e = hC.shift();) e.__d && (t = hC.length, r = void 0, i = void 0, o = void 0, s = (a = (n = e).__v).__e, (l = n.__P) && (r = [], i = [], (o = SC({}, a)).__v = a.__v + 1, WC(l, a, o, n.__n, void 0 !== l
              .ownerSVGElement, null != a.__h ? [s] : null, r, null == s ? MC(a) : s, a.__h, i), VC(r, a, i), a.__e != s && DC(a)), hC.length > t && hC.sort(fC));
            NC.__r = 0
          }

          function RC(e, t, n, r, i, o, a, s, l, c, u) {
            var h, p, d, f, g, m, v, _, b, y, w = 0,
              x = r && r.__k || xC,
              k = x.length,
              C = k,
              S = t.length;
            for (n.__k = [], h = 0; h < S; h++) null != (f = n.__k[h] = null == (f = t[h]) || "boolean" == typeof f || "function" == typeof f ? null : "string" == typeof f || "number" == typeof f || "bigint" == typeof f ? OC(null, f, null, null,
              f) : CC(f) ? OC(AC, {
              children: f
            }, null, null, null) : f.__b > 0 ? OC(f.type, f.props, f.key, f.ref ? f.ref : null, f.__v) : f) && (f.__ = n, f.__b = n.__b + 1, -1 === (_ = FC(f, x, v = h + w, C)) ? d = wC : (d = x[_] || wC, x[_] = void 0, C--), WC(e, f, d, i, o,
              a, s, l, c, u), g = f.__e, (p = f.ref) && d.ref != p && (d.ref && GC(d.ref, null, f), u.push(p, f.__c || g, f)), null != g && (null == m && (m = g), y = !(b = d === wC || null === d.__v) && _ === v, b ? -1 == _ && w-- : _ !==
              v && (_ === v + 1 ? (w++, y = !0) : _ > v ? C > S - v ? (w += _ - v, y = !0) : w-- : w = _ < v && _ == v - 1 ? _ - v : 0), v = h + w, y = y || _ == h && !b, "function" != typeof f.type || _ === v && d.__k !== f.__k ?
              "function" == typeof f.type || y ? void 0 !== f.__d ? (l = f.__d, f.__d = void 0) : l = g.nextSibling : l = LC(e, g, l) : l = jC(f, l, e), "function" == typeof n.type && (n.__d = l)));
            for (n.__e = m, h = k; h--;) null != x[h] && ("function" == typeof n.type && null != x[h].__e && x[h].__e == n.__d && (n.__d = x[h].__e.nextSibling), YC(x[h], x[h]))
          }

          function jC(e, t, n) {
            for (var r, i = e.__k, o = 0; i && o < i.length; o++)(r = i[o]) && (r.__ = e, t = "function" == typeof r.type ? jC(r, t, n) : LC(n, r.__e, t));
            return t
          }

          function LC(e, t, n) {
            return null == n || n.parentNode !== e ? e.insertBefore(t, null) : t == n && null != t.parentNode || e.insertBefore(t, n), t.nextSibling
          }

          function FC(e, t, n, r) {
            var i = e.key,
              o = e.type,
              a = n - 1,
              s = n + 1,
              l = t[n];
            if (null === l || l && i == l.key && o === l.type) return n;
            if (r > (null != l ? 1 : 0))
              for (; a >= 0 || s < t.length;) {
                if (a >= 0) {
                  if ((l = t[a]) && i == l.key && o === l.type) return a;
                  a--
                }
                if (s < t.length) {
                  if ((l = t[s]) && i == l.key && o === l.type) return s;
                  s++
                }
              }
            return -1
          }

          function BC(e, t, n) {
            "-" === t[0] ? e.setProperty(t, null == n ? "" : n) : e[t] = null == n ? "" : "number" != typeof n || kC.test(t) ? n : n + "px"
          }

          function zC(e, t, n, r, i) {
            var o;
            e: if ("style" === t)
              if ("string" == typeof n) e.style.cssText = n;
              else {
                if ("string" == typeof r && (e.style.cssText = r = ""), r)
                  for (t in r) n && t in n || BC(e.style, t, "");
                if (n)
                  for (t in n) r && n[t] === r[t] || BC(e.style, t, n[t])
              }
            else if ("o" === t[0] && "n" === t[1]) o = t !== (t = t.replace(/Capture$/, "")), t = t.toLowerCase() in e ? t.toLowerCase().slice(2) : t.slice(2), e.l || (e.l = {}), e.l[t + o] = n, n ? r || e.addEventListener(t, o ? UC : HC, o) : e
              .removeEventListener(t, o ? UC : HC, o);
            else if ("dangerouslySetInnerHTML" !== t) {
              if (i) t = t.replace(/xlink(H|:h)/, "h").replace(/sName$/, "s");
              else if ("width" !== t && "height" !== t && "href" !== t && "list" !== t && "form" !== t && "tabIndex" !== t && "download" !== t && "rowSpan" !== t && "colSpan" !== t && t in e) try {
                e[t] = null == n ? "" : n;
                break e
              } catch (e) {}
              "function" == typeof n || (null == n || !1 === n && "-" !== t[4] ? e.removeAttribute(t) : e.setAttribute(t, n))
            }
          }

          function HC(e) {
            return this.l[e.type + !1](lC.event ? lC.event(e) : e)
          }

          function UC(e) {
            return this.l[e.type + !0](lC.event ? lC.event(e) : e)
          }

          function WC(e, t, n, r, i, o, a, s, l, c) {
            var u, h, p, d, f, g, m, v, _, b, y, w, x, k, C, S = t.type;
            if (void 0 !== t.constructor) return null;
            null != n.__h && (l = n.__h, s = t.__e = n.__e, t.__h = null, o = [s]), (u = lC.__b) && u(t);
            try {
              e: if ("function" == typeof S) {
                if (v = t.props, _ = (u = S.contextType) && r[u.__c], b = u ? _ ? _.props.value : u.__ : r, n.__c ? m = (h = t.__c = n.__c).__ = h.__E : ("prototype" in S && S.prototype.render ? t.__c = h = new S(v, b) : (t.__c = h = new PC(v,
                    b), h.constructor = S, h.render = qC), _ && _.sub(h), h.props = v, h.state || (h.state = {}), h.context = b, h.__n = r, p = h.__d = !0, h.__h = [], h._sb = []), null == h.__s && (h.__s = h.state), null != S
                  .getDerivedStateFromProps && (h.__s == h.state && (h.__s = SC({}, h.__s)), SC(h.__s, S.getDerivedStateFromProps(v, h.__s))), d = h.props, f = h.state, h.__v = t, p) null == S.getDerivedStateFromProps && null != h
                  .componentWillMount && h.componentWillMount(), null != h.componentDidMount && h.__h.push(h.componentDidMount);
                else {
                  if (null == S.getDerivedStateFromProps && v !== d && null != h.componentWillReceiveProps && h.componentWillReceiveProps(v, b), !h.__e && (null != h.shouldComponentUpdate && !1 === h.shouldComponentUpdate(v, h.__s, b) || t
                      .__v === n.__v)) {
                    for (t.__v !== n.__v && (h.props = v, h.state = h.__s, h.__d = !1), t.__e = n.__e, t.__k = n.__k, t.__k.forEach((function(e) {
                        e && (e.__ = t)
                      })), y = 0; y < h._sb.length; y++) h.__h.push(h._sb[y]);
                    h._sb = [], h.__h.length && a.push(h);
                    break e
                  }
                  null != h.componentWillUpdate && h.componentWillUpdate(v, h.__s, b), null != h.componentDidUpdate && h.__h.push((function() {
                    h.componentDidUpdate(d, f, g)
                  }))
                }
                if (h.context = b, h.props = v, h.__P = e, h.__e = !1, w = lC.__r, x = 0, "prototype" in S && S.prototype.render) {
                  for (h.state = h.__s, h.__d = !1, w && w(t), u = h.render(h.props, h.state, h.context), k = 0; k < h._sb.length; k++) h.__h.push(h._sb[k]);
                  h._sb = []
                } else
                  do {
                    h.__d = !1, w && w(t), u = h.render(h.props, h.state, h.context), h.state = h.__s
                  } while (h.__d && ++x < 25);
                h.state = h.__s, null != h.getChildContext && (r = SC(SC({}, r), h.getChildContext())), p || null == h.getSnapshotBeforeUpdate || (g = h.getSnapshotBeforeUpdate(d, f)), RC(e, CC(C = null != u && u.type === AC && null == u.key ?
                  u.props.children : u) ? C : [C], t, n, r, i, o, a, s, l, c), h.base = t.__e, t.__h = null, h.__h.length && a.push(h), m && (h.__E = h.__ = null)
              } else null == o && t.__v === n.__v ? (t.__k = n.__k, t.__e = n.__e) : t.__e = XC(n.__e, t, n, r, i, o, a, l, c);
              (u = lC.diffed) && u(t)
            }
            catch (e) {
              t.__v = null, (l || null != o) && (t.__e = s, t.__h = !!l, o[o.indexOf(s)] = null), lC.__e(e, t, n)
            }
          }

          function VC(e, t, n) {
            for (var r = 0; r < n.length; r++) GC(n[r], n[++r], n[++r]);
            lC.__c && lC.__c(t, e), e.some((function(t) {
              try {
                e = t.__h, t.__h = [], e.some((function(e) {
                  e.call(t)
                }))
              } catch (e) {
                lC.__e(e, t.__v)
              }
            }))
          }

          function XC(e, t, n, r, i, o, a, s, l) {
            var c, u, h, p = n.props,
              d = t.props,
              f = t.type,
              g = 0;
            if ("svg" === f && (i = !0), null != o)
              for (; g < o.length; g++)
                if ((c = o[g]) && "setAttribute" in c == !!f && (f ? c.localName === f : 3 === c.nodeType)) {
                  e = c, o[g] = null;
                  break
                } if (null == e) {
              if (null === f) return document.createTextNode(d);
              e = i ? document.createElementNS("http://www.w3.org/2000/svg", f) : document.createElement(f, d.is && d), o = null, s = !1
            }
            if (null === f) p === d || s && e.data === d || (e.data = d);
            else {
              if (o = o && sC.call(e.childNodes), u = (p = n.props || wC).dangerouslySetInnerHTML, h = d.dangerouslySetInnerHTML, !s) {
                if (null != o)
                  for (p = {}, g = 0; g < e.attributes.length; g++) p[e.attributes[g].name] = e.attributes[g].value;
                (h || u) && (h && (u && h.__html == u.__html || h.__html === e.innerHTML) || (e.innerHTML = h && h.__html || ""))
              }
              if (function(e, t, n, r, i) {
                  var o;
                  for (o in n) "children" === o || "key" === o || o in t || zC(e, o, null, n[o], r);
                  for (o in t) i && "function" != typeof t[o] || "children" === o || "key" === o || "value" === o || "checked" === o || n[o] === t[o] || zC(e, o, t[o], n[o], r)
                }(e, d, p, i, s), h) t.__k = [];
              else if (RC(e, CC(g = t.props.children) ? g : [g], t, n, r, i && "foreignObject" !== f, o, a, o ? o[0] : n.__k && MC(n, 0), s, l), null != o)
                for (g = o.length; g--;) null != o[g] && EC(o[g]);
              s || ("value" in d && void 0 !== (g = d.value) && (g !== e.value || "progress" === f && !g || "option" === f && g !== p.value) && zC(e, "value", g, p.value, !1), "checked" in d && void 0 !== (g = d.checked) && g !== e.checked && zC(
                e, "checked", g, p.checked, !1))
            }
            return e
          }

          function GC(e, t, n) {
            try {
              "function" == typeof e ? e(t) : e.current = t
            } catch (e) {
              lC.__e(e, n)
            }
          }

          function YC(e, t, n) {
            var r, i;
            if (lC.unmount && lC.unmount(e), (r = e.ref) && (r.current && r.current !== e.__e || GC(r, null, t)), null != (r = e.__c)) {
              if (r.componentWillUnmount) try {
                r.componentWillUnmount()
              } catch (e) {
                lC.__e(e, t)
              }
              r.base = r.__P = null, e.__c = void 0
            }
            if (r = e.__k)
              for (i = 0; i < r.length; i++) r[i] && YC(r[i], t, n || "function" != typeof e.type);
            n || null == e.__e || EC(e.__e), e.__ = e.__e = e.__d = void 0
          }

          function qC(e, t, n) {
            return this.constructor(e, n)
          }

          function KC(e, t, n) {
            var r, i, o, a;
            lC.__ && lC.__(e, t), i = (r = "function" == typeof n) ? null : n && n.__k || t.__k, o = [], a = [], WC(t, e = (!r && n || t).__k = TC(AC, null, [e]), i || wC, wC, void 0 !== t.ownerSVGElement, !r && n ? [n] : i ? null : t
              .firstChild ? sC.call(t.childNodes) : null, o, !r && n ? n : i ? i.__e : t.firstChild, r, a), VC(o, e, a)
          }
          sC = xC.slice, lC = {
            __e: function(e, t, n, r) {
              for (var i, o, a; t = t.__;)
                if ((i = t.__c) && !i.__) try {
                  if ((o = i.constructor) && null != o.getDerivedStateFromError && (i.setState(o.getDerivedStateFromError(e)), a = i.__d), null != i.componentDidCatch && (i.componentDidCatch(e, r || {}), a = i.__d), a) return i.__E = i
                } catch (t) {
                  e = t
                }
              throw e
            }
          }, cC = 0, uC = function(e) {
            return null != e && void 0 === e.constructor
          }, PC.prototype.setState = function(e, t) {
            var n;
            n = null != this.__s && this.__s !== this.state ? this.__s : this.__s = SC({}, this.state), "function" == typeof e && (e = e(SC({}, n), this.props)), e && SC(n, e), null != e && this.__v && (t && this._sb.push(t), IC(this))
          }, PC.prototype.forceUpdate = function(e) {
            this.__v && (this.__e = !0, e && this.__h.push(e), IC(this))
          }, PC.prototype.render = AC, hC = [], dC = "function" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, fC = function(e, t) {
            return e.__v.__b - t.__v.__b
          }, NC.__r = 0, gC = 0, yC.Component = PC, yC.Fragment = AC, yC.cloneElement = function(e, t, n) {
            var r, i, o, a, s = SC({}, e.props);
            for (o in e.type && e.type.defaultProps && (a = e.type.defaultProps), t) "key" == o ? r = t[o] : "ref" == o ? i = t[o] : s[o] = void 0 === t[o] && void 0 !== a ? a[o] : t[o];
            return arguments.length > 2 && (s.children = arguments.length > 3 ? sC.call(arguments, 2) : n), OC(e.type, s, r || e.key, i || e.ref, null)
          }, yC.createContext = function(e, t) {
            var n = {
              __c: t = "__cC" + gC++,
              __: e,
              Consumer: function(e, t) {
                return e.children(t)
              },
              Provider: function(e) {
                var n, r;
                return this.getChildContext || (n = [], (r = {})[t] = this, this.getChildContext = function() {
                  return r
                }, this.shouldComponentUpdate = function(e) {
                  this.props.value !== e.value && n.some((function(e) {
                    e.__e = !0, IC(e)
                  }))
                }, this.sub = function(e) {
                  n.push(e);
                  var t = e.componentWillUnmount;
                  e.componentWillUnmount = function() {
                    n.splice(n.indexOf(e), 1), t && t.call(e)
                  }
                }), e.children
              }
            };
            return n.Provider.__ = n.Consumer.contextType = n
          }, yC.createElement = TC, yC.createRef = function() {
            return {
              current: null
            }
          }, yC.h = TC, yC.hydrate = function e(t, n) {
            KC(t, n, e)
          }, yC.isValidElement = uC, yC.options = lC, yC.render = KC, yC.toChildArray = function e(t, n) {
            return n = n || [], null == t || "boolean" == typeof t || (CC(t) ? t.some((function(t) {
              e(t, n)
            })) : n.push(t)), n
          };
          var $C, ZC, JC, QC, eS = {},
            tS = yC,
            nS = 0,
            rS = [],
            iS = [],
            oS = tS.options.__b,
            aS = tS.options.__r,
            sS = tS.options.diffed,
            lS = tS.options.__c,
            cS = tS.options.unmount;

          function uS(e, t) {
            tS.options.__h && tS.options.__h(ZC, e, nS || t), nS = 0;
            var n = ZC.__H || (ZC.__H = {
              __: [],
              __h: []
            });
            return e >= n.__.length && n.__.push({
              __V: iS
            }), n.__[e]
          }

          function hS(e) {
            return nS = 1, pS(wS, e)
          }

          function pS(e, t, n) {
            var r = uS($C++, 2);
            if (r.t = e, !r.__c && (r.__ = [n ? n(t) : wS(void 0, t), function(e) {
                var t = r.__N ? r.__N[0] : r.__[0],
                  n = r.t(t, e);
                t !== n && (r.__N = [n, r.__[1]], r.__c.setState({}))
              }], r.__c = ZC, !ZC.u)) {
              var i = function(e, t, n) {
                if (!r.__c.__H) return !0;
                var i = r.__c.__H.__.filter((function(e) {
                  return e.__c
                }));
                if (i.every((function(e) {
                    return !e.__N
                  }))) return !o || o.call(this, e, t, n);
                var a = !1;
                return i.forEach((function(e) {
                  if (e.__N) {
                    var t = e.__[0];
                    e.__ = e.__N, e.__N = void 0, t !== e.__[0] && (a = !0)
                  }
                })), !(!a && r.__c.props === e) && (!o || o.call(this, e, t, n))
              };
              ZC.u = !0;
              var o = ZC.shouldComponentUpdate,
                a = ZC.componentWillUpdate;
              ZC.componentWillUpdate = function(e, t, n) {
                if (this.__e) {
                  var r = o;
                  o = void 0, i(e, t, n), o = r
                }
                a && a.call(this, e, t, n)
              }, ZC.shouldComponentUpdate = i
            }
            return r.__N || r.__
          }

          function dS(e, t) {
            var n = uS($C++, 4);
            !tS.options.__s && yS(n.__H, t) && (n.__ = e, n.o = t, ZC.__h.push(n))
          }

          function fS(e, t) {
            var n = uS($C++, 7);
            return yS(n.__H, t) ? (n.__V = e(), n.o = t, n.__h = e, n.__V) : n.__
          }

          function gS() {
            for (var e; e = rS.shift();)
              if (e.__P && e.__H) try {
                e.__H.__h.forEach(_S), e.__H.__h.forEach(bS), e.__H.__h = []
              } catch (t) {
                e.__H.__h = [], tS.options.__e(t, e.__v)
              }
          }
          tS.options.__b = function(e) {
            ZC = null, oS && oS(e)
          }, tS.options.__r = function(e) {
            aS && aS(e), $C = 0;
            var t = (ZC = e.__c).__H;
            t && (JC === ZC ? (t.__h = [], ZC.__h = [], t.__.forEach((function(e) {
              e.__N && (e.__ = e.__N), e.__V = iS, e.__N = e.o = void 0
            }))) : (t.__h.forEach(_S), t.__h.forEach(bS), t.__h = [], $C = 0)), JC = ZC
          }, tS.options.diffed = function(e) {
            sS && sS(e);
            var t = e.__c;
            t && t.__H && (t.__H.__h.length && (1 !== rS.push(t) && QC === tS.options.requestAnimationFrame || ((QC = tS.options.requestAnimationFrame) || vS)(gS)), t.__H.__.forEach((function(e) {
              e.o && (e.__H = e.o), e.__V !== iS && (e.__ = e.__V), e.o = void 0, e.__V = iS
            }))), JC = ZC = null
          }, tS.options.__c = function(e, t) {
            t.some((function(e) {
              try {
                e.__h.forEach(_S), e.__h = e.__h.filter((function(e) {
                  return !e.__ || bS(e)
                }))
              } catch (n) {
                t.some((function(e) {
                  e.__h && (e.__h = [])
                })), t = [], tS.options.__e(n, e.__v)
              }
            })), lS && lS(e, t)
          }, tS.options.unmount = function(e) {
            cS && cS(e);
            var t, n = e.__c;
            n && n.__H && (n.__H.__.forEach((function(e) {
              try {
                _S(e)
              } catch (e) {
                t = e
              }
            })), n.__H = void 0, t && tS.options.__e(t, n.__v))
          };
          var mS = "function" == typeof requestAnimationFrame;

          function vS(e) {
            var t, n = function() {
                clearTimeout(r), mS && cancelAnimationFrame(t), setTimeout(e)
              },
              r = setTimeout(n, 100);
            mS && (t = requestAnimationFrame(n))
          }

          function _S(e) {
            var t = ZC,
              n = e.__c;
            "function" == typeof n && (e.__c = void 0, n()), ZC = t
          }

          function bS(e) {
            var t = ZC;
            e.__c = e.__(), ZC = t
          }

          function yS(e, t) {
            return !e || e.length !== t.length || t.some((function(t, n) {
              return t !== e[n]
            }))
          }

          function wS(e, t) {
            return "function" == typeof t ? t(e) : t
          }
          eS.useCallback = function(e, t) {
              return nS = 8, fS((function() {
                return e
              }), t)
            }, eS.useContext = function(e) {
              var t = ZC.context[e.__c],
                n = uS($C++, 9);
              return n.c = e, t ? (null == n.__ && (n.__ = !0, t.sub(ZC)), t.props.value) : e.__
            }, eS.useDebugValue = function(e, t) {
              tS.options.useDebugValue && tS.options.useDebugValue(t ? t(e) : e)
            }, eS.useEffect = function(e, t) {
              var n = uS($C++, 3);
              !tS.options.__s && yS(n.__H, t) && (n.__ = e, n.o = t, ZC.__H.__h.push(n))
            }, eS.useErrorBoundary = function(e) {
              var t = uS($C++, 10),
                n = hS();
              return t.__ = e, ZC.componentDidCatch || (ZC.componentDidCatch = function(e, r) {
                t.__ && t.__(e, r), n[1](e)
              }), [n[0], function() {
                n[1](void 0)
              }]
            }, eS.useId = function() {
              var e = uS($C++, 11);
              if (!e.__) {
                for (var t = ZC.__v; null !== t && !t.__m && null !== t.__;) t = t.__;
                var n = t.__m || (t.__m = [0, 0]);
                e.__ = "P" + n[0] + "-" + n[1]++
              }
              return e.__
            }, eS.useImperativeHandle = function(e, t, n) {
              nS = 6, dS((function() {
                return "function" == typeof e ? (e(t()), function() {
                  return e(null)
                }) : e ? (e.current = t(), function() {
                  return e.current = null
                }) : void 0
              }), null == n ? n : n.concat(e))
            }, eS.useLayoutEffect = dS, eS.useMemo = fS, eS.useReducer = pS, eS.useRef = function(e) {
              return nS = 5, fS((function() {
                return {
                  current: e
                }
              }), [])
            }, eS.useState = hS,
            function(e) {
              var t = yC,
                n = eS;

              function r(e, t) {
                for (var n in t) e[n] = t[n];
                return e
              }

              function i(e, t) {
                for (var n in e)
                  if ("__source" !== n && !(n in t)) return !0;
                for (var r in t)
                  if ("__source" !== r && e[r] !== t[r]) return !0;
                return !1
              }

              function o(e, t) {
                return e === t && (0 !== e || 1 / e == 1 / t) || e != e && t != t
              }

              function a(e) {
                this.props = e
              }

              function s(e, n) {
                function r(e) {
                  var t = this.props.ref,
                    r = t == e.ref;
                  return !r && t && (t.call ? t(null) : t.current = null), n ? !n(this.props, e) || !r : i(this.props, e)
                }

                function o(n) {
                  return this.shouldComponentUpdate = r, t.createElement(e, n)
                }
                return o.displayName = "Memo(" + (e.displayName || e.name) + ")", o.prototype.isReactComponent = !0, o.__f = !0, o
              }(a.prototype = new t.Component).isPureReactComponent = !0, a.prototype.shouldComponentUpdate = function(e, t) {
                return i(this.props, e) || i(this.state, t)
              };
              var l = t.options.__b;
              t.options.__b = function(e) {
                e.type && e.type.__f && e.ref && (e.props.ref = e.ref, e.ref = null), l && l(e)
              };
              var c = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.forward_ref") || 3911;

              function u(e) {
                function t(t) {
                  var n = r({}, t);
                  return delete n.ref, e(n, t.ref || null)
                }
                return t.$$typeof = c, t.render = t, t.prototype.isReactComponent = t.__f = !0, t.displayName = "ForwardRef(" + (e.displayName || e.name) + ")", t
              }
              var h = function(e, n) {
                  return null == e ? null : t.toChildArray(t.toChildArray(e).map(n))
                },
                p = {
                  map: h,
                  forEach: h,
                  count: function(e) {
                    return e ? t.toChildArray(e).length : 0
                  },
                  only: function(e) {
                    var n = t.toChildArray(e);
                    if (1 !== n.length) throw "Children.only";
                    return n[0]
                  },
                  toArray: t.toChildArray
                },
                d = t.options.__e;
              t.options.__e = function(e, t, n, r) {
                if (e.then)
                  for (var i, o = t; o = o.__;)
                    if ((i = o.__c) && i.__c) return null == t.__e && (t.__e = n.__e, t.__k = n.__k), i.__c(e, t);
                d(e, t, n, r)
              };
              var f = t.options.unmount;

              function g(e, t, n) {
                return e && (e.__c && e.__c.__H && (e.__c.__H.__.forEach((function(e) {
                  "function" == typeof e.__c && e.__c()
                })), e.__c.__H = null), null != (e = r({}, e)).__c && (e.__c.__P === n && (e.__c.__P = t), e.__c = null), e.__k = e.__k && e.__k.map((function(e) {
                  return g(e, t, n)
                }))), e
              }

              function m(e, t, n) {
                return e && (e.__v = null, e.__k = e.__k && e.__k.map((function(e) {
                  return m(e, t, n)
                })), e.__c && e.__c.__P === t && (e.__e && n.insertBefore(e.__e, e.__d), e.__c.__e = !0, e.__c.__P = n)), e
              }

              function v() {
                this.__u = 0, this.t = null, this.__b = null
              }

              function _(e) {
                var t = e.__.__c;
                return t && t.__a && t.__a(e)
              }

              function b(e) {
                var n, r, i;

                function o(o) {
                  if (n || (n = e()).then((function(e) {
                      r = e.default || e
                    }), (function(e) {
                      i = e
                    })), i) throw i;
                  if (!r) throw n;
                  return t.createElement(r, o)
                }
                return o.displayName = "Lazy", o.__f = !0, o
              }

              function y() {
                this.u = null, this.o = null
              }
              t.options.unmount = function(e) {
                var t = e.__c;
                t && t.__R && t.__R(), t && !0 === e.__h && (e.type = null), f && f(e)
              }, (v.prototype = new t.Component).__c = function(e, t) {
                var n = t.__c,
                  r = this;
                null == r.t && (r.t = []), r.t.push(n);
                var i = _(r.__v),
                  o = !1,
                  a = function() {
                    o || (o = !0, n.__R = null, i ? i(s) : s())
                  };
                n.__R = a;
                var s = function() {
                    if (!--r.__u) {
                      if (r.state.__a) {
                        var e = r.state.__a;
                        r.__v.__k[0] = m(e, e.__c.__P, e.__c.__O)
                      }
                      var t;
                      for (r.setState({
                          __a: r.__b = null
                        }); t = r.t.pop();) t.forceUpdate()
                    }
                  },
                  l = !0 === t.__h;
                r.__u++ || l || r.setState({
                  __a: r.__b = r.__v.__k[0]
                }), e.then(a, a)
              }, v.prototype.componentWillUnmount = function() {
                this.t = []
              }, v.prototype.render = function(e, n) {
                if (this.__b) {
                  if (this.__v.__k) {
                    var r = document.createElement("div"),
                      i = this.__v.__k[0].__c;
                    this.__v.__k[0] = g(this.__b, r, i.__O = i.__P)
                  }
                  this.__b = null
                }
                var o = n.__a && t.createElement(t.Fragment, null, e.fallback);
                return o && (o.__h = null), [t.createElement(t.Fragment, null, n.__a ? null : e.children), o]
              };
              var w = function(e, t, n) {
                if (++n[1] === n[0] && e.o.delete(t), e.props.revealOrder && ("t" !== e.props.revealOrder[0] || !e.o.size))
                  for (n = e.u; n;) {
                    for (; n.length > 3;) n.pop()();
                    if (n[1] < n[0]) break;
                    e.u = n = n[2]
                  }
              };

              function x(e) {
                return this.getChildContext = function() {
                  return e.context
                }, e.children
              }

              function k(e) {
                var n = this,
                  r = e.i;
                n.componentWillUnmount = function() {
                  t.render(null, n.l), n.l = null, n.i = null
                }, n.i && n.i !== r && n.componentWillUnmount(), e.__v ? (n.l || (n.i = r, n.l = {
                  nodeType: 1,
                  parentNode: r,
                  childNodes: [],
                  appendChild: function(e) {
                    this.childNodes.push(e), n.i.appendChild(e)
                  },
                  insertBefore: function(e, t) {
                    this.childNodes.push(e), n.i.appendChild(e)
                  },
                  removeChild: function(e) {
                    this.childNodes.splice(this.childNodes.indexOf(e) >>> 1, 1), n.i.removeChild(e)
                  }
                }), t.render(t.createElement(x, {
                  context: n.context
                }, e.__v), n.l)) : n.l && n.componentWillUnmount()
              }

              function C(e, n) {
                var r = t.createElement(k, {
                  __v: e,
                  i: n
                });
                return r.containerInfo = n, r
              }(y.prototype = new t.Component).__a = function(e) {
                var t = this,
                  n = _(t.__v),
                  r = t.o.get(e);
                return r[0]++,
                  function(i) {
                    var o = function() {
                      t.props.revealOrder ? (r.push(i), w(t, e, r)) : i()
                    };
                    n ? n(o) : o()
                  }
              }, y.prototype.render = function(e) {
                this.u = null, this.o = new Map;
                var n = t.toChildArray(e.children);
                e.revealOrder && "b" === e.revealOrder[0] && n.reverse();
                for (var r = n.length; r--;) this.o.set(n[r], this.u = [1, 0, this.u]);
                return e.children
              }, y.prototype.componentDidUpdate = y.prototype.componentDidMount = function() {
                var e = this;
                this.o.forEach((function(t, n) {
                  w(e, n, t)
                }))
              };
              var S = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103,
                E =
                /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,
                T = /^on(Ani|Tra|Tou|BeforeInp|Compo)/,
                O = /[A-Z0-9]/g,
                A = "undefined" != typeof document,
                P = function(e) {
                  return ("undefined" != typeof Symbol && "symbol" == typeof Symbol() ? /fil|che|rad/ : /fil|che|ra/).test(e)
                };

              function M(e, n, r) {
                return null == n.__k && (n.textContent = ""), t.render(e, n), "function" == typeof r && r(), e ? e.__c : null
              }

              function D(e, n, r) {
                return t.hydrate(e, n), "function" == typeof r && r(), e ? e.__c : null
              }
              t.Component.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach((function(e) {
                Object.defineProperty(t.Component.prototype, e, {
                  configurable: !0,
                  get: function() {
                    return this["UNSAFE_" + e]
                  },
                  set: function(t) {
                    Object.defineProperty(this, e, {
                      configurable: !0,
                      writable: !0,
                      value: t
                    })
                  }
                })
              }));
              var I = t.options.event;

              function N() {}

              function R() {
                return this.cancelBubble
              }

              function j() {
                return this.defaultPrevented
              }
              t.options.event = function(e) {
                return I && (e = I(e)), e.persist = N, e.isPropagationStopped = R, e.isDefaultPrevented = j, e.nativeEvent = e
              };
              var L, F = {
                  enumerable: !1,
                  configurable: !0,
                  get: function() {
                    return this.class
                  }
                },
                B = t.options.vnode;
              t.options.vnode = function(e) {
                "string" == typeof e.type && function(e) {
                  var n = e.props,
                    r = e.type,
                    i = {};
                  for (var o in n) {
                    var a = n[o];
                    if (!("value" === o && "defaultValue" in n && null == a || A && "children" === o && "noscript" === r || "class" === o || "className" === o)) {
                      var s = o.toLowerCase();
                      "defaultValue" === o && "value" in n && null == n.value ? o = "value" : "download" === o && !0 === a ? a = "" : "ondoubleclick" === s ? o = "ondblclick" : "onchange" !== s || "input" !== r && "textarea" !== r || P(n
                          .type) ? "onfocus" === s ? o = "onfocusin" : "onblur" === s ? o = "onfocusout" : T.test(o) ? o = s : -1 === r.indexOf("-") && E.test(o) ? o = o.replace(O, "-$&").toLowerCase() : null === a && (a = void 0) : s = o =
                        "oninput", "oninput" === s && i[o = s] && (o = "oninputCapture"), i[o] = a
                    }
                  }
                  "select" == r && i.multiple && Array.isArray(i.value) && (i.value = t.toChildArray(n.children).forEach((function(e) {
                    e.props.selected = -1 != i.value.indexOf(e.props.value)
                  }))), "select" == r && null != i.defaultValue && (i.value = t.toChildArray(n.children).forEach((function(e) {
                    e.props.selected = i.multiple ? -1 != i.defaultValue.indexOf(e.props.value) : i.defaultValue == e.props.value
                  }))), n.class && !n.className ? (i.class = n.class, Object.defineProperty(i, "className", F)) : (n.className && !n.class || n.class && n.className) && (i.class = i.className = n.className), e.props = i
                }(e), e.$$typeof = S, B && B(e)
              };
              var z = t.options.__r;
              t.options.__r = function(e) {
                z && z(e), L = e.__c
              };
              var H = t.options.diffed;
              t.options.diffed = function(e) {
                H && H(e);
                var t = e.props,
                  n = e.__e;
                null != n && "textarea" === e.type && "value" in t && t.value !== n.value && (n.value = null == t.value ? "" : t.value), L = null
              };
              var U = {
                ReactCurrentDispatcher: {
                  current: {
                    readContext: function(e) {
                      return L.__n[e.__c].props.value
                    }
                  }
                }
              };

              function W(e) {
                return t.createElement.bind(null, e)
              }

              function V(e) {
                return !!e && e.$$typeof === S
              }

              function X(e) {
                return V(e) ? t.cloneElement.apply(null, arguments) : e
              }

              function G(e) {
                return !!e.__k && (t.render(null, e), !0)
              }

              function Y(e) {
                return e && (e.base || 1 === e.nodeType && e) || null
              }
              var q = function(e, t) {
                  return e(t)
                },
                K = function(e, t) {
                  return e(t)
                },
                $ = t.Fragment;

              function Z(e) {
                e()
              }

              function J(e) {
                return e
              }

              function Q() {
                return [!1, Z]
              }
              var ee = n.useLayoutEffect;

              function te(e, t) {
                var r = t(),
                  i = n.useState({
                    p: {
                      __: r,
                      h: t
                    }
                  }),
                  a = i[0].p,
                  s = i[1];
                return n.useLayoutEffect((function() {
                  a.__ = r, a.h = t, o(a.__, t()) || s({
                    p: a
                  })
                }), [e, r, t]), n.useEffect((function() {
                  return o(a.__, a.h()) || s({
                    p: a
                  }), e((function() {
                    o(a.__, a.h()) || s({
                      p: a
                    })
                  }))
                }), [e]), r
              }
              var ne = {
                useState: n.useState,
                useId: n.useId,
                useReducer: n.useReducer,
                useEffect: n.useEffect,
                useLayoutEffect: n.useLayoutEffect,
                useInsertionEffect: ee,
                useTransition: Q,
                useDeferredValue: J,
                useSyncExternalStore: te,
                startTransition: Z,
                useRef: n.useRef,
                useImperativeHandle: n.useImperativeHandle,
                useMemo: n.useMemo,
                useCallback: n.useCallback,
                useContext: n.useContext,
                useDebugValue: n.useDebugValue,
                version: "17.0.2",
                Children: p,
                render: M,
                hydrate: D,
                unmountComponentAtNode: G,
                createPortal: C,
                createElement: t.createElement,
                createContext: t.createContext,
                createFactory: W,
                cloneElement: X,
                createRef: t.createRef,
                Fragment: t.Fragment,
                isValidElement: V,
                findDOMNode: Y,
                Component: t.Component,
                PureComponent: a,
                memo: s,
                forwardRef: u,
                flushSync: K,
                unstable_batchedUpdates: q,
                StrictMode: $,
                Suspense: v,
                SuspenseList: y,
                lazy: b,
                __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: U
              };
              Object.defineProperty(e, "Component", {
                  enumerable: !0,
                  get: function() {
                    return t.Component
                  }
                }), Object.defineProperty(e, "Fragment", {
                  enumerable: !0,
                  get: function() {
                    return t.Fragment
                  }
                }), Object.defineProperty(e, "createContext", {
                  enumerable: !0,
                  get: function() {
                    return t.createContext
                  }
                }), Object.defineProperty(e, "createElement", {
                  enumerable: !0,
                  get: function() {
                    return t.createElement
                  }
                }), Object.defineProperty(e, "createRef", {
                  enumerable: !0,
                  get: function() {
                    return t.createRef
                  }
                }), e.Children = p, e.PureComponent = a, e.StrictMode = $, e.Suspense = v, e.SuspenseList = y, e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = U, e.cloneElement = X, e.createFactory = W, e.createPortal = C, e.default = ne,
                e.findDOMNode = Y, e.flushSync = K, e.forwardRef = u, e.hydrate = D, e.isValidElement = V, e.lazy = b, e.memo = s, e.render = M, e.startTransition = Z, e.unmountComponentAtNode = G, e.unstable_batchedUpdates = q, e
                .useDeferredValue = J, e.useInsertionEffect = ee, e.useSyncExternalStore = te, e.useTransition = Q, e.version = "17.0.2", Object.keys(n).forEach((function(t) {
                  "default" === t || e.hasOwnProperty(t) || Object.defineProperty(e, t, {
                    enumerable: !0,
                    get: function() {
                      return n[t]
                    }
                  })
                }))
            }(bC);
          var xS, kS = V(Object.freeze({
            __proto__: null,
            default: function(e, t) {
              if (!e) throw new Error("Invariant failed")
            }
          }));

          function CS() {
            return CS = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, CS.apply(this, arguments)
          }! function(e) {
            var t = l.default,
              n = Dl.exports,
              r = bC,
              i = kS;

            function o(e) {
              return e && e.__esModule ? e.default : e
            }

            function a(e, t, n, r) {
              Object.defineProperty(e, t, {
                get: n,
                set: r,
                enumerable: !0,
                configurable: !0
              })
            }

            function s(e) {
              null !== e.parentElement && e.parentElement.removeChild(e)
            }

            function c(e) {
              e.forEach((e => s(e.element)))
            }

            function u(e) {
              e.forEach((e => {
                ! function(e, t, n) {
                  const r = e.children[n] || null;
                  e.insertBefore(t, r)
                }(e.parentElement, e.element, e.oldIndex)
              }))
            }

            function h(e, t) {
              const n = f(e),
                r = {
                  parentElement: e.from
                };
              let i = [];
              switch (n) {
                case "normal":
                  i = [{
                    element: e.item,
                    newIndex: e.newIndex,
                    oldIndex: e.oldIndex,
                    parentElement: e.from
                  }];
                  break;
                case "swap":
                  i = [{
                    element: e.item,
                    oldIndex: e.oldIndex,
                    newIndex: e.newIndex,
                    ...r
                  }, {
                    element: e.swapItem,
                    oldIndex: e.newIndex,
                    newIndex: e.oldIndex,
                    ...r
                  }];
                  break;
                case "multidrag":
                  i = e.oldIndicies.map(((t, n) => ({
                    element: t.multiDragElement,
                    oldIndex: t.index,
                    newIndex: e.newIndicies[n].index,
                    ...r
                  })))
              }
              const o = function(e, t) {
                const n = e.map((e => ({
                  ...e,
                  item: t[e.oldIndex]
                }))).sort(((e, t) => e.oldIndex - t.oldIndex));
                return n
              }(i, t);
              return o
            }

            function p(e, t) {
              const n = [...t];
              return e.concat().reverse().forEach((e => n.splice(e.oldIndex, 1))), n
            }

            function d(e, t, n, r) {
              const i = [...t];
              return e.forEach((e => {
                const t = r && n && r(e.item, n);
                i.splice(e.newIndex, 0, t || e.item)
              })), i
            }

            function f(e) {
              return e.oldIndicies && e.oldIndicies.length > 0 ? "multidrag" : e.swapItem ? "swap" : "normal"
            }
            a(e.exports, "Sortable", (() => $882b6d93070905b3$re_export$Sortable)), a(e.exports, "Direction", (() => $882b6d93070905b3$re_export$Direction)), a(e.exports, "DOMRect", (() => $882b6d93070905b3$re_export$DOMRect)), a(e.exports,
              "GroupOptions", (() => $882b6d93070905b3$re_export$GroupOptions)), a(e.exports, "MoveEvent", (() => $882b6d93070905b3$re_export$MoveEvent)), a(e.exports, "Options", (() => $882b6d93070905b3$re_export$Options)), a(e.exports,
              "PullResult", (() => $882b6d93070905b3$re_export$PullResult)), a(e.exports, "PutResult", (() => $882b6d93070905b3$re_export$PutResult)), a(e.exports, "SortableEvent", (() => $882b6d93070905b3$re_export$SortableEvent)), a(e
              .exports, "SortableOptions", (() => $882b6d93070905b3$re_export$SortableOptions)), a(e.exports, "Utils", (() => $882b6d93070905b3$re_export$Utils)), a(e.exports, "ReactSortable", (() => m));
            const g = {
              dragging: null
            };
            class m extends r.Component {
              constructor(e) {
                super(e), this.ref = r.createRef();
                const t = [...e.list].map((e => Object.assign(e, {
                  chosen: !1,
                  selected: !1
                })));
                e.setList(t, this.sortable, g), o(i)(!e.plugins,
                  '\nPlugins prop is no longer supported.\nInstead, mount it with "Sortable.mount(new MultiDrag())"\nPlease read the updated README.md at https://github.com/SortableJS/react-sortablejs.\n      ')
              }
              componentDidMount() {
                if (null === this.ref.current) return;
                const e = this.makeOptions();
                o(t).create(this.ref.current, e)
              }
              componentDidUpdate(e) {
                e.disabled !== this.props.disabled && this.sortable && this.sortable.option("disabled", this.props.disabled)
              }
              render() {
                const {
                  tag: e,
                  style: t,
                  className: n,
                  id: i
                } = this.props, o = {
                  style: t,
                  className: n,
                  id: i
                }, a = e && null !== e ? e : "div";
                return r.createElement(a, {
                  ref: this.ref,
                  ...o
                }, this.getChildren())
              }
              getChildren() {
                const {
                  children: e,
                  dataIdAttr: t,
                  selectedClass: i = "sortable-selected",
                  chosenClass: a = "sortable-chosen",
                  dragClass: s = "sortable-drag",
                  fallbackClass: l = "sortable-falback",
                  ghostClass: c = "sortable-ghost",
                  swapClass: u = "sortable-swap-highlight",
                  filter: h = "sortable-filter",
                  list: p
                } = this.props;
                if (!e || null == e) return null;
                const d = t || "data-id";
                return r.Children.map(e, ((e, t) => {
                  if (void 0 === e) return;
                  const s = p[t] || {},
                    {
                      className: l
                    } = e.props,
                    c = "string" == typeof h && {
                      [h.replace(".", "")]: !!s.filtered
                    },
                    u = o(n)(l, {
                      [i]: s.selected,
                      [a]: s.chosen,
                      ...c
                    });
                  return r.cloneElement(e, {
                    [d]: e.key,
                    className: u
                  })
                }))
              }
              get sortable() {
                const e = this.ref.current;
                if (null === e) return null;
                const t = Object.keys(e).find((e => e.includes("Sortable")));
                return t ? e[t] : null
              }
              makeOptions() {
                const e = function(e) {
                  const {
                    list: t,
                    setList: n,
                    children: r,
                    tag: i,
                    style: o,
                    className: a,
                    clone: s,
                    onAdd: l,
                    onChange: c,
                    onChoose: u,
                    onClone: h,
                    onEnd: p,
                    onFilter: d,
                    onRemove: f,
                    onSort: g,
                    onStart: m,
                    onUnchoose: v,
                    onUpdate: _,
                    onMove: b,
                    onSpill: y,
                    onSelect: w,
                    onDeselect: x,
                    ...k
                  } = e;
                  return k
                }(this.props);
                ["onAdd", "onChoose", "onDeselect", "onEnd", "onRemove", "onSelect", "onSpill", "onStart", "onUnchoose", "onUpdate"].forEach((t => e[t] = this.prepareOnHandlerPropAndDOM(t))), ["onChange", "onClone", "onFilter", "onSort"]
                  .forEach((t => e[t] = this.prepareOnHandlerProp(t)));
                return {
                  ...e,
                  onMove: (e, t) => {
                    const {
                      onMove: n
                    } = this.props, r = e.willInsertAfter || -1;
                    if (!n) return r;
                    const i = n(e, t, this.sortable, g);
                    return void 0 !== i && i
                  }
                }
              }
              prepareOnHandlerPropAndDOM(e) {
                return t => {
                  this.callOnHandlerProp(t, e), this[e](t)
                }
              }
              prepareOnHandlerProp(e) {
                return t => {
                  this.callOnHandlerProp(t, e)
                }
              }
              callOnHandlerProp(e, t) {
                const n = this.props[t];
                n && n(e, this.sortable, g)
              }
              onAdd(e) {
                const {
                  list: t,
                  setList: n,
                  clone: r
                } = this.props, i = h(e, [...g.dragging.props.list]);
                c(i);
                n(d(i, t, e, r).map((e => Object.assign(e, {
                  selected: !1
                }))), this.sortable, g)
              }
              onRemove(e) {
                const {
                  list: t,
                  setList: n
                } = this.props, r = f(e), a = h(e, t);
                u(a);
                let s = [...t];
                if ("clone" !== e.pullMode) s = p(a, s);
                else {
                  let t = a;
                  switch (r) {
                    case "multidrag":
                      t = a.map(((t, n) => ({
                        ...t,
                        element: e.clones[n]
                      })));
                      break;
                    case "normal":
                      t = a.map((t => ({
                        ...t,
                        element: e.clone
                      })));
                      break;
                    default:
                      o(i)(!0, `mode "${r}" cannot clone. Please remove "props.clone" from <ReactSortable/> when using the "${r}" plugin`)
                  }
                  c(t), a.forEach((t => {
                    const n = t.oldIndex,
                      r = this.props.clone(t.item, e);
                    s.splice(n, 1, r)
                  }))
                }
                s = s.map((e => Object.assign(e, {
                  selected: !1
                }))), n(s, this.sortable, g)
              }
              onUpdate(e) {
                const {
                  list: t,
                  setList: n
                } = this.props, r = h(e, t);
                c(r), u(r);
                const i = function(e, t) {
                  return d(e, p(e, t))
                }(r, t);
                return n(i, this.sortable, g)
              }
              onStart() {
                g.dragging = this
              }
              onEnd() {
                g.dragging = null
              }
              onChoose(e) {
                const {
                  list: t,
                  setList: n
                } = this.props, r = t.map(((t, n) => {
                  let r = t;
                  return n === e.oldIndex && (r = Object.assign(t, {
                    chosen: !0
                  })), r
                }));
                n(r, this.sortable, g)
              }
              onUnchoose(e) {
                const {
                  list: t,
                  setList: n
                } = this.props, r = t.map(((t, n) => {
                  let r = t;
                  return n === e.oldIndex && (r = Object.assign(r, {
                    chosen: !1
                  })), r
                }));
                n(r, this.sortable, g)
              }
              onSpill(e) {
                const {
                  removeOnSpill: t,
                  revertOnSpill: n
                } = this.props;
                t && !n && s(e.item)
              }
              onSelect(e) {
                const {
                  list: t,
                  setList: n
                } = this.props, r = t.map((e => Object.assign(e, {
                  selected: !1
                })));
                e.newIndicies.forEach((e => {
                  const t = e.index; - 1 !== t && (r[t].selected = !0)
                })), n(r, this.sortable, g)
              }
              onDeselect(e) {
                const {
                  list: t,
                  setList: n
                } = this.props, r = t.map((e => Object.assign(e, {
                  selected: !1
                })));
                e.newIndicies.forEach((e => {
                  const t = e.index; - 1 !== t && (r[t].selected = !0)
                })), n(r, this.sortable, g)
              }
            }
            m.defaultProps = {
              clone: e => e
            };
            var v, _;
            v = e.exports, _ = {}, Object.keys(_).forEach((function(e) {
              "default" === e || "__esModule" === e || v.hasOwnProperty(e) || Object.defineProperty(v, e, {
                enumerable: !0,
                get: function() {
                  return _[e]
                }
              })
            }))
          }(_C);
          var SS = e => Te("svg", CS({
              width: 14,
              height: 9,
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg"
            }, e), xS || (xS = Te("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M.6 6.9a1.6 1.6 0 1 0 3.2-.001A1.6 1.6 0 0 0 .6 6.9Zm4.8 0a1.6 1.6 0 1 0 3.2-.001 1.6 1.6 0 0 0-3.2.001Zm4.8 0a1.6 1.6 0 1 0 3.2-.001 1.6 1.6 0 0 0-3.2.001ZM3.8 2.1a1.6 1.6 0 1 0-3.202.001A1.6 1.6 0 0 0 3.8 2.1Zm1.6 0a1.6 1.6 0 1 0 3.2-.001 1.6 1.6 0 0 0-3.2.001Zm4.8 0a1.6 1.6 0 1 0 3.2-.001 1.6 1.6 0 0 0-3.2.001Z",
              fill: "#7E7E7E"
            }))),
            ES = "OrderOperator-module_operate_order__Dy31o",
            TS = "OrderOperator-module_img_item__M6EFs",
            OS = "OrderOperator-module_img__dEUmr",
            AS = "OrderOperator-module_sortable__AqKYO",
            PS = "OrderOperator-module_icon__P5csN",
            MS = "OrderOperator-module_item_drag__6ZxO-",
            DS = "OrderOperator-module_index__-E8wZ",
            IS = "OrderOperator-module_index_show__-H0q8";
          c(
          ".OrderOperator-module_operate_order__Dy31o{display:flex;height:118px;margin:6px 0}.OrderOperator-module_img_item__M6EFs{align-items:center;display:flex;flex-direction:column}.OrderOperator-module_img_item__M6EFs+.OrderOperator-module_img_item__M6EFs{margin-left:20px}.OrderOperator-module_img__dEUmr{border-radius:4px;height:60px;object-fit:cover;width:60px}.OrderOperator-module_img_item__M6EFs:last-child{margin-right:28px}.OrderOperator-module_img_item__M6EFs:first-child{margin-left:28px}.OrderOperator-module_sortable__AqKYO{align-items:center;display:flex;overflow-x:auto}.OrderOperator-module_icon__P5csN{cursor:pointer;margin-top:8px}.OrderOperator-module_item_drag__6ZxO-{background:#fdfdfd;border:1px solid #e6e6e6;border-radius:6px;box-shadow:0 2px 10px rgba(34,34,34,.08);padding:0 4px}.OrderOperator-module_item_drag__6ZxO- .OrderOperator-module_img_item__M6EFs{height:64px;width:64px}.OrderOperator-module_item_drag__6ZxO- .OrderOperator-module_index__-E8wZ{visibility:visible!important}.OrderOperator-module_index__-E8wZ{color:rgba(51,51,51,.6);font-size:12px;font-weight:500;line-height:12px;margin:3px 0;visibility:hidden}.OrderOperator-module_index_show__-H0q8{visibility:visible!important}@media (max-width:959px){.OrderOperator-module_img_item__M6EFs:last-child{margin-right:0}.OrderOperator-module_sortable__AqKYO{padding-right:20px}.OrderOperator-module_img_item__M6EFs:first-child{margin-left:20px}.OrderOperator-module_operate_order__Dy31o{height:108px}}");
          var NS, RS = e => {
            var {
              onChange: t,
              defaultValue: n
            } = e, [r, i] = dt([]), [o, a] = dt(!1);
            gt((() => {
              n.length !== r.length && i(n || [])
            }), [n, r.length]);
            return zl("div", {
              className: ES,
              children: zl(_C.exports.ReactSortable, {
                className: AS,
                list: r || [],
                setList: e => {
                  i(e), e.length && t(e)
                },
                dragClass: MS,
                chosenClass: MS,
                onStart: () => a(!0),
                onEnd: () => a(!1),
                filter: ".ignore",
                handle: ".handle",
                direction: "horizontal",
                children: null == r ? void 0 : r.map(((e, t) => {
                  var {
                    url: n,
                    id: r
                  } = e;
                  return zl("div", {
                    className: TS,
                    children: [zl("div", {
                      className: Rl([DS, {
                        [IS]: o
                      }]),
                      children: t + 1
                    }), zl("img", {
                      className: Rl([OS, "ignore"]),
                      src: n
                    }), zl("div", {
                      className: Rl(["handle", PS]),
                      children: zl(SS, {})
                    })]
                  }, r)
                }))
              })
            })
          };

          function jS() {
            return jS = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, jS.apply(this, arguments)
          }
          var LS, FS = e => Te("svg", jS({
            width: 28,
            height: 28,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), NS || (NS = Te("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M9.707 8.293a1 1 0 0 0-1.414 1.414L12.586 14l-4.293 4.293a1 1 0 1 0 1.414 1.414L14 15.414l4.293 4.293a1 1 0 0 0 1.414-1.414L15.414 14l4.293-4.293a1 1 0 0 0-1.414-1.414L14 12.586 9.707 8.293Z",
            fill: "#333"
          })));

          function BS() {
            return BS = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, BS.apply(this, arguments)
          }
          var zS = e => Te("svg", BS({
            width: 28,
            height: 28,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), LS || (LS = Te("path", {
            fillRule: "evenodd",
            clipRule: "evenodd",
            d: "M22.707 8.293a1 1 0 0 1 0 1.414l-10 10a1 1 0 0 1-1.414 0l-5-5a1 1 0 1 1 1.414-1.414L12 17.586l9.293-9.293a1 1 0 0 1 1.414 0Z",
            fill: "#333"
          })));
          c(
          '.rc-tabs-dropdown{background:#fefefe;border:1px solid #000;max-height:200px;overflow:auto;position:absolute}.rc-tabs-dropdown-hidden{display:none}.rc-tabs-dropdown-menu{list-style:none;margin:0;padding:0}.rc-tabs-dropdown-menu-item{padding:4px 8px}.rc-tabs-dropdown-menu-item-selected{background:red}.rc-tabs-dropdown-menu-item-disabled{cursor:not-allowed;opacity:.3}.rc-tabs-content{display:flex;width:100%}.rc-tabs-content-holder{flex:auto}.rc-tabs-content-animated{transition:margin .3s}.rc-tabs-tabpane{flex:none;width:100%}.rc-tabs{display:flex}.rc-tabs-bottom,.rc-tabs-top{flex-direction:column}.rc-tabs-bottom .rc-tabs-ink-bar,.rc-tabs-top .rc-tabs-ink-bar{height:3px}.rc-tabs-top .rc-tabs-ink-bar{bottom:0}.rc-tabs-bottom .rc-tabs-nav{order:1}.rc-tabs-bottom .rc-tabs-content{order:0}.rc-tabs-bottom .rc-tabs-ink-bar{top:0}.rc-tabs-left.rc-tabs-editable .rc-tabs-tab,.rc-tabs-right.rc-tabs-editable .rc-tabs-tab{padding-right:32px}.rc-tabs-left .rc-tabs-nav-wrap,.rc-tabs-right .rc-tabs-nav-wrap{flex-direction:column}.rc-tabs-left .rc-tabs-ink-bar,.rc-tabs-right .rc-tabs-ink-bar{width:3px}.rc-tabs-left .rc-tabs-nav,.rc-tabs-right .rc-tabs-nav{flex-direction:column;min-width:50px}.rc-tabs-left .rc-tabs-nav-list,.rc-tabs-left .rc-tabs-nav-operations,.rc-tabs-right .rc-tabs-nav-list,.rc-tabs-right .rc-tabs-nav-operations{flex:1 0 auto;flex-direction:column}.rc-tabs-left .rc-tabs-ink-bar{right:0}.rc-tabs-right .rc-tabs-nav{order:1}.rc-tabs-right .rc-tabs-content{order:0}.rc-tabs-right .rc-tabs-ink-bar{left:0}.rc-tabs-dropdown-rtl,.rc-tabs-rtl{direction:rtl}.rc-tabs{border:1px solid gray;font-size:14px;overflow:hidden}.rc-tabs-nav{display:flex;flex:none;position:relative}.rc-tabs-nav-measure,.rc-tabs-nav-wrap{display:inline-block;display:flex;flex:auto;overflow:hidden;position:relative;transform:translate(0);white-space:nowrap}.rc-tabs-nav-measure-ping-left:before,.rc-tabs-nav-measure-ping-right:after,.rc-tabs-nav-wrap-ping-left:before,.rc-tabs-nav-wrap-ping-right:after{bottom:0;content:"";position:absolute;top:0}.rc-tabs-nav-measure-ping-left:before,.rc-tabs-nav-wrap-ping-left:before{border-left:1px solid red;left:0}.rc-tabs-nav-measure-ping-right:after,.rc-tabs-nav-wrap-ping-right:after{border-right:1px solid red;right:0}.rc-tabs-nav-measure-ping-bottom:after,.rc-tabs-nav-measure-ping-top:before,.rc-tabs-nav-wrap-ping-bottom:after,.rc-tabs-nav-wrap-ping-top:before{content:"";left:0;position:absolute;right:0}.rc-tabs-nav-measure-ping-top:before,.rc-tabs-nav-wrap-ping-top:before{border-top:1px solid red;top:0}.rc-tabs-nav-measure-ping-bottom:after,.rc-tabs-nav-wrap-ping-bottom:after{border-top:1px solid red;bottom:0}.rc-tabs-nav-list{display:flex;position:relative;transition:transform .3s}.rc-tabs-nav-operations{display:flex}.rc-tabs-nav-operations-hidden{pointer-events:none;position:absolute;visibility:hidden}.rc-tabs-nav-more{background:rgba(255,0,0,.1);border:1px solid blue}.rc-tabs-nav-add{background:rgba(0,255,0,.1);border:1px solid green}.rc-tabs-tab{align-items:center;background:hsla(0,0%,100%,.5);border:0;cursor:pointer;display:flex;font-size:20px;font-weight:lighter;margin:0;outline:none;position:relative}.rc-tabs-tab-btn,.rc-tabs-tab-remove{background:transparent;border:0}.rc-tabs-tab-btn{font-weight:inherit;line-height:32px}.rc-tabs-tab-remove:hover{color:red}.rc-tabs-tab-active{font-weight:bolder}.rc-tabs-ink-bar{background:red;pointer-events:none;position:absolute}.rc-tabs-ink-bar-animated{transition:all .3s}.rc-tabs-extra-content{flex:none}');
          var HS, US, WS, VS, XS, GS, YS, qS, KS, $S = Rt((e => {
            var {
              handleOperate: t,
              defaultSize: n,
              defaultRotate: r,
              orderList: i,
              onReset: o,
              onConfirm: a
            } = e, {
              formatMessage: s
            } = vo();
            return zl("div", {
              className: xk,
              children: zl(yk, {
                defaultActiveKey: "1",
                onChange: e => {},
                className: wk,
                tabBarStyle: {
                  flex: 1,
                  background: "rgba(230, 230, 230, 0.4)"
                },
                children: [zl(gk, {
                  disabled: !0,
                  tab: zl(FS, {
                    className: "icon-custom",
                    onClick: o
                  })
                }, "0"), zl(gk, {
                  tab: s({
                    id: "size"
                  }),
                  className: kk,
                  children: zl(Bk, {
                    onChange: e => t("size", e),
                    defaultData: n
                  })
                }, "1"), zl(gk, {
                  tab: s({
                    id: "rotate"
                  }),
                  className: kk,
                  children: zl(vC, {
                    onChange: e => t("rotate", e),
                    defaultValue: r
                  })
                }, "2"), zl(gk, {
                  tab: s({
                    id: "order"
                  }),
                  className: kk,
                  children: zl(RS, {
                    defaultValue: i,
                    onChange: e => t("order", e)
                  })
                }, "3"), zl(gk, {
                  disabled: !0,
                  tab: zl(zS, {
                    className: "icon-custom",
                    onClick: a
                  })
                }, "4")]
              })
            })
          }));

          function ZS() {
            return ZS = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, ZS.apply(this, arguments)
          }
          var JS = e => Te("svg", ZS({
              width: 119,
              height: 103,
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg"
            }, e), HS || (HS = Te("rect", {
              x: 1.896,
              y: 20.176,
              width: 100,
              height: 77.551,
              rx: 4,
              transform: "rotate(-8 1.896 20.176)",
              fill: "#EBECED"
            })), US || (US = Te("g", {
              filter: "url(#UploadEmpty_svg__a)"
            }, Te("rect", {
              x: 8,
              y: 15,
              width: 98,
              height: 76,
              rx: 4,
              fill: "#fff"
            }))), WS || (WS = Te("rect", {
              x: 12,
              y: 19,
              width: 90,
              height: 68,
              rx: 3,
              fill: "url(#UploadEmpty_svg__b)"
            })), VS || (VS = Te("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M52.985 87H15a3 3 0 0 1-3-3v-9.35l12.64-11.907a4 4 0 0 1 5.655.169L52.985 87Z",
              fill: "url(#UploadEmpty_svg__c)"
            })), XS || (XS = Te("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M102 73.691v10.31a3 3 0 0 1-3 3H28.395L58.23 49.274a8 8 0 0 1 11.237-1.312L102 73.69Z",
              fill: "url(#UploadEmpty_svg__d)"
            })), GS || (GS = Te("circle", {
              cx: 25,
              cy: 33,
              r: 6,
              fill: "#D3D3D3"
            })), YS || (YS = Te("circle", {
              cx: 104,
              cy: 15,
              r: 15,
              fill: "#333",
              fillOpacity: .9
            })), qS || (qS = Te("path", {
              d: "M108.619 13.85h-3.469v-3.47a1.149 1.149 0 1 0-2.3 0v3.47h-3.47a1.149 1.149 0 1 0 0 2.3h3.47v3.47a1.149 1.149 0 1 0 2.3 0v-3.47h3.469a1.149 1.149 0 1 0 0-2.3Z",
              fill: "#fff"
            })), KS || (KS = Te("defs", null, Te("linearGradient", {
              id: "UploadEmpty_svg__b",
              x1: 57,
              y1: 19,
              x2: 57,
              y2: 87,
              gradientUnits: "userSpaceOnUse"
            }, Te("stop", {
              stopColor: "#F5F5F5"
            }), Te("stop", {
              offset: 1,
              stopColor: "#F1F1F1"
            }), Te("stop", {
              offset: 1,
              stopColor: "#F1F1F1"
            })), Te("linearGradient", {
              id: "UploadEmpty_svg__c",
              x1: 38.615,
              y1: 57.687,
              x2: 38.615,
              y2: 97,
              gradientUnits: "userSpaceOnUse"
            }, Te("stop", {
              stopColor: "#E2E2E2"
            }), Te("stop", {
              offset: 1,
              stopColor: "#E1E1E1"
            })), Te("linearGradient", {
              id: "UploadEmpty_svg__d",
              x1: 62.337,
              y1: 52.452,
              x2: 62.337,
              y2: 96.902,
              gradientUnits: "userSpaceOnUse"
            }, Te("stop", {
              offset: 0,
              stopColor: "#E5E5E6"
            }), Te("stop", {
              offset: 1,
              stopColor: "#D3D3D3"
            })), Te("filter", {
              id: "UploadEmpty_svg__a",
              x: 0,
              y: 11,
              width: 114,
              height: 92,
              filterUnits: "userSpaceOnUse",
              colorInterpolationFilters: "sRGB"
            }, Te("feFlood", {
              floodOpacity: 0,
              result: "BackgroundImageFix"
            }), Te("feColorMatrix", {
              in: "SourceAlpha",
              values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",
              result: "hardAlpha"
            }), Te("feOffset", {
              dy: 4
            }), Te("feGaussianBlur", {
              stdDeviation: 4
            }), Te("feComposite", {
              in2: "hardAlpha",
              operator: "out"
            }), Te("feColorMatrix", {
              values: "0 0 0 0 0.133333 0 0 0 0 0.133333 0 0 0 0 0.133333 0 0 0 0.03 0"
            }), Te("feBlend", {
              in2: "BackgroundImageFix",
              result: "effect1_dropShadow_188_17874"
            }), Te("feBlend", {
              in: "SourceGraphic",
              in2: "effect1_dropShadow_188_17874",
              result: "shape"
            }))))),
            QS = "DesignUpload-module_design_upload__rei3k",
            eE = "DesignUpload-module_pointer__Aud8c",
            tE = "DesignUpload-module_loading__4cg3s";
          c(".DesignUpload-module_design_upload__rei3k{display:flex;height:584px}.DesignUpload-module_pointer__Aud8c{cursor:pointer}.DesignUpload-module_loading__4cg3s{transform:scale(.6)}");
          var nE = zl(JS, {}),
            rE = e => {
              var {
                width: t,
                height: n,
                children: r,
                fieldName: i
              } = e, [o, a] = dt(null), [s, l] = dt(""), [c, u] = ef(), {
                formatMessage: h
              } = vo();
              return zl("div", {
                className: Rl([e.className, QS]),
                style: {
                  width: t,
                  height: n
                },
                children: [zl(cp, {
                  className: eE,
                  action: null == o ? void 0 : o.write_host,
                  accept: "image/png,image/jpeg,image/gif",
                  beforeUpload: e => e.size > L ? (c.open({
                    content: h({
                      id: "image_size_tip"
                    })
                  }), !1) : (e.status = "uploading", l(N), e.objectName = "".concat(window.SHOP_PARAMS.shop_id, "/").concat((new Date).getTime(), ".").concat((y(e.type) || w(e.name)).toLowerCase()), !!(o && Date.now() < 1e3 * o
                    .expire) || v().then((t => (a(t.data), e)))),
                  data: e => ({
                    policy: o.policy,
                    OSSAccessKeyId: o.access_id,
                    success_action_status: 200,
                    signature: o.sign,
                    "x-oss-forbid-overwrite": !0,
                    key: e.objectName
                  }),
                  onSuccess: (t, n) => {
                    n.status = "success", n.url = o.read_host + n.objectName, n.label_id = i, l(R), e.onSuccess(n)
                  },
                  onError: (e, t, n) => {
                    n.status = "error"
                  },
                  tabIndex: "0",
                  children: N === s ? zl(Pp, {
                    className: tE
                  }) : r || nE
                }), u]
              })
            },
            iE = "Design-module_app_parakeet_design__container__FrvSK",
            oE = "Design-module_show__WZcJY",
            aE = "Design-module_border_dash__-6wEJ",
            sE = "Design-module_hidden__35G87",
            lE = "Design-module_upload__d0XVy",
            cE = "Design-module_upload_dialog__fCkjQ",
            uE = "Design-module_wrapper__WGJzH";
          c(".Design-module_app_parakeet_design__container__FrvSK *{box-sizing:border-box}.Design-module_app_parakeet_design__container__FrvSK{border:2px solid hsla(0,0%,90%,.6);border-radius:8px;display:none}.Design-module_app_parakeet_design__container__FrvSK .canvas-container canvas{border-radius:8px}.Design-module_show__WZcJY{display:block!important}.Design-module_border_dash__-6wEJ{border-style:dashed!important}.Design-module_hidden__35G87{display:none!important}.Design-module_upload__d0XVy{align-items:center;background-color:#fdfdfd;border-radius:8px;display:flex;justify-content:center}.Design-module_upload_dialog__fCkjQ{border-radius:8px;left:50%;margin:0!important;padding:0!important;position:absolute!important;top:50%;transform:translateX(-50%) translateY(-50%);width:auto!important}.Design-module_preview_img__B65MY{max-height:100%;max-height:544px;max-width:100%}.Design-module_footer__YubKC{height:56px}.Design-module_app_parakeet_design__container__FrvSK .Design-module_upload_dialog__fCkjQ{margin:0!important}.Design-module_upload_dialog__fCkjQ .rc-dialog-body{padding:0}@media screen and (max-width:959px){.Design-module_wrapper__WGJzH{padding:0 16px}.eva .parakeet-design--wrapper{padding:0}.flash .parakeet-design--wrapper{padding:0 8px}}"),
            X.fabric.Object.prototype.transparentCorners = !1, X.fabric.Object.prototype.cornerColor = "#fff", X.fabric.Object.prototype.borderColor = "#599BFF", X.fabric.Object.prototype.cornerStrokeColor = "#599BFF", X.fabric.Object.prototype
            .cornerSize = 8;
          var hE = Ft(((e, t) => {
              var {
                data: n,
                visible: r,
                onAddFIle: i,
                setTab: o,
                onDelete: a,
                fileName: s,
                hasChangeSave: l
              } = e, c = vt(null), [u, h] = dt(""), [p, d] = dt(null), [f, g] = dt(), [m, v] = dt(), [b, y] = dt(!0), [w, x] = dt(!1), {
                formatMessage: k
              } = vo(), [C, D] = dt(""), [I, N] = dt(""), [R, j] = ef(), [L, F] = dt([]), [B, z] = dt({}), H = (e, t) => {
                var n = [...L];
                L.forEach(((t, r) => {
                  var i;
                  e.includes(t.label_id) && (u.remove(null === (i = L[r]) || void 0 === i ? void 0 : i.el), n.splice(r, 1, ""))
                }));
                var r = n.filter((e => e));
                F(r), r.length || t()
              };
              _t(t, (() => ({
                compositeUrl: C,
                removeImg: H,
                uploadFile: $
              })));
              var U = t => {
                  t.lockScalingFlip = !0, t.on("scaling", (() => {
                    (e => {
                      var {
                        width: t,
                        height: n,
                        scaleX: r,
                        scaleY: i
                      } = e;
                      r * t > O && (e.scaleX = O / t), r * t < T && (e.scaleX = T / t), i * n > O && (e.scaleY = O / n), i * n < T && (e.scaleY = T / n);
                      var o = Math.ceil(t * e.scaleX),
                        a = Math.ceil(n * e.scaleY);
                      g({
                        width: o,
                        height: a
                      })
                    })(t), e.hasChangeSave(!1)
                  })), t.on("moving", (() => {
                    t.preTop = t.top, t.preLeft = t.left
                  })), g((e => ({
                    height: Math.ceil(parseInt(e.getScaledHeight(), 10)),
                    width: Math.ceil(parseInt(e.getScaledWidth(), 10))
                  }))(t))
                },
                W = (t, n, r) => {
                  new X.fabric.Image.fromURL(t, (function(i) {
                    (e => {
                      var {
                        width: t,
                        height: n
                      } = e, r = e.scaleX * t > O, i = e.scaleX * t < T, o = e.scaleY * n > O, a = e.scaleY * n < T;
                      r ? e.scaleX = O / t : i && (e.scaleX = T / t), o ? e.scaleY = O / n : a && (e.scaleY = T / n);
                      var s = Math.max(e.scaleX, e.scaleY);
                      (r || o || i || a) && !(s * t > O || s * t < T) && (e.scaleY = s, e.scaleX = s);
                      var l = Math.ceil(t * e.scaleX),
                        c = Math.ceil(n * e.scaleY);
                      e._initData = {
                        scaleX: e.scaleX,
                        scaleY: e.scaleY
                      }, g({
                        width: l,
                        height: c
                      })
                    })(i), (e => {
                      var {
                        scaleX: t,
                        scaleY: n,
                        width: r,
                        height: i
                      } = e, o = n * i, a = t * r, s = u.height - 36, l = u.width - 36, c = 1, h = o > s, p = a > l;
                      if (h && (c = s / i), p && (c = Math.min(l / r, c)), h || p) {
                        var d = c * r > T && c * i > T,
                          f = Math.max(l / r, s / i),
                          m = !d && pa ? f : c = Math.min(l / r, c);
                        e.scaleX = m, e.scaleY = m;
                        var v = Math.ceil(r * e.scaleX),
                          _ = Math.ceil(i * e.scaleY);
                        g({
                          width: v,
                          height: _
                        }), e._initData = {
                          scaleX: m,
                          scaleY: m
                        }
                      }
                      e.setPositionByOrigin(new X.fabric.Point(u.width / 2, u.height / 2))
                    })(i), u.add(i), (t => {
                      t.on("selected", (() => {
                        d(t), v(t.angle || 0), U(t), y(!1)
                      })), t.on("moving", (() => {
                        e.hasChangeSave(!1)
                      })), t.setControlVisible("mtr", !1)
                    })(i), u.setActiveObject(i), F([{
                      url: t,
                      el: i,
                      id: n,
                      label_id: r
                    }, ...L])
                  }), {
                    crossOrigin: "anonymous"
                  })
                };
              gt((() => {
                var e = Y();
                h(e), e.on("selection:cleared", (() => {
                  y(!0)
                }))
              }), []);
              var V = e => {
                  z(e);
                  var t = new FileReader;
                  t.readAsDataURL(e), t.onload = function(e) {
                    N(e.target.result), x(!0)
                  }
                },
                G = e => {
                  var t, {
                      uid: n
                    } = e,
                    r = [...L].findIndex((e => e.id === n));
                  u.remove(null === (t = L[r]) || void 0 === t ? void 0 : t.el);
                  var i = [...L];
                  i.splice(r, 1), F(i)
                };
              gt((() => (hu.$on(P, V), hu.$on(M, G), () => {
                hu.$off(P, V), hu.$off(M, G)
              })), [u, L]);
              var Y = () => {
                  var {
                    width: e,
                    height: t
                  } = n, r = e - 4;
                  return new X.fabric.Canvas(c.current, {
                    height: t,
                    width: r,
                    backgroundColor: "#fff",
                    selection: !1
                  })
                },
                q = yt((e => {
                  x(!1), N(""), null == a || a(e)
                }), [a]),
                K = yt((() => {
                  var {
                    scaleX: e,
                    scaleY: t
                  } = p._initData;
                  p.set({
                    scaleX: e,
                    scaleY: t
                  }), p.rotate(0), p.angle = 0, v(0), p.setPositionByOrigin(new X.fabric.Point(u.width / 2, u.height / 2)), u.renderAll(), l(!1), g({
                    width: p.width * e,
                    height: p.height * t
                  })
                }), [p, u, l]),
                $ = () => {
                  Z().then((e => {
                    D(e), u.discardActiveObject(), u.requestRenderAll(), y(!0), l(!0)
                  })).catch((() => {
                    R.open({
                      content: k({
                        id: "image_upload_fail"
                      })
                    })
                  }))
                },
                Z = () => {
                  var e = u.toDataURL({
                    width: u.width,
                    height: u.height,
                    left: 0,
                    top: 0,
                    multiplier: 2,
                    format: A
                  });
                  if (!L.length) return Promise.resolve();
                  var t = S(A);
                  return _(E(e), t)
                },
                {
                  width: J,
                  height: Q
                } = n,
                ee = J - 4;
              return zl("div", {
                className: Rl([
                  [uE, "parakeet-design--wrapper"]
                ]),
                children: zl("div", {
                  id: "app-parakeet-design--container",
                  className: Rl([iE, {
                    [oE]: r
                  }, {
                    [aE]: !L.length
                  }]),
                  children: [zl("div", {
                    className: Rl([L.length > 0 ? oE : sE]),
                    children: zl("canvas", {
                      ref: c
                    })
                  }), !L.length && zl(rE, {
                    className: lE,
                    width: ee,
                    height: Q,
                    onSuccess: e => {
                      i(e), V(e)
                    },
                    fieldName: s
                  }), !b && zl($S, {
                    defaultSize: f,
                    orderList: L,
                    defaultRotate: m || 0,
                    handleOperate: (t, n) => {
                      "size" === t ? (e => {
                        var {
                          width: t,
                          height: n
                        } = e, r = p.getOriginalSize();
                        p.set({
                          scaleX: t / r.width,
                          scaleY: n / r.height
                        })
                      })(n) : "rotate" === t ? (e => {
                        p.rotate(e), v(e)
                      })(n) : "order" === t && function() {
                        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
                        [...e].reverse().forEach((e => {
                          e.el.bringToFront()
                        })), F(e), u.renderAll()
                      }(n), e.hasChangeSave(!1), u.renderAll()
                    },
                    onReset: K,
                    onConfirm: $
                  }), w && I && zl(R_, {
                    className: cE,
                    title: null,
                    onClose: () => {
                      x(!1), N("")
                    },
                    closable: !1,
                    maskClosable: !1,
                    visible: !0,
                    children: zl(Kv, {
                      file: B,
                      url: I,
                      onConfirm: e => {
                        W(e.dataUrl, e.uid, e.label_id), x(!1), N(""), o(), l(!1), window.scrollTo(0, 0)
                      },
                      onCancel: q
                    })
                  }), j]
                })
              })
            })),
            pE = (e, t) => e.currentStyle ? e.currentStyle[t] : getComputedStyle(e)[t];
          c(
          '.rc-dialog{margin:10px;position:relative;width:auto}.rc-dialog-wrap{-webkit-overflow-scrolling:touch;bottom:0;left:0;outline:0;overflow:auto;position:fixed;right:0;top:0;z-index:1050}.rc-dialog-title{font-size:14px;font-weight:700;line-height:21px;margin:0}.rc-dialog-content{background-clip:padding-box;background-color:#fff;border:none;border-radius:6px 6px;position:relative}.rc-dialog-close{background:transparent;border:0;color:#000;cursor:pointer;filter:alpha(opacity=20);font-size:21px;font-weight:700;line-height:1;opacity:.2;position:absolute;right:20px;text-decoration:none;text-shadow:0 1px 0 #fff;top:12px}.rc-dialog-close-x:after{content:"×"}.rc-dialog-close:hover{filter:alpha(opacity=100);opacity:1;text-decoration:none}.rc-dialog-header{background:#fff;border-bottom:1px solid #e9e9e9;border-radius:5px 5px 0 0;color:#666;padding:13px 20px 14px}.rc-dialog-body{padding:20px}.rc-dialog-footer{border-radius:0 0 5px 5px;border-top:1px solid #e9e9e9;padding:10px 20px;text-align:right}.rc-dialog-zoom-appear,.rc-dialog-zoom-enter{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;animation-timing-function:cubic-bezier(.08,.82,.17,1);opacity:0}.rc-dialog-zoom-leave{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.rc-dialog-zoom-appear.rc-dialog-zoom-appear-active,.rc-dialog-zoom-enter.rc-dialog-zoom-enter-active{animation-name:rcDialogZoomIn;animation-play-state:running}.rc-dialog-zoom-leave.rc-dialog-zoom-leave-active{animation-name:rcDialogZoomOut;animation-play-state:running}@keyframes rcDialogZoomIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes rcDialogZoomOut{0%{transform:scale(1)}to{opacity:0;transform:scale(0)}}@media (min-width:768px){.rc-dialog{margin:30px auto;width:600px}}.rc-dialog-mask{background-color:#373737;background-color:rgba(55,55,55,.6);bottom:0;filter:alpha(opacity=50);height:100%;left:0;position:fixed;right:0;top:0;z-index:1050}.rc-dialog-mask-hidden{display:none}.rc-dialog-fade-appear,.rc-dialog-fade-enter{opacity:0}.rc-dialog-fade-appear,.rc-dialog-fade-enter,.rc-dialog-fade-leave{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;animation-timing-function:cubic-bezier(.55,0,.55,.2)}.rc-dialog-fade-appear.rc-dialog-fade-appear-active,.rc-dialog-fade-enter.rc-dialog-fade-enter-active{animation-name:rcDialogFadeIn;animation-play-state:running}.rc-dialog-fade-leave.rc-dialog-fade-leave-active{animation-name:rcDialogFadeOut;animation-play-state:running}@keyframes rcDialogFadeIn{0%{opacity:0}to{opacity:1}}@keyframes rcDialogFadeOut{0%{opacity:1}to{opacity:0}}');
          var dE;

          function fE() {
            return fE = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, fE.apply(this, arguments)
          }
          c(
          '.rc-notification{align-items:flex-end;display:flex;max-height:100vh;overflow-y:auto;padding:10px;position:fixed;z-index:1000}.rc-notification-top,.rc-notification-topLeft,.rc-notification-topRight{flex-direction:column;top:0}.rc-notification-topRight{right:0}.rc-notification-notice{background:#fff;border:0 solid transparent;border-radius:3px 3px;box-shadow:0 0 10px rgba(0,0,0,.2);box-sizing:border-box;display:block;line-height:1.5;margin:12px 0;position:relative;width:auto}.rc-notification-notice-content{padding:7px 20px 7px 10px}.rc-notification-notice-closable .rc-notification-notice-content{padding-right:20px}.rc-notification-notice-close{color:#000;cursor:pointer;filter:alpha(opacity=20);font-size:16px;font-weight:700;line-height:1;opacity:.2;outline:none;position:absolute;right:5px;text-decoration:none;text-shadow:0 1px 0 #fff;top:3px}.rc-notification-notice-close-x:after{content:"×"}.rc-notification-notice-close:hover{filter:alpha(opacity=100);opacity:1;text-decoration:none}.rc-notification-fade{overflow:hidden;transition:all .3s}.rc-notification-fade-appear-start{opacity:0;transform:translateX(100%)}.rc-notification-fade-appear-active{opacity:1;transform:translateX(0)}');
          var gE = e => Te("svg", fE({
            width: 24,
            height: 24,
            fill: "none",
            xmlns: "http://www.w3.org/2000/svg"
          }, e), dE || (dE = Te("path", {
            d: "M6.992 5.342a1.167 1.167 0 0 0-1.65 1.65L10.35 12l-5.008 5.008a1.167 1.167 0 1 0 1.65 1.65L12 13.65l5.008 5.008a1.167 1.167 0 0 0 1.65-1.65L13.65 12l5.008-5.008a1.167 1.167 0 0 0-1.65-1.65L12 10.35 6.992 5.342Z",
            fill: "#333"
          })));
          var mE = {
              customize_not_complete: "商品定制未完成",
              select_add_price_tip: "选择{key}将加价{price}",
              add_price_tip: "{key}将加价{price}",
              select: "选择",
              cancel: "取消",
              size: "尺寸",
              rotate: "旋转",
              order: "顺序",
              width: "宽度",
              height: "高度",
              size_range: "尺寸范围",
              upload_img_price: "上传图片价格",
              image_upload_success: "图片上传成功",
              image_upload_fail: "图片上传失败 ",
              image_size_tip: "图片大小超过10M",
              url_confirm_title: "保存设计图",
              url_confirm_desc: "是否要保存并上传设计图至订单?",
              url_confirm_yes: "是的",
              url_confirm_no: "不需要",
              preview_personalization: "预览定制效果",
              view_product_image: "查看商品图集",
              font_color: "文本颜色",
              font: "字体",
              font_size: "字号",
              preview_range_tip: "请勿超出打印区域",
              "options.upload.large.text": "将您的图片拖放到此处,或者",
              "options.upload.large.text.mobile": "在此上传图片",
              "options.upload.large.browse": "浏览",
              "options.upload.large.limit": "接受 .gif、.jpg、.jpeg 和 .png,最大 10MB",
              "options.upload.large.maxfiles": "最大上传数量",
              upload_max_tip: "图片上传数量不应超过{max}张",
              image_upload_section_fail: "部分图片上传失败",
              required_tip: "此项为必填项"
            },
            vE = {
              hello: "hello",
              customize_not_complete: "Product customization is not completed",
              select_add_price_tip: "Selection of {key} will add {price} to the price",
              add_price_tip: "{key} will add {price} to the price",
              select: "Select",
              cancel: "Cancel",
              size: "Size",
              rotate: "Rotate",
              order: "Order",
              width: "Width",
              height: "Height",
              size_range: "Size range",
              upload_img_price: "Image upload price",
              image_upload_success: "Upload successfully",
              image_upload_fail: "Upload failed",
              image_size_tip: "Image size exceeds 10M",
              url_confirm_title: "Save your design",
              url_confirm_desc: "Do you want to save and upload the design to your order?",
              url_confirm_yes: "Yes",
              url_confirm_no: "No",
              preview_personalization: "Preview your personalization",
              view_product_image: "View original product image",
              font_color: "Font color",
              font: "Font",
              font_size: "Font size",
              preview_range_tip: "Please keep it inside the print area",
              "options.upload.large.text": "Drop your image here, or ",
              "options.upload.large.text.mobile": "Upload your image here",
              "options.upload.large.browse": "browse",
              "options.upload.large.limit": "Accepts .gif, .jpg, .jpeg, and .png, 10MB max",
              "options.upload.large.maxfiles": "Maximum number of uploads",
              upload_max_tip: "Maximum number of uploads: {max}",
              image_upload_section_fail: "Some images failed to upload",
              required_tip: "This is a required field"
            },
            _E = {
              customize_not_complete: "Produktanpassung nicht abgeschlossen",
              select_add_price_tip: "Wählen Sie {key} erhöht den Preis um {price}",
              add_price_tip: "{key} Addiert {price} zum Preis",
              select: "Wählen Sie",
              cancel: "Abbrechen",
              size: "Größe",
              rotate: "Drehen",
              order: "Bestellung",
              width: "Breite",
              height: "Höhe",
              size_range: "Größenbereich",
              upload_img_price: "Bildpreis hochladen",
              image_upload_success: "Bild erfolgreich hochgeladen",
              image_upload_fail: "Bild-Upload fehlgeschlagen ",
              image_size_tip: "Die Bildgröße überschreitet 10 MB",
              url_confirm_title: "Speichern Sie die Blaupause",
              url_confirm_desc: "Möchten Sie das Design speichern und in die Bestellung hochladen?",
              url_confirm_yes: "Ja",
              url_confirm_no: "unnötig",
              preview_personalization: "Sehen Sie sich Ihre Personalisierung in der Vorschau an",
              view_product_image: "Originalproduktbild ansehen",
              font_color: "Schriftfarbe",
              font: "Schriftart",
              font_size: "Schriftgröße",
              preview_range_tip: "Bitte bewahren Sie es innerhalb des Druckbereichs auf",
              "options.upload.large.text": "Legen Sie Ihr Bild hier ab oder ",
              "options.upload.large.text.mobile": "Laden Sie Ihr Bild hier hoch",
              "options.upload.large.browse": "stöbern Sie",
              "options.upload.large.limit": "Akzeptiert .gif, .jpeg, .jpg und .png, maximal 10 MB",
              "options.upload.large.maxfiles": "Maximale Anzahl an Uploads",
              upload_max_tip: "Maximale Anzahl an Uploads {max}",
              image_upload_section_fail: "Einige Bilder konnten nicht hochgeladen werden",
              required_tip: "Das ist ein Pflichtfeld"
            },
            bE = {
              customize_not_complete: "No se ha completado la personalización del producto",
              select_add_price_tip: "Seleccione {key} añadirá {price} al precio",
              add_price_tip: "{key} Añadir {price} al precio",
              select: "Seleccione",
              cancel: "Cancelar",
              size: "Tamaño",
              rotate: "Girar",
              order: "Pedir",
              width: "Anchura",
              height: "Altura",
              size_range: "Tamaño",
              upload_img_price: "Subir imagen precio",
              image_upload_success: "Imagen cargada con éxito",
              image_upload_fail: "Carga de imagen fallida",
              image_size_tip: "El tamaño de la imagen supera los 10M",
              url_confirm_title: "Guardar el plano",
              url_confirm_desc: "¿Quieres guardar y subir el diseño al pedido?",
              url_confirm_yes: "Sí",
              url_confirm_no: "innecesario",
              preview_personalization: "Vista previa de su personalización",
              view_product_image: "Ver imagen original del producto",
              font_color: "Color de fuente",
              font: "Fuente",
              font_size: "Tamaño de fuente",
              preview_range_tip: "Manténgalo dentro del área de impresión",
              "options.upload.large.text": "Suelta tu imagen aquí, o ",
              "options.upload.large.text.mobile": "Sube tu imagen aquí",
              "options.upload.large.browse": "navega",
              "options.upload.large.limit": "Acepta .gif, .jpeg, .jpg y .png, 10 MB máx",
              "options.upload.large.maxfiles": "Número máximo de subidas",
              upload_max_tip: "Número máximo de subidas {max}",
              image_upload_section_fail: "Algunas imágenes no se pudieron cargar",
              required_tip: "Este es un campo obligatorio"
            },
            yE = {
              customize_not_complete: "La personnalisation du produit n'est pas terminée",
              select_add_price_tip: "Sélectionner {key} ajoutera {price} au prix",
              add_price_tip: "{key} Ajouter {price} au prix",
              select: "Sélectionnez",
              cancel: "Annuler",
              size: "Taille",
              rotate: "Faire pivoter",
              order: "Commander",
              width: "Largeur",
              height: "Hauteur",
              size_range: "Gamme de taille",
              upload_img_price: "Télécharger le prix de l'image",
              image_upload_success: "Image téléchargée avec succès",
              image_upload_fail: "Le téléchargement de l'image a échoué ",
              image_size_tip: "La taille de l'image dépasse 10M",
              url_confirm_title: "Enregistrer le plan",
              url_confirm_desc: "Voulez-vous enregistrer et télécharger le design dans la commande ?",
              url_confirm_yes: "Oui",
              url_confirm_no: "nutile",
              preview_personalization: "Prévisualisez votre personnalisation",
              view_product_image: "Voir l'image originale du produit",
              preview_range_tip: "Veuillez le conserver à l'intérieur de la zone d'impression",
              font_color: "Couleur de la police",
              font: "Police de caractère",
              font_size: "Taille de police",
              "options.upload.large.text": "Déposez votre image ici, ou ",
              "options.upload.large.text.mobile": "Téléchargez votre image ici",
              "options.upload.large.browse": "parcourez",
              "options.upload.large.limit": "Accepte .gif, .jpeg, .jpg et .png, 10 Mo max",
              "options.upload.large.maxfiles": "Nombre maximal de téléchargements",
              upload_max_tip: "Nombre maximal de téléchargements: {max}",
              image_upload_section_fail: "Certaines images n'ont pas pu être téléchargées",
              required_tip: "Ceci est un champ obligatoire"
            },
            wE = {
              customize_not_complete: "Kustomisasi komoditas belum selesai",
              select_add_price_tip: "Memilih {key} akan menambahkan {price}",
              add_price_tip: "{key} akan menaikkan harga sebesar {price}",
              select: "memilih",
              cancel: "Membatalkan",
              size: "ukuran",
              rotate: "untuk memutar",
              order: "memesan",
              width: "lebar",
              height: "tinggi",
              size_range: "Kisaran ukuran",
              upload_img_price: "Unggah harga gambar",
              image_upload_success: "Gambar berhasil diunggah",
              image_upload_fail: "Pengunggahan gambar gagal",
              image_size_tip: "Ukuran gambar melebihi 10M",
              url_confirm_title: "Simpan cetak biru",
              url_confirm_desc: "Apakah Anda ingin menyimpan dan mengunggah desain ke pesanan?",
              url_confirm_yes: "Ya",
              url_confirm_no: "tidak perlu",
              preview_personalization: "Pratinjau personalisasi Anda",
              view_product_image: "Lihat gambar produk asli",
              font_color: "Warna huruf",
              font: "Fon",
              font_size: "Ukuran huruf",
              preview_range_tip: "Harap simpan di dalam area cetak",
              "options.upload.large.text": "Jatuhkan gambar Anda di sini, atau ",
              "options.upload.large.text.mobile": "Unggah gambar Anda di sini",
              "options.upload.large.browse": "jelajahi",
              "options.upload.large.limit": "Menerima .gif, .jpeg, .jpg, dan .png, maksimal 10MB",
              "options.upload.large.maxfiles": "Jumlah unggahan maksimum",
              upload_max_tip: "Jumlah unggahan maksimum {max}",
              image_upload_section_fail: "Beberapa gambar gagal diunggah",
              required_tip: "Ini adalah kolom yang harus diisi"
            },
            xE = {
              customize_not_complete: "Personalizzazione del prodotto non completata",
              select_add_price_tip: "Selezionare {key} aggiungerà {price} al prezzo",
              add_price_tip: "{key} Aggiungi {price} al prezzo",
              select: "Selezionare",
              cancel: "Annulla",
              size: "Dimensione",
              rotate: "Ruotare",
              order: "Ordine",
              width: "Larghezza",
              height: "Altezza",
              size_range: "Gamma di dimensioni",
              upload_img_price: "Carica il prezzo dell'immagine",
              image_upload_success: "Immagine caricata con successo",
              image_upload_fail: "Caricamento dell'immagine non riuscito",
              image_size_tip: "La dimensione dell'immagine supera i 10M",
              url_confirm_title: "Salva il progetto",
              url_confirm_desc: "Vuoi salvare e caricare il design nell'ordine?",
              url_confirm_yes: "SÌ",
              url_confirm_no: "non necessario",
              preview_personalization: "Visualizza in anteprima la tua personalizzazione",
              view_product_image: "Visualizza l'immagine del prodotto originale",
              font_color: "Visualizza l'immagine del prodotto originale",
              font: "Font",
              font_size: "Dimensione del font",
              preview_range_tip: "Si prega di tenerlo all'interno dell'area di stampa",
              "options.upload.large.text": "Trascina qui la tua immagine o ",
              "options.upload.large.text.mobile": "Carica qui la tua immagine",
              "options.upload.large.browse": "sfoglia",
              "options.upload.large.limit": "Accetta .gif, .jpeg, .jpg e .png, 10 MB max",
              "options.upload.large.maxfiles": "Numero massimo di caricamenti",
              upload_max_tip: "Numero massimo di caricamenti {max}",
              image_upload_section_fail: "Impossibile caricare alcune immagini",
              required_tip: "Questo è un campo obbligatorio"
            },
            kE = {
              customize_not_complete: "製品のカスタマイズが完了しない",
              select_add_price_tip: "セレクト{key} を選択すると、価格に{price}ドルが加算されます",
              add_price_tip: "{key} 価格に{price}を加算する ",
              select: "選択する",
              cancel: "キャンセル",
              size: "サイズ",
              rotate: "回転させる",
              order: "注文方法",
              width: "幅",
              height: "高さ",
              size_range: "サイズ範囲",
              upload_img_price: "画像の価格をアップロードする",
              image_upload_success: "画像が正常にアップロードされました",
              image_upload_fail: "画像のアップロードに失敗しました",
              image_size_tip: "画像サイズが10Mを超える.",
              url_confirm_title: "設計図を保存する",
              url_confirm_desc: "デザインを保存して注文にアップロードしますか?",
              url_confirm_yes: "はい",
              url_confirm_no: "不要",
              preview_personalization: "パーソナライズをプレビューする",
              view_product_image: "元の製品画像を見る",
              font_color: "文字の色",
              font: "フォント",
              font_size: "フォントサイズ",
              preview_range_tip: "印刷範囲内に収めてください",
              "options.upload.large.text": "ここに画像をドロップするか、参照してください",
              "options.upload.large.text.mobile": "ここに画像をアップロードしてください",
              "options.upload.large.browse": "閲覧",
              "options.upload.large.limit": ".gif、.jpg、.jpeg、.png を受け入れ、最大 10MB",
              "options.upload.large.maxfiles": "最大アップロード数",
              upload_max_tip: "最大アップロード数 {max}",
              image_upload_section_fail: "一部の画像のアップロードに失敗しました",
              required_tip: "これは必要項目です"
            },
            CE = {
              customize_not_complete: "제품 사용자 지정이 완료되지 않았습니다.",
              select_add_price_tip: "선택 {key} 가격에 {price}달러가 추가됩니다",
              add_price_tip: "{key} Ajouter {price} ",
              select: "선택",
              cancel: "취소",
              size: "사이즈",
              rotate: "회전",
              order: "주문",
              width: "폭",
              height: "높이",
              size_range: "크기 범위",
              upload_img_price: "이미지 가격 업로드",
              image_upload_success: "이미지가 성공적으로 업로드되었습니다.",
              image_upload_fail: "이미지 업로드 실패 ",
              image_size_tip: "이미지 크기가 10M를 초과합니다.",
              url_confirm_title: "청사진 저장",
              url_confirm_desc: "디자인을 저장하고 오더에 업로드하시겠습니까?",
              url_confirm_yes: "예",
              url_confirm_no: "불필요한",
              preview_personalization: "개인화 미리보기",
              view_product_image: "원본 제품 이미지 보기",
              preview_range_tip: "인쇄 영역 안에 보관하십시오",
              font_color: "글꼴 색상",
              font: "폰트",
              font_size: "글꼴 크기",
              "options.upload.large.text": "이미지를 여기로 드래그 앤 드롭하거나",
              "options.upload.large.text.mobile": "여기에 이미지 업로드",
              "options.upload.large.browse": "검색",
              "options.upload.large.limit": ".gif, .jpeg, .jpg 및 .png 허용, 최대 10MB",
              "options.upload.large.maxfiles": "최대 업로드 수",
              upload_max_tip: "최대 업로드 수 {max}",
              image_upload_section_fail: "일부 이미지를 업로드하지 못했습니다",
              required_tip: "필수 입력란입니다."
            },
            SE = {
              "en-us": vE,
              "zh-cn": mE,
              "zh-tw": {
                customize_not_complete: "商品定制未完成",
                select_add_price_tip: "選擇{key}將加價{price}",
                add_price_tip: "{key}將加價{price}",
                select: "選擇",
                cancel: "取消",
                size: "尺寸",
                rotate: "旋轉",
                order: "順序",
                width: "寬度",
                height: "高度",
                size_range: "尺寸範圍",
                upload_img_price: "上傳圖片價格",
                image_upload_success: "圖片上傳成功",
                image_upload_fail: "圖片上傳失敗",
                image_size_tip: "圖片大小超過10M",
                url_confirm_title: "保存设计图",
                url_confirm_desc: "是否要保存并上传设计图至订单?",
                url_confirm_yes: "是的",
                url_confirm_no: "不需要",
                preview_personalization: "預覽定制效果",
                view_product_image: "查看商品圖集",
                font_color: "文本顏色",
                font: "字體",
                font_size: "字號",
                preview_range_tip: "請勿超出打印區域",
                "options.upload.large.text": "將您的圖片拖放到此處,或",
                "options.upload.large.text.mobile": "在此上傳圖片",
                "options.upload.large.browse": "瀏覽",
                "options.upload.large.limit": "接受 .gif、.jpg、.jpeg 和 .png,最大 10MB",
                "options.upload.large.maxfiles": "最大上傳數量",
                upload_max_tip: "圖片上傳數量不應超過{max}張",
                image_upload_section_fail: "部分圖片上傳失敗",
                required_tip: "此項為必填項"
              },
              "th-th": {
                customize_not_complete: "การปรับแต่งสินค้าไม่เสร็จสมบูรณ์",
                select_add_price_tip: "การเลือก{key}จะเพิ่ม {price}",
                add_price_tip: "{key}จะเพิ่มราคาอีก{price}",
                select: "เลือก",
                cancel: "ยกเลิก",
                size: "ขนาด",
                rotate: "เพื่อหมุน",
                order: "คำสั่ง",
                width: "ความกว้าง",
                height: "สูง",
                size_range: "ช่วงขนาด",
                upload_img_price: "อัพโหลดภาพราคา",
                image_upload_success: "อัปโหลดรูปภาพสำเร็จแล้ว",
                image_upload_fail: "การอัปโหลดรูปภาพล้มเหลว ",
                image_size_tip: "ขนาดภาพเกิน 10M",
                url_confirm_title: "บันทึกพิมพ์เขียว",
                url_confirm_desc: "คุณต้องการบันทึกและอัปโหลดการออกแบบไปยังคำสั่งซื้อหรือไม่",
                url_confirm_yes: "ใช่",
                url_confirm_no: "ไม่จำเป็น",
                preview_personalization: "ดูตัวอย่างการปรับเปลี่ยนในแบบของคุณ",
                view_product_image: "ดูภาพผลิตภัณฑ์ต้นฉบับ",
                preview_range_tip: "โปรดเก็บไว้ในพื้นที่พิมพ์",
                font_color: "สีตัวอักษร",
                font: "แบบอักษร",
                font_size: "ขนาดตัวอักษร",
                "options.upload.large.text": "ลากและวางรูปภาพของคุณที่นี่",
                "options.upload.large.text.mobile": "อัปโหลดภาพของคุณที่นี่",
                "options.upload.large.browse": "เรียกดู",
                "options.upload.large.limit": "ยอมรับ .gif, .jpeg, .jpg และ .png ขนาดสูงสุด 10MB",
                "options.upload.large.maxfiles": "จำนวนการอัปโหลดสูงสุด",
                upload_max_tip: "จำนวนการอัปโหลดสูงสุด {max}",
                image_upload_section_fail: "ภาพบางภาพไม่สามารถอัปโหลดได้",
                required_tip: "นี่คือข้อมูลที่จำเป็น"
              },
              "fr-fr": yE,
              "ko-kr": CE,
              "ja-jp": kE,
              "es-es": bE,
              "pt-pt": {
                customize_not_complete: "Personalização do produto não concluída",
                select_add_price_tip: "Seleccione {key} adicionará {price} ao preço",
                add_price_tip: "{key} Añadir {price} al precio",
                select: "Seleccione",
                cancel: "Cancelar",
                size: "Tamanho",
                rotate: "Rodar",
                order: "Encomenda",
                width: "Largura",
                height: "Altura",
                size_range: "Gama de tamanhos",
                upload_img_price: "Carregar preço da imagem",
                image_upload_success: "Imagem enviada com sucesso",
                image_upload_fail: "Falha no upload da imagem",
                image_size_tip: "O tamanho da imagem excede 10M",
                url_confirm_title: "Salve o projeto",
                url_confirm_desc: "Deseja salvar e enviar o design para o pedido?",
                url_confirm_yes: "Sim",
                url_confirm_no: "desnecessário",
                preview_personalization: "Visualize sua personalização",
                view_product_image: "Veja a imagem original do produto",
                font_color: "Cor da fonte",
                font: "Fonte",
                font_size: "Tamanho da fonte",
                preview_range_tip: "Por favor, mantenha-o dentro da área de impressão",
                "options.upload.large.text": "Solte sua imagem aqui ou ",
                "options.upload.large.text.mobile": "Carregue sua imagem aqui",
                "options.upload.large.browse": "navegue",
                "options.upload.large.limit": "Aceita .gif, .jpeg, .jpg e .png, máximo de 10 MB",
                "options.upload.large.maxfiles": "Número máximo de carregamentos",
                upload_max_tip: "Número máximo de carregamentos {max}",
                image_upload_section_fail: "Algumas imagens não foram carregadas",
                required_tip: "Este é um campo obrigatório"
              },
              "ru-ru": {
                customize_not_complete: "Настройка продукта не завершена",
                select_add_price_tip: "Выберите {key} добавит {price} к цене",
                add_price_tip: "{key} Добавить {price} к цене",
                select: "Выберите",
                cancel: "Отменить",
                size: "Размер",
                rotate: "Повернуть",
                order: "Заказать",
                width: "Ширина",
                height: "Высота",
                size_range: "Диапазон размеров",
                upload_img_price: "Загрузить изображение цена",
                image_upload_success: "Изображение успешно загружено",
                image_upload_fail: "Не удалось загрузить изображение",
                image_size_tip: "Размер изображения превышает 10M",
                url_confirm_title: "Сохраните план",
                url_confirm_desc: "Хотите сохранить и загрузить дизайн в заказ?",
                url_confirm_yes: "Да",
                url_confirm_no: "ненужный",
                preview_personalization: "Предварительный просмотр вашей персонализации",
                view_product_image: "Посмотреть исходное изображение продукта",
                font_color: "Цвет шрифта",
                font: "Цвет шрифта",
                font_size: "Размер шрифта",
                preview_range_tip: "Пожалуйста, держите его внутри области печати",
                "options.upload.large.text": "Перетащите свое изображение сюда или ",
                "options.upload.large.text.mobile": "Загрузите свое изображение сюда",
                "options.upload.large.browse": "просматривать",
                "options.upload.large.limit": "Принимаются форматы .gif, .jpeg, .jpg и .png, не более 10 МБ",
                "options.upload.large.maxfiles": "Максимальное количество загрузок",
                upload_max_tip: "Максимальное количество загрузок {max}",
                image_upload_section_fail: "Не удалось загрузить некоторые изображения",
                required_tip: "Данное поле является обязательным к заполнению"
              },
              "it-it": xE,
              "ar-sa": {
                customize_not_complete: "لم يتم الانتهاء من تخصيص السلع",
                select_add_price_tip: "{price} سيضيف {key} تحديد",
                add_price_tip: "{key} سيزيد السعر بمقدار {price} دولار",
                select: "يختار",
                cancel: "يلغي",
                size: "مقاس",
                rotate: "لتدوير",
                order: "طلب",
                width: "عرض",
                height: "عالي",
                size_range: "نطاق الحجم",
                upload_img_price: "سعر تحميل الصورة",
                image_upload_success: "تم تحميل الصورة بنجاح",
                image_upload_fail: "فشل تحميل الصورة",
                image_size_tip: "10M حجم الصورة يتجاوز",
                url_confirm_title: "احفظ المخطط",
                url_confirm_desc: "هل تريد حفظ وتحميل التصميم على الطلب؟",
                url_confirm_yes: "نعم",
                url_confirm_no: "غير ضروري",
                preview_personalization: "معاينة التخصيص الخاص بك",
                view_product_image: "عرض صورة المنتج الأصلي",
                font_color: "لون الخط",
                font: "الخط",
                font_size: "حجم الخط",
                preview_range_tip: "يرجى الاحتفاظ بها داخل منطقة الطباعة",
                "options.upload.large.text": "ضع صورتك هنا ، أو ",
                "options.upload.large.text.mobile": "قم بتحميل صورتك هنا",
                "options.upload.large.browse": "تصفح",
                "options.upload.large.limit": "يقبل .gif و. jpeg و. jpg و. png ، بحد أقصى 10 ميغابايت",
                "options.upload.large.maxfiles": "أقصى عدد للتحميلات",
                upload_max_tip: "أقصى عدد للتحميلات {max}",
                image_upload_section_fail: "فشل تحميل بعض الصور",
                required_tip: "هذا مجال مطلوب"
              },
              "id-id": wE,
              "de-de": _E,
              "nl-nl": {
                customize_not_complete: "Productaanpassing niet voltooid",
                select_add_price_tip: "Selecteer {key} zal {price} toevoegen aan de prijs",
                add_price_tip: "{key} Voeg {price} toe aan de prijs",
                select: "Selecteer",
                cancel: "Annuleren",
                size: "Maat",
                rotate: "Draai",
                order: "Bestel",
                width: "Breedte",
                height: "Hoogte",
                size_range: "Maatbereik",
                upload_img_price: "Prijs afbeelding uploaden",
                image_upload_success: "Afbeelding geüpload",
                image_upload_fail: "Het uploaden van afbeeldingen is mislukt",
                image_size_tip: "De afbeeldingsgrootte overschrijdt 10M",
                url_confirm_title: "Bewaar de blauwdruk",
                url_confirm_desc: "Wil je het ontwerp opslaan en uploaden naar de bestelling?",
                url_confirm_yes: "Ja",
                url_confirm_no: "onnodig",
                preview_personalization: "Bekijk een voorbeeld van uw personalisatie",
                view_product_image: "Bekijk de originele productafbeelding",
                font_color: "Letterkleur",
                font: "Lettertype",
                font_size: "Lettertypegrootte",
                preview_range_tip: "Bewaar het binnen het afdrukgebied",
                "options.upload.large.text": "Zet je afbeelding hier neer, of ",
                "options.upload.large.text.mobile": "Upload hier uw afbeelding",
                "options.upload.large.browse": "blader",
                "options.upload.large.limit": "Accepteert .gif, .jpeg, .jpg en .png, max. 10 MB",
                "options.upload.large.maxfiles": "Maximaal aantal uploads",
                upload_max_tip: "Maximaal aantal uploads {max}",
                image_upload_section_fail: "Sommige afbeeldingen konden niet worden geüpload",
                required_tip: "dit is een verplicht veld"
              },
              "pl-pl": {
                customize_not_complete: "Dostosowanie produktu nie zostało zakończone",
                select_add_price_tip: "Wybranie {key} doda {price}",
                add_price_tip: "{key} podniesie cenę o {price}",
                select: "wybierać",
                cancel: "Anulować",
                size: "rozmiar",
                rotate: "obrócić",
                order: "zamówienie",
                width: "szerokość",
                height: "wysoki",
                size_range: "Zakres rozmiarów",
                upload_img_price: "Prześlij cenę zdjęcia",
                image_upload_success: "Obraz przesłany pomyślnie",
                image_upload_fail: "Przesyłanie obrazu nie powiodło się",
                image_size_tip: "Rozmiar obrazu przekracza 10M",
                url_confirm_title: "Zapisz plan",
                url_confirm_desc: "Chcesz zapisać i wgrać projekt do zamówienia?",
                url_confirm_yes: "ak",
                url_confirm_no: "niepotrzebny",
                preview_personalization: "Wyświetl podgląd swojej personalizacji",
                view_product_image: "Zobacz oryginalne zdjęcie produktu",
                font_color: "Kolor czcionki",
                font: "Czcionka",
                font_size: "Rozmiar czcionki",
                preview_range_tip: "Proszę trzymać go w obszarze drukowania",
                "options.upload.large.text": "Upuść swój obraz tutaj lub ",
                "options.upload.large.text.mobile": "Prześlij swój obraz tutaj",
                "options.upload.large.browse": "Uprzeglądaj",
                "options.upload.large.limit": "Akceptuje pliki .gif, .jpeg, .jpg i .png, maks. 10 MB",
                "options.upload.large.maxfiles": "Maksymalna liczba przesłanych plików",
                upload_max_tip: "Maksymalna liczba przesłanych plików {max}",
                image_upload_section_fail: "Nie udało się przesłać niektórych obrazów",
                required_tip: "To pole jest wymagane"
              }
            },
            EE = e => t => {
              var n, r = (null === (n = document.documentElement.lang) || void 0 === n ? void 0 : n.toLowerCase()) || j,
                i = bt((() => SE[r] || SE[j]), [r]);
              return zl(ko, {
                messages: i,
                locale: r,
                defaultLocale: j,
                children: zl(e, h({}, t))
              })
            },
            TE = e => {
              var t, n, r, i = [];
              try {
                var o;
                null == e || e.forEach((e => {
                  var t, n;
                  e.isHidden && null !== (t = e.preview_setting) && void 0 !== t && t.preview_open && (null === (n = e.preview_setting.data) || void 0 === n || n.forEach((e => {
                    var t;
                    null === (t = e.cards) || void 0 === t || t.forEach((e => {
                      e.isShow = !1
                    }))
                  })))
                }));
                var a = re.exports.cloneDeep(e.filter((e => {
                  var t;
                  return null === (t = e.preview_setting) || void 0 === t ? void 0 : t.preview_open
                })));
                if (null == a || !a.length) return [];
                null == a || a.forEach((e => {
                  if (2 === e.preview_setting.type) {
                    var t;
                    if (null !== (t = e.preview_setting.data.filter((e => e.bgSelected))) && void 0 !== t && t.length) {
                      var n = e.preview_setting.data.filter((e => e.bgSelected))[0];
                      i.push(h(h({}, n), {}, {
                        orders: [e.order]
                      }))
                    }
                  } else {
                    var r = e.preview_setting.data[0];
                    i.push(h(h({}, r), {}, {
                      orders: [e.order]
                    }))
                  }
                }));
                var s = re.exports.cloneDeep(i);
                null === (o = i) || void 0 === o || o.forEach((e => {
                  var t, n = [],
                    r = [];
                  null === (t = s.filter((t => e.bg_image_url === t.bg_image_url))) || void 0 === t || t.forEach((e => {
                    n = n.concat(e.cards), r = r.concat(e.orders)
                  })), e.cards = n, e.orders = r
                })), t = i, n = "bg_image_url", r = new Map, i = t.filter((e => !r.has(e[n]) && r.set(e[n], 1)))
              } catch (e) {
                return []
              }
              return i
            };

          function OE(e) {
            return e.startsWith("http") ? e : "https:".concat(e)
          }
          var AE = (e, t) => {
            var {
              tl: n,
              tr: r,
              bl: i,
              br: o
            } = e.aCoords, {
              tl: a,
              tr: s,
              bl: l,
              br: c
            } = t.aCoords;
            return n.x >= a.x && n.x <= s.x && n.y >= s.y && n.y <= c.y && r.x >= a.x && r.x <= s.x && r.y >= s.y && r.y <= c.y && i.x >= a.x && i.x <= s.x && i.y >= s.y && i.y <= c.y && o.x >= a.x && o.x <= s.x && o.y >= s.y && o.y <= c.y
          };
          X.fabric.Object.prototype.set({
            borderColor: "#599BFF",
            cornerColor: "#fff",
            cornerStrokeColor: "#599BFF",
            cornerSize: 8,
            transparentCorners: !1
          });
          var PE, ME, DE = {
              text: [],
              upload: []
            },
            IE = e => {
              var t = DE[e.configType];
              t.push(h({}, e)), t.length > 20 && t.shift()
            },
            NE = Rt((e => {
              var {
                width: t = 0,
                height: n = 0,
                previewInfo: r = {},
                isShow: i,
                index: o,
                data: a,
                setData: s,
                variantID: l
              } = e, {
                formatMessage: c
              } = vo(), [u, p] = dt(null), [d, f] = dt(!1), [g, m] = ef(), v = bt((() => Math.min(t, n)), [t, n]), _ = bt((() => v / Math.max(r.bg_image_width, r.bg_image_height)), [v, r]), b = bt((() => v / 560), [v]);
              gt((() => {
                var e = new X.fabric.Canvas(r.bg_image_url, {
                  preserveObjectStacking: !0
                });
                p(e)
              }), [r.bg_image_url]), gt((() => {
                u && (ie.addInstance(u, o), ie.addImgOrders(r.orders, o), u.wrapperEl.style.margin = "0 auto", u.selection = !1, u.preserveObjectStacking = !0)
              }), [u, o, l]), gt((() => {
                null == u || u.clear(), DE = {
                  text: [],
                  upload: []
                }
              }), [l]);
              var y = () => {
                setTimeout((() => {
                  u.getObjects().forEach((e => {
                    "text" == e.configType && e.previewOrder && e.moveTo(e.previewOrder)
                  })), u.renderAll()
                }))
              };
              return gt((() => {
                if (u) return hu.$on(H, e), hu.$on(U, t), () => {
                  hu.$off(H, e), hu.$off(U, t)
                };

                function e(e) {
                  var t = u.getObjects().find((function(t) {
                    return t.fid === e && "img" === t.fidType
                  }));
                  t && (u.setActiveObject(t), y(), u.renderAll())
                }

                function t() {
                  f(!0), setTimeout((() => {
                    u.discardActiveObject(), y(), u.renderAll(), f(!1)
                  }))
                }
              }), [u]), gt((() => {
                var e;
                u && (u.backgroundImage || u.setBackgroundImage(OE(r.bg_image_url), u.renderAll.bind(u), {
                  scaleX: _,
                  scaleY: _,
                  left: v / 2,
                  top: v / 2,
                  originX: "center",
                  originY: "center",
                  crossOrigin: !0
                }), null === (e = r.cards) || void 0 === e || e.forEach(((e, t) => {
                  if ("swatch" === e.configType) {
                    var n = u.getObjects().find((function(t) {
                      return t.oid ? t.oid === e.fid && e.configFid === t.fid : t.fid === e.configFid
                    }));
                    n && !e.isShow && u.remove(n), !n && e.isShow && X.fabric.Image.fromURL(OE(e.value), (t => {
                      t.top = e.top * b, t.configType = e.configType, t.left = e.left * b, t.scaleX = e.scaleX ? e.scaleX * b : e.width / t.width, t.scaleY = e.scaleY ? e.scaleY * b : e.height / t.height, t.angle = e
                        .angle, t.selectable = !1, t.hoverCursor = "default", t.fid = e.configFid, t.oid = e.fid, u.insertAt(t, e.previewOrder), u.renderAll()
                    }), {
                      crossOrigin: "anonymous"
                    })
                  }
                  if ("upload" === e.configType) {
                    var i = u.getObjects().find((function(t) {
                      return t.fid === e.configFid
                    }));
                    if (u.getObjects().forEach((t => {
                        t.fid !== e.configFid || e.isShow || u.remove(t)
                      })), !i && e.isShow) {
                      var o = new X.fabric.Rect({
                        left: e.print_area_left * b,
                        top: e.print_area_top * b,
                        width: e.print_area_width * e.scaleX * b,
                        height: e.print_area_height * e.scaleY * b,
                        fill: "transparent",
                        selectable: !1,
                        hoverCursor: "default",
                        fid: e.configFid,
                        shapeType: "boundsReact",
                        configType: e.configType,
                        evented: !1
                      });
                      ("down" === (null == e ? void 0 : e.upload_img_level) ? new Promise(((t, n) => {
                        X.fabric.Image.fromURL(OE(r.bg_image_url), (n => {
                          n.set({
                            scaleX: _,
                            scaleY: _,
                            left: v / 2,
                            top: v / 2,
                            originX: "center",
                            originY: "center",
                            crossOrigin: !0,
                            evented: !1,
                            shapeType: "overlay",
                            fid: e.configFid,
                            configType: e.configType
                          }), t(n)
                        }), {
                          crossOrigin: "anonymous"
                        })
                      })) : new Promise(((e, t) => {
                        e(null)
                      }))).then((t => {
                        X.fabric.Image.fromURL(e.uploadDataUrl, (n => {
                          var {
                            left: r,
                            top: i,
                            scale: a
                          } = ((e, t) => {
                            var n = e.width,
                              r = e.height,
                              i = n / r,
                              o = t.left + 4,
                              a = t.top + 4,
                              s = t.width - 8,
                              l = t.height - 8,
                              c = s / l,
                              u = 1,
                              h = 0,
                              p = 0;
                            return (i > c || i === c) && (n > s ? (h = o, p = a + (l - r * (u = s / n)) / 2) : (u = 1, h = o + (s - n) / 2, p = a + (l - r) / 2)), i < c && (r > l ? (h = o + (s - n * (u = l / r)) /
                              2, p = a) : (u = 1, h = o + (s - n) / 2, p = a + (l - r) / 2)), {
                              scale: u,
                              left: h,
                              top: p
                            }
                          })(n, o);
                          n.set({
                            left: r,
                            top: i,
                            scaleX: a,
                            scaleY: a,
                            fid: e.configFid,
                            configType: e.configType,
                            fidType: "img"
                          }), n.scaleToWidth(n.width * a), n.scaleToHeight(n.height * a), u.insertAt(o, e.previewOrder), u.insertAt(n, e.previewOrder), t && u.insertAt(t, e.previewOrder), u.renderAll()
                        }), {
                          crossOrigin: "anonymous"
                        })
                      }))
                    }
                  }
                  if ("text" === e.configType && (u.getObjects().find((function(t) {
                      return t.fid === e.configFid
                    })), u.getObjects().forEach((t => {
                      t.fid === e.configFid && e.focusing && u.remove(t)
                    })), e.isShow && e.focusing)) {
                    if (e.moveabled) {
                      var s = new X.fabric.Rect({
                          left: e.print_area_left * b,
                          top: e.print_area_top * b,
                          width: e.print_area_width * (e.print_scale_x || 1) * b,
                          height: e.print_area_height * (e.print_scale_y || 1) * b,
                          fill: e.fill || "transparent",
                          selectable: !1,
                          angle: e.print_area_angle || 0,
                          fid: e.fid,
                          shapeType: "boundsReact",
                          hoverCursor: "default",
                          statefullCache: !0,
                          configType: e.configType,
                          evented: !1
                        }),
                        p = new X.fabric.Textbox(e.textValue || "", {
                          padding: 0,
                          fontSize: e.textSize || 30,
                          fill: e.textColor || "black",
                          width: e.width ? e.width : e.print_area_width * (e.print_scale_x || 1) * b - 8,
                          top: e.text_top ? e.text_top * b : (e.print_area_height * (e.print_scale_y || 1) / 2 + e.print_area_top) * b - e.textSize / 2,
                          left: e.text_left ? e.text_left * b : e.print_area_left * b,
                          scaleX: e.scaleX ? e.scaleX * b : b,
                          scaleY: e.scaleY ? e.scaleY * b : b,
                          fontFamily: e.textFont,
                          fid: e.configFid,
                          angle: e.text_angle || 0,
                          focusing: e.focusing,
                          lockScalingX: !0,
                          lockScalingY: !0,
                          splitByGrapheme: !0,
                          editable: !1,
                          textAlign: "center",
                          configType: e.configType,
                          previewOrder: e.previewOrder
                        });
                      u.insertAt(s, e.previewOrder), u.insertAt(p, e.previewOrder), !e.focusing || e.isInit || d || u.setActiveObject(p), u.renderAll()
                    } else {
                      var f, m, y = {
                          fontSize: e.textSize || 30,
                          fill: e.textColor || "black",
                          top: e.text_top * b,
                          left: e.text_left * b,
                          scaleX: e.scaleX ? e.scaleX * b : 1,
                          scaleY: e.scaleY ? e.scaleY * b : 1,
                          angle: e.text_angle || 0,
                          fontFamily: e.textFont,
                          fid: e.fid,
                          focusing: e.focusing,
                          lockScalingX: !0,
                          lockScalingY: !0,
                          splitByGrapheme: !0,
                          selectable: !1,
                          hoverCursor: "default",
                          lockRotation: !0,
                          originX: "center",
                          originY: "center",
                          configType: e.configType
                        },
                        w = new X.fabric.Text(e.textValue || "", y);
                      null !== (f = window) && void 0 !== f && null !== (m = f.appparakeet_switch) && void 0 !== m && m.preview_fixed && (w = new X.fabric.Textbox(e.textValue || "", h(h({}, y), {}, {
                        scaleX: e.scaleX ? e.scaleX * b : b,
                        scaleY: e.scaleY ? e.scaleY * b : b,
                        width: e.width ? e.width : e.print_area_width * (e.print_scale_x || 1) * b - 8,
                        editable: !1,
                        textAlign: "center",
                        originY: "top",
                        previewOrder: e.previewOrder
                      }))), u.insertAt(w, e.previewOrder)
                    }
                    u.renderAll()
                  }
                  setTimeout((() => {
                    u.renderAll()
                  })), u && u.off("after:render"), u && u.off("mouse:up"), u && u.on("mouse:up", (() => {
                    var e = u.getObjects(),
                      t = u.getActiveObject();
                    if (null != e && e.length && e.forEach((e => {
                        t && t.fid === e.fid || "text" != e.configType || !e.previewOrder || e.moveTo(e.previewOrder)
                      })), t) {
                      var n = e.find((e => e.fid === t.fid && "boundsReact" === e.shapeType));
                      if (!AE(t, n)) {
                        var r = DE[t.configType],
                          i = r[r.length - 1];
                        if (!i) return;
                        t.set({
                          width: i.width,
                          height: i.height,
                          left: i.left,
                          top: i.top,
                          angle: i.angle || 0,
                          scaleX: i.scaleX || 1,
                          scaleY: i.scaleY || 1
                        }), u.renderAll()
                      }
                    }
                  })), u && u.on("after:render", (() => {
                    var e = u.getObjects(),
                      t = u.getActiveObject();
                    if (t) {
                      var n = e.find((e => e.fid === t.fid && "boundsReact" === e.shapeType));
                      "text" === t.configType ? a.forEach(((e, r) => {
                        var i;
                        e.fid === t.fid && (l && e.preview_setting.data.length > 1 ? e.preview_setting.data.forEach((n => {
                          n.variant_id && n.variant_id === l && (n.cards[0].text_height = t.height, n.cards[0].text_width = t.width, n.cards[0].text_left = t.left / b, n.cards[0].text_top = t.top / b, n
                            .cards[0].text_angle = t.angle, n.cards[0].text_size = t.fontSize, n.cards[0].scaleX = t.scaleX / b, n.cards[0].scaleY = t.scaleY / b, e.preview_setting.moveabled && (n.cards[0]
                              .width = t.width))
                        })) : 1 != e.preview_setting.data.length || null !== (i = e.preview_setting.data[0]) && void 0 !== i && i.variant_id || (e.preview_setting.data[0].cards[0].text_height = t.height, e
                          .preview_setting.data[0].cards[0].text_width = t.width, e.preview_setting.data[0].cards[0].text_left = t.left / b, e.preview_setting.data[0].cards[0].text_top = t.top / b, e
                          .preview_setting.data[0].cards[0].text_angle = t.angle, e.preview_setting.data[0].cards[0].text_size = t.fontSize, e.preview_setting.data[0].cards[0].scaleX = t.scaleX / b, e
                          .preview_setting.data[0].cards[0].scaleY = t.scaleY / b, e.preview_setting.moveabled && (e.preview_setting.data[0].cards[0].width = t.width)), e.preview_setting.moveabled && (AE(t, n) ?
                          (IE(t), n.fill = "transparent", e.preview_setting.data[0].cards[0].fill = "transparent") : (n.fill = "rgba(221, 29, 24, 0.3)", e.preview_setting.data[0].cards[0].fill =
                            "rgba(221, 29, 24, 0.3)", g.destroy(), g.open({
                              content: c({
                                id: "preview_range_tip"
                              })
                            }))))
                      })) : AE(t, n) ? (IE(t), n.set("fill", "transparent")) : (n.set("fill", "rgba(221, 29, 24, 0.3)"), g.destroy(), g.open({
                        content: c({
                          id: "preview_range_tip"
                        })
                      }))
                    }
                  }))
                })), setTimeout((() => {
                  u.renderAll()
                })))
              }), [r, u]), zl("div", {
                style: {
                  display: i ? "block" : "none"
                },
                children: [zl("canvas", {
                  id: r.bg_image_url,
                  width: v,
                  height: v
                }), m]
              })
            }));

          function RE() {
            return RE = Object.assign ? Object.assign.bind() : function(e) {
              for (var t = 1; t < arguments.length; t++) {
                var n = arguments[t];
                for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
              }
              return e
            }, RE.apply(this, arguments)
          }
          var jE = e => Te("svg", RE({
              width: 22,
              height: 22,
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg"
            }, e), PE || (PE = Te("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M11.048 5.867h-.002c-3.952 0-7.288 2.195-8.348 5.201a.346.346 0 0 0 0 .23c1.06 3.007 4.396 5.202 8.348 5.202 3.976 0 7.33-2.223 8.367-5.26a.177.177 0 0 0 0-.114c-1.038-3.036-4.39-5.258-8.365-5.26Zm-7.358 5.45a.341.341 0 0 1 0-.268c.718-1.678 2.308-3.085 4.384-3.786a3.867 3.867 0 1 0 5.953.003c2.07.703 3.658 2.108 4.374 3.783a.341.341 0 0 1 0 .269c-1.031 2.412-3.867 4.264-7.355 4.264-3.489 0-6.324-1.852-7.356-4.264Zm7.259-4.531a1.45 1.45 0 1 1-2.798.452 9.282 9.282 0 0 1 2.798-.452Z",
              fill: "#292929"
            })), ME || (ME = Te("path", {
              fillRule: "evenodd",
              clipRule: "evenodd",
              d: "M11.048 5.867h-.002c-3.952 0-7.288 2.195-8.348 5.201a.346.346 0 0 0 0 .23c1.06 3.007 4.396 5.202 8.348 5.202 3.976 0 7.33-2.223 8.367-5.26a.177.177 0 0 0 0-.114c-1.038-3.036-4.39-5.258-8.365-5.26Zm-7.358 5.45a.341.341 0 0 1 0-.268c.718-1.678 2.308-3.085 4.384-3.786a3.867 3.867 0 1 0 5.953.003c2.07.703 3.658 2.108 4.374 3.783a.341.341 0 0 1 0 .269c-1.031 2.412-3.867 4.264-7.355 4.264-3.489 0-6.324-1.852-7.356-4.264Zm7.259-4.531a1.45 1.45 0 1 1-2.798.452 9.282 9.282 0 0 1 2.798-.452Z",
              fill: "#292929"
            }))),
            LE = "index-module_preview_wrap__wyD3z",
            FE = "index-module_upload_dialog__zsPoE",
            BE = "index-module_canvas-container-fixed__KUEdU";
          c(
          ".index-module_preview_wrap__wyD3z{background-color:#fff;height:100%;left:0;pointer-events:auto;position:absolute;top:0;width:100%}.index-module_upload_dialog__zsPoE{border-radius:8px;left:50%;margin:0!important;padding:0!important;position:absolute!important;top:50%;transform:translateX(-50%) translateY(-50%);width:auto!important}.index-module_upload_dialog__zsPoE .rc-dialog-body{padding:0}.index-module_canvas-container-fixed__KUEdU{border-radius:6px;box-shadow:0 1px 10px 0 rgba(0,0,0,.2);left:0;pointer-events:none;position:fixed!important;top:1px;transition:opacity .5s;z-index:1031}.index-module_canvas-container-fixed__KUEdU .lower-canvas,.index-module_canvas-container-fixed__KUEdU .upper-canvas{height:100%!important;width:100%!important}");
          var zE = (() => {
              var e, t = document.querySelector(".product-detail-gallery>#product-detail-gallery-inner>.product-images-container") || document.querySelector(".product-main-images-container") || document.querySelector(
                ".product-image__content") || document.querySelector("#product-images-carousel") || (null === (e = document.querySelector(".product-image")) || void 0 === e ? void 0 : e.querySelector("div"));
              return "Wind" === ka() && (t = document.querySelector("#product-images-carousel").parentNode), t && (t.style.position = "relative"), t
            })(),
            HE = Rt((e => {
              var t, n, r, {
                  data: i,
                  variantID: o,
                  setData: a,
                  onUploadDelete: s
                } = e,
                {
                  formatMessage: l
                } = vo(),
                c = bt((() => TE(i)), [i]),
                [u, p] = dt(!1),
                [d, f] = dt(0),
                [g, m] = dt(!1),
                [v, _] = dt({}),
                [b, y] = dt(""),
                w = () => {
                  hu.$emit(U)
                },
                x = re.exports.debounce((() => {
                  var e = document.querySelector(".canvas-container"),
                    t = document.querySelector(".header_container"),
                    n = document.querySelector(".product-info-body"),
                    r = (null == t ? void 0 : t.offsetHeight) || 0,
                    i = (null == e ? void 0 : e.offsetHeight) || 0,
                    o = e.getAttribute("data-canvas-width");
                  if (i && pa()) {
                    var a = window.scrollY;
                    n.style.zIndex = 1, a > r + i ? (!o && e.setAttribute("data-canvas-width", null == e ? void 0 : e.offsetWidth), e.classList.add(BE), e.style.top = "".concat(r, "px"), e.style.width = "".concat(.7 * window.innerWidth,
                      "px"), e.style.height = "".concat(.7 * window.innerWidth, "px")) : (e.classList.remove(BE), o && (e.style.top = 0, e.style.width = "".concat(o, "px"), e.style.height = "".concat(o, "px")))
                  }
                }), 300);
              gt((() => {
                var e, t;
                return null !== (e = window) && void 0 !== e && null !== (t = e.appparakeet_switch) && void 0 !== t && t.preview_fixed && (window.addEventListener("scroll", x), x()), () => {
                  var e, t;
                  null !== (e = window) && void 0 !== e && null !== (t = e.appparakeet_switch) && void 0 !== t && t.preview_fixed && window.removeEventListener("scroll", x)
                }
              }), [c]), gt((() => {
                function e(e) {
                  a((t => {
                    var n = TE(t).findIndex((t => e.preview_setting.data.filter((e => e.bg_image_url === t.bg_image_url)).length)) || 0;
                    f(n);
                    var r = re.exports.cloneDeep(t);
                    return r.forEach((t => {
                      var n, r;
                      null !== (n = t.preview_setting) && void 0 !== n && n.preview_open && (null === (r = t.preview_setting.data) || void 0 === r || r.forEach((n => {
                        var r;
                        null === (r = n.cards) || void 0 === r || r.forEach((n => {
                          "text" == n.configType && (n.fid = t.fid, n.focusing = e.fid === t.fid, n.isShow = !!e.textValue, n.moveabled = t.preview_setting.moveabled, n.adjust_font_size = t.preview_setting
                            .adjust_font_size, n.textColor = e.textColor, n.textFont = e.textFont, n.textSize = e.textSize, n.textColor = e.textColor, n.textValue = e.textValue, n.isInit = e.isInit)
                        }))
                      })))
                    })), r
                  })), e.isInit || p(!0)
                }

                function t(e) {
                  w(), a((t => {
                    var n = TE(t).findIndex((t => t.bg_image_url === e.bg_image_url)) || 0;
                    f(n);
                    var r = re.exports.cloneDeep(t);
                    return null == r || r.forEach((t => {
                      var n, r;
                      null !== (n = t.preview_setting) && void 0 !== n && n.preview_open && (null === (r = t.preview_setting.data) || void 0 === r || r.forEach((t => {
                        var n;
                        null === (n = t.cards) || void 0 === n || n.forEach((t => {
                          var n, r;
                          null !== (n = e.checked_fids) && void 0 !== n && n.includes(t.fid) && (t.isShow = !0), null !== (r = e.un_checked_fids) && void 0 !== r && r.includes(t.fid) && (t.isShow = !1)
                        }))
                      })))
                    })), r
                  })), p(!0)
                }

                function n(e) {
                  if (w(), e.url) {
                    _(e);
                    var t = new FileReader;
                    t.readAsDataURL(e), t.onload = function(t) {
                      y(t.target.result), m(!1), k(e)
                    }
                  } else a((t => {
                    var n, r = TE(t).findIndex((t => t.bg_image_url === e.bg_image_url)) || 0;
                    f(r);
                    var i = re.exports.cloneDeep(t);
                    return null === (n = i.filter((t => t.fid === e.label_id))[0].preview_setting.data) || void 0 === n || n.forEach((e => {
                      e.cards[0].isShow = !1, e.cards[0].uploadDataUrl = ""
                    })), i
                  }))
                }
                return hu.$on(F, t), hu.$on(B, n), hu.$on(z, e), () => {
                  hu.$off(z, e), hu.$off(F, t), hu.$off(B, n)
                }
              }), [a]), gt((() => {
                var e, t, n;

                function r() {
                  p(!1)
                }
                p(!(null === (e = window) || void 0 === e || null === (t = e.appparakeet_switch) || void 0 === t || !t.preview_show));
                var i = document.querySelector("#product-thumb-images-container") || document.querySelector(".product-thumb-images-container") || document.querySelector(".product-image__thumbs");
                return (null === (n = window.appparakeet_images) || void 0 === n ? void 0 : n.length) > 1 && (null == i || i.addEventListener("click", r)), () => {
                  var e;
                  (null === (e = window.appparakeet_images) || void 0 === e ? void 0 : e.length) > 1 && (null == i || i.removeEventListener("click", r))
                }
              }), []), gt((() => {
                if (zE) return zE.style.pointerEvents = u ? "none" : "auto", () => {
                  zE && (zE.style.pointerEvents = "auto")
                }
              }), [u]);
              var k = yt((e => {
                  w(), a((t => {
                    var n, r = TE(t).findIndex((t => t.bg_image_url === e.bg_image_url)) || 0;
                    f(r);
                    var i = re.exports.cloneDeep(t);
                    return null === (n = i.filter((t => t.fid === e.label_id))[0].preview_setting.data) || void 0 === n || n.forEach((t => {
                      t.cards[0].uploadDataUrl = e.dataUrl || e.url, t.cards[0].isShow = !0
                    })), i
                  })), p(!0), m(!1), y(""), window.scrollTo(0, 0)
                }), [a]),
                C = yt((e => {
                  m(!1), y(""), null == s || s(e)
                }), [s]);
              return !(null == c || !c.length) && zl(Pe, {
                children: [zl("div", {
                  className: "pk-flex pk-items-center !pk-mt-7 pk-cursor-pointer",
                  onClick: () => {
                    var e;
                    (null === (e = window.appparakeet_images) || void 0 === e ? void 0 : e.length) < 2 && u ? p(!1) : p(!0), window.scrollTo({
                      top: 0,
                      behavior: "smooth"
                    })
                  },
                  children: [zl(jE, {}), (null === (t = window.appparakeet_images) || void 0 === t ? void 0 : t.length) < 2 && u ? zl(Ul, {
                    className: "pk-ml-2",
                    children: l({
                      id: "view_product_image"
                    })
                  }) : zl(Ul, {
                    className: "pk-ml-2",
                    children: l({
                      id: "preview_personalization"
                    })
                  })]
                }), zE && Jt(zl("div", {
                  id: "appparakeet-preview-img",
                  className: LE,
                  style: h({
                    display: u ? "block" : "none",
                    zIndex: "Life Style" === ka() ? 9 : 99
                  }, (null === (n = window) || void 0 === n || null === (r = n.appparakeet_switch) || void 0 === r ? void 0 : r.custom_img_center) && {
                    display: u ? "flex" : "none",
                    alignItems: "center"
                  }),
                  children: null == c ? void 0 : c.map(((e, t) => zl(NE, {
                    width: null == zE ? void 0 : zE.clientWidth,
                    height: null == zE ? void 0 : zE.clientHeight,
                    previewInfo: e,
                    isShow: t === d,
                    index: t,
                    data: i,
                    setData: a,
                    variantID: o
                  }, e.bg_image_url)))
                }), zE), g && zl(R_, {
                  className: FE,
                  title: null,
                  onClose: () => {
                    m(!1)
                  },
                  closable: !1,
                  maskClosable: !1,
                  visible: !0,
                  children: zl(Kv, {
                    file: v,
                    url: b,
                    onConfirm: k,
                    onCancel: C
                  })
                })]
              })
            })),
            UE = ["PHOTO", "DESIGN"],
            WE = EE((e => {
              var t, {
                  isQuick: n,
                  productId: r,
                  data: i = null,
                  queryWrapperTarget: o,
                  className: a = ""
                } = e,
                {
                  formatMessage: s
                } = vo(),
                [l, c] = dt((null == i ? void 0 : i.length) > 0),
                u = bt((() => {
                  return e = window.appparakeet_data, t = [], null == e || e.forEach(((e, n) => {
                    var r, i;
                    null !== (r = e.preview_setting) && void 0 !== r && r.preview_open && (null === (i = e.preview_setting.data) || void 0 === i || i.forEach((e => {
                      t.push(e.bg_image_url)
                    })))
                  })), null == e || e.forEach(((e, n) => {
                    var r, i;
                    null !== (r = e.preview_setting) && void 0 !== r && r.preview_open && (null === (i = e.preview_setting.data) || void 0 === i || i.forEach((r => {
                      var i;
                      r.bg_image_url = t.filter((e => Sa(e) === Sa(r.bg_image_url)))[0], null === (i = r.cards) || void 0 === i || i.forEach(((t, r) => {
                        var i;
                        t.configType = e.type, t.upload_img_level = (null == e || null === (i = e.preview_setting) || void 0 === i ? void 0 : i.upload_img_level) || "up", t.configFid = e.fid, t.previewOrder = 1e3 * (
                          n + 1) + r, e.preview_setting.moveabled && "text" === t.configType && (t.text_left = void 0, t.text_top = void 0)
                      }))
                    })))
                  })), e;
                  var e, t
                }), []),
                [p, f] = dt(u || []),
                [g, m] = dt(UE[0]),
                [v, _] = dt(""),
                [b, y] = dt(""),
                [w, x] = dt({
                  with: 0,
                  height: 0
                }),
                [k, S] = dt(!0),
                E = vt(!0),
                T = vt(null),
                O = bt((() => ({
                  title: s({
                    id: "url_confirm_title"
                  }),
                  message: s({
                    id: "url_confirm_desc"
                  }),
                  confirmText: s({
                    id: "url_confirm_yes"
                  }),
                  cancelText: s({
                    id: "url_confirm_no"
                  })
                })), [s]);
              O.onConfirm = null === (t = T.current) || void 0 === t ? void 0 : t.uploadFile, O.onClose = () => {
                S(!0)
              };
              var A = function(e) {
                  var [t, n] = dt(!1), {
                    title: r,
                    message: i,
                    confirmText: o,
                    cancelText: a,
                    onClose: s,
                    onConfirm: l
                  } = e, c = () => {
                    n(!1), null == s || s()
                  }, u = () => {
                    n(!1), l()
                  };
                  return {
                    isOpen: t,
                    open: () => {
                      n(!0)
                    },
                    closeDialog: c,
                    renderDialog: () => t ? Jt(zl(R_, {
                      className: Gd,
                      wrapClassName: Zd,
                      title: null,
                      onClose: c,
                      closable: !0,
                      closeIcon: zl(gE, {}),
                      maskClosable: !1,
                      visible: !0,
                      children: [zl("div", {
                        className: Yd,
                        children: r
                      }), zl("div", {
                        className: qd,
                        children: i
                      }), zl("div", {
                        className: Kd,
                        children: [zl("button", {
                          className: Rl([$d, Jd]),
                          onClick: c,
                          children: a
                        }), zl("button", {
                          className: Rl($d, Qd),
                          onClick: u,
                          children: o
                        })]
                      })]
                    }), document.body) : null
                  }
                }(O),
                P = null,
                N = document.querySelector("#product_detail_".concat(r, " .product-image")) || document.querySelector(".product-images-container") || document.querySelector(".product-detail .product-images");
              P = Ca(["Eva"]) ? N.parentNode : Ca(["Wind"]) ? (N.parentElement.style.flexDirection = "column", N.parentElement) : N || document.querySelector(".product-details .product-images") || document.querySelector(
                ".product-detail .product-images");
              var R = null;
              gt((() => {
                if (!n) {
                  (R = document.createElement("div")).id = "app-parakeet-tab";
                  var e = P.querySelector("spz-carousel#product-detail-images") || P.querySelector("div");
                  P && !document.querySelector("#app-parakeet-tab") && P.insertBefore(R, e);
                  var t = Ca("Flash") ? 16 : 32,
                    r = pa() ? e.offsetWidth - t : e.offsetWidth;
                  x({
                    width: r,
                    height: r
                  });
                  var i = document.createElement("div");
                  i.id = "app-parakeet-design", P && !document.querySelector("#app-parakeet-design") && P.append(i)
                }
              }), []), gt((() => {
                (() => {
                  if (!i) {
                    var e = window.appparakeet_data;
                    if (0 === (null == e ? void 0 : e.length)) return void c(!1);
                    f(e), c(!0)
                  }
                })()
              }), [r, i]);
              var {
                setError: j,
                clearErrors: L,
                handleSubmit: F,
                formState: {
                  isValid: B,
                  isValidating: z
                },
                control: H,
                setValue: U,
                getValues: W,
                unregister: V,
                register: X,
                trigger: G
              } = function() {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                  t = Nn.useRef(),
                  [n, r] = Nn.useState({
                    isDirty: !1,
                    isValidating: !1,
                    isSubmitted: !1,
                    isSubmitting: !1,
                    isSubmitSuccessful: !1,
                    isValid: !1,
                    submitCount: 0,
                    dirtyFields: {},
                    touchedFields: {},
                    errors: {},
                    defaultValues: e.defaultValues
                  });
                t.current || (t.current = h(h({}, el(e)), {}, {
                  formState: n
                }));
                var i = t.current.control;
                return i._options = e, ts({
                  subject: i._subjects.state,
                  callback: Nn.useCallback((e => {
                    Ja(e, i._proxyFormState, !0) && (i._formState = h(h({}, i._formState), e), r(h({}, i._formState)))
                  }), [i])
                }), Nn.useEffect((() => {
                  i._stateFlags.mount || (i._proxyFormState.isValid && i._updateValid(), i._stateFlags.mount = !0), i._stateFlags.watch && (i._stateFlags.watch = !1, i._subjects.state.next({})), i._removeUnmounted()
                })), Nn.useEffect((() => {
                  n.submitCount && i._focusError()
                }), [i, n.submitCount]), t.current.formState = $a(n, i), t.current
              }({
                mode: "onChange",
                shouldFocusError: !0,
                shouldUnregister: !0
              });
              window.triggerCusForm = () => new Promise(((e, t) => {
                F((() => {
                  e(!0)
                }), (() => {
                  t(!1)
                }))()
              }));
              var {
                formDom: Y
              } = K_({
                data: p,
                control: H,
                setData: f
              }), q = yt((e => {
                var {
                  newData: t,
                  count: n
                } = function(e, t, n, r, i) {
                  var o = 0,
                    a = e.map((e => {
                      var a;
                      return "field" !== (null == e || null === (a = e.conditional_setting) || void 0 === a ? void 0 : a.type) ? e : ha(e, t) && e.isHidden ? (r(e.fid), "text" === e.type && null != e && e.default && i(e.fid, e
                        .default), "checkbox" !== e.type && "button" !== e.type || null == e || !e.default_selection || i(e.fid, e.default_selection_values || []), o++, h(h({}, e), {}, {
                        isHidden: !1
                      })) : ha(e, t) || e.isHidden ? e : (n(e.fid), "text" === e.type && null != e && e.default && i(e.fid, ""), "checkbox" !== e.type && "button" !== e.type || null == e || !e.default_selection || i(e.fid, []),
                        o++, h(h({}, e), {}, {
                          isHidden: !0
                        }))
                    }));
                  try {
                    ua()
                  } catch (e) {}
                  return {
                    newData: a,
                    count: o
                  }
                }(p, e, V, X, U);
                n > 0 && (f(t, (() => {
                  G()
                })), setTimeout((() => {
                  G()
                }), 1e3))
              }), [p, V, X, G, U]), K = W();
              gt((() => {
                q(K), setTimeout((() => {
                  document.dispatchEvent(new Event("plugin_currency_update"))
                }))
              }), [K, q]);
              var $ = bt((() => {
                var e = [];
                return null == p || p.forEach((t => {
                  t.isHidden || "design" !== t.type || e.push(t.fid)
                })), null != e && e.length || m(UE[0]), e
              }), [p]);
              gt((() => {
                var e, t = [];
                ($.forEach((e => {
                  var n;
                  null !== (n = K[e]) && void 0 !== n && n.length || t.push(e)
                })), t.length) && (null === (e = T.current) || void 0 === e || e.removeImg(t, (() => {
                  t.forEach((e => {
                    var t = $.findIndex((t => t === e));
                    U("".concat($[t < 0 ? 0 : t]), [])
                  }))
                })))
              }), [K, $, U]);
              var [Z, J] = dt(0), [Q, ee] = dt(0), te = yt(((e, t, n) => {
                var {
                  newData: r,
                  count: i
                } = function(e, t, n, r, i) {
                  var o = 0,
                    a = e.map((e => {
                      var a, s, l;
                      if ("variant" !== (null == e || null === (a = e.conditional_setting) || void 0 === a ? void 0 : a.type)) return e;
                      var c = null == e || null === (s = e.conditional_setting) || void 0 === s || null === (l = s.variant_values) || void 0 === l ? void 0 : l.map((e => e.value)).includes(t);
                      return c || e.isHidden ? c && e.isHidden ? (r(e.fid), "text" === e.type && null != e && e.default && i(e.fid, e.default), "checkbox" !== e.type && "button" !== e.type || null == e || !e.default_selection || i(e
                        .fid, e.default_selection_values || []), o++, h(h({}, e), {}, {
                        isHidden: !1
                      })) : e : (n(e.fid), o++, "text" === e.type && null != e && e.default && i(e.fid, ""), "checkbox" !== e.type && "button" !== e.type || null == e || !e.default_selection || i(e.fid, []), h(h({}, e), {}, {
                        isHidden: !0
                      }))
                    }));
                  try {
                    ua()
                  } catch (e) {}
                  return {
                    newData: a,
                    count: o
                  }
                }(p, t, V, X, U);
                i > 0 && (f(r, (() => {
                  G()
                })), setTimeout((() => {
                  G()
                }), 1e3)), J(e), ee(n), fa(r, K, e, n)
              }), [p, K, V, X, G, U]), ne = yt((e => {
                f((t => {
                  var n, r = re.exports.cloneDeep(t);
                  return null == r || null === (n = r.filter((e => {
                    var t;
                    return 2 === (null === (t = e.preview_setting) || void 0 === t ? void 0 : t.type)
                  }))) || void 0 === n || n.forEach((t => {
                    var n, r;
                    return null === (n = t.preview_setting) || void 0 === n || null === (r = n.data) || void 0 === r ? void 0 : r.forEach((t => {
                      t.variant_id === e ? t.bgSelected = !0 : t.bgSelected = !1
                    }))
                  })), r
                }))
              }), []), [ie, oe] = dt("");
              gt((() => {
                var e, t = null === (e = window.appparakeet_variants) || void 0 === e ? void 0 : e.findIndex((e => {
                  return e.id === (t = "variant", n = location.search.substr(1), r = new RegExp("(^|&)".concat(t, "=([^&]*)(&|$)"), "i"), null === (i = n.match(r)) ? null : i[2]);
                  var t, n, r, i
                }));
                t = t < 0 ? 0 : t;
                var n = window.appparakeet_variants[t].price,
                  r = window.appparakeet_variants[t].id,
                  i = window.appparakeet_variants[t].retail_price;
                r && te(n, r, i), oe(r), ne(r)
              }), []);
              var ae = yt((e => {
                var t = e.detail.selected.price,
                  n = e.detail.selected.id,
                  r = e.detail.selected.retail_price;
                n && te(t, n, r), oe(n), ne(n)
              }), [te, ne]);
              gt((() => (document.body.addEventListener("dj.viewContent", ae), () => {
                document.body.removeEventListener("dj.viewContent", ae)
              })), [ae]), gt((() => {
                fa(p, K, Z, Q)
              }), [K]);
              var se = bt((() => ({
                setError: j,
                clearErrors: L
              })), [L, j]);
              gt((() => {
                hu.$on(M, (() => S(!1)))
              }), []);
              var le = () => {
                var e = Ca("Hero") ? document.querySelector(".product-image .properties-content") : document.querySelector("#app-parakeet-tab").nextSibling;
                return Ca("Nova 2022") && (e = document.querySelector("#app-parakeet-design").previousElementSibling), e
              };
              gt((() => {
                var e = le();
                if (e) {
                  var t = pE(e, "display"),
                    n = pE(e, "position");
                  Ca("Nova 2022") || _("none" === t ? "block" : t), y(n)
                }
              }), []), gt((() => {
                var e = le();
                if (e) {
                  var t = pa() && Ca(["Nova 2022", "Hero", "Eva", "Flash"]),
                    n = "PHOTO" === g;
                  if (t) {
                    var r = n ? "visible" : "hidden";
                    return e.style.visibility = r, e.style.position = n ? b : "absolute", void(e.style.zIndex = n ? "1" : "-1")
                  }
                  var i = n ? v : "none";
                  e.style.display = i
                }
              }), [g, v, N]);
              var ce = bt((() => new tl(o)), [o]),
                ue = bt((() => Object.keys(K).some((e => {
                  var t;
                  return $.includes(e) && (null === (t = K[e]) || void 0 === t ? void 0 : t.length)
                }))), [K, $]);
              Ml((() => {
                var e;
                if (null !== (e = window.appparakeet_data) && void 0 !== e && e.length) {
                  var t = ue && k || !ue;
                  E.current = t;
                  var n = E.current && B;
                  n ? ce.enableATCAndBNBtNs() : ce.disableATCAndBNBtNs(F((() => {
                    E.current || A.open()
                  }))), n ? al() : ol(F((() => {
                    E.current || A.open()
                  })))
                }
              }), [B, k, ue]), gt((() => {
                var e, t, n;
                ma() && (e = null === (t = window.djInterceptors) || void 0 === t || null === (n = t.request) || void 0 === n ? void 0 : n.use(function() {
                  var e = d((function*(e) {
                    var t;
                    return yield va(e, W(), p, null === (t = T.current) || void 0 === t ? void 0 : t.compositeUrl, F, s)
                  }));
                  return function(t) {
                    return e.apply(this, arguments)
                  }
                }()));
                return () => {
                  var t;
                  ma() && (null === (t = window.djInterceptors) || void 0 === t || t.request.eject(e))
                }
              }), [r, W, p, F, s]), gt((() => (ma() && document.addEventListener("dj.response", wa), () => {
                ma() && document.removeEventListener("dj.response", wa)
              })), []), ((e, t) => {
                ll((() => {
                  "loading" !== document.readyState ? e() : document.addEventListener("DOMContentLoaded", e)
                }), t)
              })((() => {
                z && la("plugin_product_customizer_click", {
                  product_id: r
                })
              }), [z, r]), gt((() => {
                var e, t;
                if (null != p && p.length) {
                  var n = e => {
                    var t, n;
                    e.detail.product_id === r && la("plugin_customizer_add_to_cart", {
                      product_id: r,
                      template_type: null === (t = window) || void 0 === t || null === (n = t.SHOP_PARAMS) || void 0 === n ? void 0 : n.template_type,
                      quantity: e.detail.quantity,
                      rule_id: ""
                    })
                  };
                  return document.body.addEventListener("dj.addToCart", n), la("plugin_customizer_products_view", {
                    product_id: r,
                    template_type: null === (e = window) || void 0 === e || null === (t = e.SHOP_PARAMS) || void 0 === t ? void 0 : t.template_type,
                    rule_id: ""
                  }), () => document.body.removeEventListener("dj.addToCart", n)
                }
              }), [p, r]);
              if (!l) return null;
              var he = document.querySelector("#app-parakeet-tab"),
                pe = document.querySelector("#app-parakeet-design"),
                de = ma(),
                fe = !(null == $ || !$.length);
              return zl("div", {
                className: "",
                children: zl(pu.Provider, {
                  value: ie,
                  children: [de && fe && zl(Pe, {
                    children: [!!he && !n && Jt(zl(ub, {
                      tabs: UE,
                      value: g,
                      onChange: e => m(e)
                    }), he), !!pe && Jt(zl(hE, {
                      ref: T,
                      visible: "DESIGN" === g,
                      data: w,
                      onAddFIle: e => {
                        C(e).then((t => {
                          e.thumbUrl = t, U("".concat($[0], ".0"), e), hu.$emit(D), G()
                        }))
                      },
                      onDelete: e => {
                        var t = $.findIndex((t => t === e.label_id)),
                          n = t < 0 ? 0 : t,
                          r = [...K[$[n]]];
                        r.splice(r.length - 1, 1), U("".concat($[n]), r), hu.$emit(I), G()
                      },
                      fileName: null == $ ? void 0 : $[0],
                      hasChangeSave: e => {
                        S(e)
                      },
                      setTab: () => {
                        m(UE[1])
                      }
                    }), pe)]
                  }), zl("div", {
                    className: Rl("pk-my-6", pa() ? "pk-space-y-4" : "pk-space-y-5", a),
                    children: [zl(Op.Provider, {
                      value: se,
                      children: Y
                    }), zl(ab, {
                      data: p,
                      control: H
                    }), zl(HE, {
                      data: p,
                      variantID: ie,
                      setData: f,
                      onUploadDelete: e => {
                        U(e.label_id, []), G()
                      }
                    })]
                  }), A.isOpen && A.renderDialog()]
                })
              })
            }));
          try {
            var VE;
            if (!window.appparakeet_env) null !== (VE = window.appparakeet_data) && void 0 !== VE && VE.length && setTimeout((() => {
              var e;
              (() => {
                var e, t;
                if (null !== (e = window.appparakeet_data) && void 0 !== e && null !== (t = e.filter((e => {
                    var t;
                    return "text" === e.type && (null === (t = e.preview_setting) || void 0 === t ? void 0 : t.preview_open)
                  }))) && void 0 !== t && t.length) try {
                  var n, r, i, o, a, s, l, c = [{
                      name: "Lexend",
                      src: "@font-face {  font-family: 'Lexend';  font-style: normal;  font-weight: 100;  font-display: swap;  src: url(https://fonts.gstatic.com/s/lexend/v15/wlptgwvFAVdoq2_F94zlCfv0bz1WCzsXzLdneg.woff2) format('woff2');}"
                    }, {
                      name: "Abril Fatface",
                      src: "@font-face {  font-family: 'Abril Fatface';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/abrilfatface/v19/zOL64pLDlL1D99S8g8PtiKchq-dmjQ.woff2) format('woff2');}"
                    }, {
                      name: "Amiri",
                      src: "@font-face {  font-family: 'Amiri';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/amiri/v24/J7aRnpd8CGxBHpUutLM.woff2) format('woff2');}"
                    }, {
                      name: "Archivo",
                      src: "@font-face {  font-family: 'Archivo';  font-style: normal;  font-weight: 100;  font-stretch: normal;  font-display: swap;  src: url(https://fonts.gstatic.com/s/archivo/v16/k3k6o8UDI-1M0wlSV9XAw6lQkqWY8Q82sJaRE-NWIDdgffTTNDJZ9xdp.woff2) format('woff2');}"
                    }, {
                      name: "Archivo Black",
                      src: "@font-face {  font-family: 'Archivo Black';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/archivoblack/v17/HTxqL289NzCGg4MzN6KJ7eW6CYyF_g.woff2) format('woff2');}"
                    }, {
                      name: "Arimo",
                      src: "@font-face {  font-family: 'Arimo';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/arimo/v26/P5sfzZCDf9_T_3cV7NCUECyoxNk37cxcABrB.woff2) format('woff2');}"
                    }, {
                      name: "Arvo",
                      src: "@font-face {  font-family: 'Arvo';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/arvo/v20/tDbD2oWUg0MKqScQ7Q.woff2) format('woff2');}"
                    }, {
                      name: "Bakbak One",
                      src: "@font-face {  font-family: 'Bakbak One';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/bakbakone/v6/zOL54pXAl6RI-p_ardnu-cNkvg.woff2) format('woff2');}"
                    }, {
                      name: "Cardo",
                      src: "@font-face {  font-family: 'Cardo';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/cardo/v19/wlp_gwjKBV1pqhv43IE.woff2) format('woff2');}"
                    }, {
                      name: "Caudex",
                      src: "@font-face {  font-family: 'Caudex';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/caudex/v15/esDQ311QOP6BJUr4zfKB.woff2) format('woff2');}"
                    }, {
                      name: "Concert One",
                      src: "@font-face {  font-family: 'Concert One';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/concertone/v17/VEM1Ro9xs5PjtzCu-srDqSTijP4.woff2) format('woff2');}"
                    }, {
                      name: "Cormorant",
                      src: "@font-face {  font-family: 'Cormorant';  font-style: normal;  font-weight: 300;  font-display: swap;  src: url(https://fonts.gstatic.com/s/cormorant/v16/H4cgBXOCl9bbnla_nHIiRLmohYaz.woff2) format('woff2');}"
                    }, {
                      name: "Cormorant Garamond",
                      src: "@font-face {  font-family: 'Cormorant Garamond';  font-style: normal;  font-weight: 300;  font-display: swap;  src: url(https://fonts.gstatic.com/s/cormorantgaramond/v15/co3YmX5slCNuHLi8bLeY9MK7whWMhyjQAllfvg-I.woff2) format('woff2');}"
                    }, {
                      name: "Crimson Pro",
                      src: "@font-face {  font-family: 'Crimson Pro';  font-style: normal;  font-weight: 200;  font-display: swap;  src: url(https://fonts.gstatic.com/s/crimsonpro/v21/q5uUsoa5M_tv7IihmnkabC5XiXCAlXGks1WZTm1MP5s-.woff2) format('woff2');}"
                    }, {
                      name: "Didact Gothic",
                      src: "@font-face {  font-family: 'Didact Gothic';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/didactgothic/v19/ahcfv8qz1zt6hCC5G4F_P4ASlUuYpg.woff2) format('woff2');}"
                    }, {
                      name: "Eater",
                      src: "@font-face {  font-family: 'Eater';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/eater/v21/mtG04_FCK7bOvquxsXA.woff2) format('woff2');}"
                    }, {
                      name: "Eczar",
                      src: "@font-face {  font-family: 'Eczar';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/eczar/v16/BXR2vF3Pi-DLmxcpJB-qbNTyTMDXHd6mrjgU.woff2) format('woff2');}"
                    }, {
                      name: "Exo 2",
                      src: "@font-face {  font-family: 'Exo 2';  font-style: normal;  font-weight: 100;  font-display: swap;  src: url(https://fonts.gstatic.com/s/exo2/v19/7cH1v4okm5zmbvwkAx_sfcEuiD8jvvOsOdC_.woff2) format('woff2');}"
                    }, {
                      name: "Fira Sans",
                      src: "@font-face {  font-family: 'Fira Sans';  font-style: normal;  font-weight: 100;  font-display: swap;  src: url(https://fonts.gstatic.com/s/firasans/v16/va9C4kDNxMZdWfMOD5Vn9LjJYTI.woff2) format('woff2');}"
                    }, {
                      name: "Fjalla One",
                      src: "@font-face {  font-family: 'Fjalla One';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/fjallaone/v13/Yq6R-LCAWCX3-6Ky7FAFrOF6kg.woff2) format('woff2');}"
                    }],
                    u = null !== (n = window) && void 0 !== n && n.appparakeet_data[0] ? null === (r = window) || void 0 === r ? void 0 : r.appparakeet_data[0].text_custom_family_map : null;
                  u && null != Object && null !== (i = Object.keys(u)) && void 0 !== i && i.length && Object.keys(u).forEach((e => {
                    var t = {};
                    t.name = e, t.url = u[e], t.src = "@font-face { font-family: ".concat(e, ";src: url('").concat(u[e], "');}"), c.push(t)
                  }));
                  var h = document.createElement("style"),
                    p = (null === (o = window) || void 0 === o || null === (a = o.appparakeet_data) || void 0 === a ? void 0 : a.filter((e => {
                      var t;
                      return "text" === (null == e ? void 0 : e.type) && (null == e || null === (t = e.preview_setting) || void 0 === t ? void 0 : t.preview_open)
                    }))) || [];
                  (p = null === (s = p) || void 0 === s ? void 0 : s.map((e => {
                    var t;
                    return null == e || null === (t = e.preview_setting) || void 0 === t ? void 0 : t.text_families
                  }))) && null !== (l = p) && void 0 !== l && l.length && (p = Array.from(new Set(p.flat())) || []), null == c || c.forEach((e => {
                    var t;
                    if (null !== (t = p) && void 0 !== t && t.includes(e.name)) {
                      h.appendChild(document.createTextNode(e.src));
                      var n = document.createElement("div");
                      n.class = "mock_span", n.innerHTML = "1", n.style.fontFamily = e.name, n.style.position = "fixed", n.style.top = "-99999px", document.body.appendChild(n)
                    }
                  })), document.head.appendChild(h)
                } catch (e) {}
              })();
              var t, n, r = document.getElementById("app-parakeet"),
                i = document.createElement("div"),
                o = r.dataset.productId;
              o && (window.appparakeet_data = (null === (t = window) || void 0 === t || null === (n = t.appparakeet_data) || void 0 === n ? void 0 : n.filter((e => e.product_origin_id === o))) || []);
              null !== (e = window.appparakeet_data) && void 0 !== e && e.length && (r.append(i), $e(zl(WE, {
                productId: r.dataset.productId
              }), i))
            }), 800)
          } catch (e) {}
        }));
        //**app-parakeet.js-end**//
      </script>
      <div class="product-info__btn product-info__block tw-flex tw-flex-col tw-mt-4  tw-space-y-2">
        <div class="lg:tw-space-y-3 tw-flex tw-flex-col  tw-space-y-2 ">
          <button type="button" class="tw-relative tw-mx-0 tw-h-[42px] lg:tw-h-[46px] tw-body-plus-2 tw-font-semibold tw-cursor-pointer tw-rounded-btn  tw-secondary-btn     product-info__add-to-cart" data-click="addToCart" data-on-sale="Add to cart"
            data-adding="Adding" data-added="Added" data-unavailable="Unavailable" data-sold-out="Sold out" data-btn-class=" tw-secondary-btn " data-track="click" data-track-content="add_to_cart" data-track-source="add_to_cart">
            <span class=""> Add to cart - <span class="money">€21.92</span>
            </span>
          </button>
          <button type="button" class="tw-h-[42px] lg:tw-h-[46px] tw-mx-0  tw-primary-btn  tw-border-none tw-body-plus-2 tw-font-semibold tw-rounded-btn    product-info__buy-now" data-click="submit" data-track="click" data-track-content="checkout"
            data-track-source="buy_now">
            <span class=""> Buy it now </span>
          </button>
        </div>
        <div class="paypal-express-button-container" id="paypal-express-button-container1539149753700">
          <div id="zoid-paypal-buttons-uid_b01d17bee2_mty6nda6mjk" class="paypal-buttons paypal-buttons-context-iframe paypal-buttons-label-unknown paypal-buttons-layout-horizontal" data-paypal-smart-button-version="5.0.453"
            style="height: 54px; transition: 0.2s ease-in-out;">
            <style nonce="">
              #zoid-paypal-buttons-uid_b01d17bee2_mty6nda6mjk {
                position: relative;
                display: inline-block;
                width: 100%;
                min-height: 25px;
                min-width: 150px;
                font-size: 0;
              }

              #zoid-paypal-buttons-uid_b01d17bee2_mty6nda6mjk>iframe {
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
              }

              #zoid-paypal-buttons-uid_b01d17bee2_mty6nda6mjk>iframe.component-frame {
                z-index: 100;
              }

              #zoid-paypal-buttons-uid_b01d17bee2_mty6nda6mjk>iframe.prerender-frame {
                transition: opacity .2s linear;
                z-index: 200;
              }

              #zoid-paypal-buttons-uid_b01d17bee2_mty6nda6mjk>iframe.visible {
                opacity: 1;
              }

              #zoid-paypal-buttons-uid_b01d17bee2_mty6nda6mjk>iframe.invisible {
                opacity: 0;
                pointer-events: none;
              }

              #zoid-paypal-buttons-uid_b01d17bee2_mty6nda6mjk>.smart-menu {
                position: absolute;
                z-index: 300;
                top: 0;
                left: 0;
                width: 100%;
              }
            </style><iframe allowtransparency="true"
              name="__zoid__paypal_buttons__eyJzZW5kZXIiOnsiZG9tYWluIjoiaHR0cHM6Ly93d3cubW9ua2V5c29iZXIuY29tIn0sIm1ldGFEYXRhIjp7IndpbmRvd1JlZiI6eyJ0eXBlIjoicGFyZW50IiwiZGlzdGFuY2UiOjB9fSwicmVmZXJlbmNlIjp7InR5cGUiOiJyYXciLCJ2YWwiOiJ7XCJ1aWRcIjpcInpvaWQtcGF5cGFsLWJ1dHRvbnMtdWlkX2IwMWQxN2JlZTJfbXR5Nm5kYTZtamtcIixcImNvbnRleHRcIjpcImlmcmFtZVwiLFwidGFnXCI6XCJwYXlwYWwtYnV0dG9uc1wiLFwiY2hpbGREb21haW5NYXRjaFwiOntcIl9fdHlwZV9fXCI6XCJyZWdleFwiLFwiX192YWxfX1wiOlwiXFxcXC5wYXlwYWxcXFxcLihjb218Y24pKDpcXFxcZCspPyRcIn0sXCJ2ZXJzaW9uXCI6XCIxMF8zXzNcIixcInByb3BzXCI6e1wiZW52XCI6XCJwcm9kdWN0aW9uXCIsXCJjb21taXRcIjp0cnVlLFwic3R5bGVcIjp7XCJsYWJlbFwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJsYXlvdXRcIjpcImhvcml6b250YWxcIixcImNvbG9yXCI6XCJnb2xkXCIsXCJzaGFwZVwiOlwicmVjdFwiLFwidGFnbGluZVwiOmZhbHNlLFwiaGVpZ2h0XCI6NTQsXCJwZXJpb2RcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwibWVudVBsYWNlbWVudFwiOlwiYmVsb3dcIixcImRpc2FibGVNYXhXaWR0aFwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJkaXNhYmxlTWF4SGVpZ2h0XCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcImJvcmRlclJhZGl1c1wiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn19LFwiZnVuZGluZ1wiOntcImRpc2FsbG93ZWRcIjpbXCJjcmVkaXRcIl19LFwib25BcHByb3ZlXCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfMmFmNWJmYjJjOV9tdHk2bmRhNm1qa1wiLFwibmFtZVwiOlwib25BcHByb3ZlXCJ9fSxcImNyZWF0ZU9yZGVyXCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfNzYzZWJmYzFjMV9tdHk2bmRhNm1qa1wiLFwibmFtZVwiOlwiY3JlYXRlT3JkZXJcIn19LFwiY3NwTm9uY2VcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwiYWxsb3dCaWxsaW5nUGF5bWVudHNcIjp0cnVlLFwiYW1vdW50XCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcImFwaVN0YWdlSG9zdFwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJhcHBsZVBheVwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJhcHBsZVBheVN1cHBvcnRcIjpmYWxzZSxcImJyYW5kZWRcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwiYnV0dG9uTG9jYXRpb25cIjpcInd3dy5tb25rZXlzb2Jlci5jb21cIixcImJ1dHRvblNlc3Npb25JRFwiOlwidWlkXzhjYWU0YzYzZjhfbXR5Nm5kYTZtamtcIixcImJ1dHRvblNpemVcIjpcImh1Z2VcIixcImJ1eWVyQ291bnRyeVwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJjbGllbnRBY2Nlc3NUb2tlblwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJjdXN0b21lcklkXCI6XCJcIixcImNsaWVudElEXCI6XCJBVXdvUmx2M2laM2p0M28zaGhjZnRfdFo1ZzZ0dmVmRXBqQ2Y5WU5HZUg3cThwX1dyYWxlaXRrS2ZMbldJczhITHB6YWxnUkE1QU1UMEJZT1wiLFwiY2xpZW50TWV0YWRhdGFJRFwiOlwidWlkX2E2YTExZWEwZTVfbXR5Nm5kYTZtamtcIixcImNvbXBvbmVudHNcIjpbXCJidXR0b25zXCJdLFwiY3JlYXRlQmlsbGluZ0FncmVlbWVudFwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJjcmVhdGVTdWJzY3JpcHRpb25cIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwiY3JlYXRlVmF1bHRTZXR1cFRva2VuXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcImNzcFwiOntcIm5vbmNlXCI6XCJcIn0sXCJjdXJyZW5jeVwiOlwiVVNEXCIsXCJkZWJ1Z1wiOmZhbHNlLFwiZGlzYWJsZUNhcmRcIjpbXSxcImRpc2FibGVGdW5kaW5nXCI6W1wiY2FyZFwiLFwiYmFuY29udGFjdFwiLFwiYmxpa1wiLFwiZXBzXCIsXCJnaXJvcGF5XCIsXCJpZGVhbFwiLFwibWVyY2Fkb3BhZ29cIixcIm15YmFua1wiLFwicDI0XCIsXCJzZXBhXCIsXCJzb2ZvcnRcIixcInZlbm1vXCJdLFwiZGlzYWJsZVNldENvb2tpZVwiOnRydWUsXCJkaXNwbGF5T25seVwiOltdLFwiZW5hYmxlRnVuZGluZ1wiOltcInBheWxhdGVyXCJdLFwiZW5hYmxlVGhyZWVEb21haW5TZWN1cmVcIjpmYWxzZSxcImVuYWJsZVZhdWx0XCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcImV4cGVyaW1lbnRcIjp7XCJlbmFibGVWZW5tb1wiOmZhbHNlLFwidmVubW9WYXVsdFdpdGhvdXRQdXJjaGFzZVwiOmZhbHNlfSxcImV4cGVyaW1lbnRhdGlvblwiOnt9LFwiZmxvd1wiOlwicHVyY2hhc2VcIixcImZ1bmRpbmdFbGlnaWJpbGl0eVwiOntcInBheXBhbFwiOntcImVsaWdpYmxlXCI6dHJ1ZSxcInZhdWx0YWJsZVwiOmZhbHNlfSxcInBheWxhdGVyXCI6e1wiZWxpZ2libGVcIjpmYWxzZSxcInZhdWx0YWJsZVwiOmZhbHNlLFwicHJvZHVjdHNcIjp7XCJwYXlJbjNcIjp7XCJlbGlnaWJsZVwiOmZhbHNlLFwidmFyaWFudFwiOm51bGx9LFwicGF5SW40XCI6e1wiZWxpZ2libGVcIjpmYWxzZSxcInZhcmlhbnRcIjpudWxsfSxcInBheWxhdGVyXCI6e1wiZWxpZ2libGVcIjpmYWxzZSxcInZhcmlhbnRcIjpudWxsfX19LFwiY2FyZFwiOntcImVsaWdpYmxlXCI6ZmFsc2UsXCJicmFuZGVkXCI6ZmFsc2UsXCJpbnN0YWxsbWVudHNcIjpmYWxzZSxcInZlbmRvcnNcIjp7XCJ2aXNhXCI6e1wiZWxpZ2libGVcIjp0cnVlLFwidmF1bHRhYmxlXCI6dHJ1ZX0sXCJtYXN0ZXJjYXJkXCI6e1wiZWxpZ2libGVcIjp0cnVlLFwidmF1bHRhYmxlXCI6dHJ1ZX0sXCJhbWV4XCI6e1wiZWxpZ2libGVcIjp0cnVlLFwidmF1bHRhYmxlXCI6dHJ1ZX0sXCJkaXNjb3ZlclwiOntcImVsaWdpYmxlXCI6ZmFsc2UsXCJ2YXVsdGFibGVcIjp0cnVlfSxcImhpcGVyXCI6e1wiZWxpZ2libGVcIjpmYWxzZSxcInZhdWx0YWJsZVwiOmZhbHNlfSxcImVsb1wiOntcImVsaWdpYmxlXCI6ZmFsc2UsXCJ2YXVsdGFibGVcIjp0cnVlfSxcImpjYlwiOntcImVsaWdpYmxlXCI6ZmFsc2UsXCJ2YXVsdGFibGVcIjp0cnVlfSxcIm1hZXN0cm9cIjp7XCJlbGlnaWJsZVwiOnRydWUsXCJ2YXVsdGFibGVcIjp0cnVlfSxcImRpbmVyc1wiOntcImVsaWdpYmxlXCI6dHJ1ZSxcInZhdWx0YWJsZVwiOnRydWV9LFwiY3VwXCI6e1wiZWxpZ2libGVcIjpmYWxzZSxcInZhdWx0YWJsZVwiOnRydWV9fSxcImd1ZXN0RW5hYmxlZFwiOmZhbHNlfSxcInZlbm1vXCI6e1wiZWxpZ2libGVcIjpmYWxzZSxcInZhdWx0YWJsZVwiOmZhbHNlfSxcIml0YXVcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcImNyZWRpdFwiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwiYXBwbGVwYXlcIjp7XCJlbGlnaWJsZVwiOnRydWV9LFwic2VwYVwiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwiaWRlYWxcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcImJhbmNvbnRhY3RcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcImdpcm9wYXlcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcImVwc1wiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwic29mb3J0XCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJteWJhbmtcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcInAyNFwiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwid2VjaGF0cGF5XCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJwYXl1XCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJibGlrXCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJ0cnVzdGx5XCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJveHhvXCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJib2xldG9cIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcImJvbGV0b2JhbmNhcmlvXCI6e1wiZWxpZ2libGVcIjpmYWxzZX0sXCJtZXJjYWRvcGFnb1wiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwibXVsdGliYW5jb1wiOntcImVsaWdpYmxlXCI6ZmFsc2V9LFwic2F0aXNwYXlcIjp7XCJlbGlnaWJsZVwiOmZhbHNlfSxcInBhaWR5XCI6e1wiZWxpZ2libGVcIjpmYWxzZX19LFwiZnVuZGluZ1NvdXJjZVwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJnZXRQYWdlVXJsXCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfMGQyYmMyYTlhOF9tdHk2bmRhNm1qa1wiLFwibmFtZVwiOlwiZ2V0UGFnZVVybFwifX0sXCJnZXRQb3B1cEJyaWRnZVwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzY1ODkwOGJiOTBfbXR5Nm5kYTZtamtcIixcIm5hbWVcIjpcImdldFBvcHVwQnJpZGdlXCJ9fSxcImdldFByZXJlbmRlckRldGFpbHNcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF8xODU0YzM4MTFkX210eTZuZGE2bWprXCIsXCJuYW1lXCI6XCJnZXRQcmVyZW5kZXJEZXRhaWxzXCJ9fSxcImdldFF1ZXJpZWRFbGlnaWJsZUZ1bmRpbmdcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF84YmRhZjhkZWE3X210eTZuZGE2bWprXCIsXCJuYW1lXCI6XCJnZXRRdWVyaWVkRWxpZ2libGVGdW5kaW5nXCJ9fSxcImhvc3RlZEJ1dHRvbklkXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcImludGVudFwiOlwiY2FwdHVyZVwiLFwianNTZGtMaWJyYXJ5XCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcImxvY2FsZVwiOntcImNvdW50cnlcIjpcIlVTXCIsXCJsYW5nXCI6XCJlblwifSxcIm1lcmNoYW50SURcIjpbXSxcIm1lcmNoYW50UmVxdWVzdGVkUG9wdXBzRGlzYWJsZWRcIjpmYWxzZSxcIm1lc3NhZ2VcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwibm9uY2VcIjpcIlwiLFwib25DYW5jZWxcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwib25DbGlja1wiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJvbkNvbXBsZXRlXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcIm9uSW5pdFwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzgzN2QzOWYzYTBfbXR5Nm5kYTZtamtcIixcIm5hbWVcIjpcIm9uSW5pdFwifX0sXCJvbk1lc3NhZ2VDbGlja1wiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkX2M0NGZlMzYzN2JfbXR5Nm5kYTZtamtcIixcIm5hbWVcIjpcIm9uTWVzc2FnZUNsaWNrXCJ9fSxcIm9uTWVzc2FnZUhvdmVyXCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfNjZjNmZiYzIwMV9tdHk2bmRhNm1qa1wiLFwibmFtZVwiOlwib25NZXNzYWdlSG92ZXJcIn19LFwib25NZXNzYWdlUmVhZHlcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF81NTBlNjMxYmZkX210eTZuZGE2bWprXCIsXCJuYW1lXCI6XCJvbk1lc3NhZ2VSZWFkeVwifX0sXCJvblNoaXBwaW5nQWRkcmVzc0NoYW5nZVwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJvblNoaXBwaW5nQ2hhbmdlXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcIm9uU2hpcHBpbmdPcHRpb25zQ2hhbmdlXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcImhhc1NoaXBwaW5nQ2FsbGJhY2tcIjpmYWxzZSxcInBhZ2VUeXBlXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcInBhcnRuZXJBdHRyaWJ1dGlvbklEXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcInBheW1lbnRNZXRob2ROb25jZVwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJwYXltZW50TWV0aG9kVG9rZW5cIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwicGF5bWVudFJlcXVlc3RcIjp7XCJfX3R5cGVfX1wiOlwidW5kZWZpbmVkXCJ9LFwicGxhdGZvcm1cIjpcImRlc2t0b3BcIixcInJlZmVycmVyRG9tYWluXCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifSxcInJlbWVtYmVyXCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfZjZlNmUyMDllN19tdHk2bmRhNm1qa1wiLFwibmFtZVwiOlwicmVtZW1iZXJcIn19LFwicmVtZW1iZXJlZFwiOltdLFwicmVuZGVyZWRCdXR0b25zXCI6W1wicGF5cGFsXCJdLFwic2Vzc2lvbklEXCI6XCJ1aWRfYTZhMTFlYTBlNV9tdHk2bmRhNm1qa1wiLFwic2RrQ29ycmVsYXRpb25JRFwiOlwiZjUyMzYwMmRjZGIwMVwiLFwic2Vzc2lvblN0YXRlXCI6e1wiZ2V0XCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfMDFhYmQ2NjIxNF9tdHk2bmRhNm1qa1wiLFwibmFtZVwiOlwiZ2V0XCJ9fSxcInNldFwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkX2NmMWM0ZTJlZDFfbXR5Nm5kYTZtamtcIixcIm5hbWVcIjpcInNldFwifX19LFwiZ2V0U2hvcHBlckluc2lnaHRzVXNlZFwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzIxZWQwMzA1NTlfbXR5Nm5kYTZtamtcIixcIm5hbWVcIjpcIkNyXCJ9fSxcInN0YWdlSG9zdFwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJzdG9yYWdlSURcIjpcInVpZF9jOTMyODI4YmZhX210eTZuZGE2bWprXCIsXCJzdG9yYWdlU3RhdGVcIjp7XCJnZXRcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF8xNGIwNzQ2ZDM1X210eTZuZGE2bWprXCIsXCJuYW1lXCI6XCJnZXRcIn19LFwic2V0XCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfNzliNWUwMzk5OF9tdHk2bmRhNm1qa1wiLFwibmFtZVwiOlwic2V0XCJ9fX0sXCJzdXBwb3J0ZWROYXRpdmVCcm93c2VyXCI6ZmFsc2UsXCJzdXBwb3J0c1BvcHVwc1wiOnRydWUsXCJ0ZXN0XCI6e1wiYWN0aW9uXCI6XCJjaGVja291dFwifSxcInVzZXJFeHBlcmllbmNlRmxvd1wiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJ1c2VySURUb2tlblwiOntcIl9fdHlwZV9fXCI6XCJ1bmRlZmluZWRcIn0sXCJ2YXVsdFwiOmZhbHNlLFwid2FsbGV0XCI6e1wiX190eXBlX19cIjpcInVuZGVmaW5lZFwifX0sXCJleHBvcnRzXCI6e1wiaW5pdFwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzY5M2QyZWYyNDJfbXR5Nm5kYTZtamtcIixcIm5hbWVcIjpcImluaXRcIn19LFwiY2xvc2VcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF8yNzg0NGQ3MWM0X210eTZuZGE2bWprXCIsXCJuYW1lXCI6XCJjbG9zZTo6bWVtb2l6ZWRcIn19LFwiY2hlY2tDbG9zZVwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzAxNGVhMmFjMjlfbXR5Nm5kYTZtamtcIixcIm5hbWVcIjpcImNoZWNrQ2xvc2VcIn19LFwicmVzaXplXCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfMzYyYmU1MDI5Y19tdHk2bmRhNm1qa1wiLFwibmFtZVwiOlwiX25cIn19LFwib25FcnJvclwiOntcIl9fdHlwZV9fXCI6XCJjcm9zc19kb21haW5fZnVuY3Rpb25cIixcIl9fdmFsX19cIjp7XCJpZFwiOlwidWlkXzA5YzI0NzhlYmZfbXR5Nm5kYTZtamtcIixcIm5hbWVcIjpcInFuXCJ9fSxcInNob3dcIjp7XCJfX3R5cGVfX1wiOlwiY3Jvc3NfZG9tYWluX2Z1bmN0aW9uXCIsXCJfX3ZhbF9fXCI6e1wiaWRcIjpcInVpZF9mMTdjMzBlNjE4X210eTZuZGE2bWprXCIsXCJuYW1lXCI6XCJnblwifX0sXCJoaWRlXCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfM2FlMjgxNWMzY19tdHk2bmRhNm1qa1wiLFwibmFtZVwiOlwidm5cIn19LFwiZXhwb3J0XCI6e1wiX190eXBlX19cIjpcImNyb3NzX2RvbWFpbl9mdW5jdGlvblwiLFwiX192YWxfX1wiOntcImlkXCI6XCJ1aWRfNDUwN2E1NzhiOV9tdHk2bmRhNm1qa1wiLFwibmFtZVwiOlwiV25cIn19fX0ifX0__"
              title="PayPal" allowpaymentrequest="allowpaymentrequest" scrolling="no" id="jsx-iframe-fffcb791ad" class="component-frame visible" style="background-color: transparent; border: none;"></iframe>
            <div id="smart-menu" class="smart-menu"></div>
            <div id="installments-modal" class="installments-modal"></div><iframe name="__detect_close_uid_8a37f64c31_mty6nda6mjk__" style="display: none;"></iframe>
          </div>
        </div>
        <div class="product-info__tips empty:tw-hidden tw-mt-3 tw-text-center tw-font-medium tw-text-sm tw-opacity-70 lg:tw-text-[17px] lg:tw-leading-6" data-unavailable="Product is unavailable." data-out-of-stock="Product was out of stock."></div>
      </div>
      <div class="tw-mt-2 tw-text-[12px]"> Vendor by: <span>Monkeysober</span>
      </div>
      <div class="tw-mt-2 tw-text-body-alpha-80 lg:tw-body-minus-2  product-info__header-sku"> SKU: <span>MS240600763_BLK_S</span>
      </div>
      <div class="product-info__share-wrapper tw-flex tw-space-x-5 md:tw-hidden tw-mt-2">
        <a target="_blank" data-track="social_share" href="//www.facebook.com/sharer.php?u=https://www.monkeysober.com/products/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp" class="tw-flex tw-items-center tw-text-current tw-no-underline share-facebook dj_skin_text">
        <svg class="" width="20" height="20" xmlns="http://www.w3.org/2000/svg"><path d="M11.605 2c-.48 0-.932.057-1.464.283-1.092.48-1.624 1.555-1.624 3.279V7.23H7V10h1.517v8h3.088v-8h2.102L14 7.23h-2.395V5.986c0-.396.026-.679.133-.82.133-.254.399-.367.825-.367h1.41v-2.77h-2.368V2z" fill="currentColor"></path></svg>
        <span class="product-info__share-item-label tw-pl-2 tw-body-sm">Share</span>
      </a>
        <a target="_blank" data-track="social_share" href="//twitter.com/share?text=That%27s%20What%20I%20Do%20I%20Fix%20Stuff%20And%20I%20Know%20Things%20T-shirt&amp;url=https://www.monkeysober.com/products/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp" class="tw-flex tw-items-center tw-text-current tw-no-underline share-twitter dj_skin_text">
        <svg class="" width="20" height="20" xmlns="http://www.w3.org/2000/svg"><path d="M17.423 6.564c0 6.41-4.21 11.026-10.404 11.228C4.4 17.995 2.606 17.2 1 15.998c1.794.202 4.21-.39 5.397-1.606-1.794 0-2.807-1.013-3.4-2.388h1.606C2.997 11.397 1.78 10.196 1.78 8.2c.391.202.796.39 1.606.39-1.403-.795-2.199-3.4-1.2-5.006C3.98 5.58 6.18 7.39 9.811 7.577c-1.013-3.994 4.21-6.02 6.41-3.4 1.013-.203 1.606-.594 2.387-1.014-.202 1.013-.795 1.607-1.606 1.997.796 0 1.404-.202 1.997-.593-.188.796-.984 1.606-1.577 1.997z" fill="currentColor"></path></svg>
        <span class="product-info__share-item-label tw-pl-2 tw-body-sm">Tweet</span>
      </a>
        <a target="_blank" data-track="social_share" href="//pinterest.com/pin/create/button/?url=https://www.monkeysober.com/products/thats-what-i-do-i-fix-stuff-and-i-know-things-t-shirt-afvp&amp;media=//img.fantaskycdn.com/13b421d74fad0bb2ef5f64dd043ebaa0_1024x1024.png&amp;description=That%27s%20What%20I%20Do%20I%20Fix%20Stuff%20And%20I%20Know%20Things%20T-shirt" class="tw-flex tw-items-center tw-text-current tw-no-underline share-pinterest dj_skin_text">
        <svg class="" width="20" height="20" xmlns="http://www.w3.org/2000/svg"><path d="M11.719 13.817a2.784 2.784 0 0 1-2.34-1.132l-.636 2.338c-.304.912-.731 1.78-1.272 2.583-.045.132-.417.394-.417.394a1.716 1.716 0 0 1-.25-.653 9.155 9.155 0 0 1 .035-2.824c.185-.769 1.193-4.891 1.193-4.891a3.468 3.468 0 0 1-.304-1.462c0-1.367.82-2.391 1.84-2.391.705-.01 1.286.535 1.297 1.218.001.056-.002.112-.009.168a19.2 19.2 0 0 1-.842 3.278c-.2.765.28 1.542 1.07 1.735.14.035.287.05.432.042 1.807 0 3.199-1.844 3.199-4.506.067-2.144-1.676-3.934-3.892-4a3.83 3.83 0 0 0-.363.005c-2.43-.1-4.484 1.724-4.588 4.075a3.748 3.748 0 0 0 .747 2.445c.073.076.1.183.072.283-.076.308-.25.985-.284 1.12-.045.185-.145.223-.34.135-1.328-.837-2.11-2.282-2.065-3.814 0-3.102 2.333-5.956 6.723-5.956 3.295-.16 6.101 2.293 6.267 5.481.005.07.007.14.008.21.01 3.387-2.203 6.12-5.281 6.12" fill="currentColor"></path></svg>
        <span class="product-info__share-item-label tw-pl-2 tw-body-sm">Pin it</span>
      </a>
      </div>
    </div>
  </div>
  <div class="plugin__buy_on_others empty:tw-hidden"></div>
</form>

Text Content

 * Welcome To Our Monkeysober Club! FREE SHIPPING ON ORDERS $70+

 * Welcome To Our Monkeysober Club! FREE SHIPPING ON ORDERS $70+

 * Welcome To Our Monkeysober Club! FREE SHIPPING ON ORDERS $70+

 * Welcome To Our Monkeysober Club! FREE SHIPPING ON ORDERS $70+

EUR
 * United States Dollars (USD)
 * Euro (EUR)
 * United Kingdom Pounds (GBP)
 * Canadian Dollars (CAD)
 * Australian Dollars (AUD)


MONKEYSOBER

 * Home
 * HOT SALES
 * T-SHIRTS
 * HOODIES
 * HATS
 * TANK TOP
 * More links
   HOODIES HATS TANK TOP

EUR
 * United States Dollars (USD)
 * Euro (EUR)
 * United Kingdom Pounds (GBP)
 * Canadian Dollars (CAD)
 * Australian Dollars (AUD)


 * Log in
 * Create an account

0

Close


 * Home
 * HOT SALES
 * T-SHIRTS
 * HOODIES
 * HATS
 * TANK TOP
   Log in
   EUR
    * United States Dollars (USD)
    * Euro (EUR)
    * United Kingdom Pounds (GBP)
    * Canadian Dollars (CAD)
    * Australian Dollars (AUD)






 * Facebook
 * Twitter
 * Pinterest

8/14




THAT'S WHAT I DO I FIX STUFF AND I KNOW THINGS T-SHIRT

(5)View
€21.92
€0.00
-€0.00-€21.92
Buy 2 items and save 8% off Buy 3 items and save 10% off Buy 4 items and save
14% off

Color-Black

Please select a color
Size-S Size Guide
S
M
L
XL
XXL
3XL
4XL
5XL
6XL
Please select a size
Quantity


Add to cart - €21.92 Buy it now


Vendor by: Monkeysober
SKU: MS240600763_BLK_S
Share Tweet Pin it


Description

Details:

 * 100% Cotton | US Standard Fit
 * Tagless, itch-free design
 * Pill-resistant finish
 * Machine Wash Cold,Tumble Dry Low

Shipping&Returns:

 * Customization time: 1-3 working days
 * Delivery time: 6-10 working days

CUSTOMER REVIEWS

5/5
(5)

Based on 5 reviews

(5)
(0)
(0)
(0)
(0)
Write a Review
Reviews(5) With Photos(0)
Sort by:  Most Recent
 * Most Recent
 * Highest Rating
 * Most helpful

 * A
   Aiden
   
   USA
   
   Comfortable Fit: The fit of these t-shirts is just right for me. The small
   size fits snugly without being too tight, and the crew neck design is
   comfortable for all-day wear. Whether I'm lounging at home or out running
   errands, these shirts keep me feeling comfortable and at ease.
   
   6/11/2024 Was this review helpful? 4
 * C
   C.C.
   
   USA
   
   Quality Material: The cotton material feels soft against my skin and holds up
   well after multiple washes. I haven't experienced any shrinking or
   stretching, which is a big plus. These shirts seem like they'll hold up well
   over time.
   
   6/4/2024 Was this review helpful? 5
 * A
   Anonymous
   
   USA
   
   The crew neck design is classic and versatile, making it easy to pair with
   jeans, shorts, or even dressier pants for a more polished look. Plus, the
   range of available colors means there's a shirt to suit every style and
   preference.
   
   5/30/2024 Was this review helpful? 4
 * A
   Adam
   
   USA
   
   Normally I don't wear anything cotton because it's uncomfortable and itchy,
   but these are quite comfy. They also aren't see through which is good (other
   brands tend to be so thin that you can see through the shirt, these don't).
   
   5/13/2024 Was this review helpful? 4
 * T
   Travis
   
   USA
   
   The shirts fit great and look great. They are roomy and strech very
   comfortable. They don't shrivel up when drying either some shorts do these
   retained size, length, and comfort.
   
   5/3/2024 Was this review helpful? 3

1


NEW DESIGN

View all
 * +5
   
   
   PERSONALIZED NOT MY CIRCUS NOT MY MONKEYS WASHED BASEBALL CAPS
   
   €17.34
   
 * +5
   
   
   PERSONALIZED NOT MY CIRCUS NOT MY MONKEYS WASHED BASEBALL CAPS
   
   (6)
   €17.34
   
 * +5
   
   
   PERSONALIZED I DON'T HAVE THE TIME OR THE CRAYONS TO EXPLAIN THIS TO YOU
   WASHED BASEBALL CAPS
   
   (10)
   €17.34
   
 * +5
   
   
   PERSONALIZED NOT MY CIRCUS NOT MY MONKEYS BUT I KNOW ALL THE CLOWNS WASHED
   BASEBALL CAPS
   
   (2)
   €17.34
   
 * +5
   
   
   PERSONALIZED NOBODY CARES WORK HARDER WASHED BASEBALL CAPS
   
   (12)
   €17.34
   
 * +5
   
   
   PERSONALIZED BAD CHOICES MAKE GOOD STORIES WASHED BASEBALL CAPS
   
   (3)
   €17.34
   



Subscribe today to hear first about our sales
Subscribe
Thanks for subscribing

FOOTER
 * About Us
 * Contact Us
 * Terms & Condictions
 * Privacy Policy
 * Payment Methods
 * Refund Policy
 * Shipping Info
 * How To Cancel Order
 * Intellectual Property Rights

WE ACCEPT
American Express Visa Maestro JCB Diners Club Mastercard Discover

© 2024 Monkeysober


SIGN UP AND SAVE

Entice customers to sign up for your mailing list with discounts or exclusive
offers. Include an image for extra impact.
Subscribe
Thanks for subscribing


CART








×

Don't leave without taking discount
UP TO 50% OFF
On your first order
Invalid email

Continue
NO,I'LL PAY FULL PRICE
* Ihre persönlichen Daten werden strengstens vor Offenlegung geschützt.
By signing up you agree with our Privacy Policy.


111
GIFTS

POINTS